@codingame/monaco-editor-wrapper 3.10.0-monaco-update.1 → 3.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -0
- package/dist/COBOL.tmLanguage.js +172 -0
- package/dist/Erlang.plist.js +1752 -0
- package/dist/HTML (Eex)2.js +100 -0
- package/dist/JSON.tmLanguage.js +221 -0
- package/dist/JSONC.tmLanguage.js +221 -0
- package/dist/JavaProperties.tmLanguage.js +116 -0
- package/dist/JavaScript.tmLanguage.js +5929 -0
- package/dist/JavaScriptReact.tmLanguage.js +5929 -0
- package/dist/Kotlin.tmLanguage.js +724 -0
- package/dist/META.js +100 -0
- package/dist/MagicPython.tmLanguage.js +4221 -0
- package/dist/MagicRegExp.tmLanguage.js +505 -0
- package/dist/Markdown Redcarpet.js +221 -0
- package/dist/RMarkdown.js +25 -0
- package/dist/Rcpp.js +50 -0
- package/dist/Rd (R Documentation).js +131 -0
- package/dist/Regular Expressions (JavaScript).tmLanguage.js +166 -0
- package/dist/Scala.tmLanguage.js +1324 -0
- package/dist/TypeScript.tmLanguage.js +5680 -0
- package/dist/TypeScriptReact.tmLanguage.js +5929 -0
- package/dist/{_virtual/_commonjsHelpers.js → _monaco-editor_commonjs-external.js} +9 -2
- package/dist/_rollupPluginBabelHelpers.js +51 -0
- package/dist/angular.js +62 -0
- package/dist/asp-vb-net.tmlanguage.js +247 -0
- package/dist/aspnetcorerazor.js +72 -0
- package/dist/aspnetcorerazor.tmLanguage.js +1825 -0
- package/dist/atd.js +110 -0
- package/dist/atd2.js +114 -0
- package/dist/buildignore.r.js +5 -0
- package/dist/buildtarget.js +53 -0
- package/dist/c.js +101 -0
- package/dist/c.tmLanguage.js +3565 -0
- package/dist/cabal.js +10 -0
- package/dist/cabal.tmLanguage.js +66 -0
- package/dist/clojure.js +68 -0
- package/dist/clojure.tmLanguage.js +439 -0
- package/dist/cobol.js +6 -0
- package/dist/cobol2.js +341 -0
- package/dist/codeblock-cabal.js +42 -0
- package/dist/codeblock-haskell.js +42 -0
- package/dist/codeblock-literate-haskell.js +42 -0
- package/dist/codeblock.js +59 -0
- package/dist/codeblock2.js +36 -0
- package/dist/codeblock3.js +95 -0
- package/dist/coffeescript-coffeescript.code-snippets.js +18 -0
- package/dist/coffeescript.js +91 -0
- package/dist/coffeescript.tmLanguage.js +1324 -0
- package/dist/configuration/files.d.ts +6 -0
- package/dist/configuration/index.d.ts +2 -1
- package/dist/cpp-c.code-snippets.js +18 -0
- package/dist/cpp-cpp.code-snippets.js +18 -0
- package/dist/cpp.js +101 -0
- package/dist/cpp.tmLanguage.js +16648 -0
- package/dist/cpptools.js +2631 -0
- package/dist/cram.js +257 -0
- package/dist/csharp.js +92 -0
- package/dist/csharp.tmLanguage.js +4992 -0
- package/dist/css.js +106 -0
- package/dist/css.tmLanguage.js +1873 -0
- package/dist/css.worker.js +6 -0
- package/dist/cuda-cpp.js +101 -0
- package/dist/cuda-cpp.tmLanguage.js +19993 -0
- package/dist/d-diet.js +92 -0
- package/dist/d.js +3212 -0
- package/dist/d2.js +97 -0
- package/dist/d3.js +609 -0
- package/dist/dart.js +543 -0
- package/dist/dart2.js +103 -0
- package/dist/dart3.js +1130 -0
- package/dist/dcf.js +93 -0
- package/dist/debian-control.r.js +69 -0
- package/dist/diet.js +758 -0
- package/dist/diet2.js +100 -0
- package/dist/django-html.js +155 -0
- package/dist/django-html.tmLanguage.js +715 -0
- package/dist/django-txt.js +155 -0
- package/dist/django-txt.tmLanguage.js +269 -0
- package/dist/dml.js +169 -0
- package/dist/dml2.js +90 -0
- package/dist/dockercompose.js +82 -0
- package/dist/dpp.js +97 -0
- package/dist/dscript.js +90 -0
- package/dist/dune-project.js +481 -0
- package/dist/dune-project2.js +65 -0
- package/dist/dune-workspace.js +298 -0
- package/dist/dune-workspace2.js +65 -0
- package/dist/dune.js +2962 -0
- package/dist/dune2.js +65 -0
- package/dist/eex.js +55 -0
- package/dist/elixir-snippets.js +184 -0
- package/dist/elixir.js +2341 -0
- package/dist/elixir2.js +69 -0
- package/dist/elixir3.js +40 -0
- package/dist/erlang-erlang.js +195 -0
- package/dist/erlang.js +81 -0
- package/dist/erlang2.js +86 -0
- package/dist/expression.js +846 -0
- package/dist/features/cssContribution.d.ts +1 -0
- package/dist/features/cssContribution.js +7 -0
- package/dist/features/extensionConfigurations.d.ts +1 -0
- package/dist/features/extensionConfigurations.js +44 -0
- package/dist/features/htmlContribution.d.ts +4 -0
- package/dist/features/htmlContribution.js +112 -0
- package/dist/features/jsonContribution.d.ts +6 -0
- package/dist/features/jsonContribution.js +43 -0
- package/dist/features/typescriptContribution.d.ts +1 -0
- package/dist/features/typescriptContribution.js +32 -0
- package/dist/fsharp-fsharp.code-snippets.js +18 -0
- package/dist/fsharp.js +80 -0
- package/dist/fsharp.tmLanguage.js +1844 -0
- package/dist/go.js +103 -0
- package/dist/go.mod.js +8 -0
- package/dist/go.mod.tmGrammar.js +182 -0
- package/dist/go.sum.tmGrammar.js +55 -0
- package/dist/go.tmLanguage.js +1025 -0
- package/dist/go.work.js +8 -0
- package/dist/govulncheck.tmGrammar.js +138 -0
- package/dist/groovy-groovy.code-snippets.js +229 -0
- package/dist/groovy.js +79 -0
- package/dist/groovy.tmLanguage.js +1391 -0
- package/dist/haskell.js +88 -0
- package/dist/haskell.tmLanguage.js +629 -0
- package/dist/haskell2.js +16 -0
- package/dist/html (eex).js +31 -0
- package/dist/html-derivative.tmLanguage.js +57 -0
- package/dist/html-html.code-snippets.js +20 -0
- package/dist/html.js +11 -0
- package/dist/html.tmLanguage.js +2652 -0
- package/dist/html.tmLanguage2.js +107 -0
- package/dist/html.worker.js +6 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +2207 -0
- package/dist/index2.js +1398 -0
- package/dist/inline-styles.js +104 -0
- package/dist/inline-template.js +88 -0
- package/dist/jade.js +11 -0
- package/dist/java-java.js +125 -0
- package/dist/java-properties.js +73 -0
- package/dist/java.js +98 -0
- package/dist/java.tmLanguage.js +1863 -0
- package/dist/java2.js +917 -0
- package/dist/javascript-javascript.code-snippets.js +205 -0
- package/dist/javascript.js +197 -0
- package/dist/javascriptreact.js +197 -0
- package/dist/jsdoc.js.injection.tmLanguage.js +32 -0
- package/dist/jsdoc.ts.injection.tmLanguage.js +32 -0
- package/dist/json.js +75 -0
- package/dist/json.worker.js +6 -0
- package/dist/jsonc.js +75 -0
- package/dist/jsx-tags.js +158 -0
- package/dist/julia.js +89 -0
- package/dist/julia.tmLanguage.js +954 -0
- package/dist/jvm-bytecode-verbose.js +1231 -0
- package/dist/jvm-bytecode.js +565 -0
- package/dist/kotlin-kotlin.js +117 -0
- package/dist/kotlin.js +103 -0
- package/dist/kotlinscript.js +103 -0
- package/dist/languages/extensions/extensionConfigurationLoader.d.ts +3 -0
- package/dist/languages/extensions/grammarLoader.d.ts +2 -0
- package/dist/languages/extensions/languageConfigurationLoader.d.ts +2 -0
- package/dist/languages/extensions/snippetLoader.d.ts +2 -0
- package/dist/languages/extensions/themeLoader.d.ts +2 -0
- package/dist/languages/index.d.ts +2 -0
- package/dist/languages/textMate/index.d.ts +1 -0
- package/dist/literate haskell.js +88 -0
- package/dist/literateHaskell.tmLanguage.js +70 -0
- package/dist/lua.js +84 -0
- package/dist/lua.tmLanguage.js +914 -0
- package/dist/lua2.js +2853 -0
- package/dist/main.js +3564 -9
- package/dist/markdown-basics-markdown.code-snippets.js +121 -0
- package/dist/markdown-svelte-css.js +37 -0
- package/dist/markdown-svelte-js.js +37 -0
- package/dist/markdown-svelte.js +59 -0
- package/dist/markdown-vue.js +54 -0
- package/dist/markdown.js +49 -0
- package/dist/markdown.tmLanguage.js +3042 -0
- package/dist/menhir-action.js +51 -0
- package/dist/menhir.js +597 -0
- package/dist/merlin.js +111 -0
- package/dist/monaco.d.ts +10 -6
- package/dist/namespace.r.js +88 -0
- package/dist/oasis.js +99 -0
- package/dist/objective-c.js +79 -0
- package/dist/objective-c.tmLanguage.js +3763 -0
- package/dist/objective-cpp.js +79 -0
- package/dist/ocaml-dune-project.js +38 -0
- package/dist/ocaml-dune.js +53 -0
- package/dist/ocaml-markdown-codeblock.js +42 -0
- package/dist/ocaml-ocaml.js +88 -0
- package/dist/ocaml-ocamllex.js +12 -0
- package/dist/ocaml.META.js +29 -0
- package/dist/ocaml.interface.js +292 -0
- package/dist/ocaml.interface2.js +114 -0
- package/dist/ocaml.js +903 -0
- package/dist/ocaml.menhir.js +81 -0
- package/dist/ocaml.oasis.js +18 -0
- package/dist/ocaml.ocamlbuild.js +45 -0
- package/dist/ocaml.ocamlformat.js +8 -0
- package/dist/ocaml.ocamllex.js +60 -0
- package/dist/ocaml.opam-install.js +49 -0
- package/dist/ocaml.opam.js +69 -0
- package/dist/ocaml2.js +114 -0
- package/dist/ocaml3.js +136 -0
- package/dist/ocamlbuild.js +189 -0
- package/dist/ocamldoc.js +54 -0
- package/dist/ocamlformat.js +206 -0
- package/dist/ocamllex.js +133 -0
- package/dist/omnisharp-csharp.js +508 -0
- package/dist/omnisharp.js +594 -0
- package/dist/opam-install.js +40 -0
- package/dist/opam.js +140 -0
- package/dist/pascal-pascal.js +382 -0
- package/dist/pascal.js +80 -0
- package/dist/pascal.tmLanguage.js +169 -0
- package/dist/pascal2.js +26 -0
- package/dist/perl.js +93 -0
- package/dist/perl.tmLanguage.js +2986 -0
- package/dist/perl6.js +86 -0
- package/dist/perl6.tmLanguage.js +323 -0
- package/dist/pgsql.tmLanguage.js +284 -0
- package/dist/php-php.code-snippets.js +267 -0
- package/dist/php.js +154 -0
- package/dist/php.tmLanguage.js +4036 -0
- package/dist/pip-requirements.js +8 -0
- package/dist/pip-requirements.tmLanguage.js +89 -0
- package/dist/plaintext.js +11 -0
- package/dist/platform.tmLanguage.js +1135 -0
- package/dist/postcss.src.yaml.js +393 -0
- package/dist/postgres.js +80 -0
- package/dist/postgresql.js +75 -0
- package/dist/powershell.js +107 -0
- package/dist/powershell.tmLanguage.js +1037 -0
- package/dist/pug-svelte-dotblock.js +69 -0
- package/dist/pug-svelte-tags.js +215 -0
- package/dist/pug-svelte.js +307 -0
- package/dist/python.js +236 -0
- package/dist/r.js +664 -0
- package/dist/r2.js +88 -0
- package/dist/rbuildignore.js +39 -0
- package/dist/rd.js +81 -0
- package/dist/reason-markdown-codeblock.js +42 -0
- package/dist/reason.js +79 -0
- package/dist/rmd.js +84 -0
- package/dist/rnamespace.js +283 -0
- package/dist/ruby.js +95 -0
- package/dist/ruby.tmLanguage.js +2784 -0
- package/dist/rust.js +84 -0
- package/dist/rust.tmLanguage.js +1178 -0
- package/dist/sassdoc.tmLanguage.js +362 -0
- package/dist/scala.js +85 -0
- package/dist/scalameta.js +224 -0
- package/dist/scss.js +117 -0
- package/dist/scss.tmLanguage.js +1887 -0
- package/dist/sdl.js +162 -0
- package/dist/sdl2.js +90 -0
- package/dist/semanticdb.js +62 -0
- package/dist/shell-unix-bash.tmLanguage.js +2038 -0
- package/dist/shellscript.js +93 -0
- package/dist/solargraph.js +192 -0
- package/dist/solidity-solidity.js +213 -0
- package/dist/solidity.js +1224 -0
- package/dist/solidity2.js +71 -0
- package/dist/solidity3.js +143 -0
- package/dist/sql.js +99 -0
- package/dist/sql.tmLanguage.js +636 -0
- package/dist/svelte.js +120 -0
- package/dist/svelte.svelte-vscode-javascript.js +45 -0
- package/dist/svelte.svelte-vscode-svelte.js +46 -0
- package/dist/svelte.svelte-vscode-typescript.js +43 -0
- package/dist/svelte.svelte-vscode.js +383 -0
- package/dist/svelte.tmLanguage.src.yaml.js +1099 -0
- package/dist/svlangserver-systemverilog.js +395 -0
- package/dist/svlangserver.js +85 -0
- package/dist/swift-swift.code-snippets.js +183 -0
- package/dist/swift.js +90 -0
- package/dist/swift.tmLanguage.js +3312 -0
- package/dist/systemverilog.js +187 -0
- package/dist/systemverilog.tmLanguage.js +1259 -0
- package/dist/tasty.js +72 -0
- package/dist/tcl-tcl.js +151 -0
- package/dist/tcl.js +78 -0
- package/dist/tcl.tmlanguage.yaml.js +5490 -0
- package/dist/template.js +207 -0
- package/dist/theme/index.d.ts +4 -1
- package/dist/theme-defaults~dark_plus.js +210 -0
- package/dist/theme-defaults~dark_plus_experimental.js +145 -0
- package/dist/theme-defaults~dark_vs.js +412 -0
- package/dist/theme-defaults~hc_black.js +471 -0
- package/dist/theme-defaults~hc_light.js +595 -0
- package/dist/theme-defaults~light_plus.js +212 -0
- package/dist/theme-defaults~light_plus_experimental.js +158 -0
- package/dist/theme-defaults~light_vs.js +441 -0
- package/dist/tools/EditorOpenHandlerRegistry.d.ts +2 -3
- package/dist/ts.worker.js +6 -0
- package/dist/typescript-basics-typescript.code-snippets.js +313 -0
- package/dist/typescript-language-features.js +1103 -0
- package/dist/typescript.js +216 -0
- package/dist/typescriptreact.js +216 -0
- package/dist/vb-vb.code-snippets.js +88 -0
- package/dist/vb.js +79 -0
- package/dist/verilog.js +187 -0
- package/dist/{node_modules/monaco-vim/lib/cm/keymap_vim.js → vim.js} +1790 -4
- package/dist/volar-vue.js +289 -0
- package/dist/vscode-R-r-snippets.js +534 -0
- package/dist/vscode-R-rmarkdown.js +461 -0
- package/dist/vscode-R.js +660 -0
- package/dist/vscode-django-filters.js +340 -0
- package/dist/vscode-django.js +37 -0
- package/dist/vscode-go-go.js +276 -0
- package/dist/vscode-go.js +1610 -0
- package/dist/vscode-groovy.js +28 -0
- package/dist/vscode-python.js +706 -0
- package/dist/vue-directives.js +25 -0
- package/dist/vue-interpolations.js +25 -0
- package/dist/vue-sfc-style-variable-injection.js +63 -0
- package/dist/vue.js +151 -0
- package/dist/vue.tmLanguage.js +1218 -0
- package/dist/worker.d.ts +10 -1
- package/dist/worker.js +43 -11
- package/dist/xml.js +116 -0
- package/dist/xml.tmLanguage.js +395 -0
- package/dist/xsl.js +39 -0
- package/dist/xsl.tmLanguage.js +102 -0
- package/dist/yaml.js +82 -0
- package/dist/yaml.tmLanguage.js +629 -0
- package/package.json +67 -127
- package/stats.html +1429 -90
- package/dist/_virtual/_monaco-editor.js +0 -6
- package/dist/_virtual/actions.js +0 -3
- package/dist/_virtual/basicInput.js +0 -3
- package/dist/_virtual/cm_adapter.js +0 -3
- package/dist/_virtual/commands.js +0 -3
- package/dist/_virtual/editor.api.js +0 -6
- package/dist/_virtual/index.js +0 -3
- package/dist/_virtual/index2.js +0 -3
- package/dist/_virtual/index3.js +0 -3
- package/dist/_virtual/keymap_vim.js +0 -3
- package/dist/_virtual/shiftCommand.js +0 -6
- package/dist/_virtual/state.js +0 -3
- package/dist/_virtual/statusbar.js +0 -3
- package/dist/_virtual/util.js +0 -3
- package/dist/assets/Angular.ng-template-16.1.8.vsix/expression-c051cd51.json +0 -834
- package/dist/assets/Angular.ng-template-16.1.8.vsix/inline-styles-59ea31e9.json +0 -92
- package/dist/assets/Angular.ng-template-16.1.8.vsix/inline-template-f0c3f556.json +0 -76
- package/dist/assets/Angular.ng-template-16.1.8.vsix/template-e24e3ba1.json +0 -195
- package/dist/assets/Dart-Code.dart-code-3.75.20231009.vsix/dart-bea1db40.json +0 -534
- package/dist/assets/Dart-Code.dart-code-3.75.20231009.vsix/dart-language-configuration-c4b1f694.json +0 -29
- package/dist/assets/Dart-Code.dart-code-3.75.20231009.vsix/flutter_activity_bar-17811551.svg +0 -14
- package/dist/assets/IMCTradingBV.svlangserver-0.4.1.vsix/codeblock-67e70f41.json +0 -81
- package/dist/assets/IMCTradingBV.svlangserver-0.4.1.vsix/language-configuration-3467c3a6.json +0 -57
- package/dist/assets/IMCTradingBV.svlangserver-0.4.1.vsix/systemverilog-ff001e9f.json +0 -349
- package/dist/assets/IMCTradingBV.svlangserver-0.4.1.vsix/systemverilog.tmLanguage-31a99a46.json +0 -1246
- package/dist/assets/IMCTradingBV.svlangserver-0.4.1.vsix/tasks.schema-832643df.json +0 -30
- package/dist/assets/JakeBecker.elixir-ls-0.17.1.vsix/eex-e9a5e762.json +0 -41
- package/dist/assets/JakeBecker.elixir-ls-0.17.1.vsix/eex-language-configuration-6fb789e3.json +0 -58
- package/dist/assets/JakeBecker.elixir-ls-0.17.1.vsix/elixir-7cb5db44.json +0 -2580
- package/dist/assets/JakeBecker.elixir-ls-0.17.1.vsix/elixir-language-configuration-4bd217f4.json +0 -74
- package/dist/assets/JakeBecker.elixir-ls-0.17.1.vsix/html-eex-3079072a.json +0 -25
- package/dist/assets/JuanBlanco.solidity-0.0.165.vsix/solidity-1f693465.json +0 -213
- package/dist/assets/JuanBlanco.solidity-0.0.165.vsix/solidity-642a30e7.json +0 -1215
- package/dist/assets/JuanBlanco.solidity-0.0.165.vsix/solidity.configuration-d0229207.json +0 -32
- package/dist/assets/REditorSupport.r-2.8.2.vsix/Markdown Redcarpet-12881a56.json +0 -146
- package/dist/assets/REditorSupport.r-2.8.2.vsix/RMarkdown-0bbb72c0.json +0 -13
- package/dist/assets/REditorSupport.r-2.8.2.vsix/Rcpp-cea57c6d.json +0 -34
- package/dist/assets/REditorSupport.r-2.8.2.vsix/Rd (R Documentation)-555f4e62.json +0 -117
- package/dist/assets/REditorSupport.r-2.8.2.vsix/Rlogo-6d3318a6.svg +0 -14
- package/dist/assets/REditorSupport.r-2.8.2.vsix/dcf-3d561f42.json +0 -82
- package/dist/assets/REditorSupport.r-2.8.2.vsix/dcf-configuration-d58bba2d.json +0 -24
- package/dist/assets/REditorSupport.r-2.8.2.vsix/r-configuration-78e137e5.json +0 -33
- package/dist/assets/REditorSupport.r-2.8.2.vsix/r-fe2a45c3.json +0 -647
- package/dist/assets/REditorSupport.r-2.8.2.vsix/r-snippets-9e46c45c.json +0 -475
- package/dist/assets/REditorSupport.r-2.8.2.vsix/rbuildignore-9cfe22f1.json +0 -27
- package/dist/assets/REditorSupport.r-2.8.2.vsix/rbuildignore-configuration-8eb95bcb.json +0 -2
- package/dist/assets/REditorSupport.r-2.8.2.vsix/rd-configuration-194dd9d9.json +0 -27
- package/dist/assets/REditorSupport.r-2.8.2.vsix/rmarkdown-dea1e283.json +0 -459
- package/dist/assets/REditorSupport.r-2.8.2.vsix/rmd-configuration-b4c6dc23.json +0 -27
- package/dist/assets/REditorSupport.r-2.8.2.vsix/rnamespace-290042cd.json +0 -222
- package/dist/assets/alefragnani.pascal-9.6.0.vsix/package.nls-8c1cec26.json +0 -24
- package/dist/assets/alefragnani.pascal-9.6.0.vsix/package.nls.pt-br-50a237c2.json +0 -24
- package/dist/assets/alefragnani.pascal-9.6.0.vsix/pascal-365151a8.json +0 -414
- package/dist/assets/alefragnani.pascal-9.6.0.vsix/pascal-93ca5af8.tmLanguage +0 -243
- package/dist/assets/alefragnani.pascal-9.6.0.vsix/pascal.configuration-650e481b.json +0 -32
- package/dist/assets/batisteo.vscode-django-1.14.0.vsix/django-html.tmLanguage-a755b992.json +0 -701
- package/dist/assets/batisteo.vscode-django-1.14.0.vsix/django-txt.tmLanguage-856346a9.json +0 -255
- package/dist/assets/batisteo.vscode-django-1.14.0.vsix/filters-f60b575d.json +0 -339
- package/dist/assets/batisteo.vscode-django-1.14.0.vsix/language-configuration-f8af0b2f.json +0 -63
- package/dist/assets/batisteo.vscode-django-1.14.0.vsix/tags-43e8b685.json +0 -496
- package/dist/assets/bitwisecook.tcl-0.4.3.vsix/language-configuration-e9539ff0.json +0 -75
- package/dist/assets/bitwisecook.tcl-0.4.3.vsix/tcl-10fb1e40.json +0 -142
- package/dist/assets/bitwisecook.tcl-0.4.3.vsix/tcl-d73ae460.json +0 -5474
- package/dist/assets/broadcomMFD.cobol-language-support-2.0.3.vsix/COBOL.tmLanguage-67e1eefb.json +0 -216
- package/dist/assets/broadcomMFD.cobol-language-support-2.0.3.vsix/lang-config-a301d1b9.json +0 -27
- package/dist/assets/broadcomMFD.cobol-language-support-2.0.3.vsix/pgm_conf.schema-f8558717.json +0 -24
- package/dist/assets/broadcomMFD.cobol-language-support-2.0.3.vsix/proc_grps.schema-428d2a80.json +0 -55
- package/dist/assets/ckolkman.vscode-postgres-1.4.3.vsix/language-configuration-b3cf7aac.json +0 -25
- package/dist/assets/ckolkman.vscode-postgres-1.4.3.vsix/pgsql-a84fddae.tmLanguage +0 -413
- package/dist/assets/ckolkman.vscode-postgres-1.4.3.vsix/postgres-explorer-ce4bf408.svg +0 -100
- package/dist/assets/golang.Go-0.39.1.vsix/go-71588b74.json +0 -274
- package/dist/assets/golang.Go-0.39.1.vsix/go.mod.language-configuration-0301a994.json +0 -5
- package/dist/assets/golang.Go-0.39.1.vsix/go.mod.tmGrammar-6cbef28b.json +0 -171
- package/dist/assets/golang.Go-0.39.1.vsix/go.sum.tmGrammar-36d4acfd.json +0 -44
- package/dist/assets/golang.Go-0.39.1.vsix/govulncheck.tmGrammar-3741e2c9.json +0 -123
- package/dist/assets/johnsoncodehk.vscode-angular-1.0.22.vsix/angular-directives-77c45bf9.json +0 -123
- package/dist/assets/johnsoncodehk.vscode-angular-1.0.22.vsix/angular-interpolations-b1f89745.json +0 -44
- package/dist/assets/johnsoncodehk.vscode-angular-1.0.22.vsix/angular-template-language-configuration-4cd1b761.json +0 -8
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/C2Hs-c12145c8.json +0 -23
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/C2Hs-configuration-dc72a3f0.json +0 -29
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/Hsc2Hs-685ef114.json +0 -23
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/Hsc2Hs-configuration-15e5e5c3.json +0 -30
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/alex-07217e37.json +0 -236
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/cabal-8f2b8b9f.json +0 -53
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/cabal-configuration-64e517a3.json +0 -6
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/codeblock-cabal-34484e34.json +0 -28
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/codeblock-haskell-138d661e.json +0 -28
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/codeblock-literate-haskell-90d8db8f.json +0 -28
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/happy-3cd8fa35.json +0 -196
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/haskell-192ef944.json +0 -2525
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/haskell-configuration-54079281.json +0 -29
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/literate-haskell-configuration-23cbb80e.json +0 -29
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/literateHaskell-0a08d9f7.json +0 -56
- package/dist/assets/mathiasfrohlich.Kotlin-1.7.1.vsix/Kotlin-5d2aa580.tmLanguage +0 -1067
- package/dist/assets/mathiasfrohlich.Kotlin-1.7.1.vsix/codeblock-8be87145.json +0 -22
- package/dist/assets/mathiasfrohlich.Kotlin-1.7.1.vsix/kotlin-9f43cb02.json +0 -107
- package/dist/assets/mathiasfrohlich.Kotlin-1.7.1.vsix/kotlin.configuration-1d328649.json +0 -35
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/aspnetcorerazor.tmLanguage-7002af3f.json +0 -1812
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/csharp-a17ace76.json +0 -493
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/language-configuration-f8b16509.json +0 -24
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls-b9937871.json +0 -419
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.cs-80b9e0b3.json +0 -201
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.de-2f7710c0.json +0 -201
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.es-d1bd829b.json +0 -201
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.fr-e0bc41f9.json +0 -201
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.it-0e21bedf.json +0 -201
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.ja-2384013f.json +0 -201
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.ko-621d3dfe.json +0 -201
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.pl-bd72e09e.json +0 -201
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.pt-br-a446b36f.json +0 -201
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.ru-923ade42.json +0 -201
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.tr-10253fa3.json +0 -201
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.zh-cn-00cb169d.json +0 -201
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.zh-tw-1c34b33a.json +0 -201
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/vs2019_dark-a56f6e51.json +0 -783
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/vs2019_light-fd29b4ae.json +0 -807
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/conda-environment-3aa03e16.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/conda-meta-e7f42ee0.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/condarc-8ad258e5.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls-c97ce436.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.cs-5dee4ffc.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.de-b852e3ec.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.es-66adbb9e.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.fr-6abf0276.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.it-12650beb.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.ja-de4ee3bd.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.ko-254d6467.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.pl-f957d6c6.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.pt-br-d02ca4d9.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.qps-ploc-f24b5e76.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.ru-e6ba5e62.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.tr-05d98040.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.zh-cn-f41941e0.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.zh-tw-02c30e90.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/pip-requirements-85cd5b06.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/pip-requirements.tmLanguage-5dcdde1f.json +0 -1
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls-faad5326.json +0 -1006
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.cs-1c63e64b.json +0 -441
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.de-a80f3548.json +0 -441
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.es-ed5f9669.json +0 -441
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.fr-0a6f6680.json +0 -441
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.it-690d744e.json +0 -441
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.ja-9e548ee8.json +0 -441
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.ko-b7c6d97d.json +0 -441
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.pl-fac1f880.json +0 -441
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.pt-br-618e6fff.json +0 -441
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.ru-b8aa8e97.json +0 -441
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.tr-61b293ea.json +0 -441
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.zh-cn-2fb473f1.json +0 -441
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.zh-tw-bd960e98.json +0 -441
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/META-a4e7fa6f.json +0 -56
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/META-e71a284d.json +0 -10
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/atd-03beef93.json +0 -57
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/cram-947e10d8.json +0 -167
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/dune-3f9df928.json +0 -24
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/dune-ac59c79b.json +0 -2949
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/dune-b84b8558.json +0 -30
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/dune-project-1f8165b1.json +0 -26
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/dune-project-c3d6414c.json +0 -326
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/dune-workspace-714d48f4.json +0 -191
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/logo-1ec58c70.svg +0 -3
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/menhir-318b208e.json +0 -349
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/menhir-action-1de9ecfe.json +0 -29
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/menhir-ba3ffd84.json +0 -27
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/merlin-68658127.json +0 -73
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/oasis-6cb9104d.json +0 -6
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/oasis-b3731651.json +0 -69
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocaml-2b852e88.json +0 -54
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocaml-721ae493.json +0 -654
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocaml-8263d04c.json +0 -49
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocaml-markdown-codeblock-d59b1879.json +0 -24
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocaml.interface-82c9d397.json +0 -161
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocamlbuild-28c2016d.json +0 -110
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocamlbuild-68c3ee9d.json +0 -16
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocamldoc-68623cf8.json +0 -31
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocamlformat-12d00ff4.json +0 -5
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocamlformat-566f44ca.json +0 -191
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocamllex-16f56b53.json +0 -6
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocamllex-2f54f6a7.json +0 -21
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocamllex-9eea3c0f.json +0 -108
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/opam-051cc018.json +0 -24
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/opam-a3126c97.json +0 -111
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/opam-install-24f044a3.json +0 -23
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/opam-install-5c433c27.json +0 -19
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/reason-46868a8a.json +0 -2357
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/reason-e5da4a73.json +0 -25
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/reason-markdown-codeblock-80e4eeb5.json +0 -24
- package/dist/assets/pgourlain.erlang-0.9.7.vsix/Erlang-dc87abbd.plist +0 -2719
- package/dist/assets/pgourlain.erlang-0.9.7.vsix/erlang-ceac2319.json +0 -197
- package/dist/assets/pgourlain.erlang-0.9.7.vsix/erlang.configuration-52d0fdab.json +0 -25
- package/dist/assets/redhat.java-1.24.2023101604.vsix/JavaProperties.tmLanguage-0a8c48eb.json +0 -103
- package/dist/assets/redhat.java-1.24.2023101604.vsix/java-properties-configuration-97f1db18.json +0 -67
- package/dist/assets/redhat.java-1.24.2023101604.vsix/java.tmLanguage-7cffeca4.json +0 -1892
- package/dist/assets/redhat.java-1.24.2023101604.vsix/language-configuration-054e92b8.json +0 -92
- package/dist/assets/redhat.java-1.24.2023101604.vsix/package.nls-2147d73e.json +0 -29
- package/dist/assets/redhat.java-1.24.2023101604.vsix/package.nls.ko-a7811004.json +0 -26
- package/dist/assets/redhat.java-1.24.2023101604.vsix/package.nls.zh-cn-5b3edff8.json +0 -27
- package/dist/assets/redhat.java-1.24.2023101604.vsix/package.nls.zh-tw-236ee4a0.json +0 -26
- package/dist/assets/redhat.java-1.24.2023101604.vsix/package.schema-58232c4f.json +0 -28
- package/dist/assets/scala-lang.scala-0.5.7.vsix/Scala.tmLanguage-e9b79520.json +0 -1
- package/dist/assets/scala-lang.scala-0.5.7.vsix/language-configuration-acc80ed1.json +0 -33
- package/dist/assets/scalameta.metals-1.25.2.vsix/book-dark-6f0d6908.svg +0 -5
- package/dist/assets/scalameta.metals-1.25.2.vsix/book-light-ba883494.svg +0 -1
- package/dist/assets/scalameta.metals-1.25.2.vsix/buildtarget-73bbface.json +0 -37
- package/dist/assets/scalameta.metals-1.25.2.vsix/file_type_java-36bb31ca.svg +0 -1
- package/dist/assets/scalameta.metals-1.25.2.vsix/file_type_scala-b6c14b23.svg +0 -1
- package/dist/assets/scalameta.metals-1.25.2.vsix/jvm-bytecode-cab4d04e.json +0 -395
- package/dist/assets/scalameta.metals-1.25.2.vsix/jvm-bytecode-verbose-3611fa8e.json +0 -745
- package/dist/assets/scalameta.metals-1.25.2.vsix/scalameta-5e510695.svg +0 -11
- package/dist/assets/scalameta.metals-1.25.2.vsix/scalameta-logo-f3b7b0bf.png +0 -0
- package/dist/assets/scalameta.metals-1.25.2.vsix/semanticdb-44c14f33.json +0 -37
- package/dist/assets/scalameta.metals-1.25.2.vsix/tasty-c2b151f2.json +0 -56
- package/dist/assets/sumneko.lua-3.7.0.vsix/package.nls-f1576108.json +0 -231
- package/dist/assets/sumneko.lua-3.7.0.vsix/package.nls.pt-br-44d0849d.json +0 -231
- package/dist/assets/sumneko.lua-3.7.0.vsix/package.nls.zh-cn-3f634909.json +0 -231
- package/dist/assets/sumneko.lua-3.7.0.vsix/package.nls.zh-tw-144dc848.json +0 -231
- package/dist/assets/sumneko.lua-3.7.0.vsix/schema-dedfd658.json +0 -3421
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/javascript-7aebc91a.json +0 -43
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/language-configuration-3cb1f78d.json +0 -38
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/markdown-svelte-4cd58a41.json +0 -45
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/markdown-svelte-css-0fdc510e.json +0 -23
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/markdown-svelte-js-cd568059.json +0 -23
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/package-json-schema-ec2f7bd4.json +0 -9
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/postcss-05883dcd.json +0 -377
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/prettier-options-schema-9e36a684.json +0 -112
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/pug-svelte-04246371.json +0 -293
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/pug-svelte-dotblock-b92db507.json +0 -55
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/pug-svelte-tags-65124af1.json +0 -201
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/svelte-a1bb47f3.json +0 -22
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/svelte.tmLanguage-aec82be9.json +0 -1163
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/typescript-bd1c0ff1.json +0 -37
- package/dist/assets/webfreak.code-d-0.23.2.vsix/d-2da26fd0.json +0 -3163
- package/dist/assets/webfreak.code-d-0.23.2.vsix/d-316cb838.json +0 -90
- package/dist/assets/webfreak.code-d-0.23.2.vsix/diet-0b761e76.json +0 -87
- package/dist/assets/webfreak.code-d-0.23.2.vsix/diet-7fe4fdb7.json +0 -92
- package/dist/assets/webfreak.code-d-0.23.2.vsix/diet-83c1bebc.json +0 -742
- package/dist/assets/webfreak.code-d-0.23.2.vsix/dml-ef6957d3.json +0 -157
- package/dist/assets/webfreak.code-d-0.23.2.vsix/dub.schema-77c2f417.json +0 -377
- package/dist/assets/webfreak.code-d-0.23.2.vsix/general-7b927912.json +0 -84
- package/dist/assets/webfreak.code-d-0.23.2.vsix/sdl-b6c61596.json +0 -149
- package/dist/configuration/index.js +0 -45
- package/dist/editor/autofold.js +0 -24
- package/dist/editor/cobol.js +0 -67
- package/dist/editor/index.js +0 -9
- package/dist/extensions/Angular.ng-template-16.1.8.vsix.js +0 -16
- package/dist/extensions/Dart-Code.dart-code-3.75.20231009.vsix.js +0 -14
- package/dist/extensions/IMCTradingBV.svlangserver-0.4.1.vsix.js +0 -18
- package/dist/extensions/JakeBecker.elixir-ls-0.17.1.vsix.js +0 -18
- package/dist/extensions/JuanBlanco.solidity-0.0.165.vsix.js +0 -14
- package/dist/extensions/REditorSupport.r-2.8.2.vsix.js +0 -42
- package/dist/extensions/alefragnani.pascal-9.6.0.vsix.js +0 -18
- package/dist/extensions/batisteo.vscode-django-1.14.0.vsix.js +0 -18
- package/dist/extensions/bitwisecook.tcl-0.4.3.vsix.js +0 -14
- package/dist/extensions/broadcomMFD.cobol-language-support-2.0.3.vsix.js +0 -16
- package/dist/extensions/castwide.solargraph-0.24.0.vsix.js +0 -5
- package/dist/extensions/ckolkman.vscode-postgres-1.4.3.vsix.js +0 -14
- package/dist/extensions/golang.Go-0.39.1.vsix.js +0 -18
- package/dist/extensions/johnsoncodehk.vscode-angular-1.0.22.vsix.js +0 -14
- package/dist/extensions/justusadam.language-haskell-3.6.0.vsix.js +0 -38
- package/dist/extensions/mathiasfrohlich.Kotlin-1.7.1.vsix.js +0 -16
- package/dist/extensions/ms-dotnettools.csharp-2.6.24.vsix.js +0 -46
- package/dist/extensions/ms-python.python-2023.19.12861011.vsix.js +0 -48
- package/dist/extensions/ms-vscode.cpptools-1.18.0.vsix.js +0 -36
- package/dist/extensions/ocamllabs.ocaml-platform-1.13.1.vsix.js +0 -82
- package/dist/extensions/pgourlain.erlang-0.9.7.vsix.js +0 -14
- package/dist/extensions/redhat.java-1.24.2023101604.vsix.js +0 -26
- package/dist/extensions/scala-lang.scala-0.5.7.vsix.js +0 -12
- package/dist/extensions/scalameta.metals-1.25.2.vsix.js +0 -30
- package/dist/extensions/sumneko.lua-3.7.0.vsix.js +0 -18
- package/dist/extensions/svelte.svelte-vscode-107.12.0.vsix.js +0 -36
- package/dist/extensions/webfreak.code-d-0.23.2.vsix.js +0 -26
- package/dist/extensions.d.ts +0 -36
- package/dist/features/debug.js +0 -6
- package/dist/features/extensionHostWorker.js +0 -11
- package/dist/features/search.d.ts +0 -1
- package/dist/features/search.js +0 -7
- package/dist/features/viewPanels.d.ts +0 -1
- package/dist/features/viewPanels.js +0 -11
- package/dist/features/views.d.ts +0 -4
- package/dist/features/views.js +0 -27
- package/dist/keybindings/index.js +0 -36
- package/dist/keybindings/vim.js +0 -82
- package/dist/languages/index.js +0 -40
- package/dist/monaco.js +0 -93
- package/dist/node_modules/lodash.kebabcase/index.js +0 -439
- package/dist/node_modules/lodash.throttle/index.js +0 -443
- package/dist/node_modules/monaco-emacs/lib/emacs/actions.js +0 -596
- package/dist/node_modules/monaco-emacs/lib/emacs/basicInput.js +0 -113
- package/dist/node_modules/monaco-emacs/lib/emacs/commands.js +0 -184
- package/dist/node_modules/monaco-emacs/lib/emacs/index.js +0 -186
- package/dist/node_modules/monaco-emacs/lib/emacs/state.js +0 -116
- package/dist/node_modules/monaco-emacs/lib/emacs/util.js +0 -112
- package/dist/node_modules/monaco-emacs/lib/index.js +0 -31
- package/dist/node_modules/monaco-vim/lib/cm_adapter.js +0 -1393
- package/dist/node_modules/monaco-vim/lib/index.js +0 -71
- package/dist/node_modules/monaco-vim/lib/statusbar.js +0 -239
- package/dist/services.d.ts +0 -8
- package/dist/services.js +0 -73
- package/dist/style.js +0 -12
- package/dist/theme/index.js +0 -21
- package/dist/tools/EditorOpenHandlerRegistry.js +0 -108
- package/dist/tools/FakeWorker.d.ts +0 -5
- package/dist/tools/FakeWorker.js +0 -8
- package/dist/tools.js +0 -235
- /package/dist/{editor → extensions}/autofold.d.ts +0 -0
- /package/dist/{editor → extensions}/cobol.d.ts +0 -0
- /package/dist/{editor → extensions}/index.d.ts +0 -0
- /package/dist/{features/debug.d.ts → languages/snippets/index.d.ts} +0 -0
- /package/dist/{features/extensionHostWorker.d.ts → languages/textMate/semanticTokens.d.ts} +0 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { c as createBase64WorkerFactory } from './worker.js';
|
|
2
|
+
|
|
3
|
+
var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Y29uc3QgZT1uZXcgY2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmxpc3RlbmVycz1bXSx0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXI9ZnVuY3Rpb24oZSl7c2V0VGltZW91dCgoKCk9PntpZihlLnN0YWNrKXtpZihvLmlzRXJyb3JOb1RlbGVtZXRyeShlKSl0aHJvdyBuZXcgbyhlLm1lc3NhZ2UrIlxuXG4iK2Uuc3RhY2spO3Rocm93IG5ldyBFcnJvcihlLm1lc3NhZ2UrIlxuXG4iK2Uuc3RhY2spfXRocm93IGV9KSwwKX19ZW1pdChlKXt0aGlzLmxpc3RlbmVycy5mb3JFYWNoKCh0PT57dChlKX0pKX1vblVuZXhwZWN0ZWRFcnJvcihlKXt0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXIoZSksdGhpcy5lbWl0KGUpfW9uVW5leHBlY3RlZEV4dGVybmFsRXJyb3IoZSl7dGhpcy51bmV4cGVjdGVkRXJyb3JIYW5kbGVyKGUpfX07ZnVuY3Rpb24gdCh0KXsoZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIGkpcmV0dXJuITA7cmV0dXJuIGUgaW5zdGFuY2VvZiBFcnJvciYmZS5uYW1lPT09ciYmZS5tZXNzYWdlPT09cn0pKHQpfHxlLm9uVW5leHBlY3RlZEVycm9yKHQpfWZ1bmN0aW9uIG4oZSl7aWYoZSBpbnN0YW5jZW9mIEVycm9yKXtjb25zdHtuYW1lOnQsbWVzc2FnZTpufT1lO3JldHVybnskaXNFcnJvcjohMCxuYW1lOnQsbWVzc2FnZTpuLHN0YWNrOmUuc3RhY2t0cmFjZXx8ZS5zdGFjayxub1RlbGVtZXRyeTpvLmlzRXJyb3JOb1RlbGVtZXRyeShlKX19cmV0dXJuIGV9Y29uc3Qgcj0iQ2FuY2VsZWQiO2NsYXNzIGkgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcigpe3N1cGVyKHIpLHRoaXMubmFtZT10aGlzLm1lc3NhZ2V9fWNsYXNzIG8gZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKSx0aGlzLm5hbWU9IkVycm9yTm9UZWxlbWV0cnkifXN0YXRpYyBmcm9tRXJyb3IoZSl7aWYoZSBpbnN0YW5jZW9mIG8pcmV0dXJuIGU7Y29uc3QgdD1uZXcgbztyZXR1cm4gdC5tZXNzYWdlPWUubWVzc2FnZSx0LnN0YWNrPWUuc3RhY2ssdH1zdGF0aWMgaXNFcnJvck5vVGVsZW1ldHJ5KGUpe3JldHVybiJFcnJvck5vVGVsZW1ldHJ5Ij09PWUubmFtZX19ZnVuY3Rpb24gcyhlKXtjb25zdCB0PXRoaXM7bGV0IG4scj0hMTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gcnx8KHI9ITAsbj1lLmFwcGx5KHQsYXJndW1lbnRzKSksbn19dmFyIGE7IWZ1bmN0aW9uKGUpe2UuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJvYmplY3QiPT10eXBlb2YgZSYmImZ1bmN0aW9uIj09dHlwZW9mIGVbU3ltYm9sLml0ZXJhdG9yXX07Y29uc3QgdD1PYmplY3QuZnJlZXplKFtdKTtmdW5jdGlvbiBuKHQsbj1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpe2NvbnN0IHI9W107aWYoMD09PW4pcmV0dXJuW3IsdF07Y29uc3QgaT10W1N5bWJvbC5pdGVyYXRvcl0oKTtmb3IobGV0IHQ9MDt0PG47dCsrKXtjb25zdCB0PWkubmV4dCgpO2lmKHQuZG9uZSlyZXR1cm5bcixlLmVtcHR5KCldO3IucHVzaCh0LnZhbHVlKX1yZXR1cm5bcix7W1N5bWJvbC5pdGVyYXRvcl06KCk9Pml9XX1lLmVtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGUuc2luZ2xlPWZ1bmN0aW9uKihlKXt5aWVsZCBlfSxlLmZyb209ZnVuY3Rpb24oZSl7cmV0dXJuIGV8fHR9LGUuaXNFbXB0eT1mdW5jdGlvbihlKXtyZXR1cm4hZXx8ITA9PT1lW1N5bWJvbC5pdGVyYXRvcl0oKS5uZXh0KCkuZG9uZX0sZS5maXJzdD1mdW5jdGlvbihlKXtyZXR1cm4gZVtTeW1ib2wuaXRlcmF0b3JdKCkubmV4dCgpLnZhbHVlfSxlLnNvbWU9ZnVuY3Rpb24oZSx0KXtmb3IoY29uc3QgbiBvZiBlKWlmKHQobikpcmV0dXJuITA7cmV0dXJuITF9LGUuZmluZD1mdW5jdGlvbihlLHQpe2Zvcihjb25zdCBuIG9mIGUpaWYodChuKSlyZXR1cm4gbn0sZS5maWx0ZXI9ZnVuY3Rpb24qKGUsdCl7Zm9yKGNvbnN0IG4gb2YgZSl0KG4pJiYoeWllbGQgbil9LGUubWFwPWZ1bmN0aW9uKihlLHQpe2xldCBuPTA7Zm9yKGNvbnN0IHIgb2YgZSl5aWVsZCB0KHIsbisrKX0sZS5jb25jYXQ9ZnVuY3Rpb24qKC4uLmUpe2Zvcihjb25zdCB0IG9mIGUpZm9yKGNvbnN0IGUgb2YgdCl5aWVsZCBlfSxlLmNvbmNhdE5lc3RlZD1mdW5jdGlvbiooZSl7Zm9yKGNvbnN0IHQgb2YgZSlmb3IoY29uc3QgZSBvZiB0KXlpZWxkIGV9LGUucmVkdWNlPWZ1bmN0aW9uKGUsdCxuKXtsZXQgcj1uO2Zvcihjb25zdCBuIG9mIGUpcj10KHIsbik7cmV0dXJuIHJ9LGUuZm9yRWFjaD1mdW5jdGlvbihlLHQpe2xldCBuPTA7Zm9yKGNvbnN0IHIgb2YgZSl0KHIsbisrKX0sZS5zbGljZT1mdW5jdGlvbiooZSx0LG49ZS5sZW5ndGgpe2Zvcih0PDAmJih0Kz1lLmxlbmd0aCksbjwwP24rPWUubGVuZ3RoOm4+ZS5sZW5ndGgmJihuPWUubGVuZ3RoKTt0PG47dCsrKXlpZWxkIGVbdF19LGUuY29uc3VtZT1uLGUuY29sbGVjdD1mdW5jdGlvbihlKXtyZXR1cm4gbihlKVswXX0sZS5lcXVhbHM9ZnVuY3Rpb24oZSx0LG49KChlLHQpPT5lPT09dCkpe2NvbnN0IHI9ZVtTeW1ib2wuaXRlcmF0b3JdKCksaT10W1N5bWJvbC5pdGVyYXRvcl0oKTtmb3IoOzspe2NvbnN0IGU9ci5uZXh0KCksdD1pLm5leHQoKTtpZihlLmRvbmUhPT10LmRvbmUpcmV0dXJuITE7aWYoZS5kb25lKXJldHVybiEwO2lmKCFuKGUudmFsdWUsdC52YWx1ZSkpcmV0dXJuITF9fX0oYXx8KGE9e30pKTtjbGFzcyBsIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSl7c3VwZXIoYEVuY291bnRlcmVkIGVycm9ycyB3aGlsZSBkaXNwb3Npbmcgb2Ygc3RvcmUuIEVycm9yczogWyR7ZS5qb2luKCIsICIpfV1gKSx0aGlzLmVycm9ycz1lfX1mdW5jdGlvbiBjKGUpe2lmKGEuaXMoZSkpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IG4gb2YgZSlpZihuKXRyeXtuLmRpc3Bvc2UoKX1jYXRjaChlKXt0LnB1c2goZSl9aWYoMT09PXQubGVuZ3RoKXRocm93IHRbMF07aWYodC5sZW5ndGg+MSl0aHJvdyBuZXcgbCh0KTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9bXTplfWlmKGUpcmV0dXJuIGUuZGlzcG9zZSgpLGV9ZnVuY3Rpb24gaChlKXtyZXR1cm57ZGlzcG9zZTpzKCgoKT0+e2UoKX0pKX19Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuX3RvRGlzcG9zZT1uZXcgU2V0LHRoaXMuX2lzRGlzcG9zZWQ9ITF9ZGlzcG9zZSgpe3RoaXMuX2lzRGlzcG9zZWR8fCh0aGlzLl9pc0Rpc3Bvc2VkPSEwLHRoaXMuY2xlYXIoKSl9Z2V0IGlzRGlzcG9zZWQoKXtyZXR1cm4gdGhpcy5faXNEaXNwb3NlZH1jbGVhcigpe3RyeXtjKHRoaXMuX3RvRGlzcG9zZS52YWx1ZXMoKSl9ZmluYWxseXt0aGlzLl90b0Rpc3Bvc2UuY2xlYXIoKX19YWRkKGUpe2lmKCFlKXJldHVybiBlO2lmKGU9PT10aGlzKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlZ2lzdGVyIGEgZGlzcG9zYWJsZSBvbiBpdHNlbGYhIik7cmV0dXJuIHRoaXMuX2lzRGlzcG9zZWQ/ZC5ESVNBQkxFX0RJU1BPU0VEX1dBUk5JTkd8fGNvbnNvbGUud2FybihuZXcgRXJyb3IoIlRyeWluZyB0byBhZGQgYSBkaXNwb3NhYmxlIHRvIGEgRGlzcG9zYWJsZVN0b3JlIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBkaXNwb3NlZCBvZi4gVGhlIGFkZGVkIG9iamVjdCB3aWxsIGJlIGxlYWtlZCEiKS5zdGFjayk6dGhpcy5fdG9EaXNwb3NlLmFkZChlKSxlfX1kLkRJU0FCTEVfRElTUE9TRURfV0FSTklORz0hMTtjbGFzcyBwe2NvbnN0cnVjdG9yKCl7dGhpcy5fc3RvcmU9bmV3IGQsdGhpcy5fc3RvcmV9ZGlzcG9zZSgpe3RoaXMuX3N0b3JlLmRpc3Bvc2UoKX1fcmVnaXN0ZXIoZSl7aWYoZT09PXRoaXMpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcmVnaXN0ZXIgYSBkaXNwb3NhYmxlIG9uIGl0c2VsZiEiKTtyZXR1cm4gdGhpcy5fc3RvcmUuYWRkKGUpfX1wLk5vbmU9T2JqZWN0LmZyZWV6ZSh7ZGlzcG9zZSgpe319KTtjbGFzcyB1e2NvbnN0cnVjdG9yKCl7dGhpcy5kaXNwb3NlPSgpPT57fSx0aGlzLnVuc2V0PSgpPT57fSx0aGlzLmlzc2V0PSgpPT4hMX1zZXQoZSl7bGV0IHQ9ZTtyZXR1cm4gdGhpcy51bnNldD0oKT0+dD12b2lkIDAsdGhpcy5pc3NldD0oKT0+dm9pZCAwIT09dCx0aGlzLmRpc3Bvc2U9KCk9Pnt0JiYodCgpLHQ9dm9pZCAwKX0sdGhpc319bGV0IG09Y2xhc3MgZXtjb25zdHJ1Y3Rvcih0KXt0aGlzLmVsZW1lbnQ9dCx0aGlzLm5leHQ9ZS5VbmRlZmluZWQsdGhpcy5wcmV2PWUuVW5kZWZpbmVkfX07bS5VbmRlZmluZWQ9bmV3IG0odm9pZCAwKTtjbGFzcyBme2NvbnN0cnVjdG9yKCl7dGhpcy5fZmlyc3Q9bS5VbmRlZmluZWQsdGhpcy5fbGFzdD1tLlVuZGVmaW5lZCx0aGlzLl9zaXplPTB9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fc2l6ZX1pc0VtcHR5KCl7cmV0dXJuIHRoaXMuX2ZpcnN0PT09bS5VbmRlZmluZWR9Y2xlYXIoKXtsZXQgZT10aGlzLl9maXJzdDtmb3IoO2UhPT1tLlVuZGVmaW5lZDspe2NvbnN0IHQ9ZS5uZXh0O2UucHJldj1tLlVuZGVmaW5lZCxlLm5leHQ9bS5VbmRlZmluZWQsZT10fXRoaXMuX2ZpcnN0PW0uVW5kZWZpbmVkLHRoaXMuX2xhc3Q9bS5VbmRlZmluZWQsdGhpcy5fc2l6ZT0wfXVuc2hpZnQoZSl7cmV0dXJuIHRoaXMuX2luc2VydChlLCExKX1wdXNoKGUpe3JldHVybiB0aGlzLl9pbnNlcnQoZSwhMCl9X2luc2VydChlLHQpe2NvbnN0IG49bmV3IG0oZSk7aWYodGhpcy5fZmlyc3Q9PT1tLlVuZGVmaW5lZCl0aGlzLl9maXJzdD1uLHRoaXMuX2xhc3Q9bjtlbHNlIGlmKHQpe2NvbnN0IGU9dGhpcy5fbGFzdDt0aGlzLl9sYXN0PW4sbi5wcmV2PWUsZS5uZXh0PW59ZWxzZXtjb25zdCBlPXRoaXMuX2ZpcnN0O3RoaXMuX2ZpcnN0PW4sbi5uZXh0PWUsZS5wcmV2PW59dGhpcy5fc2l6ZSs9MTtsZXQgcj0hMTtyZXR1cm4oKT0+e3J8fChyPSEwLHRoaXMuX3JlbW92ZShuKSl9fXNoaWZ0KCl7aWYodGhpcy5fZmlyc3QhPT1tLlVuZGVmaW5lZCl7Y29uc3QgZT10aGlzLl9maXJzdC5lbGVtZW50O3JldHVybiB0aGlzLl9yZW1vdmUodGhpcy5fZmlyc3QpLGV9fXBvcCgpe2lmKHRoaXMuX2xhc3QhPT1tLlVuZGVmaW5lZCl7Y29uc3QgZT10aGlzLl9sYXN0LmVsZW1lbnQ7cmV0dXJuIHRoaXMuX3JlbW92ZSh0aGlzLl9sYXN0KSxlfX1fcmVtb3ZlKGUpe2lmKGUucHJldiE9PW0uVW5kZWZpbmVkJiZlLm5leHQhPT1tLlVuZGVmaW5lZCl7Y29uc3QgdD1lLnByZXY7dC5uZXh0PWUubmV4dCxlLm5leHQucHJldj10fWVsc2UgZS5wcmV2PT09bS5VbmRlZmluZWQmJmUubmV4dD09PW0uVW5kZWZpbmVkPyh0aGlzLl9maXJzdD1tLlVuZGVmaW5lZCx0aGlzLl9sYXN0PW0uVW5kZWZpbmVkKTplLm5leHQ9PT1tLlVuZGVmaW5lZD8odGhpcy5fbGFzdD10aGlzLl9sYXN0LnByZXYsdGhpcy5fbGFzdC5uZXh0PW0uVW5kZWZpbmVkKTplLnByZXY9PT1tLlVuZGVmaW5lZCYmKHRoaXMuX2ZpcnN0PXRoaXMuX2ZpcnN0Lm5leHQsdGhpcy5fZmlyc3QucHJldj1tLlVuZGVmaW5lZCk7dGhpcy5fc2l6ZS09MX0qW1N5bWJvbC5pdGVyYXRvcl0oKXtsZXQgZT10aGlzLl9maXJzdDtmb3IoO2UhPT1tLlVuZGVmaW5lZDspeWllbGQgZS5lbGVtZW50LGU9ZS5uZXh0fX1sZXQgZz0idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudC5sb2NhdGlvbiYmZG9jdW1lbnQubG9jYXRpb24uaGFzaC5pbmRleE9mKCJwc2V1ZG89dHJ1ZSIpPj0wO3ZhciBiO2NvbnN0IHk9ImVuIjtsZXQgdix3LHgsUz0hMSxDPSExLGs9ITEsXz0hMSxFPXk7Y29uc3QgRj0ib2JqZWN0Ij09dHlwZW9mIHNlbGY/c2VsZjoib2JqZWN0Ij09dHlwZW9mIGdsb2JhbD9nbG9iYWw6e307bGV0IFI7dm9pZCAwIT09Ri52c2NvZGUmJnZvaWQgMCE9PUYudnNjb2RlLnByb2Nlc3M/Uj1GLnZzY29kZS5wcm9jZXNzOiJ1bmRlZmluZWQiIT10eXBlb2YgcHJvY2VzcyYmKFI9cHJvY2Vzcyk7Y29uc3QgRD0ic3RyaW5nIj09dHlwZW9mKG51bGw9PT0oYj1udWxsPT1SP3ZvaWQgMDpSLnZlcnNpb25zKXx8dm9pZCAwPT09Yj92b2lkIDA6Yi5lbGVjdHJvbikmJiJyZW5kZXJlciI9PT0obnVsbD09Uj92b2lkIDA6Ui50eXBlKTtpZigib2JqZWN0IiE9dHlwZW9mIG5hdmlnYXRvcnx8RClpZigib2JqZWN0Ij09dHlwZW9mIFIpe1M9IndpbjMyIj09PVIucGxhdGZvcm0sQz0iZGFyd2luIj09PVIucGxhdGZvcm0saz0ibGludXgiPT09Ui5wbGF0Zm9ybSxrJiZSLmVudi5TTkFQJiZSLmVudi5TTkFQX1JFVklTSU9OLFIuZW52LkNJfHxSLmVudi5CVUlMRF9BUlRJRkFDVFNUQUdJTkdESVJFQ1RPUlksdj15LEU9eTtjb25zdCBlPVIuZW52LlZTQ09ERV9OTFNfQ09ORklHO2lmKGUpdHJ5e2NvbnN0IHQ9SlNPTi5wYXJzZShlKSxuPXQuYXZhaWxhYmxlTGFuZ3VhZ2VzWyIqIl07dj10LmxvY2FsZSxFPW58fHksdz10Ll90cmFuc2xhdGlvbnNDb25maWdGaWxlfWNhdGNoKGUpe319ZWxzZSBjb25zb2xlLmVycm9yKCJVbmFibGUgdG8gcmVzb2x2ZSBwbGF0Zm9ybS4iKTtlbHNlIHg9bmF2aWdhdG9yLnVzZXJBZ2VudCxTPXguaW5kZXhPZigiV2luZG93cyIpPj0wLEM9eC5pbmRleE9mKCJNYWNpbnRvc2giKT49MCwoeC5pbmRleE9mKCJNYWNpbnRvc2giKT49MHx8eC5pbmRleE9mKCJpUGFkIik+PTB8fHguaW5kZXhPZigiaVBob25lIik+PTApJiZuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMmJm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyxrPXguaW5kZXhPZigiTGludXgiKT49MCxfPSEwLGZ1bmN0aW9uKGUsdCwuLi5uKXshZnVuY3Rpb24oZSx0KXtsZXQgbjtuPTA9PT10Lmxlbmd0aD9lOmUucmVwbGFjZSgvXHsoXGQrKVx9L2csKChlLG4pPT57Y29uc3Qgcj1uWzBdLGk9dFtyXTtsZXQgbz1lO3JldHVybiJzdHJpbmciPT10eXBlb2YgaT9vPWk6Im51bWJlciIhPXR5cGVvZiBpJiYiYm9vbGVhbiIhPXR5cGVvZiBpJiZudWxsIT1pfHwobz1TdHJpbmcoaSkpLG99KSksZyYmKG49Iu+8uyIrbi5yZXBsYWNlKC9bYW91ZWldL2csIiQmJCYiKSsi77y9Iil9KHQsbil9KDAsIl8iKSx2PXksRT12O2NvbnN0IE49UyxUPUM7XyYmRi5pbXBvcnRTY3JpcHRzO2NvbnN0IEE9eCx6PSJmdW5jdGlvbiI9PXR5cGVvZiBGLnBvc3RNZXNzYWdlJiYhRi5pbXBvcnRTY3JpcHRzOygoKT0+e2lmKHope2NvbnN0IGU9W107Ri5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwodD0+e2lmKHQuZGF0YSYmdC5kYXRhLnZzY29kZVNjaGVkdWxlQXN5bmNXb3JrKWZvcihsZXQgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyl7Y29uc3Qgcj1lW25dO2lmKHIuaWQ9PT10LmRhdGEudnNjb2RlU2NoZWR1bGVBc3luY1dvcmspcmV0dXJuIGUuc3BsaWNlKG4sMSksdm9pZCByLmNhbGxiYWNrKCl9fSkpO2xldCB0PTA7cmV0dXJuIG49Pntjb25zdCByPSsrdDtlLnB1c2goe2lkOnIsY2FsbGJhY2s6bn0pLEYucG9zdE1lc3NhZ2Uoe3ZzY29kZVNjaGVkdWxlQXN5bmNXb3JrOnJ9LCIqIil9fX0pKCk7Y29uc3QgST0hIShBJiZBLmluZGV4T2YoIkNocm9tZSIpPj0wKTtBJiZBLmluZGV4T2YoIkZpcmVmb3giKSwhSSYmQSYmQS5pbmRleE9mKCJTYWZhcmkiKSxBJiZBLmluZGV4T2YoIkVkZy8iKSxBJiZBLmluZGV4T2YoIkFuZHJvaWQiKTtjb25zdCBNPUYucGVyZm9ybWFuY2UmJiJmdW5jdGlvbiI9PXR5cGVvZiBGLnBlcmZvcm1hbmNlLm5vdztjbGFzcyBQe2NvbnN0cnVjdG9yKGUpe3RoaXMuX2hpZ2hSZXNvbHV0aW9uPU0mJmUsdGhpcy5fc3RhcnRUaW1lPXRoaXMuX25vdygpLHRoaXMuX3N0b3BUaW1lPS0xfXN0YXRpYyBjcmVhdGUoZT0hMCl7cmV0dXJuIG5ldyBQKGUpfXN0b3AoKXt0aGlzLl9zdG9wVGltZT10aGlzLl9ub3coKX1lbGFwc2VkKCl7cmV0dXJuLTEhPT10aGlzLl9zdG9wVGltZT90aGlzLl9zdG9wVGltZS10aGlzLl9zdGFydFRpbWU6dGhpcy5fbm93KCktdGhpcy5fc3RhcnRUaW1lfV9ub3coKXtyZXR1cm4gdGhpcy5faGlnaFJlc29sdXRpb24/Ri5wZXJmb3JtYW5jZS5ub3coKTpEYXRlLm5vdygpfX12YXIgTyxMOyFmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3JldHVybih0LG49bnVsbCxyKT0+e2xldCBpLG89ITE7cmV0dXJuIGk9ZSgoZT0+e2lmKCFvKXJldHVybiBpP2kuZGlzcG9zZSgpOm89ITAsdC5jYWxsKG4sZSl9KSxudWxsLHIpLG8mJmkuZGlzcG9zZSgpLGl9fWZ1bmN0aW9uIG4oZSx0LG4pe3JldHVybiBzKCgobixyPW51bGwsaSk9PmUoKGU9Pm4uY2FsbChyLHQoZSkpKSxudWxsLGkpKSxuKX1mdW5jdGlvbiByKGUsdCxuKXtyZXR1cm4gcygoKG4scj1udWxsLGkpPT5lKChlPT57dChlKSxuLmNhbGwocixlKX0pLG51bGwsaSkpLG4pfWZ1bmN0aW9uIGkoZSx0LG4pe3JldHVybiBzKCgobixyPW51bGwsaSk9PmUoKGU9PnQoZSkmJm4uY2FsbChyLGUpKSxudWxsLGkpKSxuKX1mdW5jdGlvbiBvKGUsdCxyLGkpe2xldCBvPXI7cmV0dXJuIG4oZSwoZT0+KG89dChvLGUpLG8pKSxpKX1mdW5jdGlvbiBzKGUsdCl7bGV0IG47Y29uc3Qgcj1uZXcgSyh7b25GaXJzdExpc3RlbmVyQWRkKCl7bj1lKHIuZmlyZSxyKX0sb25MYXN0TGlzdGVuZXJSZW1vdmUoKXtudWxsPT1ufHxuLmRpc3Bvc2UoKX19KTtyZXR1cm4gbnVsbD09dHx8dC5hZGQociksci5ldmVudH1mdW5jdGlvbiBhKGUsdCxuPTEwMCxyPSExLGksbyl7bGV0IHMsYSxsLGM9MDtjb25zdCBoPW5ldyBLKHtsZWFrV2FybmluZ1RocmVzaG9sZDppLG9uRmlyc3RMaXN0ZW5lckFkZCgpe3M9ZSgoZT0+e2MrKyxhPXQoYSxlKSxyJiYhbCYmKGguZmlyZShhKSxhPXZvaWQgMCksY2xlYXJUaW1lb3V0KGwpLGw9c2V0VGltZW91dCgoKCk9Pntjb25zdCBlPWE7YT12b2lkIDAsbD12b2lkIDAsKCFyfHxjPjEpJiZoLmZpcmUoZSksYz0wfSksbil9KSl9LG9uTGFzdExpc3RlbmVyUmVtb3ZlKCl7cy5kaXNwb3NlKCl9fSk7cmV0dXJuIG51bGw9PW98fG8uYWRkKGgpLGguZXZlbnR9ZnVuY3Rpb24gbChlLHQ9KChlLHQpPT5lPT09dCksbil7bGV0IHIsbz0hMDtyZXR1cm4gaShlLChlPT57Y29uc3Qgbj1vfHwhdChlLHIpO3JldHVybiBvPSExLHI9ZSxufSksbil9ZS5Ob25lPSgpPT5wLk5vbmUsZS5vbmNlPXQsZS5tYXA9bixlLmZvckVhY2g9cixlLmZpbHRlcj1pLGUuc2lnbmFsPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxlLmFueT1mdW5jdGlvbiguLi5lKXtyZXR1cm4odCxuPW51bGwscik9PmZ1bmN0aW9uKC4uLmUpe3JldHVybiBoKCgoKT0+YyhlKSkpfSguLi5lLm1hcCgoZT0+ZSgoZT0+dC5jYWxsKG4sZSkpLG51bGwscikpKSl9LGUucmVkdWNlPW8sZS5kZWJvdW5jZT1hLGUubGF0Y2g9bCxlLnNwbGl0PWZ1bmN0aW9uKHQsbixyKXtyZXR1cm5bZS5maWx0ZXIodCxuLHIpLGUuZmlsdGVyKHQsKGU9PiFuKGUpKSxyKV19LGUuYnVmZmVyPWZ1bmN0aW9uKGUsdD0hMSxuPVtdKXtsZXQgcj1uLnNsaWNlKCksaT1lKChlPT57cj9yLnB1c2goZSk6cy5maXJlKGUpfSkpO2NvbnN0IG89KCk9PntudWxsPT1yfHxyLmZvckVhY2goKGU9PnMuZmlyZShlKSkpLHI9bnVsbH0scz1uZXcgSyh7b25GaXJzdExpc3RlbmVyQWRkKCl7aXx8KGk9ZSgoZT0+cy5maXJlKGUpKSkpfSxvbkZpcnN0TGlzdGVuZXJEaWRBZGQoKXtyJiYodD9zZXRUaW1lb3V0KG8pOm8oKSl9LG9uTGFzdExpc3RlbmVyUmVtb3ZlKCl7aSYmaS5kaXNwb3NlKCksaT1udWxsfX0pO3JldHVybiBzLmV2ZW50fTtjbGFzcyB1e2NvbnN0cnVjdG9yKGUpe3RoaXMuZXZlbnQ9ZSx0aGlzLmRpc3Bvc2FibGVzPW5ldyBkfW1hcChlKXtyZXR1cm4gbmV3IHUobih0aGlzLmV2ZW50LGUsdGhpcy5kaXNwb3NhYmxlcykpfWZvckVhY2goZSl7cmV0dXJuIG5ldyB1KHIodGhpcy5ldmVudCxlLHRoaXMuZGlzcG9zYWJsZXMpKX1maWx0ZXIoZSl7cmV0dXJuIG5ldyB1KGkodGhpcy5ldmVudCxlLHRoaXMuZGlzcG9zYWJsZXMpKX1yZWR1Y2UoZSx0KXtyZXR1cm4gbmV3IHUobyh0aGlzLmV2ZW50LGUsdCx0aGlzLmRpc3Bvc2FibGVzKSl9bGF0Y2goKXtyZXR1cm4gbmV3IHUobCh0aGlzLmV2ZW50LHZvaWQgMCx0aGlzLmRpc3Bvc2FibGVzKSl9ZGVib3VuY2UoZSx0PTEwMCxuPSExLHIpe3JldHVybiBuZXcgdShhKHRoaXMuZXZlbnQsZSx0LG4scix0aGlzLmRpc3Bvc2FibGVzKSl9b24oZSx0LG4pe3JldHVybiB0aGlzLmV2ZW50KGUsdCxuKX1vbmNlKGUsbixyKXtyZXR1cm4gdCh0aGlzLmV2ZW50KShlLG4scil9ZGlzcG9zZSgpe3RoaXMuZGlzcG9zYWJsZXMuZGlzcG9zZSgpfX1lLmNoYWluPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdShlKX0sZS5mcm9tTm9kZUV2ZW50RW1pdHRlcj1mdW5jdGlvbihlLHQsbj0oZT0+ZSkpe2NvbnN0IHI9KC4uLmUpPT5pLmZpcmUobiguLi5lKSksaT1uZXcgSyh7b25GaXJzdExpc3RlbmVyQWRkOigpPT5lLm9uKHQsciksb25MYXN0TGlzdGVuZXJSZW1vdmU6KCk9PmUucmVtb3ZlTGlzdGVuZXIodCxyKX0pO3JldHVybiBpLmV2ZW50fSxlLmZyb21ET01FdmVudEVtaXR0ZXI9ZnVuY3Rpb24oZSx0LG49KGU9PmUpKXtjb25zdCByPSguLi5lKT0+aS5maXJlKG4oLi4uZSkpLGk9bmV3IEsoe29uRmlyc3RMaXN0ZW5lckFkZDooKT0+ZS5hZGRFdmVudExpc3RlbmVyKHQsciksb25MYXN0TGlzdGVuZXJSZW1vdmU6KCk9PmUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LHIpfSk7cmV0dXJuIGkuZXZlbnR9LGUudG9Qcm9taXNlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZSgobj0+dChlKShuKSkpfSxlLnJ1bkFuZFN1YnNjcmliZT1mdW5jdGlvbihlLHQpe3JldHVybiB0KHZvaWQgMCksZSgoZT0+dChlKSkpfSxlLnJ1bkFuZFN1YnNjcmliZVdpdGhTdG9yZT1mdW5jdGlvbihlLHQpe2xldCBuPW51bGw7ZnVuY3Rpb24gcihlKXtudWxsPT1ufHxuLmRpc3Bvc2UoKSxuPW5ldyBkLHQoZSxuKX1yKHZvaWQgMCk7Y29uc3QgaT1lKChlPT5yKGUpKSk7cmV0dXJuIGgoKCgpPT57aS5kaXNwb3NlKCksbnVsbD09bnx8bi5kaXNwb3NlKCl9KSl9O2NsYXNzIG17Y29uc3RydWN0b3IoZSx0KXt0aGlzLm9icz1lLHRoaXMuX2NvdW50ZXI9MCx0aGlzLl9oYXNDaGFuZ2VkPSExO2NvbnN0IG49e29uRmlyc3RMaXN0ZW5lckFkZDooKT0+e2UuYWRkT2JzZXJ2ZXIodGhpcyl9LG9uTGFzdExpc3RlbmVyUmVtb3ZlOigpPT57ZS5yZW1vdmVPYnNlcnZlcih0aGlzKX19O3RoaXMuZW1pdHRlcj1uZXcgSyhuKSx0JiZ0LmFkZCh0aGlzLmVtaXR0ZXIpfWJlZ2luVXBkYXRlKGUpe3RoaXMuX2NvdW50ZXIrK31oYW5kbGVDaGFuZ2UoZSx0KXt0aGlzLl9oYXNDaGFuZ2VkPSEwfWVuZFVwZGF0ZShlKXswPT0tLXRoaXMuX2NvdW50ZXImJnRoaXMuX2hhc0NoYW5nZWQmJih0aGlzLl9oYXNDaGFuZ2VkPSExLHRoaXMuZW1pdHRlci5maXJlKHRoaXMub2JzLmdldCgpKSl9fWUuZnJvbU9ic2VydmFibGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IG0oZSx0KS5lbWl0dGVyLmV2ZW50fX0oT3x8KE89e30pKTtjbGFzcyBXe2NvbnN0cnVjdG9yKGUpe3RoaXMuX2xpc3RlbmVyQ291bnQ9MCx0aGlzLl9pbnZvY2F0aW9uQ291bnQ9MCx0aGlzLl9lbGFwc2VkT3ZlcmFsbD0wLHRoaXMuX25hbWU9YCR7ZX1fJHtXLl9pZFBvb2wrK31gfXN0YXJ0KGUpe3RoaXMuX3N0b3BXYXRjaD1uZXcgUCghMCksdGhpcy5fbGlzdGVuZXJDb3VudD1lfXN0b3AoKXtpZih0aGlzLl9zdG9wV2F0Y2gpe2NvbnN0IGU9dGhpcy5fc3RvcFdhdGNoLmVsYXBzZWQoKTt0aGlzLl9lbGFwc2VkT3ZlcmFsbCs9ZSx0aGlzLl9pbnZvY2F0aW9uQ291bnQrPTEsY29uc29sZS5pbmZvKGBkaWQgRklSRSAke3RoaXMuX25hbWV9OiBlbGFwc2VkX21zOiAke2UudG9GaXhlZCg1KX0sIGxpc3RlbmVyOiAke3RoaXMuX2xpc3RlbmVyQ291bnR9IChlbGFwc2VkX292ZXJhbGw6ICR7dGhpcy5fZWxhcHNlZE92ZXJhbGwudG9GaXhlZCgyKX0sIGludm9jYXRpb25zOiAke3RoaXMuX2ludm9jYXRpb25Db3VudH0pYCksdGhpcy5fc3RvcFdhdGNoPXZvaWQgMH19fVcuX2lkUG9vbD0wO2NsYXNzIFZ7Y29uc3RydWN0b3IoZSl7dGhpcy52YWx1ZT1lfXN0YXRpYyBjcmVhdGUoKXt2YXIgZTtyZXR1cm4gbmV3IFYobnVsbCE9PShlPShuZXcgRXJyb3IpLnN0YWNrKSYmdm9pZCAwIT09ZT9lOiIiKX1wcmludCgpe2NvbnNvbGUud2Fybih0aGlzLnZhbHVlLnNwbGl0KCJcbiIpLnNsaWNlKDIpLmpvaW4oIlxuIikpfX1jbGFzcyBVe2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLmNhbGxiYWNrPWUsdGhpcy5jYWxsYmFja1RoaXM9dCx0aGlzLnN0YWNrPW4sdGhpcy5zdWJzY3JpcHRpb249bmV3IHV9aW52b2tlKGUpe3RoaXMuY2FsbGJhY2suY2FsbCh0aGlzLmNhbGxiYWNrVGhpcyxlKX19Y2xhc3MgS3tjb25zdHJ1Y3RvcihlKXt2YXIgdCxuO3RoaXMuX2Rpc3Bvc2VkPSExLHRoaXMuX29wdGlvbnM9ZSx0aGlzLl9sZWFrYWdlTW9uPXZvaWQgMCx0aGlzLl9wZXJmTW9uPShudWxsPT09KHQ9dGhpcy5fb3B0aW9ucyl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuX3Byb2ZOYW1lKT9uZXcgVyh0aGlzLl9vcHRpb25zLl9wcm9mTmFtZSk6dm9pZCAwLHRoaXMuX2RlbGl2ZXJ5UXVldWU9bnVsbD09PShuPXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmRlbGl2ZXJ5UXVldWV9ZGlzcG9zZSgpe3ZhciBlLHQsbixyO3RoaXMuX2Rpc3Bvc2VkfHwodGhpcy5fZGlzcG9zZWQ9ITAsdGhpcy5fbGlzdGVuZXJzJiZ0aGlzLl9saXN0ZW5lcnMuY2xlYXIoKSxudWxsPT09KGU9dGhpcy5fZGVsaXZlcnlRdWV1ZSl8fHZvaWQgMD09PWV8fGUuY2xlYXIodGhpcyksbnVsbD09PShuPW51bGw9PT0odD10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09dD92b2lkIDA6dC5vbkxhc3RMaXN0ZW5lclJlbW92ZSl8fHZvaWQgMD09PW58fG4uY2FsbCh0KSxudWxsPT09KHI9dGhpcy5fbGVha2FnZU1vbil8fHZvaWQgMD09PXJ8fHIuZGlzcG9zZSgpKX1nZXQgZXZlbnQoKXtyZXR1cm4gdGhpcy5fZXZlbnR8fCh0aGlzLl9ldmVudD0oZSx0LG4pPT57dmFyIHIsaSxvO3RoaXMuX2xpc3RlbmVyc3x8KHRoaXMuX2xpc3RlbmVycz1uZXcgZik7Y29uc3Qgcz10aGlzLl9saXN0ZW5lcnMuaXNFbXB0eSgpO2xldCBhLGw7cyYmKG51bGw9PT0ocj10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09cj92b2lkIDA6ci5vbkZpcnN0TGlzdGVuZXJBZGQpJiZ0aGlzLl9vcHRpb25zLm9uRmlyc3RMaXN0ZW5lckFkZCh0aGlzKSx0aGlzLl9sZWFrYWdlTW9uJiZ0aGlzLl9saXN0ZW5lcnMuc2l6ZT49MzAmJihsPVYuY3JlYXRlKCksYT10aGlzLl9sZWFrYWdlTW9uLmNoZWNrKGwsdGhpcy5fbGlzdGVuZXJzLnNpemUrMSkpO2NvbnN0IGM9bmV3IFUoZSx0LGwpLGg9dGhpcy5fbGlzdGVuZXJzLnB1c2goYyk7cyYmKG51bGw9PT0oaT10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09aT92b2lkIDA6aS5vbkZpcnN0TGlzdGVuZXJEaWRBZGQpJiZ0aGlzLl9vcHRpb25zLm9uRmlyc3RMaXN0ZW5lckRpZEFkZCh0aGlzKSwobnVsbD09PShvPXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLm9uTGlzdGVuZXJEaWRBZGQpJiZ0aGlzLl9vcHRpb25zLm9uTGlzdGVuZXJEaWRBZGQodGhpcyxlLHQpO2NvbnN0IHA9Yy5zdWJzY3JpcHRpb24uc2V0KCgoKT0+e2lmKG51bGw9PWF8fGEoKSwhdGhpcy5fZGlzcG9zZWQmJihoKCksdGhpcy5fb3B0aW9ucyYmdGhpcy5fb3B0aW9ucy5vbkxhc3RMaXN0ZW5lclJlbW92ZSkpe3RoaXMuX2xpc3RlbmVycyYmIXRoaXMuX2xpc3RlbmVycy5pc0VtcHR5KCl8fHRoaXMuX29wdGlvbnMub25MYXN0TGlzdGVuZXJSZW1vdmUodGhpcyl9fSkpO3JldHVybiBuIGluc3RhbmNlb2YgZD9uLmFkZChwKTpBcnJheS5pc0FycmF5KG4pJiZuLnB1c2gocCkscH0pLHRoaXMuX2V2ZW50fWZpcmUoZSl7dmFyIHQsbjtpZih0aGlzLl9saXN0ZW5lcnMpe3RoaXMuX2RlbGl2ZXJ5UXVldWV8fCh0aGlzLl9kZWxpdmVyeVF1ZXVlPW5ldyBqKTtmb3IoY29uc3QgdCBvZiB0aGlzLl9saXN0ZW5lcnMpdGhpcy5fZGVsaXZlcnlRdWV1ZS5wdXNoKHRoaXMsdCxlKTtudWxsPT09KHQ9dGhpcy5fcGVyZk1vbil8fHZvaWQgMD09PXR8fHQuc3RhcnQodGhpcy5fZGVsaXZlcnlRdWV1ZS5zaXplKSx0aGlzLl9kZWxpdmVyeVF1ZXVlLmRlbGl2ZXIoKSxudWxsPT09KG49dGhpcy5fcGVyZk1vbil8fHZvaWQgMD09PW58fG4uc3RvcCgpfX19Y2xhc3MgQntjb25zdHJ1Y3Rvcigpe3RoaXMuX3F1ZXVlPW5ldyBmfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuX3F1ZXVlLnNpemV9cHVzaChlLHQsbil7dGhpcy5fcXVldWUucHVzaChuZXcgcShlLHQsbikpfWNsZWFyKGUpe2NvbnN0IHQ9bmV3IGY7Zm9yKGNvbnN0IG4gb2YgdGhpcy5fcXVldWUpbi5lbWl0dGVyIT09ZSYmdC5wdXNoKG4pO3RoaXMuX3F1ZXVlPXR9ZGVsaXZlcigpe2Zvcig7dGhpcy5fcXVldWUuc2l6ZT4wOyl7Y29uc3QgZT10aGlzLl9xdWV1ZS5zaGlmdCgpO3RyeXtlLmxpc3RlbmVyLmludm9rZShlLmV2ZW50KX1jYXRjaChlKXt0KGUpfX19fWNsYXNzIGogZXh0ZW5kcyBCe2NsZWFyKGUpe3RoaXMuX3F1ZXVlLmNsZWFyKCl9fWNsYXNzIHF7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuZW1pdHRlcj1lLHRoaXMubGlzdGVuZXI9dCx0aGlzLmV2ZW50PW59fWZ1bmN0aW9uICQoZSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgbiBvZiBmdW5jdGlvbihlKXtsZXQgdD1bXSxuPU9iamVjdC5nZXRQcm90b3R5cGVPZihlKTtmb3IoO09iamVjdC5wcm90b3R5cGUhPT1uOyl0PXQuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG4pKSxuPU9iamVjdC5nZXRQcm90b3R5cGVPZihuKTtyZXR1cm4gdH0oZSkpImZ1bmN0aW9uIj09dHlwZW9mIGVbbl0mJnQucHVzaChuKTtyZXR1cm4gdH1mdW5jdGlvbiBIKGUsdD0iVW5yZWFjaGFibGUiKXt0aHJvdyBuZXcgRXJyb3IodCl9Y2xhc3MgR3tjb25zdHJ1Y3RvcihlKXt0aGlzLmV4ZWN1dG9yPWUsdGhpcy5fZGlkUnVuPSExfWhhc1ZhbHVlKCl7cmV0dXJuIHRoaXMuX2RpZFJ1bn1nZXRWYWx1ZSgpe2lmKCF0aGlzLl9kaWRSdW4pdHJ5e3RoaXMuX3ZhbHVlPXRoaXMuZXhlY3V0b3IoKX1jYXRjaChlKXt0aGlzLl9lcnJvcj1lfWZpbmFsbHl7dGhpcy5fZGlkUnVuPSEwfWlmKHRoaXMuX2Vycm9yKXRocm93IHRoaXMuX2Vycm9yO3JldHVybiB0aGlzLl92YWx1ZX1nZXQgcmF3VmFsdWUoKXtyZXR1cm4gdGhpcy5fdmFsdWV9fWZ1bmN0aW9uIEooZSl7cmV0dXJuIGU+PTY1JiZlPD05MH1mdW5jdGlvbiBYKGUpe3JldHVybiA1NTI5Njw9ZSYmZTw9NTYzMTl9ZnVuY3Rpb24gWShlLHQsbil7Y29uc3Qgcj1lLmNoYXJDb2RlQXQobik7aWYoWChyKSYmbisxPHQpe2NvbnN0IHQ9ZS5jaGFyQ29kZUF0KG4rMSk7aWYoZnVuY3Rpb24oZSl7cmV0dXJuIDU2MzIwPD1lJiZlPD01NzM0M30odCkpcmV0dXJuIHQtNTYzMjArKHItNTUyOTY8PDEwKSs2NTUzNn1yZXR1cm4gcn1jb25zdCBaPS9eW1x0XG5cclx4MjAtXHg3RV0qJC87Y2xhc3MgUXtjb25zdHJ1Y3RvcihlKXt0aGlzLmNvbmZ1c2FibGVEaWN0aW9uYXJ5PWV9c3RhdGljIGdldEluc3RhbmNlKGUpe3JldHVybiBRLmNhY2hlLmdldChBcnJheS5mcm9tKGUpKX1zdGF0aWMgZ2V0TG9jYWxlcygpe3JldHVybiBRLl9sb2NhbGVzLmdldFZhbHVlKCl9aXNBbWJpZ3VvdXMoZSl7cmV0dXJuIHRoaXMuY29uZnVzYWJsZURpY3Rpb25hcnkuaGFzKGUpfWdldFByaW1hcnlDb25mdXNhYmxlKGUpe3JldHVybiB0aGlzLmNvbmZ1c2FibGVEaWN0aW9uYXJ5LmdldChlKX1nZXRDb25mdXNhYmxlQ29kZVBvaW50cygpe3JldHVybiBuZXcgU2V0KHRoaXMuY29uZnVzYWJsZURpY3Rpb25hcnkua2V5cygpKX19TD1RLFEuYW1iaWd1b3VzQ2hhcmFjdGVyRGF0YT1uZXcgRygoKCk9PkpTT04ucGFyc2UoJ3siX2NvbW1vbiI6WzgyMzIsMzIsODIzMywzMiw1NzYwLDMyLDgxOTIsMzIsODE5MywzMiw4MTk0LDMyLDgxOTUsMzIsODE5NiwzMiw4MTk3LDMyLDgxOTgsMzIsODIwMCwzMiw4MjAxLDMyLDgyMDIsMzIsODI4NywzMiw4MTk5LDMyLDgyMzksMzIsMjA0Miw5NSw2NTEwMSw5NSw2NTEwMiw5NSw2NTEwMyw5NSw4MjA4LDQ1LDgyMDksNDUsODIxMCw0NSw2NTExMiw0NSwxNzQ4LDQ1LDgyNTksNDUsNzI3LDQ1LDg3MjIsNDUsMTAxMzQsNDUsMTE0NTAsNDUsMTU0OSw0NCwxNjQzLDQ0LDgyMTgsNDQsMTg0LDQ0LDQyMjMzLDQ0LDg5NCw1OSwyMzA3LDU4LDI2OTEsNTgsMTQxNyw1OCwxNzk1LDU4LDE3OTYsNTgsNTg2OCw1OCw2NTA3Miw1OCw2MTQ3LDU4LDYxNTMsNTgsODI4Miw1OCwxNDc1LDU4LDc2MCw1OCw0Mjg4OSw1OCw4NzU4LDU4LDcyMCw1OCw0MjIzNyw1OCw0NTEsMzMsMTE2MDEsMzMsNjYwLDYzLDU3Nyw2MywyNDI5LDYzLDUwMzgsNjMsNDI3MzEsNjMsMTE5MTQ5LDQ2LDgyMjgsNDYsMTc5Myw0NiwxNzk0LDQ2LDQyNTEwLDQ2LDY4MTc2LDQ2LDE2MzIsNDYsMTc3Niw0Niw0MjIzMiw0NiwxMzczLDk2LDY1Mjg3LDk2LDgyMTksOTYsODI0Miw5NiwxMzcwLDk2LDE1MjMsOTYsODE3NSw5Niw2NTM0NCw5Niw5MDAsOTYsODE4OSw5Niw4MTI1LDk2LDgxMjcsOTYsODE5MCw5Niw2OTcsOTYsODg0LDk2LDcxMiw5Niw3MTQsOTYsNzE1LDk2LDc1Niw5Niw2OTksOTYsNzAxLDk2LDcwMCw5Niw3MDIsOTYsNDI4OTIsOTYsMTQ5Nyw5NiwyMDM2LDk2LDIwMzcsOTYsNTE5NCw5Niw1ODM2LDk2LDk0MDMzLDk2LDk0MDM0LDk2LDY1MzM5LDkxLDEwMDg4LDQwLDEwMDk4LDQwLDEyMzA4LDQwLDY0ODMwLDQwLDY1MzQxLDkzLDEwMDg5LDQxLDEwMDk5LDQxLDEyMzA5LDQxLDY0ODMxLDQxLDEwMTAwLDEyMywxMTkwNjAsMTIzLDEwMTAxLDEyNSw2NTM0Miw5NCw4MjcwLDQyLDE2NDUsNDIsODcyNyw0Miw2NjMzNSw0Miw1OTQxLDQ3LDgyNTcsNDcsODcyNSw0Nyw4MjYwLDQ3LDk1ODUsNDcsMTAxODcsNDcsMTA3NDQsNDcsMTE5MzU0LDQ3LDEyNzU1LDQ3LDEyMzM5LDQ3LDExNDYyLDQ3LDIwMDMxLDQ3LDEyMDM1LDQ3LDY1MzQwLDkyLDY1MTI4LDkyLDg3MjYsOTIsMTAxODksOTIsMTA3NDEsOTIsMTA3NDUsOTIsMTE5MzExLDkyLDExOTM1NSw5MiwxMjc1Niw5MiwyMDAyMiw5MiwxMjAzNCw5Miw0Mjg3MiwzOCw3MDgsOTQsNzEwLDk0LDU4NjksNDMsMTAxMzMsNDMsNjYyMDMsNDMsODI0OSw2MCwxMDA5NCw2MCw3MDYsNjAsMTE5MzUwLDYwLDUxNzYsNjAsNTgxMCw2MCw1MTIwLDYxLDExODQwLDYxLDEyNDQ4LDYxLDQyMjM5LDYxLDgyNTAsNjIsMTAwOTUsNjIsNzA3LDYyLDExOTM1MSw2Miw1MTcxLDYyLDk0MDE1LDYyLDgyNzUsMTI2LDczMiwxMjYsODEyOCwxMjYsODc2NCwxMjYsNjUzNzIsMTI0LDY1MjkzLDQ1LDEyMDc4NCw1MCwxMjA3OTQsNTAsMTIwODA0LDUwLDEyMDgxNCw1MCwxMjA4MjQsNTAsMTMwMDM0LDUwLDQyODQyLDUwLDQyMyw1MCwxMDAwLDUwLDQyNTY0LDUwLDUzMTEsNTAsNDI3MzUsNTAsMTE5MzAyLDUxLDEyMDc4NSw1MSwxMjA3OTUsNTEsMTIwODA1LDUxLDEyMDgxNSw1MSwxMjA4MjUsNTEsMTMwMDM1LDUxLDQyOTIzLDUxLDU0MCw1MSw0MzksNTEsNDI4NTgsNTEsMTE0NjgsNTEsMTI0OCw1MSw5NDAxMSw1MSw3MTg4Miw1MSwxMjA3ODYsNTIsMTIwNzk2LDUyLDEyMDgwNiw1MiwxMjA4MTYsNTIsMTIwODI2LDUyLDEzMDAzNiw1Miw1MDcwLDUyLDcxODU1LDUyLDEyMDc4Nyw1MywxMjA3OTcsNTMsMTIwODA3LDUzLDEyMDgxNyw1MywxMjA4MjcsNTMsMTMwMDM3LDUzLDQ0NCw1Myw3MTg2Nyw1MywxMjA3ODgsNTQsMTIwNzk4LDU0LDEyMDgwOCw1NCwxMjA4MTgsNTQsMTIwODI4LDU0LDEzMDAzOCw1NCwxMTQ3NCw1NCw1MTAyLDU0LDcxODkzLDU0LDExOTMxNCw1NSwxMjA3ODksNTUsMTIwNzk5LDU1LDEyMDgwOSw1NSwxMjA4MTksNTUsMTIwODI5LDU1LDEzMDAzOSw1NSw2Njc3MCw1NSw3MTg3OCw1NSwyODE5LDU2LDI1MzgsNTYsMjY2Niw1NiwxMjUxMzEsNTYsMTIwNzkwLDU2LDEyMDgwMCw1NiwxMjA4MTAsNTYsMTIwODIwLDU2LDEyMDgzMCw1NiwxMzAwNDAsNTYsNTQ3LDU2LDU0Niw1Niw2NjMzMCw1NiwyNjYzLDU3LDI5MjAsNTcsMjU0MSw1NywzNDM3LDU3LDEyMDc5MSw1NywxMjA4MDEsNTcsMTIwODExLDU3LDEyMDgyMSw1NywxMjA4MzEsNTcsMTMwMDQxLDU3LDQyODYyLDU3LDExNDY2LDU3LDcxODg0LDU3LDcxODUyLDU3LDcxODk0LDU3LDkwODIsOTcsNjUzNDUsOTcsMTE5ODM0LDk3LDExOTg4Niw5NywxMTk5MzgsOTcsMTE5OTkwLDk3LDEyMDA0Miw5NywxMjAwOTQsOTcsMTIwMTQ2LDk3LDEyMDE5OCw5NywxMjAyNTAsOTcsMTIwMzAyLDk3LDEyMDM1NCw5NywxMjA0MDYsOTcsMTIwNDU4LDk3LDU5Myw5Nyw5NDUsOTcsMTIwNTE0LDk3LDEyMDU3Miw5NywxMjA2MzAsOTcsMTIwNjg4LDk3LDEyMDc0Niw5Nyw2NTMxMyw2NSwxMTk4MDgsNjUsMTE5ODYwLDY1LDExOTkxMiw2NSwxMTk5NjQsNjUsMTIwMDE2LDY1LDEyMDA2OCw2NSwxMjAxMjAsNjUsMTIwMTcyLDY1LDEyMDIyNCw2NSwxMjAyNzYsNjUsMTIwMzI4LDY1LDEyMDM4MCw2NSwxMjA0MzIsNjUsOTEzLDY1LDEyMDQ4OCw2NSwxMjA1NDYsNjUsMTIwNjA0LDY1LDEyMDY2Miw2NSwxMjA3MjAsNjUsNTAzNCw2NSw1NTczLDY1LDQyMjIyLDY1LDk0MDE2LDY1LDY2MjA4LDY1LDExOTgzNSw5OCwxMTk4ODcsOTgsMTE5OTM5LDk4LDExOTk5MSw5OCwxMjAwNDMsOTgsMTIwMDk1LDk4LDEyMDE0Nyw5OCwxMjAxOTksOTgsMTIwMjUxLDk4LDEyMDMwMyw5OCwxMjAzNTUsOTgsMTIwNDA3LDk4LDEyMDQ1OSw5OCwzODgsOTgsNTA3MSw5OCw1MjM0LDk4LDU1NTEsOTgsNjUzMTQsNjYsODQ5Miw2NiwxMTk4MDksNjYsMTE5ODYxLDY2LDExOTkxMyw2NiwxMjAwMTcsNjYsMTIwMDY5LDY2LDEyMDEyMSw2NiwxMjAxNzMsNjYsMTIwMjI1LDY2LDEyMDI3Nyw2NiwxMjAzMjksNjYsMTIwMzgxLDY2LDEyMDQzMyw2Niw0MjkzMiw2Niw5MTQsNjYsMTIwNDg5LDY2LDEyMDU0Nyw2NiwxMjA2MDUsNjYsMTIwNjYzLDY2LDEyMDcyMSw2Niw1MTA4LDY2LDU2MjMsNjYsNDIxOTIsNjYsNjYxNzgsNjYsNjYyMDksNjYsNjYzMDUsNjYsNjUzNDcsOTksODU3Myw5OSwxMTk4MzYsOTksMTE5ODg4LDk5LDExOTk0MCw5OSwxMTk5OTIsOTksMTIwMDQ0LDk5LDEyMDA5Niw5OSwxMjAxNDgsOTksMTIwMjAwLDk5LDEyMDI1Miw5OSwxMjAzMDQsOTksMTIwMzU2LDk5LDEyMDQwOCw5OSwxMjA0NjAsOTksNzQyOCw5OSwxMDEwLDk5LDExNDI5LDk5LDQzOTUxLDk5LDY2NjIxLDk5LDEyODg0NCw2Nyw3MTkyMiw2Nyw3MTkxMyw2Nyw2NTMxNSw2Nyw4NTU3LDY3LDg0NTAsNjcsODQ5Myw2NywxMTk4MTAsNjcsMTE5ODYyLDY3LDExOTkxNCw2NywxMTk5NjYsNjcsMTIwMDE4LDY3LDEyMDE3NCw2NywxMjAyMjYsNjcsMTIwMjc4LDY3LDEyMDMzMCw2NywxMjAzODIsNjcsMTIwNDM0LDY3LDEwMTcsNjcsMTE0MjgsNjcsNTA4Nyw2Nyw0MjIwMiw2Nyw2NjIxMCw2Nyw2NjMwNiw2Nyw2NjU4MSw2Nyw2Njg0NCw2Nyw4NTc0LDEwMCw4NTE4LDEwMCwxMTk4MzcsMTAwLDExOTg4OSwxMDAsMTE5OTQxLDEwMCwxMTk5OTMsMTAwLDEyMDA0NSwxMDAsMTIwMDk3LDEwMCwxMjAxNDksMTAwLDEyMDIwMSwxMDAsMTIwMjUzLDEwMCwxMjAzMDUsMTAwLDEyMDM1NywxMDAsMTIwNDA5LDEwMCwxMjA0NjEsMTAwLDEyODEsMTAwLDUwOTUsMTAwLDUyMzEsMTAwLDQyMTk0LDEwMCw4NTU4LDY4LDg1MTcsNjgsMTE5ODExLDY4LDExOTg2Myw2OCwxMTk5MTUsNjgsMTE5OTY3LDY4LDEyMDAxOSw2OCwxMjAwNzEsNjgsMTIwMTIzLDY4LDEyMDE3NSw2OCwxMjAyMjcsNjgsMTIwMjc5LDY4LDEyMDMzMSw2OCwxMjAzODMsNjgsMTIwNDM1LDY4LDUwMjQsNjgsNTU5OCw2OCw1NjEwLDY4LDQyMTk1LDY4LDg0OTQsMTAxLDY1MzQ5LDEwMSw4NDk1LDEwMSw4NTE5LDEwMSwxMTk4MzgsMTAxLDExOTg5MCwxMDEsMTE5OTQyLDEwMSwxMjAwNDYsMTAxLDEyMDA5OCwxMDEsMTIwMTUwLDEwMSwxMjAyMDIsMTAxLDEyMDI1NCwxMDEsMTIwMzA2LDEwMSwxMjAzNTgsMTAxLDEyMDQxMCwxMDEsMTIwNDYyLDEwMSw0MzgyNiwxMDEsMTIxMywxMDEsODk1OSw2OSw2NTMxNyw2OSw4NDk2LDY5LDExOTgxMiw2OSwxMTk4NjQsNjksMTE5OTE2LDY5LDEyMDAyMCw2OSwxMjAwNzIsNjksMTIwMTI0LDY5LDEyMDE3Niw2OSwxMjAyMjgsNjksMTIwMjgwLDY5LDEyMDMzMiw2OSwxMjAzODQsNjksMTIwNDM2LDY5LDkxNyw2OSwxMjA0OTIsNjksMTIwNTUwLDY5LDEyMDYwOCw2OSwxMjA2NjYsNjksMTIwNzI0LDY5LDExNTc3LDY5LDUwMzYsNjksNDIyMjQsNjksNzE4NDYsNjksNzE4NTQsNjksNjYxODIsNjksMTE5ODM5LDEwMiwxMTk4OTEsMTAyLDExOTk0MywxMDIsMTE5OTk1LDEwMiwxMjAwNDcsMTAyLDEyMDA5OSwxMDIsMTIwMTUxLDEwMiwxMjAyMDMsMTAyLDEyMDI1NSwxMDIsMTIwMzA3LDEwMiwxMjAzNTksMTAyLDEyMDQxMSwxMDIsMTIwNDYzLDEwMiw0MzgyOSwxMDIsNDI5MDUsMTAyLDM4MywxMDIsNzgzNywxMDIsMTQxMiwxMDIsMTE5MzE1LDcwLDg0OTcsNzAsMTE5ODEzLDcwLDExOTg2NSw3MCwxMTk5MTcsNzAsMTIwMDIxLDcwLDEyMDA3Myw3MCwxMjAxMjUsNzAsMTIwMTc3LDcwLDEyMDIyOSw3MCwxMjAyODEsNzAsMTIwMzMzLDcwLDEyMDM4NSw3MCwxMjA0MzcsNzAsNDI5MDQsNzAsOTg4LDcwLDEyMDc3OCw3MCw1NTU2LDcwLDQyMjA1LDcwLDcxODc0LDcwLDcxODQyLDcwLDY2MTgzLDcwLDY2MjEzLDcwLDY2ODUzLDcwLDY1MzUxLDEwMyw4NDU4LDEwMywxMTk4NDAsMTAzLDExOTg5MiwxMDMsMTE5OTQ0LDEwMywxMjAwNDgsMTAzLDEyMDEwMCwxMDMsMTIwMTUyLDEwMywxMjAyMDQsMTAzLDEyMDI1NiwxMDMsMTIwMzA4LDEwMywxMjAzNjAsMTAzLDEyMDQxMiwxMDMsMTIwNDY0LDEwMyw2MDksMTAzLDc1NTUsMTAzLDM5NywxMDMsMTQwOSwxMDMsMTE5ODE0LDcxLDExOTg2Niw3MSwxMTk5MTgsNzEsMTE5OTcwLDcxLDEyMDAyMiw3MSwxMjAwNzQsNzEsMTIwMTI2LDcxLDEyMDE3OCw3MSwxMjAyMzAsNzEsMTIwMjgyLDcxLDEyMDMzNCw3MSwxMjAzODYsNzEsMTIwNDM4LDcxLDEyOTIsNzEsNTA1Niw3MSw1MTA3LDcxLDQyMTk4LDcxLDY1MzUyLDEwNCw4NDYyLDEwNCwxMTk4NDEsMTA0LDExOTk0NSwxMDQsMTE5OTk3LDEwNCwxMjAwNDksMTA0LDEyMDEwMSwxMDQsMTIwMTUzLDEwNCwxMjAyMDUsMTA0LDEyMDI1NywxMDQsMTIwMzA5LDEwNCwxMjAzNjEsMTA0LDEyMDQxMywxMDQsMTIwNDY1LDEwNCwxMjExLDEwNCwxMzkyLDEwNCw1MDU4LDEwNCw2NTMyMCw3Miw4NDU5LDcyLDg0NjAsNzIsODQ2MSw3MiwxMTk4MTUsNzIsMTE5ODY3LDcyLDExOTkxOSw3MiwxMjAwMjMsNzIsMTIwMTc5LDcyLDEyMDIzMSw3MiwxMjAyODMsNzIsMTIwMzM1LDcyLDEyMDM4Nyw3MiwxMjA0MzksNzIsOTE5LDcyLDEyMDQ5NCw3MiwxMjA1NTIsNzIsMTIwNjEwLDcyLDEyMDY2OCw3MiwxMjA3MjYsNzIsMTE0MDYsNzIsNTA1MSw3Miw1NTAwLDcyLDQyMjE1LDcyLDY2MjU1LDcyLDczMSwxMDUsOTA3NSwxMDUsNjUzNTMsMTA1LDg1NjAsMTA1LDg1MDUsMTA1LDg1MjAsMTA1LDExOTg0MiwxMDUsMTE5ODk0LDEwNSwxMTk5NDYsMTA1LDExOTk5OCwxMDUsMTIwMDUwLDEwNSwxMjAxMDIsMTA1LDEyMDE1NCwxMDUsMTIwMjA2LDEwNSwxMjAyNTgsMTA1LDEyMDMxMCwxMDUsMTIwMzYyLDEwNSwxMjA0MTQsMTA1LDEyMDQ2NiwxMDUsMTIwNDg0LDEwNSw2MTgsMTA1LDYxNywxMDUsOTUzLDEwNSw4MTI2LDEwNSw4OTAsMTA1LDEyMDUyMiwxMDUsMTIwNTgwLDEwNSwxMjA2MzgsMTA1LDEyMDY5NiwxMDUsMTIwNzU0LDEwNSwxMTEwLDEwNSw0MjU2NywxMDUsMTIzMSwxMDUsNDM4OTMsMTA1LDUwMjksMTA1LDcxODc1LDEwNSw2NTM1NCwxMDYsODUyMSwxMDYsMTE5ODQzLDEwNiwxMTk4OTUsMTA2LDExOTk0NywxMDYsMTE5OTk5LDEwNiwxMjAwNTEsMTA2LDEyMDEwMywxMDYsMTIwMTU1LDEwNiwxMjAyMDcsMTA2LDEyMDI1OSwxMDYsMTIwMzExLDEwNiwxMjAzNjMsMTA2LDEyMDQxNSwxMDYsMTIwNDY3LDEwNiwxMDExLDEwNiwxMTEyLDEwNiw2NTMyMiw3NCwxMTk4MTcsNzQsMTE5ODY5LDc0LDExOTkyMSw3NCwxMTk5NzMsNzQsMTIwMDI1LDc0LDEyMDA3Nyw3NCwxMjAxMjksNzQsMTIwMTgxLDc0LDEyMDIzMyw3NCwxMjAyODUsNzQsMTIwMzM3LDc0LDEyMDM4OSw3NCwxMjA0NDEsNzQsNDI5MzAsNzQsODk1LDc0LDEwMzIsNzQsNTAzNSw3NCw1MjYxLDc0LDQyMjAxLDc0LDExOTg0NCwxMDcsMTE5ODk2LDEwNywxMTk5NDgsMTA3LDEyMDAwMCwxMDcsMTIwMDUyLDEwNywxMjAxMDQsMTA3LDEyMDE1NiwxMDcsMTIwMjA4LDEwNywxMjAyNjAsMTA3LDEyMDMxMiwxMDcsMTIwMzY0LDEwNywxMjA0MTYsMTA3LDEyMDQ2OCwxMDcsODQ5MCw3NSw2NTMyMyw3NSwxMTk4MTgsNzUsMTE5ODcwLDc1LDExOTkyMiw3NSwxMTk5NzQsNzUsMTIwMDI2LDc1LDEyMDA3OCw3NSwxMjAxMzAsNzUsMTIwMTgyLDc1LDEyMDIzNCw3NSwxMjAyODYsNzUsMTIwMzM4LDc1LDEyMDM5MCw3NSwxMjA0NDIsNzUsOTIyLDc1LDEyMDQ5Nyw3NSwxMjA1NTUsNzUsMTIwNjEzLDc1LDEyMDY3MSw3NSwxMjA3MjksNzUsMTE0MTIsNzUsNTA5NCw3NSw1ODQ1LDc1LDQyMTk5LDc1LDY2ODQwLDc1LDE0NzIsMTA4LDg3MzksNzMsOTIxMyw3Myw2NTUxMiw3MywxNjMzLDEwOCwxNzc3LDczLDY2MzM2LDEwOCwxMjUxMjcsMTA4LDEyMDc4Myw3MywxMjA3OTMsNzMsMTIwODAzLDczLDEyMDgxMyw3MywxMjA4MjMsNzMsMTMwMDMzLDczLDY1MzIxLDczLDg1NDQsNzMsODQ2NCw3Myw4NDY1LDczLDExOTgxNiw3MywxMTk4NjgsNzMsMTE5OTIwLDczLDEyMDAyNCw3MywxMjAxMjgsNzMsMTIwMTgwLDczLDEyMDIzMiw3MywxMjAyODQsNzMsMTIwMzM2LDczLDEyMDM4OCw3MywxMjA0NDAsNzMsNjUzNTYsMTA4LDg1NzIsNzMsODQ2NywxMDgsMTE5ODQ1LDEwOCwxMTk4OTcsMTA4LDExOTk0OSwxMDgsMTIwMDAxLDEwOCwxMjAwNTMsMTA4LDEyMDEwNSw3MywxMjAxNTcsNzMsMTIwMjA5LDczLDEyMDI2MSw3MywxMjAzMTMsNzMsMTIwMzY1LDczLDEyMDQxNyw3MywxMjA0NjksNzMsNDQ4LDczLDEyMDQ5Niw3MywxMjA1NTQsNzMsMTIwNjEyLDczLDEyMDY3MCw3MywxMjA3MjgsNzMsMTE0MTAsNzMsMTAzMCw3MywxMjE2LDczLDE0OTMsMTA4LDE1MDMsMTA4LDE1NzUsMTA4LDEyNjQ2NCwxMDgsMTI2NTkyLDEwOCw2NTE2NiwxMDgsNjUxNjUsMTA4LDE5OTQsMTA4LDExNTk5LDczLDU4MjUsNzMsNDIyMjYsNzMsOTM5OTIsNzMsNjYxODYsMTI0LDY2MzEzLDEyNCwxMTkzMzgsNzYsODU1Niw3Niw4NDY2LDc2LDExOTgxOSw3NiwxMTk4NzEsNzYsMTE5OTIzLDc2LDEyMDAyNyw3NiwxMjAwNzksNzYsMTIwMTMxLDc2LDEyMDE4Myw3NiwxMjAyMzUsNzYsMTIwMjg3LDc2LDEyMDMzOSw3NiwxMjAzOTEsNzYsMTIwNDQzLDc2LDExNDcyLDc2LDUwODYsNzYsNTI5MCw3Niw0MjIwOSw3Niw5Mzk3NCw3Niw3MTg0Myw3Niw3MTg1OCw3Niw2NjU4Nyw3Niw2Njg1NCw3Niw2NTMyNSw3Nyw4NTU5LDc3LDg0OTksNzcsMTE5ODIwLDc3LDExOTg3Miw3NywxMTk5MjQsNzcsMTIwMDI4LDc3LDEyMDA4MCw3NywxMjAxMzIsNzcsMTIwMTg0LDc3LDEyMDIzNiw3NywxMjAyODgsNzcsMTIwMzQwLDc3LDEyMDM5Miw3NywxMjA0NDQsNzcsOTI0LDc3LDEyMDQ5OSw3NywxMjA1NTcsNzcsMTIwNjE1LDc3LDEyMDY3Myw3NywxMjA3MzEsNzcsMTAxOCw3NywxMTQxNiw3Nyw1MDQ3LDc3LDU2MTYsNzcsNTg0Niw3Nyw0MjIwNyw3Nyw2NjIyNCw3Nyw2NjMyMSw3NywxMTk4NDcsMTEwLDExOTg5OSwxMTAsMTE5OTUxLDExMCwxMjAwMDMsMTEwLDEyMDA1NSwxMTAsMTIwMTA3LDExMCwxMjAxNTksMTEwLDEyMDIxMSwxMTAsMTIwMjYzLDExMCwxMjAzMTUsMTEwLDEyMDM2NywxMTAsMTIwNDE5LDExMCwxMjA0NzEsMTEwLDE0MDAsMTEwLDE0MDQsMTEwLDY1MzI2LDc4LDg0NjksNzgsMTE5ODIxLDc4LDExOTg3Myw3OCwxMTk5MjUsNzgsMTE5OTc3LDc4LDEyMDAyOSw3OCwxMjAwODEsNzgsMTIwMTg1LDc4LDEyMDIzNyw3OCwxMjAyODksNzgsMTIwMzQxLDc4LDEyMDM5Myw3OCwxMjA0NDUsNzgsOTI1LDc4LDEyMDUwMCw3OCwxMjA1NTgsNzgsMTIwNjE2LDc4LDEyMDY3NCw3OCwxMjA3MzIsNzgsMTE0MTgsNzgsNDIyMDgsNzgsNjY4MzUsNzgsMzA3NCwxMTEsMzIwMiwxMTEsMzMzMCwxMTEsMzQ1OCwxMTEsMjQwNiwxMTEsMjY2MiwxMTEsMjc5MCwxMTEsMzA0NiwxMTEsMzE3NCwxMTEsMzMwMiwxMTEsMzQzMCwxMTEsMzY2NCwxMTEsMzc5MiwxMTEsNDE2MCwxMTEsMTYzNywxMTEsMTc4MSwxMTEsNjUzNTksMTExLDg1MDAsMTExLDExOTg0OCwxMTEsMTE5OTAwLDExMSwxMTk5NTIsMTExLDEyMDA1NiwxMTEsMTIwMTA4LDExMSwxMjAxNjAsMTExLDEyMDIxMiwxMTEsMTIwMjY0LDExMSwxMjAzMTYsMTExLDEyMDM2OCwxMTEsMTIwNDIwLDExMSwxMjA0NzIsMTExLDc0MzksMTExLDc0NDEsMTExLDQzODM3LDExMSw5NTksMTExLDEyMDUyOCwxMTEsMTIwNTg2LDExMSwxMjA2NDQsMTExLDEyMDcwMiwxMTEsMTIwNzYwLDExMSw5NjMsMTExLDEyMDUzMiwxMTEsMTIwNTkwLDExMSwxMjA2NDgsMTExLDEyMDcwNiwxMTEsMTIwNzY0LDExMSwxMTQyMywxMTEsNDM1MSwxMTEsMTQxMywxMTEsMTUwNSwxMTEsMTYwNywxMTEsMTI2NTAwLDExMSwxMjY1NjQsMTExLDEyNjU5NiwxMTEsNjUyNTksMTExLDY1MjYwLDExMSw2NTI1OCwxMTEsNjUyNTcsMTExLDE3MjYsMTExLDY0NDI4LDExMSw2NDQyOSwxMTEsNjQ0MjcsMTExLDY0NDI2LDExMSwxNzI5LDExMSw2NDQyNCwxMTEsNjQ0MjUsMTExLDY0NDIzLDExMSw2NDQyMiwxMTEsMTc0OSwxMTEsMzM2MCwxMTEsNDEyNSwxMTEsNjY3OTQsMTExLDcxODgwLDExMSw3MTg5NSwxMTEsNjY2MDQsMTExLDE5ODQsNzksMjUzNCw3OSwyOTE4LDc5LDEyMjk1LDc5LDcwODY0LDc5LDcxOTA0LDc5LDEyMDc4Miw3OSwxMjA3OTIsNzksMTIwODAyLDc5LDEyMDgxMiw3OSwxMjA4MjIsNzksMTMwMDMyLDc5LDY1MzI3LDc5LDExOTgyMiw3OSwxMTk4NzQsNzksMTE5OTI2LDc5LDExOTk3OCw3OSwxMjAwMzAsNzksMTIwMDgyLDc5LDEyMDEzNCw3OSwxMjAxODYsNzksMTIwMjM4LDc5LDEyMDI5MCw3OSwxMjAzNDIsNzksMTIwMzk0LDc5LDEyMDQ0Niw3OSw5MjcsNzksMTIwNTAyLDc5LDEyMDU2MCw3OSwxMjA2MTgsNzksMTIwNjc2LDc5LDEyMDczNCw3OSwxMTQyMiw3OSwxMzY1LDc5LDExNjA0LDc5LDQ4MTYsNzksMjg0OCw3OSw2Njc1NCw3OSw0MjIyNyw3OSw3MTg2MSw3OSw2NjE5NCw3OSw2NjIxOSw3OSw2NjU2NCw3OSw2NjgzOCw3OSw5MDc2LDExMiw2NTM2MCwxMTIsMTE5ODQ5LDExMiwxMTk5MDEsMTEyLDExOTk1MywxMTIsMTIwMDA1LDExMiwxMjAwNTcsMTEyLDEyMDEwOSwxMTIsMTIwMTYxLDExMiwxMjAyMTMsMTEyLDEyMDI2NSwxMTIsMTIwMzE3LDExMiwxMjAzNjksMTEyLDEyMDQyMSwxMTIsMTIwNDczLDExMiw5NjEsMTEyLDEyMDUzMCwxMTIsMTIwNTQ0LDExMiwxMjA1ODgsMTEyLDEyMDYwMiwxMTIsMTIwNjQ2LDExMiwxMjA2NjAsMTEyLDEyMDcwNCwxMTIsMTIwNzE4LDExMiwxMjA3NjIsMTEyLDEyMDc3NiwxMTIsMTE0MjcsMTEyLDY1MzI4LDgwLDg0NzMsODAsMTE5ODIzLDgwLDExOTg3NSw4MCwxMTk5MjcsODAsMTE5OTc5LDgwLDEyMDAzMSw4MCwxMjAwODMsODAsMTIwMTg3LDgwLDEyMDIzOSw4MCwxMjAyOTEsODAsMTIwMzQzLDgwLDEyMDM5NSw4MCwxMjA0NDcsODAsOTI5LDgwLDEyMDUwNCw4MCwxMjA1NjIsODAsMTIwNjIwLDgwLDEyMDY3OCw4MCwxMjA3MzYsODAsMTE0MjYsODAsNTA5MCw4MCw1MjI5LDgwLDQyMTkzLDgwLDY2MTk3LDgwLDExOTg1MCwxMTMsMTE5OTAyLDExMywxMTk5NTQsMTEzLDEyMDAwNiwxMTMsMTIwMDU4LDExMywxMjAxMTAsMTEzLDEyMDE2MiwxMTMsMTIwMjE0LDExMywxMjAyNjYsMTEzLDEyMDMxOCwxMTMsMTIwMzcwLDExMywxMjA0MjIsMTEzLDEyMDQ3NCwxMTMsMTMwNywxMTMsMTM3OSwxMTMsMTM4MiwxMTMsODQ3NCw4MSwxMTk4MjQsODEsMTE5ODc2LDgxLDExOTkyOCw4MSwxMTk5ODAsODEsMTIwMDMyLDgxLDEyMDA4NCw4MSwxMjAxODgsODEsMTIwMjQwLDgxLDEyMDI5Miw4MSwxMjAzNDQsODEsMTIwMzk2LDgxLDEyMDQ0OCw4MSwxMTYwNSw4MSwxMTk4NTEsMTE0LDExOTkwMywxMTQsMTE5OTU1LDExNCwxMjAwMDcsMTE0LDEyMDA1OSwxMTQsMTIwMTExLDExNCwxMjAxNjMsMTE0LDEyMDIxNSwxMTQsMTIwMjY3LDExNCwxMjAzMTksMTE0LDEyMDM3MSwxMTQsMTIwNDIzLDExNCwxMjA0NzUsMTE0LDQzODQ3LDExNCw0Mzg0OCwxMTQsNzQ2MiwxMTQsMTEzOTcsMTE0LDQzOTA1LDExNCwxMTkzMTgsODIsODQ3NSw4Miw4NDc2LDgyLDg0NzcsODIsMTE5ODI1LDgyLDExOTg3Nyw4MiwxMTk5MjksODIsMTIwMDMzLDgyLDEyMDE4OSw4MiwxMjAyNDEsODIsMTIwMjkzLDgyLDEyMDM0NSw4MiwxMjAzOTcsODIsMTIwNDQ5LDgyLDQyMiw4Miw1MDI1LDgyLDUwNzQsODIsNjY3NDAsODIsNTUxMSw4Miw0MjIxMSw4Miw5NDAwNSw4Miw2NTM2MywxMTUsMTE5ODUyLDExNSwxMTk5MDQsMTE1LDExOTk1NiwxMTUsMTIwMDA4LDExNSwxMjAwNjAsMTE1LDEyMDExMiwxMTUsMTIwMTY0LDExNSwxMjAyMTYsMTE1LDEyMDI2OCwxMTUsMTIwMzIwLDExNSwxMjAzNzIsMTE1LDEyMDQyNCwxMTUsMTIwNDc2LDExNSw0MjgwMSwxMTUsNDQ1LDExNSwxMTA5LDExNSw0Mzk0NiwxMTUsNzE4NzMsMTE1LDY2NjMyLDExNSw2NTMzMSw4MywxMTk4MjYsODMsMTE5ODc4LDgzLDExOTkzMCw4MywxMTk5ODIsODMsMTIwMDM0LDgzLDEyMDA4Niw4MywxMjAxMzgsODMsMTIwMTkwLDgzLDEyMDI0Miw4MywxMjAyOTQsODMsMTIwMzQ2LDgzLDEyMDM5OCw4MywxMjA0NTAsODMsMTAyOSw4MywxMzU5LDgzLDUwNzcsODMsNTA4Miw4Myw0MjIxMCw4Myw5NDAxMCw4Myw2NjE5OCw4Myw2NjU5Miw4MywxMTk4NTMsMTE2LDExOTkwNSwxMTYsMTE5OTU3LDExNiwxMjAwMDksMTE2LDEyMDA2MSwxMTYsMTIwMTEzLDExNiwxMjAxNjUsMTE2LDEyMDIxNywxMTYsMTIwMjY5LDExNiwxMjAzMjEsMTE2LDEyMDM3MywxMTYsMTIwNDI1LDExNiwxMjA0NzcsMTE2LDg4NjgsODQsMTAyMDEsODQsMTI4ODcyLDg0LDY1MzMyLDg0LDExOTgyNyw4NCwxMTk4NzksODQsMTE5OTMxLDg0LDExOTk4Myw4NCwxMjAwMzUsODQsMTIwMDg3LDg0LDEyMDEzOSw4NCwxMjAxOTEsODQsMTIwMjQzLDg0LDEyMDI5NSw4NCwxMjAzNDcsODQsMTIwMzk5LDg0LDEyMDQ1MSw4NCw5MzIsODQsMTIwNTA3LDg0LDEyMDU2NSw4NCwxMjA2MjMsODQsMTIwNjgxLDg0LDEyMDczOSw4NCwxMTQzMCw4NCw1MDI2LDg0LDQyMTk2LDg0LDkzOTYyLDg0LDcxODY4LDg0LDY2MTk5LDg0LDY2MjI1LDg0LDY2MzI1LDg0LDExOTg1NCwxMTcsMTE5OTA2LDExNywxMTk5NTgsMTE3LDEyMDAxMCwxMTcsMTIwMDYyLDExNywxMjAxMTQsMTE3LDEyMDE2NiwxMTcsMTIwMjE4LDExNywxMjAyNzAsMTE3LDEyMDMyMiwxMTcsMTIwMzc0LDExNywxMjA0MjYsMTE3LDEyMDQ3OCwxMTcsNDI5MTEsMTE3LDc0NTIsMTE3LDQzODU0LDExNyw0Mzg1OCwxMTcsNjUxLDExNyw5NjUsMTE3LDEyMDUzNCwxMTcsMTIwNTkyLDExNywxMjA2NTAsMTE3LDEyMDcwOCwxMTcsMTIwNzY2LDExNywxNDA1LDExNyw2NjgwNiwxMTcsNzE4OTYsMTE3LDg3NDYsODUsODg5OSw4NSwxMTk4MjgsODUsMTE5ODgwLDg1LDExOTkzMiw4NSwxMTk5ODQsODUsMTIwMDM2LDg1LDEyMDA4OCw4NSwxMjAxNDAsODUsMTIwMTkyLDg1LDEyMDI0NCw4NSwxMjAyOTYsODUsMTIwMzQ4LDg1LDEyMDQwMCw4NSwxMjA0NTIsODUsMTM1Nyw4NSw0NjA4LDg1LDY2NzY2LDg1LDUxOTYsODUsNDIyMjgsODUsOTQwMTgsODUsNzE4NjQsODUsODc0NCwxMTgsODg5NywxMTgsNjUzNjYsMTE4LDg1NjQsMTE4LDExOTg1NSwxMTgsMTE5OTA3LDExOCwxMTk5NTksMTE4LDEyMDAxMSwxMTgsMTIwMDYzLDExOCwxMjAxMTUsMTE4LDEyMDE2NywxMTgsMTIwMjE5LDExOCwxMjAyNzEsMTE4LDEyMDMyMywxMTgsMTIwMzc1LDExOCwxMjA0MjcsMTE4LDEyMDQ3OSwxMTgsNzQ1NiwxMTgsOTU3LDExOCwxMjA1MjYsMTE4LDEyMDU4NCwxMTgsMTIwNjQyLDExOCwxMjA3MDAsMTE4LDEyMDc1OCwxMTgsMTE0MSwxMTgsMTQ5NiwxMTgsNzE0MzAsMTE4LDQzOTQ1LDExOCw3MTg3MiwxMTgsMTE5MzA5LDg2LDE2MzksODYsMTc4Myw4Niw4NTQ4LDg2LDExOTgyOSw4NiwxMTk4ODEsODYsMTE5OTMzLDg2LDExOTk4NSw4NiwxMjAwMzcsODYsMTIwMDg5LDg2LDEyMDE0MSw4NiwxMjAxOTMsODYsMTIwMjQ1LDg2LDEyMDI5Nyw4NiwxMjAzNDksODYsMTIwNDAxLDg2LDEyMDQ1Myw4NiwxMTQwLDg2LDExNTc2LDg2LDUwODEsODYsNTE2Nyw4Niw0MjcxOSw4Niw0MjIxNCw4Niw5Mzk2MCw4Niw3MTg0MCw4Niw2Njg0NSw4Niw2MjMsMTE5LDExOTg1NiwxMTksMTE5OTA4LDExOSwxMTk5NjAsMTE5LDEyMDAxMiwxMTksMTIwMDY0LDExOSwxMjAxMTYsMTE5LDEyMDE2OCwxMTksMTIwMjIwLDExOSwxMjAyNzIsMTE5LDEyMDMyNCwxMTksMTIwMzc2LDExOSwxMjA0MjgsMTE5LDEyMDQ4MCwxMTksNzQ1NywxMTksMTEyMSwxMTksMTMwOSwxMTksMTM3NywxMTksNzE0MzQsMTE5LDcxNDM4LDExOSw3MTQzOSwxMTksNDM5MDcsMTE5LDcxOTE5LDg3LDcxOTEwLDg3LDExOTgzMCw4NywxMTk4ODIsODcsMTE5OTM0LDg3LDExOTk4Niw4NywxMjAwMzgsODcsMTIwMDkwLDg3LDEyMDE0Miw4NywxMjAxOTQsODcsMTIwMjQ2LDg3LDEyMDI5OCw4NywxMjAzNTAsODcsMTIwNDAyLDg3LDEyMDQ1NCw4NywxMzA4LDg3LDUwNDMsODcsNTA3Niw4Nyw0MjIxOCw4Nyw1NzQyLDEyMCwxMDUzOSwxMjAsMTA1NDAsMTIwLDEwNzk5LDEyMCw2NTM2OCwxMjAsODU2OSwxMjAsMTE5ODU3LDEyMCwxMTk5MDksMTIwLDExOTk2MSwxMjAsMTIwMDEzLDEyMCwxMjAwNjUsMTIwLDEyMDExNywxMjAsMTIwMTY5LDEyMCwxMjAyMjEsMTIwLDEyMDI3MywxMjAsMTIwMzI1LDEyMCwxMjAzNzcsMTIwLDEyMDQyOSwxMjAsMTIwNDgxLDEyMCw1NDQxLDEyMCw1NTAxLDEyMCw1NzQxLDg4LDk1ODcsODgsNjYzMzgsODgsNzE5MTYsODgsNjUzMzYsODgsODU1Myw4OCwxMTk4MzEsODgsMTE5ODgzLDg4LDExOTkzNSw4OCwxMTk5ODcsODgsMTIwMDM5LDg4LDEyMDA5MSw4OCwxMjAxNDMsODgsMTIwMTk1LDg4LDEyMDI0Nyw4OCwxMjAyOTksODgsMTIwMzUxLDg4LDEyMDQwMyw4OCwxMjA0NTUsODgsNDI5MzEsODgsOTM1LDg4LDEyMDUxMCw4OCwxMjA1NjgsODgsMTIwNjI2LDg4LDEyMDY4NCw4OCwxMjA3NDIsODgsMTE0MzYsODgsMTE2MTMsODgsNTgxNSw4OCw0MjIxOSw4OCw2NjE5Miw4OCw2NjIyOCw4OCw2NjMyNyw4OCw2Njg1NSw4OCw2MTEsMTIxLDc1NjQsMTIxLDY1MzY5LDEyMSwxMTk4NTgsMTIxLDExOTkxMCwxMjEsMTE5OTYyLDEyMSwxMjAwMTQsMTIxLDEyMDA2NiwxMjEsMTIwMTE4LDEyMSwxMjAxNzAsMTIxLDEyMDIyMiwxMjEsMTIwMjc0LDEyMSwxMjAzMjYsMTIxLDEyMDM3OCwxMjEsMTIwNDMwLDEyMSwxMjA0ODIsMTIxLDY1NSwxMjEsNzkzNSwxMjEsNDM4NjYsMTIxLDk0NywxMjEsODUwOSwxMjEsMTIwNTE2LDEyMSwxMjA1NzQsMTIxLDEyMDYzMiwxMjEsMTIwNjkwLDEyMSwxMjA3NDgsMTIxLDExOTksMTIxLDQzMjcsMTIxLDcxOTAwLDEyMSw2NTMzNyw4OSwxMTk4MzIsODksMTE5ODg0LDg5LDExOTkzNiw4OSwxMTk5ODgsODksMTIwMDQwLDg5LDEyMDA5Miw4OSwxMjAxNDQsODksMTIwMTk2LDg5LDEyMDI0OCw4OSwxMjAzMDAsODksMTIwMzUyLDg5LDEyMDQwNCw4OSwxMjA0NTYsODksOTMzLDg5LDk3OCw4OSwxMjA1MDgsODksMTIwNTY2LDg5LDEyMDYyNCw4OSwxMjA2ODIsODksMTIwNzQwLDg5LDExNDMyLDg5LDExOTgsODksNTAzMyw4OSw1MDUzLDg5LDQyMjIwLDg5LDk0MDE5LDg5LDcxODQ0LDg5LDY2MjI2LDg5LDExOTg1OSwxMjIsMTE5OTExLDEyMiwxMTk5NjMsMTIyLDEyMDAxNSwxMjIsMTIwMDY3LDEyMiwxMjAxMTksMTIyLDEyMDE3MSwxMjIsMTIwMjIzLDEyMiwxMjAyNzUsMTIyLDEyMDMyNywxMjIsMTIwMzc5LDEyMiwxMjA0MzEsMTIyLDEyMDQ4MywxMjIsNzQ1OCwxMjIsNDM5MjMsMTIyLDcxODc2LDEyMiw2NjI5Myw5MCw3MTkwOSw5MCw2NTMzOCw5MCw4NDg0LDkwLDg0ODgsOTAsMTE5ODMzLDkwLDExOTg4NSw5MCwxMTk5MzcsOTAsMTE5OTg5LDkwLDEyMDA0MSw5MCwxMjAxOTcsOTAsMTIwMjQ5LDkwLDEyMDMwMSw5MCwxMjAzNTMsOTAsMTIwNDA1LDkwLDEyMDQ1Nyw5MCw5MTgsOTAsMTIwNDkzLDkwLDEyMDU1MSw5MCwxMjA2MDksOTAsMTIwNjY3LDkwLDEyMDcyNSw5MCw1MDU5LDkwLDQyMjA0LDkwLDcxODQ5LDkwLDY1MjgyLDM0LDY1Mjg0LDM2LDY1Mjg1LDM3LDY1Mjg2LDM4LDY1MjkwLDQyLDY1MjkxLDQzLDY1Mjk0LDQ2LDY1Mjk1LDQ3LDY1Mjk2LDQ4LDY1Mjk3LDQ5LDY1Mjk4LDUwLDY1Mjk5LDUxLDY1MzAwLDUyLDY1MzAxLDUzLDY1MzAyLDU0LDY1MzAzLDU1LDY1MzA0LDU2LDY1MzA1LDU3LDY1MzA4LDYwLDY1MzA5LDYxLDY1MzEwLDYyLDY1MzEyLDY0LDY1MzE2LDY4LDY1MzE4LDcwLDY1MzE5LDcxLDY1MzI0LDc2LDY1MzI5LDgxLDY1MzMwLDgyLDY1MzMzLDg1LDY1MzM0LDg2LDY1MzM1LDg3LDY1MzQzLDk1LDY1MzQ2LDk4LDY1MzQ4LDEwMCw2NTM1MCwxMDIsNjUzNTUsMTA3LDY1MzU3LDEwOSw2NTM1OCwxMTAsNjUzNjEsMTEzLDY1MzYyLDExNCw2NTM2NCwxMTYsNjUzNjUsMTE3LDY1MzY3LDExOSw2NTM3MCwxMjIsNjUzNzEsMTIzLDY1MzczLDEyNV0sIl9kZWZhdWx0IjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImNzIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJkZSI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiZXMiOls4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSwxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiZnIiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjQ1LDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiaXQiOlsxNjAsMzIsODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImphIjpbODIxMSw0NSw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyOTIsNDQsNjUzMDcsNTldLCJrbyI6WzgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicGwiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicHQtQlIiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicXBzLXBsb2MiOlsxNjAsMzIsODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicnUiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDMwNSwxMDUsOTIxLDczLDEwMDksMTEyLDIxNSwxMjAsNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJ0ciI6WzE2MCwzMiw4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJ6aC1oYW5zIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1Mjg4LDQwLDY1Mjg5LDQxXSwiemgtaGFudCI6WzgyMTEsNDUsNjUzNzQsMTI2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTMwNyw1OV19JykpKSxRLmNhY2hlPW5ldyBjbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLmZuPWUsdGhpcy5sYXN0Q2FjaGU9dm9pZCAwLHRoaXMubGFzdEFyZ0tleT12b2lkIDB9Z2V0KGUpe2NvbnN0IHQ9SlNPTi5zdHJpbmdpZnkoZSk7cmV0dXJuIHRoaXMubGFzdEFyZ0tleSE9PXQmJih0aGlzLmxhc3RBcmdLZXk9dCx0aGlzLmxhc3RDYWNoZT10aGlzLmZuKGUpKSx0aGlzLmxhc3RDYWNoZX19KChlPT57ZnVuY3Rpb24gdChlKXtjb25zdCB0PW5ldyBNYXA7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKz0yKXQuc2V0KGVbbl0sZVtuKzFdKTtyZXR1cm4gdH1mdW5jdGlvbiBuKGUsdCl7aWYoIWUpcmV0dXJuIHQ7Y29uc3Qgbj1uZXcgTWFwO2Zvcihjb25zdFtyLGldb2YgZSl0LmhhcyhyKSYmbi5zZXQocixpKTtyZXR1cm4gbn1jb25zdCByPUwuYW1iaWd1b3VzQ2hhcmFjdGVyRGF0YS5nZXRWYWx1ZSgpO2xldCBpLG89ZS5maWx0ZXIoKGU9PiFlLnN0YXJ0c1dpdGgoIl8iKSYmZSBpbiByKSk7MD09PW8ubGVuZ3RoJiYobz1bIl9kZWZhdWx0Il0pO2Zvcihjb25zdCBlIG9mIG8pe2k9bihpLHQocltlXSkpfWNvbnN0IHM9ZnVuY3Rpb24oZSx0KXtjb25zdCBuPW5ldyBNYXAoZSk7Zm9yKGNvbnN0W2Uscl1vZiB0KW4uc2V0KGUscik7cmV0dXJuIG59KHQoci5fY29tbW9uKSxpKTtyZXR1cm4gbmV3IFEocyl9KSksUS5fbG9jYWxlcz1uZXcgRygoKCk9Pk9iamVjdC5rZXlzKFEuYW1iaWd1b3VzQ2hhcmFjdGVyRGF0YS5nZXRWYWx1ZSgpKS5maWx0ZXIoKGU9PiFlLnN0YXJ0c1dpdGgoIl8iKSkpKSk7Y2xhc3MgZWV7c3RhdGljIGdldFJhd0RhdGEoKXtyZXR1cm4gSlNPTi5wYXJzZSgiWzksMTAsMTEsMTIsMTMsMzIsMTI3LDE2MCwxNzMsODQ3LDE1NjQsNDQ0Nyw0NDQ4LDYwNjgsNjA2OSw2MTU1LDYxNTYsNjE1Nyw2MTU4LDczNTUsNzM1Niw4MTkyLDgxOTMsODE5NCw4MTk1LDgxOTYsODE5Nyw4MTk4LDgxOTksODIwMCw4MjAxLDgyMDIsODIwMyw4MjA0LDgyMDUsODIwNiw4MjA3LDgyMzQsODIzNSw4MjM2LDgyMzcsODIzOCw4MjM5LDgyODcsODI4OCw4Mjg5LDgyOTAsODI5MSw4MjkyLDgyOTMsODI5NCw4Mjk1LDgyOTYsODI5Nyw4Mjk4LDgyOTksODMwMCw4MzAxLDgzMDIsODMwMywxMDI0MCwxMjI4OCwxMjY0NCw2NTAyNCw2NTAyNSw2NTAyNiw2NTAyNyw2NTAyOCw2NTAyOSw2NTAzMCw2NTAzMSw2NTAzMiw2NTAzMyw2NTAzNCw2NTAzNSw2NTAzNiw2NTAzNyw2NTAzOCw2NTAzOSw2NTI3OSw2NTQ0MCw2NTUyMCw2NTUyMSw2NTUyMiw2NTUyMyw2NTUyNCw2NTUyNSw2NTUyNiw2NTUyNyw2NTUyOCw2NTUzMiw3ODg0NCwxMTkxNTUsMTE5MTU2LDExOTE1NywxMTkxNTgsMTE5MTU5LDExOTE2MCwxMTkxNjEsMTE5MTYyLDkxNzUwNCw5MTc1MDUsOTE3NTA2LDkxNzUwNyw5MTc1MDgsOTE3NTA5LDkxNzUxMCw5MTc1MTEsOTE3NTEyLDkxNzUxMyw5MTc1MTQsOTE3NTE1LDkxNzUxNiw5MTc1MTcsOTE3NTE4LDkxNzUxOSw5MTc1MjAsOTE3NTIxLDkxNzUyMiw5MTc1MjMsOTE3NTI0LDkxNzUyNSw5MTc1MjYsOTE3NTI3LDkxNzUyOCw5MTc1MjksOTE3NTMwLDkxNzUzMSw5MTc1MzIsOTE3NTMzLDkxNzUzNCw5MTc1MzUsOTE3NTM2LDkxNzUzNyw5MTc1MzgsOTE3NTM5LDkxNzU0MCw5MTc1NDEsOTE3NTQyLDkxNzU0Myw5MTc1NDQsOTE3NTQ1LDkxNzU0Niw5MTc1NDcsOTE3NTQ4LDkxNzU0OSw5MTc1NTAsOTE3NTUxLDkxNzU1Miw5MTc1NTMsOTE3NTU0LDkxNzU1NSw5MTc1NTYsOTE3NTU3LDkxNzU1OCw5MTc1NTksOTE3NTYwLDkxNzU2MSw5MTc1NjIsOTE3NTYzLDkxNzU2NCw5MTc1NjUsOTE3NTY2LDkxNzU2Nyw5MTc1NjgsOTE3NTY5LDkxNzU3MCw5MTc1NzEsOTE3NTcyLDkxNzU3Myw5MTc1NzQsOTE3NTc1LDkxNzU3Niw5MTc1NzcsOTE3NTc4LDkxNzU3OSw5MTc1ODAsOTE3NTgxLDkxNzU4Miw5MTc1ODMsOTE3NTg0LDkxNzU4NSw5MTc1ODYsOTE3NTg3LDkxNzU4OCw5MTc1ODksOTE3NTkwLDkxNzU5MSw5MTc1OTIsOTE3NTkzLDkxNzU5NCw5MTc1OTUsOTE3NTk2LDkxNzU5Nyw5MTc1OTgsOTE3NTk5LDkxNzYwMCw5MTc2MDEsOTE3NjAyLDkxNzYwMyw5MTc2MDQsOTE3NjA1LDkxNzYwNiw5MTc2MDcsOTE3NjA4LDkxNzYwOSw5MTc2MTAsOTE3NjExLDkxNzYxMiw5MTc2MTMsOTE3NjE0LDkxNzYxNSw5MTc2MTYsOTE3NjE3LDkxNzYxOCw5MTc2MTksOTE3NjIwLDkxNzYyMSw5MTc2MjIsOTE3NjIzLDkxNzYyNCw5MTc2MjUsOTE3NjI2LDkxNzYyNyw5MTc2MjgsOTE3NjI5LDkxNzYzMCw5MTc2MzEsOTE3NzYwLDkxNzc2MSw5MTc3NjIsOTE3NzYzLDkxNzc2NCw5MTc3NjUsOTE3NzY2LDkxNzc2Nyw5MTc3NjgsOTE3NzY5LDkxNzc3MCw5MTc3NzEsOTE3NzcyLDkxNzc3Myw5MTc3NzQsOTE3Nzc1LDkxNzc3Niw5MTc3NzcsOTE3Nzc4LDkxNzc3OSw5MTc3ODAsOTE3NzgxLDkxNzc4Miw5MTc3ODMsOTE3Nzg0LDkxNzc4NSw5MTc3ODYsOTE3Nzg3LDkxNzc4OCw5MTc3ODksOTE3NzkwLDkxNzc5MSw5MTc3OTIsOTE3NzkzLDkxNzc5NCw5MTc3OTUsOTE3Nzk2LDkxNzc5Nyw5MTc3OTgsOTE3Nzk5LDkxNzgwMCw5MTc4MDEsOTE3ODAyLDkxNzgwMyw5MTc4MDQsOTE3ODA1LDkxNzgwNiw5MTc4MDcsOTE3ODA4LDkxNzgwOSw5MTc4MTAsOTE3ODExLDkxNzgxMiw5MTc4MTMsOTE3ODE0LDkxNzgxNSw5MTc4MTYsOTE3ODE3LDkxNzgxOCw5MTc4MTksOTE3ODIwLDkxNzgyMSw5MTc4MjIsOTE3ODIzLDkxNzgyNCw5MTc4MjUsOTE3ODI2LDkxNzgyNyw5MTc4MjgsOTE3ODI5LDkxNzgzMCw5MTc4MzEsOTE3ODMyLDkxNzgzMyw5MTc4MzQsOTE3ODM1LDkxNzgzNiw5MTc4MzcsOTE3ODM4LDkxNzgzOSw5MTc4NDAsOTE3ODQxLDkxNzg0Miw5MTc4NDMsOTE3ODQ0LDkxNzg0NSw5MTc4NDYsOTE3ODQ3LDkxNzg0OCw5MTc4NDksOTE3ODUwLDkxNzg1MSw5MTc4NTIsOTE3ODUzLDkxNzg1NCw5MTc4NTUsOTE3ODU2LDkxNzg1Nyw5MTc4NTgsOTE3ODU5LDkxNzg2MCw5MTc4NjEsOTE3ODYyLDkxNzg2Myw5MTc4NjQsOTE3ODY1LDkxNzg2Niw5MTc4NjcsOTE3ODY4LDkxNzg2OSw5MTc4NzAsOTE3ODcxLDkxNzg3Miw5MTc4NzMsOTE3ODc0LDkxNzg3NSw5MTc4NzYsOTE3ODc3LDkxNzg3OCw5MTc4NzksOTE3ODgwLDkxNzg4MSw5MTc4ODIsOTE3ODgzLDkxNzg4NCw5MTc4ODUsOTE3ODg2LDkxNzg4Nyw5MTc4ODgsOTE3ODg5LDkxNzg5MCw5MTc4OTEsOTE3ODkyLDkxNzg5Myw5MTc4OTQsOTE3ODk1LDkxNzg5Niw5MTc4OTcsOTE3ODk4LDkxNzg5OSw5MTc5MDAsOTE3OTAxLDkxNzkwMiw5MTc5MDMsOTE3OTA0LDkxNzkwNSw5MTc5MDYsOTE3OTA3LDkxNzkwOCw5MTc5MDksOTE3OTEwLDkxNzkxMSw5MTc5MTIsOTE3OTEzLDkxNzkxNCw5MTc5MTUsOTE3OTE2LDkxNzkxNyw5MTc5MTgsOTE3OTE5LDkxNzkyMCw5MTc5MjEsOTE3OTIyLDkxNzkyMyw5MTc5MjQsOTE3OTI1LDkxNzkyNiw5MTc5MjcsOTE3OTI4LDkxNzkyOSw5MTc5MzAsOTE3OTMxLDkxNzkzMiw5MTc5MzMsOTE3OTM0LDkxNzkzNSw5MTc5MzYsOTE3OTM3LDkxNzkzOCw5MTc5MzksOTE3OTQwLDkxNzk0MSw5MTc5NDIsOTE3OTQzLDkxNzk0NCw5MTc5NDUsOTE3OTQ2LDkxNzk0Nyw5MTc5NDgsOTE3OTQ5LDkxNzk1MCw5MTc5NTEsOTE3OTUyLDkxNzk1Myw5MTc5NTQsOTE3OTU1LDkxNzk1Niw5MTc5NTcsOTE3OTU4LDkxNzk1OSw5MTc5NjAsOTE3OTYxLDkxNzk2Miw5MTc5NjMsOTE3OTY0LDkxNzk2NSw5MTc5NjYsOTE3OTY3LDkxNzk2OCw5MTc5NjksOTE3OTcwLDkxNzk3MSw5MTc5NzIsOTE3OTczLDkxNzk3NCw5MTc5NzUsOTE3OTc2LDkxNzk3Nyw5MTc5NzgsOTE3OTc5LDkxNzk4MCw5MTc5ODEsOTE3OTgyLDkxNzk4Myw5MTc5ODQsOTE3OTg1LDkxNzk4Niw5MTc5ODcsOTE3OTg4LDkxNzk4OSw5MTc5OTAsOTE3OTkxLDkxNzk5Miw5MTc5OTMsOTE3OTk0LDkxNzk5NSw5MTc5OTYsOTE3OTk3LDkxNzk5OCw5MTc5OTldIil9c3RhdGljIGdldERhdGEoKXtyZXR1cm4gdGhpcy5fZGF0YXx8KHRoaXMuX2RhdGE9bmV3IFNldChlZS5nZXRSYXdEYXRhKCkpKSx0aGlzLl9kYXRhfXN0YXRpYyBpc0ludmlzaWJsZUNoYXJhY3RlcihlKXtyZXR1cm4gZWUuZ2V0RGF0YSgpLmhhcyhlKX1zdGF0aWMgZ2V0IGNvZGVQb2ludHMoKXtyZXR1cm4gZWUuZ2V0RGF0YSgpfX1lZS5fZGF0YT12b2lkIDA7Y2xhc3MgdGV7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPXQsdGhpcy5tZXRob2Q9bix0aGlzLmFyZ3M9cix0aGlzLnR5cGU9MH19Y2xhc3MgbmV7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy52c1dvcmtlcj1lLHRoaXMuc2VxPXQsdGhpcy5yZXM9bix0aGlzLmVycj1yLHRoaXMudHlwZT0xfX1jbGFzcyByZXtjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9dCx0aGlzLmV2ZW50TmFtZT1uLHRoaXMuYXJnPXIsdGhpcy50eXBlPTJ9fWNsYXNzIGlle2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9dCx0aGlzLmV2ZW50PW4sdGhpcy50eXBlPTN9fWNsYXNzIG9le2NvbnN0cnVjdG9yKGUsdCl7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPXQsdGhpcy50eXBlPTR9fWNsYXNzIHNle2NvbnN0cnVjdG9yKGUpe3RoaXMuX3dvcmtlcklkPS0xLHRoaXMuX2hhbmRsZXI9ZSx0aGlzLl9sYXN0U2VudFJlcT0wLHRoaXMuX3BlbmRpbmdSZXBsaWVzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fcGVuZGluZ0VtaXR0ZXJzPW5ldyBNYXAsdGhpcy5fcGVuZGluZ0V2ZW50cz1uZXcgTWFwfXNldFdvcmtlcklkKGUpe3RoaXMuX3dvcmtlcklkPWV9c2VuZE1lc3NhZ2UoZSx0KXtjb25zdCBuPVN0cmluZygrK3RoaXMuX2xhc3RTZW50UmVxKTtyZXR1cm4gbmV3IFByb21pc2UoKChyLGkpPT57dGhpcy5fcGVuZGluZ1JlcGxpZXNbbl09e3Jlc29sdmU6cixyZWplY3Q6aX0sdGhpcy5fc2VuZChuZXcgdGUodGhpcy5fd29ya2VySWQsbixlLHQpKX0pKX1saXN0ZW4oZSx0KXtsZXQgbj1udWxsO2NvbnN0IHI9bmV3IEsoe29uRmlyc3RMaXN0ZW5lckFkZDooKT0+e249U3RyaW5nKCsrdGhpcy5fbGFzdFNlbnRSZXEpLHRoaXMuX3BlbmRpbmdFbWl0dGVycy5zZXQobixyKSx0aGlzLl9zZW5kKG5ldyByZSh0aGlzLl93b3JrZXJJZCxuLGUsdCkpfSxvbkxhc3RMaXN0ZW5lclJlbW92ZTooKT0+e3RoaXMuX3BlbmRpbmdFbWl0dGVycy5kZWxldGUobiksdGhpcy5fc2VuZChuZXcgb2UodGhpcy5fd29ya2VySWQsbikpLG49bnVsbH19KTtyZXR1cm4gci5ldmVudH1oYW5kbGVNZXNzYWdlKGUpe2UmJmUudnNXb3JrZXImJigtMSE9PXRoaXMuX3dvcmtlcklkJiZlLnZzV29ya2VyIT09dGhpcy5fd29ya2VySWR8fHRoaXMuX2hhbmRsZU1lc3NhZ2UoZSkpfV9oYW5kbGVNZXNzYWdlKGUpe3N3aXRjaChlLnR5cGUpe2Nhc2UgMTpyZXR1cm4gdGhpcy5faGFuZGxlUmVwbHlNZXNzYWdlKGUpO2Nhc2UgMDpyZXR1cm4gdGhpcy5faGFuZGxlUmVxdWVzdE1lc3NhZ2UoZSk7Y2FzZSAyOnJldHVybiB0aGlzLl9oYW5kbGVTdWJzY3JpYmVFdmVudE1lc3NhZ2UoZSk7Y2FzZSAzOnJldHVybiB0aGlzLl9oYW5kbGVFdmVudE1lc3NhZ2UoZSk7Y2FzZSA0OnJldHVybiB0aGlzLl9oYW5kbGVVbnN1YnNjcmliZUV2ZW50TWVzc2FnZShlKX19X2hhbmRsZVJlcGx5TWVzc2FnZShlKXtpZighdGhpcy5fcGVuZGluZ1JlcGxpZXNbZS5zZXFdKXJldHVybiB2b2lkIGNvbnNvbGUud2FybigiR290IHJlcGx5IHRvIHVua25vd24gc2VxIik7Y29uc3QgdD10aGlzLl9wZW5kaW5nUmVwbGllc1tlLnNlcV07aWYoZGVsZXRlIHRoaXMuX3BlbmRpbmdSZXBsaWVzW2Uuc2VxXSxlLmVycil7bGV0IG49ZS5lcnI7cmV0dXJuIGUuZXJyLiRpc0Vycm9yJiYobj1uZXcgRXJyb3Isbi5uYW1lPWUuZXJyLm5hbWUsbi5tZXNzYWdlPWUuZXJyLm1lc3NhZ2Usbi5zdGFjaz1lLmVyci5zdGFjayksdm9pZCB0LnJlamVjdChuKX10LnJlc29sdmUoZS5yZXMpfV9oYW5kbGVSZXF1ZXN0TWVzc2FnZShlKXtjb25zdCB0PWUucmVxO3RoaXMuX2hhbmRsZXIuaGFuZGxlTWVzc2FnZShlLm1ldGhvZCxlLmFyZ3MpLnRoZW4oKGU9Pnt0aGlzLl9zZW5kKG5ldyBuZSh0aGlzLl93b3JrZXJJZCx0LGUsdm9pZCAwKSl9KSwoZT0+e2UuZGV0YWlsIGluc3RhbmNlb2YgRXJyb3ImJihlLmRldGFpbD1uKGUuZGV0YWlsKSksdGhpcy5fc2VuZChuZXcgbmUodGhpcy5fd29ya2VySWQsdCx2b2lkIDAsbihlKSkpfSkpfV9oYW5kbGVTdWJzY3JpYmVFdmVudE1lc3NhZ2UoZSl7Y29uc3QgdD1lLnJlcSxuPXRoaXMuX2hhbmRsZXIuaGFuZGxlRXZlbnQoZS5ldmVudE5hbWUsZS5hcmcpKChlPT57dGhpcy5fc2VuZChuZXcgaWUodGhpcy5fd29ya2VySWQsdCxlKSl9KSk7dGhpcy5fcGVuZGluZ0V2ZW50cy5zZXQodCxuKX1faGFuZGxlRXZlbnRNZXNzYWdlKGUpe3RoaXMuX3BlbmRpbmdFbWl0dGVycy5oYXMoZS5yZXEpP3RoaXMuX3BlbmRpbmdFbWl0dGVycy5nZXQoZS5yZXEpLmZpcmUoZS5ldmVudCk6Y29uc29sZS53YXJuKCJHb3QgZXZlbnQgZm9yIHVua25vd24gcmVxIil9X2hhbmRsZVVuc3Vic2NyaWJlRXZlbnRNZXNzYWdlKGUpe3RoaXMuX3BlbmRpbmdFdmVudHMuaGFzKGUucmVxKT8odGhpcy5fcGVuZGluZ0V2ZW50cy5nZXQoZS5yZXEpLmRpc3Bvc2UoKSx0aGlzLl9wZW5kaW5nRXZlbnRzLmRlbGV0ZShlLnJlcSkpOmNvbnNvbGUud2FybigiR290IHVuc3Vic2NyaWJlIGZvciB1bmtub3duIHJlcSIpfV9zZW5kKGUpe2NvbnN0IHQ9W107aWYoMD09PWUudHlwZSlmb3IobGV0IG49MDtuPGUuYXJncy5sZW5ndGg7bisrKWUuYXJnc1tuXWluc3RhbmNlb2YgQXJyYXlCdWZmZXImJnQucHVzaChlLmFyZ3Nbbl0pO2Vsc2UgMT09PWUudHlwZSYmZS5yZXMgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmdC5wdXNoKGUucmVzKTt0aGlzLl9oYW5kbGVyLnNlbmRNZXNzYWdlKGUsdCl9fWZ1bmN0aW9uIGFlKGUpe3JldHVybiJvIj09PWVbMF0mJiJuIj09PWVbMV0mJkooZS5jaGFyQ29kZUF0KDIpKX1mdW5jdGlvbiBsZShlKXtyZXR1cm4vXm9uRHluYW1pYy8udGVzdChlKSYmSihlLmNoYXJDb2RlQXQoOSkpfWNsYXNzIGNle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5fcmVxdWVzdEhhbmRsZXJGYWN0b3J5PXQsdGhpcy5fcmVxdWVzdEhhbmRsZXI9bnVsbCx0aGlzLl9wcm90b2NvbD1uZXcgc2Uoe3NlbmRNZXNzYWdlOih0LG4pPT57ZSh0LG4pfSxoYW5kbGVNZXNzYWdlOihlLHQpPT50aGlzLl9oYW5kbGVNZXNzYWdlKGUsdCksaGFuZGxlRXZlbnQ6KGUsdCk9PnRoaXMuX2hhbmRsZUV2ZW50KGUsdCl9KX1vbm1lc3NhZ2UoZSl7dGhpcy5fcHJvdG9jb2wuaGFuZGxlTWVzc2FnZShlKX1faGFuZGxlTWVzc2FnZShlLHQpe2lmKCIkaW5pdGlhbGl6ZSI9PT1lKXJldHVybiB0aGlzLmluaXRpYWxpemUodFswXSx0WzFdLHRbMl0sdFszXSk7aWYoIXRoaXMuX3JlcXVlc3RIYW5kbGVyfHwiZnVuY3Rpb24iIT10eXBlb2YgdGhpcy5fcmVxdWVzdEhhbmRsZXJbZV0pcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcigiTWlzc2luZyByZXF1ZXN0SGFuZGxlciBvciBtZXRob2Q6ICIrZSkpO3RyeXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX3JlcXVlc3RIYW5kbGVyW2VdLmFwcGx5KHRoaXMuX3JlcXVlc3RIYW5kbGVyLHQpKX1jYXRjaChlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9fV9oYW5kbGVFdmVudChlLHQpe2lmKCF0aGlzLl9yZXF1ZXN0SGFuZGxlcil0aHJvdyBuZXcgRXJyb3IoIk1pc3NpbmcgcmVxdWVzdEhhbmRsZXIiKTtpZihsZShlKSl7Y29uc3Qgbj10aGlzLl9yZXF1ZXN0SGFuZGxlcltlXS5jYWxsKHRoaXMuX3JlcXVlc3RIYW5kbGVyLHQpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcihgTWlzc2luZyBkeW5hbWljIGV2ZW50ICR7ZX0gb24gcmVxdWVzdCBoYW5kbGVyLmApO3JldHVybiBufWlmKGFlKGUpKXtjb25zdCB0PXRoaXMuX3JlcXVlc3RIYW5kbGVyW2VdO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcihgTWlzc2luZyBldmVudCAke2V9IG9uIHJlcXVlc3QgaGFuZGxlci5gKTtyZXR1cm4gdH10aHJvdyBuZXcgRXJyb3IoYE1hbGZvcm1lZCBldmVudCBuYW1lICR7ZX1gKX1pbml0aWFsaXplKGUsdCxuLHIpe3RoaXMuX3Byb3RvY29sLnNldFdvcmtlcklkKGUpO2NvbnN0IGk9ZnVuY3Rpb24oZSx0LG4pe2NvbnN0IHI9ZT0+ZnVuY3Rpb24oKXtjb25zdCBuPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gdChlLG4pfSxpPWU9PmZ1bmN0aW9uKHQpe3JldHVybiBuKGUsdCl9LG89e307Zm9yKGNvbnN0IHQgb2YgZSlsZSh0KT9vW3RdPWkodCk6YWUodCk/b1t0XT1uKHQsdm9pZCAwKTpvW3RdPXIodCk7cmV0dXJuIG99KHIsKChlLHQpPT50aGlzLl9wcm90b2NvbC5zZW5kTWVzc2FnZShlLHQpKSwoKGUsdCk9PnRoaXMuX3Byb3RvY29sLmxpc3RlbihlLHQpKSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RIYW5kbGVyRmFjdG9yeT8odGhpcy5fcmVxdWVzdEhhbmRsZXI9dGhpcy5fcmVxdWVzdEhhbmRsZXJGYWN0b3J5KGkpLFByb21pc2UucmVzb2x2ZSgkKHRoaXMuX3JlcXVlc3RIYW5kbGVyKSkpOih0JiYodm9pZCAwIT09dC5iYXNlVXJsJiZkZWxldGUgdC5iYXNlVXJsLHZvaWQgMCE9PXQucGF0aHMmJnZvaWQgMCE9PXQucGF0aHMudnMmJmRlbGV0ZSB0LnBhdGhzLnZzLHZvaWQgMCE9PXR5cGVvZiB0LnRydXN0ZWRUeXBlc1BvbGljeSYmZGVsZXRlIHQudHJ1c3RlZFR5cGVzUG9saWN5LHQuY2F0Y2hFcnJvcj0hMCxGLnJlcXVpcmUuY29uZmlnKHQpKSxuZXcgUHJvbWlzZSgoKGUsdCk9PnsoMCxGLnJlcXVpcmUpKFtuXSwobj0+e3RoaXMuX3JlcXVlc3RIYW5kbGVyPW4uY3JlYXRlKGkpLHRoaXMuX3JlcXVlc3RIYW5kbGVyP2UoJCh0aGlzLl9yZXF1ZXN0SGFuZGxlcikpOnQobmV3IEVycm9yKCJObyBSZXF1ZXN0SGFuZGxlciEiKSl9KSx0KX0pKSl9fWNsYXNzIGhle2NvbnN0cnVjdG9yKGUsdCxuLHIpe3RoaXMub3JpZ2luYWxTdGFydD1lLHRoaXMub3JpZ2luYWxMZW5ndGg9dCx0aGlzLm1vZGlmaWVkU3RhcnQ9bix0aGlzLm1vZGlmaWVkTGVuZ3RoPXJ9Z2V0T3JpZ2luYWxFbmQoKXtyZXR1cm4gdGhpcy5vcmlnaW5hbFN0YXJ0K3RoaXMub3JpZ2luYWxMZW5ndGh9Z2V0TW9kaWZpZWRFbmQoKXtyZXR1cm4gdGhpcy5tb2RpZmllZFN0YXJ0K3RoaXMubW9kaWZpZWRMZW5ndGh9fWZ1bmN0aW9uIGRlKGUsdCl7cmV0dXJuKHQ8PDUpLXQrZXwwfWZ1bmN0aW9uIHBlKGUsdCl7dD1kZSgxNDk0MTcsdCk7Zm9yKGxldCBuPTAscj1lLmxlbmd0aDtuPHI7bisrKXQ9ZGUoZS5jaGFyQ29kZUF0KG4pLHQpO3JldHVybiB0fWNsYXNzIHVle2NvbnN0cnVjdG9yKGUpe3RoaXMuc291cmNlPWV9Z2V0RWxlbWVudHMoKXtjb25zdCBlPXRoaXMuc291cmNlLHQ9bmV3IEludDMyQXJyYXkoZS5sZW5ndGgpO2ZvcihsZXQgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyl0W25dPWUuY2hhckNvZGVBdChuKTtyZXR1cm4gdH19ZnVuY3Rpb24gbWUoZSx0LG4pe3JldHVybiBuZXcgeWUobmV3IHVlKGUpLG5ldyB1ZSh0KSkuQ29tcHV0ZURpZmYobikuY2hhbmdlc31jbGFzcyBmZXtzdGF0aWMgQXNzZXJ0KGUsdCl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKHQpfX1jbGFzcyBnZXtzdGF0aWMgQ29weShlLHQsbixyLGkpe2ZvcihsZXQgbz0wO288aTtvKyspbltyK29dPWVbdCtvXX1zdGF0aWMgQ29weTIoZSx0LG4scixpKXtmb3IobGV0IG89MDtvPGk7bysrKW5bcitvXT1lW3Qrb119fWNsYXNzIGJle2NvbnN0cnVjdG9yKCl7dGhpcy5tX2NoYW5nZXM9W10sdGhpcy5tX29yaWdpbmFsU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fbW9kaWZpZWRTdGFydD0xMDczNzQxODI0LHRoaXMubV9vcmlnaW5hbENvdW50PTAsdGhpcy5tX21vZGlmaWVkQ291bnQ9MH1NYXJrTmV4dENoYW5nZSgpeyh0aGlzLm1fb3JpZ2luYWxDb3VudD4wfHx0aGlzLm1fbW9kaWZpZWRDb3VudD4wKSYmdGhpcy5tX2NoYW5nZXMucHVzaChuZXcgaGUodGhpcy5tX29yaWdpbmFsU3RhcnQsdGhpcy5tX29yaWdpbmFsQ291bnQsdGhpcy5tX21vZGlmaWVkU3RhcnQsdGhpcy5tX21vZGlmaWVkQ291bnQpKSx0aGlzLm1fb3JpZ2luYWxDb3VudD0wLHRoaXMubV9tb2RpZmllZENvdW50PTAsdGhpcy5tX29yaWdpbmFsU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fbW9kaWZpZWRTdGFydD0xMDczNzQxODI0fUFkZE9yaWdpbmFsRWxlbWVudChlLHQpe3RoaXMubV9vcmlnaW5hbFN0YXJ0PU1hdGgubWluKHRoaXMubV9vcmlnaW5hbFN0YXJ0LGUpLHRoaXMubV9tb2RpZmllZFN0YXJ0PU1hdGgubWluKHRoaXMubV9tb2RpZmllZFN0YXJ0LHQpLHRoaXMubV9vcmlnaW5hbENvdW50Kyt9QWRkTW9kaWZpZWRFbGVtZW50KGUsdCl7dGhpcy5tX29yaWdpbmFsU3RhcnQ9TWF0aC5taW4odGhpcy5tX29yaWdpbmFsU3RhcnQsZSksdGhpcy5tX21vZGlmaWVkU3RhcnQ9TWF0aC5taW4odGhpcy5tX21vZGlmaWVkU3RhcnQsdCksdGhpcy5tX21vZGlmaWVkQ291bnQrK31nZXRDaGFuZ2VzKCl7cmV0dXJuKHRoaXMubV9vcmlnaW5hbENvdW50PjB8fHRoaXMubV9tb2RpZmllZENvdW50PjApJiZ0aGlzLk1hcmtOZXh0Q2hhbmdlKCksdGhpcy5tX2NoYW5nZXN9Z2V0UmV2ZXJzZUNoYW5nZXMoKXtyZXR1cm4odGhpcy5tX29yaWdpbmFsQ291bnQ+MHx8dGhpcy5tX21vZGlmaWVkQ291bnQ+MCkmJnRoaXMuTWFya05leHRDaGFuZ2UoKSx0aGlzLm1fY2hhbmdlcy5yZXZlcnNlKCksdGhpcy5tX2NoYW5nZXN9fWNsYXNzIHlle2NvbnN0cnVjdG9yKGUsdCxuPW51bGwpe3RoaXMuQ29udGludWVQcm9jZXNzaW5nUHJlZGljYXRlPW4sdGhpcy5fb3JpZ2luYWxTZXF1ZW5jZT1lLHRoaXMuX21vZGlmaWVkU2VxdWVuY2U9dDtjb25zdFtyLGksb109eWUuX2dldEVsZW1lbnRzKGUpLFtzLGEsbF09eWUuX2dldEVsZW1lbnRzKHQpO3RoaXMuX2hhc1N0cmluZ3M9byYmbCx0aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzPXIsdGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaD1pLHRoaXMuX21vZGlmaWVkU3RyaW5nRWxlbWVudHM9cyx0aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoPWEsdGhpcy5tX2ZvcndhcmRIaXN0b3J5PVtdLHRoaXMubV9yZXZlcnNlSGlzdG9yeT1bXX1zdGF0aWMgX2lzU3RyaW5nQXJyYXkoZSl7cmV0dXJuIGUubGVuZ3RoPjAmJiJzdHJpbmciPT10eXBlb2YgZVswXX1zdGF0aWMgX2dldEVsZW1lbnRzKGUpe2NvbnN0IHQ9ZS5nZXRFbGVtZW50cygpO2lmKHllLl9pc1N0cmluZ0FycmF5KHQpKXtjb25zdCBlPW5ldyBJbnQzMkFycmF5KHQubGVuZ3RoKTtmb3IobGV0IG49MCxyPXQubGVuZ3RoO248cjtuKyspZVtuXT1wZSh0W25dLDApO3JldHVyblt0LGUsITBdfXJldHVybiB0IGluc3RhbmNlb2YgSW50MzJBcnJheT9bW10sdCwhMV06W1tdLG5ldyBJbnQzMkFycmF5KHQpLCExXX1FbGVtZW50c0FyZUVxdWFsKGUsdCl7cmV0dXJuIHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2hbZV09PT10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoW3RdJiYoIXRoaXMuX2hhc1N0cmluZ3N8fHRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbZV09PT10aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW3RdKX1FbGVtZW50c0FyZVN0cmljdEVxdWFsKGUsdCl7aWYoIXRoaXMuRWxlbWVudHNBcmVFcXVhbChlLHQpKXJldHVybiExO3JldHVybiB5ZS5fZ2V0U3RyaWN0RWxlbWVudCh0aGlzLl9vcmlnaW5hbFNlcXVlbmNlLGUpPT09eWUuX2dldFN0cmljdEVsZW1lbnQodGhpcy5fbW9kaWZpZWRTZXF1ZW5jZSx0KX1zdGF0aWMgX2dldFN0cmljdEVsZW1lbnQoZSx0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZS5nZXRTdHJpY3RFbGVtZW50P2UuZ2V0U3RyaWN0RWxlbWVudCh0KTpudWxsfU9yaWdpbmFsRWxlbWVudHNBcmVFcXVhbChlLHQpe3JldHVybiB0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoW2VdPT09dGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaFt0XSYmKCF0aGlzLl9oYXNTdHJpbmdzfHx0aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW2VdPT09dGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1t0XSl9TW9kaWZpZWRFbGVtZW50c0FyZUVxdWFsKGUsdCl7cmV0dXJuIHRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2hbZV09PT10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoW3RdJiYoIXRoaXMuX2hhc1N0cmluZ3N8fHRoaXMuX21vZGlmaWVkU3RyaW5nRWxlbWVudHNbZV09PT10aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW3RdKX1Db21wdXRlRGlmZihlKXtyZXR1cm4gdGhpcy5fQ29tcHV0ZURpZmYoMCx0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoLmxlbmd0aC0xLDAsdGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaC5sZW5ndGgtMSxlKX1fQ29tcHV0ZURpZmYoZSx0LG4scixpKXtjb25zdCBvPVshMV07bGV0IHM9dGhpcy5Db21wdXRlRGlmZlJlY3Vyc2l2ZShlLHQsbixyLG8pO3JldHVybiBpJiYocz10aGlzLlByZXR0aWZ5Q2hhbmdlcyhzKSkse3F1aXRFYXJseTpvWzBdLGNoYW5nZXM6c319Q29tcHV0ZURpZmZSZWN1cnNpdmUoZSx0LG4scixpKXtmb3IoaVswXT0hMTtlPD10JiZuPD1yJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwoZSxuKTspZSsrLG4rKztmb3IoO3Q+PWUmJnI+PW4mJnRoaXMuRWxlbWVudHNBcmVFcXVhbCh0LHIpOyl0LS0sci0tO2lmKGU+dHx8bj5yKXtsZXQgaTtyZXR1cm4gbjw9cj8oZmUuQXNzZXJ0KGU9PT10KzEsIm9yaWdpbmFsU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBvcmlnaW5hbEVuZCIpLGk9W25ldyBoZShlLDAsbixyLW4rMSldKTplPD10PyhmZS5Bc3NlcnQobj09PXIrMSwibW9kaWZpZWRTdGFydCBzaG91bGQgb25seSBiZSBvbmUgbW9yZSB0aGFuIG1vZGlmaWVkRW5kIiksaT1bbmV3IGhlKGUsdC1lKzEsbiwwKV0pOihmZS5Bc3NlcnQoZT09PXQrMSwib3JpZ2luYWxTdGFydCBzaG91bGQgb25seSBiZSBvbmUgbW9yZSB0aGFuIG9yaWdpbmFsRW5kIiksZmUuQXNzZXJ0KG49PT1yKzEsIm1vZGlmaWVkU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBtb2RpZmllZEVuZCIpLGk9W10pLGl9Y29uc3Qgbz1bMF0scz1bMF0sYT10aGlzLkNvbXB1dGVSZWN1cnNpb25Qb2ludChlLHQsbixyLG8scyxpKSxsPW9bMF0sYz1zWzBdO2lmKG51bGwhPT1hKXJldHVybiBhO2lmKCFpWzBdKXtjb25zdCBvPXRoaXMuQ29tcHV0ZURpZmZSZWN1cnNpdmUoZSxsLG4sYyxpKTtsZXQgcz1bXTtyZXR1cm4gcz1pWzBdP1tuZXcgaGUobCsxLHQtKGwrMSkrMSxjKzEsci0oYysxKSsxKV06dGhpcy5Db21wdXRlRGlmZlJlY3Vyc2l2ZShsKzEsdCxjKzEscixpKSx0aGlzLkNvbmNhdGVuYXRlQ2hhbmdlcyhvLHMpfXJldHVybltuZXcgaGUoZSx0LWUrMSxuLHItbisxKV19V0FMS1RSQUNFKGUsdCxuLHIsaSxvLHMsYSxsLGMsaCxkLHAsdSxtLGYsZyxiKXtsZXQgeT1udWxsLHY9bnVsbCx3PW5ldyBiZSx4PXQsUz1uLEM9cFswXS1mWzBdLXIsaz0tMTA3Mzc0MTgyNCxfPXRoaXMubV9mb3J3YXJkSGlzdG9yeS5sZW5ndGgtMTtkb3tjb25zdCB0PUMrZTt0PT09eHx8dDxTJiZsW3QtMV08bFt0KzFdPyh1PShoPWxbdCsxXSktQy1yLGg8ayYmdy5NYXJrTmV4dENoYW5nZSgpLGs9aCx3LkFkZE1vZGlmaWVkRWxlbWVudChoKzEsdSksQz10KzEtZSk6KHU9KGg9bFt0LTFdKzEpLUMtcixoPGsmJncuTWFya05leHRDaGFuZ2UoKSxrPWgtMSx3LkFkZE9yaWdpbmFsRWxlbWVudChoLHUrMSksQz10LTEtZSksXz49MCYmKGU9KGw9dGhpcy5tX2ZvcndhcmRIaXN0b3J5W19dKVswXSx4PTEsUz1sLmxlbmd0aC0xKX13aGlsZSgtLV8+PS0xKTtpZih5PXcuZ2V0UmV2ZXJzZUNoYW5nZXMoKSxiWzBdKXtsZXQgZT1wWzBdKzEsdD1mWzBdKzE7aWYobnVsbCE9PXkmJnkubGVuZ3RoPjApe2NvbnN0IG49eVt5Lmxlbmd0aC0xXTtlPU1hdGgubWF4KGUsbi5nZXRPcmlnaW5hbEVuZCgpKSx0PU1hdGgubWF4KHQsbi5nZXRNb2RpZmllZEVuZCgpKX12PVtuZXcgaGUoZSxkLWUrMSx0LG0tdCsxKV19ZWxzZXt3PW5ldyBiZSx4PW8sUz1zLEM9cFswXS1mWzBdLWEsaz0xMDczNzQxODI0LF89Zz90aGlzLm1fcmV2ZXJzZUhpc3RvcnkubGVuZ3RoLTE6dGhpcy5tX3JldmVyc2VIaXN0b3J5Lmxlbmd0aC0yO2Rve2NvbnN0IGU9QytpO2U9PT14fHxlPFMmJmNbZS0xXT49Y1tlKzFdPyh1PShoPWNbZSsxXS0xKS1DLWEsaD5rJiZ3Lk1hcmtOZXh0Q2hhbmdlKCksaz1oKzEsdy5BZGRPcmlnaW5hbEVsZW1lbnQoaCsxLHUrMSksQz1lKzEtaSk6KHU9KGg9Y1tlLTFdKS1DLWEsaD5rJiZ3Lk1hcmtOZXh0Q2hhbmdlKCksaz1oLHcuQWRkTW9kaWZpZWRFbGVtZW50KGgrMSx1KzEpLEM9ZS0xLWkpLF8+PTAmJihpPShjPXRoaXMubV9yZXZlcnNlSGlzdG9yeVtfXSlbMF0seD0xLFM9Yy5sZW5ndGgtMSl9d2hpbGUoLS1fPj0tMSk7dj13LmdldENoYW5nZXMoKX1yZXR1cm4gdGhpcy5Db25jYXRlbmF0ZUNoYW5nZXMoeSx2KX1Db21wdXRlUmVjdXJzaW9uUG9pbnQoZSx0LG4scixpLG8scyl7bGV0IGE9MCxsPTAsYz0wLGg9MCxkPTAscD0wO2UtLSxuLS0saVswXT0wLG9bMF09MCx0aGlzLm1fZm9yd2FyZEhpc3Rvcnk9W10sdGhpcy5tX3JldmVyc2VIaXN0b3J5PVtdO2NvbnN0IHU9dC1lKyhyLW4pLG09dSsxLGY9bmV3IEludDMyQXJyYXkobSksZz1uZXcgSW50MzJBcnJheShtKSxiPXItbix5PXQtZSx2PWUtbix3PXQtcix4PSh5LWIpJTI9PTA7ZltiXT1lLGdbeV09dCxzWzBdPSExO2ZvcihsZXQgUz0xO1M8PXUvMisxO1MrKyl7bGV0IHU9MCxDPTA7Yz10aGlzLkNsaXBEaWFnb25hbEJvdW5kKGItUyxTLGIsbSksaD10aGlzLkNsaXBEaWFnb25hbEJvdW5kKGIrUyxTLGIsbSk7Zm9yKGxldCBlPWM7ZTw9aDtlKz0yKXthPWU9PT1jfHxlPGgmJmZbZS0xXTxmW2UrMV0/ZltlKzFdOmZbZS0xXSsxLGw9YS0oZS1iKS12O2NvbnN0IG49YTtmb3IoO2E8dCYmbDxyJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwoYSsxLGwrMSk7KWErKyxsKys7aWYoZltlXT1hLGErbD51K0MmJih1PWEsQz1sKSwheCYmTWF0aC5hYnMoZS15KTw9Uy0xJiZhPj1nW2VdKXJldHVybiBpWzBdPWEsb1swXT1sLG48PWdbZV0mJlM8PTE0NDg/dGhpcy5XQUxLVFJBQ0UoYixjLGgsdix5LGQscCx3LGYsZyxhLHQsaSxsLHIsbyx4LHMpOm51bGx9Y29uc3Qgaz0odS1lKyhDLW4pLVMpLzI7aWYobnVsbCE9PXRoaXMuQ29udGludWVQcm9jZXNzaW5nUHJlZGljYXRlJiYhdGhpcy5Db250aW51ZVByb2Nlc3NpbmdQcmVkaWNhdGUodSxrKSlyZXR1cm4gc1swXT0hMCxpWzBdPXUsb1swXT1DLGs+MCYmUzw9MTQ0OD90aGlzLldBTEtUUkFDRShiLGMsaCx2LHksZCxwLHcsZixnLGEsdCxpLGwscixvLHgscyk6KGUrKyxuKyssW25ldyBoZShlLHQtZSsxLG4sci1uKzEpXSk7ZD10aGlzLkNsaXBEaWFnb25hbEJvdW5kKHktUyxTLHksbSkscD10aGlzLkNsaXBEaWFnb25hbEJvdW5kKHkrUyxTLHksbSk7Zm9yKGxldCB1PWQ7dTw9cDt1Kz0yKXthPXU9PT1kfHx1PHAmJmdbdS0xXT49Z1t1KzFdP2dbdSsxXS0xOmdbdS0xXSxsPWEtKHUteSktdztjb25zdCBtPWE7Zm9yKDthPmUmJmw+biYmdGhpcy5FbGVtZW50c0FyZUVxdWFsKGEsbCk7KWEtLSxsLS07aWYoZ1t1XT1hLHgmJk1hdGguYWJzKHUtYik8PVMmJmE8PWZbdV0pcmV0dXJuIGlbMF09YSxvWzBdPWwsbT49Zlt1XSYmUzw9MTQ0OD90aGlzLldBTEtUUkFDRShiLGMsaCx2LHksZCxwLHcsZixnLGEsdCxpLGwscixvLHgscyk6bnVsbH1pZihTPD0xNDQ3KXtsZXQgZT1uZXcgSW50MzJBcnJheShoLWMrMik7ZVswXT1iLWMrMSxnZS5Db3B5MihmLGMsZSwxLGgtYysxKSx0aGlzLm1fZm9yd2FyZEhpc3RvcnkucHVzaChlKSxlPW5ldyBJbnQzMkFycmF5KHAtZCsyKSxlWzBdPXktZCsxLGdlLkNvcHkyKGcsZCxlLDEscC1kKzEpLHRoaXMubV9yZXZlcnNlSGlzdG9yeS5wdXNoKGUpfX1yZXR1cm4gdGhpcy5XQUxLVFJBQ0UoYixjLGgsdix5LGQscCx3LGYsZyxhLHQsaSxsLHIsbyx4LHMpfVByZXR0aWZ5Q2hhbmdlcyhlKXtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgbj1lW3RdLHI9dDxlLmxlbmd0aC0xP2VbdCsxXS5vcmlnaW5hbFN0YXJ0OnRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2gubGVuZ3RoLGk9dDxlLmxlbmd0aC0xP2VbdCsxXS5tb2RpZmllZFN0YXJ0OnRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLG89bi5vcmlnaW5hbExlbmd0aD4wLHM9bi5tb2RpZmllZExlbmd0aD4wO2Zvcig7bi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGg8ciYmbi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGg8aSYmKCFvfHx0aGlzLk9yaWdpbmFsRWxlbWVudHNBcmVFcXVhbChuLm9yaWdpbmFsU3RhcnQsbi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGgpKSYmKCFzfHx0aGlzLk1vZGlmaWVkRWxlbWVudHNBcmVFcXVhbChuLm1vZGlmaWVkU3RhcnQsbi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGgpKTspe2NvbnN0IGU9dGhpcy5FbGVtZW50c0FyZVN0cmljdEVxdWFsKG4ub3JpZ2luYWxTdGFydCxuLm1vZGlmaWVkU3RhcnQpO2lmKHRoaXMuRWxlbWVudHNBcmVTdHJpY3RFcXVhbChuLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aCxuLm1vZGlmaWVkU3RhcnQrbi5tb2RpZmllZExlbmd0aCkmJiFlKWJyZWFrO24ub3JpZ2luYWxTdGFydCsrLG4ubW9kaWZpZWRTdGFydCsrfWNvbnN0IGE9W251bGxdO3Q8ZS5sZW5ndGgtMSYmdGhpcy5DaGFuZ2VzT3ZlcmxhcChlW3RdLGVbdCsxXSxhKSYmKGVbdF09YVswXSxlLnNwbGljZSh0KzEsMSksdC0tKX1mb3IobGV0IHQ9ZS5sZW5ndGgtMTt0Pj0wO3QtLSl7Y29uc3Qgbj1lW3RdO2xldCByPTAsaT0wO2lmKHQ+MCl7Y29uc3Qgbj1lW3QtMV07cj1uLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aCxpPW4ubW9kaWZpZWRTdGFydCtuLm1vZGlmaWVkTGVuZ3RofWNvbnN0IG89bi5vcmlnaW5hbExlbmd0aD4wLHM9bi5tb2RpZmllZExlbmd0aD4wO2xldCBhPTAsbD10aGlzLl9ib3VuZGFyeVNjb3JlKG4ub3JpZ2luYWxTdGFydCxuLm9yaWdpbmFsTGVuZ3RoLG4ubW9kaWZpZWRTdGFydCxuLm1vZGlmaWVkTGVuZ3RoKTtmb3IobGV0IGU9MTs7ZSsrKXtjb25zdCB0PW4ub3JpZ2luYWxTdGFydC1lLGM9bi5tb2RpZmllZFN0YXJ0LWU7aWYodDxyfHxjPGkpYnJlYWs7aWYobyYmIXRoaXMuT3JpZ2luYWxFbGVtZW50c0FyZUVxdWFsKHQsdCtuLm9yaWdpbmFsTGVuZ3RoKSlicmVhaztpZihzJiYhdGhpcy5Nb2RpZmllZEVsZW1lbnRzQXJlRXF1YWwoYyxjK24ubW9kaWZpZWRMZW5ndGgpKWJyZWFrO2NvbnN0IGg9KHQ9PT1yJiZjPT09aT81OjApK3RoaXMuX2JvdW5kYXJ5U2NvcmUodCxuLm9yaWdpbmFsTGVuZ3RoLGMsbi5tb2RpZmllZExlbmd0aCk7aD5sJiYobD1oLGE9ZSl9bi5vcmlnaW5hbFN0YXJ0LT1hLG4ubW9kaWZpZWRTdGFydC09YTtjb25zdCBjPVtudWxsXTt0PjAmJnRoaXMuQ2hhbmdlc092ZXJsYXAoZVt0LTFdLGVbdF0sYykmJihlW3QtMV09Y1swXSxlLnNwbGljZSh0LDEpLHQrKyl9aWYodGhpcy5faGFzU3RyaW5ncylmb3IobGV0IHQ9MSxuPWUubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49ZVt0LTFdLHI9ZVt0XSxpPXIub3JpZ2luYWxTdGFydC1uLm9yaWdpbmFsU3RhcnQtbi5vcmlnaW5hbExlbmd0aCxvPW4ub3JpZ2luYWxTdGFydCxzPXIub3JpZ2luYWxTdGFydCtyLm9yaWdpbmFsTGVuZ3RoLGE9cy1vLGw9bi5tb2RpZmllZFN0YXJ0LGM9ci5tb2RpZmllZFN0YXJ0K3IubW9kaWZpZWRMZW5ndGgsaD1jLWw7aWYoaTw1JiZhPDIwJiZoPDIwKXtjb25zdCBlPXRoaXMuX2ZpbmRCZXR0ZXJDb250aWd1b3VzU2VxdWVuY2UobyxhLGwsaCxpKTtpZihlKXtjb25zdFt0LG9dPWU7dD09PW4ub3JpZ2luYWxTdGFydCtuLm9yaWdpbmFsTGVuZ3RoJiZvPT09bi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGh8fChuLm9yaWdpbmFsTGVuZ3RoPXQtbi5vcmlnaW5hbFN0YXJ0LG4ubW9kaWZpZWRMZW5ndGg9by1uLm1vZGlmaWVkU3RhcnQsci5vcmlnaW5hbFN0YXJ0PXQraSxyLm1vZGlmaWVkU3RhcnQ9bytpLHIub3JpZ2luYWxMZW5ndGg9cy1yLm9yaWdpbmFsU3RhcnQsci5tb2RpZmllZExlbmd0aD1jLXIubW9kaWZpZWRTdGFydCl9fX1yZXR1cm4gZX1fZmluZEJldHRlckNvbnRpZ3VvdXNTZXF1ZW5jZShlLHQsbixyLGkpe2lmKHQ8aXx8cjxpKXJldHVybiBudWxsO2NvbnN0IG89ZSt0LWkrMSxzPW4rci1pKzE7bGV0IGE9MCxsPTAsYz0wO2ZvcihsZXQgdD1lO3Q8bzt0KyspZm9yKGxldCBlPW47ZTxzO2UrKyl7Y29uc3Qgbj10aGlzLl9jb250aWd1b3VzU2VxdWVuY2VTY29yZSh0LGUsaSk7bj4wJiZuPmEmJihhPW4sbD10LGM9ZSl9cmV0dXJuIGE+MD9bbCxjXTpudWxsfV9jb250aWd1b3VzU2VxdWVuY2VTY29yZShlLHQsbil7bGV0IHI9MDtmb3IobGV0IGk9MDtpPG47aSsrKXtpZighdGhpcy5FbGVtZW50c0FyZUVxdWFsKGUraSx0K2kpKXJldHVybiAwO3IrPXRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbZStpXS5sZW5ndGh9cmV0dXJuIHJ9X09yaWdpbmFsSXNCb3VuZGFyeShlKXtyZXR1cm4gZTw9MHx8ZT49dGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaC5sZW5ndGgtMXx8dGhpcy5faGFzU3RyaW5ncyYmL15ccyokLy50ZXN0KHRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbZV0pfV9PcmlnaW5hbFJlZ2lvbklzQm91bmRhcnkoZSx0KXtpZih0aGlzLl9PcmlnaW5hbElzQm91bmRhcnkoZSl8fHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeShlLTEpKXJldHVybiEwO2lmKHQ+MCl7Y29uc3Qgbj1lK3Q7aWYodGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KG4tMSl8fHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeShuKSlyZXR1cm4hMH1yZXR1cm4hMX1fTW9kaWZpZWRJc0JvdW5kYXJ5KGUpe3JldHVybiBlPD0wfHxlPj10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoLmxlbmd0aC0xfHx0aGlzLl9oYXNTdHJpbmdzJiYvXlxzKiQvLnRlc3QodGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1tlXSl9X01vZGlmaWVkUmVnaW9uSXNCb3VuZGFyeShlLHQpe2lmKHRoaXMuX01vZGlmaWVkSXNCb3VuZGFyeShlKXx8dGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KGUtMSkpcmV0dXJuITA7aWYodD4wKXtjb25zdCBuPWUrdDtpZih0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkobi0xKXx8dGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KG4pKXJldHVybiEwfXJldHVybiExfV9ib3VuZGFyeVNjb3JlKGUsdCxuLHIpe3JldHVybih0aGlzLl9PcmlnaW5hbFJlZ2lvbklzQm91bmRhcnkoZSx0KT8xOjApKyh0aGlzLl9Nb2RpZmllZFJlZ2lvbklzQm91bmRhcnkobixyKT8xOjApfUNvbmNhdGVuYXRlQ2hhbmdlcyhlLHQpe2NvbnN0IG49W107aWYoMD09PWUubGVuZ3RofHwwPT09dC5sZW5ndGgpcmV0dXJuIHQubGVuZ3RoPjA/dDplO2lmKHRoaXMuQ2hhbmdlc092ZXJsYXAoZVtlLmxlbmd0aC0xXSx0WzBdLG4pKXtjb25zdCByPW5ldyBBcnJheShlLmxlbmd0aCt0Lmxlbmd0aC0xKTtyZXR1cm4gZ2UuQ29weShlLDAsciwwLGUubGVuZ3RoLTEpLHJbZS5sZW5ndGgtMV09blswXSxnZS5Db3B5KHQsMSxyLGUubGVuZ3RoLHQubGVuZ3RoLTEpLHJ9e2NvbnN0IG49bmV3IEFycmF5KGUubGVuZ3RoK3QubGVuZ3RoKTtyZXR1cm4gZ2UuQ29weShlLDAsbiwwLGUubGVuZ3RoKSxnZS5Db3B5KHQsMCxuLGUubGVuZ3RoLHQubGVuZ3RoKSxufX1DaGFuZ2VzT3ZlcmxhcChlLHQsbil7aWYoZmUuQXNzZXJ0KGUub3JpZ2luYWxTdGFydDw9dC5vcmlnaW5hbFN0YXJ0LCJMZWZ0IGNoYW5nZSBpcyBub3QgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHJpZ2h0IGNoYW5nZSIpLGZlLkFzc2VydChlLm1vZGlmaWVkU3RhcnQ8PXQubW9kaWZpZWRTdGFydCwiTGVmdCBjaGFuZ2UgaXMgbm90IGxlc3MgdGhhbiBvciBlcXVhbCB0byByaWdodCBjaGFuZ2UiKSxlLm9yaWdpbmFsU3RhcnQrZS5vcmlnaW5hbExlbmd0aD49dC5vcmlnaW5hbFN0YXJ0fHxlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aD49dC5tb2RpZmllZFN0YXJ0KXtjb25zdCByPWUub3JpZ2luYWxTdGFydDtsZXQgaT1lLm9yaWdpbmFsTGVuZ3RoO2NvbnN0IG89ZS5tb2RpZmllZFN0YXJ0O2xldCBzPWUubW9kaWZpZWRMZW5ndGg7cmV0dXJuIGUub3JpZ2luYWxTdGFydCtlLm9yaWdpbmFsTGVuZ3RoPj10Lm9yaWdpbmFsU3RhcnQmJihpPXQub3JpZ2luYWxTdGFydCt0Lm9yaWdpbmFsTGVuZ3RoLWUub3JpZ2luYWxTdGFydCksZS5tb2RpZmllZFN0YXJ0K2UubW9kaWZpZWRMZW5ndGg+PXQubW9kaWZpZWRTdGFydCYmKHM9dC5tb2RpZmllZFN0YXJ0K3QubW9kaWZpZWRMZW5ndGgtZS5tb2RpZmllZFN0YXJ0KSxuWzBdPW5ldyBoZShyLGksbyxzKSwhMH1yZXR1cm4gblswXT1udWxsLCExfUNsaXBEaWFnb25hbEJvdW5kKGUsdCxuLHIpe2lmKGU+PTAmJmU8cilyZXR1cm4gZTtjb25zdCBpPXQlMj09MDtpZihlPDApe3JldHVybiBpPT09KG4lMj09MCk/MDoxfXJldHVybiBpPT09KChyLW4tMSklMj09MCk/ci0xOnItMn19bGV0IHZlO2lmKHZvaWQgMCE9PUYudnNjb2RlJiZ2b2lkIDAhPT1GLnZzY29kZS5wcm9jZXNzKXtjb25zdCBlPUYudnNjb2RlLnByb2Nlc3M7dmU9e2dldCBwbGF0Zm9ybSgpe3JldHVybiBlLnBsYXRmb3JtfSxnZXQgYXJjaCgpe3JldHVybiBlLmFyY2h9LGdldCBlbnYoKXtyZXR1cm4gZS5lbnZ9LGN3ZDooKT0+ZS5jd2QoKX19ZWxzZSB2ZT0idW5kZWZpbmVkIiE9dHlwZW9mIHByb2Nlc3M/e2dldCBwbGF0Zm9ybSgpe3JldHVybiBwcm9jZXNzLnBsYXRmb3JtfSxnZXQgYXJjaCgpe3JldHVybiBwcm9jZXNzLmFyY2h9LGdldCBlbnYoKXtyZXR1cm4gcHJvY2Vzcy5lbnZ9LGN3ZDooKT0+cHJvY2Vzcy5lbnYuVlNDT0RFX0NXRHx8cHJvY2Vzcy5jd2QoKX06e2dldCBwbGF0Zm9ybSgpe3JldHVybiBOPyJ3aW4zMiI6VD8iZGFyd2luIjoibGludXgifSxnZXQgYXJjaCgpe30sZ2V0IGVudigpe3JldHVybnt9fSxjd2Q6KCk9PiIvIn07Y29uc3Qgd2U9dmUuY3dkLHhlPXZlLmVudixTZT12ZS5wbGF0Zm9ybSxDZT00NixrZT00NyxfZT05MixFZT01ODtjbGFzcyBGZSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUsdCxuKXtsZXQgcjsic3RyaW5nIj09dHlwZW9mIHQmJjA9PT10LmluZGV4T2YoIm5vdCAiKT8ocj0ibXVzdCBub3QgYmUiLHQ9dC5yZXBsYWNlKC9ebm90IC8sIiIpKTpyPSJtdXN0IGJlIjtjb25zdCBpPS0xIT09ZS5pbmRleE9mKCIuIik/InByb3BlcnR5IjoiYXJndW1lbnQiO2xldCBvPWBUaGUgIiR7ZX0iICR7aX0gJHtyfSBvZiB0eXBlICR7dH1gO28rPSIuIFJlY2VpdmVkIHR5cGUgIit0eXBlb2YgbixzdXBlcihvKSx0aGlzLmNvZGU9IkVSUl9JTlZBTElEX0FSR19UWVBFIn19ZnVuY3Rpb24gUmUoZSx0KXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEZlKHQsInN0cmluZyIsZSl9ZnVuY3Rpb24gRGUoZSl7cmV0dXJuIGU9PT1rZXx8ZT09PV9lfWZ1bmN0aW9uIE5lKGUpe3JldHVybiBlPT09a2V9ZnVuY3Rpb24gVGUoZSl7cmV0dXJuIGU+PTY1JiZlPD05MHx8ZT49OTcmJmU8PTEyMn1mdW5jdGlvbiBBZShlLHQsbixyKXtsZXQgaT0iIixvPTAscz0tMSxhPTAsbD0wO2ZvcihsZXQgYz0wO2M8PWUubGVuZ3RoOysrYyl7aWYoYzxlLmxlbmd0aClsPWUuY2hhckNvZGVBdChjKTtlbHNle2lmKHIobCkpYnJlYWs7bD1rZX1pZihyKGwpKXtpZihzPT09Yy0xfHwxPT09YSk7ZWxzZSBpZigyPT09YSl7aWYoaS5sZW5ndGg8Mnx8MiE9PW98fGkuY2hhckNvZGVBdChpLmxlbmd0aC0xKSE9PUNlfHxpLmNoYXJDb2RlQXQoaS5sZW5ndGgtMikhPT1DZSl7aWYoaS5sZW5ndGg+Mil7Y29uc3QgZT1pLmxhc3RJbmRleE9mKG4pOy0xPT09ZT8oaT0iIixvPTApOihpPWkuc2xpY2UoMCxlKSxvPWkubGVuZ3RoLTEtaS5sYXN0SW5kZXhPZihuKSkscz1jLGE9MDtjb250aW51ZX1pZigwIT09aS5sZW5ndGgpe2k9IiIsbz0wLHM9YyxhPTA7Y29udGludWV9fXQmJihpKz1pLmxlbmd0aD4wP2Ake259Li5gOiIuLiIsbz0yKX1lbHNlIGkubGVuZ3RoPjA/aSs9YCR7bn0ke2Uuc2xpY2UocysxLGMpfWA6aT1lLnNsaWNlKHMrMSxjKSxvPWMtcy0xO3M9YyxhPTB9ZWxzZSBsPT09Q2UmJi0xIT09YT8rK2E6YT0tMX1yZXR1cm4gaX1mdW5jdGlvbiB6ZShlLHQpe2lmKG51bGw9PT10fHwib2JqZWN0IiE9dHlwZW9mIHQpdGhyb3cgbmV3IEZlKCJwYXRoT2JqZWN0IiwiT2JqZWN0Iix0KTtjb25zdCBuPXQuZGlyfHx0LnJvb3Qscj10LmJhc2V8fGAke3QubmFtZXx8IiJ9JHt0LmV4dHx8IiJ9YDtyZXR1cm4gbj9uPT09dC5yb290P2Ake259JHtyfWA6YCR7bn0ke2V9JHtyfWA6cn1jb25zdCBJZT17cmVzb2x2ZSguLi5lKXtsZXQgdD0iIixuPSIiLHI9ITE7Zm9yKGxldCBpPWUubGVuZ3RoLTE7aT49LTE7aS0tKXtsZXQgbztpZihpPj0wKXtpZihvPWVbaV0sUmUobywicGF0aCIpLDA9PT1vLmxlbmd0aCljb250aW51ZX1lbHNlIDA9PT10Lmxlbmd0aD9vPXdlKCk6KG89eGVbYD0ke3R9YF18fHdlKCksKHZvaWQgMD09PW98fG8uc2xpY2UoMCwyKS50b0xvd2VyQ2FzZSgpIT09dC50b0xvd2VyQ2FzZSgpJiZvLmNoYXJDb2RlQXQoMik9PT1fZSkmJihvPWAke3R9XFxgKSk7Y29uc3Qgcz1vLmxlbmd0aDtsZXQgYT0wLGw9IiIsYz0hMTtjb25zdCBoPW8uY2hhckNvZGVBdCgwKTtpZigxPT09cylEZShoKSYmKGE9MSxjPSEwKTtlbHNlIGlmKERlKGgpKWlmKGM9ITAsRGUoby5jaGFyQ29kZUF0KDEpKSl7bGV0IGU9Mix0PWU7Zm9yKDtlPHMmJiFEZShvLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZTxzJiZlIT09dCl7Y29uc3Qgbj1vLnNsaWNlKHQsZSk7Zm9yKHQ9ZTtlPHMmJkRlKG8uY2hhckNvZGVBdChlKSk7KWUrKztpZihlPHMmJmUhPT10KXtmb3IodD1lO2U8cyYmIURlKG8uY2hhckNvZGVBdChlKSk7KWUrKztlIT09cyYmZT09PXR8fChsPWBcXFxcJHtufVxcJHtvLnNsaWNlKHQsZSl9YCxhPWUpfX19ZWxzZSBhPTE7ZWxzZSBUZShoKSYmby5jaGFyQ29kZUF0KDEpPT09RWUmJihsPW8uc2xpY2UoMCwyKSxhPTIscz4yJiZEZShvLmNoYXJDb2RlQXQoMikpJiYoYz0hMCxhPTMpKTtpZihsLmxlbmd0aD4wKWlmKHQubGVuZ3RoPjApe2lmKGwudG9Mb3dlckNhc2UoKSE9PXQudG9Mb3dlckNhc2UoKSljb250aW51ZX1lbHNlIHQ9bDtpZihyKXtpZih0Lmxlbmd0aD4wKWJyZWFrfWVsc2UgaWYobj1gJHtvLnNsaWNlKGEpfVxcJHtufWAscj1jLGMmJnQubGVuZ3RoPjApYnJlYWt9cmV0dXJuIG49QWUobiwhciwiXFwiLERlKSxyP2Ake3R9XFwke259YDpgJHt0fSR7bn1gfHwiLiJ9LG5vcm1hbGl6ZShlKXtSZShlLCJwYXRoIik7Y29uc3QgdD1lLmxlbmd0aDtpZigwPT09dClyZXR1cm4iLiI7bGV0IG4scj0wLGk9ITE7Y29uc3Qgbz1lLmNoYXJDb2RlQXQoMCk7aWYoMT09PXQpcmV0dXJuIE5lKG8pPyJcXCI6ZTtpZihEZShvKSlpZihpPSEwLERlKGUuY2hhckNvZGVBdCgxKSkpe2xldCBpPTIsbz1pO2Zvcig7aTx0JiYhRGUoZS5jaGFyQ29kZUF0KGkpKTspaSsrO2lmKGk8dCYmaSE9PW8pe2NvbnN0IHM9ZS5zbGljZShvLGkpO2ZvcihvPWk7aTx0JiZEZShlLmNoYXJDb2RlQXQoaSkpOylpKys7aWYoaTx0JiZpIT09byl7Zm9yKG89aTtpPHQmJiFEZShlLmNoYXJDb2RlQXQoaSkpOylpKys7aWYoaT09PXQpcmV0dXJuYFxcXFwke3N9XFwke2Uuc2xpY2Uobyl9XFxgO2khPT1vJiYobj1gXFxcXCR7c31cXCR7ZS5zbGljZShvLGkpfWAscj1pKX19fWVsc2Ugcj0xO2Vsc2UgVGUobykmJmUuY2hhckNvZGVBdCgxKT09PUVlJiYobj1lLnNsaWNlKDAsMikscj0yLHQ+MiYmRGUoZS5jaGFyQ29kZUF0KDIpKSYmKGk9ITAscj0zKSk7bGV0IHM9cjx0P0FlKGUuc2xpY2UociksIWksIlxcIixEZSk6IiI7cmV0dXJuIDAhPT1zLmxlbmd0aHx8aXx8KHM9Ii4iKSxzLmxlbmd0aD4wJiZEZShlLmNoYXJDb2RlQXQodC0xKSkmJihzKz0iXFwiKSx2b2lkIDA9PT1uP2k/YFxcJHtzfWA6czppP2Ake259XFwke3N9YDpgJHtufSR7c31gfSxpc0Fic29sdXRlKGUpe1JlKGUsInBhdGgiKTtjb25zdCB0PWUubGVuZ3RoO2lmKDA9PT10KXJldHVybiExO2NvbnN0IG49ZS5jaGFyQ29kZUF0KDApO3JldHVybiBEZShuKXx8dD4yJiZUZShuKSYmZS5jaGFyQ29kZUF0KDEpPT09RWUmJkRlKGUuY2hhckNvZGVBdCgyKSl9LGpvaW4oLi4uZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybiIuIjtsZXQgdCxuO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7KytyKXtjb25zdCBpPWVbcl07UmUoaSwicGF0aCIpLGkubGVuZ3RoPjAmJih2b2lkIDA9PT10P3Q9bj1pOnQrPWBcXCR7aX1gKX1pZih2b2lkIDA9PT10KXJldHVybiIuIjtsZXQgcj0hMCxpPTA7aWYoInN0cmluZyI9PXR5cGVvZiBuJiZEZShuLmNoYXJDb2RlQXQoMCkpKXsrK2k7Y29uc3QgZT1uLmxlbmd0aDtlPjEmJkRlKG4uY2hhckNvZGVBdCgxKSkmJigrK2ksZT4yJiYoRGUobi5jaGFyQ29kZUF0KDIpKT8rK2k6cj0hMSkpfWlmKHIpe2Zvcig7aTx0Lmxlbmd0aCYmRGUodC5jaGFyQ29kZUF0KGkpKTspaSsrO2k+PTImJih0PWBcXCR7dC5zbGljZShpKX1gKX1yZXR1cm4gSWUubm9ybWFsaXplKHQpfSxyZWxhdGl2ZShlLHQpe2lmKFJlKGUsImZyb20iKSxSZSh0LCJ0byIpLGU9PT10KXJldHVybiIiO2NvbnN0IG49SWUucmVzb2x2ZShlKSxyPUllLnJlc29sdmUodCk7aWYobj09PXIpcmV0dXJuIiI7aWYoKGU9bi50b0xvd2VyQ2FzZSgpKT09PSh0PXIudG9Mb3dlckNhc2UoKSkpcmV0dXJuIiI7bGV0IGk9MDtmb3IoO2k8ZS5sZW5ndGgmJmUuY2hhckNvZGVBdChpKT09PV9lOylpKys7bGV0IG89ZS5sZW5ndGg7Zm9yKDtvLTE+aSYmZS5jaGFyQ29kZUF0KG8tMSk9PT1fZTspby0tO2NvbnN0IHM9by1pO2xldCBhPTA7Zm9yKDthPHQubGVuZ3RoJiZ0LmNoYXJDb2RlQXQoYSk9PT1fZTspYSsrO2xldCBsPXQubGVuZ3RoO2Zvcig7bC0xPmEmJnQuY2hhckNvZGVBdChsLTEpPT09X2U7KWwtLTtjb25zdCBjPWwtYSxoPXM8Yz9zOmM7bGV0IGQ9LTEscD0wO2Zvcig7cDxoO3ArKyl7Y29uc3Qgbj1lLmNoYXJDb2RlQXQoaStwKTtpZihuIT09dC5jaGFyQ29kZUF0KGErcCkpYnJlYWs7bj09PV9lJiYoZD1wKX1pZihwIT09aCl7aWYoLTE9PT1kKXJldHVybiByfWVsc2V7aWYoYz5oKXtpZih0LmNoYXJDb2RlQXQoYStwKT09PV9lKXJldHVybiByLnNsaWNlKGErcCsxKTtpZigyPT09cClyZXR1cm4gci5zbGljZShhK3ApfXM+aCYmKGUuY2hhckNvZGVBdChpK3ApPT09X2U/ZD1wOjI9PT1wJiYoZD0zKSksLTE9PT1kJiYoZD0wKX1sZXQgdT0iIjtmb3IocD1pK2QrMTtwPD1vOysrcClwIT09byYmZS5jaGFyQ29kZUF0KHApIT09X2V8fCh1Kz0wPT09dS5sZW5ndGg/Ii4uIjoiXFwuLiIpO3JldHVybiBhKz1kLHUubGVuZ3RoPjA/YCR7dX0ke3Iuc2xpY2UoYSxsKX1gOihyLmNoYXJDb2RlQXQoYSk9PT1fZSYmKythLHIuc2xpY2UoYSxsKSl9LHRvTmFtZXNwYWNlZFBhdGgoZSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXJldHVybiBlO2lmKDA9PT1lLmxlbmd0aClyZXR1cm4iIjtjb25zdCB0PUllLnJlc29sdmUoZSk7aWYodC5sZW5ndGg8PTIpcmV0dXJuIGU7aWYodC5jaGFyQ29kZUF0KDApPT09X2Upe2lmKHQuY2hhckNvZGVBdCgxKT09PV9lKXtjb25zdCBlPXQuY2hhckNvZGVBdCgyKTtpZig2MyE9PWUmJmUhPT1DZSlyZXR1cm5gXFxcXD9cXFVOQ1xcJHt0LnNsaWNlKDIpfWB9fWVsc2UgaWYoVGUodC5jaGFyQ29kZUF0KDApKSYmdC5jaGFyQ29kZUF0KDEpPT09RWUmJnQuY2hhckNvZGVBdCgyKT09PV9lKXJldHVybmBcXFxcP1xcJHt0fWA7cmV0dXJuIGV9LGRpcm5hbWUoZSl7UmUoZSwicGF0aCIpO2NvbnN0IHQ9ZS5sZW5ndGg7aWYoMD09PXQpcmV0dXJuIi4iO2xldCBuPS0xLHI9MDtjb25zdCBpPWUuY2hhckNvZGVBdCgwKTtpZigxPT09dClyZXR1cm4gRGUoaSk/ZToiLiI7aWYoRGUoaSkpe2lmKG49cj0xLERlKGUuY2hhckNvZGVBdCgxKSkpe2xldCBpPTIsbz1pO2Zvcig7aTx0JiYhRGUoZS5jaGFyQ29kZUF0KGkpKTspaSsrO2lmKGk8dCYmaSE9PW8pe2ZvcihvPWk7aTx0JiZEZShlLmNoYXJDb2RlQXQoaSkpOylpKys7aWYoaTx0JiZpIT09byl7Zm9yKG89aTtpPHQmJiFEZShlLmNoYXJDb2RlQXQoaSkpOylpKys7aWYoaT09PXQpcmV0dXJuIGU7aSE9PW8mJihuPXI9aSsxKX19fX1lbHNlIFRlKGkpJiZlLmNoYXJDb2RlQXQoMSk9PT1FZSYmKG49dD4yJiZEZShlLmNoYXJDb2RlQXQoMikpPzM6MixyPW4pO2xldCBvPS0xLHM9ITA7Zm9yKGxldCBuPXQtMTtuPj1yOy0tbilpZihEZShlLmNoYXJDb2RlQXQobikpKXtpZighcyl7bz1uO2JyZWFrfX1lbHNlIHM9ITE7aWYoLTE9PT1vKXtpZigtMT09PW4pcmV0dXJuIi4iO289bn1yZXR1cm4gZS5zbGljZSgwLG8pfSxiYXNlbmFtZShlLHQpe3ZvaWQgMCE9PXQmJlJlKHQsImV4dCIpLFJlKGUsInBhdGgiKTtsZXQgbixyPTAsaT0tMSxvPSEwO2lmKGUubGVuZ3RoPj0yJiZUZShlLmNoYXJDb2RlQXQoMCkpJiZlLmNoYXJDb2RlQXQoMSk9PT1FZSYmKHI9Miksdm9pZCAwIT09dCYmdC5sZW5ndGg+MCYmdC5sZW5ndGg8PWUubGVuZ3RoKXtpZih0PT09ZSlyZXR1cm4iIjtsZXQgcz10Lmxlbmd0aC0xLGE9LTE7Zm9yKG49ZS5sZW5ndGgtMTtuPj1yOy0tbil7Y29uc3QgbD1lLmNoYXJDb2RlQXQobik7aWYoRGUobCkpe2lmKCFvKXtyPW4rMTticmVha319ZWxzZS0xPT09YSYmKG89ITEsYT1uKzEpLHM+PTAmJihsPT09dC5jaGFyQ29kZUF0KHMpPy0xPT0tLXMmJihpPW4pOihzPS0xLGk9YSkpfXJldHVybiByPT09aT9pPWE6LTE9PT1pJiYoaT1lLmxlbmd0aCksZS5zbGljZShyLGkpfWZvcihuPWUubGVuZ3RoLTE7bj49cjstLW4paWYoRGUoZS5jaGFyQ29kZUF0KG4pKSl7aWYoIW8pe3I9bisxO2JyZWFrfX1lbHNlLTE9PT1pJiYobz0hMSxpPW4rMSk7cmV0dXJuLTE9PT1pPyIiOmUuc2xpY2UocixpKX0sZXh0bmFtZShlKXtSZShlLCJwYXRoIik7bGV0IHQ9MCxuPS0xLHI9MCxpPS0xLG89ITAscz0wO2UubGVuZ3RoPj0yJiZlLmNoYXJDb2RlQXQoMSk9PT1FZSYmVGUoZS5jaGFyQ29kZUF0KDApKSYmKHQ9cj0yKTtmb3IobGV0IGE9ZS5sZW5ndGgtMTthPj10Oy0tYSl7Y29uc3QgdD1lLmNoYXJDb2RlQXQoYSk7aWYoRGUodCkpe2lmKCFvKXtyPWErMTticmVha319ZWxzZS0xPT09aSYmKG89ITEsaT1hKzEpLHQ9PT1DZT8tMT09PW4/bj1hOjEhPT1zJiYocz0xKTotMSE9PW4mJihzPS0xKX1yZXR1cm4tMT09PW58fC0xPT09aXx8MD09PXN8fDE9PT1zJiZuPT09aS0xJiZuPT09cisxPyIiOmUuc2xpY2UobixpKX0sZm9ybWF0OnplLmJpbmQobnVsbCwiXFwiKSxwYXJzZShlKXtSZShlLCJwYXRoIik7Y29uc3QgdD17cm9vdDoiIixkaXI6IiIsYmFzZToiIixleHQ6IiIsbmFtZToiIn07aWYoMD09PWUubGVuZ3RoKXJldHVybiB0O2NvbnN0IG49ZS5sZW5ndGg7bGV0IHI9MCxpPWUuY2hhckNvZGVBdCgwKTtpZigxPT09bilyZXR1cm4gRGUoaSk/KHQucm9vdD10LmRpcj1lLHQpOih0LmJhc2U9dC5uYW1lPWUsdCk7aWYoRGUoaSkpe2lmKHI9MSxEZShlLmNoYXJDb2RlQXQoMSkpKXtsZXQgdD0yLGk9dDtmb3IoO3Q8biYmIURlKGUuY2hhckNvZGVBdCh0KSk7KXQrKztpZih0PG4mJnQhPT1pKXtmb3IoaT10O3Q8biYmRGUoZS5jaGFyQ29kZUF0KHQpKTspdCsrO2lmKHQ8biYmdCE9PWkpe2ZvcihpPXQ7dDxuJiYhRGUoZS5jaGFyQ29kZUF0KHQpKTspdCsrO3Q9PT1uP3I9dDp0IT09aSYmKHI9dCsxKX19fX1lbHNlIGlmKFRlKGkpJiZlLmNoYXJDb2RlQXQoMSk9PT1FZSl7aWYobjw9MilyZXR1cm4gdC5yb290PXQuZGlyPWUsdDtpZihyPTIsRGUoZS5jaGFyQ29kZUF0KDIpKSl7aWYoMz09PW4pcmV0dXJuIHQucm9vdD10LmRpcj1lLHQ7cj0zfX1yPjAmJih0LnJvb3Q9ZS5zbGljZSgwLHIpKTtsZXQgbz0tMSxzPXIsYT0tMSxsPSEwLGM9ZS5sZW5ndGgtMSxoPTA7Zm9yKDtjPj1yOy0tYylpZihpPWUuY2hhckNvZGVBdChjKSxEZShpKSl7aWYoIWwpe3M9YysxO2JyZWFrfX1lbHNlLTE9PT1hJiYobD0hMSxhPWMrMSksaT09PUNlPy0xPT09bz9vPWM6MSE9PWgmJihoPTEpOi0xIT09byYmKGg9LTEpO3JldHVybi0xIT09YSYmKC0xPT09b3x8MD09PWh8fDE9PT1oJiZvPT09YS0xJiZvPT09cysxP3QuYmFzZT10Lm5hbWU9ZS5zbGljZShzLGEpOih0Lm5hbWU9ZS5zbGljZShzLG8pLHQuYmFzZT1lLnNsaWNlKHMsYSksdC5leHQ9ZS5zbGljZShvLGEpKSksdC5kaXI9cz4wJiZzIT09cj9lLnNsaWNlKDAscy0xKTp0LnJvb3QsdH0sc2VwOiJcXCIsZGVsaW1pdGVyOiI7Iix3aW4zMjpudWxsLHBvc2l4Om51bGx9LE1lPXtyZXNvbHZlKC4uLmUpe2xldCB0PSIiLG49ITE7Zm9yKGxldCByPWUubGVuZ3RoLTE7cj49LTEmJiFuO3ItLSl7Y29uc3QgaT1yPj0wP2Vbcl06d2UoKTtSZShpLCJwYXRoIiksMCE9PWkubGVuZ3RoJiYodD1gJHtpfS8ke3R9YCxuPWkuY2hhckNvZGVBdCgwKT09PWtlKX1yZXR1cm4gdD1BZSh0LCFuLCIvIixOZSksbj9gLyR7dH1gOnQubGVuZ3RoPjA/dDoiLiJ9LG5vcm1hbGl6ZShlKXtpZihSZShlLCJwYXRoIiksMD09PWUubGVuZ3RoKXJldHVybiIuIjtjb25zdCB0PWUuY2hhckNvZGVBdCgwKT09PWtlLG49ZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpPT09a2U7cmV0dXJuIDA9PT0oZT1BZShlLCF0LCIvIixOZSkpLmxlbmd0aD90PyIvIjpuPyIuLyI6Ii4iOihuJiYoZSs9Ii8iKSx0P2AvJHtlfWA6ZSl9LGlzQWJzb2x1dGU6ZT0+KFJlKGUsInBhdGgiKSxlLmxlbmd0aD4wJiZlLmNoYXJDb2RlQXQoMCk9PT1rZSksam9pbiguLi5lKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIi4iO2xldCB0O2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7KytuKXtjb25zdCByPWVbbl07UmUociwicGF0aCIpLHIubGVuZ3RoPjAmJih2b2lkIDA9PT10P3Q9cjp0Kz1gLyR7cn1gKX1yZXR1cm4gdm9pZCAwPT09dD8iLiI6TWUubm9ybWFsaXplKHQpfSxyZWxhdGl2ZShlLHQpe2lmKFJlKGUsImZyb20iKSxSZSh0LCJ0byIpLGU9PT10KXJldHVybiIiO2lmKChlPU1lLnJlc29sdmUoZSkpPT09KHQ9TWUucmVzb2x2ZSh0KSkpcmV0dXJuIiI7Y29uc3Qgbj1lLmxlbmd0aCxyPW4tMSxpPXQubGVuZ3RoLTEsbz1yPGk/cjppO2xldCBzPS0xLGE9MDtmb3IoO2E8bzthKyspe2NvbnN0IG49ZS5jaGFyQ29kZUF0KDErYSk7aWYobiE9PXQuY2hhckNvZGVBdCgxK2EpKWJyZWFrO249PT1rZSYmKHM9YSl9aWYoYT09PW8paWYoaT5vKXtpZih0LmNoYXJDb2RlQXQoMSthKT09PWtlKXJldHVybiB0LnNsaWNlKDErYSsxKTtpZigwPT09YSlyZXR1cm4gdC5zbGljZSgxK2EpfWVsc2Ugcj5vJiYoZS5jaGFyQ29kZUF0KDErYSk9PT1rZT9zPWE6MD09PWEmJihzPTApKTtsZXQgbD0iIjtmb3IoYT0xK3MrMTthPD1uOysrYSlhIT09biYmZS5jaGFyQ29kZUF0KGEpIT09a2V8fChsKz0wPT09bC5sZW5ndGg/Ii4uIjoiLy4uIik7cmV0dXJuYCR7bH0ke3Quc2xpY2UoMStzKX1gfSx0b05hbWVzcGFjZWRQYXRoOmU9PmUsZGlybmFtZShlKXtpZihSZShlLCJwYXRoIiksMD09PWUubGVuZ3RoKXJldHVybiIuIjtjb25zdCB0PWUuY2hhckNvZGVBdCgwKT09PWtlO2xldCBuPS0xLHI9ITA7Zm9yKGxldCB0PWUubGVuZ3RoLTE7dD49MTstLXQpaWYoZS5jaGFyQ29kZUF0KHQpPT09a2Upe2lmKCFyKXtuPXQ7YnJlYWt9fWVsc2Ugcj0hMTtyZXR1cm4tMT09PW4/dD8iLyI6Ii4iOnQmJjE9PT1uPyIvLyI6ZS5zbGljZSgwLG4pfSxiYXNlbmFtZShlLHQpe3ZvaWQgMCE9PXQmJlJlKHQsImV4dCIpLFJlKGUsInBhdGgiKTtsZXQgbixyPTAsaT0tMSxvPSEwO2lmKHZvaWQgMCE9PXQmJnQubGVuZ3RoPjAmJnQubGVuZ3RoPD1lLmxlbmd0aCl7aWYodD09PWUpcmV0dXJuIiI7bGV0IHM9dC5sZW5ndGgtMSxhPS0xO2ZvcihuPWUubGVuZ3RoLTE7bj49MDstLW4pe2NvbnN0IGw9ZS5jaGFyQ29kZUF0KG4pO2lmKGw9PT1rZSl7aWYoIW8pe3I9bisxO2JyZWFrfX1lbHNlLTE9PT1hJiYobz0hMSxhPW4rMSkscz49MCYmKGw9PT10LmNoYXJDb2RlQXQocyk/LTE9PS0tcyYmKGk9bik6KHM9LTEsaT1hKSl9cmV0dXJuIHI9PT1pP2k9YTotMT09PWkmJihpPWUubGVuZ3RoKSxlLnNsaWNlKHIsaSl9Zm9yKG49ZS5sZW5ndGgtMTtuPj0wOy0tbilpZihlLmNoYXJDb2RlQXQobik9PT1rZSl7aWYoIW8pe3I9bisxO2JyZWFrfX1lbHNlLTE9PT1pJiYobz0hMSxpPW4rMSk7cmV0dXJuLTE9PT1pPyIiOmUuc2xpY2UocixpKX0sZXh0bmFtZShlKXtSZShlLCJwYXRoIik7bGV0IHQ9LTEsbj0wLHI9LTEsaT0hMCxvPTA7Zm9yKGxldCBzPWUubGVuZ3RoLTE7cz49MDstLXMpe2NvbnN0IGE9ZS5jaGFyQ29kZUF0KHMpO2lmKGEhPT1rZSktMT09PXImJihpPSExLHI9cysxKSxhPT09Q2U/LTE9PT10P3Q9czoxIT09byYmKG89MSk6LTEhPT10JiYobz0tMSk7ZWxzZSBpZighaSl7bj1zKzE7YnJlYWt9fXJldHVybi0xPT09dHx8LTE9PT1yfHwwPT09b3x8MT09PW8mJnQ9PT1yLTEmJnQ9PT1uKzE/IiI6ZS5zbGljZSh0LHIpfSxmb3JtYXQ6emUuYmluZChudWxsLCIvIikscGFyc2UoZSl7UmUoZSwicGF0aCIpO2NvbnN0IHQ9e3Jvb3Q6IiIsZGlyOiIiLGJhc2U6IiIsZXh0OiIiLG5hbWU6IiJ9O2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gdDtjb25zdCBuPWUuY2hhckNvZGVBdCgwKT09PWtlO2xldCByO24/KHQucm9vdD0iLyIscj0xKTpyPTA7bGV0IGk9LTEsbz0wLHM9LTEsYT0hMCxsPWUubGVuZ3RoLTEsYz0wO2Zvcig7bD49cjstLWwpe2NvbnN0IHQ9ZS5jaGFyQ29kZUF0KGwpO2lmKHQhPT1rZSktMT09PXMmJihhPSExLHM9bCsxKSx0PT09Q2U/LTE9PT1pP2k9bDoxIT09YyYmKGM9MSk6LTEhPT1pJiYoYz0tMSk7ZWxzZSBpZighYSl7bz1sKzE7YnJlYWt9fWlmKC0xIT09cyl7Y29uc3Qgcj0wPT09byYmbj8xOm87LTE9PT1pfHwwPT09Y3x8MT09PWMmJmk9PT1zLTEmJmk9PT1vKzE/dC5iYXNlPXQubmFtZT1lLnNsaWNlKHIscyk6KHQubmFtZT1lLnNsaWNlKHIsaSksdC5iYXNlPWUuc2xpY2UocixzKSx0LmV4dD1lLnNsaWNlKGkscykpfXJldHVybiBvPjA/dC5kaXI9ZS5zbGljZSgwLG8tMSk6biYmKHQuZGlyPSIvIiksdH0sc2VwOiIvIixkZWxpbWl0ZXI6IjoiLHdpbjMyOm51bGwscG9zaXg6bnVsbH07TWUud2luMzI9SWUud2luMzI9SWUsTWUucG9zaXg9SWUucG9zaXg9TWUsIndpbjMyIj09PVNlP0llLm5vcm1hbGl6ZTpNZS5ub3JtYWxpemUsIndpbjMyIj09PVNlP0llLnJlc29sdmU6TWUucmVzb2x2ZSwid2luMzIiPT09U2U/SWUucmVsYXRpdmU6TWUucmVsYXRpdmUsIndpbjMyIj09PVNlP0llLmRpcm5hbWU6TWUuZGlybmFtZSwid2luMzIiPT09U2U/SWUuYmFzZW5hbWU6TWUuYmFzZW5hbWUsIndpbjMyIj09PVNlP0llLmV4dG5hbWU6TWUuZXh0bmFtZSwid2luMzIiPT09U2U/SWUuc2VwOk1lLnNlcDtjb25zdCBQZT0vXlx3W1x3XGQrLi1dKiQvLE9lPS9eXC8vLExlPS9eXC9cLy87ZnVuY3Rpb24gV2UoZSx0KXtpZighZS5zY2hlbWUmJnQpdGhyb3cgbmV3IEVycm9yKGBbVXJpRXJyb3JdOiBTY2hlbWUgaXMgbWlzc2luZzoge3NjaGVtZTogIiIsIGF1dGhvcml0eTogIiR7ZS5hdXRob3JpdHl9IiwgcGF0aDogIiR7ZS5wYXRofSIsIHF1ZXJ5OiAiJHtlLnF1ZXJ5fSIsIGZyYWdtZW50OiAiJHtlLmZyYWdtZW50fSJ9YCk7aWYoZS5zY2hlbWUmJiFQZS50ZXN0KGUuc2NoZW1lKSl0aHJvdyBuZXcgRXJyb3IoIltVcmlFcnJvcl06IFNjaGVtZSBjb250YWlucyBpbGxlZ2FsIGNoYXJhY3RlcnMuIik7aWYoZS5wYXRoKWlmKGUuYXV0aG9yaXR5KXtpZighT2UudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgY29udGFpbnMgYW4gYXV0aG9yaXR5IGNvbXBvbmVudCwgdGhlbiB0aGUgcGF0aCBjb21wb25lbnQgbXVzdCBlaXRoZXIgYmUgZW1wdHkgb3IgYmVnaW4gd2l0aCBhIHNsYXNoICgiLyIpIGNoYXJhY3RlcicpfWVsc2UgaWYoTGUudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgZG9lcyBub3QgY29udGFpbiBhbiBhdXRob3JpdHkgY29tcG9uZW50LCB0aGVuIHRoZSBwYXRoIGNhbm5vdCBiZWdpbiB3aXRoIHR3byBzbGFzaCBjaGFyYWN0ZXJzICgiLy8iKScpfWNvbnN0IFZlPSIiLFVlPSIvIixLZT0vXigoW146Lz8jXSs/KTopPyhcL1wvKFteLz8jXSopKT8oW14/I10qKShcPyhbXiNdKikpPygjKC4qKSk/LztsZXQgQmU9Y2xhc3MgZXtjb25zdHJ1Y3RvcihlLHQsbixyLGksbz0hMSl7Im9iamVjdCI9PXR5cGVvZiBlPyh0aGlzLnNjaGVtZT1lLnNjaGVtZXx8VmUsdGhpcy5hdXRob3JpdHk9ZS5hdXRob3JpdHl8fFZlLHRoaXMucGF0aD1lLnBhdGh8fFZlLHRoaXMucXVlcnk9ZS5xdWVyeXx8VmUsdGhpcy5mcmFnbWVudD1lLmZyYWdtZW50fHxWZSk6KHRoaXMuc2NoZW1lPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGV8fHQ/ZToiZmlsZSJ9KGUsbyksdGhpcy5hdXRob3JpdHk9dHx8VmUsdGhpcy5wYXRoPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2UiaHR0cHMiOmNhc2UiaHR0cCI6Y2FzZSJmaWxlIjp0P3RbMF0hPT1VZSYmKHQ9VWUrdCk6dD1VZX1yZXR1cm4gdH0odGhpcy5zY2hlbWUsbnx8VmUpLHRoaXMucXVlcnk9cnx8VmUsdGhpcy5mcmFnbWVudD1pfHxWZSxXZSh0aGlzLG8pKX1zdGF0aWMgaXNVcmkodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBlfHwhIXQmJigic3RyaW5nIj09dHlwZW9mIHQuYXV0aG9yaXR5JiYic3RyaW5nIj09dHlwZW9mIHQuZnJhZ21lbnQmJiJzdHJpbmciPT10eXBlb2YgdC5wYXRoJiYic3RyaW5nIj09dHlwZW9mIHQucXVlcnkmJiJzdHJpbmciPT10eXBlb2YgdC5zY2hlbWUmJiJzdHJpbmciPT10eXBlb2YgdC5mc1BhdGgmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LndpdGgmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnRvU3RyaW5nKX1nZXQgZnNQYXRoKCl7cmV0dXJuIEplKHRoaXMsITEpfXdpdGgoZSl7aWYoIWUpcmV0dXJuIHRoaXM7bGV0e3NjaGVtZTp0LGF1dGhvcml0eTpuLHBhdGg6cixxdWVyeTppLGZyYWdtZW50Om99PWU7cmV0dXJuIHZvaWQgMD09PXQ/dD10aGlzLnNjaGVtZTpudWxsPT09dCYmKHQ9VmUpLHZvaWQgMD09PW4/bj10aGlzLmF1dGhvcml0eTpudWxsPT09biYmKG49VmUpLHZvaWQgMD09PXI/cj10aGlzLnBhdGg6bnVsbD09PXImJihyPVZlKSx2b2lkIDA9PT1pP2k9dGhpcy5xdWVyeTpudWxsPT09aSYmKGk9VmUpLHZvaWQgMD09PW8/bz10aGlzLmZyYWdtZW50Om51bGw9PT1vJiYobz1WZSksdD09PXRoaXMuc2NoZW1lJiZuPT09dGhpcy5hdXRob3JpdHkmJnI9PT10aGlzLnBhdGgmJmk9PT10aGlzLnF1ZXJ5JiZvPT09dGhpcy5mcmFnbWVudD90aGlzOm5ldyBxZSh0LG4scixpLG8pfXN0YXRpYyBwYXJzZShlLHQ9ITEpe2NvbnN0IG49S2UuZXhlYyhlKTtyZXR1cm4gbj9uZXcgcWUoblsyXXx8VmUsUWUobls0XXx8VmUpLFFlKG5bNV18fFZlKSxRZShuWzddfHxWZSksUWUobls5XXx8VmUpLHQpOm5ldyBxZShWZSxWZSxWZSxWZSxWZSl9c3RhdGljIGZpbGUoZSl7bGV0IHQ9VmU7aWYoTiYmKGU9ZS5yZXBsYWNlKC9cXC9nLFVlKSksZVswXT09PVVlJiZlWzFdPT09VWUpe2NvbnN0IG49ZS5pbmRleE9mKFVlLDIpOy0xPT09bj8odD1lLnN1YnN0cmluZygyKSxlPVVlKToodD1lLnN1YnN0cmluZygyLG4pLGU9ZS5zdWJzdHJpbmcobil8fFVlKX1yZXR1cm4gbmV3IHFlKCJmaWxlIix0LGUsVmUsVmUpfXN0YXRpYyBmcm9tKGUpe2NvbnN0IHQ9bmV3IHFlKGUuc2NoZW1lLGUuYXV0aG9yaXR5LGUucGF0aCxlLnF1ZXJ5LGUuZnJhZ21lbnQpO3JldHVybiBXZSh0LCEwKSx0fXN0YXRpYyBqb2luUGF0aCh0LC4uLm4pe2lmKCF0LnBhdGgpdGhyb3cgbmV3IEVycm9yKCJbVXJpRXJyb3JdOiBjYW5ub3QgY2FsbCBqb2luUGF0aCBvbiBVUkkgd2l0aG91dCBwYXRoIik7bGV0IHI7cmV0dXJuIHI9TiYmImZpbGUiPT09dC5zY2hlbWU/ZS5maWxlKEllLmpvaW4oSmUodCwhMCksLi4ubikpLnBhdGg6TWUuam9pbih0LnBhdGgsLi4ubiksdC53aXRoKHtwYXRoOnJ9KX10b1N0cmluZyhlPSExKXtyZXR1cm4gWGUodGhpcyxlKX10b0pTT04oKXtyZXR1cm4gdGhpc31zdGF0aWMgcmV2aXZlKHQpe2lmKHQpe2lmKHQgaW5zdGFuY2VvZiBlKXJldHVybiB0O3tjb25zdCBlPW5ldyBxZSh0KTtyZXR1cm4gZS5fZm9ybWF0dGVkPXQuZXh0ZXJuYWwsZS5fZnNQYXRoPXQuX3NlcD09PWplP3QuZnNQYXRoOm51bGwsZX19cmV0dXJuIHR9fTtjb25zdCBqZT1OPzE6dm9pZCAwO2NsYXNzIHFlIGV4dGVuZHMgQmV7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX2Zvcm1hdHRlZD1udWxsLHRoaXMuX2ZzUGF0aD1udWxsfWdldCBmc1BhdGgoKXtyZXR1cm4gdGhpcy5fZnNQYXRofHwodGhpcy5fZnNQYXRoPUplKHRoaXMsITEpKSx0aGlzLl9mc1BhdGh9dG9TdHJpbmcoZT0hMSl7cmV0dXJuIGU/WGUodGhpcywhMCk6KHRoaXMuX2Zvcm1hdHRlZHx8KHRoaXMuX2Zvcm1hdHRlZD1YZSh0aGlzLCExKSksdGhpcy5fZm9ybWF0dGVkKX10b0pTT04oKXtjb25zdCBlPXskbWlkOjF9O3JldHVybiB0aGlzLl9mc1BhdGgmJihlLmZzUGF0aD10aGlzLl9mc1BhdGgsZS5fc2VwPWplKSx0aGlzLl9mb3JtYXR0ZWQmJihlLmV4dGVybmFsPXRoaXMuX2Zvcm1hdHRlZCksdGhpcy5wYXRoJiYoZS5wYXRoPXRoaXMucGF0aCksdGhpcy5zY2hlbWUmJihlLnNjaGVtZT10aGlzLnNjaGVtZSksdGhpcy5hdXRob3JpdHkmJihlLmF1dGhvcml0eT10aGlzLmF1dGhvcml0eSksdGhpcy5xdWVyeSYmKGUucXVlcnk9dGhpcy5xdWVyeSksdGhpcy5mcmFnbWVudCYmKGUuZnJhZ21lbnQ9dGhpcy5mcmFnbWVudCksZX19Y29uc3QgJGU9ezU4OiIlM0EiLDQ3OiIlMkYiLDYzOiIlM0YiLDM1OiIlMjMiLDkxOiIlNUIiLDkzOiIlNUQiLDY0OiIlNDAiLDMzOiIlMjEiLDM2OiIlMjQiLDM4OiIlMjYiLDM5OiIlMjciLDQwOiIlMjgiLDQxOiIlMjkiLDQyOiIlMkEiLDQzOiIlMkIiLDQ0OiIlMkMiLDU5OiIlM0IiLDYxOiIlM0QiLDMyOiIlMjAifTtmdW5jdGlvbiBIZShlLHQpe2xldCBuLHI9LTE7Zm9yKGxldCBpPTA7aTxlLmxlbmd0aDtpKyspe2NvbnN0IG89ZS5jaGFyQ29kZUF0KGkpO2lmKG8+PTk3JiZvPD0xMjJ8fG8+PTY1JiZvPD05MHx8bz49NDgmJm88PTU3fHw0NT09PW98fDQ2PT09b3x8OTU9PT1vfHwxMjY9PT1vfHx0JiY0Nz09PW8pLTEhPT1yJiYobis9ZW5jb2RlVVJJQ29tcG9uZW50KGUuc3Vic3RyaW5nKHIsaSkpLHI9LTEpLHZvaWQgMCE9PW4mJihuKz1lLmNoYXJBdChpKSk7ZWxzZXt2b2lkIDA9PT1uJiYobj1lLnN1YnN0cigwLGkpKTtjb25zdCB0PSRlW29dO3ZvaWQgMCE9PXQ/KC0xIT09ciYmKG4rPWVuY29kZVVSSUNvbXBvbmVudChlLnN1YnN0cmluZyhyLGkpKSxyPS0xKSxuKz10KTotMT09PXImJihyPWkpfX1yZXR1cm4tMSE9PXImJihuKz1lbmNvZGVVUklDb21wb25lbnQoZS5zdWJzdHJpbmcocikpKSx2b2lkIDAhPT1uP246ZX1mdW5jdGlvbiBHZShlKXtsZXQgdDtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7Y29uc3Qgcj1lLmNoYXJDb2RlQXQobik7MzU9PT1yfHw2Mz09PXI/KHZvaWQgMD09PXQmJih0PWUuc3Vic3RyKDAsbikpLHQrPSRlW3JdKTp2b2lkIDAhPT10JiYodCs9ZVtuXSl9cmV0dXJuIHZvaWQgMCE9PXQ/dDplfWZ1bmN0aW9uIEplKGUsdCl7bGV0IG47cmV0dXJuIG49ZS5hdXRob3JpdHkmJmUucGF0aC5sZW5ndGg+MSYmImZpbGUiPT09ZS5zY2hlbWU/YC8vJHtlLmF1dGhvcml0eX0ke2UucGF0aH1gOjQ3PT09ZS5wYXRoLmNoYXJDb2RlQXQoMCkmJihlLnBhdGguY2hhckNvZGVBdCgxKT49NjUmJmUucGF0aC5jaGFyQ29kZUF0KDEpPD05MHx8ZS5wYXRoLmNoYXJDb2RlQXQoMSk+PTk3JiZlLnBhdGguY2hhckNvZGVBdCgxKTw9MTIyKSYmNTg9PT1lLnBhdGguY2hhckNvZGVBdCgyKT90P2UucGF0aC5zdWJzdHIoMSk6ZS5wYXRoWzFdLnRvTG93ZXJDYXNlKCkrZS5wYXRoLnN1YnN0cigyKTplLnBhdGgsTiYmKG49bi5yZXBsYWNlKC9cLy9nLCJcXCIpKSxufWZ1bmN0aW9uIFhlKGUsdCl7Y29uc3Qgbj10P0dlOkhlO2xldCByPSIiLHtzY2hlbWU6aSxhdXRob3JpdHk6byxwYXRoOnMscXVlcnk6YSxmcmFnbWVudDpsfT1lO2lmKGkmJihyKz1pLHIrPSI6IiksKG98fCJmaWxlIj09PWkpJiYocis9VWUscis9VWUpLG8pe2xldCBlPW8uaW5kZXhPZigiQCIpO2lmKC0xIT09ZSl7Y29uc3QgdD1vLnN1YnN0cigwLGUpO289by5zdWJzdHIoZSsxKSxlPXQuaW5kZXhPZigiOiIpLC0xPT09ZT9yKz1uKHQsITEpOihyKz1uKHQuc3Vic3RyKDAsZSksITEpLHIrPSI6IixyKz1uKHQuc3Vic3RyKGUrMSksITEpKSxyKz0iQCJ9bz1vLnRvTG93ZXJDYXNlKCksZT1vLmluZGV4T2YoIjoiKSwtMT09PWU/cis9bihvLCExKToocis9bihvLnN1YnN0cigwLGUpLCExKSxyKz1vLnN1YnN0cihlKSl9aWYocyl7aWYocy5sZW5ndGg+PTMmJjQ3PT09cy5jaGFyQ29kZUF0KDApJiY1OD09PXMuY2hhckNvZGVBdCgyKSl7Y29uc3QgZT1zLmNoYXJDb2RlQXQoMSk7ZT49NjUmJmU8PTkwJiYocz1gLyR7U3RyaW5nLmZyb21DaGFyQ29kZShlKzMyKX06JHtzLnN1YnN0cigzKX1gKX1lbHNlIGlmKHMubGVuZ3RoPj0yJiY1OD09PXMuY2hhckNvZGVBdCgxKSl7Y29uc3QgZT1zLmNoYXJDb2RlQXQoMCk7ZT49NjUmJmU8PTkwJiYocz1gJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGUrMzIpfToke3Muc3Vic3RyKDIpfWApfXIrPW4ocywhMCl9cmV0dXJuIGEmJihyKz0iPyIscis9bihhLCExKSksbCYmKHIrPSIjIixyKz10P2w6SGUobCwhMSkpLHJ9ZnVuY3Rpb24gWWUoZSl7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZSl9Y2F0Y2godCl7cmV0dXJuIGUubGVuZ3RoPjM/ZS5zdWJzdHIoMCwzKStZZShlLnN1YnN0cigzKSk6ZX19Y29uc3QgWmU9LyglWzAtOUEtWmEtel1bMC05QS1aYS16XSkrL2c7ZnVuY3Rpb24gUWUoZSl7cmV0dXJuIGUubWF0Y2goWmUpP2UucmVwbGFjZShaZSwoZT0+WWUoZSkpKTplfWxldCBldD1jbGFzcyBle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5saW5lTnVtYmVyPWUsdGhpcy5jb2x1bW49dH13aXRoKHQ9dGhpcy5saW5lTnVtYmVyLG49dGhpcy5jb2x1bW4pe3JldHVybiB0PT09dGhpcy5saW5lTnVtYmVyJiZuPT09dGhpcy5jb2x1bW4/dGhpczpuZXcgZSh0LG4pfWRlbHRhKGU9MCx0PTApe3JldHVybiB0aGlzLndpdGgodGhpcy5saW5lTnVtYmVyK2UsdGhpcy5jb2x1bW4rdCl9ZXF1YWxzKHQpe3JldHVybiBlLmVxdWFscyh0aGlzLHQpfXN0YXRpYyBlcXVhbHMoZSx0KXtyZXR1cm4hZSYmIXR8fCEhZSYmISF0JiZlLmxpbmVOdW1iZXI9PT10LmxpbmVOdW1iZXImJmUuY29sdW1uPT09dC5jb2x1bW59aXNCZWZvcmUodCl7cmV0dXJuIGUuaXNCZWZvcmUodGhpcyx0KX1zdGF0aWMgaXNCZWZvcmUoZSx0KXtyZXR1cm4gZS5saW5lTnVtYmVyPHQubGluZU51bWJlcnx8ISh0LmxpbmVOdW1iZXI8ZS5saW5lTnVtYmVyKSYmZS5jb2x1bW48dC5jb2x1bW59aXNCZWZvcmVPckVxdWFsKHQpe3JldHVybiBlLmlzQmVmb3JlT3JFcXVhbCh0aGlzLHQpfXN0YXRpYyBpc0JlZm9yZU9yRXF1YWwoZSx0KXtyZXR1cm4gZS5saW5lTnVtYmVyPHQubGluZU51bWJlcnx8ISh0LmxpbmVOdW1iZXI8ZS5saW5lTnVtYmVyKSYmZS5jb2x1bW48PXQuY29sdW1ufXN0YXRpYyBjb21wYXJlKGUsdCl7Y29uc3Qgbj0wfGUubGluZU51bWJlcixyPTB8dC5saW5lTnVtYmVyO2lmKG49PT1yKXtyZXR1cm4oMHxlLmNvbHVtbiktKDB8dC5jb2x1bW4pfXJldHVybiBuLXJ9Y2xvbmUoKXtyZXR1cm4gbmV3IGUodGhpcy5saW5lTnVtYmVyLHRoaXMuY29sdW1uKX10b1N0cmluZygpe3JldHVybiIoIit0aGlzLmxpbmVOdW1iZXIrIiwiK3RoaXMuY29sdW1uKyIpIn1zdGF0aWMgbGlmdCh0KXtyZXR1cm4gbmV3IGUodC5saW5lTnVtYmVyLHQuY29sdW1uKX1zdGF0aWMgaXNJUG9zaXRpb24oZSl7cmV0dXJuIGUmJiJudW1iZXIiPT10eXBlb2YgZS5saW5lTnVtYmVyJiYibnVtYmVyIj09dHlwZW9mIGUuY29sdW1ufX0sdHQ9Y2xhc3MgZXtjb25zdHJ1Y3RvcihlLHQsbixyKXtlPm58fGU9PT1uJiZ0PnI/KHRoaXMuc3RhcnRMaW5lTnVtYmVyPW4sdGhpcy5zdGFydENvbHVtbj1yLHRoaXMuZW5kTGluZU51bWJlcj1lLHRoaXMuZW5kQ29sdW1uPXQpOih0aGlzLnN0YXJ0TGluZU51bWJlcj1lLHRoaXMuc3RhcnRDb2x1bW49dCx0aGlzLmVuZExpbmVOdW1iZXI9bix0aGlzLmVuZENvbHVtbj1yKX1pc0VtcHR5KCl7cmV0dXJuIGUuaXNFbXB0eSh0aGlzKX1zdGF0aWMgaXNFbXB0eShlKXtyZXR1cm4gZS5zdGFydExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJmUuc3RhcnRDb2x1bW49PT1lLmVuZENvbHVtbn1jb250YWluc1Bvc2l0aW9uKHQpe3JldHVybiBlLmNvbnRhaW5zUG9zaXRpb24odGhpcyx0KX1zdGF0aWMgY29udGFpbnNQb3NpdGlvbihlLHQpe3JldHVybiEodC5saW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmxpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyKSYmKCEodC5saW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuY29sdW1uPGUuc3RhcnRDb2x1bW4pJiYhKHQubGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlciYmdC5jb2x1bW4+ZS5lbmRDb2x1bW4pKX1zdGF0aWMgc3RyaWN0Q29udGFpbnNQb3NpdGlvbihlLHQpe3JldHVybiEodC5saW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmxpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyKSYmKCEodC5saW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuY29sdW1uPD1lLnN0YXJ0Q29sdW1uKSYmISh0LmxpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJnQuY29sdW1uPj1lLmVuZENvbHVtbikpfWNvbnRhaW5zUmFuZ2UodCl7cmV0dXJuIGUuY29udGFpbnNSYW5nZSh0aGlzLHQpfXN0YXRpYyBjb250YWluc1JhbmdlKGUsdCl7cmV0dXJuISh0LnN0YXJ0TGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyKSYmKCEodC5zdGFydExpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyKSYmKCEodC5zdGFydExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5zdGFydENvbHVtbjxlLnN0YXJ0Q29sdW1uKSYmISh0LmVuZExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPmUuZW5kQ29sdW1uKSkpfXN0cmljdENvbnRhaW5zUmFuZ2UodCl7cmV0dXJuIGUuc3RyaWN0Q29udGFpbnNSYW5nZSh0aGlzLHQpfXN0YXRpYyBzdHJpY3RDb250YWluc1JhbmdlKGUsdCl7cmV0dXJuISh0LnN0YXJ0TGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyKSYmKCEodC5zdGFydExpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyKSYmKCEodC5zdGFydExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5zdGFydENvbHVtbjw9ZS5zdGFydENvbHVtbikmJiEodC5lbmRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZ0LmVuZENvbHVtbj49ZS5lbmRDb2x1bW4pKSl9cGx1c1JhbmdlKHQpe3JldHVybiBlLnBsdXNSYW5nZSh0aGlzLHQpfXN0YXRpYyBwbHVzUmFuZ2UodCxuKXtsZXQgcixpLG8scztyZXR1cm4gbi5zdGFydExpbmVOdW1iZXI8dC5zdGFydExpbmVOdW1iZXI/KHI9bi5zdGFydExpbmVOdW1iZXIsaT1uLnN0YXJ0Q29sdW1uKTpuLnN0YXJ0TGluZU51bWJlcj09PXQuc3RhcnRMaW5lTnVtYmVyPyhyPW4uc3RhcnRMaW5lTnVtYmVyLGk9TWF0aC5taW4obi5zdGFydENvbHVtbix0LnN0YXJ0Q29sdW1uKSk6KHI9dC5zdGFydExpbmVOdW1iZXIsaT10LnN0YXJ0Q29sdW1uKSxuLmVuZExpbmVOdW1iZXI+dC5lbmRMaW5lTnVtYmVyPyhvPW4uZW5kTGluZU51bWJlcixzPW4uZW5kQ29sdW1uKTpuLmVuZExpbmVOdW1iZXI9PT10LmVuZExpbmVOdW1iZXI/KG89bi5lbmRMaW5lTnVtYmVyLHM9TWF0aC5tYXgobi5lbmRDb2x1bW4sdC5lbmRDb2x1bW4pKToobz10LmVuZExpbmVOdW1iZXIscz10LmVuZENvbHVtbiksbmV3IGUocixpLG8scyl9aW50ZXJzZWN0UmFuZ2VzKHQpe3JldHVybiBlLmludGVyc2VjdFJhbmdlcyh0aGlzLHQpfXN0YXRpYyBpbnRlcnNlY3RSYW5nZXModCxuKXtsZXQgcj10LnN0YXJ0TGluZU51bWJlcixpPXQuc3RhcnRDb2x1bW4sbz10LmVuZExpbmVOdW1iZXIscz10LmVuZENvbHVtbjtjb25zdCBhPW4uc3RhcnRMaW5lTnVtYmVyLGw9bi5zdGFydENvbHVtbixjPW4uZW5kTGluZU51bWJlcixoPW4uZW5kQ29sdW1uO3JldHVybiByPGE/KHI9YSxpPWwpOnI9PT1hJiYoaT1NYXRoLm1heChpLGwpKSxvPmM/KG89YyxzPWgpOm89PT1jJiYocz1NYXRoLm1pbihzLGgpKSxyPm98fHI9PT1vJiZpPnM/bnVsbDpuZXcgZShyLGksbyxzKX1lcXVhbHNSYW5nZSh0KXtyZXR1cm4gZS5lcXVhbHNSYW5nZSh0aGlzLHQpfXN0YXRpYyBlcXVhbHNSYW5nZShlLHQpe3JldHVybiEhZSYmISF0JiZlLnN0YXJ0TGluZU51bWJlcj09PXQuc3RhcnRMaW5lTnVtYmVyJiZlLnN0YXJ0Q29sdW1uPT09dC5zdGFydENvbHVtbiYmZS5lbmRMaW5lTnVtYmVyPT09dC5lbmRMaW5lTnVtYmVyJiZlLmVuZENvbHVtbj09PXQuZW5kQ29sdW1ufWdldEVuZFBvc2l0aW9uKCl7cmV0dXJuIGUuZ2V0RW5kUG9zaXRpb24odGhpcyl9c3RhdGljIGdldEVuZFBvc2l0aW9uKGUpe3JldHVybiBuZXcgZXQoZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uKX1nZXRTdGFydFBvc2l0aW9uKCl7cmV0dXJuIGUuZ2V0U3RhcnRQb3NpdGlvbih0aGlzKX1zdGF0aWMgZ2V0U3RhcnRQb3NpdGlvbihlKXtyZXR1cm4gbmV3IGV0KGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4pfXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuc3RhcnRMaW5lTnVtYmVyKyIsIit0aGlzLnN0YXJ0Q29sdW1uKyIgLT4gIit0aGlzLmVuZExpbmVOdW1iZXIrIiwiK3RoaXMuZW5kQ29sdW1uKyJdIn1zZXRFbmRQb3NpdGlvbih0LG4pe3JldHVybiBuZXcgZSh0aGlzLnN0YXJ0TGluZU51bWJlcix0aGlzLnN0YXJ0Q29sdW1uLHQsbil9c2V0U3RhcnRQb3NpdGlvbih0LG4pe3JldHVybiBuZXcgZSh0LG4sdGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uKX1jb2xsYXBzZVRvU3RhcnQoKXtyZXR1cm4gZS5jb2xsYXBzZVRvU3RhcnQodGhpcyl9c3RhdGljIGNvbGxhcHNlVG9TdGFydCh0KXtyZXR1cm4gbmV3IGUodC5zdGFydExpbmVOdW1iZXIsdC5zdGFydENvbHVtbix0LnN0YXJ0TGluZU51bWJlcix0LnN0YXJ0Q29sdW1uKX1zdGF0aWMgZnJvbVBvc2l0aW9ucyh0LG49dCl7cmV0dXJuIG5ldyBlKHQubGluZU51bWJlcix0LmNvbHVtbixuLmxpbmVOdW1iZXIsbi5jb2x1bW4pfXN0YXRpYyBsaWZ0KHQpe3JldHVybiB0P25ldyBlKHQuc3RhcnRMaW5lTnVtYmVyLHQuc3RhcnRDb2x1bW4sdC5lbmRMaW5lTnVtYmVyLHQuZW5kQ29sdW1uKTpudWxsfXN0YXRpYyBpc0lSYW5nZShlKXtyZXR1cm4gZSYmIm51bWJlciI9PXR5cGVvZiBlLnN0YXJ0TGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLnN0YXJ0Q29sdW1uJiYibnVtYmVyIj09dHlwZW9mIGUuZW5kTGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLmVuZENvbHVtbn1zdGF0aWMgYXJlSW50ZXJzZWN0aW5nT3JUb3VjaGluZyhlLHQpe3JldHVybiEoZS5lbmRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyfHxlLmVuZExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmZS5lbmRDb2x1bW48dC5zdGFydENvbHVtbikmJiEodC5lbmRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5lbmRDb2x1bW48ZS5zdGFydENvbHVtbil9c3RhdGljIGFyZUludGVyc2VjdGluZyhlLHQpe3JldHVybiEoZS5lbmRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyfHxlLmVuZExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmZS5lbmRDb2x1bW48PXQuc3RhcnRDb2x1bW4pJiYhKHQuZW5kTGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPD1lLnN0YXJ0Q29sdW1uKX1zdGF0aWMgY29tcGFyZVJhbmdlc1VzaW5nU3RhcnRzKGUsdCl7aWYoZSYmdCl7Y29uc3Qgbj0wfGUuc3RhcnRMaW5lTnVtYmVyLHI9MHx0LnN0YXJ0TGluZU51bWJlcjtpZihuPT09cil7Y29uc3Qgbj0wfGUuc3RhcnRDb2x1bW4scj0wfHQuc3RhcnRDb2x1bW47aWYobj09PXIpe2NvbnN0IG49MHxlLmVuZExpbmVOdW1iZXIscj0wfHQuZW5kTGluZU51bWJlcjtpZihuPT09cil7cmV0dXJuKDB8ZS5lbmRDb2x1bW4pLSgwfHQuZW5kQ29sdW1uKX1yZXR1cm4gbi1yfXJldHVybiBuLXJ9cmV0dXJuIG4tcn1yZXR1cm4oZT8xOjApLSh0PzE6MCl9c3RhdGljIGNvbXBhcmVSYW5nZXNVc2luZ0VuZHMoZSx0KXtyZXR1cm4gZS5lbmRMaW5lTnVtYmVyPT09dC5lbmRMaW5lTnVtYmVyP2UuZW5kQ29sdW1uPT09dC5lbmRDb2x1bW4/ZS5zdGFydExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlcj9lLnN0YXJ0Q29sdW1uLXQuc3RhcnRDb2x1bW46ZS5zdGFydExpbmVOdW1iZXItdC5zdGFydExpbmVOdW1iZXI6ZS5lbmRDb2x1bW4tdC5lbmRDb2x1bW46ZS5lbmRMaW5lTnVtYmVyLXQuZW5kTGluZU51bWJlcn1zdGF0aWMgc3BhbnNNdWx0aXBsZUxpbmVzKGUpe3JldHVybiBlLmVuZExpbmVOdW1iZXI+ZS5zdGFydExpbmVOdW1iZXJ9dG9KU09OKCl7cmV0dXJuIHRoaXN9fTtmdW5jdGlvbiBudChlLHQsbixyKXtyZXR1cm4gbmV3IHllKGUsdCxuKS5Db21wdXRlRGlmZihyKX1jbGFzcyBydHtjb25zdHJ1Y3RvcihlKXtjb25zdCB0PVtdLG49W107Zm9yKGxldCByPTAsaT1lLmxlbmd0aDtyPGk7cisrKXRbcl09bHQoZVtyXSwxKSxuW3JdPWN0KGVbcl0sMSk7dGhpcy5saW5lcz1lLHRoaXMuX3N0YXJ0Q29sdW1ucz10LHRoaXMuX2VuZENvbHVtbnM9bn1nZXRFbGVtZW50cygpe2NvbnN0IGU9W107Zm9yKGxldCB0PTAsbj10aGlzLmxpbmVzLmxlbmd0aDt0PG47dCsrKWVbdF09dGhpcy5saW5lc1t0XS5zdWJzdHJpbmcodGhpcy5fc3RhcnRDb2x1bW5zW3RdLTEsdGhpcy5fZW5kQ29sdW1uc1t0XS0xKTtyZXR1cm4gZX1nZXRTdHJpY3RFbGVtZW50KGUpe3JldHVybiB0aGlzLmxpbmVzW2VdfWdldFN0YXJ0TGluZU51bWJlcihlKXtyZXR1cm4gZSsxfWdldEVuZExpbmVOdW1iZXIoZSl7cmV0dXJuIGUrMX1jcmVhdGVDaGFyU2VxdWVuY2UoZSx0LG4pe2NvbnN0IHI9W10saT1bXSxvPVtdO2xldCBzPTA7Zm9yKGxldCBhPXQ7YTw9bjthKyspe2NvbnN0IHQ9dGhpcy5saW5lc1thXSxsPWU/dGhpcy5fc3RhcnRDb2x1bW5zW2FdOjEsYz1lP3RoaXMuX2VuZENvbHVtbnNbYV06dC5sZW5ndGgrMTtmb3IobGV0IGU9bDtlPGM7ZSsrKXJbc109dC5jaGFyQ29kZUF0KGUtMSksaVtzXT1hKzEsb1tzXT1lLHMrKzshZSYmYTxuJiYocltzXT0xMCxpW3NdPWErMSxvW3NdPXQubGVuZ3RoKzEscysrKX1yZXR1cm4gbmV3IGl0KHIsaSxvKX19Y2xhc3MgaXR7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuX2NoYXJDb2Rlcz1lLHRoaXMuX2xpbmVOdW1iZXJzPXQsdGhpcy5fY29sdW1ucz1ufXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuX2NoYXJDb2Rlcy5tYXAoKChlLHQpPT4oMTA9PT1lPyJcXG4iOlN0cmluZy5mcm9tQ2hhckNvZGUoZSkpK2AtKCR7dGhpcy5fbGluZU51bWJlcnNbdF19LCR7dGhpcy5fY29sdW1uc1t0XX0pYCkpLmpvaW4oIiwgIikrIl0ifV9hc3NlcnRJbmRleChlLHQpe2lmKGU8MHx8ZT49dC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJJbGxlZ2FsIGluZGV4Iil9Z2V0RWxlbWVudHMoKXtyZXR1cm4gdGhpcy5fY2hhckNvZGVzfWdldFN0YXJ0TGluZU51bWJlcihlKXtyZXR1cm4gZT4wJiZlPT09dGhpcy5fbGluZU51bWJlcnMubGVuZ3RoP3RoaXMuZ2V0RW5kTGluZU51bWJlcihlLTEpOih0aGlzLl9hc3NlcnRJbmRleChlLHRoaXMuX2xpbmVOdW1iZXJzKSx0aGlzLl9saW5lTnVtYmVyc1tlXSl9Z2V0RW5kTGluZU51bWJlcihlKXtyZXR1cm4tMT09PWU/dGhpcy5nZXRTdGFydExpbmVOdW1iZXIoZSsxKToodGhpcy5fYXNzZXJ0SW5kZXgoZSx0aGlzLl9saW5lTnVtYmVycyksMTA9PT10aGlzLl9jaGFyQ29kZXNbZV0/dGhpcy5fbGluZU51bWJlcnNbZV0rMTp0aGlzLl9saW5lTnVtYmVyc1tlXSl9Z2V0U3RhcnRDb2x1bW4oZSl7cmV0dXJuIGU+MCYmZT09PXRoaXMuX2NvbHVtbnMubGVuZ3RoP3RoaXMuZ2V0RW5kQ29sdW1uKGUtMSk6KHRoaXMuX2Fzc2VydEluZGV4KGUsdGhpcy5fY29sdW1ucyksdGhpcy5fY29sdW1uc1tlXSl9Z2V0RW5kQ29sdW1uKGUpe3JldHVybi0xPT09ZT90aGlzLmdldFN0YXJ0Q29sdW1uKGUrMSk6KHRoaXMuX2Fzc2VydEluZGV4KGUsdGhpcy5fY29sdW1ucyksMTA9PT10aGlzLl9jaGFyQ29kZXNbZV0/MTp0aGlzLl9jb2x1bW5zW2VdKzEpfX1jbGFzcyBvdHtjb25zdHJ1Y3RvcihlLHQsbixyLGksbyxzLGEpe3RoaXMub3JpZ2luYWxTdGFydExpbmVOdW1iZXI9ZSx0aGlzLm9yaWdpbmFsU3RhcnRDb2x1bW49dCx0aGlzLm9yaWdpbmFsRW5kTGluZU51bWJlcj1uLHRoaXMub3JpZ2luYWxFbmRDb2x1bW49cix0aGlzLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyPWksdGhpcy5tb2RpZmllZFN0YXJ0Q29sdW1uPW8sdGhpcy5tb2RpZmllZEVuZExpbmVOdW1iZXI9cyx0aGlzLm1vZGlmaWVkRW5kQ29sdW1uPWF9c3RhdGljIGNyZWF0ZUZyb21EaWZmQ2hhbmdlKGUsdCxuKXtjb25zdCByPXQuZ2V0U3RhcnRMaW5lTnVtYmVyKGUub3JpZ2luYWxTdGFydCksaT10LmdldFN0YXJ0Q29sdW1uKGUub3JpZ2luYWxTdGFydCksbz10LmdldEVuZExpbmVOdW1iZXIoZS5vcmlnaW5hbFN0YXJ0K2Uub3JpZ2luYWxMZW5ndGgtMSkscz10LmdldEVuZENvbHVtbihlLm9yaWdpbmFsU3RhcnQrZS5vcmlnaW5hbExlbmd0aC0xKSxhPW4uZ2V0U3RhcnRMaW5lTnVtYmVyKGUubW9kaWZpZWRTdGFydCksbD1uLmdldFN0YXJ0Q29sdW1uKGUubW9kaWZpZWRTdGFydCksYz1uLmdldEVuZExpbmVOdW1iZXIoZS5tb2RpZmllZFN0YXJ0K2UubW9kaWZpZWRMZW5ndGgtMSksaD1uLmdldEVuZENvbHVtbihlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aC0xKTtyZXR1cm4gbmV3IG90KHIsaSxvLHMsYSxsLGMsaCl9fWNsYXNzIHN0e2NvbnN0cnVjdG9yKGUsdCxuLHIsaSl7dGhpcy5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcj1lLHRoaXMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPXQsdGhpcy5tb2RpZmllZFN0YXJ0TGluZU51bWJlcj1uLHRoaXMubW9kaWZpZWRFbmRMaW5lTnVtYmVyPXIsdGhpcy5jaGFyQ2hhbmdlcz1pfXN0YXRpYyBjcmVhdGVGcm9tRGlmZlJlc3VsdChlLHQsbixyLGksbyxzKXtsZXQgYSxsLGMsaCxkO2lmKDA9PT10Lm9yaWdpbmFsTGVuZ3RoPyhhPW4uZ2V0U3RhcnRMaW5lTnVtYmVyKHQub3JpZ2luYWxTdGFydCktMSxsPTApOihhPW4uZ2V0U3RhcnRMaW5lTnVtYmVyKHQub3JpZ2luYWxTdGFydCksbD1uLmdldEVuZExpbmVOdW1iZXIodC5vcmlnaW5hbFN0YXJ0K3Qub3JpZ2luYWxMZW5ndGgtMSkpLDA9PT10Lm1vZGlmaWVkTGVuZ3RoPyhjPXIuZ2V0U3RhcnRMaW5lTnVtYmVyKHQubW9kaWZpZWRTdGFydCktMSxoPTApOihjPXIuZ2V0U3RhcnRMaW5lTnVtYmVyKHQubW9kaWZpZWRTdGFydCksaD1yLmdldEVuZExpbmVOdW1iZXIodC5tb2RpZmllZFN0YXJ0K3QubW9kaWZpZWRMZW5ndGgtMSkpLG8mJnQub3JpZ2luYWxMZW5ndGg+MCYmdC5vcmlnaW5hbExlbmd0aDwyMCYmdC5tb2RpZmllZExlbmd0aD4wJiZ0Lm1vZGlmaWVkTGVuZ3RoPDIwJiZpKCkpe2NvbnN0IG89bi5jcmVhdGVDaGFyU2VxdWVuY2UoZSx0Lm9yaWdpbmFsU3RhcnQsdC5vcmlnaW5hbFN0YXJ0K3Qub3JpZ2luYWxMZW5ndGgtMSksYT1yLmNyZWF0ZUNoYXJTZXF1ZW5jZShlLHQubW9kaWZpZWRTdGFydCx0Lm1vZGlmaWVkU3RhcnQrdC5tb2RpZmllZExlbmd0aC0xKTtpZihvLmdldEVsZW1lbnRzKCkubGVuZ3RoPjAmJmEuZ2V0RWxlbWVudHMoKS5sZW5ndGg+MCl7bGV0IGU9bnQobyxhLGksITApLmNoYW5nZXM7cyYmKGU9ZnVuY3Rpb24oZSl7aWYoZS5sZW5ndGg8PTEpcmV0dXJuIGU7Y29uc3QgdD1bZVswXV07bGV0IG49dFswXTtmb3IobGV0IHI9MSxpPWUubGVuZ3RoO3I8aTtyKyspe2NvbnN0IGk9ZVtyXSxvPWkub3JpZ2luYWxTdGFydC0obi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGgpLHM9aS5tb2RpZmllZFN0YXJ0LShuLm1vZGlmaWVkU3RhcnQrbi5tb2RpZmllZExlbmd0aCk7TWF0aC5taW4obyxzKTwzPyhuLm9yaWdpbmFsTGVuZ3RoPWkub3JpZ2luYWxTdGFydCtpLm9yaWdpbmFsTGVuZ3RoLW4ub3JpZ2luYWxTdGFydCxuLm1vZGlmaWVkTGVuZ3RoPWkubW9kaWZpZWRTdGFydCtpLm1vZGlmaWVkTGVuZ3RoLW4ubW9kaWZpZWRTdGFydCk6KHQucHVzaChpKSxuPWkpfXJldHVybiB0fShlKSksZD1bXTtmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3Q8bjt0KyspZC5wdXNoKG90LmNyZWF0ZUZyb21EaWZmQ2hhbmdlKGVbdF0sbyxhKSl9fXJldHVybiBuZXcgc3QoYSxsLGMsaCxkKX19Y2xhc3MgYXR7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzPW4uc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcz1uLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMsdGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZT1uLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLHRoaXMuc2hvdWxkTWFrZVByZXR0eURpZmY9bi5zaG91bGRNYWtlUHJldHR5RGlmZix0aGlzLm9yaWdpbmFsTGluZXM9ZSx0aGlzLm1vZGlmaWVkTGluZXM9dCx0aGlzLm9yaWdpbmFsPW5ldyBydChlKSx0aGlzLm1vZGlmaWVkPW5ldyBydCh0KSx0aGlzLmNvbnRpbnVlTGluZURpZmY9aHQobi5tYXhDb21wdXRhdGlvblRpbWUpLHRoaXMuY29udGludWVDaGFyRGlmZj1odCgwPT09bi5tYXhDb21wdXRhdGlvblRpbWU/MDpNYXRoLm1pbihuLm1heENvbXB1dGF0aW9uVGltZSw1ZTMpKX1jb21wdXRlRGlmZigpe2lmKDE9PT10aGlzLm9yaWdpbmFsLmxpbmVzLmxlbmd0aCYmMD09PXRoaXMub3JpZ2luYWwubGluZXNbMF0ubGVuZ3RoKXJldHVybiAxPT09dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgmJjA9PT10aGlzLm1vZGlmaWVkLmxpbmVzWzBdLmxlbmd0aD97cXVpdEVhcmx5OiExLGNoYW5nZXM6W119OntxdWl0RWFybHk6ITEsY2hhbmdlczpbe29yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjEsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjEsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MSxtb2RpZmllZEVuZExpbmVOdW1iZXI6dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgsY2hhckNoYW5nZXM6W3ttb2RpZmllZEVuZENvbHVtbjowLG1vZGlmaWVkRW5kTGluZU51bWJlcjowLG1vZGlmaWVkU3RhcnRDb2x1bW46MCxtb2RpZmllZFN0YXJ0TGluZU51bWJlcjowLG9yaWdpbmFsRW5kQ29sdW1uOjAsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjAsb3JpZ2luYWxTdGFydENvbHVtbjowLG9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjB9XX1dfTtpZigxPT09dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgmJjA9PT10aGlzLm1vZGlmaWVkLmxpbmVzWzBdLmxlbmd0aClyZXR1cm57cXVpdEVhcmx5OiExLGNoYW5nZXM6W3tvcmlnaW5hbFN0YXJ0TGluZU51bWJlcjoxLG9yaWdpbmFsRW5kTGluZU51bWJlcjp0aGlzLm9yaWdpbmFsLmxpbmVzLmxlbmd0aCxtb2RpZmllZFN0YXJ0TGluZU51bWJlcjoxLG1vZGlmaWVkRW5kTGluZU51bWJlcjoxLGNoYXJDaGFuZ2VzOlt7bW9kaWZpZWRFbmRDb2x1bW46MCxtb2RpZmllZEVuZExpbmVOdW1iZXI6MCxtb2RpZmllZFN0YXJ0Q29sdW1uOjAsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MCxvcmlnaW5hbEVuZENvbHVtbjowLG9yaWdpbmFsRW5kTGluZU51bWJlcjowLG9yaWdpbmFsU3RhcnRDb2x1bW46MCxvcmlnaW5hbFN0YXJ0TGluZU51bWJlcjowfV19XX07Y29uc3QgZT1udCh0aGlzLm9yaWdpbmFsLHRoaXMubW9kaWZpZWQsdGhpcy5jb250aW51ZUxpbmVEaWZmLHRoaXMuc2hvdWxkTWFrZVByZXR0eURpZmYpLHQ9ZS5jaGFuZ2VzLG49ZS5xdWl0RWFybHk7aWYodGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZSl7Y29uc3QgZT1bXTtmb3IobGV0IG49MCxyPXQubGVuZ3RoO248cjtuKyspZS5wdXNoKHN0LmNyZWF0ZUZyb21EaWZmUmVzdWx0KHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2UsdFtuXSx0aGlzLm9yaWdpbmFsLHRoaXMubW9kaWZpZWQsdGhpcy5jb250aW51ZUNoYXJEaWZmLHRoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcykpO3JldHVybntxdWl0RWFybHk6bixjaGFuZ2VzOmV9fWNvbnN0IHI9W107bGV0IGk9MCxvPTA7Zm9yKGxldCBlPS0xLG49dC5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgcz1lKzE8bj90W2UrMV06bnVsbCxhPXM/cy5vcmlnaW5hbFN0YXJ0OnRoaXMub3JpZ2luYWxMaW5lcy5sZW5ndGgsbD1zP3MubW9kaWZpZWRTdGFydDp0aGlzLm1vZGlmaWVkTGluZXMubGVuZ3RoO2Zvcig7aTxhJiZvPGw7KXtjb25zdCBlPXRoaXMub3JpZ2luYWxMaW5lc1tpXSx0PXRoaXMubW9kaWZpZWRMaW5lc1tvXTtpZihlIT09dCl7e2xldCBuPWx0KGUsMSkscz1sdCh0LDEpO2Zvcig7bj4xJiZzPjE7KXtpZihlLmNoYXJDb2RlQXQobi0yKSE9PXQuY2hhckNvZGVBdChzLTIpKWJyZWFrO24tLSxzLS19KG4+MXx8cz4xKSYmdGhpcy5fcHVzaFRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShyLGkrMSwxLG4sbysxLDEscyl9e2xldCBuPWN0KGUsMSkscz1jdCh0LDEpO2NvbnN0IGE9ZS5sZW5ndGgrMSxsPXQubGVuZ3RoKzE7Zm9yKDtuPGEmJnM8bDspe2lmKGUuY2hhckNvZGVBdChuLTEpIT09ZS5jaGFyQ29kZUF0KHMtMSkpYnJlYWs7bisrLHMrK30objxhfHxzPGwpJiZ0aGlzLl9wdXNoVHJpbVdoaXRlc3BhY2VDaGFyQ2hhbmdlKHIsaSsxLG4sYSxvKzEscyxsKX19aSsrLG8rK31zJiYoci5wdXNoKHN0LmNyZWF0ZUZyb21EaWZmUmVzdWx0KHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2Uscyx0aGlzLm9yaWdpbmFsLHRoaXMubW9kaWZpZWQsdGhpcy5jb250aW51ZUNoYXJEaWZmLHRoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcykpLGkrPXMub3JpZ2luYWxMZW5ndGgsbys9cy5tb2RpZmllZExlbmd0aCl9cmV0dXJue3F1aXRFYXJseTpuLGNoYW5nZXM6cn19X3B1c2hUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UoZSx0LG4scixpLG8scyl7aWYodGhpcy5fbWVyZ2VUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UoZSx0LG4scixpLG8scykpcmV0dXJuO2xldCBhO3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzJiYoYT1bbmV3IG90KHQsbix0LHIsaSxvLGkscyldKSxlLnB1c2gobmV3IHN0KHQsdCxpLGksYSkpfV9tZXJnZVRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShlLHQsbixyLGksbyxzKXtjb25zdCBhPWUubGVuZ3RoO2lmKDA9PT1hKXJldHVybiExO2NvbnN0IGw9ZVthLTFdO3JldHVybiAwIT09bC5vcmlnaW5hbEVuZExpbmVOdW1iZXImJjAhPT1sLm1vZGlmaWVkRW5kTGluZU51bWJlciYmKGwub3JpZ2luYWxFbmRMaW5lTnVtYmVyKzE9PT10JiZsLm1vZGlmaWVkRW5kTGluZU51bWJlcisxPT09aSYmKGwub3JpZ2luYWxFbmRMaW5lTnVtYmVyPXQsbC5tb2RpZmllZEVuZExpbmVOdW1iZXI9aSx0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyYmbC5jaGFyQ2hhbmdlcyYmbC5jaGFyQ2hhbmdlcy5wdXNoKG5ldyBvdCh0LG4sdCxyLGksbyxpLHMpKSwhMCkpfX1mdW5jdGlvbiBsdChlLHQpe2NvbnN0IG49ZnVuY3Rpb24oZSl7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPWUuY2hhckNvZGVBdCh0KTtpZigzMiE9PW4mJjkhPT1uKXJldHVybiB0fXJldHVybi0xfShlKTtyZXR1cm4tMT09PW4/dDpuKzF9ZnVuY3Rpb24gY3QoZSx0KXtjb25zdCBuPWZ1bmN0aW9uKGUsdD1lLmxlbmd0aC0xKXtmb3IobGV0IG49dDtuPj0wO24tLSl7Y29uc3QgdD1lLmNoYXJDb2RlQXQobik7aWYoMzIhPT10JiY5IT09dClyZXR1cm4gbn1yZXR1cm4tMX0oZSk7cmV0dXJuLTE9PT1uP3Q6bisyfWZ1bmN0aW9uIGh0KGUpe2lmKDA9PT1lKXJldHVybigpPT4hMDtjb25zdCB0PURhdGUubm93KCk7cmV0dXJuKCk9PkRhdGUubm93KCktdDxlfXZhciBkdDtmdW5jdGlvbiBwdChlKXtyZXR1cm4gZTwwPzA6ZT4yNTU/MjU1OjB8ZX1mdW5jdGlvbiB1dChlKXtyZXR1cm4gZTwwPzA6ZT40Mjk0OTY3Mjk1PzQyOTQ5NjcyOTU6MHxlfSFmdW5jdGlvbihlKXtlLmlzTGVzc1RoYW49ZnVuY3Rpb24oZSl7cmV0dXJuIGU8MH0sZS5pc0dyZWF0ZXJUaGFuPWZ1bmN0aW9uKGUpe3JldHVybiBlPjB9LGUuaXNOZWl0aGVyTGVzc09yR3JlYXRlclRoYW49ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lfSxlLmdyZWF0ZXJUaGFuPTEsZS5sZXNzVGhhbj0tMSxlLm5laXRoZXJMZXNzT3JHcmVhdGVyVGhhbj0wfShkdHx8KGR0PXt9KSk7Y2xhc3MgbXR7Y29uc3RydWN0b3IoZSl7dGhpcy52YWx1ZXM9ZSx0aGlzLnByZWZpeFN1bT1uZXcgVWludDMyQXJyYXkoZS5sZW5ndGgpLHRoaXMucHJlZml4U3VtVmFsaWRJbmRleD1uZXcgSW50MzJBcnJheSgxKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09LTF9aW5zZXJ0VmFsdWVzKGUsdCl7ZT11dChlKTtjb25zdCBuPXRoaXMudmFsdWVzLHI9dGhpcy5wcmVmaXhTdW0saT10Lmxlbmd0aDtyZXR1cm4gMCE9PWkmJih0aGlzLnZhbHVlcz1uZXcgVWludDMyQXJyYXkobi5sZW5ndGgraSksdGhpcy52YWx1ZXMuc2V0KG4uc3ViYXJyYXkoMCxlKSwwKSx0aGlzLnZhbHVlcy5zZXQobi5zdWJhcnJheShlKSxlK2kpLHRoaXMudmFsdWVzLnNldCh0LGUpLGUtMTx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJih0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09ZS0xKSx0aGlzLnByZWZpeFN1bT1uZXcgVWludDMyQXJyYXkodGhpcy52YWx1ZXMubGVuZ3RoKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0+PTAmJnRoaXMucHJlZml4U3VtLnNldChyLnN1YmFycmF5KDAsdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKzEpKSwhMCl9c2V0VmFsdWUoZSx0KXtyZXR1cm4gZT11dChlKSx0PXV0KHQpLHRoaXMudmFsdWVzW2VdIT09dCYmKHRoaXMudmFsdWVzW2VdPXQsZS0xPHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmKHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT1lLTEpLCEwKX1yZW1vdmVWYWx1ZXMoZSx0KXtlPXV0KGUpLHQ9dXQodCk7Y29uc3Qgbj10aGlzLnZhbHVlcyxyPXRoaXMucHJlZml4U3VtO2lmKGU+PW4ubGVuZ3RoKXJldHVybiExO2NvbnN0IGk9bi5sZW5ndGgtZTtyZXR1cm4gdD49aSYmKHQ9aSksMCE9PXQmJih0aGlzLnZhbHVlcz1uZXcgVWludDMyQXJyYXkobi5sZW5ndGgtdCksdGhpcy52YWx1ZXMuc2V0KG4uc3ViYXJyYXkoMCxlKSwwKSx0aGlzLnZhbHVlcy5zZXQobi5zdWJhcnJheShlK3QpLGUpLHRoaXMucHJlZml4U3VtPW5ldyBVaW50MzJBcnJheSh0aGlzLnZhbHVlcy5sZW5ndGgpLGUtMTx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJih0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09ZS0xKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0+PTAmJnRoaXMucHJlZml4U3VtLnNldChyLnN1YmFycmF5KDAsdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKzEpKSwhMCl9Z2V0VG90YWxTdW0oKXtyZXR1cm4gMD09PXRoaXMudmFsdWVzLmxlbmd0aD8wOnRoaXMuX2dldFByZWZpeFN1bSh0aGlzLnZhbHVlcy5sZW5ndGgtMSl9Z2V0UHJlZml4U3VtKGUpe3JldHVybiBlPDA/MDooZT11dChlKSx0aGlzLl9nZXRQcmVmaXhTdW0oZSkpfV9nZXRQcmVmaXhTdW0oZSl7aWYoZTw9dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKXJldHVybiB0aGlzLnByZWZpeFN1bVtlXTtsZXQgdD10aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0rMTswPT09dCYmKHRoaXMucHJlZml4U3VtWzBdPXRoaXMudmFsdWVzWzBdLHQrKyksZT49dGhpcy52YWx1ZXMubGVuZ3RoJiYoZT10aGlzLnZhbHVlcy5sZW5ndGgtMSk7Zm9yKGxldCBuPXQ7bjw9ZTtuKyspdGhpcy5wcmVmaXhTdW1bbl09dGhpcy5wcmVmaXhTdW1bbi0xXSt0aGlzLnZhbHVlc1tuXTtyZXR1cm4gdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPU1hdGgubWF4KHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSxlKSx0aGlzLnByZWZpeFN1bVtlXX1nZXRJbmRleE9mKGUpe2U9TWF0aC5mbG9vcihlKSx0aGlzLmdldFRvdGFsU3VtKCk7bGV0IHQ9MCxuPXRoaXMudmFsdWVzLmxlbmd0aC0xLHI9MCxpPTAsbz0wO2Zvcig7dDw9bjspaWYocj10KyhuLXQpLzJ8MCxpPXRoaXMucHJlZml4U3VtW3JdLG89aS10aGlzLnZhbHVlc1tyXSxlPG8pbj1yLTE7ZWxzZXtpZighKGU+PWkpKWJyZWFrO3Q9cisxfXJldHVybiBuZXcgZnQocixlLW8pfX1jbGFzcyBmdHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuaW5kZXg9ZSx0aGlzLnJlbWFpbmRlcj10LHRoaXMuX3ByZWZpeFN1bUluZGV4T2ZSZXN1bHRCcmFuZD12b2lkIDAsdGhpcy5pbmRleD1lLHRoaXMucmVtYWluZGVyPXR9fWNsYXNzIGd0e2NvbnN0cnVjdG9yKGUsdCxuLHIpe3RoaXMuX3VyaT1lLHRoaXMuX2xpbmVzPXQsdGhpcy5fZW9sPW4sdGhpcy5fdmVyc2lvbklkPXIsdGhpcy5fbGluZVN0YXJ0cz1udWxsLHRoaXMuX2NhY2hlZFRleHRWYWx1ZT1udWxsfWRpc3Bvc2UoKXt0aGlzLl9saW5lcy5sZW5ndGg9MH1nZXQgdmVyc2lvbigpe3JldHVybiB0aGlzLl92ZXJzaW9uSWR9Z2V0VGV4dCgpe3JldHVybiBudWxsPT09dGhpcy5fY2FjaGVkVGV4dFZhbHVlJiYodGhpcy5fY2FjaGVkVGV4dFZhbHVlPXRoaXMuX2xpbmVzLmpvaW4odGhpcy5fZW9sKSksdGhpcy5fY2FjaGVkVGV4dFZhbHVlfW9uRXZlbnRzKGUpe2UuZW9sJiZlLmVvbCE9PXRoaXMuX2VvbCYmKHRoaXMuX2VvbD1lLmVvbCx0aGlzLl9saW5lU3RhcnRzPW51bGwpO2NvbnN0IHQ9ZS5jaGFuZ2VzO2Zvcihjb25zdCBlIG9mIHQpdGhpcy5fYWNjZXB0RGVsZXRlUmFuZ2UoZS5yYW5nZSksdGhpcy5fYWNjZXB0SW5zZXJ0VGV4dChuZXcgZXQoZS5yYW5nZS5zdGFydExpbmVOdW1iZXIsZS5yYW5nZS5zdGFydENvbHVtbiksZS50ZXh0KTt0aGlzLl92ZXJzaW9uSWQ9ZS52ZXJzaW9uSWQsdGhpcy5fY2FjaGVkVGV4dFZhbHVlPW51bGx9X2Vuc3VyZUxpbmVTdGFydHMoKXtpZighdGhpcy5fbGluZVN0YXJ0cyl7Y29uc3QgZT10aGlzLl9lb2wubGVuZ3RoLHQ9dGhpcy5fbGluZXMubGVuZ3RoLG49bmV3IFVpbnQzMkFycmF5KHQpO2ZvcihsZXQgcj0wO3I8dDtyKyspbltyXT10aGlzLl9saW5lc1tyXS5sZW5ndGgrZTt0aGlzLl9saW5lU3RhcnRzPW5ldyBtdChuKX19X3NldExpbmVUZXh0KGUsdCl7dGhpcy5fbGluZXNbZV09dCx0aGlzLl9saW5lU3RhcnRzJiZ0aGlzLl9saW5lU3RhcnRzLnNldFZhbHVlKGUsdGhpcy5fbGluZXNbZV0ubGVuZ3RoK3RoaXMuX2VvbC5sZW5ndGgpfV9hY2NlcHREZWxldGVSYW5nZShlKXtpZihlLnN0YXJ0TGluZU51bWJlciE9PWUuZW5kTGluZU51bWJlcil0aGlzLl9zZXRMaW5lVGV4dChlLnN0YXJ0TGluZU51bWJlci0xLHRoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuc3RhcnRDb2x1bW4tMSkrdGhpcy5fbGluZXNbZS5lbmRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmVuZENvbHVtbi0xKSksdGhpcy5fbGluZXMuc3BsaWNlKGUuc3RhcnRMaW5lTnVtYmVyLGUuZW5kTGluZU51bWJlci1lLnN0YXJ0TGluZU51bWJlciksdGhpcy5fbGluZVN0YXJ0cyYmdGhpcy5fbGluZVN0YXJ0cy5yZW1vdmVWYWx1ZXMoZS5zdGFydExpbmVOdW1iZXIsZS5lbmRMaW5lTnVtYmVyLWUuc3RhcnRMaW5lTnVtYmVyKTtlbHNle2lmKGUuc3RhcnRDb2x1bW49PT1lLmVuZENvbHVtbilyZXR1cm47dGhpcy5fc2V0TGluZVRleHQoZS5zdGFydExpbmVOdW1iZXItMSx0aGlzLl9saW5lc1tlLnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCxlLnN0YXJ0Q29sdW1uLTEpK3RoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmVuZENvbHVtbi0xKSl9fV9hY2NlcHRJbnNlcnRUZXh0KGUsdCl7aWYoMD09PXQubGVuZ3RoKXJldHVybjtjb25zdCBuPXQuc3BsaXQoL1xyXG58XHJ8XG4vKTtpZigxPT09bi5sZW5ndGgpcmV0dXJuIHZvaWQgdGhpcy5fc2V0TGluZVRleHQoZS5saW5lTnVtYmVyLTEsdGhpcy5fbGluZXNbZS5saW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuY29sdW1uLTEpK25bMF0rdGhpcy5fbGluZXNbZS5saW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmNvbHVtbi0xKSk7bltuLmxlbmd0aC0xXSs9dGhpcy5fbGluZXNbZS5saW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmNvbHVtbi0xKSx0aGlzLl9zZXRMaW5lVGV4dChlLmxpbmVOdW1iZXItMSx0aGlzLl9saW5lc1tlLmxpbmVOdW1iZXItMV0uc3Vic3RyaW5nKDAsZS5jb2x1bW4tMSkrblswXSk7Y29uc3Qgcj1uZXcgVWludDMyQXJyYXkobi5sZW5ndGgtMSk7Zm9yKGxldCB0PTE7dDxuLmxlbmd0aDt0KyspdGhpcy5fbGluZXMuc3BsaWNlKGUubGluZU51bWJlcit0LTEsMCxuW3RdKSxyW3QtMV09blt0XS5sZW5ndGgrdGhpcy5fZW9sLmxlbmd0aDt0aGlzLl9saW5lU3RhcnRzJiZ0aGlzLl9saW5lU3RhcnRzLmluc2VydFZhbHVlcyhlLmxpbmVOdW1iZXIscil9fWNvbnN0IGJ0PWZ1bmN0aW9uKGU9IiIpe2xldCB0PSIoLT9cXGQqXFwuXFxkXFx3Kil8KFteIjtmb3IoY29uc3QgbiBvZiJgfiFAIyQlXiYqKCktPStbe119XFx8OzonXCIsLjw+Lz8iKWUuaW5kZXhPZihuKT49MHx8KHQrPSJcXCIrbik7cmV0dXJuIHQrPSJcXHNdKykiLG5ldyBSZWdFeHAodCwiZyIpfSgpO2NvbnN0IHl0PW5ldyBmO2Z1bmN0aW9uIHZ0KGUsdCxuLHIsaSl7aWYoaXx8KGk9YS5maXJzdCh5dCkpLG4ubGVuZ3RoPmkubWF4TGVuKXtsZXQgbz1lLWkubWF4TGVuLzI7cmV0dXJuIG88MD9vPTA6cis9byx2dChlLHQsbj1uLnN1YnN0cmluZyhvLGUraS5tYXhMZW4vMikscixpKX1jb25zdCBvPURhdGUubm93KCkscz1lLTEtcjtsZXQgbD0tMSxjPW51bGw7Zm9yKGxldCBlPTE7IShEYXRlLm5vdygpLW8+PWkudGltZUJ1ZGdldCk7ZSsrKXtjb25zdCByPXMtaS53aW5kb3dTaXplKmU7dC5sYXN0SW5kZXg9TWF0aC5tYXgoMCxyKTtjb25zdCBvPXd0KHQsbixzLGwpO2lmKCFvJiZjKWJyZWFrO2lmKGM9byxyPD0wKWJyZWFrO2w9cn1pZihjKXtjb25zdCBlPXt3b3JkOmNbMF0sc3RhcnRDb2x1bW46cisxK2MuaW5kZXgsZW5kQ29sdW1uOnIrMStjLmluZGV4K2NbMF0ubGVuZ3RofTtyZXR1cm4gdC5sYXN0SW5kZXg9MCxlfXJldHVybiBudWxsfWZ1bmN0aW9uIHd0KGUsdCxuLHIpe2xldCBpO2Zvcig7aT1lLmV4ZWModCk7KXtjb25zdCB0PWkuaW5kZXh8fDA7aWYodDw9biYmZS5sYXN0SW5kZXg+PW4pcmV0dXJuIGk7aWYocj4wJiZ0PnIpcmV0dXJuIG51bGx9cmV0dXJuIG51bGx9eXQudW5zaGlmdCh7bWF4TGVuOjFlMyx3aW5kb3dTaXplOjE1LHRpbWVCdWRnZXQ6MTUwfSk7Y2xhc3MgeHR7Y29uc3RydWN0b3IoZSl7Y29uc3QgdD1wdChlKTt0aGlzLl9kZWZhdWx0VmFsdWU9dCx0aGlzLl9hc2NpaU1hcD14dC5fY3JlYXRlQXNjaWlNYXAodCksdGhpcy5fbWFwPW5ldyBNYXB9c3RhdGljIF9jcmVhdGVBc2NpaU1hcChlKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KDI1Nik7Zm9yKGxldCBuPTA7bjwyNTY7bisrKXRbbl09ZTtyZXR1cm4gdH1zZXQoZSx0KXtjb25zdCBuPXB0KHQpO2U+PTAmJmU8MjU2P3RoaXMuX2FzY2lpTWFwW2VdPW46dGhpcy5fbWFwLnNldChlLG4pfWdldChlKXtyZXR1cm4gZT49MCYmZTwyNTY/dGhpcy5fYXNjaWlNYXBbZV06dGhpcy5fbWFwLmdldChlKXx8dGhpcy5fZGVmYXVsdFZhbHVlfX1jbGFzcyBTdHtjb25zdHJ1Y3RvcihlLHQsbil7Y29uc3Qgcj1uZXcgVWludDhBcnJheShlKnQpO2ZvcihsZXQgaT0wLG89ZSp0O2k8bztpKyspcltpXT1uO3RoaXMuX2RhdGE9cix0aGlzLnJvd3M9ZSx0aGlzLmNvbHM9dH1nZXQoZSx0KXtyZXR1cm4gdGhpcy5fZGF0YVtlKnRoaXMuY29scyt0XX1zZXQoZSx0LG4pe3RoaXMuX2RhdGFbZSp0aGlzLmNvbHMrdF09bn19Y2xhc3MgQ3R7Y29uc3RydWN0b3IoZSl7bGV0IHQ9MCxuPTA7Zm9yKGxldCByPTAsaT1lLmxlbmd0aDtyPGk7cisrKXtjb25zdFtpLG8sc109ZVtyXTtvPnQmJih0PW8pLGk+biYmKG49aSkscz5uJiYobj1zKX10KyssbisrO2NvbnN0IHI9bmV3IFN0KG4sdCwwKTtmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0W24saSxvXT1lW3RdO3Iuc2V0KG4saSxvKX10aGlzLl9zdGF0ZXM9cix0aGlzLl9tYXhDaGFyQ29kZT10fW5leHRTdGF0ZShlLHQpe3JldHVybiB0PDB8fHQ+PXRoaXMuX21heENoYXJDb2RlPzA6dGhpcy5fc3RhdGVzLmdldChlLHQpfX1sZXQga3Q9bnVsbDtsZXQgX3Q9bnVsbDtjbGFzcyBFdHtzdGF0aWMgX2NyZWF0ZUxpbmsoZSx0LG4scixpKXtsZXQgbz1pLTE7ZG97Y29uc3Qgbj10LmNoYXJDb2RlQXQobyk7aWYoMiE9PWUuZ2V0KG4pKWJyZWFrO28tLX13aGlsZShvPnIpO2lmKHI+MCl7Y29uc3QgZT10LmNoYXJDb2RlQXQoci0xKSxuPXQuY2hhckNvZGVBdChvKTsoNDA9PT1lJiY0MT09PW58fDkxPT09ZSYmOTM9PT1ufHwxMjM9PT1lJiYxMjU9PT1uKSYmby0tfXJldHVybntyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOm4sc3RhcnRDb2x1bW46cisxLGVuZExpbmVOdW1iZXI6bixlbmRDb2x1bW46bysyfSx1cmw6dC5zdWJzdHJpbmcocixvKzEpfX1zdGF0aWMgY29tcHV0ZUxpbmtzKGUsdD1mdW5jdGlvbigpe3JldHVybiBudWxsPT09a3QmJihrdD1uZXcgQ3QoW1sxLDEwNCwyXSxbMSw3MiwyXSxbMSwxMDIsNl0sWzEsNzAsNl0sWzIsMTE2LDNdLFsyLDg0LDNdLFszLDExNiw0XSxbMyw4NCw0XSxbNCwxMTIsNV0sWzQsODAsNV0sWzUsMTE1LDldLFs1LDgzLDldLFs1LDU4LDEwXSxbNiwxMDUsN10sWzYsNzMsN10sWzcsMTA4LDhdLFs3LDc2LDhdLFs4LDEwMSw5XSxbOCw2OSw5XSxbOSw1OCwxMF0sWzEwLDQ3LDExXSxbMTEsNDcsMTJdXSkpLGt0fSgpKXtjb25zdCBuPWZ1bmN0aW9uKCl7aWYobnVsbD09PV90KXtfdD1uZXcgeHQoMCk7Y29uc3QgZT0iIFx0PD4nXCLjgIHjgILvvaHvvaTvvIzvvI7vvJrvvJvigJjjgIjjgIzjgI7jgJTvvIjvvLvvvZvvvaLvvaPvvZ3vvL3vvInjgJXjgI/jgI3jgInigJnvvYDvvZ7igKYiO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKV90LnNldChlLmNoYXJDb2RlQXQodCksMSk7Y29uc3QgdD0iLiw7OiI7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspX3Quc2V0KHQuY2hhckNvZGVBdChlKSwyKX1yZXR1cm4gX3R9KCkscj1bXTtmb3IobGV0IGk9MSxvPWUuZ2V0TGluZUNvdW50KCk7aTw9bztpKyspe2NvbnN0IG89ZS5nZXRMaW5lQ29udGVudChpKSxzPW8ubGVuZ3RoO2xldCBhPTAsbD0wLGM9MCxoPTEsZD0hMSxwPSExLHU9ITEsbT0hMTtmb3IoO2E8czspe2xldCBlPSExO2NvbnN0IHM9by5jaGFyQ29kZUF0KGEpO2lmKDEzPT09aCl7bGV0IHQ7c3dpdGNoKHMpe2Nhc2UgNDA6ZD0hMCx0PTA7YnJlYWs7Y2FzZSA0MTp0PWQ/MDoxO2JyZWFrO2Nhc2UgOTE6dT0hMCxwPSEwLHQ9MDticmVhaztjYXNlIDkzOnU9ITEsdD1wPzA6MTticmVhaztjYXNlIDEyMzptPSEwLHQ9MDticmVhaztjYXNlIDEyNTp0PW0/MDoxO2JyZWFrO2Nhc2UgMzk6dD0zOT09PWM/MTowO2JyZWFrO2Nhc2UgMzQ6dD0zND09PWM/MTowO2JyZWFrO2Nhc2UgOTY6dD05Nj09PWM/MTowO2JyZWFrO2Nhc2UgNDI6dD00Mj09PWM/MTowO2JyZWFrO2Nhc2UgMTI0OnQ9MTI0PT09Yz8xOjA7YnJlYWs7Y2FzZSAzMjp0PXU/MDoxO2JyZWFrO2RlZmF1bHQ6dD1uLmdldChzKX0xPT09dCYmKHIucHVzaChFdC5fY3JlYXRlTGluayhuLG8saSxsLGEpKSxlPSEwKX1lbHNlIGlmKDEyPT09aCl7bGV0IHQ7OTE9PT1zPyhwPSEwLHQ9MCk6dD1uLmdldChzKSwxPT09dD9lPSEwOmg9MTN9ZWxzZSBoPXQubmV4dFN0YXRlKGgscyksMD09PWgmJihlPSEwKTtlJiYoaD0xLGQ9ITEscD0hMSxtPSExLGw9YSsxLGM9cyksYSsrfTEzPT09aCYmci5wdXNoKEV0Ll9jcmVhdGVMaW5rKG4sbyxpLGwscykpfXJldHVybiByfX1jbGFzcyBGdHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2RlZmF1bHRWYWx1ZVNldD1bWyJ0cnVlIiwiZmFsc2UiXSxbIlRydWUiLCJGYWxzZSJdLFsiUHJpdmF0ZSIsIlB1YmxpYyIsIkZyaWVuZCIsIlJlYWRPbmx5IiwiUGFydGlhbCIsIlByb3RlY3RlZCIsIldyaXRlT25seSJdLFsicHVibGljIiwicHJvdGVjdGVkIiwicHJpdmF0ZSJdXX1uYXZpZ2F0ZVZhbHVlU2V0KGUsdCxuLHIsaSl7aWYoZSYmdCl7Y29uc3Qgbj10aGlzLmRvTmF2aWdhdGVWYWx1ZVNldCh0LGkpO2lmKG4pcmV0dXJue3JhbmdlOmUsdmFsdWU6bn19aWYobiYmcil7Y29uc3QgZT10aGlzLmRvTmF2aWdhdGVWYWx1ZVNldChyLGkpO2lmKGUpcmV0dXJue3JhbmdlOm4sdmFsdWU6ZX19cmV0dXJuIG51bGx9ZG9OYXZpZ2F0ZVZhbHVlU2V0KGUsdCl7Y29uc3Qgbj10aGlzLm51bWJlclJlcGxhY2UoZSx0KTtyZXR1cm4gbnVsbCE9PW4/bjp0aGlzLnRleHRSZXBsYWNlKGUsdCl9bnVtYmVyUmVwbGFjZShlLHQpe2NvbnN0IG49TWF0aC5wb3coMTAsZS5sZW5ndGgtKGUubGFzdEluZGV4T2YoIi4iKSsxKSk7bGV0IHI9TnVtYmVyKGUpO2NvbnN0IGk9cGFyc2VGbG9hdChlKTtyZXR1cm4gaXNOYU4ocil8fGlzTmFOKGkpfHxyIT09aT9udWxsOjAhPT1yfHx0PyhyPU1hdGguZmxvb3IocipuKSxyKz10P246LW4sU3RyaW5nKHIvbikpOm51bGx9dGV4dFJlcGxhY2UoZSx0KXtyZXR1cm4gdGhpcy52YWx1ZVNldHNSZXBsYWNlKHRoaXMuX2RlZmF1bHRWYWx1ZVNldCxlLHQpfXZhbHVlU2V0c1JlcGxhY2UoZSx0LG4pe2xldCByPW51bGw7Zm9yKGxldCBpPTAsbz1lLmxlbmd0aDtudWxsPT09ciYmaTxvO2krKylyPXRoaXMudmFsdWVTZXRSZXBsYWNlKGVbaV0sdCxuKTtyZXR1cm4gcn12YWx1ZVNldFJlcGxhY2UoZSx0LG4pe2xldCByPWUuaW5kZXhPZih0KTtyZXR1cm4gcj49MD8ocis9bj8xOi0xLHI8MD9yPWUubGVuZ3RoLTE6ciU9ZS5sZW5ndGgsZVtyXSk6bnVsbH19RnQuSU5TVEFOQ0U9bmV3IEZ0O2NvbnN0IFJ0PU9iamVjdC5mcmVlemUoKGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1zZXRUaW1lb3V0KGUuYmluZCh0KSwwKTtyZXR1cm57ZGlzcG9zZSgpe2NsZWFyVGltZW91dChuKX19fSkpO3ZhciBEdDshZnVuY3Rpb24oZSl7ZS5pc0NhbmNlbGxhdGlvblRva2VuPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09ZS5Ob25lfHx0PT09ZS5DYW5jZWxsZWR8fCh0IGluc3RhbmNlb2YgTnR8fCEoIXR8fCJvYmplY3QiIT10eXBlb2YgdCkmJigiYm9vbGVhbiI9PXR5cGVvZiB0LmlzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkJiYiZnVuY3Rpb24iPT10eXBlb2YgdC5vbkNhbmNlbGxhdGlvblJlcXVlc3RlZCkpfSxlLk5vbmU9T2JqZWN0LmZyZWV6ZSh7aXNDYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6ITEsb25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6Ty5Ob25lfSksZS5DYW5jZWxsZWQ9T2JqZWN0LmZyZWV6ZSh7aXNDYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6ITAsb25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6UnR9KX0oRHR8fChEdD17fSkpO2NsYXNzIE50e2NvbnN0cnVjdG9yKCl7dGhpcy5faXNDYW5jZWxsZWQ9ITEsdGhpcy5fZW1pdHRlcj1udWxsfWNhbmNlbCgpe3RoaXMuX2lzQ2FuY2VsbGVkfHwodGhpcy5faXNDYW5jZWxsZWQ9ITAsdGhpcy5fZW1pdHRlciYmKHRoaXMuX2VtaXR0ZXIuZmlyZSh2b2lkIDApLHRoaXMuZGlzcG9zZSgpKSl9Z2V0IGlzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKCl7cmV0dXJuIHRoaXMuX2lzQ2FuY2VsbGVkfWdldCBvbkNhbmNlbGxhdGlvblJlcXVlc3RlZCgpe3JldHVybiB0aGlzLl9pc0NhbmNlbGxlZD9SdDoodGhpcy5fZW1pdHRlcnx8KHRoaXMuX2VtaXR0ZXI9bmV3IEspLHRoaXMuX2VtaXR0ZXIuZXZlbnQpfWRpc3Bvc2UoKXt0aGlzLl9lbWl0dGVyJiYodGhpcy5fZW1pdHRlci5kaXNwb3NlKCksdGhpcy5fZW1pdHRlcj1udWxsKX19Y2xhc3MgVHR7Y29uc3RydWN0b3IoZSl7dGhpcy5fdG9rZW49dm9pZCAwLHRoaXMuX3BhcmVudExpc3RlbmVyPXZvaWQgMCx0aGlzLl9wYXJlbnRMaXN0ZW5lcj1lJiZlLm9uQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKHRoaXMuY2FuY2VsLHRoaXMpfWdldCB0b2tlbigpe3JldHVybiB0aGlzLl90b2tlbnx8KHRoaXMuX3Rva2VuPW5ldyBOdCksdGhpcy5fdG9rZW59Y2FuY2VsKCl7dGhpcy5fdG9rZW4/dGhpcy5fdG9rZW4gaW5zdGFuY2VvZiBOdCYmdGhpcy5fdG9rZW4uY2FuY2VsKCk6dGhpcy5fdG9rZW49RHQuQ2FuY2VsbGVkfWRpc3Bvc2UoZT0hMSl7ZSYmdGhpcy5jYW5jZWwoKSx0aGlzLl9wYXJlbnRMaXN0ZW5lciYmdGhpcy5fcGFyZW50TGlzdGVuZXIuZGlzcG9zZSgpLHRoaXMuX3Rva2VuP3RoaXMuX3Rva2VuIGluc3RhbmNlb2YgTnQmJnRoaXMuX3Rva2VuLmRpc3Bvc2UoKTp0aGlzLl90b2tlbj1EdC5Ob25lfX1jbGFzcyBBdHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2tleUNvZGVUb1N0cj1bXSx0aGlzLl9zdHJUb0tleUNvZGU9T2JqZWN0LmNyZWF0ZShudWxsKX1kZWZpbmUoZSx0KXt0aGlzLl9rZXlDb2RlVG9TdHJbZV09dCx0aGlzLl9zdHJUb0tleUNvZGVbdC50b0xvd2VyQ2FzZSgpXT1lfWtleUNvZGVUb1N0cihlKXtyZXR1cm4gdGhpcy5fa2V5Q29kZVRvU3RyW2VdfXN0clRvS2V5Q29kZShlKXtyZXR1cm4gdGhpcy5fc3RyVG9LZXlDb2RlW2UudG9Mb3dlckNhc2UoKV18fDB9fWNvbnN0IHp0PW5ldyBBdCxJdD1uZXcgQXQsTXQ9bmV3IEF0LFB0PW5ldyBBcnJheSgyMzApLE90PU9iamVjdC5jcmVhdGUobnVsbCksTHQ9T2JqZWN0LmNyZWF0ZShudWxsKTt2YXIgV3QsVnQ7IWZ1bmN0aW9uKCl7Y29uc3QgZT0iIix0PVtbMCwxLDAsIk5vbmUiLDAsInVua25vd24iLDAsIlZLX1VOS05PV04iLGUsZV0sWzAsMSwxLCJIeXBlciIsMCxlLDAsZSxlLGVdLFswLDEsMiwiU3VwZXIiLDAsZSwwLGUsZSxlXSxbMCwxLDMsIkZuIiwwLGUsMCxlLGUsZV0sWzAsMSw0LCJGbkxvY2siLDAsZSwwLGUsZSxlXSxbMCwxLDUsIlN1c3BlbmQiLDAsZSwwLGUsZSxlXSxbMCwxLDYsIlJlc3VtZSIsMCxlLDAsZSxlLGVdLFswLDEsNywiVHVyYm8iLDAsZSwwLGUsZSxlXSxbMCwxLDgsIlNsZWVwIiwwLGUsMCwiVktfU0xFRVAiLGUsZV0sWzAsMSw5LCJXYWtlVXAiLDAsZSwwLGUsZSxlXSxbMzEsMCwxMCwiS2V5QSIsMzEsIkEiLDY1LCJWS19BIixlLGVdLFszMiwwLDExLCJLZXlCIiwzMiwiQiIsNjYsIlZLX0IiLGUsZV0sWzMzLDAsMTIsIktleUMiLDMzLCJDIiw2NywiVktfQyIsZSxlXSxbMzQsMCwxMywiS2V5RCIsMzQsIkQiLDY4LCJWS19EIixlLGVdLFszNSwwLDE0LCJLZXlFIiwzNSwiRSIsNjksIlZLX0UiLGUsZV0sWzM2LDAsMTUsIktleUYiLDM2LCJGIiw3MCwiVktfRiIsZSxlXSxbMzcsMCwxNiwiS2V5RyIsMzcsIkciLDcxLCJWS19HIixlLGVdLFszOCwwLDE3LCJLZXlIIiwzOCwiSCIsNzIsIlZLX0giLGUsZV0sWzM5LDAsMTgsIktleUkiLDM5LCJJIiw3MywiVktfSSIsZSxlXSxbNDAsMCwxOSwiS2V5SiIsNDAsIkoiLDc0LCJWS19KIixlLGVdLFs0MSwwLDIwLCJLZXlLIiw0MSwiSyIsNzUsIlZLX0siLGUsZV0sWzQyLDAsMjEsIktleUwiLDQyLCJMIiw3NiwiVktfTCIsZSxlXSxbNDMsMCwyMiwiS2V5TSIsNDMsIk0iLDc3LCJWS19NIixlLGVdLFs0NCwwLDIzLCJLZXlOIiw0NCwiTiIsNzgsIlZLX04iLGUsZV0sWzQ1LDAsMjQsIktleU8iLDQ1LCJPIiw3OSwiVktfTyIsZSxlXSxbNDYsMCwyNSwiS2V5UCIsNDYsIlAiLDgwLCJWS19QIixlLGVdLFs0NywwLDI2LCJLZXlRIiw0NywiUSIsODEsIlZLX1EiLGUsZV0sWzQ4LDAsMjcsIktleVIiLDQ4LCJSIiw4MiwiVktfUiIsZSxlXSxbNDksMCwyOCwiS2V5UyIsNDksIlMiLDgzLCJWS19TIixlLGVdLFs1MCwwLDI5LCJLZXlUIiw1MCwiVCIsODQsIlZLX1QiLGUsZV0sWzUxLDAsMzAsIktleVUiLDUxLCJVIiw4NSwiVktfVSIsZSxlXSxbNTIsMCwzMSwiS2V5ViIsNTIsIlYiLDg2LCJWS19WIixlLGVdLFs1MywwLDMyLCJLZXlXIiw1MywiVyIsODcsIlZLX1ciLGUsZV0sWzU0LDAsMzMsIktleVgiLDU0LCJYIiw4OCwiVktfWCIsZSxlXSxbNTUsMCwzNCwiS2V5WSIsNTUsIlkiLDg5LCJWS19ZIixlLGVdLFs1NiwwLDM1LCJLZXlaIiw1NiwiWiIsOTAsIlZLX1oiLGUsZV0sWzIyLDAsMzYsIkRpZ2l0MSIsMjIsIjEiLDQ5LCJWS18xIixlLGVdLFsyMywwLDM3LCJEaWdpdDIiLDIzLCIyIiw1MCwiVktfMiIsZSxlXSxbMjQsMCwzOCwiRGlnaXQzIiwyNCwiMyIsNTEsIlZLXzMiLGUsZV0sWzI1LDAsMzksIkRpZ2l0NCIsMjUsIjQiLDUyLCJWS180IixlLGVdLFsyNiwwLDQwLCJEaWdpdDUiLDI2LCI1Iiw1MywiVktfNSIsZSxlXSxbMjcsMCw0MSwiRGlnaXQ2IiwyNywiNiIsNTQsIlZLXzYiLGUsZV0sWzI4LDAsNDIsIkRpZ2l0NyIsMjgsIjciLDU1LCJWS183IixlLGVdLFsyOSwwLDQzLCJEaWdpdDgiLDI5LCI4Iiw1NiwiVktfOCIsZSxlXSxbMzAsMCw0NCwiRGlnaXQ5IiwzMCwiOSIsNTcsIlZLXzkiLGUsZV0sWzIxLDAsNDUsIkRpZ2l0MCIsMjEsIjAiLDQ4LCJWS18wIixlLGVdLFszLDEsNDYsIkVudGVyIiwzLCJFbnRlciIsMTMsIlZLX1JFVFVSTiIsZSxlXSxbOSwxLDQ3LCJFc2NhcGUiLDksIkVzY2FwZSIsMjcsIlZLX0VTQ0FQRSIsZSxlXSxbMSwxLDQ4LCJCYWNrc3BhY2UiLDEsIkJhY2tzcGFjZSIsOCwiVktfQkFDSyIsZSxlXSxbMiwxLDQ5LCJUYWIiLDIsIlRhYiIsOSwiVktfVEFCIixlLGVdLFsxMCwxLDUwLCJTcGFjZSIsMTAsIlNwYWNlIiwzMiwiVktfU1BBQ0UiLGUsZV0sWzgzLDAsNTEsIk1pbnVzIiw4MywiLSIsMTg5LCJWS19PRU1fTUlOVVMiLCItIiwiT0VNX01JTlVTIl0sWzgxLDAsNTIsIkVxdWFsIiw4MSwiPSIsMTg3LCJWS19PRU1fUExVUyIsIj0iLCJPRU1fUExVUyJdLFs4NywwLDUzLCJCcmFja2V0TGVmdCIsODcsIlsiLDIxOSwiVktfT0VNXzQiLCJbIiwiT0VNXzQiXSxbODksMCw1NCwiQnJhY2tldFJpZ2h0Iiw4OSwiXSIsMjIxLCJWS19PRU1fNiIsIl0iLCJPRU1fNiJdLFs4OCwwLDU1LCJCYWNrc2xhc2giLDg4LCJcXCIsMjIwLCJWS19PRU1fNSIsIlxcIiwiT0VNXzUiXSxbMCwwLDU2LCJJbnRsSGFzaCIsMCxlLDAsZSxlLGVdLFs4MCwwLDU3LCJTZW1pY29sb24iLDgwLCI7IiwxODYsIlZLX09FTV8xIiwiOyIsIk9FTV8xIl0sWzkwLDAsNTgsIlF1b3RlIiw5MCwiJyIsMjIyLCJWS19PRU1fNyIsIiciLCJPRU1fNyJdLFs4NiwwLDU5LCJCYWNrcXVvdGUiLDg2LCJgIiwxOTIsIlZLX09FTV8zIiwiYCIsIk9FTV8zIl0sWzgyLDAsNjAsIkNvbW1hIiw4MiwiLCIsMTg4LCJWS19PRU1fQ09NTUEiLCIsIiwiT0VNX0NPTU1BIl0sWzg0LDAsNjEsIlBlcmlvZCIsODQsIi4iLDE5MCwiVktfT0VNX1BFUklPRCIsIi4iLCJPRU1fUEVSSU9EIl0sWzg1LDAsNjIsIlNsYXNoIiw4NSwiLyIsMTkxLCJWS19PRU1fMiIsIi8iLCJPRU1fMiJdLFs4LDEsNjMsIkNhcHNMb2NrIiw4LCJDYXBzTG9jayIsMjAsIlZLX0NBUElUQUwiLGUsZV0sWzU5LDEsNjQsIkYxIiw1OSwiRjEiLDExMiwiVktfRjEiLGUsZV0sWzYwLDEsNjUsIkYyIiw2MCwiRjIiLDExMywiVktfRjIiLGUsZV0sWzYxLDEsNjYsIkYzIiw2MSwiRjMiLDExNCwiVktfRjMiLGUsZV0sWzYyLDEsNjcsIkY0Iiw2MiwiRjQiLDExNSwiVktfRjQiLGUsZV0sWzYzLDEsNjgsIkY1Iiw2MywiRjUiLDExNiwiVktfRjUiLGUsZV0sWzY0LDEsNjksIkY2Iiw2NCwiRjYiLDExNywiVktfRjYiLGUsZV0sWzY1LDEsNzAsIkY3Iiw2NSwiRjciLDExOCwiVktfRjciLGUsZV0sWzY2LDEsNzEsIkY4Iiw2NiwiRjgiLDExOSwiVktfRjgiLGUsZV0sWzY3LDEsNzIsIkY5Iiw2NywiRjkiLDEyMCwiVktfRjkiLGUsZV0sWzY4LDEsNzMsIkYxMCIsNjgsIkYxMCIsMTIxLCJWS19GMTAiLGUsZV0sWzY5LDEsNzQsIkYxMSIsNjksIkYxMSIsMTIyLCJWS19GMTEiLGUsZV0sWzcwLDEsNzUsIkYxMiIsNzAsIkYxMiIsMTIzLCJWS19GMTIiLGUsZV0sWzAsMSw3NiwiUHJpbnRTY3JlZW4iLDAsZSwwLGUsZSxlXSxbNzksMSw3NywiU2Nyb2xsTG9jayIsNzksIlNjcm9sbExvY2siLDE0NSwiVktfU0NST0xMIixlLGVdLFs3LDEsNzgsIlBhdXNlIiw3LCJQYXVzZUJyZWFrIiwxOSwiVktfUEFVU0UiLGUsZV0sWzE5LDEsNzksIkluc2VydCIsMTksIkluc2VydCIsNDUsIlZLX0lOU0VSVCIsZSxlXSxbMTQsMSw4MCwiSG9tZSIsMTQsIkhvbWUiLDM2LCJWS19IT01FIixlLGVdLFsxMSwxLDgxLCJQYWdlVXAiLDExLCJQYWdlVXAiLDMzLCJWS19QUklPUiIsZSxlXSxbMjAsMSw4MiwiRGVsZXRlIiwyMCwiRGVsZXRlIiw0NiwiVktfREVMRVRFIixlLGVdLFsxMywxLDgzLCJFbmQiLDEzLCJFbmQiLDM1LCJWS19FTkQiLGUsZV0sWzEyLDEsODQsIlBhZ2VEb3duIiwxMiwiUGFnZURvd24iLDM0LCJWS19ORVhUIixlLGVdLFsxNywxLDg1LCJBcnJvd1JpZ2h0IiwxNywiUmlnaHRBcnJvdyIsMzksIlZLX1JJR0hUIiwiUmlnaHQiLGVdLFsxNSwxLDg2LCJBcnJvd0xlZnQiLDE1LCJMZWZ0QXJyb3ciLDM3LCJWS19MRUZUIiwiTGVmdCIsZV0sWzE4LDEsODcsIkFycm93RG93biIsMTgsIkRvd25BcnJvdyIsNDAsIlZLX0RPV04iLCJEb3duIixlXSxbMTYsMSw4OCwiQXJyb3dVcCIsMTYsIlVwQXJyb3ciLDM4LCJWS19VUCIsIlVwIixlXSxbNzgsMSw4OSwiTnVtTG9jayIsNzgsIk51bUxvY2siLDE0NCwiVktfTlVNTE9DSyIsZSxlXSxbMTA4LDEsOTAsIk51bXBhZERpdmlkZSIsMTA4LCJOdW1QYWRfRGl2aWRlIiwxMTEsIlZLX0RJVklERSIsZSxlXSxbMTAzLDEsOTEsIk51bXBhZE11bHRpcGx5IiwxMDMsIk51bVBhZF9NdWx0aXBseSIsMTA2LCJWS19NVUxUSVBMWSIsZSxlXSxbMTA2LDEsOTIsIk51bXBhZFN1YnRyYWN0IiwxMDYsIk51bVBhZF9TdWJ0cmFjdCIsMTA5LCJWS19TVUJUUkFDVCIsZSxlXSxbMTA0LDEsOTMsIk51bXBhZEFkZCIsMTA0LCJOdW1QYWRfQWRkIiwxMDcsIlZLX0FERCIsZSxlXSxbMywxLDk0LCJOdW1wYWRFbnRlciIsMyxlLDAsZSxlLGVdLFs5NCwxLDk1LCJOdW1wYWQxIiw5NCwiTnVtUGFkMSIsOTcsIlZLX05VTVBBRDEiLGUsZV0sWzk1LDEsOTYsIk51bXBhZDIiLDk1LCJOdW1QYWQyIiw5OCwiVktfTlVNUEFEMiIsZSxlXSxbOTYsMSw5NywiTnVtcGFkMyIsOTYsIk51bVBhZDMiLDk5LCJWS19OVU1QQUQzIixlLGVdLFs5NywxLDk4LCJOdW1wYWQ0Iiw5NywiTnVtUGFkNCIsMTAwLCJWS19OVU1QQUQ0IixlLGVdLFs5OCwxLDk5LCJOdW1wYWQ1Iiw5OCwiTnVtUGFkNSIsMTAxLCJWS19OVU1QQUQ1IixlLGVdLFs5OSwxLDEwMCwiTnVtcGFkNiIsOTksIk51bVBhZDYiLDEwMiwiVktfTlVNUEFENiIsZSxlXSxbMTAwLDEsMTAxLCJOdW1wYWQ3IiwxMDAsIk51bVBhZDciLDEwMywiVktfTlVNUEFENyIsZSxlXSxbMTAxLDEsMTAyLCJOdW1wYWQ4IiwxMDEsIk51bVBhZDgiLDEwNCwiVktfTlVNUEFEOCIsZSxlXSxbMTAyLDEsMTAzLCJOdW1wYWQ5IiwxMDIsIk51bVBhZDkiLDEwNSwiVktfTlVNUEFEOSIsZSxlXSxbOTMsMSwxMDQsIk51bXBhZDAiLDkzLCJOdW1QYWQwIiw5NiwiVktfTlVNUEFEMCIsZSxlXSxbMTA3LDEsMTA1LCJOdW1wYWREZWNpbWFsIiwxMDcsIk51bVBhZF9EZWNpbWFsIiwxMTAsIlZLX0RFQ0lNQUwiLGUsZV0sWzkyLDAsMTA2LCJJbnRsQmFja3NsYXNoIiw5MiwiT0VNXzEwMiIsMjI2LCJWS19PRU1fMTAyIixlLGVdLFs1OCwxLDEwNywiQ29udGV4dE1lbnUiLDU4LCJDb250ZXh0TWVudSIsOTMsZSxlLGVdLFswLDEsMTA4LCJQb3dlciIsMCxlLDAsZSxlLGVdLFswLDEsMTA5LCJOdW1wYWRFcXVhbCIsMCxlLDAsZSxlLGVdLFs3MSwxLDExMCwiRjEzIiw3MSwiRjEzIiwxMjQsIlZLX0YxMyIsZSxlXSxbNzIsMSwxMTEsIkYxNCIsNzIsIkYxNCIsMTI1LCJWS19GMTQiLGUsZV0sWzczLDEsMTEyLCJGMTUiLDczLCJGMTUiLDEyNiwiVktfRjE1IixlLGVdLFs3NCwxLDExMywiRjE2Iiw3NCwiRjE2IiwxMjcsIlZLX0YxNiIsZSxlXSxbNzUsMSwxMTQsIkYxNyIsNzUsIkYxNyIsMTI4LCJWS19GMTciLGUsZV0sWzc2LDEsMTE1LCJGMTgiLDc2LCJGMTgiLDEyOSwiVktfRjE4IixlLGVdLFs3NywxLDExNiwiRjE5Iiw3NywiRjE5IiwxMzAsIlZLX0YxOSIsZSxlXSxbMCwxLDExNywiRjIwIiwwLGUsMCwiVktfRjIwIixlLGVdLFswLDEsMTE4LCJGMjEiLDAsZSwwLCJWS19GMjEiLGUsZV0sWzAsMSwxMTksIkYyMiIsMCxlLDAsIlZLX0YyMiIsZSxlXSxbMCwxLDEyMCwiRjIzIiwwLGUsMCwiVktfRjIzIixlLGVdLFswLDEsMTIxLCJGMjQiLDAsZSwwLCJWS19GMjQiLGUsZV0sWzAsMSwxMjIsIk9wZW4iLDAsZSwwLGUsZSxlXSxbMCwxLDEyMywiSGVscCIsMCxlLDAsZSxlLGVdLFswLDEsMTI0LCJTZWxlY3QiLDAsZSwwLGUsZSxlXSxbMCwxLDEyNSwiQWdhaW4iLDAsZSwwLGUsZSxlXSxbMCwxLDEyNiwiVW5kbyIsMCxlLDAsZSxlLGVdLFswLDEsMTI3LCJDdXQiLDAsZSwwLGUsZSxlXSxbMCwxLDEyOCwiQ29weSIsMCxlLDAsZSxlLGVdLFswLDEsMTI5LCJQYXN0ZSIsMCxlLDAsZSxlLGVdLFswLDEsMTMwLCJGaW5kIiwwLGUsMCxlLGUsZV0sWzAsMSwxMzEsIkF1ZGlvVm9sdW1lTXV0ZSIsMTEyLCJBdWRpb1ZvbHVtZU11dGUiLDE3MywiVktfVk9MVU1FX01VVEUiLGUsZV0sWzAsMSwxMzIsIkF1ZGlvVm9sdW1lVXAiLDExMywiQXVkaW9Wb2x1bWVVcCIsMTc1LCJWS19WT0xVTUVfVVAiLGUsZV0sWzAsMSwxMzMsIkF1ZGlvVm9sdW1lRG93biIsMTE0LCJBdWRpb1ZvbHVtZURvd24iLDE3NCwiVktfVk9MVU1FX0RPV04iLGUsZV0sWzEwNSwxLDEzNCwiTnVtcGFkQ29tbWEiLDEwNSwiTnVtUGFkX1NlcGFyYXRvciIsMTA4LCJWS19TRVBBUkFUT1IiLGUsZV0sWzExMCwwLDEzNSwiSW50bFJvIiwxMTAsIkFCTlRfQzEiLDE5MywiVktfQUJOVF9DMSIsZSxlXSxbMCwxLDEzNiwiS2FuYU1vZGUiLDAsZSwwLGUsZSxlXSxbMCwwLDEzNywiSW50bFllbiIsMCxlLDAsZSxlLGVdLFswLDEsMTM4LCJDb252ZXJ0IiwwLGUsMCxlLGUsZV0sWzAsMSwxMzksIk5vbkNvbnZlcnQiLDAsZSwwLGUsZSxlXSxbMCwxLDE0MCwiTGFuZzEiLDAsZSwwLGUsZSxlXSxbMCwxLDE0MSwiTGFuZzIiLDAsZSwwLGUsZSxlXSxbMCwxLDE0MiwiTGFuZzMiLDAsZSwwLGUsZSxlXSxbMCwxLDE0MywiTGFuZzQiLDAsZSwwLGUsZSxlXSxbMCwxLDE0NCwiTGFuZzUiLDAsZSwwLGUsZSxlXSxbMCwxLDE0NSwiQWJvcnQiLDAsZSwwLGUsZSxlXSxbMCwxLDE0NiwiUHJvcHMiLDAsZSwwLGUsZSxlXSxbMCwxLDE0NywiTnVtcGFkUGFyZW5MZWZ0IiwwLGUsMCxlLGUsZV0sWzAsMSwxNDgsIk51bXBhZFBhcmVuUmlnaHQiLDAsZSwwLGUsZSxlXSxbMCwxLDE0OSwiTnVtcGFkQmFja3NwYWNlIiwwLGUsMCxlLGUsZV0sWzAsMSwxNTAsIk51bXBhZE1lbW9yeVN0b3JlIiwwLGUsMCxlLGUsZV0sWzAsMSwxNTEsIk51bXBhZE1lbW9yeVJlY2FsbCIsMCxlLDAsZSxlLGVdLFswLDEsMTUyLCJOdW1wYWRNZW1vcnlDbGVhciIsMCxlLDAsZSxlLGVdLFswLDEsMTUzLCJOdW1wYWRNZW1vcnlBZGQiLDAsZSwwLGUsZSxlXSxbMCwxLDE1NCwiTnVtcGFkTWVtb3J5U3VidHJhY3QiLDAsZSwwLGUsZSxlXSxbMCwxLDE1NSwiTnVtcGFkQ2xlYXIiLDEyNiwiQ2xlYXIiLDEyLCJWS19DTEVBUiIsZSxlXSxbMCwxLDE1NiwiTnVtcGFkQ2xlYXJFbnRyeSIsMCxlLDAsZSxlLGVdLFs1LDEsMCxlLDUsIkN0cmwiLDE3LCJWS19DT05UUk9MIixlLGVdLFs0LDEsMCxlLDQsIlNoaWZ0IiwxNiwiVktfU0hJRlQiLGUsZV0sWzYsMSwwLGUsNiwiQWx0IiwxOCwiVktfTUVOVSIsZSxlXSxbNTcsMSwwLGUsNTcsIk1ldGEiLDAsIlZLX0NPTU1BTkQiLGUsZV0sWzUsMSwxNTcsIkNvbnRyb2xMZWZ0Iiw1LGUsMCwiVktfTENPTlRST0wiLGUsZV0sWzQsMSwxNTgsIlNoaWZ0TGVmdCIsNCxlLDAsIlZLX0xTSElGVCIsZSxlXSxbNiwxLDE1OSwiQWx0TGVmdCIsNixlLDAsIlZLX0xNRU5VIixlLGVdLFs1NywxLDE2MCwiTWV0YUxlZnQiLDU3LGUsMCwiVktfTFdJTiIsZSxlXSxbNSwxLDE2MSwiQ29udHJvbFJpZ2h0Iiw1LGUsMCwiVktfUkNPTlRST0wiLGUsZV0sWzQsMSwxNjIsIlNoaWZ0UmlnaHQiLDQsZSwwLCJWS19SU0hJRlQiLGUsZV0sWzYsMSwxNjMsIkFsdFJpZ2h0Iiw2LGUsMCwiVktfUk1FTlUiLGUsZV0sWzU3LDEsMTY0LCJNZXRhUmlnaHQiLDU3LGUsMCwiVktfUldJTiIsZSxlXSxbMCwxLDE2NSwiQnJpZ2h0bmVzc1VwIiwwLGUsMCxlLGUsZV0sWzAsMSwxNjYsIkJyaWdodG5lc3NEb3duIiwwLGUsMCxlLGUsZV0sWzAsMSwxNjcsIk1lZGlhUGxheSIsMCxlLDAsZSxlLGVdLFswLDEsMTY4LCJNZWRpYVJlY29yZCIsMCxlLDAsZSxlLGVdLFswLDEsMTY5LCJNZWRpYUZhc3RGb3J3YXJkIiwwLGUsMCxlLGUsZV0sWzAsMSwxNzAsIk1lZGlhUmV3aW5kIiwwLGUsMCxlLGUsZV0sWzExNCwxLDE3MSwiTWVkaWFUcmFja05leHQiLDExOSwiTWVkaWFUcmFja05leHQiLDE3NiwiVktfTUVESUFfTkVYVF9UUkFDSyIsZSxlXSxbMTE1LDEsMTcyLCJNZWRpYVRyYWNrUHJldmlvdXMiLDEyMCwiTWVkaWFUcmFja1ByZXZpb3VzIiwxNzcsIlZLX01FRElBX1BSRVZfVFJBQ0siLGUsZV0sWzExNiwxLDE3MywiTWVkaWFTdG9wIiwxMjEsIk1lZGlhU3RvcCIsMTc4LCJWS19NRURJQV9TVE9QIixlLGVdLFswLDEsMTc0LCJFamVjdCIsMCxlLDAsZSxlLGVdLFsxMTcsMSwxNzUsIk1lZGlhUGxheVBhdXNlIiwxMjIsIk1lZGlhUGxheVBhdXNlIiwxNzksIlZLX01FRElBX1BMQVlfUEFVU0UiLGUsZV0sWzAsMSwxNzYsIk1lZGlhU2VsZWN0IiwxMjMsIkxhdW5jaE1lZGlhUGxheWVyIiwxODEsIlZLX01FRElBX0xBVU5DSF9NRURJQV9TRUxFQ1QiLGUsZV0sWzAsMSwxNzcsIkxhdW5jaE1haWwiLDEyNCwiTGF1bmNoTWFpbCIsMTgwLCJWS19NRURJQV9MQVVOQ0hfTUFJTCIsZSxlXSxbMCwxLDE3OCwiTGF1bmNoQXBwMiIsMTI1LCJMYXVuY2hBcHAyIiwxODMsIlZLX01FRElBX0xBVU5DSF9BUFAyIixlLGVdLFswLDEsMTc5LCJMYXVuY2hBcHAxIiwwLGUsMCwiVktfTUVESUFfTEFVTkNIX0FQUDEiLGUsZV0sWzAsMSwxODAsIlNlbGVjdFRhc2siLDAsZSwwLGUsZSxlXSxbMCwxLDE4MSwiTGF1bmNoU2NyZWVuU2F2ZXIiLDAsZSwwLGUsZSxlXSxbMCwxLDE4MiwiQnJvd3NlclNlYXJjaCIsMTE1LCJCcm93c2VyU2VhcmNoIiwxNzAsIlZLX0JST1dTRVJfU0VBUkNIIixlLGVdLFswLDEsMTgzLCJCcm93c2VySG9tZSIsMTE2LCJCcm93c2VySG9tZSIsMTcyLCJWS19CUk9XU0VSX0hPTUUiLGUsZV0sWzExMiwxLDE4NCwiQnJvd3NlckJhY2siLDExNywiQnJvd3NlckJhY2siLDE2NiwiVktfQlJPV1NFUl9CQUNLIixlLGVdLFsxMTMsMSwxODUsIkJyb3dzZXJGb3J3YXJkIiwxMTgsIkJyb3dzZXJGb3J3YXJkIiwxNjcsIlZLX0JST1dTRVJfRk9SV0FSRCIsZSxlXSxbMCwxLDE4NiwiQnJvd3NlclN0b3AiLDAsZSwwLCJWS19CUk9XU0VSX1NUT1AiLGUsZV0sWzAsMSwxODcsIkJyb3dzZXJSZWZyZXNoIiwwLGUsMCwiVktfQlJPV1NFUl9SRUZSRVNIIixlLGVdLFswLDEsMTg4LCJCcm93c2VyRmF2b3JpdGVzIiwwLGUsMCwiVktfQlJPV1NFUl9GQVZPUklURVMiLGUsZV0sWzAsMSwxODksIlpvb21Ub2dnbGUiLDAsZSwwLGUsZSxlXSxbMCwxLDE5MCwiTWFpbFJlcGx5IiwwLGUsMCxlLGUsZV0sWzAsMSwxOTEsIk1haWxGb3J3YXJkIiwwLGUsMCxlLGUsZV0sWzAsMSwxOTIsIk1haWxTZW5kIiwwLGUsMCxlLGUsZV0sWzEwOSwxLDAsZSwxMDksIktleUluQ29tcG9zaXRpb24iLDIyOSxlLGUsZV0sWzExMSwxLDAsZSwxMTEsIkFCTlRfQzIiLDE5NCwiVktfQUJOVF9DMiIsZSxlXSxbOTEsMSwwLGUsOTEsIk9FTV84IiwyMjMsIlZLX09FTV84IixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19LQU5BIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19IQU5HVUwiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX0pVTkpBIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19GSU5BTCIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfSEFOSkEiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX0tBTkpJIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19DT05WRVJUIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19OT05DT05WRVJUIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19BQ0NFUFQiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX01PREVDSEFOR0UiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX1NFTEVDVCIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfUFJJTlQiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX0VYRUNVVEUiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX1NOQVBTSE9UIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19IRUxQIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19BUFBTIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19QUk9DRVNTS0VZIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19QQUNLRVQiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX0RCRV9TQkNTQ0hBUiIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfREJFX0RCQ1NDSEFSIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19BVFROIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19DUlNFTCIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfRVhTRUwiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX0VSRU9GIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19QTEFZIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19aT09NIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19OT05BTUUiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX1BBMSIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfT0VNX0NMRUFSIixlLGVdXSxuPVtdLHI9W107Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3RbdCxpLG8scyxhLGwsYyxoLGQscF09ZTtpZihyW29dfHwocltvXT0hMCxPdFtzXT1vLEx0W3MudG9Mb3dlckNhc2UoKV09byksIW5bYV0pe2lmKG5bYV09ITAsIWwpdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgcmVwcmVzZW50YXRpb24gbWlzc2luZyBmb3Iga2V5IGNvZGUgJHthfSBhcm91bmQgc2NhbiBjb2RlICR7c31gKTt6dC5kZWZpbmUoYSxsKSxJdC5kZWZpbmUoYSxkfHxsKSxNdC5kZWZpbmUoYSxwfHxkfHxsKX1jJiYoUHRbY109YSl9fSgpLGZ1bmN0aW9uKGUpe2UudG9TdHJpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIHp0LmtleUNvZGVUb1N0cihlKX0sZS5mcm9tU3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiB6dC5zdHJUb0tleUNvZGUoZSl9LGUudG9Vc2VyU2V0dGluZ3NVUz1mdW5jdGlvbihlKXtyZXR1cm4gSXQua2V5Q29kZVRvU3RyKGUpfSxlLnRvVXNlclNldHRpbmdzR2VuZXJhbD1mdW5jdGlvbihlKXtyZXR1cm4gTXQua2V5Q29kZVRvU3RyKGUpfSxlLmZyb21Vc2VyU2V0dGluZ3M9ZnVuY3Rpb24oZSl7cmV0dXJuIEl0LnN0clRvS2V5Q29kZShlKXx8TXQuc3RyVG9LZXlDb2RlKGUpfSxlLnRvRWxlY3Ryb25BY2NlbGVyYXRvcj1mdW5jdGlvbihlKXtpZihlPj05MyYmZTw9MTA4KXJldHVybiBudWxsO3N3aXRjaChlKXtjYXNlIDE2OnJldHVybiJVcCI7Y2FzZSAxODpyZXR1cm4iRG93biI7Y2FzZSAxNTpyZXR1cm4iTGVmdCI7Y2FzZSAxNzpyZXR1cm4iUmlnaHQifXJldHVybiB6dC5rZXlDb2RlVG9TdHIoZSl9fShXdHx8KFd0PXt9KSk7Y2xhc3MgVXQgZXh0ZW5kcyB0dHtjb25zdHJ1Y3RvcihlLHQsbixyKXtzdXBlcihlLHQsbixyKSx0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcj1lLHRoaXMuc2VsZWN0aW9uU3RhcnRDb2x1bW49dCx0aGlzLnBvc2l0aW9uTGluZU51bWJlcj1uLHRoaXMucG9zaXRpb25Db2x1bW49cn10b1N0cmluZygpe3JldHVybiJbIit0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcisiLCIrdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbisiIC0+ICIrdGhpcy5wb3NpdGlvbkxpbmVOdW1iZXIrIiwiK3RoaXMucG9zaXRpb25Db2x1bW4rIl0ifWVxdWFsc1NlbGVjdGlvbihlKXtyZXR1cm4gVXQuc2VsZWN0aW9uc0VxdWFsKHRoaXMsZSl9c3RhdGljIHNlbGVjdGlvbnNFcXVhbChlLHQpe3JldHVybiBlLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcj09PXQuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyJiZlLnNlbGVjdGlvblN0YXJ0Q29sdW1uPT09dC5zZWxlY3Rpb25TdGFydENvbHVtbiYmZS5wb3NpdGlvbkxpbmVOdW1iZXI9PT10LnBvc2l0aW9uTGluZU51bWJlciYmZS5wb3NpdGlvbkNvbHVtbj09PXQucG9zaXRpb25Db2x1bW59Z2V0RGlyZWN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyPT09dGhpcy5zdGFydExpbmVOdW1iZXImJnRoaXMuc2VsZWN0aW9uU3RhcnRDb2x1bW49PT10aGlzLnN0YXJ0Q29sdW1uPzA6MX1zZXRFbmRQb3NpdGlvbihlLHQpe3JldHVybiAwPT09dGhpcy5nZXREaXJlY3Rpb24oKT9uZXcgVXQodGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5zdGFydENvbHVtbixlLHQpOm5ldyBVdChlLHQsdGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5zdGFydENvbHVtbil9Z2V0UG9zaXRpb24oKXtyZXR1cm4gbmV3IGV0KHRoaXMucG9zaXRpb25MaW5lTnVtYmVyLHRoaXMucG9zaXRpb25Db2x1bW4pfWdldFNlbGVjdGlvblN0YXJ0KCl7cmV0dXJuIG5ldyBldCh0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcix0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uKX1zZXRTdGFydFBvc2l0aW9uKGUsdCl7cmV0dXJuIDA9PT10aGlzLmdldERpcmVjdGlvbigpP25ldyBVdChlLHQsdGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uKTpuZXcgVXQodGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uLGUsdCl9c3RhdGljIGZyb21Qb3NpdGlvbnMoZSx0PWUpe3JldHVybiBuZXcgVXQoZS5saW5lTnVtYmVyLGUuY29sdW1uLHQubGluZU51bWJlcix0LmNvbHVtbil9c3RhdGljIGZyb21SYW5nZShlLHQpe3JldHVybiAwPT09dD9uZXcgVXQoZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbixlLmVuZExpbmVOdW1iZXIsZS5lbmRDb2x1bW4pOm5ldyBVdChlLmVuZExpbmVOdW1iZXIsZS5lbmRDb2x1bW4sZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbil9c3RhdGljIGxpZnRTZWxlY3Rpb24oZSl7cmV0dXJuIG5ldyBVdChlLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcixlLnNlbGVjdGlvblN0YXJ0Q29sdW1uLGUucG9zaXRpb25MaW5lTnVtYmVyLGUucG9zaXRpb25Db2x1bW4pfXN0YXRpYyBzZWxlY3Rpb25zQXJyRXF1YWwoZSx0KXtpZihlJiYhdHx8IWUmJnQpcmV0dXJuITE7aWYoIWUmJiF0KXJldHVybiEwO2lmKGUubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBuPTAscj1lLmxlbmd0aDtuPHI7bisrKWlmKCF0aGlzLnNlbGVjdGlvbnNFcXVhbChlW25dLHRbbl0pKXJldHVybiExO3JldHVybiEwfXN0YXRpYyBpc0lTZWxlY3Rpb24oZSl7cmV0dXJuIGUmJiJudW1iZXIiPT10eXBlb2YgZS5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5zZWxlY3Rpb25TdGFydENvbHVtbiYmIm51bWJlciI9PXR5cGVvZiBlLnBvc2l0aW9uTGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLnBvc2l0aW9uQ29sdW1ufXN0YXRpYyBjcmVhdGVXaXRoRGlyZWN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIDA9PT1pP25ldyBVdChlLHQsbixyKTpuZXcgVXQobixyLGUsdCl9fWNsYXNzIEt0e2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLmlkPWUsdGhpcy5kZWZpbml0aW9uPXQsdGhpcy5kZXNjcmlwdGlvbj1uLEt0Ll9hbGxDb2RpY29ucy5wdXNoKHRoaXMpfWdldCBjbGFzc05hbWVzKCl7cmV0dXJuImNvZGljb24gY29kaWNvbi0iK3RoaXMuaWR9Z2V0IGNsYXNzTmFtZXNBcnJheSgpe3JldHVyblsiY29kaWNvbiIsImNvZGljb24tIit0aGlzLmlkXX1nZXQgY3NzU2VsZWN0b3IoKXtyZXR1cm4iLmNvZGljb24uY29kaWNvbi0iK3RoaXMuaWR9c3RhdGljIGdldEFsbCgpe3JldHVybiBLdC5fYWxsQ29kaWNvbnN9fUt0Ll9hbGxDb2RpY29ucz1bXSxLdC5hZGQ9bmV3IEt0KCJhZGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjAifSksS3QucGx1cz1uZXcgS3QoInBsdXMiLEt0LmFkZC5kZWZpbml0aW9uKSxLdC5naXN0TmV3PW5ldyBLdCgiZ2lzdC1uZXciLEt0LmFkZC5kZWZpbml0aW9uKSxLdC5yZXBvQ3JlYXRlPW5ldyBLdCgicmVwby1jcmVhdGUiLEt0LmFkZC5kZWZpbml0aW9uKSxLdC5saWdodGJ1bGI9bmV3IEt0KCJsaWdodGJ1bGIiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjEifSksS3QubGlnaHRCdWxiPW5ldyBLdCgibGlnaHQtYnVsYiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MSJ9KSxLdC5yZXBvPW5ldyBLdCgicmVwbyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MiJ9KSxLdC5yZXBvRGVsZXRlPW5ldyBLdCgicmVwby1kZWxldGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjIifSksS3QuZ2lzdEZvcms9bmV3IEt0KCJnaXN0LWZvcmsiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjMifSksS3QucmVwb0ZvcmtlZD1uZXcgS3QoInJlcG8tZm9ya2VkIix7Zm9udENoYXJhY3RlcjoiXFxlYTYzIn0pLEt0LmdpdFB1bGxSZXF1ZXN0PW5ldyBLdCgiZ2l0LXB1bGwtcmVxdWVzdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NCJ9KSxLdC5naXRQdWxsUmVxdWVzdEFiYW5kb25lZD1uZXcgS3QoImdpdC1wdWxsLXJlcXVlc3QtYWJhbmRvbmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYTY0In0pLEt0LnJlY29yZEtleXM9bmV3IEt0KCJyZWNvcmQta2V5cyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NSJ9KSxLdC5rZXlib2FyZD1uZXcgS3QoImtleWJvYXJkIix7Zm9udENoYXJhY3RlcjoiXFxlYTY1In0pLEt0LnRhZz1uZXcgS3QoInRhZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NiJ9KSxLdC50YWdBZGQ9bmV3IEt0KCJ0YWctYWRkIix7Zm9udENoYXJhY3RlcjoiXFxlYTY2In0pLEt0LnRhZ1JlbW92ZT1uZXcgS3QoInRhZy1yZW1vdmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjYifSksS3QucGVyc29uPW5ldyBLdCgicGVyc29uIix7Zm9udENoYXJhY3RlcjoiXFxlYTY3In0pLEt0LnBlcnNvbkZvbGxvdz1uZXcgS3QoInBlcnNvbi1mb2xsb3ciLHtmb250Q2hhcmFjdGVyOiJcXGVhNjcifSksS3QucGVyc29uT3V0bGluZT1uZXcgS3QoInBlcnNvbi1vdXRsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYTY3In0pLEt0LnBlcnNvbkZpbGxlZD1uZXcgS3QoInBlcnNvbi1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjcifSksS3QuZ2l0QnJhbmNoPW5ldyBLdCgiZ2l0LWJyYW5jaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2OCJ9KSxLdC5naXRCcmFuY2hDcmVhdGU9bmV3IEt0KCJnaXQtYnJhbmNoLWNyZWF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2OCJ9KSxLdC5naXRCcmFuY2hEZWxldGU9bmV3IEt0KCJnaXQtYnJhbmNoLWRlbGV0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2OCJ9KSxLdC5zb3VyY2VDb250cm9sPW5ldyBLdCgic291cmNlLWNvbnRyb2wiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjgifSksS3QubWlycm9yPW5ldyBLdCgibWlycm9yIix7Zm9udENoYXJhY3RlcjoiXFxlYTY5In0pLEt0Lm1pcnJvclB1YmxpYz1uZXcgS3QoIm1pcnJvci1wdWJsaWMiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjkifSksS3Quc3Rhcj1uZXcgS3QoInN0YXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmEifSksS3Quc3RhckFkZD1uZXcgS3QoInN0YXItYWRkIix7Zm9udENoYXJhY3RlcjoiXFxlYTZhIn0pLEt0LnN0YXJEZWxldGU9bmV3IEt0KCJzdGFyLWRlbGV0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2YSJ9KSxLdC5zdGFyRW1wdHk9bmV3IEt0KCJzdGFyLWVtcHR5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTZhIn0pLEt0LmNvbW1lbnQ9bmV3IEt0KCJjb21tZW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYTZiIn0pLEt0LmNvbW1lbnRBZGQ9bmV3IEt0KCJjb21tZW50LWFkZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2YiJ9KSxLdC5hbGVydD1uZXcgS3QoImFsZXJ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTZjIn0pLEt0Lndhcm5pbmc9bmV3IEt0KCJ3YXJuaW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYTZjIn0pLEt0LnNlYXJjaD1uZXcgS3QoInNlYXJjaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZCJ9KSxLdC5zZWFyY2hTYXZlPW5ldyBLdCgic2VhcmNoLXNhdmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmQifSksS3QubG9nT3V0PW5ldyBLdCgibG9nLW91dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZSJ9KSxLdC5zaWduT3V0PW5ldyBLdCgic2lnbi1vdXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmUifSksS3QubG9nSW49bmV3IEt0KCJsb2ctaW4iLHtmb250Q2hhcmFjdGVyOiJcXGVhNmYifSksS3Quc2lnbkluPW5ldyBLdCgic2lnbi1pbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZiJ9KSxLdC5leWU9bmV3IEt0KCJleWUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzAifSksS3QuZXllVW53YXRjaD1uZXcgS3QoImV5ZS11bndhdGNoIix7Zm9udENoYXJhY3RlcjoiXFxlYTcwIn0pLEt0LmV5ZVdhdGNoPW5ldyBLdCgiZXllLXdhdGNoIix7Zm9udENoYXJhY3RlcjoiXFxlYTcwIn0pLEt0LmNpcmNsZUZpbGxlZD1uZXcgS3QoImNpcmNsZS1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzEifSksS3QucHJpbWl0aXZlRG90PW5ldyBLdCgicHJpbWl0aXZlLWRvdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxLdC5jbG9zZURpcnR5PW5ldyBLdCgiY2xvc2UtZGlydHkiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzEifSksS3QuZGVidWdCcmVha3BvaW50PW5ldyBLdCgiZGVidWctYnJlYWtwb2ludCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxLdC5kZWJ1Z0JyZWFrcG9pbnREaXNhYmxlZD1uZXcgS3QoImRlYnVnLWJyZWFrcG9pbnQtZGlzYWJsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzEifSksS3QuZGVidWdIaW50PW5ldyBLdCgiZGVidWctaGludCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxLdC5wcmltaXRpdmVTcXVhcmU9bmV3IEt0KCJwcmltaXRpdmUtc3F1YXJlIix7Zm9udENoYXJhY3RlcjoiXFxlYTcyIn0pLEt0LmVkaXQ9bmV3IEt0KCJlZGl0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTczIn0pLEt0LnBlbmNpbD1uZXcgS3QoInBlbmNpbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MyJ9KSxLdC5pbmZvPW5ldyBLdCgiaW5mbyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NCJ9KSxLdC5pc3N1ZU9wZW5lZD1uZXcgS3QoImlzc3VlLW9wZW5lZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NCJ9KSxLdC5naXN0UHJpdmF0ZT1uZXcgS3QoImdpc3QtcHJpdmF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NSJ9KSxLdC5naXRGb3JrUHJpdmF0ZT1uZXcgS3QoImdpdC1mb3JrLXByaXZhdGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzUifSksS3QubG9jaz1uZXcgS3QoImxvY2siLHtmb250Q2hhcmFjdGVyOiJcXGVhNzUifSksS3QubWlycm9yUHJpdmF0ZT1uZXcgS3QoIm1pcnJvci1wcml2YXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYTc1In0pLEt0LmNsb3NlPW5ldyBLdCgiY2xvc2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzYifSksS3QucmVtb3ZlQ2xvc2U9bmV3IEt0KCJyZW1vdmUtY2xvc2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzYifSksS3QueD1uZXcgS3QoIngiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzYifSksS3QucmVwb1N5bmM9bmV3IEt0KCJyZXBvLXN5bmMiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzcifSksS3Quc3luYz1uZXcgS3QoInN5bmMiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzcifSksS3QuY2xvbmU9bmV3IEt0KCJjbG9uZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3OCJ9KSxLdC5kZXNrdG9wRG93bmxvYWQ9bmV3IEt0KCJkZXNrdG9wLWRvd25sb2FkIix7Zm9udENoYXJhY3RlcjoiXFxlYTc4In0pLEt0LmJlYWtlcj1uZXcgS3QoImJlYWtlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3OSJ9KSxLdC5taWNyb3Njb3BlPW5ldyBLdCgibWljcm9zY29wZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3OSJ9KSxLdC52bT1uZXcgS3QoInZtIix7Zm9udENoYXJhY3RlcjoiXFxlYTdhIn0pLEt0LmRldmljZURlc2t0b3A9bmV3IEt0KCJkZXZpY2UtZGVza3RvcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3YSJ9KSxLdC5maWxlPW5ldyBLdCgiZmlsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3YiJ9KSxLdC5maWxlVGV4dD1uZXcgS3QoImZpbGUtdGV4dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3YiJ9KSxLdC5tb3JlPW5ldyBLdCgibW9yZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3YyJ9KSxLdC5lbGxpcHNpcz1uZXcgS3QoImVsbGlwc2lzIix7Zm9udENoYXJhY3RlcjoiXFxlYTdjIn0pLEt0LmtlYmFiSG9yaXpvbnRhbD1uZXcgS3QoImtlYmFiLWhvcml6b250YWwiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2MifSksS3QubWFpbFJlcGx5PW5ldyBLdCgibWFpbC1yZXBseSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3ZCJ9KSxLdC5yZXBseT1uZXcgS3QoInJlcGx5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTdkIn0pLEt0Lm9yZ2FuaXphdGlvbj1uZXcgS3QoIm9yZ2FuaXphdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3ZSJ9KSxLdC5vcmdhbml6YXRpb25GaWxsZWQ9bmV3IEt0KCJvcmdhbml6YXRpb24tZmlsbGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYTdlIn0pLEt0Lm9yZ2FuaXphdGlvbk91dGxpbmU9bmV3IEt0KCJvcmdhbml6YXRpb24tb3V0bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3ZSJ9KSxLdC5uZXdGaWxlPW5ldyBLdCgibmV3LWZpbGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2YifSksS3QuZmlsZUFkZD1uZXcgS3QoImZpbGUtYWRkIix7Zm9udENoYXJhY3RlcjoiXFxlYTdmIn0pLEt0Lm5ld0ZvbGRlcj1uZXcgS3QoIm5ldy1mb2xkZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODAifSksS3QuZmlsZURpcmVjdG9yeUNyZWF0ZT1uZXcgS3QoImZpbGUtZGlyZWN0b3J5LWNyZWF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MCJ9KSxLdC50cmFzaD1uZXcgS3QoInRyYXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYTgxIn0pLEt0LnRyYXNoY2FuPW5ldyBLdCgidHJhc2hjYW4iLHtmb250Q2hhcmFjdGVyOiJcXGVhODEifSksS3QuaGlzdG9yeT1uZXcgS3QoImhpc3RvcnkiLHtmb250Q2hhcmFjdGVyOiJcXGVhODIifSksS3QuY2xvY2s9bmV3IEt0KCJjbG9jayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MiJ9KSxLdC5mb2xkZXI9bmV3IEt0KCJmb2xkZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODMifSksS3QuZmlsZURpcmVjdG9yeT1uZXcgS3QoImZpbGUtZGlyZWN0b3J5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTgzIn0pLEt0LnN5bWJvbEZvbGRlcj1uZXcgS3QoInN5bWJvbC1mb2xkZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODMifSksS3QubG9nb0dpdGh1Yj1uZXcgS3QoImxvZ28tZ2l0aHViIix7Zm9udENoYXJhY3RlcjoiXFxlYTg0In0pLEt0Lm1hcmtHaXRodWI9bmV3IEt0KCJtYXJrLWdpdGh1YiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NCJ9KSxLdC5naXRodWI9bmV3IEt0KCJnaXRodWIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODQifSksS3QudGVybWluYWw9bmV3IEt0KCJ0ZXJtaW5hbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NSJ9KSxLdC5jb25zb2xlPW5ldyBLdCgiY29uc29sZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NSJ9KSxLdC5yZXBsPW5ldyBLdCgicmVwbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NSJ9KSxLdC56YXA9bmV3IEt0KCJ6YXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhODYifSksS3Quc3ltYm9sRXZlbnQ9bmV3IEt0KCJzeW1ib2wtZXZlbnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhODYifSksS3QuZXJyb3I9bmV3IEt0KCJlcnJvciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NyJ9KSxLdC5zdG9wPW5ldyBLdCgic3RvcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NyJ9KSxLdC52YXJpYWJsZT1uZXcgS3QoInZhcmlhYmxlIix7Zm9udENoYXJhY3RlcjoiXFxlYTg4In0pLEt0LnN5bWJvbFZhcmlhYmxlPW5ldyBLdCgic3ltYm9sLXZhcmlhYmxlIix7Zm9udENoYXJhY3RlcjoiXFxlYTg4In0pLEt0LmFycmF5PW5ldyBLdCgiYXJyYXkiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGEifSksS3Quc3ltYm9sQXJyYXk9bmV3IEt0KCJzeW1ib2wtYXJyYXkiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGEifSksS3Quc3ltYm9sTW9kdWxlPW5ldyBLdCgic3ltYm9sLW1vZHVsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YiJ9KSxLdC5zeW1ib2xQYWNrYWdlPW5ldyBLdCgic3ltYm9sLXBhY2thZ2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGIifSksS3Quc3ltYm9sTmFtZXNwYWNlPW5ldyBLdCgic3ltYm9sLW5hbWVzcGFjZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YiJ9KSxLdC5zeW1ib2xPYmplY3Q9bmV3IEt0KCJzeW1ib2wtb2JqZWN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYThiIn0pLEt0LnN5bWJvbE1ldGhvZD1uZXcgS3QoInN5bWJvbC1tZXRob2QiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGMifSksS3Quc3ltYm9sRnVuY3Rpb249bmV3IEt0KCJzeW1ib2wtZnVuY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGVhOGMifSksS3Quc3ltYm9sQ29uc3RydWN0b3I9bmV3IEt0KCJzeW1ib2wtY29uc3RydWN0b3IiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGMifSksS3Quc3ltYm9sQm9vbGVhbj1uZXcgS3QoInN5bWJvbC1ib29sZWFuIix7Zm9udENoYXJhY3RlcjoiXFxlYThmIn0pLEt0LnN5bWJvbE51bGw9bmV3IEt0KCJzeW1ib2wtbnVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4ZiJ9KSxLdC5zeW1ib2xOdW1lcmljPW5ldyBLdCgic3ltYm9sLW51bWVyaWMiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTAifSksS3Quc3ltYm9sTnVtYmVyPW5ldyBLdCgic3ltYm9sLW51bWJlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MCJ9KSxLdC5zeW1ib2xTdHJ1Y3R1cmU9bmV3IEt0KCJzeW1ib2wtc3RydWN0dXJlIix7Zm9udENoYXJhY3RlcjoiXFxlYTkxIn0pLEt0LnN5bWJvbFN0cnVjdD1uZXcgS3QoInN5bWJvbC1zdHJ1Y3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTEifSksS3Quc3ltYm9sUGFyYW1ldGVyPW5ldyBLdCgic3ltYm9sLXBhcmFtZXRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MiJ9KSxLdC5zeW1ib2xUeXBlUGFyYW1ldGVyPW5ldyBLdCgic3ltYm9sLXR5cGUtcGFyYW1ldGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYTkyIn0pLEt0LnN5bWJvbEtleT1uZXcgS3QoInN5bWJvbC1rZXkiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTMifSksS3Quc3ltYm9sVGV4dD1uZXcgS3QoInN5bWJvbC10ZXh0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTkzIn0pLEt0LnN5bWJvbFJlZmVyZW5jZT1uZXcgS3QoInN5bWJvbC1yZWZlcmVuY2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTQifSksS3QuZ29Ub0ZpbGU9bmV3IEt0KCJnby10by1maWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYTk0In0pLEt0LnN5bWJvbEVudW09bmV3IEt0KCJzeW1ib2wtZW51bSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NSJ9KSxLdC5zeW1ib2xWYWx1ZT1uZXcgS3QoInN5bWJvbC12YWx1ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NSJ9KSxLdC5zeW1ib2xSdWxlcj1uZXcgS3QoInN5bWJvbC1ydWxlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NiJ9KSxLdC5zeW1ib2xVbml0PW5ldyBLdCgic3ltYm9sLXVuaXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTYifSksS3QuYWN0aXZhdGVCcmVha3BvaW50cz1uZXcgS3QoImFjdGl2YXRlLWJyZWFrcG9pbnRzIix7Zm9udENoYXJhY3RlcjoiXFxlYTk3In0pLEt0LmFyY2hpdmU9bmV3IEt0KCJhcmNoaXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYTk4In0pLEt0LmFycm93Qm90aD1uZXcgS3QoImFycm93LWJvdGgiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTkifSksS3QuYXJyb3dEb3duPW5ldyBLdCgiYXJyb3ctZG93biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5YSJ9KSxLdC5hcnJvd0xlZnQ9bmV3IEt0KCJhcnJvdy1sZWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTliIn0pLEt0LmFycm93UmlnaHQ9bmV3IEt0KCJhcnJvdy1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5YyJ9KSxLdC5hcnJvd1NtYWxsRG93bj1uZXcgS3QoImFycm93LXNtYWxsLWRvd24iLHtmb250Q2hhcmFjdGVyOiJcXGVhOWQifSksS3QuYXJyb3dTbWFsbExlZnQ9bmV3IEt0KCJhcnJvdy1zbWFsbC1sZWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTllIn0pLEt0LmFycm93U21hbGxSaWdodD1uZXcgS3QoImFycm93LXNtYWxsLXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTlmIn0pLEt0LmFycm93U21hbGxVcD1uZXcgS3QoImFycm93LXNtYWxsLXVwIix7Zm9udENoYXJhY3RlcjoiXFxlYWEwIn0pLEt0LmFycm93VXA9bmV3IEt0KCJhcnJvdy11cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhMSJ9KSxLdC5iZWxsPW5ldyBLdCgiYmVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhMiJ9KSxLdC5ib2xkPW5ldyBLdCgiYm9sZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhMyJ9KSxLdC5ib29rPW5ldyBLdCgiYm9vayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhNCJ9KSxLdC5ib29rbWFyaz1uZXcgS3QoImJvb2ttYXJrIix7Zm9udENoYXJhY3RlcjoiXFxlYWE1In0pLEt0LmRlYnVnQnJlYWtwb2ludENvbmRpdGlvbmFsVW52ZXJpZmllZD1uZXcgS3QoImRlYnVnLWJyZWFrcG9pbnQtY29uZGl0aW9uYWwtdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhNiJ9KSxLdC5kZWJ1Z0JyZWFrcG9pbnRDb25kaXRpb25hbD1uZXcgS3QoImRlYnVnLWJyZWFrcG9pbnQtY29uZGl0aW9uYWwiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTcifSksS3QuZGVidWdCcmVha3BvaW50Q29uZGl0aW9uYWxEaXNhYmxlZD1uZXcgS3QoImRlYnVnLWJyZWFrcG9pbnQtY29uZGl0aW9uYWwtZGlzYWJsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTcifSksS3QuZGVidWdCcmVha3BvaW50RGF0YVVudmVyaWZpZWQ9bmV3IEt0KCJkZWJ1Zy1icmVha3BvaW50LWRhdGEtdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhOCJ9KSxLdC5kZWJ1Z0JyZWFrcG9pbnREYXRhPW5ldyBLdCgiZGVidWctYnJlYWtwb2ludC1kYXRhIix7Zm9udENoYXJhY3RlcjoiXFxlYWE5In0pLEt0LmRlYnVnQnJlYWtwb2ludERhdGFEaXNhYmxlZD1uZXcgS3QoImRlYnVnLWJyZWFrcG9pbnQtZGF0YS1kaXNhYmxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhOSJ9KSxLdC5kZWJ1Z0JyZWFrcG9pbnRMb2dVbnZlcmlmaWVkPW5ldyBLdCgiZGVidWctYnJlYWtwb2ludC1sb2ctdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhYSJ9KSxLdC5kZWJ1Z0JyZWFrcG9pbnRMb2c9bmV3IEt0KCJkZWJ1Zy1icmVha3BvaW50LWxvZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhYiJ9KSxLdC5kZWJ1Z0JyZWFrcG9pbnRMb2dEaXNhYmxlZD1uZXcgS3QoImRlYnVnLWJyZWFrcG9pbnQtbG9nLWRpc2FibGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWFiIn0pLEt0LmJyaWVmY2FzZT1uZXcgS3QoImJyaWVmY2FzZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhYyJ9KSxLdC5icm9hZGNhc3Q9bmV3IEt0KCJicm9hZGNhc3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhYWQifSksS3QuYnJvd3Nlcj1uZXcgS3QoImJyb3dzZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhYWUifSksS3QuYnVnPW5ldyBLdCgiYnVnIix7Zm9udENoYXJhY3RlcjoiXFxlYWFmIn0pLEt0LmNhbGVuZGFyPW5ldyBLdCgiY2FsZW5kYXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjAifSksS3QuY2FzZVNlbnNpdGl2ZT1uZXcgS3QoImNhc2Utc2Vuc2l0aXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYWIxIn0pLEt0LmNoZWNrPW5ldyBLdCgiY2hlY2siLHtmb250Q2hhcmFjdGVyOiJcXGVhYjIifSksS3QuY2hlY2tsaXN0PW5ldyBLdCgiY2hlY2tsaXN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWIzIn0pLEt0LmNoZXZyb25Eb3duPW5ldyBLdCgiY2hldnJvbi1kb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYWI0In0pLEt0LmRyb3BEb3duQnV0dG9uPW5ldyBLdCgiZHJvcC1kb3duLWJ1dHRvbiIsS3QuY2hldnJvbkRvd24uZGVmaW5pdGlvbiksS3QuY2hldnJvbkxlZnQ9bmV3IEt0KCJjaGV2cm9uLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjUifSksS3QuY2hldnJvblJpZ2h0PW5ldyBLdCgiY2hldnJvbi1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiNiJ9KSxLdC5jaGV2cm9uVXA9bmV3IEt0KCJjaGV2cm9uLXVwIix7Zm9udENoYXJhY3RlcjoiXFxlYWI3In0pLEt0LmNocm9tZUNsb3NlPW5ldyBLdCgiY2hyb21lLWNsb3NlIix7Zm9udENoYXJhY3RlcjoiXFxlYWI4In0pLEt0LmNocm9tZU1heGltaXplPW5ldyBLdCgiY2hyb21lLW1heGltaXplIix7Zm9udENoYXJhY3RlcjoiXFxlYWI5In0pLEt0LmNocm9tZU1pbmltaXplPW5ldyBLdCgiY2hyb21lLW1pbmltaXplIix7Zm9udENoYXJhY3RlcjoiXFxlYWJhIn0pLEt0LmNocm9tZVJlc3RvcmU9bmV3IEt0KCJjaHJvbWUtcmVzdG9yZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiYiJ9KSxLdC5jaXJjbGVPdXRsaW5lPW5ldyBLdCgiY2lyY2xlLW91dGxpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYmMifSksS3QuZGVidWdCcmVha3BvaW50VW52ZXJpZmllZD1uZXcgS3QoImRlYnVnLWJyZWFrcG9pbnQtdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiYyJ9KSxLdC5jaXJjbGVTbGFzaD1uZXcgS3QoImNpcmNsZS1zbGFzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiZCJ9KSxLdC5jaXJjdWl0Qm9hcmQ9bmV3IEt0KCJjaXJjdWl0LWJvYXJkIix7Zm9udENoYXJhY3RlcjoiXFxlYWJlIn0pLEt0LmNsZWFyQWxsPW5ldyBLdCgiY2xlYXItYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYWJmIn0pLEt0LmNsaXBweT1uZXcgS3QoImNsaXBweSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjMCJ9KSxLdC5jbG9zZUFsbD1uZXcgS3QoImNsb3NlLWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjMSJ9KSxLdC5jbG91ZERvd25sb2FkPW5ldyBLdCgiY2xvdWQtZG93bmxvYWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzIifSksS3QuY2xvdWRVcGxvYWQ9bmV3IEt0KCJjbG91ZC11cGxvYWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzMifSksS3QuY29kZT1uZXcgS3QoImNvZGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzQifSksS3QuY29sbGFwc2VBbGw9bmV3IEt0KCJjb2xsYXBzZS1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzUifSksS3QuY29sb3JNb2RlPW5ldyBLdCgiY29sb3ItbW9kZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjNiJ9KSxLdC5jb21tZW50RGlzY3Vzc2lvbj1uZXcgS3QoImNvbW1lbnQtZGlzY3Vzc2lvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjNyJ9KSxLdC5jb21wYXJlQ2hhbmdlcz1uZXcgS3QoImNvbXBhcmUtY2hhbmdlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmZCJ9KSxLdC5jcmVkaXRDYXJkPW5ldyBLdCgiY3JlZGl0LWNhcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzkifSksS3QuZGFzaD1uZXcgS3QoImRhc2giLHtmb250Q2hhcmFjdGVyOiJcXGVhY2MifSksS3QuZGFzaGJvYXJkPW5ldyBLdCgiZGFzaGJvYXJkIix7Zm9udENoYXJhY3RlcjoiXFxlYWNkIn0pLEt0LmRhdGFiYXNlPW5ldyBLdCgiZGF0YWJhc2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhY2UifSksS3QuZGVidWdDb250aW51ZT1uZXcgS3QoImRlYnVnLWNvbnRpbnVlIix7Zm9udENoYXJhY3RlcjoiXFxlYWNmIn0pLEt0LmRlYnVnRGlzY29ubmVjdD1uZXcgS3QoImRlYnVnLWRpc2Nvbm5lY3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhZDAifSksS3QuZGVidWdQYXVzZT1uZXcgS3QoImRlYnVnLXBhdXNlIix7Zm9udENoYXJhY3RlcjoiXFxlYWQxIn0pLEt0LmRlYnVnUmVzdGFydD1uZXcgS3QoImRlYnVnLXJlc3RhcnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZDIifSksS3QuZGVidWdTdGFydD1uZXcgS3QoImRlYnVnLXN0YXJ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWQzIn0pLEt0LmRlYnVnU3RlcEludG89bmV3IEt0KCJkZWJ1Zy1zdGVwLWludG8iLHtmb250Q2hhcmFjdGVyOiJcXGVhZDQifSksS3QuZGVidWdTdGVwT3V0PW5ldyBLdCgiZGVidWctc3RlcC1vdXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZDUifSksS3QuZGVidWdTdGVwT3Zlcj1uZXcgS3QoImRlYnVnLXN0ZXAtb3ZlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkNiJ9KSxLdC5kZWJ1Z1N0b3A9bmV3IEt0KCJkZWJ1Zy1zdG9wIix7Zm9udENoYXJhY3RlcjoiXFxlYWQ3In0pLEt0LmRlYnVnPW5ldyBLdCgiZGVidWciLHtmb250Q2hhcmFjdGVyOiJcXGVhZDgifSksS3QuZGV2aWNlQ2FtZXJhVmlkZW89bmV3IEt0KCJkZXZpY2UtY2FtZXJhLXZpZGVvIix7Zm9udENoYXJhY3RlcjoiXFxlYWQ5In0pLEt0LmRldmljZUNhbWVyYT1uZXcgS3QoImRldmljZS1jYW1lcmEiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGEifSksS3QuZGV2aWNlTW9iaWxlPW5ldyBLdCgiZGV2aWNlLW1vYmlsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkYiJ9KSxLdC5kaWZmQWRkZWQ9bmV3IEt0KCJkaWZmLWFkZGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWRjIn0pLEt0LmRpZmZJZ25vcmVkPW5ldyBLdCgiZGlmZi1pZ25vcmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWRkIn0pLEt0LmRpZmZNb2RpZmllZD1uZXcgS3QoImRpZmYtbW9kaWZpZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGUifSksS3QuZGlmZlJlbW92ZWQ9bmV3IEt0KCJkaWZmLXJlbW92ZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGYifSksS3QuZGlmZlJlbmFtZWQ9bmV3IEt0KCJkaWZmLXJlbmFtZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTAifSksS3QuZGlmZj1uZXcgS3QoImRpZmYiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTEifSksS3QuZGlzY2FyZD1uZXcgS3QoImRpc2NhcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTIifSksS3QuZWRpdG9yTGF5b3V0PW5ldyBLdCgiZWRpdG9yLWxheW91dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlMyJ9KSxLdC5lbXB0eVdpbmRvdz1uZXcgS3QoImVtcHR5LXdpbmRvdyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlNCJ9KSxLdC5leGNsdWRlPW5ldyBLdCgiZXhjbHVkZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlNSJ9KSxLdC5leHRlbnNpb25zPW5ldyBLdCgiZXh0ZW5zaW9ucyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlNiJ9KSxLdC5leWVDbG9zZWQ9bmV3IEt0KCJleWUtY2xvc2VkIix7Zm9udENoYXJhY3RlcjoiXFxlYWU3In0pLEt0LmZpbGVCaW5hcnk9bmV3IEt0KCJmaWxlLWJpbmFyeSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlOCJ9KSxLdC5maWxlQ29kZT1uZXcgS3QoImZpbGUtY29kZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlOSJ9KSxLdC5maWxlTWVkaWE9bmV3IEt0KCJmaWxlLW1lZGlhIix7Zm9udENoYXJhY3RlcjoiXFxlYWVhIn0pLEt0LmZpbGVQZGY9bmV3IEt0KCJmaWxlLXBkZiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlYiJ9KSxLdC5maWxlU3VibW9kdWxlPW5ldyBLdCgiZmlsZS1zdWJtb2R1bGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhZWMifSksS3QuZmlsZVN5bWxpbmtEaXJlY3Rvcnk9bmV3IEt0KCJmaWxlLXN5bWxpbmstZGlyZWN0b3J5Iix7Zm9udENoYXJhY3RlcjoiXFxlYWVkIn0pLEt0LmZpbGVTeW1saW5rRmlsZT1uZXcgS3QoImZpbGUtc3ltbGluay1maWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYWVlIn0pLEt0LmZpbGVaaXA9bmV3IEt0KCJmaWxlLXppcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlZiJ9KSxLdC5maWxlcz1uZXcgS3QoImZpbGVzIix7Zm9udENoYXJhY3RlcjoiXFxlYWYwIn0pLEt0LmZpbHRlcj1uZXcgS3QoImZpbHRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmMSJ9KSxLdC5mbGFtZT1uZXcgS3QoImZsYW1lIix7Zm9udENoYXJhY3RlcjoiXFxlYWYyIn0pLEt0LmZvbGREb3duPW5ldyBLdCgiZm9sZC1kb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYWYzIn0pLEt0LmZvbGRVcD1uZXcgS3QoImZvbGQtdXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjQifSksS3QuZm9sZD1uZXcgS3QoImZvbGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjUifSksS3QuZm9sZGVyQWN0aXZlPW5ldyBLdCgiZm9sZGVyLWFjdGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmNiJ9KSxLdC5mb2xkZXJPcGVuZWQ9bmV3IEt0KCJmb2xkZXItb3BlbmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWY3In0pLEt0LmdlYXI9bmV3IEt0KCJnZWFyIix7Zm9udENoYXJhY3RlcjoiXFxlYWY4In0pLEt0LmdpZnQ9bmV3IEt0KCJnaWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWY5In0pLEt0Lmdpc3RTZWNyZXQ9bmV3IEt0KCJnaXN0LXNlY3JldCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmYSJ9KSxLdC5naXN0PW5ldyBLdCgiZ2lzdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmYiJ9KSxLdC5naXRDb21taXQ9bmV3IEt0KCJnaXQtY29tbWl0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWZjIn0pLEt0LmdpdENvbXBhcmU9bmV3IEt0KCJnaXQtY29tcGFyZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmZCJ9KSxLdC5naXRNZXJnZT1uZXcgS3QoImdpdC1tZXJnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmZSJ9KSxLdC5naXRodWJBY3Rpb249bmV3IEt0KCJnaXRodWItYWN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYWZmIn0pLEt0LmdpdGh1YkFsdD1uZXcgS3QoImdpdGh1Yi1hbHQiLHtmb250Q2hhcmFjdGVyOiJcXGViMDAifSksS3QuZ2xvYmU9bmV3IEt0KCJnbG9iZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwMSJ9KSxLdC5ncmFiYmVyPW5ldyBLdCgiZ3JhYmJlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwMiJ9KSxLdC5ncmFwaD1uZXcgS3QoImdyYXBoIix7Zm9udENoYXJhY3RlcjoiXFxlYjAzIn0pLEt0LmdyaXBwZXI9bmV3IEt0KCJncmlwcGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjA0In0pLEt0LmhlYXJ0PW5ldyBLdCgiaGVhcnQiLHtmb250Q2hhcmFjdGVyOiJcXGViMDUifSksS3QuaG9tZT1uZXcgS3QoImhvbWUiLHtmb250Q2hhcmFjdGVyOiJcXGViMDYifSksS3QuaG9yaXpvbnRhbFJ1bGU9bmV3IEt0KCJob3Jpem9udGFsLXJ1bGUiLHtmb250Q2hhcmFjdGVyOiJcXGViMDcifSksS3QuaHVib3Q9bmV3IEt0KCJodWJvdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwOCJ9KSxLdC5pbmJveD1uZXcgS3QoImluYm94Iix7Zm9udENoYXJhY3RlcjoiXFxlYjA5In0pLEt0Lmlzc3VlQ2xvc2VkPW5ldyBLdCgiaXNzdWUtY2xvc2VkIix7Zm9udENoYXJhY3RlcjoiXFxlYmE0In0pLEt0Lmlzc3VlUmVvcGVuZWQ9bmV3IEt0KCJpc3N1ZS1yZW9wZW5lZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwYiJ9KSxLdC5pc3N1ZXM9bmV3IEt0KCJpc3N1ZXMiLHtmb250Q2hhcmFjdGVyOiJcXGViMGMifSksS3QuaXRhbGljPW5ldyBLdCgiaXRhbGljIix7Zm9udENoYXJhY3RlcjoiXFxlYjBkIn0pLEt0LmplcnNleT1uZXcgS3QoImplcnNleSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwZSJ9KSxLdC5qc29uPW5ldyBLdCgianNvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwZiJ9KSxLdC5rZWJhYlZlcnRpY2FsPW5ldyBLdCgia2ViYWItdmVydGljYWwiLHtmb250Q2hhcmFjdGVyOiJcXGViMTAifSksS3Qua2V5PW5ldyBLdCgia2V5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjExIn0pLEt0Lmxhdz1uZXcgS3QoImxhdyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxMiJ9KSxLdC5saWdodGJ1bGJBdXRvZml4PW5ldyBLdCgibGlnaHRidWxiLWF1dG9maXgiLHtmb250Q2hhcmFjdGVyOiJcXGViMTMifSksS3QubGlua0V4dGVybmFsPW5ldyBLdCgibGluay1leHRlcm5hbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxNCJ9KSxLdC5saW5rPW5ldyBLdCgibGluayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxNSJ9KSxLdC5saXN0T3JkZXJlZD1uZXcgS3QoImxpc3Qtb3JkZXJlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxNiJ9KSxLdC5saXN0VW5vcmRlcmVkPW5ldyBLdCgibGlzdC11bm9yZGVyZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViMTcifSksS3QubGl2ZVNoYXJlPW5ldyBLdCgibGl2ZS1zaGFyZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxOCJ9KSxLdC5sb2FkaW5nPW5ldyBLdCgibG9hZGluZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxOSJ9KSxLdC5sb2NhdGlvbj1uZXcgS3QoImxvY2F0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjFhIn0pLEt0Lm1haWxSZWFkPW5ldyBLdCgibWFpbC1yZWFkIix7Zm9udENoYXJhY3RlcjoiXFxlYjFiIn0pLEt0Lm1haWw9bmV3IEt0KCJtYWlsIix7Zm9udENoYXJhY3RlcjoiXFxlYjFjIn0pLEt0Lm1hcmtkb3duPW5ldyBLdCgibWFya2Rvd24iLHtmb250Q2hhcmFjdGVyOiJcXGViMWQifSksS3QubWVnYXBob25lPW5ldyBLdCgibWVnYXBob25lIix7Zm9udENoYXJhY3RlcjoiXFxlYjFlIn0pLEt0Lm1lbnRpb249bmV3IEt0KCJtZW50aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjFmIn0pLEt0Lm1pbGVzdG9uZT1uZXcgS3QoIm1pbGVzdG9uZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyMCJ9KSxLdC5tb3J0YXJCb2FyZD1uZXcgS3QoIm1vcnRhci1ib2FyZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyMSJ9KSxLdC5tb3ZlPW5ldyBLdCgibW92ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyMiJ9KSxLdC5tdWx0aXBsZVdpbmRvd3M9bmV3IEt0KCJtdWx0aXBsZS13aW5kb3dzIix7Zm9udENoYXJhY3RlcjoiXFxlYjIzIn0pLEt0Lm11dGU9bmV3IEt0KCJtdXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYjI0In0pLEt0Lm5vTmV3bGluZT1uZXcgS3QoIm5vLW5ld2xpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViMjUifSksS3Qubm90ZT1uZXcgS3QoIm5vdGUiLHtmb250Q2hhcmFjdGVyOiJcXGViMjYifSksS3Qub2N0b2ZhY2U9bmV3IEt0KCJvY3RvZmFjZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyNyJ9KSxLdC5vcGVuUHJldmlldz1uZXcgS3QoIm9wZW4tcHJldmlldyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyOCJ9KSxLdC5wYWNrYWdlXz1uZXcgS3QoInBhY2thZ2UiLHtmb250Q2hhcmFjdGVyOiJcXGViMjkifSksS3QucGFpbnRjYW49bmV3IEt0KCJwYWludGNhbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyYSJ9KSxLdC5waW49bmV3IEt0KCJwaW4iLHtmb250Q2hhcmFjdGVyOiJcXGViMmIifSksS3QucGxheT1uZXcgS3QoInBsYXkiLHtmb250Q2hhcmFjdGVyOiJcXGViMmMifSksS3QucnVuPW5ldyBLdCgicnVuIix7Zm9udENoYXJhY3RlcjoiXFxlYjJjIn0pLEt0LnBsdWc9bmV3IEt0KCJwbHVnIix7Zm9udENoYXJhY3RlcjoiXFxlYjJkIn0pLEt0LnByZXNlcnZlQ2FzZT1uZXcgS3QoInByZXNlcnZlLWNhc2UiLHtmb250Q2hhcmFjdGVyOiJcXGViMmUifSksS3QucHJldmlldz1uZXcgS3QoInByZXZpZXciLHtmb250Q2hhcmFjdGVyOiJcXGViMmYifSksS3QucHJvamVjdD1uZXcgS3QoInByb2plY3QiLHtmb250Q2hhcmFjdGVyOiJcXGViMzAifSksS3QucHVsc2U9bmV3IEt0KCJwdWxzZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzMSJ9KSxLdC5xdWVzdGlvbj1uZXcgS3QoInF1ZXN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjMyIn0pLEt0LnF1b3RlPW5ldyBLdCgicXVvdGUiLHtmb250Q2hhcmFjdGVyOiJcXGViMzMifSksS3QucmFkaW9Ub3dlcj1uZXcgS3QoInJhZGlvLXRvd2VyIix7Zm9udENoYXJhY3RlcjoiXFxlYjM0In0pLEt0LnJlYWN0aW9ucz1uZXcgS3QoInJlYWN0aW9ucyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzNSJ9KSxLdC5yZWZlcmVuY2VzPW5ldyBLdCgicmVmZXJlbmNlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzNiJ9KSxLdC5yZWZyZXNoPW5ldyBLdCgicmVmcmVzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzNyJ9KSxLdC5yZWdleD1uZXcgS3QoInJlZ2V4Iix7Zm9udENoYXJhY3RlcjoiXFxlYjM4In0pLEt0LnJlbW90ZUV4cGxvcmVyPW5ldyBLdCgicmVtb3RlLWV4cGxvcmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjM5In0pLEt0LnJlbW90ZT1uZXcgS3QoInJlbW90ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzYSJ9KSxLdC5yZW1vdmU9bmV3IEt0KCJyZW1vdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViM2IifSksS3QucmVwbGFjZUFsbD1uZXcgS3QoInJlcGxhY2UtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjNjIn0pLEt0LnJlcGxhY2U9bmV3IEt0KCJyZXBsYWNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjNkIn0pLEt0LnJlcG9DbG9uZT1uZXcgS3QoInJlcG8tY2xvbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViM2UifSksS3QucmVwb0ZvcmNlUHVzaD1uZXcgS3QoInJlcG8tZm9yY2UtcHVzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzZiJ9KSxLdC5yZXBvUHVsbD1uZXcgS3QoInJlcG8tcHVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0MCJ9KSxLdC5yZXBvUHVzaD1uZXcgS3QoInJlcG8tcHVzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0MSJ9KSxLdC5yZXBvcnQ9bmV3IEt0KCJyZXBvcnQiLHtmb250Q2hhcmFjdGVyOiJcXGViNDIifSksS3QucmVxdWVzdENoYW5nZXM9bmV3IEt0KCJyZXF1ZXN0LWNoYW5nZXMiLHtmb250Q2hhcmFjdGVyOiJcXGViNDMifSksS3Qucm9ja2V0PW5ldyBLdCgicm9ja2V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjQ0In0pLEt0LnJvb3RGb2xkZXJPcGVuZWQ9bmV3IEt0KCJyb290LWZvbGRlci1vcGVuZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViNDUifSksS3Qucm9vdEZvbGRlcj1uZXcgS3QoInJvb3QtZm9sZGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjQ2In0pLEt0LnJzcz1uZXcgS3QoInJzcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0NyJ9KSxLdC5ydWJ5PW5ldyBLdCgicnVieSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0OCJ9KSxLdC5zYXZlQWxsPW5ldyBLdCgic2F2ZS1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViNDkifSksS3Quc2F2ZUFzPW5ldyBLdCgic2F2ZS1hcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0YSJ9KSxLdC5zYXZlPW5ldyBLdCgic2F2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0YiJ9KSxLdC5zY3JlZW5GdWxsPW5ldyBLdCgic2NyZWVuLWZ1bGwiLHtmb250Q2hhcmFjdGVyOiJcXGViNGMifSksS3Quc2NyZWVuTm9ybWFsPW5ldyBLdCgic2NyZWVuLW5vcm1hbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0ZCJ9KSxLdC5zZWFyY2hTdG9wPW5ldyBLdCgic2VhcmNoLXN0b3AiLHtmb250Q2hhcmFjdGVyOiJcXGViNGUifSksS3Quc2VydmVyPW5ldyBLdCgic2VydmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjUwIn0pLEt0LnNldHRpbmdzR2Vhcj1uZXcgS3QoInNldHRpbmdzLWdlYXIiLHtmb250Q2hhcmFjdGVyOiJcXGViNTEifSksS3Quc2V0dGluZ3M9bmV3IEt0KCJzZXR0aW5ncyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1MiJ9KSxLdC5zaGllbGQ9bmV3IEt0KCJzaGllbGQiLHtmb250Q2hhcmFjdGVyOiJcXGViNTMifSksS3Quc21pbGV5PW5ldyBLdCgic21pbGV5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjU0In0pLEt0LnNvcnRQcmVjZWRlbmNlPW5ldyBLdCgic29ydC1wcmVjZWRlbmNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjU1In0pLEt0LnNwbGl0SG9yaXpvbnRhbD1uZXcgS3QoInNwbGl0LWhvcml6b250YWwiLHtmb250Q2hhcmFjdGVyOiJcXGViNTYifSksS3Quc3BsaXRWZXJ0aWNhbD1uZXcgS3QoInNwbGl0LXZlcnRpY2FsIix7Zm9udENoYXJhY3RlcjoiXFxlYjU3In0pLEt0LnNxdWlycmVsPW5ldyBLdCgic3F1aXJyZWwiLHtmb250Q2hhcmFjdGVyOiJcXGViNTgifSksS3Quc3RhckZ1bGw9bmV3IEt0KCJzdGFyLWZ1bGwiLHtmb250Q2hhcmFjdGVyOiJcXGViNTkifSksS3Quc3RhckhhbGY9bmV3IEt0KCJzdGFyLWhhbGYiLHtmb250Q2hhcmFjdGVyOiJcXGViNWEifSksS3Quc3ltYm9sQ2xhc3M9bmV3IEt0KCJzeW1ib2wtY2xhc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViNWIifSksS3Quc3ltYm9sQ29sb3I9bmV3IEt0KCJzeW1ib2wtY29sb3IiLHtmb250Q2hhcmFjdGVyOiJcXGViNWMifSksS3Quc3ltYm9sQ3VzdG9tQ29sb3I9bmV3IEt0KCJzeW1ib2wtY3VzdG9tY29sb3IiLHtmb250Q2hhcmFjdGVyOiJcXGViNWMifSksS3Quc3ltYm9sQ29uc3RhbnQ9bmV3IEt0KCJzeW1ib2wtY29uc3RhbnQiLHtmb250Q2hhcmFjdGVyOiJcXGViNWQifSksS3Quc3ltYm9sRW51bU1lbWJlcj1uZXcgS3QoInN5bWJvbC1lbnVtLW1lbWJlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1ZSJ9KSxLdC5zeW1ib2xGaWVsZD1uZXcgS3QoInN5bWJvbC1maWVsZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1ZiJ9KSxLdC5zeW1ib2xGaWxlPW5ldyBLdCgic3ltYm9sLWZpbGUiLHtmb250Q2hhcmFjdGVyOiJcXGViNjAifSksS3Quc3ltYm9sSW50ZXJmYWNlPW5ldyBLdCgic3ltYm9sLWludGVyZmFjZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2MSJ9KSxLdC5zeW1ib2xLZXl3b3JkPW5ldyBLdCgic3ltYm9sLWtleXdvcmQiLHtmb250Q2hhcmFjdGVyOiJcXGViNjIifSksS3Quc3ltYm9sTWlzYz1uZXcgS3QoInN5bWJvbC1taXNjIix7Zm9udENoYXJhY3RlcjoiXFxlYjYzIn0pLEt0LnN5bWJvbE9wZXJhdG9yPW5ldyBLdCgic3ltYm9sLW9wZXJhdG9yIix7Zm9udENoYXJhY3RlcjoiXFxlYjY0In0pLEt0LnN5bWJvbFByb3BlcnR5PW5ldyBLdCgic3ltYm9sLXByb3BlcnR5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjY1In0pLEt0LndyZW5jaD1uZXcgS3QoIndyZW5jaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2NSJ9KSxLdC53cmVuY2hTdWJhY3Rpb249bmV3IEt0KCJ3cmVuY2gtc3ViYWN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjY1In0pLEt0LnN5bWJvbFNuaXBwZXQ9bmV3IEt0KCJzeW1ib2wtc25pcHBldCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2NiJ9KSxLdC50YXNrbGlzdD1uZXcgS3QoInRhc2tsaXN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjY3In0pLEt0LnRlbGVzY29wZT1uZXcgS3QoInRlbGVzY29wZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2OCJ9KSxLdC50ZXh0U2l6ZT1uZXcgS3QoInRleHQtc2l6ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2OSJ9KSxLdC50aHJlZUJhcnM9bmV3IEt0KCJ0aHJlZS1iYXJzIix7Zm9udENoYXJhY3RlcjoiXFxlYjZhIn0pLEt0LnRodW1ic2Rvd249bmV3IEt0KCJ0aHVtYnNkb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYjZiIn0pLEt0LnRodW1ic3VwPW5ldyBLdCgidGh1bWJzdXAiLHtmb250Q2hhcmFjdGVyOiJcXGViNmMifSksS3QudG9vbHM9bmV3IEt0KCJ0b29scyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2ZCJ9KSxLdC50cmlhbmdsZURvd249bmV3IEt0KCJ0cmlhbmdsZS1kb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYjZlIn0pLEt0LnRyaWFuZ2xlTGVmdD1uZXcgS3QoInRyaWFuZ2xlLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViNmYifSksS3QudHJpYW5nbGVSaWdodD1uZXcgS3QoInRyaWFuZ2xlLXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjcwIn0pLEt0LnRyaWFuZ2xlVXA9bmV3IEt0KCJ0cmlhbmdsZS11cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3MSJ9KSxLdC50d2l0dGVyPW5ldyBLdCgidHdpdHRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3MiJ9KSxLdC51bmZvbGQ9bmV3IEt0KCJ1bmZvbGQiLHtmb250Q2hhcmFjdGVyOiJcXGViNzMifSksS3QudW5sb2NrPW5ldyBLdCgidW5sb2NrIix7Zm9udENoYXJhY3RlcjoiXFxlYjc0In0pLEt0LnVubXV0ZT1uZXcgS3QoInVubXV0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3NSJ9KSxLdC51bnZlcmlmaWVkPW5ldyBLdCgidW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3NiJ9KSxLdC52ZXJpZmllZD1uZXcgS3QoInZlcmlmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjc3In0pLEt0LnZlcnNpb25zPW5ldyBLdCgidmVyc2lvbnMiLHtmb250Q2hhcmFjdGVyOiJcXGViNzgifSksS3Qudm1BY3RpdmU9bmV3IEt0KCJ2bS1hY3RpdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViNzkifSksS3Qudm1PdXRsaW5lPW5ldyBLdCgidm0tb3V0bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3YSJ9KSxLdC52bVJ1bm5pbmc9bmV3IEt0KCJ2bS1ydW5uaW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYjdiIn0pLEt0LndhdGNoPW5ldyBLdCgid2F0Y2giLHtmb250Q2hhcmFjdGVyOiJcXGViN2MifSksS3Qud2hpdGVzcGFjZT1uZXcgS3QoIndoaXRlc3BhY2UiLHtmb250Q2hhcmFjdGVyOiJcXGViN2QifSksS3Qud2hvbGVXb3JkPW5ldyBLdCgid2hvbGUtd29yZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3ZSJ9KSxLdC53aW5kb3c9bmV3IEt0KCJ3aW5kb3ciLHtmb250Q2hhcmFjdGVyOiJcXGViN2YifSksS3Qud29yZFdyYXA9bmV3IEt0KCJ3b3JkLXdyYXAiLHtmb250Q2hhcmFjdGVyOiJcXGViODAifSksS3Quem9vbUluPW5ldyBLdCgiem9vbS1pbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4MSJ9KSxLdC56b29tT3V0PW5ldyBLdCgiem9vbS1vdXQiLHtmb250Q2hhcmFjdGVyOiJcXGViODIifSksS3QubGlzdEZpbHRlcj1uZXcgS3QoImxpc3QtZmlsdGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjgzIn0pLEt0Lmxpc3RGbGF0PW5ldyBLdCgibGlzdC1mbGF0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjg0In0pLEt0Lmxpc3RTZWxlY3Rpb249bmV3IEt0KCJsaXN0LXNlbGVjdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4NSJ9KSxLdC5zZWxlY3Rpb249bmV3IEt0KCJzZWxlY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViODUifSksS3QubGlzdFRyZWU9bmV3IEt0KCJsaXN0LXRyZWUiLHtmb250Q2hhcmFjdGVyOiJcXGViODYifSksS3QuZGVidWdCcmVha3BvaW50RnVuY3Rpb25VbnZlcmlmaWVkPW5ldyBLdCgiZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbi11bnZlcmlmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjg3In0pLEt0LmRlYnVnQnJlYWtwb2ludEZ1bmN0aW9uPW5ldyBLdCgiZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4OCJ9KSxLdC5kZWJ1Z0JyZWFrcG9pbnRGdW5jdGlvbkRpc2FibGVkPW5ldyBLdCgiZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbi1kaXNhYmxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4OCJ9KSxLdC5kZWJ1Z1N0YWNrZnJhbWVBY3RpdmU9bmV3IEt0KCJkZWJ1Zy1zdGFja2ZyYW1lLWFjdGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4OSJ9KSxLdC5jaXJjbGVTbWFsbEZpbGxlZD1uZXcgS3QoImNpcmNsZS1zbWFsbC1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViOGEifSksS3QuZGVidWdTdGFja2ZyYW1lRG90PW5ldyBLdCgiZGVidWctc3RhY2tmcmFtZS1kb3QiLEt0LmNpcmNsZVNtYWxsRmlsbGVkLmRlZmluaXRpb24pLEt0LmRlYnVnU3RhY2tmcmFtZT1uZXcgS3QoImRlYnVnLXN0YWNrZnJhbWUiLHtmb250Q2hhcmFjdGVyOiJcXGViOGIifSksS3QuZGVidWdTdGFja2ZyYW1lRm9jdXNlZD1uZXcgS3QoImRlYnVnLXN0YWNrZnJhbWUtZm9jdXNlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4YiJ9KSxLdC5kZWJ1Z0JyZWFrcG9pbnRVbnN1cHBvcnRlZD1uZXcgS3QoImRlYnVnLWJyZWFrcG9pbnQtdW5zdXBwb3J0ZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViOGMifSksS3Quc3ltYm9sU3RyaW5nPW5ldyBLdCgic3ltYm9sLXN0cmluZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4ZCJ9KSxLdC5kZWJ1Z1JldmVyc2VDb250aW51ZT1uZXcgS3QoImRlYnVnLXJldmVyc2UtY29udGludWUiLHtmb250Q2hhcmFjdGVyOiJcXGViOGUifSksS3QuZGVidWdTdGVwQmFjaz1uZXcgS3QoImRlYnVnLXN0ZXAtYmFjayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4ZiJ9KSxLdC5kZWJ1Z1Jlc3RhcnRGcmFtZT1uZXcgS3QoImRlYnVnLXJlc3RhcnQtZnJhbWUiLHtmb250Q2hhcmFjdGVyOiJcXGViOTAifSksS3QuY2FsbEluY29taW5nPW5ldyBLdCgiY2FsbC1pbmNvbWluZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5MiJ9KSxLdC5jYWxsT3V0Z29pbmc9bmV3IEt0KCJjYWxsLW91dGdvaW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYjkzIn0pLEt0Lm1lbnU9bmV3IEt0KCJtZW51Iix7Zm9udENoYXJhY3RlcjoiXFxlYjk0In0pLEt0LmV4cGFuZEFsbD1uZXcgS3QoImV4cGFuZC1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViOTUifSksS3QuZmVlZGJhY2s9bmV3IEt0KCJmZWVkYmFjayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5NiJ9KSxLdC5ncm91cEJ5UmVmVHlwZT1uZXcgS3QoImdyb3VwLWJ5LXJlZi10eXBlIix7Zm9udENoYXJhY3RlcjoiXFxlYjk3In0pLEt0LnVuZ3JvdXBCeVJlZlR5cGU9bmV3IEt0KCJ1bmdyb3VwLWJ5LXJlZi10eXBlIix7Zm9udENoYXJhY3RlcjoiXFxlYjk4In0pLEt0LmFjY291bnQ9bmV3IEt0KCJhY2NvdW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYjk5In0pLEt0LmJlbGxEb3Q9bmV3IEt0KCJiZWxsLWRvdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5YSJ9KSxLdC5kZWJ1Z0NvbnNvbGU9bmV3IEt0KCJkZWJ1Zy1jb25zb2xlIix7Zm9udENoYXJhY3RlcjoiXFxlYjliIn0pLEt0LmxpYnJhcnk9bmV3IEt0KCJsaWJyYXJ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjljIn0pLEt0Lm91dHB1dD1uZXcgS3QoIm91dHB1dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5ZCJ9KSxLdC5ydW5BbGw9bmV3IEt0KCJydW4tYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjllIn0pLEt0LnN5bmNJZ25vcmVkPW5ldyBLdCgic3luYy1pZ25vcmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjlmIn0pLEt0LnBpbm5lZD1uZXcgS3QoInBpbm5lZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhMCJ9KSxLdC5naXRodWJJbnZlcnRlZD1uZXcgS3QoImdpdGh1Yi1pbnZlcnRlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhMSJ9KSxLdC5kZWJ1Z0FsdD1uZXcgS3QoImRlYnVnLWFsdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5MSJ9KSxLdC5zZXJ2ZXJQcm9jZXNzPW5ldyBLdCgic2VydmVyLXByb2Nlc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViYTIifSksS3Quc2VydmVyRW52aXJvbm1lbnQ9bmV3IEt0KCJzZXJ2ZXItZW52aXJvbm1lbnQiLHtmb250Q2hhcmFjdGVyOiJcXGViYTMifSksS3QucGFzcz1uZXcgS3QoInBhc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViYTQifSksS3Quc3RvcENpcmNsZT1uZXcgS3QoInN0b3AtY2lyY2xlIix7Zm9udENoYXJhY3RlcjoiXFxlYmE1In0pLEt0LnBsYXlDaXJjbGU9bmV3IEt0KCJwbGF5LWNpcmNsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhNiJ9KSxLdC5yZWNvcmQ9bmV3IEt0KCJyZWNvcmQiLHtmb250Q2hhcmFjdGVyOiJcXGViYTcifSksS3QuZGVidWdBbHRTbWFsbD1uZXcgS3QoImRlYnVnLWFsdC1zbWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhOCJ9KSxLdC52bUNvbm5lY3Q9bmV3IEt0KCJ2bS1jb25uZWN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmE5In0pLEt0LmNsb3VkPW5ldyBLdCgiY2xvdWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYWEifSksS3QubWVyZ2U9bmV3IEt0KCJtZXJnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhYiJ9KSxLdC5leHBvcnRJY29uPW5ldyBLdCgiZXhwb3J0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmFjIn0pLEt0LmdyYXBoTGVmdD1uZXcgS3QoImdyYXBoLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViYWQifSksS3QubWFnbmV0PW5ldyBLdCgibWFnbmV0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmFlIn0pLEt0Lm5vdGVib29rPW5ldyBLdCgibm90ZWJvb2siLHtmb250Q2hhcmFjdGVyOiJcXGViYWYifSksS3QucmVkbz1uZXcgS3QoInJlZG8iLHtmb250Q2hhcmFjdGVyOiJcXGViYjAifSksS3QuY2hlY2tBbGw9bmV3IEt0KCJjaGVjay1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViYjEifSksS3QucGlubmVkRGlydHk9bmV3IEt0KCJwaW5uZWQtZGlydHkiLHtmb250Q2hhcmFjdGVyOiJcXGViYjIifSksS3QucGFzc0ZpbGxlZD1uZXcgS3QoInBhc3MtZmlsbGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmIzIn0pLEt0LmNpcmNsZUxhcmdlRmlsbGVkPW5ldyBLdCgiY2lyY2xlLWxhcmdlLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNCJ9KSxLdC5jaXJjbGVMYXJnZU91dGxpbmU9bmV3IEt0KCJjaXJjbGUtbGFyZ2Utb3V0bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNSJ9KSxLdC5jb21iaW5lPW5ldyBLdCgiY29tYmluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNiJ9KSxLdC5nYXRoZXI9bmV3IEt0KCJnYXRoZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViYjYifSksS3QudGFibGU9bmV3IEt0KCJ0YWJsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNyJ9KSxLdC52YXJpYWJsZUdyb3VwPW5ldyBLdCgidmFyaWFibGUtZ3JvdXAiLHtmb250Q2hhcmFjdGVyOiJcXGViYjgifSksS3QudHlwZUhpZXJhcmNoeT1uZXcgS3QoInR5cGUtaGllcmFyY2h5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmI5In0pLEt0LnR5cGVIaWVyYXJjaHlTdWI9bmV3IEt0KCJ0eXBlLWhpZXJhcmNoeS1zdWIiLHtmb250Q2hhcmFjdGVyOiJcXGViYmEifSksS3QudHlwZUhpZXJhcmNoeVN1cGVyPW5ldyBLdCgidHlwZS1oaWVyYXJjaHktc3VwZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViYmIifSksS3QuZ2l0UHVsbFJlcXVlc3RDcmVhdGU9bmV3IEt0KCJnaXQtcHVsbC1yZXF1ZXN0LWNyZWF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiYyJ9KSxLdC5ydW5BYm92ZT1uZXcgS3QoInJ1bi1hYm92ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiZCJ9KSxLdC5ydW5CZWxvdz1uZXcgS3QoInJ1bi1iZWxvdyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiZSJ9KSxLdC5ub3RlYm9va1RlbXBsYXRlPW5ldyBLdCgibm90ZWJvb2stdGVtcGxhdGUiLHtmb250Q2hhcmFjdGVyOiJcXGViYmYifSksS3QuZGVidWdSZXJ1bj1uZXcgS3QoImRlYnVnLXJlcnVuIix7Zm9udENoYXJhY3RlcjoiXFxlYmMwIn0pLEt0LndvcmtzcGFjZVRydXN0ZWQ9bmV3IEt0KCJ3b3Jrc3BhY2UtdHJ1c3RlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjMSJ9KSxLdC53b3Jrc3BhY2VVbnRydXN0ZWQ9bmV3IEt0KCJ3b3Jrc3BhY2UtdW50cnVzdGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmMyIn0pLEt0LndvcmtzcGFjZVVuc3BlY2lmaWVkPW5ldyBLdCgid29ya3NwYWNlLXVuc3BlY2lmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmMzIn0pLEt0LnRlcm1pbmFsQ21kPW5ldyBLdCgidGVybWluYWwtY21kIix7Zm9udENoYXJhY3RlcjoiXFxlYmM0In0pLEt0LnRlcm1pbmFsRGViaWFuPW5ldyBLdCgidGVybWluYWwtZGViaWFuIix7Zm9udENoYXJhY3RlcjoiXFxlYmM1In0pLEt0LnRlcm1pbmFsTGludXg9bmV3IEt0KCJ0ZXJtaW5hbC1saW51eCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjNiJ9KSxLdC50ZXJtaW5hbFBvd2Vyc2hlbGw9bmV3IEt0KCJ0ZXJtaW5hbC1wb3dlcnNoZWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmM3In0pLEt0LnRlcm1pbmFsVG11eD1uZXcgS3QoInRlcm1pbmFsLXRtdXgiLHtmb250Q2hhcmFjdGVyOiJcXGViYzgifSksS3QudGVybWluYWxVYnVudHU9bmV3IEt0KCJ0ZXJtaW5hbC11YnVudHUiLHtmb250Q2hhcmFjdGVyOiJcXGViYzkifSksS3QudGVybWluYWxCYXNoPW5ldyBLdCgidGVybWluYWwtYmFzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjYSJ9KSxLdC5hcnJvd1N3YXA9bmV3IEt0KCJhcnJvdy1zd2FwIix7Zm9udENoYXJhY3RlcjoiXFxlYmNiIn0pLEt0LmNvcHk9bmV3IEt0KCJjb3B5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmNjIn0pLEt0LnBlcnNvbkFkZD1uZXcgS3QoInBlcnNvbi1hZGQiLHtmb250Q2hhcmFjdGVyOiJcXGViY2QifSksS3QuZmlsdGVyRmlsbGVkPW5ldyBLdCgiZmlsdGVyLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjZSJ9KSxLdC53YW5kPW5ldyBLdCgid2FuZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjZiJ9KSxLdC5kZWJ1Z0xpbmVCeUxpbmU9bmV3IEt0KCJkZWJ1Zy1saW5lLWJ5LWxpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViZDAifSksS3QuaW5zcGVjdD1uZXcgS3QoImluc3BlY3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZDEifSksS3QubGF5ZXJzPW5ldyBLdCgibGF5ZXJzIix7Zm9udENoYXJhY3RlcjoiXFxlYmQyIn0pLEt0LmxheWVyc0RvdD1uZXcgS3QoImxheWVycy1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZDMifSksS3QubGF5ZXJzQWN0aXZlPW5ldyBLdCgibGF5ZXJzLWFjdGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkNCJ9KSxLdC5jb21wYXNzPW5ldyBLdCgiY29tcGFzcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkNSJ9KSxLdC5jb21wYXNzRG90PW5ldyBLdCgiY29tcGFzcy1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZDYifSksS3QuY29tcGFzc0FjdGl2ZT1uZXcgS3QoImNvbXBhc3MtYWN0aXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYmQ3In0pLEt0LmF6dXJlPW5ldyBLdCgiYXp1cmUiLHtmb250Q2hhcmFjdGVyOiJcXGViZDgifSksS3QuaXNzdWVEcmFmdD1uZXcgS3QoImlzc3VlLWRyYWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmQ5In0pLEt0LmdpdFB1bGxSZXF1ZXN0Q2xvc2VkPW5ldyBLdCgiZ2l0LXB1bGwtcmVxdWVzdC1jbG9zZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViZGEifSksS3QuZ2l0UHVsbFJlcXVlc3REcmFmdD1uZXcgS3QoImdpdC1wdWxsLXJlcXVlc3QtZHJhZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZGIifSksS3QuZGVidWdBbGw9bmV3IEt0KCJkZWJ1Zy1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViZGMifSksS3QuZGVidWdDb3ZlcmFnZT1uZXcgS3QoImRlYnVnLWNvdmVyYWdlIix7Zm9udENoYXJhY3RlcjoiXFxlYmRkIn0pLEt0LnJ1bkVycm9ycz1uZXcgS3QoInJ1bi1lcnJvcnMiLHtmb250Q2hhcmFjdGVyOiJcXGViZGUifSksS3QuZm9sZGVyTGlicmFyeT1uZXcgS3QoImZvbGRlci1saWJyYXJ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmRmIn0pLEt0LmRlYnVnQ29udGludWVTbWFsbD1uZXcgS3QoImRlYnVnLWNvbnRpbnVlLXNtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmUwIn0pLEt0LmJlYWtlclN0b3A9bmV3IEt0KCJiZWFrZXItc3RvcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlMSJ9KSxLdC5ncmFwaExpbmU9bmV3IEt0KCJncmFwaC1saW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYmUyIn0pLEt0LmdyYXBoU2NhdHRlcj1uZXcgS3QoImdyYXBoLXNjYXR0ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViZTMifSksS3QucGllQ2hhcnQ9bmV3IEt0KCJwaWUtY2hhcnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZTQifSksS3QuYnJhY2tldD1uZXcgS3QoImJyYWNrZXQiLEt0Lmpzb24uZGVmaW5pdGlvbiksS3QuYnJhY2tldERvdD1uZXcgS3QoImJyYWNrZXQtZG90Iix7Zm9udENoYXJhY3RlcjoiXFxlYmU1In0pLEt0LmJyYWNrZXRFcnJvcj1uZXcgS3QoImJyYWNrZXQtZXJyb3IiLHtmb250Q2hhcmFjdGVyOiJcXGViZTYifSksS3QubG9ja1NtYWxsPW5ldyBLdCgibG9jay1zbWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlNyJ9KSxLdC5henVyZURldm9wcz1uZXcgS3QoImF6dXJlLWRldm9wcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlOCJ9KSxLdC52ZXJpZmllZEZpbGxlZD1uZXcgS3QoInZlcmlmaWVkLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlOSJ9KSxLdC5uZXdMaW5lPW5ldyBLdCgibmV3bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlYSJ9KSxLdC5sYXlvdXQ9bmV3IEt0KCJsYXlvdXQiLHtmb250Q2hhcmFjdGVyOiJcXGViZWIifSksS3QubGF5b3V0QWN0aXZpdHliYXJMZWZ0PW5ldyBLdCgibGF5b3V0LWFjdGl2aXR5YmFyLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZWMifSksS3QubGF5b3V0QWN0aXZpdHliYXJSaWdodD1uZXcgS3QoImxheW91dC1hY3Rpdml0eWJhci1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlZCJ9KSxLdC5sYXlvdXRQYW5lbExlZnQ9bmV3IEt0KCJsYXlvdXQtcGFuZWwtbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlZSJ9KSxLdC5sYXlvdXRQYW5lbENlbnRlcj1uZXcgS3QoImxheW91dC1wYW5lbC1jZW50ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViZWYifSksS3QubGF5b3V0UGFuZWxKdXN0aWZ5PW5ldyBLdCgibGF5b3V0LXBhbmVsLWp1c3RpZnkiLHtmb250Q2hhcmFjdGVyOiJcXGViZjAifSksS3QubGF5b3V0UGFuZWxSaWdodD1uZXcgS3QoImxheW91dC1wYW5lbC1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmMSJ9KSxLdC5sYXlvdXRQYW5lbD1uZXcgS3QoImxheW91dC1wYW5lbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmMiJ9KSxLdC5sYXlvdXRTaWRlYmFyTGVmdD1uZXcgS3QoImxheW91dC1zaWRlYmFyLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjMifSksS3QubGF5b3V0U2lkZWJhclJpZ2h0PW5ldyBLdCgibGF5b3V0LXNpZGViYXItcmlnaHQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjQifSksS3QubGF5b3V0U3RhdHVzYmFyPW5ldyBLdCgibGF5b3V0LXN0YXR1c2JhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmNSJ9KSxLdC5sYXlvdXRNZW51YmFyPW5ldyBLdCgibGF5b3V0LW1lbnViYXIiLHtmb250Q2hhcmFjdGVyOiJcXGViZjYifSksS3QubGF5b3V0Q2VudGVyZWQ9bmV3IEt0KCJsYXlvdXQtY2VudGVyZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjcifSksS3QubGF5b3V0U2lkZWJhclJpZ2h0T2ZmPW5ldyBLdCgibGF5b3V0LXNpZGViYXItcmlnaHQtb2ZmIix7Zm9udENoYXJhY3RlcjoiXFxlYzAwIn0pLEt0LmxheW91dFBhbmVsT2ZmPW5ldyBLdCgibGF5b3V0LXBhbmVsLW9mZiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWMwMSJ9KSxLdC5sYXlvdXRTaWRlYmFyTGVmdE9mZj1uZXcgS3QoImxheW91dC1zaWRlYmFyLWxlZnQtb2ZmIix7Zm9udENoYXJhY3RlcjoiXFxlYzAyIn0pLEt0LnRhcmdldD1uZXcgS3QoInRhcmdldCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmOCJ9KSxLdC5pbmRlbnQ9bmV3IEt0KCJpbmRlbnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjkifSksS3QucmVjb3JkU21hbGw9bmV3IEt0KCJyZWNvcmQtc21hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViZmEifSksS3QuZXJyb3JTbWFsbD1uZXcgS3QoImVycm9yLXNtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmZiIn0pLEt0LmFycm93Q2lyY2xlRG93bj1uZXcgS3QoImFycm93LWNpcmNsZS1kb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYmZjIn0pLEt0LmFycm93Q2lyY2xlTGVmdD1uZXcgS3QoImFycm93LWNpcmNsZS1sZWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmZkIn0pLEt0LmFycm93Q2lyY2xlUmlnaHQ9bmV3IEt0KCJhcnJvdy1jaXJjbGUtcmlnaHQiLHtmb250Q2hhcmFjdGVyOiJcXGViZmUifSksS3QuYXJyb3dDaXJjbGVVcD1uZXcgS3QoImFycm93LWNpcmNsZS11cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmZiJ9KSxLdC5oZWFydEZpbGxlZD1uZXcgS3QoImhlYXJ0LWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWMwNCJ9KSxLdC5tYXA9bmV3IEt0KCJtYXAiLHtmb250Q2hhcmFjdGVyOiJcXGVjMDUifSksS3QubWFwRmlsbGVkPW5ldyBLdCgibWFwLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWMwNiJ9KSxLdC5jaXJjbGVTbWFsbD1uZXcgS3QoImNpcmNsZS1zbWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWMwNyJ9KSxLdC5iZWxsU2xhc2g9bmV3IEt0KCJiZWxsLXNsYXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYzA4In0pLEt0LmJlbGxTbGFzaERvdD1uZXcgS3QoImJlbGwtc2xhc2gtZG90Iix7Zm9udENoYXJhY3RlcjoiXFxlYzA5In0pLEt0LmNvbW1lbnRVbnJlc29sdmVkPW5ldyBLdCgiY29tbWVudC11bnJlc29sdmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYzBhIn0pLEt0LmdpdFB1bGxSZXF1ZXN0R29Ub0NoYW5nZXM9bmV3IEt0KCJnaXQtcHVsbC1yZXF1ZXN0LWdvLXRvLWNoYW5nZXMiLHtmb250Q2hhcmFjdGVyOiJcXGVjMGIifSksS3QuZ2l0UHVsbFJlcXVlc3ROZXdDaGFuZ2VzPW5ldyBLdCgiZ2l0LXB1bGwtcmVxdWVzdC1uZXctY2hhbmdlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWMwYyJ9KSxLdC5kaWFsb2dFcnJvcj1uZXcgS3QoImRpYWxvZy1lcnJvciIsS3QuZXJyb3IuZGVmaW5pdGlvbiksS3QuZGlhbG9nV2FybmluZz1uZXcgS3QoImRpYWxvZy13YXJuaW5nIixLdC53YXJuaW5nLmRlZmluaXRpb24pLEt0LmRpYWxvZ0luZm89bmV3IEt0KCJkaWFsb2ctaW5mbyIsS3QuaW5mby5kZWZpbml0aW9uKSxLdC5kaWFsb2dDbG9zZT1uZXcgS3QoImRpYWxvZy1jbG9zZSIsS3QuY2xvc2UuZGVmaW5pdGlvbiksS3QudHJlZUl0ZW1FeHBhbmRlZD1uZXcgS3QoInRyZWUtaXRlbS1leHBhbmRlZCIsS3QuY2hldnJvbkRvd24uZGVmaW5pdGlvbiksS3QudHJlZUZpbHRlck9uVHlwZU9uPW5ldyBLdCgidHJlZS1maWx0ZXItb24tdHlwZS1vbiIsS3QubGlzdEZpbHRlci5kZWZpbml0aW9uKSxLdC50cmVlRmlsdGVyT25UeXBlT2ZmPW5ldyBLdCgidHJlZS1maWx0ZXItb24tdHlwZS1vZmYiLEt0Lmxpc3RTZWxlY3Rpb24uZGVmaW5pdGlvbiksS3QudHJlZUZpbHRlckNsZWFyPW5ldyBLdCgidHJlZS1maWx0ZXItY2xlYXIiLEt0LmNsb3NlLmRlZmluaXRpb24pLEt0LnRyZWVJdGVtTG9hZGluZz1uZXcgS3QoInRyZWUtaXRlbS1sb2FkaW5nIixLdC5sb2FkaW5nLmRlZmluaXRpb24pLEt0Lm1lbnVTZWxlY3Rpb249bmV3IEt0KCJtZW51LXNlbGVjdGlvbiIsS3QuY2hlY2suZGVmaW5pdGlvbiksS3QubWVudVN1Ym1lbnU9bmV3IEt0KCJtZW51LXN1Ym1lbnUiLEt0LmNoZXZyb25SaWdodC5kZWZpbml0aW9uKSxLdC5tZW51QmFyTW9yZT1uZXcgS3QoIm1lbnViYXItbW9yZSIsS3QubW9yZS5kZWZpbml0aW9uKSxLdC5zY3JvbGxiYXJCdXR0b25MZWZ0PW5ldyBLdCgic2Nyb2xsYmFyLWJ1dHRvbi1sZWZ0IixLdC50cmlhbmdsZUxlZnQuZGVmaW5pdGlvbiksS3Quc2Nyb2xsYmFyQnV0dG9uUmlnaHQ9bmV3IEt0KCJzY3JvbGxiYXItYnV0dG9uLXJpZ2h0IixLdC50cmlhbmdsZVJpZ2h0LmRlZmluaXRpb24pLEt0LnNjcm9sbGJhckJ1dHRvblVwPW5ldyBLdCgic2Nyb2xsYmFyLWJ1dHRvbi11cCIsS3QudHJpYW5nbGVVcC5kZWZpbml0aW9uKSxLdC5zY3JvbGxiYXJCdXR0b25Eb3duPW5ldyBLdCgic2Nyb2xsYmFyLWJ1dHRvbi1kb3duIixLdC50cmlhbmdsZURvd24uZGVmaW5pdGlvbiksS3QudG9vbEJhck1vcmU9bmV3IEt0KCJ0b29sYmFyLW1vcmUiLEt0Lm1vcmUuZGVmaW5pdGlvbiksS3QucXVpY2tJbnB1dEJhY2s9bmV3IEt0KCJxdWljay1pbnB1dC1iYWNrIixLdC5hcnJvd0xlZnQuZGVmaW5pdGlvbiksZnVuY3Rpb24oZSl7ZS5pY29uTmFtZVNlZ21lbnQ9IltBLVphLXowLTldKyIsZS5pY29uTmFtZUV4cHJlc3Npb249IltBLVphLXowLTktXSsiLGUuaWNvbk1vZGlmaWVyRXhwcmVzc2lvbj0ifltBLVphLXpdKyIsZS5pY29uTmFtZUNoYXJhY3Rlcj0iW0EtWmEtejAtOX4tXSI7Y29uc3QgdD1uZXcgUmVnRXhwKGBeKCR7ZS5pY29uTmFtZUV4cHJlc3Npb259KSgke2UuaWNvbk1vZGlmaWVyRXhwcmVzc2lvbn0pPyRgKTtmdW5jdGlvbiBuKGUpe2lmKGUgaW5zdGFuY2VvZiBLdClyZXR1cm5bImNvZGljb24iLCJjb2RpY29uLSIrZS5pZF07Y29uc3Qgcj10LmV4ZWMoZS5pZCk7aWYoIXIpcmV0dXJuIG4oS3QuZXJyb3IpO2NvbnN0WyxpLG9dPXIscz1bImNvZGljb24iLCJjb2RpY29uLSIraV07cmV0dXJuIG8mJnMucHVzaCgiY29kaWNvbi1tb2RpZmllci0iK28uc3Vic3RyKDEpKSxzfWUuYXNDbGFzc05hbWVBcnJheT1uLGUuYXNDbGFzc05hbWU9ZnVuY3Rpb24oZSl7cmV0dXJuIG4oZSkuam9pbigiICIpfSxlLmFzQ1NTU2VsZWN0b3I9ZnVuY3Rpb24oZSl7cmV0dXJuIi4iK24oZSkuam9pbigiLiIpfX0oVnR8fChWdD17fSkpO3ZhciBCdCxqdCxxdCwkdCxIdCxHdCxKdCxYdCxZdCxadCxRdCxlbix0bixubixybixvbixzbixhbixsbixjbixobixkbixwbix1bixtbixmbixnbixibix5bix2bix3bix4bixTbixDbixrbixfbixFbixGbixSbixEbixObixUbixBbix6bixJbixNbixQbixPbixMbj1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24oaSxvKXtmdW5jdGlvbiBzKGUpe3RyeXtsKHIubmV4dChlKSl9Y2F0Y2goZSl7byhlKX19ZnVuY3Rpb24gYShlKXt0cnl7bChyLnRocm93KGUpKX1jYXRjaChlKXtvKGUpfX1mdW5jdGlvbiBsKGUpe3ZhciB0O2UuZG9uZT9pKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIG4/dDpuZXcgbigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihzLGEpfWwoKHI9ci5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX07Y2xhc3MgV24gZXh0ZW5kcyBwe2NvbnN0cnVjdG9yKGUsdCxuKXtzdXBlcigpLHRoaXMuX3JlZ2lzdHJ5PWUsdGhpcy5fbGFuZ3VhZ2VJZD10LHRoaXMuX2ZhY3Rvcnk9bix0aGlzLl9pc0Rpc3Bvc2VkPSExLHRoaXMuX3Jlc29sdmVQcm9taXNlPW51bGwsdGhpcy5faXNSZXNvbHZlZD0hMX1nZXQgaXNSZXNvbHZlZCgpe3JldHVybiB0aGlzLl9pc1Jlc29sdmVkfWRpc3Bvc2UoKXt0aGlzLl9pc0Rpc3Bvc2VkPSEwLHN1cGVyLmRpc3Bvc2UoKX1yZXNvbHZlKCl7cmV0dXJuIExuKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7cmV0dXJuIHRoaXMuX3Jlc29sdmVQcm9taXNlfHwodGhpcy5fcmVzb2x2ZVByb21pc2U9dGhpcy5fY3JlYXRlKCkpLHRoaXMuX3Jlc29sdmVQcm9taXNlfSkpfV9jcmVhdGUoKXtyZXR1cm4gTG4odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCBlPXlpZWxkIFByb21pc2UucmVzb2x2ZSh0aGlzLl9mYWN0b3J5LmNyZWF0ZVRva2VuaXphdGlvblN1cHBvcnQoKSk7dGhpcy5faXNSZXNvbHZlZD0hMCxlJiYhdGhpcy5faXNEaXNwb3NlZCYmdGhpcy5fcmVnaXN0ZXIodGhpcy5fcmVnaXN0cnkucmVnaXN0ZXIodGhpcy5fbGFuZ3VhZ2VJZCxlKSl9KSl9fWNsYXNzIFZue2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLl90b2tlbkJyYW5kPXZvaWQgMCx0aGlzLm9mZnNldD1lLHRoaXMudHlwZT10LHRoaXMubGFuZ3VhZ2U9bn10b1N0cmluZygpe3JldHVybiIoIit0aGlzLm9mZnNldCsiLCAiK3RoaXMudHlwZSsiKSJ9fSFmdW5jdGlvbihlKXtjb25zdCB0PW5ldyBNYXA7dC5zZXQoMCxLdC5zeW1ib2xNZXRob2QpLHQuc2V0KDEsS3Quc3ltYm9sRnVuY3Rpb24pLHQuc2V0KDIsS3Quc3ltYm9sQ29uc3RydWN0b3IpLHQuc2V0KDMsS3Quc3ltYm9sRmllbGQpLHQuc2V0KDQsS3Quc3ltYm9sVmFyaWFibGUpLHQuc2V0KDUsS3Quc3ltYm9sQ2xhc3MpLHQuc2V0KDYsS3Quc3ltYm9sU3RydWN0KSx0LnNldCg3LEt0LnN5bWJvbEludGVyZmFjZSksdC5zZXQoOCxLdC5zeW1ib2xNb2R1bGUpLHQuc2V0KDksS3Quc3ltYm9sUHJvcGVydHkpLHQuc2V0KDEwLEt0LnN5bWJvbEV2ZW50KSx0LnNldCgxMSxLdC5zeW1ib2xPcGVyYXRvciksdC5zZXQoMTIsS3Quc3ltYm9sVW5pdCksdC5zZXQoMTMsS3Quc3ltYm9sVmFsdWUpLHQuc2V0KDE1LEt0LnN5bWJvbEVudW0pLHQuc2V0KDE0LEt0LnN5bWJvbENvbnN0YW50KSx0LnNldCgxNSxLdC5zeW1ib2xFbnVtKSx0LnNldCgxNixLdC5zeW1ib2xFbnVtTWVtYmVyKSx0LnNldCgxNyxLdC5zeW1ib2xLZXl3b3JkKSx0LnNldCgyNyxLdC5zeW1ib2xTbmlwcGV0KSx0LnNldCgxOCxLdC5zeW1ib2xUZXh0KSx0LnNldCgxOSxLdC5zeW1ib2xDb2xvciksdC5zZXQoMjAsS3Quc3ltYm9sRmlsZSksdC5zZXQoMjEsS3Quc3ltYm9sUmVmZXJlbmNlKSx0LnNldCgyMixLdC5zeW1ib2xDdXN0b21Db2xvciksdC5zZXQoMjMsS3Quc3ltYm9sRm9sZGVyKSx0LnNldCgyNCxLdC5zeW1ib2xUeXBlUGFyYW1ldGVyKSx0LnNldCgyNSxLdC5hY2NvdW50KSx0LnNldCgyNixLdC5pc3N1ZXMpLGUudG9JY29uPWZ1bmN0aW9uKGUpe2xldCBuPXQuZ2V0KGUpO3JldHVybiBufHwoY29uc29sZS5pbmZvKCJObyBjb2RpY29uIGZvdW5kIGZvciBDb21wbGV0aW9uSXRlbUtpbmQgIitlKSxuPUt0LnN5bWJvbFByb3BlcnR5KSxufTtjb25zdCBuPW5ldyBNYXA7bi5zZXQoIm1ldGhvZCIsMCksbi5zZXQoImZ1bmN0aW9uIiwxKSxuLnNldCgiY29uc3RydWN0b3IiLDIpLG4uc2V0KCJmaWVsZCIsMyksbi5zZXQoInZhcmlhYmxlIiw0KSxuLnNldCgiY2xhc3MiLDUpLG4uc2V0KCJzdHJ1Y3QiLDYpLG4uc2V0KCJpbnRlcmZhY2UiLDcpLG4uc2V0KCJtb2R1bGUiLDgpLG4uc2V0KCJwcm9wZXJ0eSIsOSksbi5zZXQoImV2ZW50IiwxMCksbi5zZXQoIm9wZXJhdG9yIiwxMSksbi5zZXQoInVuaXQiLDEyKSxuLnNldCgidmFsdWUiLDEzKSxuLnNldCgiY29uc3RhbnQiLDE0KSxuLnNldCgiZW51bSIsMTUpLG4uc2V0KCJlbnVtLW1lbWJlciIsMTYpLG4uc2V0KCJlbnVtTWVtYmVyIiwxNiksbi5zZXQoImtleXdvcmQiLDE3KSxuLnNldCgic25pcHBldCIsMjcpLG4uc2V0KCJ0ZXh0IiwxOCksbi5zZXQoImNvbG9yIiwxOSksbi5zZXQoImZpbGUiLDIwKSxuLnNldCgicmVmZXJlbmNlIiwyMSksbi5zZXQoImN1c3RvbWNvbG9yIiwyMiksbi5zZXQoImZvbGRlciIsMjMpLG4uc2V0KCJ0eXBlLXBhcmFtZXRlciIsMjQpLG4uc2V0KCJ0eXBlUGFyYW1ldGVyIiwyNCksbi5zZXQoImFjY291bnQiLDI1KSxuLnNldCgiaXNzdWUiLDI2KSxlLmZyb21TdHJpbmc9ZnVuY3Rpb24oZSx0KXtsZXQgcj1uLmdldChlKTtyZXR1cm4gdm9pZCAwIT09cnx8dHx8KHI9OSkscn19KEJ0fHwoQnQ9e30pKSxmdW5jdGlvbihlKXtlW2UuQXV0b21hdGljPTBdPSJBdXRvbWF0aWMiLGVbZS5FeHBsaWNpdD0xXT0iRXhwbGljaXQifShqdHx8KGp0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0xXT0iSW52b2tlIixlW2UuVHJpZ2dlckNoYXJhY3Rlcj0yXT0iVHJpZ2dlckNoYXJhY3RlciIsZVtlLkNvbnRlbnRDaGFuZ2U9M109IkNvbnRlbnRDaGFuZ2UifShxdHx8KHF0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLlRleHQ9MF09IlRleHQiLGVbZS5SZWFkPTFdPSJSZWFkIixlW2UuV3JpdGU9Ml09IldyaXRlIn0oJHR8fCgkdD17fSkpLGZ1bmN0aW9uKGUpe2NvbnN0IHQ9bmV3IE1hcDt0LnNldCgwLEt0LnN5bWJvbEZpbGUpLHQuc2V0KDEsS3Quc3ltYm9sTW9kdWxlKSx0LnNldCgyLEt0LnN5bWJvbE5hbWVzcGFjZSksdC5zZXQoMyxLdC5zeW1ib2xQYWNrYWdlKSx0LnNldCg0LEt0LnN5bWJvbENsYXNzKSx0LnNldCg1LEt0LnN5bWJvbE1ldGhvZCksdC5zZXQoNixLdC5zeW1ib2xQcm9wZXJ0eSksdC5zZXQoNyxLdC5zeW1ib2xGaWVsZCksdC5zZXQoOCxLdC5zeW1ib2xDb25zdHJ1Y3RvciksdC5zZXQoOSxLdC5zeW1ib2xFbnVtKSx0LnNldCgxMCxLdC5zeW1ib2xJbnRlcmZhY2UpLHQuc2V0KDExLEt0LnN5bWJvbEZ1bmN0aW9uKSx0LnNldCgxMixLdC5zeW1ib2xWYXJpYWJsZSksdC5zZXQoMTMsS3Quc3ltYm9sQ29uc3RhbnQpLHQuc2V0KDE0LEt0LnN5bWJvbFN0cmluZyksdC5zZXQoMTUsS3Quc3ltYm9sTnVtYmVyKSx0LnNldCgxNixLdC5zeW1ib2xCb29sZWFuKSx0LnNldCgxNyxLdC5zeW1ib2xBcnJheSksdC5zZXQoMTgsS3Quc3ltYm9sT2JqZWN0KSx0LnNldCgxOSxLdC5zeW1ib2xLZXkpLHQuc2V0KDIwLEt0LnN5bWJvbE51bGwpLHQuc2V0KDIxLEt0LnN5bWJvbEVudW1NZW1iZXIpLHQuc2V0KDIyLEt0LnN5bWJvbFN0cnVjdCksdC5zZXQoMjMsS3Quc3ltYm9sRXZlbnQpLHQuc2V0KDI0LEt0LnN5bWJvbE9wZXJhdG9yKSx0LnNldCgyNSxLdC5zeW1ib2xUeXBlUGFyYW1ldGVyKSxlLnRvSWNvbj1mdW5jdGlvbihlKXtsZXQgbj10LmdldChlKTtyZXR1cm4gbnx8KGNvbnNvbGUuaW5mbygiTm8gY29kaWNvbiBmb3VuZCBmb3IgU3ltYm9sS2luZCAiK2UpLG49S3Quc3ltYm9sUHJvcGVydHkpLG59fShIdHx8KEh0PXt9KSksZnVuY3Rpb24oZSl7ZS5pcz1mdW5jdGlvbihlKXtyZXR1cm4hKCFlfHwib2JqZWN0IiE9dHlwZW9mIGUpJiYoInN0cmluZyI9PXR5cGVvZiBlLmlkJiYic3RyaW5nIj09dHlwZW9mIGUudGl0bGUpfX0oR3R8fChHdD17fSkpLGZ1bmN0aW9uKGUpe2VbZS5UeXBlPTFdPSJUeXBlIixlW2UuUGFyYW1ldGVyPTJdPSJQYXJhbWV0ZXIifShKdHx8KEp0PXt9KSksbmV3IGNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fbWFwPW5ldyBNYXAsdGhpcy5fZmFjdG9yaWVzPW5ldyBNYXAsdGhpcy5fb25EaWRDaGFuZ2U9bmV3IEssdGhpcy5vbkRpZENoYW5nZT10aGlzLl9vbkRpZENoYW5nZS5ldmVudCx0aGlzLl9jb2xvck1hcD1udWxsfWZpcmUoZSl7dGhpcy5fb25EaWRDaGFuZ2UuZmlyZSh7Y2hhbmdlZExhbmd1YWdlczplLGNoYW5nZWRDb2xvck1hcDohMX0pfXJlZ2lzdGVyKGUsdCl7cmV0dXJuIHRoaXMuX21hcC5zZXQoZSx0KSx0aGlzLmZpcmUoW2VdKSxoKCgoKT0+e3RoaXMuX21hcC5nZXQoZSk9PT10JiYodGhpcy5fbWFwLmRlbGV0ZShlKSx0aGlzLmZpcmUoW2VdKSl9KSl9cmVnaXN0ZXJGYWN0b3J5KGUsdCl7dmFyIG47bnVsbD09PShuPXRoaXMuX2ZhY3Rvcmllcy5nZXQoZSkpfHx2b2lkIDA9PT1ufHxuLmRpc3Bvc2UoKTtjb25zdCByPW5ldyBXbih0aGlzLGUsdCk7cmV0dXJuIHRoaXMuX2ZhY3Rvcmllcy5zZXQoZSxyKSxoKCgoKT0+e2NvbnN0IHQ9dGhpcy5fZmFjdG9yaWVzLmdldChlKTt0JiZ0PT09ciYmKHRoaXMuX2ZhY3Rvcmllcy5kZWxldGUoZSksdC5kaXNwb3NlKCkpfSkpfWdldE9yQ3JlYXRlKGUpe3JldHVybiBMbih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IHQ9dGhpcy5nZXQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBuPXRoaXMuX2ZhY3Rvcmllcy5nZXQoZSk7cmV0dXJuIW58fG4uaXNSZXNvbHZlZD9udWxsOih5aWVsZCBuLnJlc29sdmUoKSx0aGlzLmdldChlKSl9KSl9Z2V0KGUpe3JldHVybiB0aGlzLl9tYXAuZ2V0KGUpfHxudWxsfWlzUmVzb2x2ZWQoZSl7aWYodGhpcy5nZXQoZSkpcmV0dXJuITA7Y29uc3QgdD10aGlzLl9mYWN0b3JpZXMuZ2V0KGUpO3JldHVybiEodCYmIXQuaXNSZXNvbHZlZCl9c2V0Q29sb3JNYXAoZSl7dGhpcy5fY29sb3JNYXA9ZSx0aGlzLl9vbkRpZENoYW5nZS5maXJlKHtjaGFuZ2VkTGFuZ3VhZ2VzOkFycmF5LmZyb20odGhpcy5fbWFwLmtleXMoKSksY2hhbmdlZENvbG9yTWFwOiEwfSl9Z2V0Q29sb3JNYXAoKXtyZXR1cm4gdGhpcy5fY29sb3JNYXB9Z2V0RGVmYXVsdEJhY2tncm91bmQoKXtyZXR1cm4gdGhpcy5fY29sb3JNYXAmJnRoaXMuX2NvbG9yTWFwLmxlbmd0aD4yP3RoaXMuX2NvbG9yTWFwWzJdOm51bGx9fSxmdW5jdGlvbihlKXtlW2UuVW5rbm93bj0wXT0iVW5rbm93biIsZVtlLkRpc2FibGVkPTFdPSJEaXNhYmxlZCIsZVtlLkVuYWJsZWQ9Ml09IkVuYWJsZWQifShYdHx8KFh0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0xXT0iSW52b2tlIixlW2UuQXV0bz0yXT0iQXV0byJ9KFl0fHwoWXQ9e30pKSxmdW5jdGlvbihlKXtlW2UuS2VlcFdoaXRlc3BhY2U9MV09IktlZXBXaGl0ZXNwYWNlIixlW2UuSW5zZXJ0QXNTbmlwcGV0PTRdPSJJbnNlcnRBc1NuaXBwZXQifShadHx8KFp0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLk1ldGhvZD0wXT0iTWV0aG9kIixlW2UuRnVuY3Rpb249MV09IkZ1bmN0aW9uIixlW2UuQ29uc3RydWN0b3I9Ml09IkNvbnN0cnVjdG9yIixlW2UuRmllbGQ9M109IkZpZWxkIixlW2UuVmFyaWFibGU9NF09IlZhcmlhYmxlIixlW2UuQ2xhc3M9NV09IkNsYXNzIixlW2UuU3RydWN0PTZdPSJTdHJ1Y3QiLGVbZS5JbnRlcmZhY2U9N109IkludGVyZmFjZSIsZVtlLk1vZHVsZT04XT0iTW9kdWxlIixlW2UuUHJvcGVydHk9OV09IlByb3BlcnR5IixlW2UuRXZlbnQ9MTBdPSJFdmVudCIsZVtlLk9wZXJhdG9yPTExXT0iT3BlcmF0b3IiLGVbZS5Vbml0PTEyXT0iVW5pdCIsZVtlLlZhbHVlPTEzXT0iVmFsdWUiLGVbZS5Db25zdGFudD0xNF09IkNvbnN0YW50IixlW2UuRW51bT0xNV09IkVudW0iLGVbZS5FbnVtTWVtYmVyPTE2XT0iRW51bU1lbWJlciIsZVtlLktleXdvcmQ9MTddPSJLZXl3b3JkIixlW2UuVGV4dD0xOF09IlRleHQiLGVbZS5Db2xvcj0xOV09IkNvbG9yIixlW2UuRmlsZT0yMF09IkZpbGUiLGVbZS5SZWZlcmVuY2U9MjFdPSJSZWZlcmVuY2UiLGVbZS5DdXN0b21jb2xvcj0yMl09IkN1c3RvbWNvbG9yIixlW2UuRm9sZGVyPTIzXT0iRm9sZGVyIixlW2UuVHlwZVBhcmFtZXRlcj0yNF09IlR5cGVQYXJhbWV0ZXIiLGVbZS5Vc2VyPTI1XT0iVXNlciIsZVtlLklzc3VlPTI2XT0iSXNzdWUiLGVbZS5TbmlwcGV0PTI3XT0iU25pcHBldCJ9KFF0fHwoUXQ9e30pKSxmdW5jdGlvbihlKXtlW2UuRGVwcmVjYXRlZD0xXT0iRGVwcmVjYXRlZCJ9KGVufHwoZW49e30pKSxmdW5jdGlvbihlKXtlW2UuSW52b2tlPTBdPSJJbnZva2UiLGVbZS5UcmlnZ2VyQ2hhcmFjdGVyPTFdPSJUcmlnZ2VyQ2hhcmFjdGVyIixlW2UuVHJpZ2dlckZvckluY29tcGxldGVDb21wbGV0aW9ucz0yXT0iVHJpZ2dlckZvckluY29tcGxldGVDb21wbGV0aW9ucyJ9KHRufHwodG49e30pKSxmdW5jdGlvbihlKXtlW2UuRVhBQ1Q9MF09IkVYQUNUIixlW2UuQUJPVkU9MV09IkFCT1ZFIixlW2UuQkVMT1c9Ml09IkJFTE9XIn0obm58fChubj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Ob3RTZXQ9MF09Ik5vdFNldCIsZVtlLkNvbnRlbnRGbHVzaD0xXT0iQ29udGVudEZsdXNoIixlW2UuUmVjb3ZlckZyb21NYXJrZXJzPTJdPSJSZWNvdmVyRnJvbU1hcmtlcnMiLGVbZS5FeHBsaWNpdD0zXT0iRXhwbGljaXQiLGVbZS5QYXN0ZT00XT0iUGFzdGUiLGVbZS5VbmRvPTVdPSJVbmRvIixlW2UuUmVkbz02XT0iUmVkbyJ9KHJufHwocm49e30pKSxmdW5jdGlvbihlKXtlW2UuTEY9MV09IkxGIixlW2UuQ1JMRj0yXT0iQ1JMRiJ9KG9ufHwob249e30pKSxmdW5jdGlvbihlKXtlW2UuVGV4dD0wXT0iVGV4dCIsZVtlLlJlYWQ9MV09IlJlYWQiLGVbZS5Xcml0ZT0yXT0iV3JpdGUifShzbnx8KHNuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLk5vbmU9MF09Ik5vbmUiLGVbZS5LZWVwPTFdPSJLZWVwIixlW2UuQnJhY2tldHM9Ml09IkJyYWNrZXRzIixlW2UuQWR2YW5jZWQ9M109IkFkdmFuY2VkIixlW2UuRnVsbD00XT0iRnVsbCJ9KGFufHwoYW49e30pKSxmdW5jdGlvbihlKXtlW2UuYWNjZXB0U3VnZ2VzdGlvbk9uQ29tbWl0Q2hhcmFjdGVyPTBdPSJhY2NlcHRTdWdnZXN0aW9uT25Db21taXRDaGFyYWN0ZXIiLGVbZS5hY2NlcHRTdWdnZXN0aW9uT25FbnRlcj0xXT0iYWNjZXB0U3VnZ2VzdGlvbk9uRW50ZXIiLGVbZS5hY2Nlc3NpYmlsaXR5U3VwcG9ydD0yXT0iYWNjZXNzaWJpbGl0eVN1cHBvcnQiLGVbZS5hY2Nlc3NpYmlsaXR5UGFnZVNpemU9M109ImFjY2Vzc2liaWxpdHlQYWdlU2l6ZSIsZVtlLmFyaWFMYWJlbD00XT0iYXJpYUxhYmVsIixlW2UuYXV0b0Nsb3NpbmdCcmFja2V0cz01XT0iYXV0b0Nsb3NpbmdCcmFja2V0cyIsZVtlLmF1dG9DbG9zaW5nRGVsZXRlPTZdPSJhdXRvQ2xvc2luZ0RlbGV0ZSIsZVtlLmF1dG9DbG9zaW5nT3ZlcnR5cGU9N109ImF1dG9DbG9zaW5nT3ZlcnR5cGUiLGVbZS5hdXRvQ2xvc2luZ1F1b3Rlcz04XT0iYXV0b0Nsb3NpbmdRdW90ZXMiLGVbZS5hdXRvSW5kZW50PTldPSJhdXRvSW5kZW50IixlW2UuYXV0b21hdGljTGF5b3V0PTEwXT0iYXV0b21hdGljTGF5b3V0IixlW2UuYXV0b1N1cnJvdW5kPTExXT0iYXV0b1N1cnJvdW5kIixlW2UuYnJhY2tldFBhaXJDb2xvcml6YXRpb249MTJdPSJicmFja2V0UGFpckNvbG9yaXphdGlvbiIsZVtlLmd1aWRlcz0xM109Imd1aWRlcyIsZVtlLmNvZGVMZW5zPTE0XT0iY29kZUxlbnMiLGVbZS5jb2RlTGVuc0ZvbnRGYW1pbHk9MTVdPSJjb2RlTGVuc0ZvbnRGYW1pbHkiLGVbZS5jb2RlTGVuc0ZvbnRTaXplPTE2XT0iY29kZUxlbnNGb250U2l6ZSIsZVtlLmNvbG9yRGVjb3JhdG9ycz0xN109ImNvbG9yRGVjb3JhdG9ycyIsZVtlLmNvbHVtblNlbGVjdGlvbj0xOF09ImNvbHVtblNlbGVjdGlvbiIsZVtlLmNvbW1lbnRzPTE5XT0iY29tbWVudHMiLGVbZS5jb250ZXh0bWVudT0yMF09ImNvbnRleHRtZW51IixlW2UuY29weVdpdGhTeW50YXhIaWdobGlnaHRpbmc9MjFdPSJjb3B5V2l0aFN5bnRheEhpZ2hsaWdodGluZyIsZVtlLmN1cnNvckJsaW5raW5nPTIyXT0iY3Vyc29yQmxpbmtpbmciLGVbZS5jdXJzb3JTbW9vdGhDYXJldEFuaW1hdGlvbj0yM109ImN1cnNvclNtb290aENhcmV0QW5pbWF0aW9uIixlW2UuY3Vyc29yU3R5bGU9MjRdPSJjdXJzb3JTdHlsZSIsZVtlLmN1cnNvclN1cnJvdW5kaW5nTGluZXM9MjVdPSJjdXJzb3JTdXJyb3VuZGluZ0xpbmVzIixlW2UuY3Vyc29yU3Vycm91bmRpbmdMaW5lc1N0eWxlPTI2XT0iY3Vyc29yU3Vycm91bmRpbmdMaW5lc1N0eWxlIixlW2UuY3Vyc29yV2lkdGg9MjddPSJjdXJzb3JXaWR0aCIsZVtlLmRpc2FibGVMYXllckhpbnRpbmc9MjhdPSJkaXNhYmxlTGF5ZXJIaW50aW5nIixlW2UuZGlzYWJsZU1vbm9zcGFjZU9wdGltaXphdGlvbnM9MjldPSJkaXNhYmxlTW9ub3NwYWNlT3B0aW1pemF0aW9ucyIsZVtlLmRvbVJlYWRPbmx5PTMwXT0iZG9tUmVhZE9ubHkiLGVbZS5kcmFnQW5kRHJvcD0zMV09ImRyYWdBbmREcm9wIixlW2UuZHJvcEludG9FZGl0b3I9MzJdPSJkcm9wSW50b0VkaXRvciIsZVtlLmVtcHR5U2VsZWN0aW9uQ2xpcGJvYXJkPTMzXT0iZW1wdHlTZWxlY3Rpb25DbGlwYm9hcmQiLGVbZS5leHBlcmltZW50YWw9MzRdPSJleHBlcmltZW50YWwiLGVbZS5leHRyYUVkaXRvckNsYXNzTmFtZT0zNV09ImV4dHJhRWRpdG9yQ2xhc3NOYW1lIixlW2UuZmFzdFNjcm9sbFNlbnNpdGl2aXR5PTM2XT0iZmFzdFNjcm9sbFNlbnNpdGl2aXR5IixlW2UuZmluZD0zN109ImZpbmQiLGVbZS5maXhlZE92ZXJmbG93V2lkZ2V0cz0zOF09ImZpeGVkT3ZlcmZsb3dXaWRnZXRzIixlW2UuZm9sZGluZz0zOV09ImZvbGRpbmciLGVbZS5mb2xkaW5nU3RyYXRlZ3k9NDBdPSJmb2xkaW5nU3RyYXRlZ3kiLGVbZS5mb2xkaW5nSGlnaGxpZ2h0PTQxXT0iZm9sZGluZ0hpZ2hsaWdodCIsZVtlLmZvbGRpbmdJbXBvcnRzQnlEZWZhdWx0PTQyXT0iZm9sZGluZ0ltcG9ydHNCeURlZmF1bHQiLGVbZS5mb2xkaW5nTWF4aW11bVJlZ2lvbnM9NDNdPSJmb2xkaW5nTWF4aW11bVJlZ2lvbnMiLGVbZS51bmZvbGRPbkNsaWNrQWZ0ZXJFbmRPZkxpbmU9NDRdPSJ1bmZvbGRPbkNsaWNrQWZ0ZXJFbmRPZkxpbmUiLGVbZS5mb250RmFtaWx5PTQ1XT0iZm9udEZhbWlseSIsZVtlLmZvbnRJbmZvPTQ2XT0iZm9udEluZm8iLGVbZS5mb250TGlnYXR1cmVzPTQ3XT0iZm9udExpZ2F0dXJlcyIsZVtlLmZvbnRTaXplPTQ4XT0iZm9udFNpemUiLGVbZS5mb250V2VpZ2h0PTQ5XT0iZm9udFdlaWdodCIsZVtlLmZvcm1hdE9uUGFzdGU9NTBdPSJmb3JtYXRPblBhc3RlIixlW2UuZm9ybWF0T25UeXBlPTUxXT0iZm9ybWF0T25UeXBlIixlW2UuZ2x5cGhNYXJnaW49NTJdPSJnbHlwaE1hcmdpbiIsZVtlLmdvdG9Mb2NhdGlvbj01M109ImdvdG9Mb2NhdGlvbiIsZVtlLmhpZGVDdXJzb3JJbk92ZXJ2aWV3UnVsZXI9NTRdPSJoaWRlQ3Vyc29ySW5PdmVydmlld1J1bGVyIixlW2UuaG92ZXI9NTVdPSJob3ZlciIsZVtlLmluRGlmZkVkaXRvcj01Nl09ImluRGlmZkVkaXRvciIsZVtlLmlubGluZVN1Z2dlc3Q9NTddPSJpbmxpbmVTdWdnZXN0IixlW2UubGV0dGVyU3BhY2luZz01OF09ImxldHRlclNwYWNpbmciLGVbZS5saWdodGJ1bGI9NTldPSJsaWdodGJ1bGIiLGVbZS5saW5lRGVjb3JhdGlvbnNXaWR0aD02MF09ImxpbmVEZWNvcmF0aW9uc1dpZHRoIixlW2UubGluZUhlaWdodD02MV09ImxpbmVIZWlnaHQiLGVbZS5saW5lTnVtYmVycz02Ml09ImxpbmVOdW1iZXJzIixlW2UubGluZU51bWJlcnNNaW5DaGFycz02M109ImxpbmVOdW1iZXJzTWluQ2hhcnMiLGVbZS5saW5rZWRFZGl0aW5nPTY0XT0ibGlua2VkRWRpdGluZyIsZVtlLmxpbmtzPTY1XT0ibGlua3MiLGVbZS5tYXRjaEJyYWNrZXRzPTY2XT0ibWF0Y2hCcmFja2V0cyIsZVtlLm1pbmltYXA9NjddPSJtaW5pbWFwIixlW2UubW91c2VTdHlsZT02OF09Im1vdXNlU3R5bGUiLGVbZS5tb3VzZVdoZWVsU2Nyb2xsU2Vuc2l0aXZpdHk9NjldPSJtb3VzZVdoZWVsU2Nyb2xsU2Vuc2l0aXZpdHkiLGVbZS5tb3VzZVdoZWVsWm9vbT03MF09Im1vdXNlV2hlZWxab29tIixlW2UubXVsdGlDdXJzb3JNZXJnZU92ZXJsYXBwaW5nPTcxXT0ibXVsdGlDdXJzb3JNZXJnZU92ZXJsYXBwaW5nIixlW2UubXVsdGlDdXJzb3JNb2RpZmllcj03Ml09Im11bHRpQ3Vyc29yTW9kaWZpZXIiLGVbZS5tdWx0aUN1cnNvclBhc3RlPTczXT0ibXVsdGlDdXJzb3JQYXN0ZSIsZVtlLm9jY3VycmVuY2VzSGlnaGxpZ2h0PTc0XT0ib2NjdXJyZW5jZXNIaWdobGlnaHQiLGVbZS5vdmVydmlld1J1bGVyQm9yZGVyPTc1XT0ib3ZlcnZpZXdSdWxlckJvcmRlciIsZVtlLm92ZXJ2aWV3UnVsZXJMYW5lcz03Nl09Im92ZXJ2aWV3UnVsZXJMYW5lcyIsZVtlLnBhZGRpbmc9NzddPSJwYWRkaW5nIixlW2UucGFyYW1ldGVySGludHM9NzhdPSJwYXJhbWV0ZXJIaW50cyIsZVtlLnBlZWtXaWRnZXREZWZhdWx0Rm9jdXM9NzldPSJwZWVrV2lkZ2V0RGVmYXVsdEZvY3VzIixlW2UuZGVmaW5pdGlvbkxpbmtPcGVuc0luUGVlaz04MF09ImRlZmluaXRpb25MaW5rT3BlbnNJblBlZWsiLGVbZS5xdWlja1N1Z2dlc3Rpb25zPTgxXT0icXVpY2tTdWdnZXN0aW9ucyIsZVtlLnF1aWNrU3VnZ2VzdGlvbnNEZWxheT04Ml09InF1aWNrU3VnZ2VzdGlvbnNEZWxheSIsZVtlLnJlYWRPbmx5PTgzXT0icmVhZE9ubHkiLGVbZS5yZW5hbWVPblR5cGU9ODRdPSJyZW5hbWVPblR5cGUiLGVbZS5yZW5kZXJDb250cm9sQ2hhcmFjdGVycz04NV09InJlbmRlckNvbnRyb2xDaGFyYWN0ZXJzIixlW2UucmVuZGVyRmluYWxOZXdsaW5lPTg2XT0icmVuZGVyRmluYWxOZXdsaW5lIixlW2UucmVuZGVyTGluZUhpZ2hsaWdodD04N109InJlbmRlckxpbmVIaWdobGlnaHQiLGVbZS5yZW5kZXJMaW5lSGlnaGxpZ2h0T25seVdoZW5Gb2N1cz04OF09InJlbmRlckxpbmVIaWdobGlnaHRPbmx5V2hlbkZvY3VzIixlW2UucmVuZGVyVmFsaWRhdGlvbkRlY29yYXRpb25zPTg5XT0icmVuZGVyVmFsaWRhdGlvbkRlY29yYXRpb25zIixlW2UucmVuZGVyV2hpdGVzcGFjZT05MF09InJlbmRlcldoaXRlc3BhY2UiLGVbZS5yZXZlYWxIb3Jpem9udGFsUmlnaHRQYWRkaW5nPTkxXT0icmV2ZWFsSG9yaXpvbnRhbFJpZ2h0UGFkZGluZyIsZVtlLnJvdW5kZWRTZWxlY3Rpb249OTJdPSJyb3VuZGVkU2VsZWN0aW9uIixlW2UucnVsZXJzPTkzXT0icnVsZXJzIixlW2Uuc2Nyb2xsYmFyPTk0XT0ic2Nyb2xsYmFyIixlW2Uuc2Nyb2xsQmV5b25kTGFzdENvbHVtbj05NV09InNjcm9sbEJleW9uZExhc3RDb2x1bW4iLGVbZS5zY3JvbGxCZXlvbmRMYXN0TGluZT05Nl09InNjcm9sbEJleW9uZExhc3RMaW5lIixlW2Uuc2Nyb2xsUHJlZG9taW5hbnRBeGlzPTk3XT0ic2Nyb2xsUHJlZG9taW5hbnRBeGlzIixlW2Uuc2VsZWN0aW9uQ2xpcGJvYXJkPTk4XT0ic2VsZWN0aW9uQ2xpcGJvYXJkIixlW2Uuc2VsZWN0aW9uSGlnaGxpZ2h0PTk5XT0ic2VsZWN0aW9uSGlnaGxpZ2h0IixlW2Uuc2VsZWN0T25MaW5lTnVtYmVycz0xMDBdPSJzZWxlY3RPbkxpbmVOdW1iZXJzIixlW2Uuc2hvd0ZvbGRpbmdDb250cm9scz0xMDFdPSJzaG93Rm9sZGluZ0NvbnRyb2xzIixlW2Uuc2hvd1VudXNlZD0xMDJdPSJzaG93VW51c2VkIixlW2Uuc25pcHBldFN1Z2dlc3Rpb25zPTEwM109InNuaXBwZXRTdWdnZXN0aW9ucyIsZVtlLnNtYXJ0U2VsZWN0PTEwNF09InNtYXJ0U2VsZWN0IixlW2Uuc21vb3RoU2Nyb2xsaW5nPTEwNV09InNtb290aFNjcm9sbGluZyIsZVtlLnN0aWNreVRhYlN0b3BzPTEwNl09InN0aWNreVRhYlN0b3BzIixlW2Uuc3RvcFJlbmRlcmluZ0xpbmVBZnRlcj0xMDddPSJzdG9wUmVuZGVyaW5nTGluZUFmdGVyIixlW2Uuc3VnZ2VzdD0xMDhdPSJzdWdnZXN0IixlW2Uuc3VnZ2VzdEZvbnRTaXplPTEwOV09InN1Z2dlc3RGb250U2l6ZSIsZVtlLnN1Z2dlc3RMaW5lSGVpZ2h0PTExMF09InN1Z2dlc3RMaW5lSGVpZ2h0IixlW2Uuc3VnZ2VzdE9uVHJpZ2dlckNoYXJhY3RlcnM9MTExXT0ic3VnZ2VzdE9uVHJpZ2dlckNoYXJhY3RlcnMiLGVbZS5zdWdnZXN0U2VsZWN0aW9uPTExMl09InN1Z2dlc3RTZWxlY3Rpb24iLGVbZS50YWJDb21wbGV0aW9uPTExM109InRhYkNvbXBsZXRpb24iLGVbZS50YWJJbmRleD0xMTRdPSJ0YWJJbmRleCIsZVtlLnVuaWNvZGVIaWdobGlnaHRpbmc9MTE1XT0idW5pY29kZUhpZ2hsaWdodGluZyIsZVtlLnVudXN1YWxMaW5lVGVybWluYXRvcnM9MTE2XT0idW51c3VhbExpbmVUZXJtaW5hdG9ycyIsZVtlLnVzZVNoYWRvd0RPTT0xMTddPSJ1c2VTaGFkb3dET00iLGVbZS51c2VUYWJTdG9wcz0xMThdPSJ1c2VUYWJTdG9wcyIsZVtlLndvcmRTZXBhcmF0b3JzPTExOV09IndvcmRTZXBhcmF0b3JzIixlW2Uud29yZFdyYXA9MTIwXT0id29yZFdyYXAiLGVbZS53b3JkV3JhcEJyZWFrQWZ0ZXJDaGFyYWN0ZXJzPTEyMV09IndvcmRXcmFwQnJlYWtBZnRlckNoYXJhY3RlcnMiLGVbZS53b3JkV3JhcEJyZWFrQmVmb3JlQ2hhcmFjdGVycz0xMjJdPSJ3b3JkV3JhcEJyZWFrQmVmb3JlQ2hhcmFjdGVycyIsZVtlLndvcmRXcmFwQ29sdW1uPTEyM109IndvcmRXcmFwQ29sdW1uIixlW2Uud29yZFdyYXBPdmVycmlkZTE9MTI0XT0id29yZFdyYXBPdmVycmlkZTEiLGVbZS53b3JkV3JhcE92ZXJyaWRlMj0xMjVdPSJ3b3JkV3JhcE92ZXJyaWRlMiIsZVtlLndyYXBwaW5nSW5kZW50PTEyNl09IndyYXBwaW5nSW5kZW50IixlW2Uud3JhcHBpbmdTdHJhdGVneT0xMjddPSJ3cmFwcGluZ1N0cmF0ZWd5IixlW2Uuc2hvd0RlcHJlY2F0ZWQ9MTI4XT0ic2hvd0RlcHJlY2F0ZWQiLGVbZS5pbmxheUhpbnRzPTEyOV09ImlubGF5SGludHMiLGVbZS5lZGl0b3JDbGFzc05hbWU9MTMwXT0iZWRpdG9yQ2xhc3NOYW1lIixlW2UucGl4ZWxSYXRpbz0xMzFdPSJwaXhlbFJhdGlvIixlW2UudGFiRm9jdXNNb2RlPTEzMl09InRhYkZvY3VzTW9kZSIsZVtlLmxheW91dEluZm89MTMzXT0ibGF5b3V0SW5mbyIsZVtlLndyYXBwaW5nSW5mbz0xMzRdPSJ3cmFwcGluZ0luZm8ifShsbnx8KGxuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlRleHREZWZpbmVkPTBdPSJUZXh0RGVmaW5lZCIsZVtlLkxGPTFdPSJMRiIsZVtlLkNSTEY9Ml09IkNSTEYifShjbnx8KGNuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkxGPTBdPSJMRiIsZVtlLkNSTEY9MV09IkNSTEYifShobnx8KGhuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLk5vbmU9MF09Ik5vbmUiLGVbZS5JbmRlbnQ9MV09IkluZGVudCIsZVtlLkluZGVudE91dGRlbnQ9Ml09IkluZGVudE91dGRlbnQiLGVbZS5PdXRkZW50PTNdPSJPdXRkZW50In0oZG58fChkbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Cb3RoPTBdPSJCb3RoIixlW2UuUmlnaHQ9MV09IlJpZ2h0IixlW2UuTGVmdD0yXT0iTGVmdCIsZVtlLk5vbmU9M109Ik5vbmUifShwbnx8KHBuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlR5cGU9MV09IlR5cGUiLGVbZS5QYXJhbWV0ZXI9Ml09IlBhcmFtZXRlciJ9KHVufHwodW49e30pKSxmdW5jdGlvbihlKXtlW2UuQXV0b21hdGljPTBdPSJBdXRvbWF0aWMiLGVbZS5FeHBsaWNpdD0xXT0iRXhwbGljaXQifShtbnx8KG1uPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkRlcGVuZHNPbktiTGF5b3V0PS0xXT0iRGVwZW5kc09uS2JMYXlvdXQiLGVbZS5Vbmtub3duPTBdPSJVbmtub3duIixlW2UuQmFja3NwYWNlPTFdPSJCYWNrc3BhY2UiLGVbZS5UYWI9Ml09IlRhYiIsZVtlLkVudGVyPTNdPSJFbnRlciIsZVtlLlNoaWZ0PTRdPSJTaGlmdCIsZVtlLkN0cmw9NV09IkN0cmwiLGVbZS5BbHQ9Nl09IkFsdCIsZVtlLlBhdXNlQnJlYWs9N109IlBhdXNlQnJlYWsiLGVbZS5DYXBzTG9jaz04XT0iQ2Fwc0xvY2siLGVbZS5Fc2NhcGU9OV09IkVzY2FwZSIsZVtlLlNwYWNlPTEwXT0iU3BhY2UiLGVbZS5QYWdlVXA9MTFdPSJQYWdlVXAiLGVbZS5QYWdlRG93bj0xMl09IlBhZ2VEb3duIixlW2UuRW5kPTEzXT0iRW5kIixlW2UuSG9tZT0xNF09IkhvbWUiLGVbZS5MZWZ0QXJyb3c9MTVdPSJMZWZ0QXJyb3ciLGVbZS5VcEFycm93PTE2XT0iVXBBcnJvdyIsZVtlLlJpZ2h0QXJyb3c9MTddPSJSaWdodEFycm93IixlW2UuRG93bkFycm93PTE4XT0iRG93bkFycm93IixlW2UuSW5zZXJ0PTE5XT0iSW5zZXJ0IixlW2UuRGVsZXRlPTIwXT0iRGVsZXRlIixlW2UuRGlnaXQwPTIxXT0iRGlnaXQwIixlW2UuRGlnaXQxPTIyXT0iRGlnaXQxIixlW2UuRGlnaXQyPTIzXT0iRGlnaXQyIixlW2UuRGlnaXQzPTI0XT0iRGlnaXQzIixlW2UuRGlnaXQ0PTI1XT0iRGlnaXQ0IixlW2UuRGlnaXQ1PTI2XT0iRGlnaXQ1IixlW2UuRGlnaXQ2PTI3XT0iRGlnaXQ2IixlW2UuRGlnaXQ3PTI4XT0iRGlnaXQ3IixlW2UuRGlnaXQ4PTI5XT0iRGlnaXQ4IixlW2UuRGlnaXQ5PTMwXT0iRGlnaXQ5IixlW2UuS2V5QT0zMV09IktleUEiLGVbZS5LZXlCPTMyXT0iS2V5QiIsZVtlLktleUM9MzNdPSJLZXlDIixlW2UuS2V5RD0zNF09IktleUQiLGVbZS5LZXlFPTM1XT0iS2V5RSIsZVtlLktleUY9MzZdPSJLZXlGIixlW2UuS2V5Rz0zN109IktleUciLGVbZS5LZXlIPTM4XT0iS2V5SCIsZVtlLktleUk9MzldPSJLZXlJIixlW2UuS2V5Sj00MF09IktleUoiLGVbZS5LZXlLPTQxXT0iS2V5SyIsZVtlLktleUw9NDJdPSJLZXlMIixlW2UuS2V5TT00M109IktleU0iLGVbZS5LZXlOPTQ0XT0iS2V5TiIsZVtlLktleU89NDVdPSJLZXlPIixlW2UuS2V5UD00Nl09IktleVAiLGVbZS5LZXlRPTQ3XT0iS2V5USIsZVtlLktleVI9NDhdPSJLZXlSIixlW2UuS2V5Uz00OV09IktleVMiLGVbZS5LZXlUPTUwXT0iS2V5VCIsZVtlLktleVU9NTFdPSJLZXlVIixlW2UuS2V5Vj01Ml09IktleVYiLGVbZS5LZXlXPTUzXT0iS2V5VyIsZVtlLktleVg9NTRdPSJLZXlYIixlW2UuS2V5WT01NV09IktleVkiLGVbZS5LZXlaPTU2XT0iS2V5WiIsZVtlLk1ldGE9NTddPSJNZXRhIixlW2UuQ29udGV4dE1lbnU9NThdPSJDb250ZXh0TWVudSIsZVtlLkYxPTU5XT0iRjEiLGVbZS5GMj02MF09IkYyIixlW2UuRjM9NjFdPSJGMyIsZVtlLkY0PTYyXT0iRjQiLGVbZS5GNT02M109IkY1IixlW2UuRjY9NjRdPSJGNiIsZVtlLkY3PTY1XT0iRjciLGVbZS5GOD02Nl09IkY4IixlW2UuRjk9NjddPSJGOSIsZVtlLkYxMD02OF09IkYxMCIsZVtlLkYxMT02OV09IkYxMSIsZVtlLkYxMj03MF09IkYxMiIsZVtlLkYxMz03MV09IkYxMyIsZVtlLkYxND03Ml09IkYxNCIsZVtlLkYxNT03M109IkYxNSIsZVtlLkYxNj03NF09IkYxNiIsZVtlLkYxNz03NV09IkYxNyIsZVtlLkYxOD03Nl09IkYxOCIsZVtlLkYxOT03N109IkYxOSIsZVtlLk51bUxvY2s9NzhdPSJOdW1Mb2NrIixlW2UuU2Nyb2xsTG9jaz03OV09IlNjcm9sbExvY2siLGVbZS5TZW1pY29sb249ODBdPSJTZW1pY29sb24iLGVbZS5FcXVhbD04MV09IkVxdWFsIixlW2UuQ29tbWE9ODJdPSJDb21tYSIsZVtlLk1pbnVzPTgzXT0iTWludXMiLGVbZS5QZXJpb2Q9ODRdPSJQZXJpb2QiLGVbZS5TbGFzaD04NV09IlNsYXNoIixlW2UuQmFja3F1b3RlPTg2XT0iQmFja3F1b3RlIixlW2UuQnJhY2tldExlZnQ9ODddPSJCcmFja2V0TGVmdCIsZVtlLkJhY2tzbGFzaD04OF09IkJhY2tzbGFzaCIsZVtlLkJyYWNrZXRSaWdodD04OV09IkJyYWNrZXRSaWdodCIsZVtlLlF1b3RlPTkwXT0iUXVvdGUiLGVbZS5PRU1fOD05MV09Ik9FTV84IixlW2UuSW50bEJhY2tzbGFzaD05Ml09IkludGxCYWNrc2xhc2giLGVbZS5OdW1wYWQwPTkzXT0iTnVtcGFkMCIsZVtlLk51bXBhZDE9OTRdPSJOdW1wYWQxIixlW2UuTnVtcGFkMj05NV09Ik51bXBhZDIiLGVbZS5OdW1wYWQzPTk2XT0iTnVtcGFkMyIsZVtlLk51bXBhZDQ9OTddPSJOdW1wYWQ0IixlW2UuTnVtcGFkNT05OF09Ik51bXBhZDUiLGVbZS5OdW1wYWQ2PTk5XT0iTnVtcGFkNiIsZVtlLk51bXBhZDc9MTAwXT0iTnVtcGFkNyIsZVtlLk51bXBhZDg9MTAxXT0iTnVtcGFkOCIsZVtlLk51bXBhZDk9MTAyXT0iTnVtcGFkOSIsZVtlLk51bXBhZE11bHRpcGx5PTEwM109Ik51bXBhZE11bHRpcGx5IixlW2UuTnVtcGFkQWRkPTEwNF09Ik51bXBhZEFkZCIsZVtlLk5VTVBBRF9TRVBBUkFUT1I9MTA1XT0iTlVNUEFEX1NFUEFSQVRPUiIsZVtlLk51bXBhZFN1YnRyYWN0PTEwNl09Ik51bXBhZFN1YnRyYWN0IixlW2UuTnVtcGFkRGVjaW1hbD0xMDddPSJOdW1wYWREZWNpbWFsIixlW2UuTnVtcGFkRGl2aWRlPTEwOF09Ik51bXBhZERpdmlkZSIsZVtlLktFWV9JTl9DT01QT1NJVElPTj0xMDldPSJLRVlfSU5fQ09NUE9TSVRJT04iLGVbZS5BQk5UX0MxPTExMF09IkFCTlRfQzEiLGVbZS5BQk5UX0MyPTExMV09IkFCTlRfQzIiLGVbZS5BdWRpb1ZvbHVtZU11dGU9MTEyXT0iQXVkaW9Wb2x1bWVNdXRlIixlW2UuQXVkaW9Wb2x1bWVVcD0xMTNdPSJBdWRpb1ZvbHVtZVVwIixlW2UuQXVkaW9Wb2x1bWVEb3duPTExNF09IkF1ZGlvVm9sdW1lRG93biIsZVtlLkJyb3dzZXJTZWFyY2g9MTE1XT0iQnJvd3NlclNlYXJjaCIsZVtlLkJyb3dzZXJIb21lPTExNl09IkJyb3dzZXJIb21lIixlW2UuQnJvd3NlckJhY2s9MTE3XT0iQnJvd3NlckJhY2siLGVbZS5Ccm93c2VyRm9yd2FyZD0xMThdPSJCcm93c2VyRm9yd2FyZCIsZVtlLk1lZGlhVHJhY2tOZXh0PTExOV09Ik1lZGlhVHJhY2tOZXh0IixlW2UuTWVkaWFUcmFja1ByZXZpb3VzPTEyMF09Ik1lZGlhVHJhY2tQcmV2aW91cyIsZVtlLk1lZGlhU3RvcD0xMjFdPSJNZWRpYVN0b3AiLGVbZS5NZWRpYVBsYXlQYXVzZT0xMjJdPSJNZWRpYVBsYXlQYXVzZSIsZVtlLkxhdW5jaE1lZGlhUGxheWVyPTEyM109IkxhdW5jaE1lZGlhUGxheWVyIixlW2UuTGF1bmNoTWFpbD0xMjRdPSJMYXVuY2hNYWlsIixlW2UuTGF1bmNoQXBwMj0xMjVdPSJMYXVuY2hBcHAyIixlW2UuQ2xlYXI9MTI2XT0iQ2xlYXIiLGVbZS5NQVhfVkFMVUU9MTI3XT0iTUFYX1ZBTFVFIn0oZm58fChmbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5IaW50PTFdPSJIaW50IixlW2UuSW5mbz0yXT0iSW5mbyIsZVtlLldhcm5pbmc9NF09Ildhcm5pbmciLGVbZS5FcnJvcj04XT0iRXJyb3IifShnbnx8KGduPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlVubmVjZXNzYXJ5PTFdPSJVbm5lY2Vzc2FyeSIsZVtlLkRlcHJlY2F0ZWQ9Ml09IkRlcHJlY2F0ZWQifShibnx8KGJuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLklubGluZT0xXT0iSW5saW5lIixlW2UuR3V0dGVyPTJdPSJHdXR0ZXIifSh5bnx8KHluPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlVOS05PV049MF09IlVOS05PV04iLGVbZS5URVhUQVJFQT0xXT0iVEVYVEFSRUEiLGVbZS5HVVRURVJfR0xZUEhfTUFSR0lOPTJdPSJHVVRURVJfR0xZUEhfTUFSR0lOIixlW2UuR1VUVEVSX0xJTkVfTlVNQkVSUz0zXT0iR1VUVEVSX0xJTkVfTlVNQkVSUyIsZVtlLkdVVFRFUl9MSU5FX0RFQ09SQVRJT05TPTRdPSJHVVRURVJfTElORV9ERUNPUkFUSU9OUyIsZVtlLkdVVFRFUl9WSUVXX1pPTkU9NV09IkdVVFRFUl9WSUVXX1pPTkUiLGVbZS5DT05URU5UX1RFWFQ9Nl09IkNPTlRFTlRfVEVYVCIsZVtlLkNPTlRFTlRfRU1QVFk9N109IkNPTlRFTlRfRU1QVFkiLGVbZS5DT05URU5UX1ZJRVdfWk9ORT04XT0iQ09OVEVOVF9WSUVXX1pPTkUiLGVbZS5DT05URU5UX1dJREdFVD05XT0iQ09OVEVOVF9XSURHRVQiLGVbZS5PVkVSVklFV19SVUxFUj0xMF09Ik9WRVJWSUVXX1JVTEVSIixlW2UuU0NST0xMQkFSPTExXT0iU0NST0xMQkFSIixlW2UuT1ZFUkxBWV9XSURHRVQ9MTJdPSJPVkVSTEFZX1dJREdFVCIsZVtlLk9VVFNJREVfRURJVE9SPTEzXT0iT1VUU0lERV9FRElUT1IifSh2bnx8KHZuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlRPUF9SSUdIVF9DT1JORVI9MF09IlRPUF9SSUdIVF9DT1JORVIiLGVbZS5CT1RUT01fUklHSFRfQ09STkVSPTFdPSJCT1RUT01fUklHSFRfQ09STkVSIixlW2UuVE9QX0NFTlRFUj0yXT0iVE9QX0NFTlRFUiJ9KHdufHwod249e30pKSxmdW5jdGlvbihlKXtlW2UuTGVmdD0xXT0iTGVmdCIsZVtlLkNlbnRlcj0yXT0iQ2VudGVyIixlW2UuUmlnaHQ9NF09IlJpZ2h0IixlW2UuRnVsbD03XT0iRnVsbCJ9KHhufHwoeG49e30pKSxmdW5jdGlvbihlKXtlW2UuTGVmdD0wXT0iTGVmdCIsZVtlLlJpZ2h0PTFdPSJSaWdodCIsZVtlLk5vbmU9Ml09Ik5vbmUiLGVbZS5MZWZ0T2ZJbmplY3RlZFRleHQ9M109IkxlZnRPZkluamVjdGVkVGV4dCIsZVtlLlJpZ2h0T2ZJbmplY3RlZFRleHQ9NF09IlJpZ2h0T2ZJbmplY3RlZFRleHQifShTbnx8KFNuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLk9mZj0wXT0iT2ZmIixlW2UuT249MV09Ik9uIixlW2UuUmVsYXRpdmU9Ml09IlJlbGF0aXZlIixlW2UuSW50ZXJ2YWw9M109IkludGVydmFsIixlW2UuQ3VzdG9tPTRdPSJDdXN0b20ifShDbnx8KENuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLk5vbmU9MF09Ik5vbmUiLGVbZS5UZXh0PTFdPSJUZXh0IixlW2UuQmxvY2tzPTJdPSJCbG9ja3MifShrbnx8KGtuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlNtb290aD0wXT0iU21vb3RoIixlW2UuSW1tZWRpYXRlPTFdPSJJbW1lZGlhdGUifShfbnx8KF9uPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkF1dG89MV09IkF1dG8iLGVbZS5IaWRkZW49Ml09IkhpZGRlbiIsZVtlLlZpc2libGU9M109IlZpc2libGUifShFbnx8KEVuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkxUUj0wXT0iTFRSIixlW2UuUlRMPTFdPSJSVEwifShGbnx8KEZuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0xXT0iSW52b2tlIixlW2UuVHJpZ2dlckNoYXJhY3Rlcj0yXT0iVHJpZ2dlckNoYXJhY3RlciIsZVtlLkNvbnRlbnRDaGFuZ2U9M109IkNvbnRlbnRDaGFuZ2UifShSbnx8KFJuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkZpbGU9MF09IkZpbGUiLGVbZS5Nb2R1bGU9MV09Ik1vZHVsZSIsZVtlLk5hbWVzcGFjZT0yXT0iTmFtZXNwYWNlIixlW2UuUGFja2FnZT0zXT0iUGFja2FnZSIsZVtlLkNsYXNzPTRdPSJDbGFzcyIsZVtlLk1ldGhvZD01XT0iTWV0aG9kIixlW2UuUHJvcGVydHk9Nl09IlByb3BlcnR5IixlW2UuRmllbGQ9N109IkZpZWxkIixlW2UuQ29uc3RydWN0b3I9OF09IkNvbnN0cnVjdG9yIixlW2UuRW51bT05XT0iRW51bSIsZVtlLkludGVyZmFjZT0xMF09IkludGVyZmFjZSIsZVtlLkZ1bmN0aW9uPTExXT0iRnVuY3Rpb24iLGVbZS5WYXJpYWJsZT0xMl09IlZhcmlhYmxlIixlW2UuQ29uc3RhbnQ9MTNdPSJDb25zdGFudCIsZVtlLlN0cmluZz0xNF09IlN0cmluZyIsZVtlLk51bWJlcj0xNV09Ik51bWJlciIsZVtlLkJvb2xlYW49MTZdPSJCb29sZWFuIixlW2UuQXJyYXk9MTddPSJBcnJheSIsZVtlLk9iamVjdD0xOF09Ik9iamVjdCIsZVtlLktleT0xOV09IktleSIsZVtlLk51bGw9MjBdPSJOdWxsIixlW2UuRW51bU1lbWJlcj0yMV09IkVudW1NZW1iZXIiLGVbZS5TdHJ1Y3Q9MjJdPSJTdHJ1Y3QiLGVbZS5FdmVudD0yM109IkV2ZW50IixlW2UuT3BlcmF0b3I9MjRdPSJPcGVyYXRvciIsZVtlLlR5cGVQYXJhbWV0ZXI9MjVdPSJUeXBlUGFyYW1ldGVyIn0oRG58fChEbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5EZXByZWNhdGVkPTFdPSJEZXByZWNhdGVkIn0oTm58fChObj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5IaWRkZW49MF09IkhpZGRlbiIsZVtlLkJsaW5rPTFdPSJCbGluayIsZVtlLlNtb290aD0yXT0iU21vb3RoIixlW2UuUGhhc2U9M109IlBoYXNlIixlW2UuRXhwYW5kPTRdPSJFeHBhbmQiLGVbZS5Tb2xpZD01XT0iU29saWQifShUbnx8KFRuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkxpbmU9MV09IkxpbmUiLGVbZS5CbG9jaz0yXT0iQmxvY2siLGVbZS5VbmRlcmxpbmU9M109IlVuZGVybGluZSIsZVtlLkxpbmVUaGluPTRdPSJMaW5lVGhpbiIsZVtlLkJsb2NrT3V0bGluZT01XT0iQmxvY2tPdXRsaW5lIixlW2UuVW5kZXJsaW5lVGhpbj02XT0iVW5kZXJsaW5lVGhpbiJ9KEFufHwoQW49e30pKSxmdW5jdGlvbihlKXtlW2UuQWx3YXlzR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcz0wXT0iQWx3YXlzR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcyIsZVtlLk5ldmVyR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcz0xXT0iTmV2ZXJHcm93c1doZW5UeXBpbmdBdEVkZ2VzIixlW2UuR3Jvd3NPbmx5V2hlblR5cGluZ0JlZm9yZT0yXT0iR3Jvd3NPbmx5V2hlblR5cGluZ0JlZm9yZSIsZVtlLkdyb3dzT25seVdoZW5UeXBpbmdBZnRlcj0zXT0iR3Jvd3NPbmx5V2hlblR5cGluZ0FmdGVyIn0oem58fCh6bj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Ob25lPTBdPSJOb25lIixlW2UuU2FtZT0xXT0iU2FtZSIsZVtlLkluZGVudD0yXT0iSW5kZW50IixlW2UuRGVlcEluZGVudD0zXT0iRGVlcEluZGVudCJ9KElufHwoSW49e30pKTtjbGFzcyBVbntzdGF0aWMgY2hvcmQoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSx0KXtyZXR1cm4oZXwoNjU1MzUmdCk8PDE2Pj4+MCk+Pj4wfShlLHQpfX1mdW5jdGlvbiBLbihlLHQsbixyLGkpe3JldHVybiBmdW5jdGlvbihlLHQsbixyLGkpe2lmKDA9PT1yKXJldHVybiEwO2NvbnN0IG89dC5jaGFyQ29kZUF0KHItMSk7aWYoMCE9PWUuZ2V0KG8pKXJldHVybiEwO2lmKDEzPT09b3x8MTA9PT1vKXJldHVybiEwO2lmKGk+MCl7Y29uc3Qgbj10LmNoYXJDb2RlQXQocik7aWYoMCE9PWUuZ2V0KG4pKXJldHVybiEwfXJldHVybiExfShlLHQsMCxyLGkpJiZmdW5jdGlvbihlLHQsbixyLGkpe2lmKHIraT09PW4pcmV0dXJuITA7Y29uc3Qgbz10LmNoYXJDb2RlQXQocitpKTtpZigwIT09ZS5nZXQobykpcmV0dXJuITA7aWYoMTM9PT1vfHwxMD09PW8pcmV0dXJuITA7aWYoaT4wKXtjb25zdCBuPXQuY2hhckNvZGVBdChyK2ktMSk7aWYoMCE9PWUuZ2V0KG4pKXJldHVybiEwfXJldHVybiExfShlLHQsbixyLGkpfVVuLkN0cmxDbWQ9MjA0OCxVbi5TaGlmdD0xMDI0LFVuLkFsdD01MTIsVW4uV2luQ3RybD0yNTYsZnVuY3Rpb24oZSl7ZVtlLkxlZnQ9MV09IkxlZnQiLGVbZS5DZW50ZXI9Ml09IkNlbnRlciIsZVtlLlJpZ2h0PTRdPSJSaWdodCIsZVtlLkZ1bGw9N109IkZ1bGwifShNbnx8KE1uPXt9KSksZnVuY3Rpb24oZSl7ZVtlLklubGluZT0xXT0iSW5saW5lIixlW2UuR3V0dGVyPTJdPSJHdXR0ZXIifShQbnx8KFBuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkJvdGg9MF09IkJvdGgiLGVbZS5SaWdodD0xXT0iUmlnaHQiLGVbZS5MZWZ0PTJdPSJMZWZ0IixlW2UuTm9uZT0zXT0iTm9uZSJ9KE9ufHwoT249e30pKTtjbGFzcyBCbntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX3dvcmRTZXBhcmF0b3JzPWUsdGhpcy5fc2VhcmNoUmVnZXg9dCx0aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4PS0xLHRoaXMuX3ByZXZNYXRjaExlbmd0aD0wfXJlc2V0KGUpe3RoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleD1lLHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXg9LTEsdGhpcy5fcHJldk1hdGNoTGVuZ3RoPTB9bmV4dChlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBuO2Rve2lmKHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXgrdGhpcy5fcHJldk1hdGNoTGVuZ3RoPT09dClyZXR1cm4gbnVsbDtpZihuPXRoaXMuX3NlYXJjaFJlZ2V4LmV4ZWMoZSksIW4pcmV0dXJuIG51bGw7Y29uc3Qgcj1uLmluZGV4LGk9blswXS5sZW5ndGg7aWYocj09PXRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXgmJmk9PT10aGlzLl9wcmV2TWF0Y2hMZW5ndGgpe2lmKDA9PT1pKXtZKGUsdCx0aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgpPjY1NTM1P3RoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleCs9Mjp0aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgrPTE7Y29udGludWV9cmV0dXJuIG51bGx9aWYodGhpcy5fcHJldk1hdGNoU3RhcnRJbmRleD1yLHRoaXMuX3ByZXZNYXRjaExlbmd0aD1pLCF0aGlzLl93b3JkU2VwYXJhdG9yc3x8S24odGhpcy5fd29yZFNlcGFyYXRvcnMsZSx0LHIsaSkpcmV0dXJuIG59d2hpbGUobik7cmV0dXJuIG51bGx9fWNsYXNzIGpue3N0YXRpYyBjb21wdXRlVW5pY29kZUhpZ2hsaWdodHMoZSx0LG4pe2NvbnN0IHI9bj9uLnN0YXJ0TGluZU51bWJlcjoxLGk9bj9uLmVuZExpbmVOdW1iZXI6ZS5nZXRMaW5lQ291bnQoKSxvPW5ldyBxbih0KSxzPW8uZ2V0Q2FuZGlkYXRlQ29kZVBvaW50cygpO2xldCBhO3ZhciBsLGM7YT0iYWxsTm9uQmFzaWNBc2NpaSI9PT1zP25ldyBSZWdFeHAoIlteXFx0XFxuXFxyXFx4MjAtXFx4N0VdIiwiZyIpOm5ldyBSZWdFeHAoIiIrKGw9QXJyYXkuZnJvbShzKSxgWyR7Yz1sLm1hcCgoZT0+U3RyaW5nLmZyb21Db2RlUG9pbnQoZSkpKS5qb2luKCIiKSxjLnJlcGxhY2UoL1tcXFx7XH1cKlwrXD9cfFxeXCRcLlxbXF1cKFwpXS9nLCJcXCQmIil9XWApLCJnIik7Y29uc3QgaD1uZXcgQm4obnVsbCxhKSxkPVtdO2xldCBwLHU9ITEsbT0wLGY9MCxnPTA7ZTpmb3IobGV0IHQ9cixuPWk7dDw9bjt0Kyspe2NvbnN0IG49ZS5nZXRMaW5lQ29udGVudCh0KSxyPW4ubGVuZ3RoO2gucmVzZXQoMCk7ZG97aWYocD1oLm5leHQobikscCl7bGV0IGU9cC5pbmRleCxpPXAuaW5kZXgrcFswXS5sZW5ndGg7aWYoZT4wKXtYKG4uY2hhckNvZGVBdChlLTEpKSYmZS0tfWlmKGkrMTxyKXtYKG4uY2hhckNvZGVBdChpLTEpKSYmaSsrfWNvbnN0IHM9bi5zdWJzdHJpbmcoZSxpKSxhPXZ0KGUrMSxidCxuLDApLGw9by5zaG91bGRIaWdobGlnaHROb25CYXNpY0FTQ0lJKHMsYT9hLndvcmQ6bnVsbCk7aWYoMCE9PWwpezM9PT1sP20rKzoyPT09bD9mKys6MT09PWw/ZysrOkgoKTtjb25zdCBuPTFlMztpZihkLmxlbmd0aD49bil7dT0hMDticmVhayBlfWQucHVzaChuZXcgdHQodCxlKzEsdCxpKzEpKX19fXdoaWxlKHApfXJldHVybntyYW5nZXM6ZCxoYXNNb3JlOnUsYW1iaWd1b3VzQ2hhcmFjdGVyQ291bnQ6bSxpbnZpc2libGVDaGFyYWN0ZXJDb3VudDpmLG5vbkJhc2ljQXNjaWlDaGFyYWN0ZXJDb3VudDpnfX1zdGF0aWMgY29tcHV0ZVVuaWNvZGVIaWdobGlnaHRSZWFzb24oZSx0KXtjb25zdCBuPW5ldyBxbih0KTtzd2l0Y2gobi5zaG91bGRIaWdobGlnaHROb25CYXNpY0FTQ0lJKGUsbnVsbCkpe2Nhc2UgMDpyZXR1cm4gbnVsbDtjYXNlIDI6cmV0dXJue2tpbmQ6MX07Y2FzZSAzOntjb25zdCByPWUuY29kZVBvaW50QXQoMCksaT1uLmFtYmlndW91c0NoYXJhY3RlcnMuZ2V0UHJpbWFyeUNvbmZ1c2FibGUociksbz1RLmdldExvY2FsZXMoKS5maWx0ZXIoKGU9PiFRLmdldEluc3RhbmNlKG5ldyBTZXQoWy4uLnQuYWxsb3dlZExvY2FsZXMsZV0pKS5pc0FtYmlndW91cyhyKSkpO3JldHVybntraW5kOjAsY29uZnVzYWJsZVdpdGg6U3RyaW5nLmZyb21Db2RlUG9pbnQoaSksbm90QW1iaWd1b3VzSW5Mb2NhbGVzOm99fWNhc2UgMTpyZXR1cm57a2luZDoyfX19fWNsYXNzIHFue2NvbnN0cnVjdG9yKGUpe3RoaXMub3B0aW9ucz1lLHRoaXMuYWxsb3dlZENvZGVQb2ludHM9bmV3IFNldChlLmFsbG93ZWRDb2RlUG9pbnRzKSx0aGlzLmFtYmlndW91c0NoYXJhY3RlcnM9US5nZXRJbnN0YW5jZShuZXcgU2V0KGUuYWxsb3dlZExvY2FsZXMpKX1nZXRDYW5kaWRhdGVDb2RlUG9pbnRzKCl7aWYodGhpcy5vcHRpb25zLm5vbkJhc2ljQVNDSUkpcmV0dXJuImFsbE5vbkJhc2ljQXNjaWkiO2NvbnN0IGU9bmV3IFNldDtpZih0aGlzLm9wdGlvbnMuaW52aXNpYmxlQ2hhcmFjdGVycylmb3IoY29uc3QgdCBvZiBlZS5jb2RlUG9pbnRzKSRuKFN0cmluZy5mcm9tQ29kZVBvaW50KHQpKXx8ZS5hZGQodCk7aWYodGhpcy5vcHRpb25zLmFtYmlndW91c0NoYXJhY3RlcnMpZm9yKGNvbnN0IHQgb2YgdGhpcy5hbWJpZ3VvdXNDaGFyYWN0ZXJzLmdldENvbmZ1c2FibGVDb2RlUG9pbnRzKCkpZS5hZGQodCk7Zm9yKGNvbnN0IHQgb2YgdGhpcy5hbGxvd2VkQ29kZVBvaW50cyllLmRlbGV0ZSh0KTtyZXR1cm4gZX1zaG91bGRIaWdobGlnaHROb25CYXNpY0FTQ0lJKGUsdCl7Y29uc3Qgbj1lLmNvZGVQb2ludEF0KDApO2lmKHRoaXMuYWxsb3dlZENvZGVQb2ludHMuaGFzKG4pKXJldHVybiAwO2lmKHRoaXMub3B0aW9ucy5ub25CYXNpY0FTQ0lJKXJldHVybiAxO2xldCByPSExLGk9ITE7aWYodClmb3IoY29uc3QgZSBvZiB0KXtjb25zdCB0PWUuY29kZVBvaW50QXQoMCksbj0obz1lLFoudGVzdChvKSk7cj1yfHxuLG58fHRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycy5pc0FtYmlndW91cyh0KXx8ZWUuaXNJbnZpc2libGVDaGFyYWN0ZXIodCl8fChpPSEwKX12YXIgbztyZXR1cm4hciYmaT8wOnRoaXMub3B0aW9ucy5pbnZpc2libGVDaGFyYWN0ZXJzJiYhJG4oZSkmJmVlLmlzSW52aXNpYmxlQ2hhcmFjdGVyKG4pPzI6dGhpcy5vcHRpb25zLmFtYmlndW91c0NoYXJhY3RlcnMmJnRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycy5pc0FtYmlndW91cyhuKT8zOjB9fWZ1bmN0aW9uICRuKGUpe3JldHVybiIgIj09PWV8fCJcbiI9PT1lfHwiXHQiPT09ZX12YXIgSG49ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoKGZ1bmN0aW9uKGksbyl7ZnVuY3Rpb24gcyhlKXt0cnl7bChyLm5leHQoZSkpfWNhdGNoKGUpe28oZSl9fWZ1bmN0aW9uIGEoZSl7dHJ5e2woci50aHJvdyhlKSl9Y2F0Y2goZSl7byhlKX19ZnVuY3Rpb24gbChlKXt2YXIgdDtlLmRvbmU/aShlLnZhbHVlKToodD1lLnZhbHVlLHQgaW5zdGFuY2VvZiBuP3Q6bmV3IG4oKGZ1bmN0aW9uKGUpe2UodCl9KSkpLnRoZW4ocyxhKX1sKChyPXIuYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KSl9O2NsYXNzIEduIGV4dGVuZHMgZ3R7Z2V0IHVyaSgpe3JldHVybiB0aGlzLl91cml9Z2V0IGVvbCgpe3JldHVybiB0aGlzLl9lb2x9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy5nZXRUZXh0KCl9Z2V0TGluZXNDb250ZW50KCl7cmV0dXJuIHRoaXMuX2xpbmVzLnNsaWNlKDApfWdldExpbmVDb3VudCgpe3JldHVybiB0aGlzLl9saW5lcy5sZW5ndGh9Z2V0TGluZUNvbnRlbnQoZSl7cmV0dXJuIHRoaXMuX2xpbmVzW2UtMV19Z2V0V29yZEF0UG9zaXRpb24oZSx0KXtjb25zdCBuPXZ0KGUuY29sdW1uLGZ1bmN0aW9uKGUpe2xldCB0PWJ0O2lmKGUmJmUgaW5zdGFuY2VvZiBSZWdFeHApaWYoZS5nbG9iYWwpdD1lO2Vsc2V7bGV0IG49ImciO2UuaWdub3JlQ2FzZSYmKG4rPSJpIiksZS5tdWx0aWxpbmUmJihuKz0ibSIpLGUudW5pY29kZSYmKG4rPSJ1IiksdD1uZXcgUmVnRXhwKGUuc291cmNlLG4pfXJldHVybiB0Lmxhc3RJbmRleD0wLHR9KHQpLHRoaXMuX2xpbmVzW2UubGluZU51bWJlci0xXSwwKTtyZXR1cm4gbj9uZXcgdHQoZS5saW5lTnVtYmVyLG4uc3RhcnRDb2x1bW4sZS5saW5lTnVtYmVyLG4uZW5kQ29sdW1uKTpudWxsfXdvcmRzKGUpe2NvbnN0IHQ9dGhpcy5fbGluZXMsbj10aGlzLl93b3JkZW5pemUuYmluZCh0aGlzKTtsZXQgcj0wLGk9IiIsbz0wLHM9W107cmV0dXJueypbU3ltYm9sLml0ZXJhdG9yXSgpe2Zvcig7OylpZihvPHMubGVuZ3RoKXtjb25zdCBlPWkuc3Vic3RyaW5nKHNbb10uc3RhcnQsc1tvXS5lbmQpO28rPTEseWllbGQgZX1lbHNle2lmKCEocjx0Lmxlbmd0aCkpYnJlYWs7aT10W3JdLHM9bihpLGUpLG89MCxyKz0xfX19fWdldExpbmVXb3JkcyhlLHQpe2NvbnN0IG49dGhpcy5fbGluZXNbZS0xXSxyPXRoaXMuX3dvcmRlbml6ZShuLHQpLGk9W107Zm9yKGNvbnN0IGUgb2YgcilpLnB1c2goe3dvcmQ6bi5zdWJzdHJpbmcoZS5zdGFydCxlLmVuZCksc3RhcnRDb2x1bW46ZS5zdGFydCsxLGVuZENvbHVtbjplLmVuZCsxfSk7cmV0dXJuIGl9X3dvcmRlbml6ZShlLHQpe2NvbnN0IG49W107bGV0IHI7Zm9yKHQubGFzdEluZGV4PTA7KHI9dC5leGVjKGUpKSYmMCE9PXJbMF0ubGVuZ3RoOyluLnB1c2goe3N0YXJ0OnIuaW5kZXgsZW5kOnIuaW5kZXgrclswXS5sZW5ndGh9KTtyZXR1cm4gbn1nZXRWYWx1ZUluUmFuZ2UoZSl7aWYoKGU9dGhpcy5fdmFsaWRhdGVSYW5nZShlKSkuc3RhcnRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyKXJldHVybiB0aGlzLl9saW5lc1tlLnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoZS5zdGFydENvbHVtbi0xLGUuZW5kQ29sdW1uLTEpO2NvbnN0IHQ9dGhpcy5fZW9sLG49ZS5zdGFydExpbmVOdW1iZXItMSxyPWUuZW5kTGluZU51bWJlci0xLGk9W107aS5wdXNoKHRoaXMuX2xpbmVzW25dLnN1YnN0cmluZyhlLnN0YXJ0Q29sdW1uLTEpKTtmb3IobGV0IGU9bisxO2U8cjtlKyspaS5wdXNoKHRoaXMuX2xpbmVzW2VdKTtyZXR1cm4gaS5wdXNoKHRoaXMuX2xpbmVzW3JdLnN1YnN0cmluZygwLGUuZW5kQ29sdW1uLTEpKSxpLmpvaW4odCl9b2Zmc2V0QXQoZSl7cmV0dXJuIGU9dGhpcy5fdmFsaWRhdGVQb3NpdGlvbihlKSx0aGlzLl9lbnN1cmVMaW5lU3RhcnRzKCksdGhpcy5fbGluZVN0YXJ0cy5nZXRQcmVmaXhTdW0oZS5saW5lTnVtYmVyLTIpKyhlLmNvbHVtbi0xKX1wb3NpdGlvbkF0KGUpe2U9TWF0aC5mbG9vcihlKSxlPU1hdGgubWF4KDAsZSksdGhpcy5fZW5zdXJlTGluZVN0YXJ0cygpO2NvbnN0IHQ9dGhpcy5fbGluZVN0YXJ0cy5nZXRJbmRleE9mKGUpLG49dGhpcy5fbGluZXNbdC5pbmRleF0ubGVuZ3RoO3JldHVybntsaW5lTnVtYmVyOjErdC5pbmRleCxjb2x1bW46MStNYXRoLm1pbih0LnJlbWFpbmRlcixuKX19X3ZhbGlkYXRlUmFuZ2UoZSl7Y29uc3QgdD10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKHtsaW5lTnVtYmVyOmUuc3RhcnRMaW5lTnVtYmVyLGNvbHVtbjplLnN0YXJ0Q29sdW1ufSksbj10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKHtsaW5lTnVtYmVyOmUuZW5kTGluZU51bWJlcixjb2x1bW46ZS5lbmRDb2x1bW59KTtyZXR1cm4gdC5saW5lTnVtYmVyIT09ZS5zdGFydExpbmVOdW1iZXJ8fHQuY29sdW1uIT09ZS5zdGFydENvbHVtbnx8bi5saW5lTnVtYmVyIT09ZS5lbmRMaW5lTnVtYmVyfHxuLmNvbHVtbiE9PWUuZW5kQ29sdW1uP3tzdGFydExpbmVOdW1iZXI6dC5saW5lTnVtYmVyLHN0YXJ0Q29sdW1uOnQuY29sdW1uLGVuZExpbmVOdW1iZXI6bi5saW5lTnVtYmVyLGVuZENvbHVtbjpuLmNvbHVtbn06ZX1fdmFsaWRhdGVQb3NpdGlvbihlKXtpZighZXQuaXNJUG9zaXRpb24oZSkpdGhyb3cgbmV3IEVycm9yKCJiYWQgcG9zaXRpb24iKTtsZXR7bGluZU51bWJlcjp0LGNvbHVtbjpufT1lLHI9ITE7aWYodDwxKXQ9MSxuPTEscj0hMDtlbHNlIGlmKHQ+dGhpcy5fbGluZXMubGVuZ3RoKXQ9dGhpcy5fbGluZXMubGVuZ3RoLG49dGhpcy5fbGluZXNbdC0xXS5sZW5ndGgrMSxyPSEwO2Vsc2V7Y29uc3QgZT10aGlzLl9saW5lc1t0LTFdLmxlbmd0aCsxO248MT8obj0xLHI9ITApOm4+ZSYmKG49ZSxyPSEwKX1yZXR1cm4gcj97bGluZU51bWJlcjp0LGNvbHVtbjpufTplfX1jbGFzcyBKbntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX2hvc3Q9ZSx0aGlzLl9tb2RlbHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9mb3JlaWduTW9kdWxlRmFjdG9yeT10LHRoaXMuX2ZvcmVpZ25Nb2R1bGU9bnVsbH1kaXNwb3NlKCl7dGhpcy5fbW9kZWxzPU9iamVjdC5jcmVhdGUobnVsbCl9X2dldE1vZGVsKGUpe3JldHVybiB0aGlzLl9tb2RlbHNbZV19X2dldE1vZGVscygpe2NvbnN0IGU9W107cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX21vZGVscykuZm9yRWFjaCgodD0+ZS5wdXNoKHRoaXMuX21vZGVsc1t0XSkpKSxlfWFjY2VwdE5ld01vZGVsKGUpe3RoaXMuX21vZGVsc1tlLnVybF09bmV3IEduKEJlLnBhcnNlKGUudXJsKSxlLmxpbmVzLGUuRU9MLGUudmVyc2lvbklkKX1hY2NlcHRNb2RlbENoYW5nZWQoZSx0KXtpZighdGhpcy5fbW9kZWxzW2VdKXJldHVybjt0aGlzLl9tb2RlbHNbZV0ub25FdmVudHModCl9YWNjZXB0UmVtb3ZlZE1vZGVsKGUpe3RoaXMuX21vZGVsc1tlXSYmZGVsZXRlIHRoaXMuX21vZGVsc1tlXX1jb21wdXRlVW5pY29kZUhpZ2hsaWdodHMoZSx0LG4pe3JldHVybiBIbih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IHI9dGhpcy5fZ2V0TW9kZWwoZSk7cmV0dXJuIHI/am4uY29tcHV0ZVVuaWNvZGVIaWdobGlnaHRzKHIsdCxuKTp7cmFuZ2VzOltdLGhhc01vcmU6ITEsYW1iaWd1b3VzQ2hhcmFjdGVyQ291bnQ6MCxpbnZpc2libGVDaGFyYWN0ZXJDb3VudDowLG5vbkJhc2ljQXNjaWlDaGFyYWN0ZXJDb3VudDowfX0pKX1jb21wdXRlRGlmZihlLHQsbixyKXtyZXR1cm4gSG4odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCBpPXRoaXMuX2dldE1vZGVsKGUpLG89dGhpcy5fZ2V0TW9kZWwodCk7cmV0dXJuIGkmJm8/Sm4uY29tcHV0ZURpZmYoaSxvLG4scik6bnVsbH0pKX1zdGF0aWMgY29tcHV0ZURpZmYoZSx0LG4scil7Y29uc3QgaT1lLmdldExpbmVzQ29udGVudCgpLG89dC5nZXRMaW5lc0NvbnRlbnQoKSxzPW5ldyBhdChpLG8se3Nob3VsZENvbXB1dGVDaGFyQ2hhbmdlczohMCxzaG91bGRQb3N0UHJvY2Vzc0NoYXJDaGFuZ2VzOiEwLHNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlOm4sc2hvdWxkTWFrZVByZXR0eURpZmY6ITAsbWF4Q29tcHV0YXRpb25UaW1lOnJ9KS5jb21wdXRlRGlmZigpLGE9IShzLmNoYW5nZXMubGVuZ3RoPjApJiZ0aGlzLl9tb2RlbHNBcmVJZGVudGljYWwoZSx0KTtyZXR1cm57cXVpdEVhcmx5OnMucXVpdEVhcmx5LGlkZW50aWNhbDphLGNoYW5nZXM6cy5jaGFuZ2VzfX1zdGF0aWMgX21vZGVsc0FyZUlkZW50aWNhbChlLHQpe2NvbnN0IG49ZS5nZXRMaW5lQ291bnQoKTtpZihuIT09dC5nZXRMaW5lQ291bnQoKSlyZXR1cm4hMTtmb3IobGV0IHI9MTtyPD1uO3IrKyl7aWYoZS5nZXRMaW5lQ29udGVudChyKSE9PXQuZ2V0TGluZUNvbnRlbnQocikpcmV0dXJuITF9cmV0dXJuITB9Y29tcHV0ZU1vcmVNaW5pbWFsRWRpdHMoZSx0KXtyZXR1cm4gSG4odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCBuPXRoaXMuX2dldE1vZGVsKGUpO2lmKCFuKXJldHVybiB0O2NvbnN0IHI9W107bGV0IGk7dD10LnNsaWNlKDApLnNvcnQoKChlLHQpPT57aWYoZS5yYW5nZSYmdC5yYW5nZSlyZXR1cm4gdHQuY29tcGFyZVJhbmdlc1VzaW5nU3RhcnRzKGUucmFuZ2UsdC5yYW5nZSk7cmV0dXJuKGUucmFuZ2U/MDoxKS0odC5yYW5nZT8wOjEpfSkpO2ZvcihsZXR7cmFuZ2U6ZSx0ZXh0Om8sZW9sOnN9b2YgdCl7aWYoIm51bWJlciI9PXR5cGVvZiBzJiYoaT1zKSx0dC5pc0VtcHR5KGUpJiYhbyljb250aW51ZTtjb25zdCB0PW4uZ2V0VmFsdWVJblJhbmdlKGUpO2lmKG89by5yZXBsYWNlKC9cclxufFxufFxyL2csbi5lb2wpLHQ9PT1vKWNvbnRpbnVlO2lmKE1hdGgubWF4KG8ubGVuZ3RoLHQubGVuZ3RoKT5Kbi5fZGlmZkxpbWl0KXtyLnB1c2goe3JhbmdlOmUsdGV4dDpvfSk7Y29udGludWV9Y29uc3QgYT1tZSh0LG8sITEpLGw9bi5vZmZzZXRBdCh0dC5saWZ0KGUpLmdldFN0YXJ0UG9zaXRpb24oKSk7Zm9yKGNvbnN0IGUgb2YgYSl7Y29uc3QgdD1uLnBvc2l0aW9uQXQobCtlLm9yaWdpbmFsU3RhcnQpLGk9bi5wb3NpdGlvbkF0KGwrZS5vcmlnaW5hbFN0YXJ0K2Uub3JpZ2luYWxMZW5ndGgpLHM9e3RleHQ6by5zdWJzdHIoZS5tb2RpZmllZFN0YXJ0LGUubW9kaWZpZWRMZW5ndGgpLHJhbmdlOntzdGFydExpbmVOdW1iZXI6dC5saW5lTnVtYmVyLHN0YXJ0Q29sdW1uOnQuY29sdW1uLGVuZExpbmVOdW1iZXI6aS5saW5lTnVtYmVyLGVuZENvbHVtbjppLmNvbHVtbn19O24uZ2V0VmFsdWVJblJhbmdlKHMucmFuZ2UpIT09cy50ZXh0JiZyLnB1c2gocyl9fXJldHVybiJudW1iZXIiPT10eXBlb2YgaSYmci5wdXNoKHtlb2w6aSx0ZXh0OiIiLHJhbmdlOntzdGFydExpbmVOdW1iZXI6MCxzdGFydENvbHVtbjowLGVuZExpbmVOdW1iZXI6MCxlbmRDb2x1bW46MH19KSxyfSkpfWNvbXB1dGVMaW5rcyhlKXtyZXR1cm4gSG4odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCB0PXRoaXMuX2dldE1vZGVsKGUpO3JldHVybiB0P2Z1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5nZXRMaW5lQ291bnQmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmdldExpbmVDb250ZW50P0V0LmNvbXB1dGVMaW5rcyhlKTpbXX0odCk6bnVsbH0pKX10ZXh0dWFsU3VnZ2VzdChlLHQsbixyKXtyZXR1cm4gSG4odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCBpPW5ldyBQKCEwKSxvPW5ldyBSZWdFeHAobixyKSxzPW5ldyBTZXQ7ZTpmb3IoY29uc3QgbiBvZiBlKXtjb25zdCBlPXRoaXMuX2dldE1vZGVsKG4pO2lmKGUpZm9yKGNvbnN0IG4gb2YgZS53b3JkcyhvKSlpZihuIT09dCYmaXNOYU4oTnVtYmVyKG4pKSYmKHMuYWRkKG4pLHMuc2l6ZT5Kbi5fc3VnZ2VzdGlvbnNMaW1pdCkpYnJlYWsgZX1yZXR1cm57d29yZHM6QXJyYXkuZnJvbShzKSxkdXJhdGlvbjppLmVsYXBzZWQoKX19KSl9Y29tcHV0ZVdvcmRSYW5nZXMoZSx0LG4scil7cmV0dXJuIEhuKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgaT10aGlzLl9nZXRNb2RlbChlKTtpZighaSlyZXR1cm4gT2JqZWN0LmNyZWF0ZShudWxsKTtjb25zdCBvPW5ldyBSZWdFeHAobixyKSxzPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBlPXQuc3RhcnRMaW5lTnVtYmVyO2U8dC5lbmRMaW5lTnVtYmVyO2UrKyl7Y29uc3QgdD1pLmdldExpbmVXb3JkcyhlLG8pO2Zvcihjb25zdCBuIG9mIHQpe2lmKCFpc05hTihOdW1iZXIobi53b3JkKSkpY29udGludWU7bGV0IHQ9c1tuLndvcmRdO3R8fCh0PVtdLHNbbi53b3JkXT10KSx0LnB1c2goe3N0YXJ0TGluZU51bWJlcjplLHN0YXJ0Q29sdW1uOm4uc3RhcnRDb2x1bW4sZW5kTGluZU51bWJlcjplLGVuZENvbHVtbjpuLmVuZENvbHVtbn0pfX1yZXR1cm4gc30pKX1uYXZpZ2F0ZVZhbHVlU2V0KGUsdCxuLHIsaSl7cmV0dXJuIEhuKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3Qgbz10aGlzLl9nZXRNb2RlbChlKTtpZighbylyZXR1cm4gbnVsbDtjb25zdCBzPW5ldyBSZWdFeHAocixpKTt0LnN0YXJ0Q29sdW1uPT09dC5lbmRDb2x1bW4mJih0PXtzdGFydExpbmVOdW1iZXI6dC5zdGFydExpbmVOdW1iZXIsc3RhcnRDb2x1bW46dC5zdGFydENvbHVtbixlbmRMaW5lTnVtYmVyOnQuZW5kTGluZU51bWJlcixlbmRDb2x1bW46dC5lbmRDb2x1bW4rMX0pO2NvbnN0IGE9by5nZXRWYWx1ZUluUmFuZ2UodCksbD1vLmdldFdvcmRBdFBvc2l0aW9uKHtsaW5lTnVtYmVyOnQuc3RhcnRMaW5lTnVtYmVyLGNvbHVtbjp0LnN0YXJ0Q29sdW1ufSxzKTtpZighbClyZXR1cm4gbnVsbDtjb25zdCBjPW8uZ2V0VmFsdWVJblJhbmdlKGwpO3JldHVybiBGdC5JTlNUQU5DRS5uYXZpZ2F0ZVZhbHVlU2V0KHQsYSxsLGMsbil9KSl9bG9hZEZvcmVpZ25Nb2R1bGUoZSx0LG4pe2NvbnN0IHI9ZnVuY3Rpb24oZSx0KXtjb25zdCBuPWU9PmZ1bmN0aW9uKCl7Y29uc3Qgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIHQoZSxuKX0scj17fTtmb3IoY29uc3QgdCBvZiBlKXJbdF09bih0KTtyZXR1cm4gcn0obiwoKGUsdCk9PnRoaXMuX2hvc3QuZmhyKGUsdCkpKSxpPXtob3N0OnIsZ2V0TWlycm9yTW9kZWxzOigpPT50aGlzLl9nZXRNb2RlbHMoKX07cmV0dXJuIHRoaXMuX2ZvcmVpZ25Nb2R1bGVGYWN0b3J5Pyh0aGlzLl9mb3JlaWduTW9kdWxlPXRoaXMuX2ZvcmVpZ25Nb2R1bGVGYWN0b3J5KGksdCksUHJvbWlzZS5yZXNvbHZlKCQodGhpcy5fZm9yZWlnbk1vZHVsZSkpKTpQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdXNhZ2UiKSl9Zm1yKGUsdCl7aWYoIXRoaXMuX2ZvcmVpZ25Nb2R1bGV8fCJmdW5jdGlvbiIhPXR5cGVvZiB0aGlzLl9mb3JlaWduTW9kdWxlW2VdKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIk1pc3NpbmcgcmVxdWVzdEhhbmRsZXIgb3IgbWV0aG9kOiAiK2UpKTt0cnl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9mb3JlaWduTW9kdWxlW2VdLmFwcGx5KHRoaXMuX2ZvcmVpZ25Nb2R1bGUsdCkpfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX19fUpuLl9kaWZmTGltaXQ9MWU1LEpuLl9zdWdnZXN0aW9uc0xpbWl0PTFlNCwiZnVuY3Rpb24iPT10eXBlb2YgaW1wb3J0U2NyaXB0cyYmKEYubW9uYWNvPXtlZGl0b3I6dm9pZCAwLGxhbmd1YWdlczp2b2lkIDAsQ2FuY2VsbGF0aW9uVG9rZW5Tb3VyY2U6VHQsRW1pdHRlcjpLLEtleUNvZGU6Zm4sS2V5TW9kOlVuLFBvc2l0aW9uOmV0LFJhbmdlOnR0LFNlbGVjdGlvbjpVdCxTZWxlY3Rpb25EaXJlY3Rpb246Rm4sTWFya2VyU2V2ZXJpdHk6Z24sTWFya2VyVGFnOmJuLFVyaTpCZSxUb2tlbjpWbn0pO2xldCBYbj0hMTtmdW5jdGlvbiBZbihlKXtpZihYbilyZXR1cm47WG49ITA7Y29uc3QgdD1uZXcgY2UoKGU9PntzZWxmLnBvc3RNZXNzYWdlKGUpfSksKHQ9Pm5ldyBKbih0LGUpKSk7c2VsZi5vbm1lc3NhZ2U9ZT0+e3Qub25tZXNzYWdlKGUuZGF0YSl9fQovKiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBWZXJzaW9uOiAwLjM0LjAoZjFhZDk1MWYyNmFmYjNiYTY0MzI3YjcwYzMwNTZjYWJjMzg1MTQ5MikKICAgICAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZQogICAgICogaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9tb25hY28tZWRpdG9yL2Jsb2IvbWFpbi9MSUNFTlNFLnR4dAogICAgICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCnZhciBabixRbjtzZWxmLm9ubWVzc2FnZT1lPT57WG58fFluKG51bGwpfSwoUW49Wm58fChabj17fSkpW1FuLklkZW50PTBdPSJJZGVudCIsUW5bUW4uQXRLZXl3b3JkPTFdPSJBdEtleXdvcmQiLFFuW1FuLlN0cmluZz0yXT0iU3RyaW5nIixRbltRbi5CYWRTdHJpbmc9M109IkJhZFN0cmluZyIsUW5bUW4uVW5xdW90ZWRTdHJpbmc9NF09IlVucXVvdGVkU3RyaW5nIixRbltRbi5IYXNoPTVdPSJIYXNoIixRbltRbi5OdW09Nl09Ik51bSIsUW5bUW4uUGVyY2VudGFnZT03XT0iUGVyY2VudGFnZSIsUW5bUW4uRGltZW5zaW9uPThdPSJEaW1lbnNpb24iLFFuW1FuLlVuaWNvZGVSYW5nZT05XT0iVW5pY29kZVJhbmdlIixRbltRbi5DRE89MTBdPSJDRE8iLFFuW1FuLkNEQz0xMV09IkNEQyIsUW5bUW4uQ29sb249MTJdPSJDb2xvbiIsUW5bUW4uU2VtaUNvbG9uPTEzXT0iU2VtaUNvbG9uIixRbltRbi5DdXJseUw9MTRdPSJDdXJseUwiLFFuW1FuLkN1cmx5Uj0xNV09IkN1cmx5UiIsUW5bUW4uUGFyZW50aGVzaXNMPTE2XT0iUGFyZW50aGVzaXNMIixRbltRbi5QYXJlbnRoZXNpc1I9MTddPSJQYXJlbnRoZXNpc1IiLFFuW1FuLkJyYWNrZXRMPTE4XT0iQnJhY2tldEwiLFFuW1FuLkJyYWNrZXRSPTE5XT0iQnJhY2tldFIiLFFuW1FuLldoaXRlc3BhY2U9MjBdPSJXaGl0ZXNwYWNlIixRbltRbi5JbmNsdWRlcz0yMV09IkluY2x1ZGVzIixRbltRbi5EYXNobWF0Y2g9MjJdPSJEYXNobWF0Y2giLFFuW1FuLlN1YnN0cmluZ09wZXJhdG9yPTIzXT0iU3Vic3RyaW5nT3BlcmF0b3IiLFFuW1FuLlByZWZpeE9wZXJhdG9yPTI0XT0iUHJlZml4T3BlcmF0b3IiLFFuW1FuLlN1ZmZpeE9wZXJhdG9yPTI1XT0iU3VmZml4T3BlcmF0b3IiLFFuW1FuLkRlbGltPTI2XT0iRGVsaW0iLFFuW1FuLkVNUz0yN109IkVNUyIsUW5bUW4uRVhTPTI4XT0iRVhTIixRbltRbi5MZW5ndGg9MjldPSJMZW5ndGgiLFFuW1FuLkFuZ2xlPTMwXT0iQW5nbGUiLFFuW1FuLlRpbWU9MzFdPSJUaW1lIixRbltRbi5GcmVxPTMyXT0iRnJlcSIsUW5bUW4uRXhjbGFtYXRpb249MzNdPSJFeGNsYW1hdGlvbiIsUW5bUW4uUmVzb2x1dGlvbj0zNF09IlJlc29sdXRpb24iLFFuW1FuLkNvbW1hPTM1XT0iQ29tbWEiLFFuW1FuLkNoYXJzZXQ9MzZdPSJDaGFyc2V0IixRbltRbi5Fc2NhcGVkSmF2YVNjcmlwdD0zN109IkVzY2FwZWRKYXZhU2NyaXB0IixRbltRbi5CYWRFc2NhcGVkSmF2YVNjcmlwdD0zOF09IkJhZEVzY2FwZWRKYXZhU2NyaXB0IixRbltRbi5Db21tZW50PTM5XT0iQ29tbWVudCIsUW5bUW4uU2luZ2xlTGluZUNvbW1lbnQ9NDBdPSJTaW5nbGVMaW5lQ29tbWVudCIsUW5bUW4uRU9GPTQxXT0iRU9GIixRbltRbi5DdXN0b21Ub2tlbj00Ml09IkN1c3RvbVRva2VuIjt2YXIgZXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuc291cmNlPWUsdGhpcy5sZW49ZS5sZW5ndGgsdGhpcy5wb3NpdGlvbj0wfXJldHVybiBlLnByb3RvdHlwZS5zdWJzdHJpbmc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9dGhpcy5wb3NpdGlvbiksdGhpcy5zb3VyY2Uuc3Vic3RyaW5nKGUsdCl9LGUucHJvdG90eXBlLmVvcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbjw9dGhpcy5wb3NpdGlvbn0sZS5wcm90b3R5cGUucG9zPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9zaXRpb259LGUucHJvdG90eXBlLmdvQmFja1RvPWZ1bmN0aW9uKGUpe3RoaXMucG9zaXRpb249ZX0sZS5wcm90b3R5cGUuZ29CYWNrPWZ1bmN0aW9uKGUpe3RoaXMucG9zaXRpb24tPWV9LGUucHJvdG90eXBlLmFkdmFuY2U9ZnVuY3Rpb24oZSl7dGhpcy5wb3NpdGlvbis9ZX0sZS5wcm90b3R5cGUubmV4dENoYXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uKyspfHwwfSxlLnByb3RvdHlwZS5wZWVrQ2hhcj1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9MCksdGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uK2UpfHwwfSxlLnByb3RvdHlwZS5sb29rYmFja0NoYXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPTApLHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbi1lKXx8MH0sZS5wcm90b3R5cGUuYWR2YW5jZUlmQ2hhcj1mdW5jdGlvbihlKXtyZXR1cm4gZT09PXRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbikmJih0aGlzLnBvc2l0aW9uKyssITApfSxlLnByb3RvdHlwZS5hZHZhbmNlSWZDaGFycz1mdW5jdGlvbihlKXtpZih0aGlzLnBvc2l0aW9uK2UubGVuZ3RoPnRoaXMuc291cmNlLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylpZih0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMucG9zaXRpb24rdCkhPT1lW3RdKXJldHVybiExO3JldHVybiB0aGlzLmFkdmFuY2UodCksITB9LGUucHJvdG90eXBlLmFkdmFuY2VXaGlsZUNoYXI9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMucG9zaXRpb247dGhpcy5wb3NpdGlvbjx0aGlzLmxlbiYmZSh0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMucG9zaXRpb24pKTspdGhpcy5wb3NpdGlvbisrO3JldHVybiB0aGlzLnBvc2l0aW9uLXR9LGV9KCksdHI9ImEiLmNoYXJDb2RlQXQoMCksbnI9ImYiLmNoYXJDb2RlQXQoMCkscnI9InoiLmNoYXJDb2RlQXQoMCksaXI9IkEiLmNoYXJDb2RlQXQoMCksb3I9IkYiLmNoYXJDb2RlQXQoMCksc3I9IloiLmNoYXJDb2RlQXQoMCksYXI9IjAiLmNoYXJDb2RlQXQoMCksbHI9IjkiLmNoYXJDb2RlQXQoMCksY3I9In4iLmNoYXJDb2RlQXQoMCksaHI9Il4iLmNoYXJDb2RlQXQoMCksZHI9Ij0iLmNoYXJDb2RlQXQoMCkscHI9InwiLmNoYXJDb2RlQXQoMCksdXI9Ii0iLmNoYXJDb2RlQXQoMCksbXI9Il8iLmNoYXJDb2RlQXQoMCksZnI9IiUiLmNoYXJDb2RlQXQoMCksZ3I9IioiLmNoYXJDb2RlQXQoMCksYnI9IigiLmNoYXJDb2RlQXQoMCkseXI9IikiLmNoYXJDb2RlQXQoMCksdnI9IjwiLmNoYXJDb2RlQXQoMCksd3I9Ij4iLmNoYXJDb2RlQXQoMCkseHI9IkAiLmNoYXJDb2RlQXQoMCksU3I9IiMiLmNoYXJDb2RlQXQoMCksQ3I9IiQiLmNoYXJDb2RlQXQoMCksa3I9IlxcIi5jaGFyQ29kZUF0KDApLF9yPSIvIi5jaGFyQ29kZUF0KDApLEVyPSJcbiIuY2hhckNvZGVBdCgwKSxGcj0iXHIiLmNoYXJDb2RlQXQoMCksUnI9IlxmIi5jaGFyQ29kZUF0KDApLERyPSciJy5jaGFyQ29kZUF0KDApLE5yPSInIi5jaGFyQ29kZUF0KDApLFRyPSIgIi5jaGFyQ29kZUF0KDApLEFyPSJcdCIuY2hhckNvZGVBdCgwKSx6cj0iOyIuY2hhckNvZGVBdCgwKSxJcj0iOiIuY2hhckNvZGVBdCgwKSxNcj0ieyIuY2hhckNvZGVBdCgwKSxQcj0ifSIuY2hhckNvZGVBdCgwKSxPcj0iWyIuY2hhckNvZGVBdCgwKSxMcj0iXSIuY2hhckNvZGVBdCgwKSxXcj0iLCIuY2hhckNvZGVBdCgwKSxWcj0iLiIuY2hhckNvZGVBdCgwKSxVcj0iISIuY2hhckNvZGVBdCgwKSxLcj0iPyIuY2hhckNvZGVBdCgwKSxCcj0iKyIuY2hhckNvZGVBdCgwKSxqcj17fTtqclt6cl09Wm4uU2VtaUNvbG9uLGpyW0lyXT1abi5Db2xvbixqcltNcl09Wm4uQ3VybHlMLGpyW1ByXT1abi5DdXJseVIsanJbTHJdPVpuLkJyYWNrZXRSLGpyW09yXT1abi5CcmFja2V0TCxqclticl09Wm4uUGFyZW50aGVzaXNMLGpyW3lyXT1abi5QYXJlbnRoZXNpc1IsanJbV3JdPVpuLkNvbW1hO3ZhciBxcj17fTtxci5lbT1abi5FTVMscXIuZXg9Wm4uRVhTLHFyLnB4PVpuLkxlbmd0aCxxci5jbT1abi5MZW5ndGgscXIubW09Wm4uTGVuZ3RoLHFyLmluPVpuLkxlbmd0aCxxci5wdD1abi5MZW5ndGgscXIucGM9Wm4uTGVuZ3RoLHFyLmRlZz1abi5BbmdsZSxxci5yYWQ9Wm4uQW5nbGUscXIuZ3JhZD1abi5BbmdsZSxxci5tcz1abi5UaW1lLHFyLnM9Wm4uVGltZSxxci5oej1abi5GcmVxLHFyLmtoej1abi5GcmVxLHFyWyIlIl09Wm4uUGVyY2VudGFnZSxxci5mcj1abi5QZXJjZW50YWdlLHFyLmRwaT1abi5SZXNvbHV0aW9uLHFyLmRwY209Wm4uUmVzb2x1dGlvbjt2YXIgJHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dGhpcy5zdHJlYW09bmV3IGVyKCIiKSx0aGlzLmlnbm9yZUNvbW1lbnQ9ITAsdGhpcy5pZ25vcmVXaGl0ZXNwYWNlPSEwLHRoaXMuaW5VUkw9ITF9cmV0dXJuIGUucHJvdG90eXBlLnNldFNvdXJjZT1mdW5jdGlvbihlKXt0aGlzLnN0cmVhbT1uZXcgZXIoZSl9LGUucHJvdG90eXBlLmZpbmlzaFRva2VuPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm57b2Zmc2V0OmUsbGVuOnRoaXMuc3RyZWFtLnBvcygpLWUsdHlwZTp0LHRleHQ6bnx8dGhpcy5zdHJlYW0uc3Vic3RyaW5nKGUpfX0sZS5wcm90b3R5cGUuc3Vic3RyaW5nPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuc3RyZWFtLnN1YnN0cmluZyhlLGUrdCl9LGUucHJvdG90eXBlLnBvcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN0cmVhbS5wb3MoKX0sZS5wcm90b3R5cGUuZ29CYWNrVG89ZnVuY3Rpb24oZSl7dGhpcy5zdHJlYW0uZ29CYWNrVG8oZSl9LGUucHJvdG90eXBlLnNjYW5VbnF1b3RlZFN0cmluZz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc3RyZWFtLnBvcygpLHQ9W107cmV0dXJuIHRoaXMuX3VucXVvdGVkU3RyaW5nKHQpP3RoaXMuZmluaXNoVG9rZW4oZSxabi5VbnF1b3RlZFN0cmluZyx0LmpvaW4oIiIpKTpudWxsfSxlLnByb3RvdHlwZS5zY2FuPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy50cml2aWEoKTtpZihudWxsIT09ZSlyZXR1cm4gZTt2YXIgdD10aGlzLnN0cmVhbS5wb3MoKTtyZXR1cm4gdGhpcy5zdHJlYW0uZW9zKCk/dGhpcy5maW5pc2hUb2tlbih0LFpuLkVPRik6dGhpcy5zY2FuTmV4dCh0KX0sZS5wcm90b3R5cGUudHJ5U2NhblVuaWNvZGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnN0cmVhbS5wb3MoKTtpZighdGhpcy5zdHJlYW0uZW9zKCkmJnRoaXMuX3VuaWNvZGVSYW5nZSgpKXJldHVybiB0aGlzLmZpbmlzaFRva2VuKGUsWm4uVW5pY29kZVJhbmdlKTt0aGlzLnN0cmVhbS5nb0JhY2tUbyhlKX0sZS5wcm90b3R5cGUuc2Nhbk5leHQ9ZnVuY3Rpb24oZSl7aWYodGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcnMoW3ZyLFVyLHVyLHVyXSkpcmV0dXJuIHRoaXMuZmluaXNoVG9rZW4oZSxabi5DRE8pO2lmKHRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXJzKFt1cix1cix3cl0pKXJldHVybiB0aGlzLmZpbmlzaFRva2VuKGUsWm4uQ0RDKTt2YXIgdD1bXTtpZih0aGlzLmlkZW50KHQpKXJldHVybiB0aGlzLmZpbmlzaFRva2VuKGUsWm4uSWRlbnQsdC5qb2luKCIiKSk7aWYodGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcih4cikpe2lmKHQ9WyJAIl0sdGhpcy5fbmFtZSh0KSl7dmFyIG49dC5qb2luKCIiKTtyZXR1cm4iQGNoYXJzZXQiPT09bj90aGlzLmZpbmlzaFRva2VuKGUsWm4uQ2hhcnNldCxuKTp0aGlzLmZpbmlzaFRva2VuKGUsWm4uQXRLZXl3b3JkLG4pfXJldHVybiB0aGlzLmZpbmlzaFRva2VuKGUsWm4uRGVsaW0pfWlmKHRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXIoU3IpKXJldHVybiB0PVsiIyJdLHRoaXMuX25hbWUodCk/dGhpcy5maW5pc2hUb2tlbihlLFpuLkhhc2gsdC5qb2luKCIiKSk6dGhpcy5maW5pc2hUb2tlbihlLFpuLkRlbGltKTtpZih0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFyKFVyKSlyZXR1cm4gdGhpcy5maW5pc2hUb2tlbihlLFpuLkV4Y2xhbWF0aW9uKTtpZih0aGlzLl9udW1iZXIoKSl7dmFyIHI9dGhpcy5zdHJlYW0ucG9zKCk7aWYodD1bdGhpcy5zdHJlYW0uc3Vic3RyaW5nKGUscildLHRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXIoZnIpKXJldHVybiB0aGlzLmZpbmlzaFRva2VuKGUsWm4uUGVyY2VudGFnZSk7aWYodGhpcy5pZGVudCh0KSl7dmFyIGk9dGhpcy5zdHJlYW0uc3Vic3RyaW5nKHIpLnRvTG93ZXJDYXNlKCksbz1xcltpXTtyZXR1cm4gdm9pZCAwIT09bz90aGlzLmZpbmlzaFRva2VuKGUsbyx0LmpvaW4oIiIpKTp0aGlzLmZpbmlzaFRva2VuKGUsWm4uRGltZW5zaW9uLHQuam9pbigiIikpfXJldHVybiB0aGlzLmZpbmlzaFRva2VuKGUsWm4uTnVtKX10PVtdO3ZhciBzPXRoaXMuX3N0cmluZyh0KTtyZXR1cm4gbnVsbCE9PXM/dGhpcy5maW5pc2hUb2tlbihlLHMsdC5qb2luKCIiKSk6dm9pZCAwIT09KHM9anJbdGhpcy5zdHJlYW0ucGVla0NoYXIoKV0pPyh0aGlzLnN0cmVhbS5hZHZhbmNlKDEpLHRoaXMuZmluaXNoVG9rZW4oZSxzKSk6dGhpcy5zdHJlYW0ucGVla0NoYXIoMCk9PT1jciYmdGhpcy5zdHJlYW0ucGVla0NoYXIoMSk9PT1kcj8odGhpcy5zdHJlYW0uYWR2YW5jZSgyKSx0aGlzLmZpbmlzaFRva2VuKGUsWm4uSW5jbHVkZXMpKTp0aGlzLnN0cmVhbS5wZWVrQ2hhcigwKT09PXByJiZ0aGlzLnN0cmVhbS5wZWVrQ2hhcigxKT09PWRyPyh0aGlzLnN0cmVhbS5hZHZhbmNlKDIpLHRoaXMuZmluaXNoVG9rZW4oZSxabi5EYXNobWF0Y2gpKTp0aGlzLnN0cmVhbS5wZWVrQ2hhcigwKT09PWdyJiZ0aGlzLnN0cmVhbS5wZWVrQ2hhcigxKT09PWRyPyh0aGlzLnN0cmVhbS5hZHZhbmNlKDIpLHRoaXMuZmluaXNoVG9rZW4oZSxabi5TdWJzdHJpbmdPcGVyYXRvcikpOnRoaXMuc3RyZWFtLnBlZWtDaGFyKDApPT09aHImJnRoaXMuc3RyZWFtLnBlZWtDaGFyKDEpPT09ZHI/KHRoaXMuc3RyZWFtLmFkdmFuY2UoMiksdGhpcy5maW5pc2hUb2tlbihlLFpuLlByZWZpeE9wZXJhdG9yKSk6dGhpcy5zdHJlYW0ucGVla0NoYXIoMCk9PT1DciYmdGhpcy5zdHJlYW0ucGVla0NoYXIoMSk9PT1kcj8odGhpcy5zdHJlYW0uYWR2YW5jZSgyKSx0aGlzLmZpbmlzaFRva2VuKGUsWm4uU3VmZml4T3BlcmF0b3IpKToodGhpcy5zdHJlYW0ubmV4dENoYXIoKSx0aGlzLmZpbmlzaFRva2VuKGUsWm4uRGVsaW0pKX0sZS5wcm90b3R5cGUudHJpdmlhPWZ1bmN0aW9uKCl7Zm9yKDs7KXt2YXIgZT10aGlzLnN0cmVhbS5wb3MoKTtpZih0aGlzLl93aGl0ZXNwYWNlKCkpe2lmKCF0aGlzLmlnbm9yZVdoaXRlc3BhY2UpcmV0dXJuIHRoaXMuZmluaXNoVG9rZW4oZSxabi5XaGl0ZXNwYWNlKX1lbHNle2lmKCF0aGlzLmNvbW1lbnQoKSlyZXR1cm4gbnVsbDtpZighdGhpcy5pZ25vcmVDb21tZW50KXJldHVybiB0aGlzLmZpbmlzaFRva2VuKGUsWm4uQ29tbWVudCl9fX0sZS5wcm90b3R5cGUuY29tbWVudD1mdW5jdGlvbigpe2lmKHRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXJzKFtfcixncl0pKXt2YXIgZT0hMSx0PSExO3JldHVybiB0aGlzLnN0cmVhbS5hZHZhbmNlV2hpbGVDaGFyKChmdW5jdGlvbihuKXtyZXR1cm4gdCYmbj09PV9yPyhlPSEwLCExKToodD1uPT09Z3IsITApfSkpLGUmJnRoaXMuc3RyZWFtLmFkdmFuY2UoMSksITB9cmV0dXJuITF9LGUucHJvdG90eXBlLl9udW1iZXI9ZnVuY3Rpb24oKXt2YXIgZSx0PTA7cmV0dXJuIHRoaXMuc3RyZWFtLnBlZWtDaGFyKCk9PT1WciYmKHQ9MSksKGU9dGhpcy5zdHJlYW0ucGVla0NoYXIodCkpPj1hciYmZTw9bHImJih0aGlzLnN0cmVhbS5hZHZhbmNlKHQrMSksdGhpcy5zdHJlYW0uYWR2YW5jZVdoaWxlQ2hhcigoZnVuY3Rpb24oZSl7cmV0dXJuIGU+PWFyJiZlPD1scnx8MD09PXQmJmU9PT1Wcn0pKSwhMCl9LGUucHJvdG90eXBlLl9uZXdsaW5lPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuc3RyZWFtLnBlZWtDaGFyKCk7c3dpdGNoKHQpe2Nhc2UgRnI6Y2FzZSBScjpjYXNlIEVyOnJldHVybiB0aGlzLnN0cmVhbS5hZHZhbmNlKDEpLGUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKSx0PT09RnImJnRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXIoRXIpJiZlLnB1c2goIlxuIiksITB9cmV0dXJuITF9LGUucHJvdG90eXBlLl9lc2NhcGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnN0cmVhbS5wZWVrQ2hhcigpO2lmKG49PT1rcil7dGhpcy5zdHJlYW0uYWR2YW5jZSgxKSxuPXRoaXMuc3RyZWFtLnBlZWtDaGFyKCk7Zm9yKHZhciByPTA7cjw2JiYobj49YXImJm48PWxyfHxuPj10ciYmbjw9bnJ8fG4+PWlyJiZuPD1vcik7KXRoaXMuc3RyZWFtLmFkdmFuY2UoMSksbj10aGlzLnN0cmVhbS5wZWVrQ2hhcigpLHIrKztpZihyPjApe3RyeXt2YXIgaT1wYXJzZUludCh0aGlzLnN0cmVhbS5zdWJzdHJpbmcodGhpcy5zdHJlYW0ucG9zKCktciksMTYpO2kmJmUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGkpKX1jYXRjaChlKXt9cmV0dXJuIG49PT1Ucnx8bj09PUFyP3RoaXMuc3RyZWFtLmFkdmFuY2UoMSk6dGhpcy5fbmV3bGluZShbXSksITB9aWYobiE9PUZyJiZuIT09UnImJm4hPT1FcilyZXR1cm4gdGhpcy5zdHJlYW0uYWR2YW5jZSgxKSxlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShuKSksITA7aWYodClyZXR1cm4gdGhpcy5fbmV3bGluZShlKX1yZXR1cm4hMX0sZS5wcm90b3R5cGUuX3N0cmluZ0NoYXI9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnN0cmVhbS5wZWVrQ2hhcigpO3JldHVybiAwIT09biYmbiE9PWUmJm4hPT1rciYmbiE9PUZyJiZuIT09UnImJm4hPT1FciYmKHRoaXMuc3RyZWFtLmFkdmFuY2UoMSksdC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobikpLCEwKX0sZS5wcm90b3R5cGUuX3N0cmluZz1mdW5jdGlvbihlKXtpZih0aGlzLnN0cmVhbS5wZWVrQ2hhcigpPT09TnJ8fHRoaXMuc3RyZWFtLnBlZWtDaGFyKCk9PT1Ecil7dmFyIHQ9dGhpcy5zdHJlYW0ubmV4dENoYXIoKTtmb3IoZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUodCkpO3RoaXMuX3N0cmluZ0NoYXIodCxlKXx8dGhpcy5fZXNjYXBlKGUsITApOyk7cmV0dXJuIHRoaXMuc3RyZWFtLnBlZWtDaGFyKCk9PT10Pyh0aGlzLnN0cmVhbS5uZXh0Q2hhcigpLGUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKSxabi5TdHJpbmcpOlpuLkJhZFN0cmluZ31yZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuX3VucXVvdGVkQ2hhcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnN0cmVhbS5wZWVrQ2hhcigpO3JldHVybiAwIT09dCYmdCE9PWtyJiZ0IT09TnImJnQhPT1EciYmdCE9PWJyJiZ0IT09eXImJnQhPT1UciYmdCE9PUFyJiZ0IT09RXImJnQhPT1SciYmdCE9PUZyJiYodGhpcy5zdHJlYW0uYWR2YW5jZSgxKSxlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh0KSksITApfSxlLnByb3RvdHlwZS5fdW5xdW90ZWRTdHJpbmc9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PSExO3RoaXMuX3VucXVvdGVkQ2hhcihlKXx8dGhpcy5fZXNjYXBlKGUpOyl0PSEwO3JldHVybiB0fSxlLnByb3RvdHlwZS5fd2hpdGVzcGFjZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN0cmVhbS5hZHZhbmNlV2hpbGVDaGFyKChmdW5jdGlvbihlKXtyZXR1cm4gZT09PVRyfHxlPT09QXJ8fGU9PT1Fcnx8ZT09PVJyfHxlPT09RnJ9KSk+MH0sZS5wcm90b3R5cGUuX25hbWU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PSExO3RoaXMuX2lkZW50Q2hhcihlKXx8dGhpcy5fZXNjYXBlKGUpOyl0PSEwO3JldHVybiB0fSxlLnByb3RvdHlwZS5pZGVudD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnN0cmVhbS5wb3MoKTtpZih0aGlzLl9taW51cyhlKSl7aWYodGhpcy5fbWludXMoZSl8fHRoaXMuX2lkZW50Rmlyc3RDaGFyKGUpfHx0aGlzLl9lc2NhcGUoZSkpe2Zvcig7dGhpcy5faWRlbnRDaGFyKGUpfHx0aGlzLl9lc2NhcGUoZSk7KTtyZXR1cm4hMH19ZWxzZSBpZih0aGlzLl9pZGVudEZpcnN0Q2hhcihlKXx8dGhpcy5fZXNjYXBlKGUpKXtmb3IoO3RoaXMuX2lkZW50Q2hhcihlKXx8dGhpcy5fZXNjYXBlKGUpOyk7cmV0dXJuITB9cmV0dXJuIHRoaXMuc3RyZWFtLmdvQmFja1RvKHQpLCExfSxlLnByb3RvdHlwZS5faWRlbnRGaXJzdENoYXI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zdHJlYW0ucGVla0NoYXIoKTtyZXR1cm4odD09PW1yfHx0Pj10ciYmdDw9cnJ8fHQ+PWlyJiZ0PD1zcnx8dD49MTI4JiZ0PD02NTUzNSkmJih0aGlzLnN0cmVhbS5hZHZhbmNlKDEpLGUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKSwhMCl9LGUucHJvdG90eXBlLl9taW51cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnN0cmVhbS5wZWVrQ2hhcigpO3JldHVybiB0PT09dXImJih0aGlzLnN0cmVhbS5hZHZhbmNlKDEpLGUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKSwhMCl9LGUucHJvdG90eXBlLl9pZGVudENoYXI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zdHJlYW0ucGVla0NoYXIoKTtyZXR1cm4odD09PW1yfHx0PT09dXJ8fHQ+PXRyJiZ0PD1ycnx8dD49aXImJnQ8PXNyfHx0Pj1hciYmdDw9bHJ8fHQ+PTEyOCYmdDw9NjU1MzUpJiYodGhpcy5zdHJlYW0uYWR2YW5jZSgxKSxlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh0KSksITApfSxlLnByb3RvdHlwZS5fdW5pY29kZVJhbmdlPWZ1bmN0aW9uKCl7aWYodGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcihCcikpe3ZhciBlPWZ1bmN0aW9uKGUpe3JldHVybiBlPj1hciYmZTw9bHJ8fGU+PXRyJiZlPD1ucnx8ZT49aXImJmU8PW9yfSx0PXRoaXMuc3RyZWFtLmFkdmFuY2VXaGlsZUNoYXIoZSkrdGhpcy5zdHJlYW0uYWR2YW5jZVdoaWxlQ2hhcigoZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1Lcn0pKTtpZih0Pj0xJiZ0PD02KXtpZighdGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcih1cikpcmV0dXJuITA7dmFyIG49dGhpcy5zdHJlYW0uYWR2YW5jZVdoaWxlQ2hhcihlKTtpZihuPj0xJiZuPD02KXJldHVybiEwfX1yZXR1cm4hMX0sZX0oKTtmdW5jdGlvbiBIcihlLHQpe2lmKGUubGVuZ3RoPHQubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKWlmKGVbbl0hPT10W25dKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIEdyKGUsdCl7dmFyIG49ZS5sZW5ndGgtdC5sZW5ndGg7cmV0dXJuIG4+MD9lLmxhc3RJbmRleE9mKHQpPT09bjowPT09biYmZT09PXR9ZnVuY3Rpb24gSnIoZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9ITApLGU/ZS5sZW5ndGg8MTQwP2U6ZS5zbGljZSgwLDE0MCkrKHQ/IuKApiI6IiIpOiIifWZ1bmN0aW9uIFhyKGUsdCl7Zm9yKHZhciBuPSIiO3Q+MDspMT09KDEmdCkmJihuKz1lKSxlKz1lLHQ+Pj49MTtyZXR1cm4gbn12YXIgWXIsWnIsUXIsZWksdGksbmk9KFlyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKFlyPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKX0pKGUsdCl9LGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcodCkrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9ZX1ZcihlLHQpLGUucHJvdG90eXBlPW51bGw9PT10P09iamVjdC5jcmVhdGUodCk6KG4ucHJvdG90eXBlPXQucHJvdG90eXBlLG5ldyBuKX0pO2Z1bmN0aW9uIHJpKGUsdCl7dmFyIG49bnVsbDtyZXR1cm4hZXx8dDxlLm9mZnNldHx8dD5lLmVuZD9udWxsOihlLmFjY2VwdCgoZnVuY3Rpb24oZSl7cmV0dXJuLTE9PT1lLm9mZnNldCYmLTE9PT1lLmxlbmd0aHx8ZS5vZmZzZXQ8PXQmJmUuZW5kPj10JiYobj9lLmxlbmd0aDw9bi5sZW5ndGgmJihuPWUpOm49ZSwhMCl9KSksbil9ZnVuY3Rpb24gaWkoZSx0KXtmb3IodmFyIG49cmkoZSx0KSxyPVtdO247KXIudW5zaGlmdChuKSxuPW4ucGFyZW50O3JldHVybiByfShRcj1acnx8KFpyPXt9KSlbUXIuVW5kZWZpbmVkPTBdPSJVbmRlZmluZWQiLFFyW1FyLklkZW50aWZpZXI9MV09IklkZW50aWZpZXIiLFFyW1FyLlN0eWxlc2hlZXQ9Ml09IlN0eWxlc2hlZXQiLFFyW1FyLlJ1bGVzZXQ9M109IlJ1bGVzZXQiLFFyW1FyLlNlbGVjdG9yPTRdPSJTZWxlY3RvciIsUXJbUXIuU2ltcGxlU2VsZWN0b3I9NV09IlNpbXBsZVNlbGVjdG9yIixRcltRci5TZWxlY3RvckludGVycG9sYXRpb249Nl09IlNlbGVjdG9ySW50ZXJwb2xhdGlvbiIsUXJbUXIuU2VsZWN0b3JDb21iaW5hdG9yPTddPSJTZWxlY3RvckNvbWJpbmF0b3IiLFFyW1FyLlNlbGVjdG9yQ29tYmluYXRvclBhcmVudD04XT0iU2VsZWN0b3JDb21iaW5hdG9yUGFyZW50IixRcltRci5TZWxlY3RvckNvbWJpbmF0b3JTaWJsaW5nPTldPSJTZWxlY3RvckNvbWJpbmF0b3JTaWJsaW5nIixRcltRci5TZWxlY3RvckNvbWJpbmF0b3JBbGxTaWJsaW5ncz0xMF09IlNlbGVjdG9yQ29tYmluYXRvckFsbFNpYmxpbmdzIixRcltRci5TZWxlY3RvckNvbWJpbmF0b3JTaGFkb3dQaWVyY2luZ0Rlc2NlbmRhbnQ9MTFdPSJTZWxlY3RvckNvbWJpbmF0b3JTaGFkb3dQaWVyY2luZ0Rlc2NlbmRhbnQiLFFyW1FyLlBhZ2U9MTJdPSJQYWdlIixRcltRci5QYWdlQm94TWFyZ2luQm94PTEzXT0iUGFnZUJveE1hcmdpbkJveCIsUXJbUXIuQ2xhc3NTZWxlY3Rvcj0xNF09IkNsYXNzU2VsZWN0b3IiLFFyW1FyLklkZW50aWZpZXJTZWxlY3Rvcj0xNV09IklkZW50aWZpZXJTZWxlY3RvciIsUXJbUXIuRWxlbWVudE5hbWVTZWxlY3Rvcj0xNl09IkVsZW1lbnROYW1lU2VsZWN0b3IiLFFyW1FyLlBzZXVkb1NlbGVjdG9yPTE3XT0iUHNldWRvU2VsZWN0b3IiLFFyW1FyLkF0dHJpYnV0ZVNlbGVjdG9yPTE4XT0iQXR0cmlidXRlU2VsZWN0b3IiLFFyW1FyLkRlY2xhcmF0aW9uPTE5XT0iRGVjbGFyYXRpb24iLFFyW1FyLkRlY2xhcmF0aW9ucz0yMF09IkRlY2xhcmF0aW9ucyIsUXJbUXIuUHJvcGVydHk9MjFdPSJQcm9wZXJ0eSIsUXJbUXIuRXhwcmVzc2lvbj0yMl09IkV4cHJlc3Npb24iLFFyW1FyLkJpbmFyeUV4cHJlc3Npb249MjNdPSJCaW5hcnlFeHByZXNzaW9uIixRcltRci5UZXJtPTI0XT0iVGVybSIsUXJbUXIuT3BlcmF0b3I9MjVdPSJPcGVyYXRvciIsUXJbUXIuVmFsdWU9MjZdPSJWYWx1ZSIsUXJbUXIuU3RyaW5nTGl0ZXJhbD0yN109IlN0cmluZ0xpdGVyYWwiLFFyW1FyLlVSSUxpdGVyYWw9MjhdPSJVUklMaXRlcmFsIixRcltRci5Fc2NhcGVkVmFsdWU9MjldPSJFc2NhcGVkVmFsdWUiLFFyW1FyLkZ1bmN0aW9uPTMwXT0iRnVuY3Rpb24iLFFyW1FyLk51bWVyaWNWYWx1ZT0zMV09Ik51bWVyaWNWYWx1ZSIsUXJbUXIuSGV4Q29sb3JWYWx1ZT0zMl09IkhleENvbG9yVmFsdWUiLFFyW1FyLlJhdGlvVmFsdWU9MzNdPSJSYXRpb1ZhbHVlIixRcltRci5NaXhpbkRlY2xhcmF0aW9uPTM0XT0iTWl4aW5EZWNsYXJhdGlvbiIsUXJbUXIuTWl4aW5SZWZlcmVuY2U9MzVdPSJNaXhpblJlZmVyZW5jZSIsUXJbUXIuVmFyaWFibGVOYW1lPTM2XT0iVmFyaWFibGVOYW1lIixRcltRci5WYXJpYWJsZURlY2xhcmF0aW9uPTM3XT0iVmFyaWFibGVEZWNsYXJhdGlvbiIsUXJbUXIuUHJpbz0zOF09IlByaW8iLFFyW1FyLkludGVycG9sYXRpb249MzldPSJJbnRlcnBvbGF0aW9uIixRcltRci5OZXN0ZWRQcm9wZXJ0aWVzPTQwXT0iTmVzdGVkUHJvcGVydGllcyIsUXJbUXIuRXh0ZW5kc1JlZmVyZW5jZT00MV09IkV4dGVuZHNSZWZlcmVuY2UiLFFyW1FyLlNlbGVjdG9yUGxhY2Vob2xkZXI9NDJdPSJTZWxlY3RvclBsYWNlaG9sZGVyIixRcltRci5EZWJ1Zz00M109IkRlYnVnIixRcltRci5JZj00NF09IklmIixRcltRci5FbHNlPTQ1XT0iRWxzZSIsUXJbUXIuRm9yPTQ2XT0iRm9yIixRcltRci5FYWNoPTQ3XT0iRWFjaCIsUXJbUXIuV2hpbGU9NDhdPSJXaGlsZSIsUXJbUXIuTWl4aW5Db250ZW50UmVmZXJlbmNlPTQ5XT0iTWl4aW5Db250ZW50UmVmZXJlbmNlIixRcltRci5NaXhpbkNvbnRlbnREZWNsYXJhdGlvbj01MF09Ik1peGluQ29udGVudERlY2xhcmF0aW9uIixRcltRci5NZWRpYT01MV09Ik1lZGlhIixRcltRci5LZXlmcmFtZT01Ml09IktleWZyYW1lIixRcltRci5Gb250RmFjZT01M109IkZvbnRGYWNlIixRcltRci5JbXBvcnQ9NTRdPSJJbXBvcnQiLFFyW1FyLk5hbWVzcGFjZT01NV09Ik5hbWVzcGFjZSIsUXJbUXIuSW52b2NhdGlvbj01Nl09Ikludm9jYXRpb24iLFFyW1FyLkZ1bmN0aW9uRGVjbGFyYXRpb249NTddPSJGdW5jdGlvbkRlY2xhcmF0aW9uIixRcltRci5SZXR1cm5TdGF0ZW1lbnQ9NThdPSJSZXR1cm5TdGF0ZW1lbnQiLFFyW1FyLk1lZGlhUXVlcnk9NTldPSJNZWRpYVF1ZXJ5IixRcltRci5NZWRpYUNvbmRpdGlvbj02MF09Ik1lZGlhQ29uZGl0aW9uIixRcltRci5NZWRpYUZlYXR1cmU9NjFdPSJNZWRpYUZlYXR1cmUiLFFyW1FyLkZ1bmN0aW9uUGFyYW1ldGVyPTYyXT0iRnVuY3Rpb25QYXJhbWV0ZXIiLFFyW1FyLkZ1bmN0aW9uQXJndW1lbnQ9NjNdPSJGdW5jdGlvbkFyZ3VtZW50IixRcltRci5LZXlmcmFtZVNlbGVjdG9yPTY0XT0iS2V5ZnJhbWVTZWxlY3RvciIsUXJbUXIuVmlld1BvcnQ9NjVdPSJWaWV3UG9ydCIsUXJbUXIuRG9jdW1lbnQ9NjZdPSJEb2N1bWVudCIsUXJbUXIuQXRBcHBseVJ1bGU9NjddPSJBdEFwcGx5UnVsZSIsUXJbUXIuQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbj02OF09IkN1c3RvbVByb3BlcnR5RGVjbGFyYXRpb24iLFFyW1FyLkN1c3RvbVByb3BlcnR5U2V0PTY5XT0iQ3VzdG9tUHJvcGVydHlTZXQiLFFyW1FyLkxpc3RFbnRyeT03MF09Ikxpc3RFbnRyeSIsUXJbUXIuU3VwcG9ydHM9NzFdPSJTdXBwb3J0cyIsUXJbUXIuU3VwcG9ydHNDb25kaXRpb249NzJdPSJTdXBwb3J0c0NvbmRpdGlvbiIsUXJbUXIuTmFtZXNwYWNlUHJlZml4PTczXT0iTmFtZXNwYWNlUHJlZml4IixRcltRci5HcmlkTGluZT03NF09IkdyaWRMaW5lIixRcltRci5QbHVnaW49NzVdPSJQbHVnaW4iLFFyW1FyLlVua25vd25BdFJ1bGU9NzZdPSJVbmtub3duQXRSdWxlIixRcltRci5Vc2U9NzddPSJVc2UiLFFyW1FyLk1vZHVsZUNvbmZpZ3VyYXRpb249NzhdPSJNb2R1bGVDb25maWd1cmF0aW9uIixRcltRci5Gb3J3YXJkPTc5XT0iRm9yd2FyZCIsUXJbUXIuRm9yd2FyZFZpc2liaWxpdHk9ODBdPSJGb3J3YXJkVmlzaWJpbGl0eSIsUXJbUXIuTW9kdWxlPTgxXT0iTW9kdWxlIixRcltRci5Vbmljb2RlUmFuZ2U9ODJdPSJVbmljb2RlUmFuZ2UiLCh0aT1laXx8KGVpPXt9KSlbdGkuTWl4aW49MF09Ik1peGluIix0aVt0aS5SdWxlPTFdPSJSdWxlIix0aVt0aS5WYXJpYWJsZT0yXT0iVmFyaWFibGUiLHRpW3RpLkZ1bmN0aW9uPTNdPSJGdW5jdGlvbiIsdGlbdGkuS2V5ZnJhbWU9NF09IktleWZyYW1lIix0aVt0aS5Vbmtub3duPTVdPSJVbmtub3duIix0aVt0aS5Nb2R1bGU9Nl09Ik1vZHVsZSIsdGlbdGkuRm9yd2FyZD03XT0iRm9yd2FyZCIsdGlbdGkuRm9yd2FyZFZpc2liaWxpdHk9OF09IkZvcndhcmRWaXNpYmlsaXR5Ijt2YXIgb2k9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuKXt2b2lkIDA9PT1lJiYoZT0tMSksdm9pZCAwPT09dCYmKHQ9LTEpLHRoaXMucGFyZW50PW51bGwsdGhpcy5vZmZzZXQ9ZSx0aGlzLmxlbmd0aD10LG4mJih0aGlzLm5vZGVUeXBlPW4pfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImVuZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9mZnNldCt0aGlzLmxlbmd0aH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlVHlwZXx8WnIuVW5kZWZpbmVkfSxzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5ub2RlVHlwZT1lfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmdldFRleHRQcm92aWRlcj1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzO2UmJiFlLnRleHRQcm92aWRlcjspZT1lLnBhcmVudDtyZXR1cm4gZT9lLnRleHRQcm92aWRlcjpmdW5jdGlvbigpe3JldHVybiJ1bmtub3duIn19LGUucHJvdG90eXBlLmdldFRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUZXh0UHJvdmlkZXIoKSh0aGlzLm9mZnNldCx0aGlzLmxlbmd0aCl9LGUucHJvdG90eXBlLm1hdGNoZXM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMubGVuZ3RoPT09ZS5sZW5ndGgmJnRoaXMuZ2V0VGV4dFByb3ZpZGVyKCkodGhpcy5vZmZzZXQsdGhpcy5sZW5ndGgpPT09ZX0sZS5wcm90b3R5cGUuc3RhcnRzV2l0aD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5sZW5ndGg+PWUubGVuZ3RoJiZ0aGlzLmdldFRleHRQcm92aWRlcigpKHRoaXMub2Zmc2V0LGUubGVuZ3RoKT09PWV9LGUucHJvdG90eXBlLmVuZHNXaXRoPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmxlbmd0aD49ZS5sZW5ndGgmJnRoaXMuZ2V0VGV4dFByb3ZpZGVyKCkodGhpcy5lbmQtZS5sZW5ndGgsZS5sZW5ndGgpPT09ZX0sZS5wcm90b3R5cGUuYWNjZXB0PWZ1bmN0aW9uKGUpe2lmKGUodGhpcykmJnRoaXMuY2hpbGRyZW4pZm9yKHZhciB0PTAsbj10aGlzLmNoaWxkcmVuO3Q8bi5sZW5ndGg7dCsrKXtuW3RdLmFjY2VwdChlKX19LGUucHJvdG90eXBlLmFjY2VwdFZpc2l0b3I9ZnVuY3Rpb24oZSl7dGhpcy5hY2NlcHQoZS52aXNpdE5vZGUuYmluZChlKSl9LGUucHJvdG90eXBlLmFkb3B0Q2hpbGQ9ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDA9PT10JiYodD0tMSksZS5wYXJlbnQmJmUucGFyZW50LmNoaWxkcmVuKXt2YXIgbj1lLnBhcmVudC5jaGlsZHJlbi5pbmRleE9mKGUpO24+PTAmJmUucGFyZW50LmNoaWxkcmVuLnNwbGljZShuLDEpfWUucGFyZW50PXRoaXM7dmFyIHI9dGhpcy5jaGlsZHJlbjtyZXR1cm4gcnx8KHI9dGhpcy5jaGlsZHJlbj1bXSksLTEhPT10P3Iuc3BsaWNlKHQsMCxlKTpyLnB1c2goZSksZX0sZS5wcm90b3R5cGUuYXR0YWNoVG89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9LTEpLGUmJmUuYWRvcHRDaGlsZCh0aGlzLHQpLHRoaXN9LGUucHJvdG90eXBlLmNvbGxlY3RJc3N1ZXM9ZnVuY3Rpb24oZSl7dGhpcy5pc3N1ZXMmJmUucHVzaC5hcHBseShlLHRoaXMuaXNzdWVzKX0sZS5wcm90b3R5cGUuYWRkSXNzdWU9ZnVuY3Rpb24oZSl7dGhpcy5pc3N1ZXN8fCh0aGlzLmlzc3Vlcz1bXSksdGhpcy5pc3N1ZXMucHVzaChlKX0sZS5wcm90b3R5cGUuaGFzSXNzdWU9ZnVuY3Rpb24oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy5pc3N1ZXMpJiZ0aGlzLmlzc3Vlcy5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRSdWxlKCk9PT1lfSkpfSxlLnByb3RvdHlwZS5pc0Vycm9uZW91cz1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLCEhKHRoaXMuaXNzdWVzJiZ0aGlzLmlzc3Vlcy5sZW5ndGg+MCl8fGUmJkFycmF5LmlzQXJyYXkodGhpcy5jaGlsZHJlbikmJnRoaXMuY2hpbGRyZW4uc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaXNFcnJvbmVvdXMoITApfSkpfSxlLnByb3RvdHlwZS5zZXROb2RlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49LTEpLCEhdCYmKHQuYXR0YWNoVG8odGhpcyxuKSx0aGlzW2VdPXQsITApfSxlLnByb3RvdHlwZS5hZGRDaGlsZD1mdW5jdGlvbihlKXtyZXR1cm4hIWUmJih0aGlzLmNoaWxkcmVufHwodGhpcy5jaGlsZHJlbj1bXSksZS5hdHRhY2hUbyh0aGlzKSx0aGlzLnVwZGF0ZU9mZnNldEFuZExlbmd0aChlKSwhMCl9LGUucHJvdG90eXBlLnVwZGF0ZU9mZnNldEFuZExlbmd0aD1mdW5jdGlvbihlKXsoZS5vZmZzZXQ8dGhpcy5vZmZzZXR8fC0xPT09dGhpcy5vZmZzZXQpJiYodGhpcy5vZmZzZXQ9ZS5vZmZzZXQpO3ZhciB0PWUuZW5kOyh0PnRoaXMuZW5kfHwtMT09PXRoaXMubGVuZ3RoKSYmKHRoaXMubGVuZ3RoPXQtdGhpcy5vZmZzZXQpfSxlLnByb3RvdHlwZS5oYXNDaGlsZHJlbj1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5jaGlsZHJlbiYmdGhpcy5jaGlsZHJlbi5sZW5ndGg+MH0sZS5wcm90b3R5cGUuZ2V0Q2hpbGRyZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaGlsZHJlbj90aGlzLmNoaWxkcmVuLnNsaWNlKDApOltdfSxlLnByb3RvdHlwZS5nZXRDaGlsZD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jaGlsZHJlbiYmZTx0aGlzLmNoaWxkcmVuLmxlbmd0aD90aGlzLmNoaWxkcmVuW2VdOm51bGx9LGUucHJvdG90eXBlLmFkZENoaWxkcmVuPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLG49ZTt0PG4ubGVuZ3RoO3QrKyl7dmFyIHI9blt0XTt0aGlzLmFkZENoaWxkKHIpfX0sZS5wcm90b3R5cGUuZmluZEZpcnN0Q2hpbGRCZWZvcmVPZmZzZXQ9ZnVuY3Rpb24oZSl7aWYodGhpcy5jaGlsZHJlbilmb3IodmFyIHQ9bnVsbCxuPXRoaXMuY2hpbGRyZW4ubGVuZ3RoLTE7bj49MDtuLS0paWYoKHQ9dGhpcy5jaGlsZHJlbltuXSkub2Zmc2V0PD1lKXJldHVybiB0O3JldHVybiBudWxsfSxlLnByb3RvdHlwZS5maW5kQ2hpbGRBdE9mZnNldD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZmluZEZpcnN0Q2hpbGRCZWZvcmVPZmZzZXQoZSk7cmV0dXJuIG4mJm4uZW5kPj1lP3QmJm4uZmluZENoaWxkQXRPZmZzZXQoZSwhMCl8fG46bnVsbH0sZS5wcm90b3R5cGUuZW5jbG9zZXM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMub2Zmc2V0PD1lLm9mZnNldCYmdGhpcy5vZmZzZXQrdGhpcy5sZW5ndGg+PWUub2Zmc2V0K2UubGVuZ3RofSxlLnByb3RvdHlwZS5nZXRQYXJlbnQ9ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy5wYXJlbnQ7ZSBpbnN0YW5jZW9mIHNpOyllPWUucGFyZW50O3JldHVybiBlfSxlLnByb3RvdHlwZS5maW5kUGFyZW50PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzO3QmJnQudHlwZSE9PWU7KXQ9dC5wYXJlbnQ7cmV0dXJuIHR9LGUucHJvdG90eXBlLmZpbmRBUGFyZW50PWZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWVbdF09YXJndW1lbnRzW3RdO2Zvcih2YXIgbj10aGlzO24mJiFlLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBuLnR5cGU9PT1lfSkpOyluPW4ucGFyZW50O3JldHVybiBufSxlLnByb3RvdHlwZS5zZXREYXRhPWZ1bmN0aW9uKGUsdCl7dGhpcy5vcHRpb25zfHwodGhpcy5vcHRpb25zPXt9KSx0aGlzLm9wdGlvbnNbZV09dH0sZS5wcm90b3R5cGUuZ2V0RGF0YT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vcHRpb25zJiZ0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoZSk/dGhpcy5vcHRpb25zW2VdOm51bGx9LGV9KCksc2k9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3ZvaWQgMD09PW4mJihuPS0xKTt2YXIgcj1lLmNhbGwodGhpcywtMSwtMSl8fHRoaXM7cmV0dXJuIHIuYXR0YWNoVG8odCxuKSxyLm9mZnNldD0tMSxyLmxlbmd0aD0tMSxyfXJldHVybiBuaSh0LGUpLHR9KG9pKSxhaT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIG5pKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpyLlVuaWNvZGVSYW5nZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5zZXRSYW5nZVN0YXJ0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldE5vZGUoInJhbmdlU3RhcnQiLGUpfSx0LnByb3RvdHlwZS5nZXRSYW5nZVN0YXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmFuZ2VTdGFydH0sdC5wcm90b3R5cGUuc2V0UmFuZ2VFbmQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgicmFuZ2VFbmQiLGUpfSx0LnByb3RvdHlwZS5nZXRSYW5nZUVuZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJhbmdlRW5kfSx0fShvaSksbGk9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3ZhciByPWUuY2FsbCh0aGlzLHQsbil8fHRoaXM7cmV0dXJuIHIuaXNDdXN0b21Qcm9wZXJ0eT0hMSxyfXJldHVybiBuaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBaci5JZGVudGlmaWVyfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmNvbnRhaW5zSW50ZXJwb2xhdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmhhc0NoaWxkcmVuKCl9LHR9KG9pKSxjaT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIG5pKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpyLlN0eWxlc2hlZXR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdH0ob2kpLGhpPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gbmkodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWnIuRGVjbGFyYXRpb25zfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHR9KG9pKSxkaT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIG5pKHQsZSksdC5wcm90b3R5cGUuZ2V0RGVjbGFyYXRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGVjbGFyYXRpb25zfSx0LnByb3RvdHlwZS5zZXREZWNsYXJhdGlvbnM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiZGVjbGFyYXRpb25zIixlKX0sdH0ob2kpLHBpPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gbmkodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWnIuUnVsZXNldH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5nZXRTZWxlY3RvcnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3RvcnN8fCh0aGlzLnNlbGVjdG9ycz1uZXcgc2kodGhpcykpLHRoaXMuc2VsZWN0b3JzfSx0LnByb3RvdHlwZS5pc05lc3RlZD1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5wYXJlbnQmJm51bGwhPT10aGlzLnBhcmVudC5maW5kUGFyZW50KFpyLkRlY2xhcmF0aW9ucyl9LHR9KGRpKSx1aT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIG5pKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpyLlNlbGVjdG9yfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHR9KG9pKSxtaT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIG5pKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpyLlNpbXBsZVNlbGVjdG9yfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHR9KG9pKTshZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfW5pKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpyLkF0QXBwbHlSdWxlfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnNldElkZW50aWZpZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiaWRlbnRpZmllciIsZSwwKX0sdC5wcm90b3R5cGUuZ2V0SWRlbnRpZmllcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXJ9LHQucHJvdG90eXBlLmdldE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyP3RoaXMuaWRlbnRpZmllci5nZXRUZXh0KCk6IiJ9fShvaSk7dmFyIGZpPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gbmkodCxlKSx0fShvaSksZ2k9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBuaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBaci5DdXN0b21Qcm9wZXJ0eVNldH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0fShkaSksYmk9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3ZhciByPWUuY2FsbCh0aGlzLHQsbil8fHRoaXM7cmV0dXJuIHIucHJvcGVydHk9bnVsbCxyfXJldHVybiBuaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBaci5EZWNsYXJhdGlvbn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5zZXRQcm9wZXJ0eT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJwcm9wZXJ0eSIsZSl9LHQucHJvdG90eXBlLmdldFByb3BlcnR5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJvcGVydHl9LHQucHJvdG90eXBlLmdldEZ1bGxQcm9wZXJ0eU5hbWU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BlcnR5P3RoaXMucHJvcGVydHkuZ2V0TmFtZSgpOiJ1bmtub3duIjtpZih0aGlzLnBhcmVudCBpbnN0YW5jZW9mIGhpJiZ0aGlzLnBhcmVudC5nZXRQYXJlbnQoKWluc3RhbmNlb2YgVGkpe3ZhciBuPXRoaXMucGFyZW50LmdldFBhcmVudCgpLmdldFBhcmVudCgpO2lmKG4gaW5zdGFuY2VvZiB0KXJldHVybiBuLmdldEZ1bGxQcm9wZXJ0eU5hbWUoKStlfXJldHVybiBlfSx0LnByb3RvdHlwZS5nZXROb25QcmVmaXhlZFByb3BlcnR5TmFtZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0RnVsbFByb3BlcnR5TmFtZSgpO2lmKGUmJiItIj09PWUuY2hhckF0KDApKXt2YXIgdD1lLmluZGV4T2YoIi0iLDEpO2lmKC0xIT09dClyZXR1cm4gZS5zdWJzdHJpbmcodCsxKX1yZXR1cm4gZX0sdC5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgidmFsdWUiLGUpfSx0LnByb3RvdHlwZS5nZXRWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfSx0LnByb3RvdHlwZS5zZXROZXN0ZWRQcm9wZXJ0aWVzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldE5vZGUoIm5lc3RlZFByb3BlcnRpZXMiLGUpfSx0LnByb3RvdHlwZS5nZXROZXN0ZWRQcm9wZXJ0aWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmVzdGVkUHJvcGVydGllc30sdH0oZmkpLHlpPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gbmkodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWnIuQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5zZXRQcm9wZXJ0eVNldD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJwcm9wZXJ0eVNldCIsZSl9LHQucHJvdG90eXBlLmdldFByb3BlcnR5U2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJvcGVydHlTZXR9LHR9KGJpKSx2aT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIG5pKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpyLlByb3BlcnR5fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnNldElkZW50aWZpZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiaWRlbnRpZmllciIsZSl9LHQucHJvdG90eXBlLmdldElkZW50aWZpZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyfSx0LnByb3RvdHlwZS5nZXROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIGU9dGhpcy5nZXRUZXh0KCksKHQ9L1tfXCtdKyQvLmV4ZWMoZSkpJiZ0WzBdLmxlbmd0aD9lLnN1YnN0cigwLGUubGVuZ3RoLXRbMF0ubGVuZ3RoKTplO3ZhciBlLHR9LHQucHJvdG90eXBlLmlzQ3VzdG9tUHJvcGVydHk9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuaWRlbnRpZmllciYmdGhpcy5pZGVudGlmaWVyLmlzQ3VzdG9tUHJvcGVydHl9LHR9KG9pKSx3aT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIG5pKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpyLkZ1bmN0aW9ufSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnNldElkZW50aWZpZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiaWRlbnRpZmllciIsZSwwKX0sdC5wcm90b3R5cGUuZ2V0SWRlbnRpZmllcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXJ9LHQucHJvdG90eXBlLmdldE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyP3RoaXMuaWRlbnRpZmllci5nZXRUZXh0KCk6IiJ9LHR9KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gbmkodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWnIuSW52b2NhdGlvbn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5nZXRBcmd1bWVudHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcmd1bWVudHN8fCh0aGlzLmFyZ3VtZW50cz1uZXcgc2kodGhpcykpLHRoaXMuYXJndW1lbnRzfSx0fShvaSkpLHhpPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gbmkodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWnIuRnVuY3Rpb25QYXJhbWV0ZXJ9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuc2V0SWRlbnRpZmllcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixlLDApfSx0LnByb3RvdHlwZS5nZXRJZGVudGlmaWVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcn0sdC5wcm90b3R5cGUuZ2V0TmFtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXI/dGhpcy5pZGVudGlmaWVyLmdldFRleHQoKToiIn0sdC5wcm90b3R5cGUuc2V0RGVmYXVsdFZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldE5vZGUoImRlZmF1bHRWYWx1ZSIsZSwwKX0sdC5wcm90b3R5cGUuZ2V0RGVmYXVsdFZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGVmYXVsdFZhbHVlfSx0fShvaSksU2k9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBuaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBaci5GdW5jdGlvbkFyZ3VtZW50fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnNldElkZW50aWZpZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiaWRlbnRpZmllciIsZSwwKX0sdC5wcm90b3R5cGUuZ2V0SWRlbnRpZmllcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXJ9LHQucHJvdG90eXBlLmdldE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyP3RoaXMuaWRlbnRpZmllci5nZXRUZXh0KCk6IiJ9LHQucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldE5vZGUoInZhbHVlIixlLDApfSx0LnByb3RvdHlwZS5nZXRWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfSx0fShvaSksQ2k9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBuaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBaci5JZn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5zZXRFeHByZXNzaW9uPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldE5vZGUoImV4cHJlc3Npb24iLGUsMCl9LHQucHJvdG90eXBlLnNldEVsc2VDbGF1c2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiZWxzZUNsYXVzZSIsZSl9LHR9KGRpKSxraT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIG5pKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpyLkZvcn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5zZXRWYXJpYWJsZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJ2YXJpYWJsZSIsZSwwKX0sdH0oZGkpLF9pPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gbmkodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWnIuRWFjaH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5nZXRWYXJpYWJsZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YXJpYWJsZXN8fCh0aGlzLnZhcmlhYmxlcz1uZXcgc2kodGhpcykpLHRoaXMudmFyaWFibGVzfSx0fShkaSksRWk9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBuaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBaci5XaGlsZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0fShkaSksRmk9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBuaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBaci5FbHNlfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHR9KGRpKSxSaT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIG5pKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpyLkZ1bmN0aW9uRGVjbGFyYXRpb259LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuc2V0SWRlbnRpZmllcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixlLDApfSx0LnByb3RvdHlwZS5nZXRJZGVudGlmaWVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcn0sdC5wcm90b3R5cGUuZ2V0TmFtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXI/dGhpcy5pZGVudGlmaWVyLmdldFRleHQoKToiIn0sdC5wcm90b3R5cGUuZ2V0UGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmFtZXRlcnN8fCh0aGlzLnBhcmFtZXRlcnM9bmV3IHNpKHRoaXMpKSx0aGlzLnBhcmFtZXRlcnN9LHR9KGRpKSxEaT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIG5pKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpyLlZpZXdQb3J0fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHR9KGRpKSxOaT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIG5pKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpyLkZvbnRGYWNlfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHR9KGRpKSxUaT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIG5pKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpyLk5lc3RlZFByb3BlcnRpZXN9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdH0oZGkpLEFpPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gbmkodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWnIuS2V5ZnJhbWV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuc2V0S2V5d29yZD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJrZXl3b3JkIixlLDApfSx0LnByb3RvdHlwZS5nZXRLZXl3b3JkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMua2V5d29yZH0sdC5wcm90b3R5cGUuc2V0SWRlbnRpZmllcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixlLDApfSx0LnByb3RvdHlwZS5nZXRJZGVudGlmaWVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcn0sdC5wcm90b3R5cGUuZ2V0TmFtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXI/dGhpcy5pZGVudGlmaWVyLmdldFRleHQoKToiIn0sdH0oZGkpLHppPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gbmkodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWnIuS2V5ZnJhbWVTZWxlY3Rvcn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0fShkaSksSWk9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBuaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBaci5JbXBvcnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuc2V0TWVkaWFsaXN0PWZ1bmN0aW9uKGUpe3JldHVybiEhZSYmKGUuYXR0YWNoVG8odGhpcyksITApfSx0fShvaSksTWk9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBudWxsIT09ZSYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIG5pKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpyLlVzZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5nZXRQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyYW1ldGVyc3x8KHRoaXMucGFyYW1ldGVycz1uZXcgc2kodGhpcykpLHRoaXMucGFyYW1ldGVyc30sdC5wcm90b3R5cGUuc2V0SWRlbnRpZmllcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixlLDApfSx0LnByb3RvdHlwZS5nZXRJZGVudGlmaWVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcn0sdH0ob2kpLFBpPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gbnVsbCE9PWUmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBuaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBaci5Nb2R1bGVDb25maWd1cmF0aW9ufSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnNldElkZW50aWZpZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiaWRlbnRpZmllciIsZSwwKX0sdC5wcm90b3R5cGUuZ2V0SWRlbnRpZmllcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXJ9LHQucHJvdG90eXBlLmdldE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyP3RoaXMuaWRlbnRpZmllci5nZXRUZXh0KCk6IiJ9LHQucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldE5vZGUoInZhbHVlIixlLDApfSx0LnByb3RvdHlwZS5nZXRWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfSx0fShvaSksT2k9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBudWxsIT09ZSYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIG5pKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpyLkZvcndhcmR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuc2V0SWRlbnRpZmllcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixlLDApfSx0LnByb3RvdHlwZS5nZXRJZGVudGlmaWVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcn0sdC5wcm90b3R5cGUuZ2V0TWVtYmVycz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1lbWJlcnN8fCh0aGlzLm1lbWJlcnM9bmV3IHNpKHRoaXMpKSx0aGlzLm1lbWJlcnN9LHQucHJvdG90eXBlLmdldFBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJhbWV0ZXJzfHwodGhpcy5wYXJhbWV0ZXJzPW5ldyBzaSh0aGlzKSksdGhpcy5wYXJhbWV0ZXJzfSx0fShvaSksTGk9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBudWxsIT09ZSYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIG5pKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpyLkZvcndhcmRWaXNpYmlsaXR5fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnNldElkZW50aWZpZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiaWRlbnRpZmllciIsZSwwKX0sdC5wcm90b3R5cGUuZ2V0SWRlbnRpZmllcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXJ9LHR9KG9pKSxXaT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIG5pKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpyLk5hbWVzcGFjZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0fShvaSksVmk9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBuaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBaci5NZWRpYX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0fShkaSksVWk9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBuaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBaci5TdXBwb3J0c30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0fShkaSksS2k9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBuaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBaci5Eb2N1bWVudH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0fShkaSksQmk9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBuaSh0LGUpLHQucHJvdG90eXBlLmdldE1lZGl1bXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZWRpdW1zfHwodGhpcy5tZWRpdW1zPW5ldyBzaSh0aGlzKSksdGhpcy5tZWRpdW1zfSx0fShvaSksamk9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBuaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBaci5NZWRpYVF1ZXJ5fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHR9KG9pKSxxaT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIG5pKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpyLk1lZGlhQ29uZGl0aW9ufSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHR9KG9pKSwkaT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIG5pKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpyLk1lZGlhRmVhdHVyZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0fShvaSksSGk9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBuaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBaci5TdXBwb3J0c0NvbmRpdGlvbn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0fShvaSksR2k9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBuaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBaci5QYWdlfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHR9KGRpKSxKaT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIG5pKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpyLlBhZ2VCb3hNYXJnaW5Cb3h9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdH0oZGkpLFhpPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gbmkodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWnIuRXhwcmVzc2lvbn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0fShvaSksWWk9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBuaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBaci5CaW5hcnlFeHByZXNzaW9ufSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnNldExlZnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgibGVmdCIsZSl9LHQucHJvdG90eXBlLmdldExlZnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZWZ0fSx0LnByb3RvdHlwZS5zZXRSaWdodD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJyaWdodCIsZSl9LHQucHJvdG90eXBlLmdldFJpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmlnaHR9LHQucHJvdG90eXBlLnNldE9wZXJhdG9yPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldE5vZGUoIm9wZXJhdG9yIixlKX0sdC5wcm90b3R5cGUuZ2V0T3BlcmF0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcGVyYXRvcn0sdH0ob2kpLFppPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gbmkodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWnIuVGVybX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5zZXRPcGVyYXRvcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJvcGVyYXRvciIsZSl9LHQucHJvdG90eXBlLmdldE9wZXJhdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3BlcmF0b3J9LHQucHJvdG90eXBlLnNldEV4cHJlc3Npb249ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiZXhwcmVzc2lvbiIsZSl9LHQucHJvdG90eXBlLmdldEV4cHJlc3Npb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5leHByZXNzaW9ufSx0fShvaSksUWk9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBuaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBaci5BdHRyaWJ1dGVTZWxlY3Rvcn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5zZXROYW1lc3BhY2VQcmVmaXg9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgibmFtZXNwYWNlUHJlZml4IixlKX0sdC5wcm90b3R5cGUuZ2V0TmFtZXNwYWNlUHJlZml4PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZXNwYWNlUHJlZml4fSx0LnByb3RvdHlwZS5zZXRJZGVudGlmaWVyPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldE5vZGUoImlkZW50aWZpZXIiLGUpfSx0LnByb3RvdHlwZS5nZXRJZGVudGlmaWVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcn0sdC5wcm90b3R5cGUuc2V0T3BlcmF0b3I9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgib3BlcmF0b3IiLGUpfSx0LnByb3RvdHlwZS5nZXRPcGVyYXRvcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9wZXJhdG9yfSx0LnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJ2YWx1ZSIsZSl9LHQucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9LHR9KG9pKTshZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfW5pKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpyLk9wZXJhdG9yfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pfShvaSk7dmFyIGVvLHRvLG5vPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gbmkodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWnIuSGV4Q29sb3JWYWx1ZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0fShvaSkscm89ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBuaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBaci5SYXRpb1ZhbHVlfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHR9KG9pKSxpbz0iLiIuY2hhckNvZGVBdCgwKSxvbz0iMCIuY2hhckNvZGVBdCgwKSxzbz0iOSIuY2hhckNvZGVBdCgwKSxhbz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIG5pKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpyLk51bWVyaWNWYWx1ZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5nZXRWYWx1ZT1mdW5jdGlvbigpe2Zvcih2YXIgZSx0PXRoaXMuZ2V0VGV4dCgpLG49MCxyPTAsaT10Lmxlbmd0aDtyPGkmJihlPXQuY2hhckNvZGVBdChyKSxvbzw9ZSYmZTw9c298fGU9PT1pbyk7cisrKW4rPTE7cmV0dXJue3ZhbHVlOnQuc3Vic3RyaW5nKDAsbiksdW5pdDpuPHQubGVuZ3RoP3Quc3Vic3RyaW5nKG4pOnZvaWQgMH19LHR9KG9pKSxsbz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7dmFyIHI9ZS5jYWxsKHRoaXMsdCxuKXx8dGhpcztyZXR1cm4gci52YXJpYWJsZT1udWxsLHIudmFsdWU9bnVsbCxyLm5lZWRzU2VtaWNvbG9uPSEwLHJ9cmV0dXJuIG5pKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpyLlZhcmlhYmxlRGVjbGFyYXRpb259LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuc2V0VmFyaWFibGU9ZnVuY3Rpb24oZSl7cmV0dXJuISFlJiYoZS5hdHRhY2hUbyh0aGlzKSx0aGlzLnZhcmlhYmxlPWUsITApfSx0LnByb3RvdHlwZS5nZXRWYXJpYWJsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhcmlhYmxlfSx0LnByb3RvdHlwZS5nZXROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFyaWFibGU/dGhpcy52YXJpYWJsZS5nZXROYW1lKCk6IiJ9LHQucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiEhZSYmKGUuYXR0YWNoVG8odGhpcyksdGhpcy52YWx1ZT1lLCEwKX0sdC5wcm90b3R5cGUuZ2V0VmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX0sdH0oZmkpLGNvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gbmkodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWnIuSW50ZXJwb2xhdGlvbn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0fShvaSksaG89ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBuaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBaci5WYXJpYWJsZU5hbWV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuZ2V0TmFtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRleHQoKX0sdH0ob2kpLHBvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gbmkodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWnIuRXh0ZW5kc1JlZmVyZW5jZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5nZXRTZWxlY3RvcnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3RvcnN8fCh0aGlzLnNlbGVjdG9ycz1uZXcgc2kodGhpcykpLHRoaXMuc2VsZWN0b3JzfSx0fShvaSksdW89ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBuaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBaci5NaXhpbkNvbnRlbnRSZWZlcmVuY2V9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuZ2V0QXJndW1lbnRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXJndW1lbnRzfHwodGhpcy5hcmd1bWVudHM9bmV3IHNpKHRoaXMpKSx0aGlzLmFyZ3VtZW50c30sdH0ob2kpLG1vPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKXx8dGhpc31yZXR1cm4gbmkodCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWnIuTWl4aW5Db250ZW50UmVmZXJlbmNlfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmdldFBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJhbWV0ZXJzfHwodGhpcy5wYXJhbWV0ZXJzPW5ldyBzaSh0aGlzKSksdGhpcy5wYXJhbWV0ZXJzfSx0fShkaSksZm89ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBuaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBaci5NaXhpblJlZmVyZW5jZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5nZXROYW1lc3BhY2VzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZXNwYWNlc3x8KHRoaXMubmFtZXNwYWNlcz1uZXcgc2kodGhpcykpLHRoaXMubmFtZXNwYWNlc30sdC5wcm90b3R5cGUuc2V0SWRlbnRpZmllcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixlLDApfSx0LnByb3RvdHlwZS5nZXRJZGVudGlmaWVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcn0sdC5wcm90b3R5cGUuZ2V0TmFtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXI/dGhpcy5pZGVudGlmaWVyLmdldFRleHQoKToiIn0sdC5wcm90b3R5cGUuZ2V0QXJndW1lbnRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXJndW1lbnRzfHwodGhpcy5hcmd1bWVudHM9bmV3IHNpKHRoaXMpKSx0aGlzLmFyZ3VtZW50c30sdC5wcm90b3R5cGUuc2V0Q29udGVudD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJjb250ZW50IixlKX0sdC5wcm90b3R5cGUuZ2V0Q29udGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRlbnR9LHR9KG9pKSxnbz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLHQsbil8fHRoaXN9cmV0dXJuIG5pKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpyLk1peGluRGVjbGFyYXRpb259LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuc2V0SWRlbnRpZmllcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixlLDApfSx0LnByb3RvdHlwZS5nZXRJZGVudGlmaWVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcn0sdC5wcm90b3R5cGUuZ2V0TmFtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXI/dGhpcy5pZGVudGlmaWVyLmdldFRleHQoKToiIn0sdC5wcm90b3R5cGUuZ2V0UGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmFtZXRlcnN8fCh0aGlzLnBhcmFtZXRlcnM9bmV3IHNpKHRoaXMpKSx0aGlzLnBhcmFtZXRlcnN9LHQucHJvdG90eXBlLnNldEd1YXJkPWZ1bmN0aW9uKGUpe3JldHVybiBlJiYoZS5hdHRhY2hUbyh0aGlzKSx0aGlzLmd1YXJkPWUpLCExfSx0fShkaSksYm89ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyx0LG4pfHx0aGlzfXJldHVybiBuaSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBaci5Vbmtub3duQXRSdWxlfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnNldEF0UnVsZU5hbWU9ZnVuY3Rpb24oZSl7dGhpcy5hdFJ1bGVOYW1lPWV9LHQucHJvdG90eXBlLmdldEF0UnVsZU5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hdFJ1bGVOYW1lfSx0fShkaSkseW89ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBudWxsIT09ZSYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIG5pKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpyLkxpc3RFbnRyeX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5zZXRLZXk9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgia2V5IixlLDApfSx0LnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJ2YWx1ZSIsZSwxKX0sdH0ob2kpLHZvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gbnVsbCE9PWUmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBuaSh0LGUpLHQucHJvdG90eXBlLmdldENvbmRpdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25zfHwodGhpcy5jb25kaXRpb25zPW5ldyBzaSh0aGlzKSksdGhpcy5jb25kaXRpb25zfSx0fShvaSksd289ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBudWxsIT09ZSYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIG5pKHQsZSksdC5wcm90b3R5cGUuc2V0VmFyaWFibGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgidmFyaWFibGUiLGUpfSx0fShvaSkseG89ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBudWxsIT09ZSYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIG5pKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpyLk1vZHVsZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5zZXRJZGVudGlmaWVyPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldE5vZGUoImlkZW50aWZpZXIiLGUsMCl9LHQucHJvdG90eXBlLmdldElkZW50aWZpZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyfSx0fShvaSk7KHRvPWVvfHwoZW89e30pKVt0by5JZ25vcmU9MV09Iklnbm9yZSIsdG9bdG8uV2FybmluZz0yXT0iV2FybmluZyIsdG9bdG8uRXJyb3I9NF09IkVycm9yIjt2YXIgU289ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuLHIsaSxvKXt2b2lkIDA9PT1pJiYoaT1lLm9mZnNldCksdm9pZCAwPT09byYmKG89ZS5sZW5ndGgpLHRoaXMubm9kZT1lLHRoaXMucnVsZT10LHRoaXMubGV2ZWw9bix0aGlzLm1lc3NhZ2U9cnx8dC5tZXNzYWdlLHRoaXMub2Zmc2V0PWksdGhpcy5sZW5ndGg9b31yZXR1cm4gZS5wcm90b3R5cGUuZ2V0UnVsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJ1bGV9LGUucHJvdG90eXBlLmdldExldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGV2ZWx9LGUucHJvdG90eXBlLmdldE9mZnNldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9mZnNldH0sZS5wcm90b3R5cGUuZ2V0TGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RofSxlLnByb3RvdHlwZS5nZXROb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZX0sZS5wcm90b3R5cGUuZ2V0TWVzc2FnZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1lc3NhZ2V9LGV9KCksQ289ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dGhpcy5lbnRyaWVzPVtdfXJldHVybiBlLmVudHJpZXM9ZnVuY3Rpb24odCl7dmFyIG49bmV3IGU7cmV0dXJuIHQuYWNjZXB0VmlzaXRvcihuKSxuLmVudHJpZXN9LGUucHJvdG90eXBlLnZpc2l0Tm9kZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5pc0Vycm9uZW91cygpJiZlLmNvbGxlY3RJc3N1ZXModGhpcy5lbnRyaWVzKSwhMH0sZX0oKTtmdW5jdGlvbiBrbyhlLHQsLi4ubil7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7bGV0IG47cmV0dXJuIG49MD09PXQubGVuZ3RoP2U6ZS5yZXBsYWNlKC9ceyhcZCspXH0vZywoKGUsbik9PntsZXQgcj1uWzBdO3JldHVybiB2b2lkIDAhPT10W3JdP3Rbcl06ZX0pKSxufSh0LG4pfWZ1bmN0aW9uIF9vKGUpe3JldHVybiBrb312YXIgRW8sRm8sUm8sRG8sTm8sVG8sQW8sem8sSW8sTW8sUG8sT28sTG8sV28sVm8sVW8sS28sQm8sam8scW8sJG8sSG8sR28sSm8sWG8sWW8sWm8sUW8sZXMsdHMsbnMscnMsaXMsb3Msc3MsYXMsbHMsY3MsaHMsZHMscHMsdXMsbXMsZnMsZ3MsYnMseXMsdnMsd3MseHM9X28oKSxTcz1mdW5jdGlvbihlLHQpe3RoaXMuaWQ9ZSx0aGlzLm1lc3NhZ2U9dH0sQ3M9e051bWJlckV4cGVjdGVkOm5ldyBTcygiY3NzLW51bWJlcmV4cGVjdGVkIix4cygiZXhwZWN0ZWQubnVtYmVyIiwibnVtYmVyIGV4cGVjdGVkIikpLENvbmRpdGlvbkV4cGVjdGVkOm5ldyBTcygiY3NzLWNvbmRpdGlvbmV4cGVjdGVkIix4cygiZXhwZWN0ZWQuY29uZHQiLCJjb25kaXRpb24gZXhwZWN0ZWQiKSksUnVsZU9yU2VsZWN0b3JFeHBlY3RlZDpuZXcgU3MoImNzcy1ydWxlb3JzZWxlY3RvcmV4cGVjdGVkIix4cygiZXhwZWN0ZWQucnVsZW9yc2VsZWN0b3IiLCJhdC1ydWxlIG9yIHNlbGVjdG9yIGV4cGVjdGVkIikpLERvdEV4cGVjdGVkOm5ldyBTcygiY3NzLWRvdGV4cGVjdGVkIix4cygiZXhwZWN0ZWQuZG90IiwiZG90IGV4cGVjdGVkIikpLENvbG9uRXhwZWN0ZWQ6bmV3IFNzKCJjc3MtY29sb25leHBlY3RlZCIseHMoImV4cGVjdGVkLmNvbG9uIiwiY29sb24gZXhwZWN0ZWQiKSksU2VtaUNvbG9uRXhwZWN0ZWQ6bmV3IFNzKCJjc3Mtc2VtaWNvbG9uZXhwZWN0ZWQiLHhzKCJleHBlY3RlZC5zZW1pY29sb24iLCJzZW1pLWNvbG9uIGV4cGVjdGVkIikpLFRlcm1FeHBlY3RlZDpuZXcgU3MoImNzcy10ZXJtZXhwZWN0ZWQiLHhzKCJleHBlY3RlZC50ZXJtIiwidGVybSBleHBlY3RlZCIpKSxFeHByZXNzaW9uRXhwZWN0ZWQ6bmV3IFNzKCJjc3MtZXhwcmVzc2lvbmV4cGVjdGVkIix4cygiZXhwZWN0ZWQuZXhwcmVzc2lvbiIsImV4cHJlc3Npb24gZXhwZWN0ZWQiKSksT3BlcmF0b3JFeHBlY3RlZDpuZXcgU3MoImNzcy1vcGVyYXRvcmV4cGVjdGVkIix4cygiZXhwZWN0ZWQub3BlcmF0b3IiLCJvcGVyYXRvciBleHBlY3RlZCIpKSxJZGVudGlmaWVyRXhwZWN0ZWQ6bmV3IFNzKCJjc3MtaWRlbnRpZmllcmV4cGVjdGVkIix4cygiZXhwZWN0ZWQuaWRlbnQiLCJpZGVudGlmaWVyIGV4cGVjdGVkIikpLFBlcmNlbnRhZ2VFeHBlY3RlZDpuZXcgU3MoImNzcy1wZXJjZW50YWdlZXhwZWN0ZWQiLHhzKCJleHBlY3RlZC5wZXJjZW50YWdlIiwicGVyY2VudGFnZSBleHBlY3RlZCIpKSxVUklPclN0cmluZ0V4cGVjdGVkOm5ldyBTcygiY3NzLXVyaW9yc3RyaW5nZXhwZWN0ZWQiLHhzKCJleHBlY3RlZC51cmlvcnN0cmluZyIsInVyaSBvciBzdHJpbmcgZXhwZWN0ZWQiKSksVVJJRXhwZWN0ZWQ6bmV3IFNzKCJjc3MtdXJpZXhwZWN0ZWQiLHhzKCJleHBlY3RlZC51cmkiLCJVUkkgZXhwZWN0ZWQiKSksVmFyaWFibGVOYW1lRXhwZWN0ZWQ6bmV3IFNzKCJjc3MtdmFybmFtZWV4cGVjdGVkIix4cygiZXhwZWN0ZWQudmFybmFtZSIsInZhcmlhYmxlIG5hbWUgZXhwZWN0ZWQiKSksVmFyaWFibGVWYWx1ZUV4cGVjdGVkOm5ldyBTcygiY3NzLXZhcnZhbHVlZXhwZWN0ZWQiLHhzKCJleHBlY3RlZC52YXJ2YWx1ZSIsInZhcmlhYmxlIHZhbHVlIGV4cGVjdGVkIikpLFByb3BlcnR5VmFsdWVFeHBlY3RlZDpuZXcgU3MoImNzcy1wcm9wZXJ0eXZhbHVlZXhwZWN0ZWQiLHhzKCJleHBlY3RlZC5wcm9wdmFsdWUiLCJwcm9wZXJ0eSB2YWx1ZSBleHBlY3RlZCIpKSxMZWZ0Q3VybHlFeHBlY3RlZDpuZXcgU3MoImNzcy1sY3VybHlleHBlY3RlZCIseHMoImV4cGVjdGVkLmxjdXJseSIsInsgZXhwZWN0ZWQiKSksUmlnaHRDdXJseUV4cGVjdGVkOm5ldyBTcygiY3NzLXJjdXJseWV4cGVjdGVkIix4cygiZXhwZWN0ZWQucmN1cmx5IiwifSBleHBlY3RlZCIpKSxMZWZ0U3F1YXJlQnJhY2tldEV4cGVjdGVkOm5ldyBTcygiY3NzLXJicmFja2V0ZXhwZWN0ZWQiLHhzKCJleHBlY3RlZC5sc3F1YXJlIiwiWyBleHBlY3RlZCIpKSxSaWdodFNxdWFyZUJyYWNrZXRFeHBlY3RlZDpuZXcgU3MoImNzcy1sYnJhY2tldGV4cGVjdGVkIix4cygiZXhwZWN0ZWQucnNxdWFyZSIsIl0gZXhwZWN0ZWQiKSksTGVmdFBhcmVudGhlc2lzRXhwZWN0ZWQ6bmV3IFNzKCJjc3MtbHBhcmVudGV4cGVjdGVkIix4cygiZXhwZWN0ZWQubHBhcmVuIiwiKCBleHBlY3RlZCIpKSxSaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQ6bmV3IFNzKCJjc3MtcnBhcmVudGV4cGVjdGVkIix4cygiZXhwZWN0ZWQucnBhcmVudCIsIikgZXhwZWN0ZWQiKSksQ29tbWFFeHBlY3RlZDpuZXcgU3MoImNzcy1jb21tYWV4cGVjdGVkIix4cygiZXhwZWN0ZWQuY29tbWEiLCJjb21tYSBleHBlY3RlZCIpKSxQYWdlRGlyZWN0aXZlT3JEZWNsYXJhdGlvbkV4cGVjdGVkOm5ldyBTcygiY3NzLXBhZ2VkaXJvcmRlY2xleHBlY3RlZCIseHMoImV4cGVjdGVkLnBhZ2VkaXJvcmRlY2wiLCJwYWdlIGRpcmVjdGl2ZSBvciBkZWNsYXJhdG9uIGV4cGVjdGVkIikpLFVua25vd25BdFJ1bGU6bmV3IFNzKCJjc3MtdW5rbm93bmF0cnVsZSIseHMoInVua25vd24uYXRydWxlIiwiYXQtcnVsZSB1bmtub3duIikpLFVua25vd25LZXl3b3JkOm5ldyBTcygiY3NzLXVua25vd25rZXl3b3JkIix4cygidW5rbm93bi5rZXl3b3JkIiwidW5rbm93biBrZXl3b3JkIikpLFNlbGVjdG9yRXhwZWN0ZWQ6bmV3IFNzKCJjc3Mtc2VsZWN0b3JleHBlY3RlZCIseHMoImV4cGVjdGVkLnNlbGVjdG9yIiwic2VsZWN0b3IgZXhwZWN0ZWQiKSksU3RyaW5nTGl0ZXJhbEV4cGVjdGVkOm5ldyBTcygiY3NzLXN0cmluZ2xpdGVyYWxleHBlY3RlZCIseHMoImV4cGVjdGVkLnN0cmluZ2xpdGVyYWwiLCJzdHJpbmcgbGl0ZXJhbCBleHBlY3RlZCIpKSxXaGl0ZXNwYWNlRXhwZWN0ZWQ6bmV3IFNzKCJjc3Mtd2hpdGVzcGFjZWV4cGVjdGVkIix4cygiZXhwZWN0ZWQud2hpdGVzcGFjZSIsIndoaXRlc3BhY2UgZXhwZWN0ZWQiKSksTWVkaWFRdWVyeUV4cGVjdGVkOm5ldyBTcygiY3NzLW1lZGlhcXVlcnlleHBlY3RlZCIseHMoImV4cGVjdGVkLm1lZGlhcXVlcnkiLCJtZWRpYSBxdWVyeSBleHBlY3RlZCIpKSxJZGVudGlmaWVyT3JXaWxkY2FyZEV4cGVjdGVkOm5ldyBTcygiY3NzLWlkb3J3aWxkY2FyZGV4cGVjdGVkIix4cygiZXhwZWN0ZWQuaWRvcndpbGRjYXJkIiwiaWRlbnRpZmllciBvciB3aWxkY2FyZCBleHBlY3RlZCIpKSxXaWxkY2FyZEV4cGVjdGVkOm5ldyBTcygiY3NzLXdpbGRjYXJkZXhwZWN0ZWQiLHhzKCJleHBlY3RlZC53aWxkY2FyZCIsIndpbGRjYXJkIGV4cGVjdGVkIikpLElkZW50aWZpZXJPclZhcmlhYmxlRXhwZWN0ZWQ6bmV3IFNzKCJjc3MtaWRvcnZhcmV4cGVjdGVkIix4cygiZXhwZWN0ZWQuaWRvcnZhciIsImlkZW50aWZpZXIgb3IgdmFyaWFibGUgZXhwZWN0ZWQiKSl9OyhGbz1Fb3x8KEVvPXt9KSkuTUlOX1ZBTFVFPS0yMTQ3NDgzNjQ4LEZvLk1BWF9WQUxVRT0yMTQ3NDgzNjQ3LChEbz1Sb3x8KFJvPXt9KSkuTUlOX1ZBTFVFPTAsRG8uTUFYX1ZBTFVFPTIxNDc0ODM2NDcsKFRvPU5vfHwoTm89e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PU51bWJlci5NQVhfVkFMVUUmJihlPVJvLk1BWF9WQUxVRSksdD09PU51bWJlci5NQVhfVkFMVUUmJih0PVJvLk1BWF9WQUxVRSkse2xpbmU6ZSxjaGFyYWN0ZXI6dH19LFRvLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIENhLm9iamVjdExpdGVyYWwodCkmJkNhLnVpbnRlZ2VyKHQubGluZSkmJkNhLnVpbnRlZ2VyKHQuY2hhcmFjdGVyKX0sKHpvPUFvfHwoQW89e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4scil7aWYoQ2EudWludGVnZXIoZSkmJkNhLnVpbnRlZ2VyKHQpJiZDYS51aW50ZWdlcihuKSYmQ2EudWludGVnZXIocikpcmV0dXJue3N0YXJ0Ok5vLmNyZWF0ZShlLHQpLGVuZDpOby5jcmVhdGUobixyKX07aWYoTm8uaXMoZSkmJk5vLmlzKHQpKXJldHVybntzdGFydDplLGVuZDp0fTt0aHJvdyBuZXcgRXJyb3IoIlJhbmdlI2NyZWF0ZSBjYWxsZWQgd2l0aCBpbnZhbGlkIGFyZ3VtZW50c1siK2UrIiwgIit0KyIsICIrbisiLCAiK3IrIl0iKX0sem8uaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gQ2Eub2JqZWN0TGl0ZXJhbCh0KSYmTm8uaXModC5zdGFydCkmJk5vLmlzKHQuZW5kKX0sKE1vPUlvfHwoSW89e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dXJpOmUscmFuZ2U6dH19LE1vLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIENhLmRlZmluZWQodCkmJkFvLmlzKHQucmFuZ2UpJiYoQ2Euc3RyaW5nKHQudXJpKXx8Q2EudW5kZWZpbmVkKHQudXJpKSl9LChPbz1Qb3x8KFBvPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybnt0YXJnZXRVcmk6ZSx0YXJnZXRSYW5nZTp0LHRhcmdldFNlbGVjdGlvblJhbmdlOm4sb3JpZ2luU2VsZWN0aW9uUmFuZ2U6cn19LE9vLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIENhLmRlZmluZWQodCkmJkFvLmlzKHQudGFyZ2V0UmFuZ2UpJiZDYS5zdHJpbmcodC50YXJnZXRVcmkpJiYoQW8uaXModC50YXJnZXRTZWxlY3Rpb25SYW5nZSl8fENhLnVuZGVmaW5lZCh0LnRhcmdldFNlbGVjdGlvblJhbmdlKSkmJihBby5pcyh0Lm9yaWdpblNlbGVjdGlvblJhbmdlKXx8Q2EudW5kZWZpbmVkKHQub3JpZ2luU2VsZWN0aW9uUmFuZ2UpKX0sKFdvPUxvfHwoTG89e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJue3JlZDplLGdyZWVuOnQsYmx1ZTpuLGFscGhhOnJ9fSxXby5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBDYS5udW1iZXJSYW5nZSh0LnJlZCwwLDEpJiZDYS5udW1iZXJSYW5nZSh0LmdyZWVuLDAsMSkmJkNhLm51bWJlclJhbmdlKHQuYmx1ZSwwLDEpJiZDYS5udW1iZXJSYW5nZSh0LmFscGhhLDAsMSl9LChVbz1Wb3x8KFZvPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3JhbmdlOmUsY29sb3I6dH19LFVvLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIEFvLmlzKHQucmFuZ2UpJiZMby5pcyh0LmNvbG9yKX0sKEJvPUtvfHwoS289e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybntsYWJlbDplLHRleHRFZGl0OnQsYWRkaXRpb25hbFRleHRFZGl0czpufX0sQm8uaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gQ2Euc3RyaW5nKHQubGFiZWwpJiYoQ2EudW5kZWZpbmVkKHQudGV4dEVkaXQpfHxvcy5pcyh0KSkmJihDYS51bmRlZmluZWQodC5hZGRpdGlvbmFsVGV4dEVkaXRzKXx8Q2EudHlwZWRBcnJheSh0LmFkZGl0aW9uYWxUZXh0RWRpdHMsb3MuaXMpKX0sKHFvPWpvfHwoam89e30pKS5Db21tZW50PSJjb21tZW50Iixxby5JbXBvcnRzPSJpbXBvcnRzIixxby5SZWdpb249InJlZ2lvbiIsKEhvPSRvfHwoJG89e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbz17c3RhcnRMaW5lOmUsZW5kTGluZTp0fTtyZXR1cm4gQ2EuZGVmaW5lZChuKSYmKG8uc3RhcnRDaGFyYWN0ZXI9biksQ2EuZGVmaW5lZChyKSYmKG8uZW5kQ2hhcmFjdGVyPXIpLENhLmRlZmluZWQoaSkmJihvLmtpbmQ9aSksb30sSG8uaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gQ2EudWludGVnZXIodC5zdGFydExpbmUpJiZDYS51aW50ZWdlcih0LnN0YXJ0TGluZSkmJihDYS51bmRlZmluZWQodC5zdGFydENoYXJhY3Rlcil8fENhLnVpbnRlZ2VyKHQuc3RhcnRDaGFyYWN0ZXIpKSYmKENhLnVuZGVmaW5lZCh0LmVuZENoYXJhY3Rlcil8fENhLnVpbnRlZ2VyKHQuZW5kQ2hhcmFjdGVyKSkmJihDYS51bmRlZmluZWQodC5raW5kKXx8Q2Euc3RyaW5nKHQua2luZCkpfSwoSm89R298fChHbz17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybntsb2NhdGlvbjplLG1lc3NhZ2U6dH19LEpvLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIENhLmRlZmluZWQodCkmJklvLmlzKHQubG9jYXRpb24pJiZDYS5zdHJpbmcodC5tZXNzYWdlKX0sKFlvPVhvfHwoWG89e30pKS5FcnJvcj0xLFlvLldhcm5pbmc9MixZby5JbmZvcm1hdGlvbj0zLFlvLkhpbnQ9NCwoUW89Wm98fChabz17fSkpLlVubmVjZXNzYXJ5PTEsUW8uRGVwcmVjYXRlZD0yLChlc3x8KGVzPXt9KSkuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gbnVsbCE9dCYmQ2Euc3RyaW5nKHQuaHJlZil9LChucz10c3x8KHRzPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIsaSxvKXt2YXIgcz17cmFuZ2U6ZSxtZXNzYWdlOnR9O3JldHVybiBDYS5kZWZpbmVkKG4pJiYocy5zZXZlcml0eT1uKSxDYS5kZWZpbmVkKHIpJiYocy5jb2RlPXIpLENhLmRlZmluZWQoaSkmJihzLnNvdXJjZT1pKSxDYS5kZWZpbmVkKG8pJiYocy5yZWxhdGVkSW5mb3JtYXRpb249byksc30sbnMuaXM9ZnVuY3Rpb24oZSl7dmFyIHQsbj1lO3JldHVybiBDYS5kZWZpbmVkKG4pJiZBby5pcyhuLnJhbmdlKSYmQ2Euc3RyaW5nKG4ubWVzc2FnZSkmJihDYS5udW1iZXIobi5zZXZlcml0eSl8fENhLnVuZGVmaW5lZChuLnNldmVyaXR5KSkmJihDYS5pbnRlZ2VyKG4uY29kZSl8fENhLnN0cmluZyhuLmNvZGUpfHxDYS51bmRlZmluZWQobi5jb2RlKSkmJihDYS51bmRlZmluZWQobi5jb2RlRGVzY3JpcHRpb24pfHxDYS5zdHJpbmcobnVsbD09PSh0PW4uY29kZURlc2NyaXB0aW9uKXx8dm9pZCAwPT09dD92b2lkIDA6dC5ocmVmKSkmJihDYS5zdHJpbmcobi5zb3VyY2UpfHxDYS51bmRlZmluZWQobi5zb3VyY2UpKSYmKENhLnVuZGVmaW5lZChuLnJlbGF0ZWRJbmZvcm1hdGlvbil8fENhLnR5cGVkQXJyYXkobi5yZWxhdGVkSW5mb3JtYXRpb24sR28uaXMpKX0sKGlzPXJzfHwocnM9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49W10scj0yO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspbltyLTJdPWFyZ3VtZW50c1tyXTt2YXIgaT17dGl0bGU6ZSxjb21tYW5kOnR9O3JldHVybiBDYS5kZWZpbmVkKG4pJiZuLmxlbmd0aD4wJiYoaS5hcmd1bWVudHM9biksaX0saXMuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gQ2EuZGVmaW5lZCh0KSYmQ2Euc3RyaW5nKHQudGl0bGUpJiZDYS5zdHJpbmcodC5jb21tYW5kKX0sKHNzPW9zfHwob3M9e30pKS5yZXBsYWNlPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3JhbmdlOmUsbmV3VGV4dDp0fX0sc3MuaW5zZXJ0PWZ1bmN0aW9uKGUsdCl7cmV0dXJue3JhbmdlOntzdGFydDplLGVuZDplfSxuZXdUZXh0OnR9fSxzcy5kZWw9ZnVuY3Rpb24oZSl7cmV0dXJue3JhbmdlOmUsbmV3VGV4dDoiIn19LHNzLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIENhLm9iamVjdExpdGVyYWwodCkmJkNhLnN0cmluZyh0Lm5ld1RleHQpJiZBby5pcyh0LnJhbmdlKX0sKGxzPWFzfHwoYXM9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXtsYWJlbDplfTtyZXR1cm4gdm9pZCAwIT09dCYmKHIubmVlZHNDb25maXJtYXRpb249dCksdm9pZCAwIT09biYmKHIuZGVzY3JpcHRpb249bikscn0sbHMuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gdm9pZCAwIT09dCYmQ2Eub2JqZWN0TGl0ZXJhbCh0KSYmQ2Euc3RyaW5nKHQubGFiZWwpJiYoQ2EuYm9vbGVhbih0Lm5lZWRzQ29uZmlybWF0aW9uKXx8dm9pZCAwPT09dC5uZWVkc0NvbmZpcm1hdGlvbikmJihDYS5zdHJpbmcodC5kZXNjcmlwdGlvbil8fHZvaWQgMD09PXQuZGVzY3JpcHRpb24pfSwoY3N8fChjcz17fSkpLmlzPWZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZX0sKGRzPWhzfHwoaHM9e30pKS5yZXBsYWNlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm57cmFuZ2U6ZSxuZXdUZXh0OnQsYW5ub3RhdGlvbklkOm59fSxkcy5pbnNlcnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybntyYW5nZTp7c3RhcnQ6ZSxlbmQ6ZX0sbmV3VGV4dDp0LGFubm90YXRpb25JZDpufX0sZHMuZGVsPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3JhbmdlOmUsbmV3VGV4dDoiIixhbm5vdGF0aW9uSWQ6dH19LGRzLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIG9zLmlzKHQpJiYoYXMuaXModC5hbm5vdGF0aW9uSWQpfHxjcy5pcyh0LmFubm90YXRpb25JZCkpfSwodXM9cHN8fChwcz17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybnt0ZXh0RG9jdW1lbnQ6ZSxlZGl0czp0fX0sdXMuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gQ2EuZGVmaW5lZCh0KSYmUnMuaXModC50ZXh0RG9jdW1lbnQpJiZBcnJheS5pc0FycmF5KHQuZWRpdHMpfSwoZnM9bXN8fChtcz17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9e2tpbmQ6ImNyZWF0ZSIsdXJpOmV9O3JldHVybiB2b2lkIDA9PT10fHx2b2lkIDA9PT10Lm92ZXJ3cml0ZSYmdm9pZCAwPT09dC5pZ25vcmVJZkV4aXN0c3x8KHIub3B0aW9ucz10KSx2b2lkIDAhPT1uJiYoci5hbm5vdGF0aW9uSWQ9bikscn0sZnMuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gdCYmImNyZWF0ZSI9PT10LmtpbmQmJkNhLnN0cmluZyh0LnVyaSkmJih2b2lkIDA9PT10Lm9wdGlvbnN8fCh2b2lkIDA9PT10Lm9wdGlvbnMub3ZlcndyaXRlfHxDYS5ib29sZWFuKHQub3B0aW9ucy5vdmVyd3JpdGUpKSYmKHZvaWQgMD09PXQub3B0aW9ucy5pZ25vcmVJZkV4aXN0c3x8Q2EuYm9vbGVhbih0Lm9wdGlvbnMuaWdub3JlSWZFeGlzdHMpKSkmJih2b2lkIDA9PT10LmFubm90YXRpb25JZHx8Y3MuaXModC5hbm5vdGF0aW9uSWQpKX0sKGJzPWdzfHwoZ3M9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9e2tpbmQ6InJlbmFtZSIsb2xkVXJpOmUsbmV3VXJpOnR9O3JldHVybiB2b2lkIDA9PT1ufHx2b2lkIDA9PT1uLm92ZXJ3cml0ZSYmdm9pZCAwPT09bi5pZ25vcmVJZkV4aXN0c3x8KGkub3B0aW9ucz1uKSx2b2lkIDAhPT1yJiYoaS5hbm5vdGF0aW9uSWQ9ciksaX0sYnMuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gdCYmInJlbmFtZSI9PT10LmtpbmQmJkNhLnN0cmluZyh0Lm9sZFVyaSkmJkNhLnN0cmluZyh0Lm5ld1VyaSkmJih2b2lkIDA9PT10Lm9wdGlvbnN8fCh2b2lkIDA9PT10Lm9wdGlvbnMub3ZlcndyaXRlfHxDYS5ib29sZWFuKHQub3B0aW9ucy5vdmVyd3JpdGUpKSYmKHZvaWQgMD09PXQub3B0aW9ucy5pZ25vcmVJZkV4aXN0c3x8Q2EuYm9vbGVhbih0Lm9wdGlvbnMuaWdub3JlSWZFeGlzdHMpKSkmJih2b2lkIDA9PT10LmFubm90YXRpb25JZHx8Y3MuaXModC5hbm5vdGF0aW9uSWQpKX0sKHZzPXlzfHwoeXM9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXtraW5kOiJkZWxldGUiLHVyaTplfTtyZXR1cm4gdm9pZCAwPT09dHx8dm9pZCAwPT09dC5yZWN1cnNpdmUmJnZvaWQgMD09PXQuaWdub3JlSWZOb3RFeGlzdHN8fChyLm9wdGlvbnM9dCksdm9pZCAwIT09biYmKHIuYW5ub3RhdGlvbklkPW4pLHJ9LHZzLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQmJiJkZWxldGUiPT09dC5raW5kJiZDYS5zdHJpbmcodC51cmkpJiYodm9pZCAwPT09dC5vcHRpb25zfHwodm9pZCAwPT09dC5vcHRpb25zLnJlY3Vyc2l2ZXx8Q2EuYm9vbGVhbih0Lm9wdGlvbnMucmVjdXJzaXZlKSkmJih2b2lkIDA9PT10Lm9wdGlvbnMuaWdub3JlSWZOb3RFeGlzdHN8fENhLmJvb2xlYW4odC5vcHRpb25zLmlnbm9yZUlmTm90RXhpc3RzKSkpJiYodm9pZCAwPT09dC5hbm5vdGF0aW9uSWR8fGNzLmlzKHQuYW5ub3RhdGlvbklkKSl9LCh3c3x8KHdzPXt9KSkuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gdCYmKHZvaWQgMCE9PXQuY2hhbmdlc3x8dm9pZCAwIT09dC5kb2N1bWVudENoYW5nZXMpJiYodm9pZCAwPT09dC5kb2N1bWVudENoYW5nZXN8fHQuZG9jdW1lbnRDaGFuZ2VzLmV2ZXJ5KChmdW5jdGlvbihlKXtyZXR1cm4gQ2Euc3RyaW5nKGUua2luZCk/bXMuaXMoZSl8fGdzLmlzKGUpfHx5cy5pcyhlKTpwcy5pcyhlKX0pKSl9O3ZhciBrcyxfcyxFcyxGcyxScyxEcyxOcyxUcyxBcyx6cyxJcyxNcyxQcyxPcyxMcyxXcyxWcyxVcyxLcyxCcyxqcyxxcywkcyxIcyxHcyxKcyxYcyxZcyxacyxRcyxlYSx0YSxuYSxyYSxpYSxvYSxzYSxhYSxsYSxjYSxoYSxkYSxwYSx1YSxtYSxmYSxnYSxiYSx5YSx2YSx3YSx4YT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt0aGlzLmVkaXRzPWUsdGhpcy5jaGFuZ2VBbm5vdGF0aW9ucz10fXJldHVybiBlLnByb3RvdHlwZS5pbnNlcnQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk7aWYodm9pZCAwPT09bj9yPW9zLmluc2VydChlLHQpOmNzLmlzKG4pPyhpPW4scj1ocy5pbnNlcnQoZSx0LG4pKToodGhpcy5hc3NlcnRDaGFuZ2VBbm5vdGF0aW9ucyh0aGlzLmNoYW5nZUFubm90YXRpb25zKSxpPXRoaXMuY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKG4pLHI9aHMuaW5zZXJ0KGUsdCxpKSksdGhpcy5lZGl0cy5wdXNoKHIpLHZvaWQgMCE9PWkpcmV0dXJuIGl9LGUucHJvdG90eXBlLnJlcGxhY2U9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk7aWYodm9pZCAwPT09bj9yPW9zLnJlcGxhY2UoZSx0KTpjcy5pcyhuKT8oaT1uLHI9aHMucmVwbGFjZShlLHQsbikpOih0aGlzLmFzc2VydENoYW5nZUFubm90YXRpb25zKHRoaXMuY2hhbmdlQW5ub3RhdGlvbnMpLGk9dGhpcy5jaGFuZ2VBbm5vdGF0aW9ucy5tYW5hZ2Uobikscj1ocy5yZXBsYWNlKGUsdCxpKSksdGhpcy5lZGl0cy5wdXNoKHIpLHZvaWQgMCE9PWkpcmV0dXJuIGl9LGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihlLHQpe3ZhciBuLHI7aWYodm9pZCAwPT09dD9uPW9zLmRlbChlKTpjcy5pcyh0KT8ocj10LG49aHMuZGVsKGUsdCkpOih0aGlzLmFzc2VydENoYW5nZUFubm90YXRpb25zKHRoaXMuY2hhbmdlQW5ub3RhdGlvbnMpLHI9dGhpcy5jaGFuZ2VBbm5vdGF0aW9ucy5tYW5hZ2UodCksbj1ocy5kZWwoZSxyKSksdGhpcy5lZGl0cy5wdXNoKG4pLHZvaWQgMCE9PXIpcmV0dXJuIHJ9LGUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXt0aGlzLmVkaXRzLnB1c2goZSl9LGUucHJvdG90eXBlLmFsbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVkaXRzfSxlLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuZWRpdHMuc3BsaWNlKDAsdGhpcy5lZGl0cy5sZW5ndGgpfSxlLnByb3RvdHlwZS5hc3NlcnRDaGFuZ2VBbm5vdGF0aW9ucz1mdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBFcnJvcigiVGV4dCBlZGl0IGNoYW5nZSBpcyBub3QgY29uZmlndXJlZCB0byBtYW5hZ2UgY2hhbmdlIGFubm90YXRpb25zLiIpfSxlfSgpLFNhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLl9hbm5vdGF0aW9ucz12b2lkIDA9PT1lP09iamVjdC5jcmVhdGUobnVsbCk6ZSx0aGlzLl9jb3VudGVyPTAsdGhpcy5fc2l6ZT0wfXJldHVybiBlLnByb3RvdHlwZS5hbGw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYW5ub3RhdGlvbnN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwic2l6ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zaXplfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLm1hbmFnZT1mdW5jdGlvbihlLHQpe3ZhciBuO2lmKGNzLmlzKGUpP249ZToobj10aGlzLm5leHRJZCgpLHQ9ZSksdm9pZCAwIT09dGhpcy5fYW5ub3RhdGlvbnNbbl0pdGhyb3cgbmV3IEVycm9yKCJJZCAiK24rIiBpcyBhbHJlYWR5IGluIHVzZS4iKTtpZih2b2lkIDA9PT10KXRocm93IG5ldyBFcnJvcigiTm8gYW5ub3RhdGlvbiBwcm92aWRlZCBmb3IgaWQgIituKTtyZXR1cm4gdGhpcy5fYW5ub3RhdGlvbnNbbl09dCx0aGlzLl9zaXplKyssbn0sZS5wcm90b3R5cGUubmV4dElkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvdW50ZXIrKyx0aGlzLl9jb3VudGVyLnRvU3RyaW5nKCl9LGV9KCk7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt2YXIgdD10aGlzO3RoaXMuX3RleHRFZGl0Q2hhbmdlcz1PYmplY3QuY3JlYXRlKG51bGwpLHZvaWQgMCE9PWU/KHRoaXMuX3dvcmtzcGFjZUVkaXQ9ZSxlLmRvY3VtZW50Q2hhbmdlcz8odGhpcy5fY2hhbmdlQW5ub3RhdGlvbnM9bmV3IFNhKGUuY2hhbmdlQW5ub3RhdGlvbnMpLGUuY2hhbmdlQW5ub3RhdGlvbnM9dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMuYWxsKCksZS5kb2N1bWVudENoYW5nZXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aWYocHMuaXMoZSkpe3ZhciBuPW5ldyB4YShlLmVkaXRzLHQuX2NoYW5nZUFubm90YXRpb25zKTt0Ll90ZXh0RWRpdENoYW5nZXNbZS50ZXh0RG9jdW1lbnQudXJpXT1ufX0pKSk6ZS5jaGFuZ2VzJiZPYmplY3Qua2V5cyhlLmNoYW5nZXMpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciByPW5ldyB4YShlLmNoYW5nZXNbbl0pO3QuX3RleHRFZGl0Q2hhbmdlc1tuXT1yfSkpKTp0aGlzLl93b3Jrc3BhY2VFZGl0PXt9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiZWRpdCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmluaXREb2N1bWVudENoYW5nZXMoKSx2b2lkIDAhPT10aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucyYmKDA9PT10aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucy5zaXplP3RoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlQW5ub3RhdGlvbnM9dm9pZCAwOnRoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlQW5ub3RhdGlvbnM9dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMuYWxsKCkpLHRoaXMuX3dvcmtzcGFjZUVkaXR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuZ2V0VGV4dEVkaXRDaGFuZ2U9ZnVuY3Rpb24oZSl7aWYoUnMuaXMoZSkpe2lmKHRoaXMuaW5pdERvY3VtZW50Q2hhbmdlcygpLHZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzKXRocm93IG5ldyBFcnJvcigiV29ya3NwYWNlIGVkaXQgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIGRvY3VtZW50IGNoYW5nZXMuIik7dmFyIHQ9e3VyaTplLnVyaSx2ZXJzaW9uOmUudmVyc2lvbn07aWYoIShyPXRoaXMuX3RleHRFZGl0Q2hhbmdlc1t0LnVyaV0pKXt2YXIgbj17dGV4dERvY3VtZW50OnQsZWRpdHM6aT1bXX07dGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMucHVzaChuKSxyPW5ldyB4YShpLHRoaXMuX2NoYW5nZUFubm90YXRpb25zKSx0aGlzLl90ZXh0RWRpdENoYW5nZXNbdC51cmldPXJ9cmV0dXJuIHJ9aWYodGhpcy5pbml0Q2hhbmdlcygpLHZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlcyl0aHJvdyBuZXcgRXJyb3IoIldvcmtzcGFjZSBlZGl0IGlzIG5vdCBjb25maWd1cmVkIGZvciBub3JtYWwgdGV4dCBlZGl0IGNoYW5nZXMuIik7dmFyIHI7aWYoIShyPXRoaXMuX3RleHRFZGl0Q2hhbmdlc1tlXSkpe3ZhciBpPVtdO3RoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlc1tlXT1pLHI9bmV3IHhhKGkpLHRoaXMuX3RleHRFZGl0Q2hhbmdlc1tlXT1yfXJldHVybiByfSxlLnByb3RvdHlwZS5pbml0RG9jdW1lbnRDaGFuZ2VzPWZ1bmN0aW9uKCl7dm9pZCAwPT09dGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMmJnZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlcyYmKHRoaXMuX2NoYW5nZUFubm90YXRpb25zPW5ldyBTYSx0aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcz1bXSx0aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZUFubm90YXRpb25zPXRoaXMuX2NoYW5nZUFubm90YXRpb25zLmFsbCgpKX0sZS5wcm90b3R5cGUuaW5pdENoYW5nZXM9ZnVuY3Rpb24oKXt2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcyYmdm9pZCAwPT09dGhpcy5fd29ya3NwYWNlRWRpdC5jaGFuZ2VzJiYodGhpcy5fd29ya3NwYWNlRWRpdC5jaGFuZ2VzPU9iamVjdC5jcmVhdGUobnVsbCkpfSxlLnByb3RvdHlwZS5jcmVhdGVGaWxlPWZ1bmN0aW9uKGUsdCxuKXtpZih0aGlzLmluaXREb2N1bWVudENoYW5nZXMoKSx2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcyl0aHJvdyBuZXcgRXJyb3IoIldvcmtzcGFjZSBlZGl0IGlzIG5vdCBjb25maWd1cmVkIGZvciBkb2N1bWVudCBjaGFuZ2VzLiIpO3ZhciByLGksbztpZihhcy5pcyh0KXx8Y3MuaXModCk/cj10Om49dCx2b2lkIDA9PT1yP2k9bXMuY3JlYXRlKGUsbik6KG89Y3MuaXMocik/cjp0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucy5tYW5hZ2UociksaT1tcy5jcmVhdGUoZSxuLG8pKSx0aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcy5wdXNoKGkpLHZvaWQgMCE9PW8pcmV0dXJuIG99LGUucHJvdG90eXBlLnJlbmFtZUZpbGU9ZnVuY3Rpb24oZSx0LG4scil7aWYodGhpcy5pbml0RG9jdW1lbnRDaGFuZ2VzKCksdm9pZCAwPT09dGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMpdGhyb3cgbmV3IEVycm9yKCJXb3Jrc3BhY2UgZWRpdCBpcyBub3QgY29uZmlndXJlZCBmb3IgZG9jdW1lbnQgY2hhbmdlcy4iKTt2YXIgaSxvLHM7aWYoYXMuaXMobil8fGNzLmlzKG4pP2k9bjpyPW4sdm9pZCAwPT09aT9vPWdzLmNyZWF0ZShlLHQscik6KHM9Y3MuaXMoaSk/aTp0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucy5tYW5hZ2UoaSksbz1ncy5jcmVhdGUoZSx0LHIscykpLHRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzLnB1c2gobyksdm9pZCAwIT09cylyZXR1cm4gc30sZS5wcm90b3R5cGUuZGVsZXRlRmlsZT1mdW5jdGlvbihlLHQsbil7aWYodGhpcy5pbml0RG9jdW1lbnRDaGFuZ2VzKCksdm9pZCAwPT09dGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMpdGhyb3cgbmV3IEVycm9yKCJXb3Jrc3BhY2UgZWRpdCBpcyBub3QgY29uZmlndXJlZCBmb3IgZG9jdW1lbnQgY2hhbmdlcy4iKTt2YXIgcixpLG87aWYoYXMuaXModCl8fGNzLmlzKHQpP3I9dDpuPXQsdm9pZCAwPT09cj9pPXlzLmNyZWF0ZShlLG4pOihvPWNzLmlzKHIpP3I6dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKHIpLGk9eXMuY3JlYXRlKGUsbixvKSksdGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMucHVzaChpKSx2b2lkIDAhPT1vKXJldHVybiBvfX0oKSwoX3M9a3N8fChrcz17fSkpLmNyZWF0ZT1mdW5jdGlvbihlKXtyZXR1cm57dXJpOmV9fSxfcy5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBDYS5kZWZpbmVkKHQpJiZDYS5zdHJpbmcodC51cmkpfSwoRnM9RXN8fChFcz17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybnt1cmk6ZSx2ZXJzaW9uOnR9fSxGcy5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBDYS5kZWZpbmVkKHQpJiZDYS5zdHJpbmcodC51cmkpJiZDYS5pbnRlZ2VyKHQudmVyc2lvbil9LChEcz1Sc3x8KFJzPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3VyaTplLHZlcnNpb246dH19LERzLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIENhLmRlZmluZWQodCkmJkNhLnN0cmluZyh0LnVyaSkmJihudWxsPT09dC52ZXJzaW9ufHxDYS5pbnRlZ2VyKHQudmVyc2lvbikpfSwoVHM9TnN8fChOcz17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm57dXJpOmUsbGFuZ3VhZ2VJZDp0LHZlcnNpb246bix0ZXh0OnJ9fSxUcy5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBDYS5kZWZpbmVkKHQpJiZDYS5zdHJpbmcodC51cmkpJiZDYS5zdHJpbmcodC5sYW5ndWFnZUlkKSYmQ2EuaW50ZWdlcih0LnZlcnNpb24pJiZDYS5zdHJpbmcodC50ZXh0KX0sKHpzPUFzfHwoQXM9e30pKS5QbGFpblRleHQ9InBsYWludGV4dCIsenMuTWFya2Rvd249Im1hcmtkb3duIixmdW5jdGlvbihlKXtlLmlzPWZ1bmN0aW9uKHQpe3ZhciBuPXQ7cmV0dXJuIG49PT1lLlBsYWluVGV4dHx8bj09PWUuTWFya2Rvd259fShBc3x8KEFzPXt9KSksKElzfHwoSXM9e30pKS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBDYS5vYmplY3RMaXRlcmFsKGUpJiZBcy5pcyh0LmtpbmQpJiZDYS5zdHJpbmcodC52YWx1ZSl9LChQcz1Nc3x8KE1zPXt9KSkuVGV4dD0xLFBzLk1ldGhvZD0yLFBzLkZ1bmN0aW9uPTMsUHMuQ29uc3RydWN0b3I9NCxQcy5GaWVsZD01LFBzLlZhcmlhYmxlPTYsUHMuQ2xhc3M9NyxQcy5JbnRlcmZhY2U9OCxQcy5Nb2R1bGU9OSxQcy5Qcm9wZXJ0eT0xMCxQcy5Vbml0PTExLFBzLlZhbHVlPTEyLFBzLkVudW09MTMsUHMuS2V5d29yZD0xNCxQcy5TbmlwcGV0PTE1LFBzLkNvbG9yPTE2LFBzLkZpbGU9MTcsUHMuUmVmZXJlbmNlPTE4LFBzLkZvbGRlcj0xOSxQcy5FbnVtTWVtYmVyPTIwLFBzLkNvbnN0YW50PTIxLFBzLlN0cnVjdD0yMixQcy5FdmVudD0yMyxQcy5PcGVyYXRvcj0yNCxQcy5UeXBlUGFyYW1ldGVyPTI1LChMcz1Pc3x8KE9zPXt9KSkuUGxhaW5UZXh0PTEsTHMuU25pcHBldD0yLChXc3x8KFdzPXt9KSkuRGVwcmVjYXRlZD0xLChVcz1Wc3x8KFZzPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm57bmV3VGV4dDplLGluc2VydDp0LHJlcGxhY2U6bn19LFVzLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQmJkNhLnN0cmluZyh0Lm5ld1RleHQpJiZBby5pcyh0Lmluc2VydCkmJkFvLmlzKHQucmVwbGFjZSl9LChCcz1Lc3x8KEtzPXt9KSkuYXNJcz0xLEJzLmFkanVzdEluZGVudGF0aW9uPTIsKGpzfHwoanM9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSl7cmV0dXJue2xhYmVsOmV9fSwocXN8fChxcz17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybntpdGVtczplfHxbXSxpc0luY29tcGxldGU6ISF0fX0sKEhzPSRzfHwoJHM9e30pKS5mcm9tUGxhaW5UZXh0PWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL1tcXGAqX3t9W1xdKCkjK1wtLiFdL2csIlxcJCYiKX0sSHMuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gQ2Euc3RyaW5nKHQpfHxDYS5vYmplY3RMaXRlcmFsKHQpJiZDYS5zdHJpbmcodC5sYW5ndWFnZSkmJkNhLnN0cmluZyh0LnZhbHVlKX0sKEdzfHwoR3M9e30pKS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiEhdCYmQ2Eub2JqZWN0TGl0ZXJhbCh0KSYmKElzLmlzKHQuY29udGVudHMpfHwkcy5pcyh0LmNvbnRlbnRzKXx8Q2EudHlwZWRBcnJheSh0LmNvbnRlbnRzLCRzLmlzKSkmJih2b2lkIDA9PT1lLnJhbmdlfHxBby5pcyhlLnJhbmdlKSl9LChKc3x8KEpzPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/e2xhYmVsOmUsZG9jdW1lbnRhdGlvbjp0fTp7bGFiZWw6ZX19LChYc3x8KFhzPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtdLHI9MjtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKW5bci0yXT1hcmd1bWVudHNbcl07dmFyIGk9e2xhYmVsOmV9O3JldHVybiBDYS5kZWZpbmVkKHQpJiYoaS5kb2N1bWVudGF0aW9uPXQpLENhLmRlZmluZWQobik/aS5wYXJhbWV0ZXJzPW46aS5wYXJhbWV0ZXJzPVtdLGl9LChacz1Zc3x8KFlzPXt9KSkuVGV4dD0xLFpzLlJlYWQ9Mixacy5Xcml0ZT0zLChRc3x8KFFzPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7dmFyIG49e3JhbmdlOmV9O3JldHVybiBDYS5udW1iZXIodCkmJihuLmtpbmQ9dCksbn0sKHRhPWVhfHwoZWE9e30pKS5GaWxlPTEsdGEuTW9kdWxlPTIsdGEuTmFtZXNwYWNlPTMsdGEuUGFja2FnZT00LHRhLkNsYXNzPTUsdGEuTWV0aG9kPTYsdGEuUHJvcGVydHk9Nyx0YS5GaWVsZD04LHRhLkNvbnN0cnVjdG9yPTksdGEuRW51bT0xMCx0YS5JbnRlcmZhY2U9MTEsdGEuRnVuY3Rpb249MTIsdGEuVmFyaWFibGU9MTMsdGEuQ29uc3RhbnQ9MTQsdGEuU3RyaW5nPTE1LHRhLk51bWJlcj0xNix0YS5Cb29sZWFuPTE3LHRhLkFycmF5PTE4LHRhLk9iamVjdD0xOSx0YS5LZXk9MjAsdGEuTnVsbD0yMSx0YS5FbnVtTWVtYmVyPTIyLHRhLlN0cnVjdD0yMyx0YS5FdmVudD0yNCx0YS5PcGVyYXRvcj0yNSx0YS5UeXBlUGFyYW1ldGVyPTI2LChuYXx8KG5hPXt9KSkuRGVwcmVjYXRlZD0xLChyYXx8KHJhPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIG89e25hbWU6ZSxraW5kOnQsbG9jYXRpb246e3VyaTpyLHJhbmdlOm59fTtyZXR1cm4gaSYmKG8uY29udGFpbmVyTmFtZT1pKSxvfSwob2E9aWF8fChpYT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixyLGksbyl7dmFyIHM9e25hbWU6ZSxkZXRhaWw6dCxraW5kOm4scmFuZ2U6cixzZWxlY3Rpb25SYW5nZTppfTtyZXR1cm4gdm9pZCAwIT09byYmKHMuY2hpbGRyZW49byksc30sb2EuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gdCYmQ2Euc3RyaW5nKHQubmFtZSkmJkNhLm51bWJlcih0LmtpbmQpJiZBby5pcyh0LnJhbmdlKSYmQW8uaXModC5zZWxlY3Rpb25SYW5nZSkmJih2b2lkIDA9PT10LmRldGFpbHx8Q2Euc3RyaW5nKHQuZGV0YWlsKSkmJih2b2lkIDA9PT10LmRlcHJlY2F0ZWR8fENhLmJvb2xlYW4odC5kZXByZWNhdGVkKSkmJih2b2lkIDA9PT10LmNoaWxkcmVufHxBcnJheS5pc0FycmF5KHQuY2hpbGRyZW4pKSYmKHZvaWQgMD09PXQudGFnc3x8QXJyYXkuaXNBcnJheSh0LnRhZ3MpKX0sKGFhPXNhfHwoc2E9e30pKS5FbXB0eT0iIixhYS5RdWlja0ZpeD0icXVpY2tmaXgiLGFhLlJlZmFjdG9yPSJyZWZhY3RvciIsYWEuUmVmYWN0b3JFeHRyYWN0PSJyZWZhY3Rvci5leHRyYWN0IixhYS5SZWZhY3RvcklubGluZT0icmVmYWN0b3IuaW5saW5lIixhYS5SZWZhY3RvclJld3JpdGU9InJlZmFjdG9yLnJld3JpdGUiLGFhLlNvdXJjZT0ic291cmNlIixhYS5Tb3VyY2VPcmdhbml6ZUltcG9ydHM9InNvdXJjZS5vcmdhbml6ZUltcG9ydHMiLGFhLlNvdXJjZUZpeEFsbD0ic291cmNlLmZpeEFsbCIsKGNhPWxhfHwobGE9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj17ZGlhZ25vc3RpY3M6ZX07cmV0dXJuIG51bGwhPXQmJihuLm9ubHk9dCksbn0sY2EuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gQ2EuZGVmaW5lZCh0KSYmQ2EudHlwZWRBcnJheSh0LmRpYWdub3N0aWNzLHRzLmlzKSYmKHZvaWQgMD09PXQub25seXx8Q2EudHlwZWRBcnJheSh0Lm9ubHksQ2Euc3RyaW5nKSl9LChkYT1oYXx8KGhhPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj17dGl0bGU6ZX0saT0hMDtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/KGk9ITEsci5raW5kPXQpOnJzLmlzKHQpP3IuY29tbWFuZD10OnIuZWRpdD10LGkmJnZvaWQgMCE9PW4mJihyLmtpbmQ9bikscn0sZGEuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gdCYmQ2Euc3RyaW5nKHQudGl0bGUpJiYodm9pZCAwPT09dC5kaWFnbm9zdGljc3x8Q2EudHlwZWRBcnJheSh0LmRpYWdub3N0aWNzLHRzLmlzKSkmJih2b2lkIDA9PT10LmtpbmR8fENhLnN0cmluZyh0LmtpbmQpKSYmKHZvaWQgMCE9PXQuZWRpdHx8dm9pZCAwIT09dC5jb21tYW5kKSYmKHZvaWQgMD09PXQuY29tbWFuZHx8cnMuaXModC5jb21tYW5kKSkmJih2b2lkIDA9PT10LmlzUHJlZmVycmVkfHxDYS5ib29sZWFuKHQuaXNQcmVmZXJyZWQpKSYmKHZvaWQgMD09PXQuZWRpdHx8d3MuaXModC5lZGl0KSl9LCh1YT1wYXx8KHBhPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7dmFyIG49e3JhbmdlOmV9O3JldHVybiBDYS5kZWZpbmVkKHQpJiYobi5kYXRhPXQpLG59LHVhLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIENhLmRlZmluZWQodCkmJkFvLmlzKHQucmFuZ2UpJiYoQ2EudW5kZWZpbmVkKHQuY29tbWFuZCl8fHJzLmlzKHQuY29tbWFuZCkpfSwoZmE9bWF8fChtYT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybnt0YWJTaXplOmUsaW5zZXJ0U3BhY2VzOnR9fSxmYS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBDYS5kZWZpbmVkKHQpJiZDYS51aW50ZWdlcih0LnRhYlNpemUpJiZDYS5ib29sZWFuKHQuaW5zZXJ0U3BhY2VzKX0sKGJhPWdhfHwoZ2E9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybntyYW5nZTplLHRhcmdldDp0LGRhdGE6bn19LGJhLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIENhLmRlZmluZWQodCkmJkFvLmlzKHQucmFuZ2UpJiYoQ2EudW5kZWZpbmVkKHQudGFyZ2V0KXx8Q2Euc3RyaW5nKHQudGFyZ2V0KSl9LCh2YT15YXx8KHlhPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3JhbmdlOmUscGFyZW50OnR9fSx2YS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB2b2lkIDAhPT10JiZBby5pcyh0LnJhbmdlKSYmKHZvaWQgMD09PXQucGFyZW50fHx2YS5pcyh0LnBhcmVudCkpfSxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsbil7aWYoZS5sZW5ndGg8PTEpcmV0dXJuIGU7dmFyIHI9ZS5sZW5ndGgvMnwwLGk9ZS5zbGljZSgwLHIpLG89ZS5zbGljZShyKTt0KGksbiksdChvLG4pO2Zvcih2YXIgcz0wLGE9MCxsPTA7czxpLmxlbmd0aCYmYTxvLmxlbmd0aDspe3ZhciBjPW4oaVtzXSxvW2FdKTtlW2wrK109Yzw9MD9pW3MrK106b1thKytdfWZvcig7czxpLmxlbmd0aDspZVtsKytdPWlbcysrXTtmb3IoO2E8by5sZW5ndGg7KWVbbCsrXT1vW2ErK107cmV0dXJuIGV9ZS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIG5ldyBFYShlLHQsbixyKX0sZS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiEhKENhLmRlZmluZWQodCkmJkNhLnN0cmluZyh0LnVyaSkmJihDYS51bmRlZmluZWQodC5sYW5ndWFnZUlkKXx8Q2Euc3RyaW5nKHQubGFuZ3VhZ2VJZCkpJiZDYS51aW50ZWdlcih0LmxpbmVDb3VudCkmJkNhLmZ1bmModC5nZXRUZXh0KSYmQ2EuZnVuYyh0LnBvc2l0aW9uQXQpJiZDYS5mdW5jKHQub2Zmc2V0QXQpKX0sZS5hcHBseUVkaXRzPWZ1bmN0aW9uKGUsbil7Zm9yKHZhciByPWUuZ2V0VGV4dCgpLGk9dChuLChmdW5jdGlvbihlLHQpe3ZhciBuPWUucmFuZ2Uuc3RhcnQubGluZS10LnJhbmdlLnN0YXJ0LmxpbmU7cmV0dXJuIDA9PT1uP2UucmFuZ2Uuc3RhcnQuY2hhcmFjdGVyLXQucmFuZ2Uuc3RhcnQuY2hhcmFjdGVyOm59KSksbz1yLmxlbmd0aCxzPWkubGVuZ3RoLTE7cz49MDtzLS0pe3ZhciBhPWlbc10sbD1lLm9mZnNldEF0KGEucmFuZ2Uuc3RhcnQpLGM9ZS5vZmZzZXRBdChhLnJhbmdlLmVuZCk7aWYoIShjPD1vKSl0aHJvdyBuZXcgRXJyb3IoIk92ZXJsYXBwaW5nIGVkaXQiKTtyPXIuc3Vic3RyaW5nKDAsbCkrYS5uZXdUZXh0K3Iuc3Vic3RyaW5nKGMsci5sZW5ndGgpLG89bH1yZXR1cm4gcn19KHdhfHwod2E9e30pKTt2YXIgQ2Esa2EsX2EsRWE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuLHIpe3RoaXMuX3VyaT1lLHRoaXMuX2xhbmd1YWdlSWQ9dCx0aGlzLl92ZXJzaW9uPW4sdGhpcy5fY29udGVudD1yLHRoaXMuX2xpbmVPZmZzZXRzPXZvaWQgMH1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ1cmkiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdXJpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwibGFuZ3VhZ2VJZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sYW5ndWFnZUlkfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidmVyc2lvbiIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92ZXJzaW9ufSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmdldFRleHQ9ZnVuY3Rpb24oZSl7aWYoZSl7dmFyIHQ9dGhpcy5vZmZzZXRBdChlLnN0YXJ0KSxuPXRoaXMub2Zmc2V0QXQoZS5lbmQpO3JldHVybiB0aGlzLl9jb250ZW50LnN1YnN0cmluZyh0LG4pfXJldHVybiB0aGlzLl9jb250ZW50fSxlLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZSx0KXt0aGlzLl9jb250ZW50PWUudGV4dCx0aGlzLl92ZXJzaW9uPXQsdGhpcy5fbGluZU9mZnNldHM9dm9pZCAwfSxlLnByb3RvdHlwZS5nZXRMaW5lT2Zmc2V0cz1mdW5jdGlvbigpe2lmKHZvaWQgMD09PXRoaXMuX2xpbmVPZmZzZXRzKXtmb3IodmFyIGU9W10sdD10aGlzLl9jb250ZW50LG49ITAscj0wO3I8dC5sZW5ndGg7cisrKXtuJiYoZS5wdXNoKHIpLG49ITEpO3ZhciBpPXQuY2hhckF0KHIpO249IlxyIj09PWl8fCJcbiI9PT1pLCJcciI9PT1pJiZyKzE8dC5sZW5ndGgmJiJcbiI9PT10LmNoYXJBdChyKzEpJiZyKyt9biYmdC5sZW5ndGg+MCYmZS5wdXNoKHQubGVuZ3RoKSx0aGlzLl9saW5lT2Zmc2V0cz1lfXJldHVybiB0aGlzLl9saW5lT2Zmc2V0c30sZS5wcm90b3R5cGUucG9zaXRpb25BdD1mdW5jdGlvbihlKXtlPU1hdGgubWF4KE1hdGgubWluKGUsdGhpcy5fY29udGVudC5sZW5ndGgpLDApO3ZhciB0PXRoaXMuZ2V0TGluZU9mZnNldHMoKSxuPTAscj10Lmxlbmd0aDtpZigwPT09cilyZXR1cm4gTm8uY3JlYXRlKDAsZSk7Zm9yKDtuPHI7KXt2YXIgaT1NYXRoLmZsb29yKChuK3IpLzIpO3RbaV0+ZT9yPWk6bj1pKzF9dmFyIG89bi0xO3JldHVybiBOby5jcmVhdGUobyxlLXRbb10pfSxlLnByb3RvdHlwZS5vZmZzZXRBdD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldExpbmVPZmZzZXRzKCk7aWYoZS5saW5lPj10Lmxlbmd0aClyZXR1cm4gdGhpcy5fY29udGVudC5sZW5ndGg7aWYoZS5saW5lPDApcmV0dXJuIDA7dmFyIG49dFtlLmxpbmVdLHI9ZS5saW5lKzE8dC5sZW5ndGg/dFtlLmxpbmUrMV06dGhpcy5fY29udGVudC5sZW5ndGg7cmV0dXJuIE1hdGgubWF4KE1hdGgubWluKG4rZS5jaGFyYWN0ZXIsciksbil9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwibGluZUNvdW50Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0TGluZU9mZnNldHMoKS5sZW5ndGh9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZX0oKTtrYT1DYXx8KENhPXt9KSxfYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLGthLmRlZmluZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWV9LGthLnVuZGVmaW5lZD1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZX0sa2EuYm9vbGVhbj1mdW5jdGlvbihlKXtyZXR1cm4hMD09PWV8fCExPT09ZX0sa2Euc3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09X2EuY2FsbChlKX0sa2EubnVtYmVyPWZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09X2EuY2FsbChlKX0sa2EubnVtYmVyUmFuZ2U9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09X2EuY2FsbChlKSYmdDw9ZSYmZTw9bn0sa2EuaW50ZWdlcj1mdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PV9hLmNhbGwoZSkmJi0yMTQ3NDgzNjQ4PD1lJiZlPD0yMTQ3NDgzNjQ3fSxrYS51aW50ZWdlcj1mdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PV9hLmNhbGwoZSkmJjA8PWUmJmU8PTIxNDc0ODM2NDd9LGthLmZ1bmM9ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgRnVuY3Rpb25dIj09PV9hLmNhbGwoZSl9LGthLm9iamVjdExpdGVyYWw9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV9LGthLnR5cGVkQXJyYXk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmZS5ldmVyeSh0KX07dmFyIEZhLFJhLERhLE5hLFRhLEFhPWNsYXNze2NvbnN0cnVjdG9yKGUsdCxuLHIpe3RoaXMuX3VyaT1lLHRoaXMuX2xhbmd1YWdlSWQ9dCx0aGlzLl92ZXJzaW9uPW4sdGhpcy5fY29udGVudD1yLHRoaXMuX2xpbmVPZmZzZXRzPXZvaWQgMH1nZXQgdXJpKCl7cmV0dXJuIHRoaXMuX3VyaX1nZXQgbGFuZ3VhZ2VJZCgpe3JldHVybiB0aGlzLl9sYW5ndWFnZUlkfWdldCB2ZXJzaW9uKCl7cmV0dXJuIHRoaXMuX3ZlcnNpb259Z2V0VGV4dChlKXtpZihlKXtjb25zdCB0PXRoaXMub2Zmc2V0QXQoZS5zdGFydCksbj10aGlzLm9mZnNldEF0KGUuZW5kKTtyZXR1cm4gdGhpcy5fY29udGVudC5zdWJzdHJpbmcodCxuKX1yZXR1cm4gdGhpcy5fY29udGVudH11cGRhdGUoZSx0KXtmb3IobGV0IHQgb2YgZSlpZihBYS5pc0luY3JlbWVudGFsKHQpKXtjb25zdCBlPU1hKHQucmFuZ2UpLG49dGhpcy5vZmZzZXRBdChlLnN0YXJ0KSxyPXRoaXMub2Zmc2V0QXQoZS5lbmQpO3RoaXMuX2NvbnRlbnQ9dGhpcy5fY29udGVudC5zdWJzdHJpbmcoMCxuKSt0LnRleHQrdGhpcy5fY29udGVudC5zdWJzdHJpbmcocix0aGlzLl9jb250ZW50Lmxlbmd0aCk7Y29uc3QgaT1NYXRoLm1heChlLnN0YXJ0LmxpbmUsMCksbz1NYXRoLm1heChlLmVuZC5saW5lLDApO2xldCBzPXRoaXMuX2xpbmVPZmZzZXRzO2NvbnN0IGE9SWEodC50ZXh0LCExLG4pO2lmKG8taT09PWEubGVuZ3RoKWZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0O2UrKylzW2UraSsxXT1hW2VdO2Vsc2UgYS5sZW5ndGg8MWU0P3Muc3BsaWNlKGkrMSxvLWksLi4uYSk6dGhpcy5fbGluZU9mZnNldHM9cz1zLnNsaWNlKDAsaSsxKS5jb25jYXQoYSxzLnNsaWNlKG8rMSkpO2NvbnN0IGw9dC50ZXh0Lmxlbmd0aC0oci1uKTtpZigwIT09bClmb3IobGV0IGU9aSsxK2EubGVuZ3RoLHQ9cy5sZW5ndGg7ZTx0O2UrKylzW2VdPXNbZV0rbH1lbHNle2lmKCFBYS5pc0Z1bGwodCkpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGNoYW5nZSBldmVudCByZWNlaXZlZCIpO3RoaXMuX2NvbnRlbnQ9dC50ZXh0LHRoaXMuX2xpbmVPZmZzZXRzPXZvaWQgMH10aGlzLl92ZXJzaW9uPXR9Z2V0TGluZU9mZnNldHMoKXtyZXR1cm4gdm9pZCAwPT09dGhpcy5fbGluZU9mZnNldHMmJih0aGlzLl9saW5lT2Zmc2V0cz1JYSh0aGlzLl9jb250ZW50LCEwKSksdGhpcy5fbGluZU9mZnNldHN9cG9zaXRpb25BdChlKXtlPU1hdGgubWF4KE1hdGgubWluKGUsdGhpcy5fY29udGVudC5sZW5ndGgpLDApO2xldCB0PXRoaXMuZ2V0TGluZU9mZnNldHMoKSxuPTAscj10Lmxlbmd0aDtpZigwPT09cilyZXR1cm57bGluZTowLGNoYXJhY3RlcjplfTtmb3IoO248cjspe2xldCBpPU1hdGguZmxvb3IoKG4rcikvMik7dFtpXT5lP3I9aTpuPWkrMX1sZXQgaT1uLTE7cmV0dXJue2xpbmU6aSxjaGFyYWN0ZXI6ZS10W2ldfX1vZmZzZXRBdChlKXtsZXQgdD10aGlzLmdldExpbmVPZmZzZXRzKCk7aWYoZS5saW5lPj10Lmxlbmd0aClyZXR1cm4gdGhpcy5fY29udGVudC5sZW5ndGg7aWYoZS5saW5lPDApcmV0dXJuIDA7bGV0IG49dFtlLmxpbmVdLHI9ZS5saW5lKzE8dC5sZW5ndGg/dFtlLmxpbmUrMV06dGhpcy5fY29udGVudC5sZW5ndGg7cmV0dXJuIE1hdGgubWF4KE1hdGgubWluKG4rZS5jaGFyYWN0ZXIsciksbil9Z2V0IGxpbmVDb3VudCgpe3JldHVybiB0aGlzLmdldExpbmVPZmZzZXRzKCkubGVuZ3RofXN0YXRpYyBpc0luY3JlbWVudGFsKGUpe2xldCB0PWU7cmV0dXJuIG51bGwhPXQmJiJzdHJpbmciPT10eXBlb2YgdC50ZXh0JiZ2b2lkIDAhPT10LnJhbmdlJiYodm9pZCAwPT09dC5yYW5nZUxlbmd0aHx8Im51bWJlciI9PXR5cGVvZiB0LnJhbmdlTGVuZ3RoKX1zdGF0aWMgaXNGdWxsKGUpe2xldCB0PWU7cmV0dXJuIG51bGwhPXQmJiJzdHJpbmciPT10eXBlb2YgdC50ZXh0JiZ2b2lkIDA9PT10LnJhbmdlJiZ2b2lkIDA9PT10LnJhbmdlTGVuZ3RofX07ZnVuY3Rpb24gemEoZSx0KXtpZihlLmxlbmd0aDw9MSlyZXR1cm4gZTtjb25zdCBuPWUubGVuZ3RoLzJ8MCxyPWUuc2xpY2UoMCxuKSxpPWUuc2xpY2Uobik7emEocix0KSx6YShpLHQpO2xldCBvPTAscz0wLGE9MDtmb3IoO288ci5sZW5ndGgmJnM8aS5sZW5ndGg7KXtsZXQgbj10KHJbb10saVtzXSk7ZVthKytdPW48PTA/cltvKytdOmlbcysrXX1mb3IoO288ci5sZW5ndGg7KWVbYSsrXT1yW28rK107Zm9yKDtzPGkubGVuZ3RoOyllW2ErK109aVtzKytdO3JldHVybiBlfWZ1bmN0aW9uIElhKGUsdCxuPTApe2NvbnN0IHI9dD9bbl06W107Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2xldCBpPWUuY2hhckNvZGVBdCh0KTsxMyE9PWkmJjEwIT09aXx8KDEzPT09aSYmdCsxPGUubGVuZ3RoJiYxMD09PWUuY2hhckNvZGVBdCh0KzEpJiZ0Kyssci5wdXNoKG4rdCsxKSl9cmV0dXJuIHJ9ZnVuY3Rpb24gTWEoZSl7Y29uc3QgdD1lLnN0YXJ0LG49ZS5lbmQ7cmV0dXJuIHQubGluZT5uLmxpbmV8fHQubGluZT09PW4ubGluZSYmdC5jaGFyYWN0ZXI+bi5jaGFyYWN0ZXI/e3N0YXJ0Om4sZW5kOnR9OmV9ZnVuY3Rpb24gUGEoZSl7Y29uc3QgdD1NYShlLnJhbmdlKTtyZXR1cm4gdCE9PWUucmFuZ2U/e25ld1RleHQ6ZS5uZXdUZXh0LHJhbmdlOnR9OmV9KFJhPUZhfHwoRmE9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIG5ldyBBYShlLHQsbixyKX0sUmEudXBkYXRlPWZ1bmN0aW9uKGUsdCxuKXtpZihlIGluc3RhbmNlb2YgQWEpcmV0dXJuIGUudXBkYXRlKHQsbiksZTt0aHJvdyBuZXcgRXJyb3IoIlRleHREb2N1bWVudC51cGRhdGU6IGRvY3VtZW50IG11c3QgYmUgY3JlYXRlZCBieSBUZXh0RG9jdW1lbnQuY3JlYXRlIil9LFJhLmFwcGx5RWRpdHM9ZnVuY3Rpb24oZSx0KXtsZXQgbj1lLmdldFRleHQoKSxyPXphKHQubWFwKFBhKSwoKGUsdCk9PntsZXQgbj1lLnJhbmdlLnN0YXJ0LmxpbmUtdC5yYW5nZS5zdGFydC5saW5lO3JldHVybiAwPT09bj9lLnJhbmdlLnN0YXJ0LmNoYXJhY3Rlci10LnJhbmdlLnN0YXJ0LmNoYXJhY3RlcjpufSkpLGk9MDtjb25zdCBvPVtdO2Zvcihjb25zdCB0IG9mIHIpe2xldCByPWUub2Zmc2V0QXQodC5yYW5nZS5zdGFydCk7aWYocjxpKXRocm93IG5ldyBFcnJvcigiT3ZlcmxhcHBpbmcgZWRpdCIpO3I+aSYmby5wdXNoKG4uc3Vic3RyaW5nKGkscikpLHQubmV3VGV4dC5sZW5ndGgmJm8ucHVzaCh0Lm5ld1RleHQpLGk9ZS5vZmZzZXRBdCh0LnJhbmdlLmVuZCl9cmV0dXJuIG8ucHVzaChuLnN1YnN0cihpKSksby5qb2luKCIiKX0sKERhfHwoRGE9e30pKS5MQVRFU1Q9e3RleHREb2N1bWVudDp7Y29tcGxldGlvbjp7Y29tcGxldGlvbkl0ZW06e2RvY3VtZW50YXRpb25Gb3JtYXQ6W0FzLk1hcmtkb3duLEFzLlBsYWluVGV4dF19fSxob3Zlcjp7Y29udGVudEZvcm1hdDpbQXMuTWFya2Rvd24sQXMuUGxhaW5UZXh0XX19fSwoVGE9TmF8fChOYT17fSkpW1RhLlVua25vd249MF09IlVua25vd24iLFRhW1RhLkZpbGU9MV09IkZpbGUiLFRhW1RhLkRpcmVjdG9yeT0yXT0iRGlyZWN0b3J5IixUYVtUYS5TeW1ib2xpY0xpbms9NjRdPSJTeW1ib2xpY0xpbmsiO3ZhciBPYT17RToiRWRnZSIsRkY6IkZpcmVmb3giLFM6IlNhZmFyaSIsQzoiQ2hyb21lIixJRToiSUUiLE86Ik9wZXJhIn07ZnVuY3Rpb24gTGEoZSl7c3dpdGNoKGUpe2Nhc2UiZXhwZXJpbWVudGFsIjpyZXR1cm4i4pqg77iPIFByb3BlcnR5IGlzIGV4cGVyaW1lbnRhbC4gQmUgY2F1dGlvdXMgd2hlbiB1c2luZyBpdC7vuI9cblxuIjtjYXNlIm5vbnN0YW5kYXJkIjpyZXR1cm4i8J+aqO+4jyBQcm9wZXJ0eSBpcyBub25zdGFuZGFyZC4gQXZvaWQgdXNpbmcgaXQuXG5cbiI7Y2FzZSJvYnNvbGV0ZSI6cmV0dXJuIvCfmqjvuI/vuI/vuI8gUHJvcGVydHkgaXMgb2Jzb2xldGUuIEF2b2lkIHVzaW5nIGl0LlxuXG4iO2RlZmF1bHQ6cmV0dXJuIiJ9fWZ1bmN0aW9uIFdhKGUsdCxuKXt2YXIgcjtpZigiIiE9PShyPXQ/e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTpLYShlLG4pfTp7a2luZDoicGxhaW50ZXh0Iix2YWx1ZTpVYShlLG4pfSkudmFsdWUpcmV0dXJuIHJ9ZnVuY3Rpb24gVmEoZSl7cmV0dXJuKGU9ZS5yZXBsYWNlKC9bXFxgKl97fVtcXSgpIytcLS4hXS9nLCJcXCQmIikpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIFVhKGUsdCl7aWYoIWUuZGVzY3JpcHRpb258fCIiPT09ZS5kZXNjcmlwdGlvbilyZXR1cm4iIjtpZigic3RyaW5nIiE9dHlwZW9mIGUuZGVzY3JpcHRpb24pcmV0dXJuIGUuZGVzY3JpcHRpb24udmFsdWU7dmFyIG49IiI7aWYoITEhPT0obnVsbD09dD92b2lkIDA6dC5kb2N1bWVudGF0aW9uKSl7ZS5zdGF0dXMmJihuKz1MYShlLnN0YXR1cykpLG4rPWUuZGVzY3JpcHRpb247dmFyIHI9QmEoZS5icm93c2Vycyk7ciYmKG4rPSJcbigiK3IrIikiKSwic3ludGF4ImluIGUmJihuKz0iXG5cblN5bnRheDogIi5jb25jYXQoZS5zeW50YXgpKX1yZXR1cm4gZS5yZWZlcmVuY2VzJiZlLnJlZmVyZW5jZXMubGVuZ3RoPjAmJiExIT09KG51bGw9PXQ/dm9pZCAwOnQucmVmZXJlbmNlcykmJihuLmxlbmd0aD4wJiYobis9IlxuXG4iKSxuKz1lLnJlZmVyZW5jZXMubWFwKChmdW5jdGlvbihlKXtyZXR1cm4iIi5jb25jYXQoZS5uYW1lLCI6ICIpLmNvbmNhdChlLnVybCl9KSkuam9pbigiIHwgIikpLG59ZnVuY3Rpb24gS2EoZSx0KXtpZighZS5kZXNjcmlwdGlvbnx8IiI9PT1lLmRlc2NyaXB0aW9uKXJldHVybiIiO3ZhciBuPSIiO2lmKCExIT09KG51bGw9PXQ/dm9pZCAwOnQuZG9jdW1lbnRhdGlvbikpe2Uuc3RhdHVzJiYobis9TGEoZS5zdGF0dXMpKSwic3RyaW5nIj09dHlwZW9mIGUuZGVzY3JpcHRpb24/bis9VmEoZS5kZXNjcmlwdGlvbik6bis9ZS5kZXNjcmlwdGlvbi5raW5kPT09QXMuTWFya2Rvd24/ZS5kZXNjcmlwdGlvbi52YWx1ZTpWYShlLmRlc2NyaXB0aW9uLnZhbHVlKTt2YXIgcj1CYShlLmJyb3dzZXJzKTtyJiYobis9IlxuXG4oIitWYShyKSsiKSIpLCJzeW50YXgiaW4gZSYmZS5zeW50YXgmJihuKz0iXG5cblN5bnRheDogIi5jb25jYXQoVmEoZS5zeW50YXgpKSl9cmV0dXJuIGUucmVmZXJlbmNlcyYmZS5yZWZlcmVuY2VzLmxlbmd0aD4wJiYhMSE9PShudWxsPT10P3ZvaWQgMDp0LnJlZmVyZW5jZXMpJiYobi5sZW5ndGg+MCYmKG4rPSJcblxuIiksbis9ZS5yZWZlcmVuY2VzLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIlsiLmNvbmNhdChlLm5hbWUsIl0oIikuY29uY2F0KGUudXJsLCIpIil9KSkuam9pbigiIHwgIikpLG59ZnVuY3Rpb24gQmEoZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPVtdKSwwPT09ZS5sZW5ndGg/bnVsbDplLm1hcCgoZnVuY3Rpb24oZSl7dmFyIHQ9IiIsbj1lLm1hdGNoKC8oW0EtWl0rKShcZCspPy8pLHI9blsxXSxpPW5bMl07cmV0dXJuIHIgaW4gT2EmJih0Kz1PYVtyXSksaSYmKHQrPSIgIitpKSx0fSkpLmpvaW4oIiwgIil9dmFyIGphPV9vKCkscWE9W3tmdW5jOiJyZ2IoJHJlZCwgJGdyZWVuLCAkYmx1ZSkiLGRlc2M6amEoImNzcy5idWlsdGluLnJnYiIsIkNyZWF0ZXMgYSBDb2xvciBmcm9tIHJlZCwgZ3JlZW4sIGFuZCBibHVlIHZhbHVlcy4iKX0se2Z1bmM6InJnYmEoJHJlZCwgJGdyZWVuLCAkYmx1ZSwgJGFscGhhKSIsZGVzYzpqYSgiY3NzLmJ1aWx0aW4ucmdiYSIsIkNyZWF0ZXMgYSBDb2xvciBmcm9tIHJlZCwgZ3JlZW4sIGJsdWUsIGFuZCBhbHBoYSB2YWx1ZXMuIil9LHtmdW5jOiJoc2woJGh1ZSwgJHNhdHVyYXRpb24sICRsaWdodG5lc3MpIixkZXNjOmphKCJjc3MuYnVpbHRpbi5oc2wiLCJDcmVhdGVzIGEgQ29sb3IgZnJvbSBodWUsIHNhdHVyYXRpb24sIGFuZCBsaWdodG5lc3MgdmFsdWVzLiIpfSx7ZnVuYzoiaHNsYSgkaHVlLCAkc2F0dXJhdGlvbiwgJGxpZ2h0bmVzcywgJGFscGhhKSIsZGVzYzpqYSgiY3NzLmJ1aWx0aW4uaHNsYSIsIkNyZWF0ZXMgYSBDb2xvciBmcm9tIGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzLCBhbmQgYWxwaGEgdmFsdWVzLiIpfSx7ZnVuYzoiaHdiKCRodWUgJHdoaXRlICRibGFjaykiLGRlc2M6amEoImNzcy5idWlsdGluLmh3YiIsIkNyZWF0ZXMgYSBDb2xvciBmcm9tIGh1ZSwgd2hpdGUgYW5kIGJsYWNrLiIpfV0sJGE9e2FsaWNlYmx1ZToiI2YwZjhmZiIsYW50aXF1ZXdoaXRlOiIjZmFlYmQ3IixhcXVhOiIjMDBmZmZmIixhcXVhbWFyaW5lOiIjN2ZmZmQ0IixhenVyZToiI2YwZmZmZiIsYmVpZ2U6IiNmNWY1ZGMiLGJpc3F1ZToiI2ZmZTRjNCIsYmxhY2s6IiMwMDAwMDAiLGJsYW5jaGVkYWxtb25kOiIjZmZlYmNkIixibHVlOiIjMDAwMGZmIixibHVldmlvbGV0OiIjOGEyYmUyIixicm93bjoiI2E1MmEyYSIsYnVybHl3b29kOiIjZGViODg3IixjYWRldGJsdWU6IiM1ZjllYTAiLGNoYXJ0cmV1c2U6IiM3ZmZmMDAiLGNob2NvbGF0ZToiI2QyNjkxZSIsY29yYWw6IiNmZjdmNTAiLGNvcm5mbG93ZXJibHVlOiIjNjQ5NWVkIixjb3Juc2lsazoiI2ZmZjhkYyIsY3JpbXNvbjoiI2RjMTQzYyIsY3lhbjoiIzAwZmZmZiIsZGFya2JsdWU6IiMwMDAwOGIiLGRhcmtjeWFuOiIjMDA4YjhiIixkYXJrZ29sZGVucm9kOiIjYjg4NjBiIixkYXJrZ3JheToiI2E5YTlhOSIsZGFya2dyZXk6IiNhOWE5YTkiLGRhcmtncmVlbjoiIzAwNjQwMCIsZGFya2toYWtpOiIjYmRiNzZiIixkYXJrbWFnZW50YToiIzhiMDA4YiIsZGFya29saXZlZ3JlZW46IiM1NTZiMmYiLGRhcmtvcmFuZ2U6IiNmZjhjMDAiLGRhcmtvcmNoaWQ6IiM5OTMyY2MiLGRhcmtyZWQ6IiM4YjAwMDAiLGRhcmtzYWxtb246IiNlOTk2N2EiLGRhcmtzZWFncmVlbjoiIzhmYmM4ZiIsZGFya3NsYXRlYmx1ZToiIzQ4M2Q4YiIsZGFya3NsYXRlZ3JheToiIzJmNGY0ZiIsZGFya3NsYXRlZ3JleToiIzJmNGY0ZiIsZGFya3R1cnF1b2lzZToiIzAwY2VkMSIsZGFya3Zpb2xldDoiIzk0MDBkMyIsZGVlcHBpbms6IiNmZjE0OTMiLGRlZXBza3libHVlOiIjMDBiZmZmIixkaW1ncmF5OiIjNjk2OTY5IixkaW1ncmV5OiIjNjk2OTY5Iixkb2RnZXJibHVlOiIjMWU5MGZmIixmaXJlYnJpY2s6IiNiMjIyMjIiLGZsb3JhbHdoaXRlOiIjZmZmYWYwIixmb3Jlc3RncmVlbjoiIzIyOGIyMiIsZnVjaHNpYToiI2ZmMDBmZiIsZ2FpbnNib3JvOiIjZGNkY2RjIixnaG9zdHdoaXRlOiIjZjhmOGZmIixnb2xkOiIjZmZkNzAwIixnb2xkZW5yb2Q6IiNkYWE1MjAiLGdyYXk6IiM4MDgwODAiLGdyZXk6IiM4MDgwODAiLGdyZWVuOiIjMDA4MDAwIixncmVlbnllbGxvdzoiI2FkZmYyZiIsaG9uZXlkZXc6IiNmMGZmZjAiLGhvdHBpbms6IiNmZjY5YjQiLGluZGlhbnJlZDoiI2NkNWM1YyIsaW5kaWdvOiIjNGIwMDgyIixpdm9yeToiI2ZmZmZmMCIsa2hha2k6IiNmMGU2OGMiLGxhdmVuZGVyOiIjZTZlNmZhIixsYXZlbmRlcmJsdXNoOiIjZmZmMGY1IixsYXduZ3JlZW46IiM3Y2ZjMDAiLGxlbW9uY2hpZmZvbjoiI2ZmZmFjZCIsbGlnaHRibHVlOiIjYWRkOGU2IixsaWdodGNvcmFsOiIjZjA4MDgwIixsaWdodGN5YW46IiNlMGZmZmYiLGxpZ2h0Z29sZGVucm9keWVsbG93OiIjZmFmYWQyIixsaWdodGdyYXk6IiNkM2QzZDMiLGxpZ2h0Z3JleToiI2QzZDNkMyIsbGlnaHRncmVlbjoiIzkwZWU5MCIsbGlnaHRwaW5rOiIjZmZiNmMxIixsaWdodHNhbG1vbjoiI2ZmYTA3YSIsbGlnaHRzZWFncmVlbjoiIzIwYjJhYSIsbGlnaHRza3libHVlOiIjODdjZWZhIixsaWdodHNsYXRlZ3JheToiIzc3ODg5OSIsbGlnaHRzbGF0ZWdyZXk6IiM3Nzg4OTkiLGxpZ2h0c3RlZWxibHVlOiIjYjBjNGRlIixsaWdodHllbGxvdzoiI2ZmZmZlMCIsbGltZToiIzAwZmYwMCIsbGltZWdyZWVuOiIjMzJjZDMyIixsaW5lbjoiI2ZhZjBlNiIsbWFnZW50YToiI2ZmMDBmZiIsbWFyb29uOiIjODAwMDAwIixtZWRpdW1hcXVhbWFyaW5lOiIjNjZjZGFhIixtZWRpdW1ibHVlOiIjMDAwMGNkIixtZWRpdW1vcmNoaWQ6IiNiYTU1ZDMiLG1lZGl1bXB1cnBsZToiIzkzNzBkOCIsbWVkaXVtc2VhZ3JlZW46IiMzY2IzNzEiLG1lZGl1bXNsYXRlYmx1ZToiIzdiNjhlZSIsbWVkaXVtc3ByaW5nZ3JlZW46IiMwMGZhOWEiLG1lZGl1bXR1cnF1b2lzZToiIzQ4ZDFjYyIsbWVkaXVtdmlvbGV0cmVkOiIjYzcxNTg1IixtaWRuaWdodGJsdWU6IiMxOTE5NzAiLG1pbnRjcmVhbToiI2Y1ZmZmYSIsbWlzdHlyb3NlOiIjZmZlNGUxIixtb2NjYXNpbjoiI2ZmZTRiNSIsbmF2YWpvd2hpdGU6IiNmZmRlYWQiLG5hdnk6IiMwMDAwODAiLG9sZGxhY2U6IiNmZGY1ZTYiLG9saXZlOiIjODA4MDAwIixvbGl2ZWRyYWI6IiM2YjhlMjMiLG9yYW5nZToiI2ZmYTUwMCIsb3JhbmdlcmVkOiIjZmY0NTAwIixvcmNoaWQ6IiNkYTcwZDYiLHBhbGVnb2xkZW5yb2Q6IiNlZWU4YWEiLHBhbGVncmVlbjoiIzk4ZmI5OCIscGFsZXR1cnF1b2lzZToiI2FmZWVlZSIscGFsZXZpb2xldHJlZDoiI2Q4NzA5MyIscGFwYXlhd2hpcDoiI2ZmZWZkNSIscGVhY2hwdWZmOiIjZmZkYWI5IixwZXJ1OiIjY2Q4NTNmIixwaW5rOiIjZmZjMGNiIixwbHVtOiIjZGRhMGRkIixwb3dkZXJibHVlOiIjYjBlMGU2IixwdXJwbGU6IiM4MDAwODAiLHJlZDoiI2ZmMDAwMCIscmViZWNjYXB1cnBsZToiIzY2MzM5OSIscm9zeWJyb3duOiIjYmM4ZjhmIixyb3lhbGJsdWU6IiM0MTY5ZTEiLHNhZGRsZWJyb3duOiIjOGI0NTEzIixzYWxtb246IiNmYTgwNzIiLHNhbmR5YnJvd246IiNmNGE0NjAiLHNlYWdyZWVuOiIjMmU4YjU3IixzZWFzaGVsbDoiI2ZmZjVlZSIsc2llbm5hOiIjYTA1MjJkIixzaWx2ZXI6IiNjMGMwYzAiLHNreWJsdWU6IiM4N2NlZWIiLHNsYXRlYmx1ZToiIzZhNWFjZCIsc2xhdGVncmF5OiIjNzA4MDkwIixzbGF0ZWdyZXk6IiM3MDgwOTAiLHNub3c6IiNmZmZhZmEiLHNwcmluZ2dyZWVuOiIjMDBmZjdmIixzdGVlbGJsdWU6IiM0NjgyYjQiLHRhbjoiI2QyYjQ4YyIsdGVhbDoiIzAwODA4MCIsdGhpc3RsZToiI2Q4YmZkOCIsdG9tYXRvOiIjZmY2MzQ3Iix0dXJxdW9pc2U6IiM0MGUwZDAiLHZpb2xldDoiI2VlODJlZSIsd2hlYXQ6IiNmNWRlYjMiLHdoaXRlOiIjZmZmZmZmIix3aGl0ZXNtb2tlOiIjZjVmNWY1Iix5ZWxsb3c6IiNmZmZmMDAiLHllbGxvd2dyZWVuOiIjOWFjZDMyIn0sSGE9e2N1cnJlbnRDb2xvcjoiVGhlIHZhbHVlIG9mIHRoZSAnY29sb3InIHByb3BlcnR5LiBUaGUgY29tcHV0ZWQgdmFsdWUgb2YgdGhlICdjdXJyZW50Q29sb3InIGtleXdvcmQgaXMgdGhlIGNvbXB1dGVkIHZhbHVlIG9mIHRoZSAnY29sb3InIHByb3BlcnR5LiBJZiB0aGUgJ2N1cnJlbnRDb2xvcicga2V5d29yZCBpcyBzZXQgb24gdGhlICdjb2xvcicgcHJvcGVydHkgaXRzZWxmLCBpdCBpcyB0cmVhdGVkIGFzICdjb2xvcjppbmhlcml0JyBhdCBwYXJzZSB0aW1lLiIsdHJhbnNwYXJlbnQ6IkZ1bGx5IHRyYW5zcGFyZW50LiBUaGlzIGtleXdvcmQgY2FuIGJlIGNvbnNpZGVyZWQgYSBzaG9ydGhhbmQgZm9yIHJnYmEoMCwwLDAsMCkgd2hpY2ggaXMgaXRzIGNvbXB1dGVkIHZhbHVlLiJ9O2Z1bmN0aW9uIEdhKGUsdCl7dmFyIG49ZS5nZXRUZXh0KCkubWF0Y2goL14oWy0rXT9bMC05XSpcLj9bMC05XSspKCU/KSQvKTtpZihuKXtuWzJdJiYodD0xMDApO3ZhciByPXBhcnNlRmxvYXQoblsxXSkvdDtpZihyPj0wJiZyPD0xKXJldHVybiByfXRocm93IG5ldyBFcnJvcn1mdW5jdGlvbiBKYShlKXt2YXIgdD1lLmdldFRleHQoKSxuPXQubWF0Y2goL14oWy0rXT9bMC05XSpcLj9bMC05XSspKGRlZ3xyYWR8Z3JhZHx0dXJuKT8kLyk7aWYobilzd2l0Y2goblsyXSl7Y2FzZSJkZWciOnJldHVybiBwYXJzZUZsb2F0KHQpJTM2MDtjYXNlInJhZCI6cmV0dXJuIDE4MCpwYXJzZUZsb2F0KHQpL01hdGguUEklMzYwO2Nhc2UiZ3JhZCI6cmV0dXJuLjkqcGFyc2VGbG9hdCh0KSUzNjA7Y2FzZSJ0dXJuIjpyZXR1cm4gMzYwKnBhcnNlRmxvYXQodCklMzYwO2RlZmF1bHQ6aWYodm9pZCAwPT09blsyXSlyZXR1cm4gcGFyc2VGbG9hdCh0KSUzNjB9dGhyb3cgbmV3IEVycm9yfWZ1bmN0aW9uIFhhKGUpe3JldHVybiBlPDQ4PzA6ZTw9NTc/ZS00ODooZTw5NyYmKGUrPTMyKSxlPj05NyYmZTw9MTAyP2UtOTcrMTA6MCl9ZnVuY3Rpb24gWWEoZSl7aWYoIiMiIT09ZVswXSlyZXR1cm4gbnVsbDtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgNDpyZXR1cm57cmVkOjE3KlhhKGUuY2hhckNvZGVBdCgxKSkvMjU1LGdyZWVuOjE3KlhhKGUuY2hhckNvZGVBdCgyKSkvMjU1LGJsdWU6MTcqWGEoZS5jaGFyQ29kZUF0KDMpKS8yNTUsYWxwaGE6MX07Y2FzZSA1OnJldHVybntyZWQ6MTcqWGEoZS5jaGFyQ29kZUF0KDEpKS8yNTUsZ3JlZW46MTcqWGEoZS5jaGFyQ29kZUF0KDIpKS8yNTUsYmx1ZToxNypYYShlLmNoYXJDb2RlQXQoMykpLzI1NSxhbHBoYToxNypYYShlLmNoYXJDb2RlQXQoNCkpLzI1NX07Y2FzZSA3OnJldHVybntyZWQ6KDE2KlhhKGUuY2hhckNvZGVBdCgxKSkrWGEoZS5jaGFyQ29kZUF0KDIpKSkvMjU1LGdyZWVuOigxNipYYShlLmNoYXJDb2RlQXQoMykpK1hhKGUuY2hhckNvZGVBdCg0KSkpLzI1NSxibHVlOigxNipYYShlLmNoYXJDb2RlQXQoNSkpK1hhKGUuY2hhckNvZGVBdCg2KSkpLzI1NSxhbHBoYToxfTtjYXNlIDk6cmV0dXJue3JlZDooMTYqWGEoZS5jaGFyQ29kZUF0KDEpKStYYShlLmNoYXJDb2RlQXQoMikpKS8yNTUsZ3JlZW46KDE2KlhhKGUuY2hhckNvZGVBdCgzKSkrWGEoZS5jaGFyQ29kZUF0KDQpKSkvMjU1LGJsdWU6KDE2KlhhKGUuY2hhckNvZGVBdCg1KSkrWGEoZS5jaGFyQ29kZUF0KDYpKSkvMjU1LGFscGhhOigxNipYYShlLmNoYXJDb2RlQXQoNykpK1hhKGUuY2hhckNvZGVBdCg4KSkpLzI1NX19cmV0dXJuIG51bGx9ZnVuY3Rpb24gWmEoZSx0LG4scil7aWYodm9pZCAwPT09ciYmKHI9MSksMD09PXQpcmV0dXJue3JlZDpuLGdyZWVuOm4sYmx1ZTpuLGFscGhhOnJ9O3ZhciBpPWZ1bmN0aW9uKGUsdCxuKXtmb3IoO248MDspbis9Njtmb3IoO24+PTY7KW4tPTY7cmV0dXJuIG48MT8odC1lKSpuK2U6bjwzP3Q6bjw0Pyh0LWUpKig0LW4pK2U6ZX0sbz1uPD0uNT9uKih0KzEpOm4rdC1uKnQscz0yKm4tbztyZXR1cm57cmVkOmkocyxvLChlLz02MCkrMiksZ3JlZW46aShzLG8sZSksYmx1ZTppKHMsbyxlLTIpLGFscGhhOnJ9fWZ1bmN0aW9uIFFhKGUpe3ZhciB0PWUucmVkLG49ZS5ncmVlbixyPWUuYmx1ZSxpPWUuYWxwaGEsbz1NYXRoLm1heCh0LG4scikscz1NYXRoLm1pbih0LG4sciksYT0wLGw9MCxjPShzK28pLzIsaD1vLXM7aWYoaD4wKXtzd2l0Y2gobD1NYXRoLm1pbihjPD0uNT9oLygyKmMpOmgvKDItMipjKSwxKSxvKXtjYXNlIHQ6YT0obi1yKS9oKyhuPHI/NjowKTticmVhaztjYXNlIG46YT0oci10KS9oKzI7YnJlYWs7Y2FzZSByOmE9KHQtbikvaCs0fWEqPTYwLGE9TWF0aC5yb3VuZChhKX1yZXR1cm57aDphLHM6bCxsOmMsYTppfX1mdW5jdGlvbiBlbChlKXtpZihlLnR5cGU9PT1aci5IZXhDb2xvclZhbHVlKXJldHVybiBZYShlLmdldFRleHQoKSk7aWYoZS50eXBlPT09WnIuRnVuY3Rpb24pe3ZhciB0PWUsbj10LmdldE5hbWUoKSxyPXQuZ2V0QXJndW1lbnRzKCkuZ2V0Q2hpbGRyZW4oKTtpZigxPT09ci5sZW5ndGgpe3ZhciBpPXJbMF0uZ2V0Q2hpbGRyZW4oKTtpZigxPT09aS5sZW5ndGgmJmlbMF0udHlwZT09PVpyLkV4cHJlc3Npb24mJjM9PT0ocj1pWzBdLmdldENoaWxkcmVuKCkpLmxlbmd0aCl7dmFyIG89clsyXTtpZihvIGluc3RhbmNlb2YgWWkpe3ZhciBzPW8uZ2V0TGVmdCgpLGE9by5nZXRSaWdodCgpLGw9by5nZXRPcGVyYXRvcigpO3MmJmEmJmwmJmwubWF0Y2hlcygiLyIpJiYocj1bclswXSxyWzFdLHMsYV0pfX19aWYoIW58fHIubGVuZ3RoPDN8fHIubGVuZ3RoPjQpcmV0dXJuIG51bGw7dHJ5e3ZhciBjPTQ9PT1yLmxlbmd0aD9HYShyWzNdLDEpOjE7aWYoInJnYiI9PT1ufHwicmdiYSI9PT1uKXJldHVybntyZWQ6R2EoclswXSwyNTUpLGdyZWVuOkdhKHJbMV0sMjU1KSxibHVlOkdhKHJbMl0sMjU1KSxhbHBoYTpjfTtpZigiaHNsIj09PW58fCJoc2xhIj09PW4pcmV0dXJuIFphKEphKHJbMF0pLEdhKHJbMV0sMTAwKSxHYShyWzJdLDEwMCksYyk7aWYoImh3YiI9PT1uKXJldHVybiBmdW5jdGlvbihlLHQsbixyKXtpZih2b2lkIDA9PT1yJiYocj0xKSx0K24+PTEpe3ZhciBpPXQvKHQrbik7cmV0dXJue3JlZDppLGdyZWVuOmksYmx1ZTppLGFscGhhOnJ9fXZhciBvPVphKGUsMSwuNSxyKSxzPW8ucmVkO3MqPTEtdC1uLHMrPXQ7dmFyIGE9by5ncmVlbjthKj0xLXQtbixhKz10O3ZhciBsPW8uYmx1ZTtyZXR1cm4gbCo9MS10LW4se3JlZDpzLGdyZWVuOmEsYmx1ZTpsKz10LGFscGhhOnJ9fShKYShyWzBdKSxHYShyWzFdLDEwMCksR2EoclsyXSwxMDApLGMpfWNhdGNoKGUpe3JldHVybiBudWxsfX1lbHNlIGlmKGUudHlwZT09PVpyLklkZW50aWZpZXIpe2lmKGUucGFyZW50JiZlLnBhcmVudC50eXBlIT09WnIuVGVybSlyZXR1cm4gbnVsbDt2YXIgaD1lLnBhcmVudDtpZihoJiZoLnBhcmVudCYmaC5wYXJlbnQudHlwZT09PVpyLkJpbmFyeUV4cHJlc3Npb24pe3ZhciBkPWgucGFyZW50O2lmKGQucGFyZW50JiZkLnBhcmVudC50eXBlPT09WnIuTGlzdEVudHJ5JiZkLnBhcmVudC5rZXk9PT1kKXJldHVybiBudWxsfXZhciBwPWUuZ2V0VGV4dCgpLnRvTG93ZXJDYXNlKCk7aWYoIm5vbmUiPT09cClyZXR1cm4gbnVsbDt2YXIgdT0kYVtwXTtpZih1KXJldHVybiBZYSh1KX1yZXR1cm4gbnVsbH12YXIgdGw9e2JvdHRvbToiQ29tcHV0ZXMgdG8g4oCYMTAwJeKAmSBmb3IgdGhlIHZlcnRpY2FsIHBvc2l0aW9uIGlmIG9uZSBvciB0d28gdmFsdWVzIGFyZSBnaXZlbiwgb3RoZXJ3aXNlIHNwZWNpZmllcyB0aGUgYm90dG9tIGVkZ2UgYXMgdGhlIG9yaWdpbiBmb3IgdGhlIG5leHQgb2Zmc2V0LiIsY2VudGVyOiJDb21wdXRlcyB0byDigJg1MCXigJkgKOKAmGxlZnQgNTAl4oCZKSBmb3IgdGhlIGhvcml6b250YWwgcG9zaXRpb24gaWYgdGhlIGhvcml6b250YWwgcG9zaXRpb24gaXMgbm90IG90aGVyd2lzZSBzcGVjaWZpZWQsIG9yIOKAmDUwJeKAmSAo4oCYdG9wIDUwJeKAmSkgZm9yIHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbiBpZiBpdCBpcy4iLGxlZnQ6IkNvbXB1dGVzIHRvIOKAmDAl4oCZIGZvciB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBpZiBvbmUgb3IgdHdvIHZhbHVlcyBhcmUgZ2l2ZW4sIG90aGVyd2lzZSBzcGVjaWZpZXMgdGhlIGxlZnQgZWRnZSBhcyB0aGUgb3JpZ2luIGZvciB0aGUgbmV4dCBvZmZzZXQuIixyaWdodDoiQ29tcHV0ZXMgdG8g4oCYMTAwJeKAmSBmb3IgdGhlIGhvcml6b250YWwgcG9zaXRpb24gaWYgb25lIG9yIHR3byB2YWx1ZXMgYXJlIGdpdmVuLCBvdGhlcndpc2Ugc3BlY2lmaWVzIHRoZSByaWdodCBlZGdlIGFzIHRoZSBvcmlnaW4gZm9yIHRoZSBuZXh0IG9mZnNldC4iLHRvcDoiQ29tcHV0ZXMgdG8g4oCYMCXigJkgZm9yIHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbiBpZiBvbmUgb3IgdHdvIHZhbHVlcyBhcmUgZ2l2ZW4sIG90aGVyd2lzZSBzcGVjaWZpZXMgdGhlIHRvcCBlZGdlIGFzIHRoZSBvcmlnaW4gZm9yIHRoZSBuZXh0IG9mZnNldC4ifSxubD17Im5vLXJlcGVhdCI6IlBsYWNlZCBvbmNlIGFuZCBub3QgcmVwZWF0ZWQgaW4gdGhpcyBkaXJlY3Rpb24uIixyZXBlYXQ6IlJlcGVhdGVkIGluIHRoaXMgZGlyZWN0aW9uIGFzIG9mdGVuIGFzIG5lZWRlZCB0byBjb3ZlciB0aGUgYmFja2dyb3VuZCBwYWludGluZyBhcmVhLiIsInJlcGVhdC14IjoiQ29tcHV0ZXMgdG8g4oCYcmVwZWF0IG5vLXJlcGVhdOKAmS4iLCJyZXBlYXQteSI6IkNvbXB1dGVzIHRvIOKAmG5vLXJlcGVhdCByZXBlYXTigJkuIixyb3VuZDoiUmVwZWF0ZWQgYXMgb2Z0ZW4gYXMgd2lsbCBmaXQgd2l0aGluIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEuIElmIGl0IGRvZXNu4oCZdCBmaXQgYSB3aG9sZSBudW1iZXIgb2YgdGltZXMsIGl0IGlzIHJlc2NhbGVkIHNvIHRoYXQgaXQgZG9lcy4iLHNwYWNlOiJSZXBlYXRlZCBhcyBvZnRlbiBhcyB3aWxsIGZpdCB3aXRoaW4gdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYSB3aXRob3V0IGJlaW5nIGNsaXBwZWQgYW5kIHRoZW4gdGhlIGltYWdlcyBhcmUgc3BhY2VkIG91dCB0byBmaWxsIHRoZSBhcmVhLiJ9LHJsPXtkYXNoZWQ6IkEgc2VyaWVzIG9mIHNxdWFyZS1lbmRlZCBkYXNoZXMuIixkb3R0ZWQ6IkEgc2VyaWVzIG9mIHJvdW5kIGRvdHMuIixkb3VibGU6IlR3byBwYXJhbGxlbCBzb2xpZCBsaW5lcyB3aXRoIHNvbWUgc3BhY2UgYmV0d2VlbiB0aGVtLiIsZ3Jvb3ZlOiJMb29rcyBhcyBpZiBpdCB3ZXJlIGNhcnZlZCBpbiB0aGUgY2FudmFzLiIsaGlkZGVuOiJTYW1lIGFzIOKAmG5vbmXigJksIGJ1dCBoYXMgZGlmZmVyZW50IGJlaGF2aW9yIGluIHRoZSBib3JkZXIgY29uZmxpY3QgcmVzb2x1dGlvbiBydWxlcyBmb3IgYm9yZGVyLWNvbGxhcHNlZCB0YWJsZXMuIixpbnNldDoiTG9va3MgYXMgaWYgdGhlIGNvbnRlbnQgb24gdGhlIGluc2lkZSBvZiB0aGUgYm9yZGVyIGlzIHN1bmtlbiBpbnRvIHRoZSBjYW52YXMuIixub25lOiJObyBib3JkZXIuIENvbG9yIGFuZCB3aWR0aCBhcmUgaWdub3JlZC4iLG91dHNldDoiTG9va3MgYXMgaWYgdGhlIGNvbnRlbnQgb24gdGhlIGluc2lkZSBvZiB0aGUgYm9yZGVyIGlzIGNvbWluZyBvdXQgb2YgdGhlIGNhbnZhcy4iLHJpZGdlOiJMb29rcyBhcyBpZiBpdCB3ZXJlIGNvbWluZyBvdXQgb2YgdGhlIGNhbnZhcy4iLHNvbGlkOiJBIHNpbmdsZSBsaW5lIHNlZ21lbnQuIn0saWw9WyJtZWRpdW0iLCJ0aGljayIsInRoaW4iXSxvbD17ImJvcmRlci1ib3giOiJUaGUgYmFja2dyb3VuZCBpcyBwYWludGVkIHdpdGhpbiAoY2xpcHBlZCB0bykgdGhlIGJvcmRlciBib3guIiwiY29udGVudC1ib3giOiJUaGUgYmFja2dyb3VuZCBpcyBwYWludGVkIHdpdGhpbiAoY2xpcHBlZCB0bykgdGhlIGNvbnRlbnQgYm94LiIsInBhZGRpbmctYm94IjoiVGhlIGJhY2tncm91bmQgaXMgcGFpbnRlZCB3aXRoaW4gKGNsaXBwZWQgdG8pIHRoZSBwYWRkaW5nIGJveC4ifSxzbD17Im1hcmdpbi1ib3giOiJVc2VzIHRoZSBtYXJnaW4gYm94IGFzIHJlZmVyZW5jZSBib3guIiwiZmlsbC1ib3giOiJVc2VzIHRoZSBvYmplY3QgYm91bmRpbmcgYm94IGFzIHJlZmVyZW5jZSBib3guIiwic3Ryb2tlLWJveCI6IlVzZXMgdGhlIHN0cm9rZSBib3VuZGluZyBib3ggYXMgcmVmZXJlbmNlIGJveC4iLCJ2aWV3LWJveCI6IlVzZXMgdGhlIG5lYXJlc3QgU1ZHIHZpZXdwb3J0IGFzIHJlZmVyZW5jZSBib3guIn0sYWw9e2luaXRpYWw6IlJlcHJlc2VudHMgdGhlIHZhbHVlIHNwZWNpZmllZCBhcyB0aGUgcHJvcGVydHnigJlzIGluaXRpYWwgdmFsdWUuIixpbmhlcml0OiJSZXByZXNlbnRzIHRoZSBjb21wdXRlZCB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgb24gdGhlIGVsZW1lbnTigJlzIHBhcmVudC4iLHVuc2V0OiJBY3RzIGFzIGVpdGhlciBgaW5oZXJpdGAgb3IgYGluaXRpYWxgLCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgcHJvcGVydHkgaXMgaW5oZXJpdGVkIG9yIG5vdC4ifSxsbD17InZhcigpIjoiRXZhbHVhdGVzIHRoZSB2YWx1ZSBvZiBhIGN1c3RvbSB2YXJpYWJsZS4iLCJjYWxjKCkiOiJFdmFsdWF0ZXMgYW4gbWF0aGVtYXRpY2FsIGV4cHJlc3Npb24uIFRoZSBmb2xsb3dpbmcgb3BlcmF0b3JzIGNhbiBiZSB1c2VkOiArIC0gKiAvLiJ9LGNsPXsidXJsKCkiOiJSZWZlcmVuY2UgYW4gaW1hZ2UgZmlsZSBieSBVUkwiLCJpbWFnZSgpIjoiUHJvdmlkZSBpbWFnZSBmYWxsYmFja3MgYW5kIGFubm90YXRpb25zLiIsIi13ZWJraXQtaW1hZ2Utc2V0KCkiOiJQcm92aWRlIG11bHRpcGxlIHJlc29sdXRpb25zLiBSZW1lbWJlciB0byB1c2UgdW5wcmVmaXhlZCBpbWFnZS1zZXQoKSBpbiBhZGRpdGlvbi4iLCJpbWFnZS1zZXQoKSI6IlByb3ZpZGUgbXVsdGlwbGUgcmVzb2x1dGlvbnMgb2YgYW4gaW1hZ2UgYW5kIGNvbnN0IHRoZSBVQSBkZWNpZGUgd2hpY2ggaXMgbW9zdCBhcHByb3ByaWF0ZSBpbiBhIGdpdmVuIHNpdHVhdGlvbi4iLCItbW96LWVsZW1lbnQoKSI6IlVzZSBhbiBlbGVtZW50IGluIHRoZSBkb2N1bWVudCBhcyBhbiBpbWFnZS4gUmVtZW1iZXIgdG8gdXNlIHVucHJlZml4ZWQgZWxlbWVudCgpIGluIGFkZGl0aW9uLiIsImVsZW1lbnQoKSI6IlVzZSBhbiBlbGVtZW50IGluIHRoZSBkb2N1bWVudCBhcyBhbiBpbWFnZS4iLCJjcm9zcy1mYWRlKCkiOiJJbmRpY2F0ZXMgdGhlIHR3byBpbWFnZXMgdG8gYmUgY29tYmluZWQgYW5kIGhvdyBmYXIgYWxvbmcgaW4gdGhlIHRyYW5zaXRpb24gdGhlIGNvbWJpbmF0aW9uIGlzLiIsIi13ZWJraXQtZ3JhZGllbnQoKSI6IkRlcHJlY2F0ZWQuIFVzZSBtb2Rlcm4gbGluZWFyLWdyYWRpZW50KCkgb3IgcmFkaWFsLWdyYWRpZW50KCkgaW5zdGVhZC4iLCItd2Via2l0LWxpbmVhci1ncmFkaWVudCgpIjoiTGluZWFyIGdyYWRpZW50LiBSZW1lbWJlciB0byB1c2UgdW5wcmVmaXhlZCB2ZXJzaW9uIGluIGFkZGl0aW9uLiIsIi1tb3otbGluZWFyLWdyYWRpZW50KCkiOiJMaW5lYXIgZ3JhZGllbnQuIFJlbWVtYmVyIHRvIHVzZSB1bnByZWZpeGVkIHZlcnNpb24gaW4gYWRkaXRpb24uIiwiLW8tbGluZWFyLWdyYWRpZW50KCkiOiJMaW5lYXIgZ3JhZGllbnQuIFJlbWVtYmVyIHRvIHVzZSB1bnByZWZpeGVkIHZlcnNpb24gaW4gYWRkaXRpb24uIiwibGluZWFyLWdyYWRpZW50KCkiOiJBIGxpbmVhciBncmFkaWVudCBpcyBjcmVhdGVkIGJ5IHNwZWNpZnlpbmcgYSBzdHJhaWdodCBncmFkaWVudCBsaW5lLCBhbmQgdGhlbiBzZXZlcmFsIGNvbG9ycyBwbGFjZWQgYWxvbmcgdGhhdCBsaW5lLiIsIi13ZWJraXQtcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgpIjoiUmVwZWF0aW5nIExpbmVhciBncmFkaWVudC4gUmVtZW1iZXIgdG8gdXNlIHVucHJlZml4ZWQgdmVyc2lvbiBpbiBhZGRpdGlvbi4iLCItbW96LXJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoKSI6IlJlcGVhdGluZyBMaW5lYXIgZ3JhZGllbnQuIFJlbWVtYmVyIHRvIHVzZSB1bnByZWZpeGVkIHZlcnNpb24gaW4gYWRkaXRpb24uIiwiLW8tcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgpIjoiUmVwZWF0aW5nIExpbmVhciBncmFkaWVudC4gUmVtZW1iZXIgdG8gdXNlIHVucHJlZml4ZWQgdmVyc2lvbiBpbiBhZGRpdGlvbi4iLCJyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KCkiOiJTYW1lIGFzIGxpbmVhci1ncmFkaWVudCwgZXhjZXB0IHRoZSBjb2xvci1zdG9wcyBhcmUgcmVwZWF0ZWQgaW5maW5pdGVseSBpbiBib3RoIGRpcmVjdGlvbnMsIHdpdGggdGhlaXIgcG9zaXRpb25zIHNoaWZ0ZWQgYnkgbXVsdGlwbGVzIG9mIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGxhc3Qgc3BlY2lmaWVkIGNvbG9yLXN0b3DigJlzIHBvc2l0aW9uIGFuZCB0aGUgZmlyc3Qgc3BlY2lmaWVkIGNvbG9yLXN0b3DigJlzIHBvc2l0aW9uLiIsIi13ZWJraXQtcmFkaWFsLWdyYWRpZW50KCkiOiJSYWRpYWwgZ3JhZGllbnQuIFJlbWVtYmVyIHRvIHVzZSB1bnByZWZpeGVkIHZlcnNpb24gaW4gYWRkaXRpb24uIiwiLW1vei1yYWRpYWwtZ3JhZGllbnQoKSI6IlJhZGlhbCBncmFkaWVudC4gUmVtZW1iZXIgdG8gdXNlIHVucHJlZml4ZWQgdmVyc2lvbiBpbiBhZGRpdGlvbi4iLCJyYWRpYWwtZ3JhZGllbnQoKSI6IkNvbG9ycyBlbWVyZ2UgZnJvbSBhIHNpbmdsZSBwb2ludCBhbmQgc21vb3RobHkgc3ByZWFkIG91dHdhcmQgaW4gYSBjaXJjdWxhciBvciBlbGxpcHRpY2FsIHNoYXBlLiIsIi13ZWJraXQtcmVwZWF0aW5nLXJhZGlhbC1ncmFkaWVudCgpIjoiUmVwZWF0aW5nIHJhZGlhbCBncmFkaWVudC4gUmVtZW1iZXIgdG8gdXNlIHVucHJlZml4ZWQgdmVyc2lvbiBpbiBhZGRpdGlvbi4iLCItbW96LXJlcGVhdGluZy1yYWRpYWwtZ3JhZGllbnQoKSI6IlJlcGVhdGluZyByYWRpYWwgZ3JhZGllbnQuIFJlbWVtYmVyIHRvIHVzZSB1bnByZWZpeGVkIHZlcnNpb24gaW4gYWRkaXRpb24uIiwicmVwZWF0aW5nLXJhZGlhbC1ncmFkaWVudCgpIjoiU2FtZSBhcyByYWRpYWwtZ3JhZGllbnQsIGV4Y2VwdCB0aGUgY29sb3Itc3RvcHMgYXJlIHJlcGVhdGVkIGluZmluaXRlbHkgaW4gYm90aCBkaXJlY3Rpb25zLCB3aXRoIHRoZWlyIHBvc2l0aW9ucyBzaGlmdGVkIGJ5IG11bHRpcGxlcyBvZiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBsYXN0IHNwZWNpZmllZCBjb2xvci1zdG9w4oCZcyBwb3NpdGlvbiBhbmQgdGhlIGZpcnN0IHNwZWNpZmllZCBjb2xvci1zdG9w4oCZcyBwb3NpdGlvbi4ifSxobD17ZWFzZToiRXF1aXZhbGVudCB0byBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxLjApLiIsImVhc2UtaW4iOiJFcXVpdmFsZW50IHRvIGN1YmljLWJlemllcigwLjQyLCAwLCAxLjAsIDEuMCkuIiwiZWFzZS1pbi1vdXQiOiJFcXVpdmFsZW50IHRvIGN1YmljLWJlemllcigwLjQyLCAwLCAwLjU4LCAxLjApLiIsImVhc2Utb3V0IjoiRXF1aXZhbGVudCB0byBjdWJpYy1iZXppZXIoMCwgMCwgMC41OCwgMS4wKS4iLGxpbmVhcjoiRXF1aXZhbGVudCB0byBjdWJpYy1iZXppZXIoMC4wLCAwLjAsIDEuMCwgMS4wKS4iLCJzdGVwLWVuZCI6IkVxdWl2YWxlbnQgdG8gc3RlcHMoMSwgZW5kKS4iLCJzdGVwLXN0YXJ0IjoiRXF1aXZhbGVudCB0byBzdGVwcygxLCBzdGFydCkuIiwic3RlcHMoKSI6IlRoZSBmaXJzdCBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgaW50ZXJ2YWxzIGluIHRoZSBmdW5jdGlvbi4gVGhlIHNlY29uZCBwYXJhbWV0ZXIsIHdoaWNoIGlzIG9wdGlvbmFsLCBpcyBlaXRoZXIgdGhlIHZhbHVlIOKAnHN0YXJ04oCdIG9yIOKAnGVuZOKAnS4iLCJjdWJpYy1iZXppZXIoKSI6IlNwZWNpZmllcyBhIGN1YmljLWJlemllciBjdXJ2ZS4gVGhlIGZvdXIgdmFsdWVzIHNwZWNpZnkgcG9pbnRzIFAxIGFuZCBQMiAgb2YgdGhlIGN1cnZlIGFzICh4MSwgeTEsIHgyLCB5MikuIiwiY3ViaWMtYmV6aWVyKDAuNiwgLTAuMjgsIDAuNzM1LCAwLjA0NSkiOiJFYXNlLWluIEJhY2suIE92ZXJzaG9vdHMuIiwiY3ViaWMtYmV6aWVyKDAuNjgsIC0wLjU1LCAwLjI2NSwgMS41NSkiOiJFYXNlLWluLW91dCBCYWNrLiBPdmVyc2hvb3RzLiIsImN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIsIDEuMjc1KSI6IkVhc2Utb3V0IEJhY2suIE92ZXJzaG9vdHMuIiwiY3ViaWMtYmV6aWVyKDAuNiwgMC4wNCwgMC45OCwgMC4zMzUpIjoiRWFzZS1pbiBDaXJjdWxhci4gQmFzZWQgb24gaGFsZiBjaXJjbGUuIiwiY3ViaWMtYmV6aWVyKDAuNzg1LCAwLjEzNSwgMC4xNSwgMC44NikiOiJFYXNlLWluLW91dCBDaXJjdWxhci4gQmFzZWQgb24gaGFsZiBjaXJjbGUuIiwiY3ViaWMtYmV6aWVyKDAuMDc1LCAwLjgyLCAwLjE2NSwgMSkiOiJFYXNlLW91dCBDaXJjdWxhci4gQmFzZWQgb24gaGFsZiBjaXJjbGUuIiwiY3ViaWMtYmV6aWVyKDAuNTUsIDAuMDU1LCAwLjY3NSwgMC4xOSkiOiJFYXNlLWluIEN1YmljLiBCYXNlZCBvbiBwb3dlciBvZiB0aHJlZS4iLCJjdWJpYy1iZXppZXIoMC42NDUsIDAuMDQ1LCAwLjM1NSwgMSkiOiJFYXNlLWluLW91dCBDdWJpYy4gQmFzZWQgb24gcG93ZXIgb2YgdGhyZWUuIiwiY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxMCwgMC4zNTUsIDEpIjoiRWFzZS1vdXQgQ3ViaWMuIEJhc2VkIG9uIHBvd2VyIG9mIHRocmVlLiIsImN1YmljLWJlemllcigwLjk1LCAwLjA1LCAwLjc5NSwgMC4wMzUpIjoiRWFzZS1pbiBFeHBvbmVudGlhbC4gQmFzZWQgb24gdHdvIHRvIHRoZSBwb3dlciB0ZW4uIiwiY3ViaWMtYmV6aWVyKDEsIDAsIDAsIDEpIjoiRWFzZS1pbi1vdXQgRXhwb25lbnRpYWwuIEJhc2VkIG9uIHR3byB0byB0aGUgcG93ZXIgdGVuLiIsImN1YmljLWJlemllcigwLjE5LCAxLCAwLjIyLCAxKSI6IkVhc2Utb3V0IEV4cG9uZW50aWFsLiBCYXNlZCBvbiB0d28gdG8gdGhlIHBvd2VyIHRlbi4iLCJjdWJpYy1iZXppZXIoMC40NywgMCwgMC43NDUsIDAuNzE1KSI6IkVhc2UtaW4gU2luZS4iLCJjdWJpYy1iZXppZXIoMC40NDUsIDAuMDUsIDAuNTUsIDAuOTUpIjoiRWFzZS1pbi1vdXQgU2luZS4iLCJjdWJpYy1iZXppZXIoMC4zOSwgMC41NzUsIDAuNTY1LCAxKSI6IkVhc2Utb3V0IFNpbmUuIiwiY3ViaWMtYmV6aWVyKDAuNTUsIDAuMDg1LCAwLjY4LCAwLjUzKSI6IkVhc2UtaW4gUXVhZHJhdGljLiBCYXNlZCBvbiBwb3dlciBvZiB0d28uIiwiY3ViaWMtYmV6aWVyKDAuNDU1LCAwLjAzLCAwLjUxNSwgMC45NTUpIjoiRWFzZS1pbi1vdXQgUXVhZHJhdGljLiBCYXNlZCBvbiBwb3dlciBvZiB0d28uIiwiY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpIjoiRWFzZS1vdXQgUXVhZHJhdGljLiBCYXNlZCBvbiBwb3dlciBvZiB0d28uIiwiY3ViaWMtYmV6aWVyKDAuODk1LCAwLjAzLCAwLjY4NSwgMC4yMikiOiJFYXNlLWluIFF1YXJ0aWMuIEJhc2VkIG9uIHBvd2VyIG9mIGZvdXIuIiwiY3ViaWMtYmV6aWVyKDAuNzcsIDAsIDAuMTc1LCAxKSI6IkVhc2UtaW4tb3V0IFF1YXJ0aWMuIEJhc2VkIG9uIHBvd2VyIG9mIGZvdXIuIiwiY3ViaWMtYmV6aWVyKDAuMTY1LCAwLjg0LCAwLjQ0LCAxKSI6IkVhc2Utb3V0IFF1YXJ0aWMuIEJhc2VkIG9uIHBvd2VyIG9mIGZvdXIuIiwiY3ViaWMtYmV6aWVyKDAuNzU1LCAwLjA1LCAwLjg1NSwgMC4wNikiOiJFYXNlLWluIFF1aW50aWMuIEJhc2VkIG9uIHBvd2VyIG9mIGZpdmUuIiwiY3ViaWMtYmV6aWVyKDAuODYsIDAsIDAuMDcsIDEpIjoiRWFzZS1pbi1vdXQgUXVpbnRpYy4gQmFzZWQgb24gcG93ZXIgb2YgZml2ZS4iLCJjdWJpYy1iZXppZXIoMC4yMywgMSwgMC4zMjAsIDEpIjoiRWFzZS1vdXQgUXVpbnRpYy4gQmFzZWQgb24gcG93ZXIgb2YgZml2ZS4ifSxkbD17ImNpcmNsZSgpIjoiRGVmaW5lcyBhIGNpcmNsZS4iLCJlbGxpcHNlKCkiOiJEZWZpbmVzIGFuIGVsbGlwc2UuIiwiaW5zZXQoKSI6IkRlZmluZXMgYW4gaW5zZXQgcmVjdGFuZ2xlLiIsInBvbHlnb24oKSI6IkRlZmluZXMgYSBwb2x5Z29uLiJ9LHBsPXtsZW5ndGg6WyJlbSIsInJlbSIsImV4IiwicHgiLCJjbSIsIm1tIiwiaW4iLCJwdCIsInBjIiwiY2giLCJ2dyIsInZoIiwidm1pbiIsInZtYXgiXSxhbmdsZTpbImRlZyIsInJhZCIsImdyYWQiLCJ0dXJuIl0sdGltZTpbIm1zIiwicyJdLGZyZXF1ZW5jeTpbIkh6Iiwia0h6Il0scmVzb2x1dGlvbjpbImRwaSIsImRwY20iLCJkcHB4Il0scGVyY2VudGFnZTpbIiUiLCJmciJdfSx1bD1bImEiLCJhYmJyIiwiYWRkcmVzcyIsImFyZWEiLCJhcnRpY2xlIiwiYXNpZGUiLCJhdWRpbyIsImIiLCJiYXNlIiwiYmRpIiwiYmRvIiwiYmxvY2txdW90ZSIsImJvZHkiLCJiciIsImJ1dHRvbiIsImNhbnZhcyIsImNhcHRpb24iLCJjaXRlIiwiY29kZSIsImNvbCIsImNvbGdyb3VwIiwiZGF0YSIsImRhdGFsaXN0IiwiZGQiLCJkZWwiLCJkZXRhaWxzIiwiZGZuIiwiZGlhbG9nIiwiZGl2IiwiZGwiLCJkdCIsImVtIiwiZW1iZWQiLCJmaWVsZHNldCIsImZpZ2NhcHRpb24iLCJmaWd1cmUiLCJmb290ZXIiLCJmb3JtIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaGVhZCIsImhlYWRlciIsImhncm91cCIsImhyIiwiaHRtbCIsImkiLCJpZnJhbWUiLCJpbWciLCJpbnB1dCIsImlucyIsImtiZCIsImtleWdlbiIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJsaW5rIiwibWFpbiIsIm1hcCIsIm1hcmsiLCJtZW51IiwibWVudWl0ZW0iLCJtZXRhIiwibWV0ZXIiLCJuYXYiLCJub3NjcmlwdCIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJvcHRpb24iLCJvdXRwdXQiLCJwIiwicGFyYW0iLCJwaWN0dXJlIiwicHJlIiwicHJvZ3Jlc3MiLCJxIiwicmIiLCJycCIsInJ0IiwicnRjIiwicnVieSIsInMiLCJzYW1wIiwic2NyaXB0Iiwic2VjdGlvbiIsInNlbGVjdCIsInNtYWxsIiwic291cmNlIiwic3BhbiIsInN0cm9uZyIsInN0eWxlIiwic3ViIiwic3VtbWFyeSIsInN1cCIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRlbXBsYXRlIiwidGV4dGFyZWEiLCJ0Zm9vdCIsInRoIiwidGhlYWQiLCJ0aW1lIiwidGl0bGUiLCJ0ciIsInRyYWNrIiwidSIsInVsIiwiY29uc3QiLCJ2aWRlbyIsIndiciJdLG1sPVsiY2lyY2xlIiwiY2xpcFBhdGgiLCJjdXJzb3IiLCJkZWZzIiwiZGVzYyIsImVsbGlwc2UiLCJmZUJsZW5kIiwiZmVDb2xvck1hdHJpeCIsImZlQ29tcG9uZW50VHJhbnNmZXIiLCJmZUNvbXBvc2l0ZSIsImZlQ29udm9sdmVNYXRyaXgiLCJmZURpZmZ1c2VMaWdodGluZyIsImZlRGlzcGxhY2VtZW50TWFwIiwiZmVEaXN0YW50TGlnaHQiLCJmZURyb3BTaGFkb3ciLCJmZUZsb29kIiwiZmVGdW5jQSIsImZlRnVuY0IiLCJmZUZ1bmNHIiwiZmVGdW5jUiIsImZlR2F1c3NpYW5CbHVyIiwiZmVJbWFnZSIsImZlTWVyZ2UiLCJmZU1lcmdlTm9kZSIsImZlTW9ycGhvbG9neSIsImZlT2Zmc2V0IiwiZmVQb2ludExpZ2h0IiwiZmVTcGVjdWxhckxpZ2h0aW5nIiwiZmVTcG90TGlnaHQiLCJmZVRpbGUiLCJmZVR1cmJ1bGVuY2UiLCJmaWx0ZXIiLCJmb3JlaWduT2JqZWN0IiwiZyIsImhhdGNoIiwiaGF0Y2hwYXRoIiwiaW1hZ2UiLCJsaW5lIiwibGluZWFyR3JhZGllbnQiLCJtYXJrZXIiLCJtYXNrIiwibWVzaCIsIm1lc2hwYXRjaCIsIm1lc2hyb3ciLCJtZXRhZGF0YSIsIm1wYXRoIiwicGF0aCIsInBhdHRlcm4iLCJwb2x5Z29uIiwicG9seWxpbmUiLCJyYWRpYWxHcmFkaWVudCIsInJlY3QiLCJzZXQiLCJzb2xpZGNvbG9yIiwic3RvcCIsInN2ZyIsInN3aXRjaCIsInN5bWJvbCIsInRleHQiLCJ0ZXh0UGF0aCIsInRzcGFuIiwidXNlIiwidmlldyJdLGZsPVsiQGJvdHRvbS1jZW50ZXIiLCJAYm90dG9tLWxlZnQiLCJAYm90dG9tLWxlZnQtY29ybmVyIiwiQGJvdHRvbS1yaWdodCIsIkBib3R0b20tcmlnaHQtY29ybmVyIiwiQGxlZnQtYm90dG9tIiwiQGxlZnQtbWlkZGxlIiwiQGxlZnQtdG9wIiwiQHJpZ2h0LWJvdHRvbSIsIkByaWdodC1taWRkbGUiLCJAcmlnaHQtdG9wIiwiQHRvcC1jZW50ZXIiLCJAdG9wLWxlZnQiLCJAdG9wLWxlZnQtY29ybmVyIiwiQHRvcC1yaWdodCIsIkB0b3AtcmlnaHQtY29ybmVyIl07ZnVuY3Rpb24gZ2woZSl7cmV0dXJuIE9iamVjdC5rZXlzKGUpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19KSl9ZnVuY3Rpb24gYmwoZSl7cmV0dXJuIHZvaWQgMCE9PWV9dmFyIHlsPWZ1bmN0aW9uKGUsdCxuKXtpZihufHwyPT09YXJndW1lbnRzLmxlbmd0aClmb3IodmFyIHIsaT0wLG89dC5sZW5ndGg7aTxvO2krKykhciYmaSBpbiB0fHwocnx8KHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwwLGkpKSxyW2ldPXRbaV0pO3JldHVybiBlLmNvbmNhdChyfHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KSl9LHZsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt2b2lkIDA9PT1lJiYoZT1uZXcgJHIpLHRoaXMua2V5ZnJhbWVSZWdleD0vXkAoXC0od2Via2l0fG1zfG1venxvKVwtKT9rZXlmcmFtZXMkL2ksdGhpcy5zY2FubmVyPWUsdGhpcy50b2tlbj17dHlwZTpabi5FT0Ysb2Zmc2V0Oi0xLGxlbjowLHRleHQ6IiJ9LHRoaXMucHJldlRva2VuPXZvaWQgMH1yZXR1cm4gZS5wcm90b3R5cGUucGVla0lkZW50PWZ1bmN0aW9uKGUpe3JldHVybiBabi5JZGVudD09PXRoaXMudG9rZW4udHlwZSYmZS5sZW5ndGg9PT10aGlzLnRva2VuLnRleHQubGVuZ3RoJiZlPT09dGhpcy50b2tlbi50ZXh0LnRvTG93ZXJDYXNlKCl9LGUucHJvdG90eXBlLnBlZWtLZXl3b3JkPWZ1bmN0aW9uKGUpe3JldHVybiBabi5BdEtleXdvcmQ9PT10aGlzLnRva2VuLnR5cGUmJmUubGVuZ3RoPT09dGhpcy50b2tlbi50ZXh0Lmxlbmd0aCYmZT09PXRoaXMudG9rZW4udGV4dC50b0xvd2VyQ2FzZSgpfSxlLnByb3RvdHlwZS5wZWVrRGVsaW09ZnVuY3Rpb24oZSl7cmV0dXJuIFpuLkRlbGltPT09dGhpcy50b2tlbi50eXBlJiZlPT09dGhpcy50b2tlbi50ZXh0fSxlLnByb3RvdHlwZS5wZWVrPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dGhpcy50b2tlbi50eXBlfSxlLnByb3RvdHlwZS5wZWVrT25lPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWVbdF09YXJndW1lbnRzW3RdO3JldHVybi0xIT09ZS5pbmRleE9mKHRoaXMudG9rZW4udHlwZSl9LGUucHJvdG90eXBlLnBlZWtSZWdFeHA9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PXRoaXMudG9rZW4udHlwZSYmdC50ZXN0KHRoaXMudG9rZW4udGV4dCl9LGUucHJvdG90eXBlLmhhc1doaXRlc3BhY2U9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMucHJldlRva2VuJiZ0aGlzLnByZXZUb2tlbi5vZmZzZXQrdGhpcy5wcmV2VG9rZW4ubGVuIT09dGhpcy50b2tlbi5vZmZzZXR9LGUucHJvdG90eXBlLmNvbnN1bWVUb2tlbj1mdW5jdGlvbigpe3RoaXMucHJldlRva2VuPXRoaXMudG9rZW4sdGhpcy50b2tlbj10aGlzLnNjYW5uZXIuc2NhbigpfSxlLnByb3RvdHlwZS5hY2NlcHRVbmljb2RlUmFuZ2U9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnNjYW5uZXIudHJ5U2NhblVuaWNvZGUoKTtyZXR1cm4hIWUmJih0aGlzLnByZXZUb2tlbj1lLHRoaXMudG9rZW49dGhpcy5zY2FubmVyLnNjYW4oKSwhMCl9LGUucHJvdG90eXBlLm1hcms9ZnVuY3Rpb24oKXtyZXR1cm57cHJldjp0aGlzLnByZXZUb2tlbixjdXJyOnRoaXMudG9rZW4scG9zOnRoaXMuc2Nhbm5lci5wb3MoKX19LGUucHJvdG90eXBlLnJlc3RvcmVBdE1hcms9ZnVuY3Rpb24oZSl7dGhpcy5wcmV2VG9rZW49ZS5wcmV2LHRoaXMudG9rZW49ZS5jdXJyLHRoaXMuc2Nhbm5lci5nb0JhY2tUbyhlLnBvcyl9LGUucHJvdG90eXBlLnRyeT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLm1hcmsoKSxuPWUoKTtyZXR1cm4gbnx8KHRoaXMucmVzdG9yZUF0TWFyayh0KSxudWxsKX0sZS5wcm90b3R5cGUuYWNjZXB0T25lS2V5d29yZD1mdW5jdGlvbihlKXtpZihabi5BdEtleXdvcmQ9PT10aGlzLnRva2VuLnR5cGUpZm9yKHZhciB0PTAsbj1lO3Q8bi5sZW5ndGg7dCsrKXt2YXIgcj1uW3RdO2lmKHIubGVuZ3RoPT09dGhpcy50b2tlbi50ZXh0Lmxlbmd0aCYmcj09PXRoaXMudG9rZW4udGV4dC50b0xvd2VyQ2FzZSgpKXJldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLCEwfXJldHVybiExfSxlLnByb3RvdHlwZS5hY2NlcHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT10aGlzLnRva2VuLnR5cGUmJih0aGlzLmNvbnN1bWVUb2tlbigpLCEwKX0sZS5wcm90b3R5cGUuYWNjZXB0SWRlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuISF0aGlzLnBlZWtJZGVudChlKSYmKHRoaXMuY29uc3VtZVRva2VuKCksITApfSxlLnByb3RvdHlwZS5hY2NlcHRLZXl3b3JkPWZ1bmN0aW9uKGUpe3JldHVybiEhdGhpcy5wZWVrS2V5d29yZChlKSYmKHRoaXMuY29uc3VtZVRva2VuKCksITApfSxlLnByb3RvdHlwZS5hY2NlcHREZWxpbT1mdW5jdGlvbihlKXtyZXR1cm4hIXRoaXMucGVla0RlbGltKGUpJiYodGhpcy5jb25zdW1lVG9rZW4oKSwhMCl9LGUucHJvdG90eXBlLmFjY2VwdFJlZ2V4cD1mdW5jdGlvbihlKXtyZXR1cm4hIWUudGVzdCh0aGlzLnRva2VuLnRleHQpJiYodGhpcy5jb25zdW1lVG9rZW4oKSwhMCl9LGUucHJvdG90eXBlLl9wYXJzZVJlZ2V4cD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmNyZWF0ZU5vZGUoWnIuSWRlbnRpZmllcik7ZG97fXdoaWxlKHRoaXMuYWNjZXB0UmVnZXhwKGUpKTtyZXR1cm4gdGhpcy5maW5pc2godCl9LGUucHJvdG90eXBlLmFjY2VwdFVucXVvdGVkU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zY2FubmVyLnBvcygpO3RoaXMuc2Nhbm5lci5nb0JhY2tUbyh0aGlzLnRva2VuLm9mZnNldCk7dmFyIHQ9dGhpcy5zY2FubmVyLnNjYW5VbnF1b3RlZFN0cmluZygpO3JldHVybiB0Pyh0aGlzLnRva2VuPXQsdGhpcy5jb25zdW1lVG9rZW4oKSwhMCk6KHRoaXMuc2Nhbm5lci5nb0JhY2tUbyhlKSwhMSl9LGUucHJvdG90eXBlLnJlc3luYz1mdW5jdGlvbihlLHQpe2Zvcig7Oyl7aWYoZSYmLTEhPT1lLmluZGV4T2YodGhpcy50b2tlbi50eXBlKSlyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSwhMDtpZih0JiYtMSE9PXQuaW5kZXhPZih0aGlzLnRva2VuLnR5cGUpKXJldHVybiEwO2lmKHRoaXMudG9rZW4udHlwZT09PVpuLkVPRilyZXR1cm4hMTt0aGlzLnRva2VuPXRoaXMuc2Nhbm5lci5zY2FuKCl9fSxlLnByb3RvdHlwZS5jcmVhdGVOb2RlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgb2kodGhpcy50b2tlbi5vZmZzZXQsdGhpcy50b2tlbi5sZW4sZSl9LGUucHJvdG90eXBlLmNyZWF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IGUodGhpcy50b2tlbi5vZmZzZXQsdGhpcy50b2tlbi5sZW4pfSxlLnByb3RvdHlwZS5maW5pc2g9ZnVuY3Rpb24oZSx0LG4scil7aWYoIShlIGluc3RhbmNlb2Ygc2kpJiYodCYmdGhpcy5tYXJrRXJyb3IoZSx0LG4sciksdGhpcy5wcmV2VG9rZW4pKXt2YXIgaT10aGlzLnByZXZUb2tlbi5vZmZzZXQrdGhpcy5wcmV2VG9rZW4ubGVuO2UubGVuZ3RoPWk+ZS5vZmZzZXQ/aS1lLm9mZnNldDowfXJldHVybiBlfSxlLnByb3RvdHlwZS5tYXJrRXJyb3I9ZnVuY3Rpb24oZSx0LG4scil7dGhpcy50b2tlbiE9PXRoaXMubGFzdEVycm9yVG9rZW4mJihlLmFkZElzc3VlKG5ldyBTbyhlLHQsZW8uRXJyb3Isdm9pZCAwLHRoaXMudG9rZW4ub2Zmc2V0LHRoaXMudG9rZW4ubGVuKSksdGhpcy5sYXN0RXJyb3JUb2tlbj10aGlzLnRva2VuKSwobnx8cikmJnRoaXMucmVzeW5jKG4scil9LGUucHJvdG90eXBlLnBhcnNlU3R5bGVzaGVldD1mdW5jdGlvbihlKXt2YXIgdD1lLnZlcnNpb24sbj1lLmdldFRleHQoKTtyZXR1cm4gdGhpcy5pbnRlcm5hbFBhcnNlKG4sdGhpcy5fcGFyc2VTdHlsZXNoZWV0LChmdW5jdGlvbihyLGkpe2lmKGUudmVyc2lvbiE9PXQpdGhyb3cgbmV3IEVycm9yKCJVbmRlcmx5aW5nIG1vZGVsIGhhcyBjaGFuZ2VkLCBBU1QgaXMgbm8gbG9uZ2VyIHZhbGlkIik7cmV0dXJuIG4uc3Vic3RyKHIsaSl9KSl9LGUucHJvdG90eXBlLmludGVybmFsUGFyc2U9ZnVuY3Rpb24oZSx0LG4pe3RoaXMuc2Nhbm5lci5zZXRTb3VyY2UoZSksdGhpcy50b2tlbj10aGlzLnNjYW5uZXIuc2NhbigpO3ZhciByPXQuYmluZCh0aGlzKSgpO3JldHVybiByJiYoci50ZXh0UHJvdmlkZXI9bnx8ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5zdWJzdHIodCxuKX0pLHJ9LGUucHJvdG90eXBlLl9wYXJzZVN0eWxlc2hlZXQ9ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy5jcmVhdGUoY2kpO2UuYWRkQ2hpbGQodGhpcy5fcGFyc2VTdHlsZXNoZWV0U3RhcnQoKSk7KTt2YXIgdD0hMTtkb3t2YXIgbj0hMTtkb3tuPSExO3ZhciByPXRoaXMuX3BhcnNlU3R5bGVzaGVldFN0YXRlbWVudCgpO2ZvcihyJiYoZS5hZGRDaGlsZChyKSxuPSEwLHQ9ITEsdGhpcy5wZWVrKFpuLkVPRil8fCF0aGlzLl9uZWVkc1NlbWljb2xvbkFmdGVyKHIpfHx0aGlzLmFjY2VwdChabi5TZW1pQ29sb24pfHx0aGlzLm1hcmtFcnJvcihlLENzLlNlbWlDb2xvbkV4cGVjdGVkKSk7dGhpcy5hY2NlcHQoWm4uU2VtaUNvbG9uKXx8dGhpcy5hY2NlcHQoWm4uQ0RPKXx8dGhpcy5hY2NlcHQoWm4uQ0RDKTspbj0hMCx0PSExfXdoaWxlKG4pO2lmKHRoaXMucGVlayhabi5FT0YpKWJyZWFrO3R8fCh0aGlzLnBlZWsoWm4uQXRLZXl3b3JkKT90aGlzLm1hcmtFcnJvcihlLENzLlVua25vd25BdFJ1bGUpOnRoaXMubWFya0Vycm9yKGUsQ3MuUnVsZU9yU2VsZWN0b3JFeHBlY3RlZCksdD0hMCksdGhpcy5jb25zdW1lVG9rZW4oKX13aGlsZSghdGhpcy5wZWVrKFpuLkVPRikpO3JldHVybiB0aGlzLmZpbmlzaChlKX0sZS5wcm90b3R5cGUuX3BhcnNlU3R5bGVzaGVldFN0YXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlQ2hhcnNldCgpfSxlLnByb3RvdHlwZS5fcGFyc2VTdHlsZXNoZWV0U3RhdGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0hMSksdGhpcy5wZWVrKFpuLkF0S2V5d29yZCk/dGhpcy5fcGFyc2VTdHlsZXNoZWV0QXRTdGF0ZW1lbnQoZSk6dGhpcy5fcGFyc2VSdWxlc2V0KGUpfSxlLnByb3RvdHlwZS5fcGFyc2VTdHlsZXNoZWV0QXRTdGF0ZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPSExKSx0aGlzLl9wYXJzZUltcG9ydCgpfHx0aGlzLl9wYXJzZU1lZGlhKGUpfHx0aGlzLl9wYXJzZVBhZ2UoKXx8dGhpcy5fcGFyc2VGb250RmFjZSgpfHx0aGlzLl9wYXJzZUtleWZyYW1lKCl8fHRoaXMuX3BhcnNlU3VwcG9ydHMoZSl8fHRoaXMuX3BhcnNlVmlld1BvcnQoKXx8dGhpcy5fcGFyc2VOYW1lc3BhY2UoKXx8dGhpcy5fcGFyc2VEb2N1bWVudCgpfHx0aGlzLl9wYXJzZVVua25vd25BdFJ1bGUoKX0sZS5wcm90b3R5cGUuX3RyeVBhcnNlUnVsZXNldD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLm1hcmsoKTtpZih0aGlzLl9wYXJzZVNlbGVjdG9yKGUpKXtmb3IoO3RoaXMuYWNjZXB0KFpuLkNvbW1hKSYmdGhpcy5fcGFyc2VTZWxlY3RvcihlKTspO2lmKHRoaXMuYWNjZXB0KFpuLkN1cmx5TCkpcmV0dXJuIHRoaXMucmVzdG9yZUF0TWFyayh0KSx0aGlzLl9wYXJzZVJ1bGVzZXQoZSl9cmV0dXJuIHRoaXMucmVzdG9yZUF0TWFyayh0KSxudWxsfSxlLnByb3RvdHlwZS5fcGFyc2VSdWxlc2V0PWZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPSExKTt2YXIgdD10aGlzLmNyZWF0ZShwaSksbj10LmdldFNlbGVjdG9ycygpO2lmKCFuLmFkZENoaWxkKHRoaXMuX3BhcnNlU2VsZWN0b3IoZSkpKXJldHVybiBudWxsO2Zvcig7dGhpcy5hY2NlcHQoWm4uQ29tbWEpOylpZighbi5hZGRDaGlsZCh0aGlzLl9wYXJzZVNlbGVjdG9yKGUpKSlyZXR1cm4gdGhpcy5maW5pc2godCxDcy5TZWxlY3RvckV4cGVjdGVkKTtyZXR1cm4gdGhpcy5fcGFyc2VCb2R5KHQsdGhpcy5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb24uYmluZCh0aGlzKSl9LGUucHJvdG90eXBlLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbkF0U3RhdGVtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlVW5rbm93bkF0UnVsZSgpfSxlLnByb3RvdHlwZS5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wZWVrKFpuLkF0S2V5d29yZCk/dGhpcy5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb25BdFN0YXRlbWVudCgpOnRoaXMuX3BhcnNlRGVjbGFyYXRpb24oKX0sZS5wcm90b3R5cGUuX25lZWRzU2VtaWNvbG9uQWZ0ZXI9ZnVuY3Rpb24oZSl7c3dpdGNoKGUudHlwZSl7Y2FzZSBaci5LZXlmcmFtZTpjYXNlIFpyLlZpZXdQb3J0OmNhc2UgWnIuTWVkaWE6Y2FzZSBaci5SdWxlc2V0OmNhc2UgWnIuTmFtZXNwYWNlOmNhc2UgWnIuSWY6Y2FzZSBaci5Gb3I6Y2FzZSBaci5FYWNoOmNhc2UgWnIuV2hpbGU6Y2FzZSBaci5NaXhpbkRlY2xhcmF0aW9uOmNhc2UgWnIuRnVuY3Rpb25EZWNsYXJhdGlvbjpjYXNlIFpyLk1peGluQ29udGVudERlY2xhcmF0aW9uOnJldHVybiExO2Nhc2UgWnIuRXh0ZW5kc1JlZmVyZW5jZTpjYXNlIFpyLk1peGluQ29udGVudFJlZmVyZW5jZTpjYXNlIFpyLlJldHVyblN0YXRlbWVudDpjYXNlIFpyLk1lZGlhUXVlcnk6Y2FzZSBaci5EZWJ1ZzpjYXNlIFpyLkltcG9ydDpjYXNlIFpyLkF0QXBwbHlSdWxlOmNhc2UgWnIuQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbjpyZXR1cm4hMDtjYXNlIFpyLlZhcmlhYmxlRGVjbGFyYXRpb246cmV0dXJuIGUubmVlZHNTZW1pY29sb247Y2FzZSBaci5NaXhpblJlZmVyZW5jZTpyZXR1cm4hZS5nZXRDb250ZW50KCk7Y2FzZSBaci5EZWNsYXJhdGlvbjpyZXR1cm4hZS5nZXROZXN0ZWRQcm9wZXJ0aWVzKCl9cmV0dXJuITF9LGUucHJvdG90eXBlLl9wYXJzZURlY2xhcmF0aW9ucz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmNyZWF0ZShoaSk7aWYoIXRoaXMuYWNjZXB0KFpuLkN1cmx5TCkpcmV0dXJuIG51bGw7Zm9yKHZhciBuPWUoKTt0LmFkZENoaWxkKG4pJiYhdGhpcy5wZWVrKFpuLkN1cmx5Uik7KXtpZih0aGlzLl9uZWVkc1NlbWljb2xvbkFmdGVyKG4pJiYhdGhpcy5hY2NlcHQoWm4uU2VtaUNvbG9uKSlyZXR1cm4gdGhpcy5maW5pc2godCxDcy5TZW1pQ29sb25FeHBlY3RlZCxbWm4uU2VtaUNvbG9uLFpuLkN1cmx5Ul0pO2ZvcihuJiZ0aGlzLnByZXZUb2tlbiYmdGhpcy5wcmV2VG9rZW4udHlwZT09PVpuLlNlbWlDb2xvbiYmKG4uc2VtaWNvbG9uUG9zaXRpb249dGhpcy5wcmV2VG9rZW4ub2Zmc2V0KTt0aGlzLmFjY2VwdChabi5TZW1pQ29sb24pOyk7bj1lKCl9cmV0dXJuIHRoaXMuYWNjZXB0KFpuLkN1cmx5Uik/dGhpcy5maW5pc2godCk6dGhpcy5maW5pc2godCxDcy5SaWdodEN1cmx5RXhwZWN0ZWQsW1puLkN1cmx5Uixabi5TZW1pQ29sb25dKX0sZS5wcm90b3R5cGUuX3BhcnNlQm9keT1mdW5jdGlvbihlLHQpe3JldHVybiBlLnNldERlY2xhcmF0aW9ucyh0aGlzLl9wYXJzZURlY2xhcmF0aW9ucyh0KSk/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSxDcy5MZWZ0Q3VybHlFeHBlY3RlZCxbWm4uQ3VybHlSLFpuLlNlbWlDb2xvbl0pfSxlLnByb3RvdHlwZS5fcGFyc2VTZWxlY3Rvcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmNyZWF0ZSh1aSksbj0hMTtmb3IoZSYmKG49dC5hZGRDaGlsZCh0aGlzLl9wYXJzZUNvbWJpbmF0b3IoKSkpO3QuYWRkQ2hpbGQodGhpcy5fcGFyc2VTaW1wbGVTZWxlY3RvcigpKTspbj0hMCx0LmFkZENoaWxkKHRoaXMuX3BhcnNlQ29tYmluYXRvcigpKTtyZXR1cm4gbj90aGlzLmZpbmlzaCh0KTpudWxsfSxlLnByb3RvdHlwZS5fcGFyc2VEZWNsYXJhdGlvbj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl90cnlQYXJzZUN1c3RvbVByb3BlcnR5RGVjbGFyYXRpb24oZSk7aWYodClyZXR1cm4gdDt2YXIgbj10aGlzLmNyZWF0ZShiaSk7cmV0dXJuIG4uc2V0UHJvcGVydHkodGhpcy5fcGFyc2VQcm9wZXJ0eSgpKT90aGlzLmFjY2VwdChabi5Db2xvbik/KHRoaXMucHJldlRva2VuJiYobi5jb2xvblBvc2l0aW9uPXRoaXMucHJldlRva2VuLm9mZnNldCksbi5zZXRWYWx1ZSh0aGlzLl9wYXJzZUV4cHIoKSk/KG4uYWRkQ2hpbGQodGhpcy5fcGFyc2VQcmlvKCkpLHRoaXMucGVlayhabi5TZW1pQ29sb24pJiYobi5zZW1pY29sb25Qb3NpdGlvbj10aGlzLnRva2VuLm9mZnNldCksdGhpcy5maW5pc2gobikpOnRoaXMuZmluaXNoKG4sQ3MuUHJvcGVydHlWYWx1ZUV4cGVjdGVkKSk6dGhpcy5maW5pc2gobixDcy5Db2xvbkV4cGVjdGVkLFtabi5Db2xvbl0sZXx8W1puLlNlbWlDb2xvbl0pOm51bGx9LGUucHJvdG90eXBlLl90cnlQYXJzZUN1c3RvbVByb3BlcnR5RGVjbGFyYXRpb249ZnVuY3Rpb24oZSl7aWYoIXRoaXMucGVla1JlZ0V4cChabi5JZGVudCwvXi0tLykpcmV0dXJuIG51bGw7dmFyIHQ9dGhpcy5jcmVhdGUoeWkpO2lmKCF0LnNldFByb3BlcnR5KHRoaXMuX3BhcnNlUHJvcGVydHkoKSkpcmV0dXJuIG51bGw7aWYoIXRoaXMuYWNjZXB0KFpuLkNvbG9uKSlyZXR1cm4gdGhpcy5maW5pc2godCxDcy5Db2xvbkV4cGVjdGVkLFtabi5Db2xvbl0pO3RoaXMucHJldlRva2VuJiYodC5jb2xvblBvc2l0aW9uPXRoaXMucHJldlRva2VuLm9mZnNldCk7dmFyIG49dGhpcy5tYXJrKCk7aWYodGhpcy5wZWVrKFpuLkN1cmx5TCkpe3ZhciByPXRoaXMuY3JlYXRlKGdpKSxpPXRoaXMuX3BhcnNlRGVjbGFyYXRpb25zKHRoaXMuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uLmJpbmQodGhpcykpO2lmKHIuc2V0RGVjbGFyYXRpb25zKGkpJiYhaS5pc0Vycm9uZW91cyghMCkmJihyLmFkZENoaWxkKHRoaXMuX3BhcnNlUHJpbygpKSx0aGlzLnBlZWsoWm4uU2VtaUNvbG9uKSkpcmV0dXJuIHRoaXMuZmluaXNoKHIpLHQuc2V0UHJvcGVydHlTZXQociksdC5zZW1pY29sb25Qb3NpdGlvbj10aGlzLnRva2VuLm9mZnNldCx0aGlzLmZpbmlzaCh0KTt0aGlzLnJlc3RvcmVBdE1hcmsobil9dmFyIG89dGhpcy5fcGFyc2VFeHByKCk7cmV0dXJuIG8mJiFvLmlzRXJyb25lb3VzKCEwKSYmKHRoaXMuX3BhcnNlUHJpbygpLHRoaXMucGVla09uZS5hcHBseSh0aGlzLHlsKHlsKFtdLGV8fFtdLCExKSxbWm4uU2VtaUNvbG9uLFpuLkVPRl0sITEpKSk/KHQuc2V0VmFsdWUobyksdGhpcy5wZWVrKFpuLlNlbWlDb2xvbikmJih0LnNlbWljb2xvblBvc2l0aW9uPXRoaXMudG9rZW4ub2Zmc2V0KSx0aGlzLmZpbmlzaCh0KSk6KHRoaXMucmVzdG9yZUF0TWFyayhuKSx0LmFkZENoaWxkKHRoaXMuX3BhcnNlQ3VzdG9tUHJvcGVydHlWYWx1ZShlKSksdC5hZGRDaGlsZCh0aGlzLl9wYXJzZVByaW8oKSksYmwodC5jb2xvblBvc2l0aW9uKSYmdGhpcy50b2tlbi5vZmZzZXQ9PT10LmNvbG9uUG9zaXRpb24rMT90aGlzLmZpbmlzaCh0LENzLlByb3BlcnR5VmFsdWVFeHBlY3RlZCk6dGhpcy5maW5pc2godCkpfSxlLnByb3RvdHlwZS5fcGFyc2VDdXN0b21Qcm9wZXJ0eVZhbHVlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7dm9pZCAwPT09ZSYmKGU9W1puLkN1cmx5Ul0pO3ZhciBuPXRoaXMuY3JlYXRlKG9pKSxyPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT1vJiYwPT09cyYmMD09PWF9LGk9ZnVuY3Rpb24oKXtyZXR1cm4tMSE9PWUuaW5kZXhPZih0LnRva2VuLnR5cGUpfSxvPTAscz0wLGE9MDtlOmZvcig7Oyl7c3dpdGNoKHRoaXMudG9rZW4udHlwZSl7Y2FzZSBabi5TZW1pQ29sb246Y2FzZSBabi5FeGNsYW1hdGlvbjppZihyKCkpYnJlYWsgZTticmVhaztjYXNlIFpuLkN1cmx5TDpvKys7YnJlYWs7Y2FzZSBabi5DdXJseVI6aWYoLS1vPDApe2lmKGkoKSYmMD09PXMmJjA9PT1hKWJyZWFrIGU7cmV0dXJuIHRoaXMuZmluaXNoKG4sQ3MuTGVmdEN1cmx5RXhwZWN0ZWQpfWJyZWFrO2Nhc2UgWm4uUGFyZW50aGVzaXNMOnMrKzticmVhaztjYXNlIFpuLlBhcmVudGhlc2lzUjppZigtLXM8MCl7aWYoaSgpJiYwPT09YSYmMD09PW8pYnJlYWsgZTtyZXR1cm4gdGhpcy5maW5pc2gobixDcy5MZWZ0UGFyZW50aGVzaXNFeHBlY3RlZCl9YnJlYWs7Y2FzZSBabi5CcmFja2V0TDphKys7YnJlYWs7Y2FzZSBabi5CcmFja2V0UjppZigtLWE8MClyZXR1cm4gdGhpcy5maW5pc2gobixDcy5MZWZ0U3F1YXJlQnJhY2tldEV4cGVjdGVkKTticmVhaztjYXNlIFpuLkJhZFN0cmluZzpicmVhayBlO2Nhc2UgWm4uRU9GOnZhciBsPUNzLlJpZ2h0Q3VybHlFeHBlY3RlZDtyZXR1cm4gYT4wP2w9Q3MuUmlnaHRTcXVhcmVCcmFja2V0RXhwZWN0ZWQ6cz4wJiYobD1Dcy5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQpLHRoaXMuZmluaXNoKG4sbCl9dGhpcy5jb25zdW1lVG9rZW4oKX1yZXR1cm4gdGhpcy5maW5pc2gobil9LGUucHJvdG90eXBlLl90cnlUb1BhcnNlRGVjbGFyYXRpb249ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5tYXJrKCk7cmV0dXJuIHRoaXMuX3BhcnNlUHJvcGVydHkoKSYmdGhpcy5hY2NlcHQoWm4uQ29sb24pPyh0aGlzLnJlc3RvcmVBdE1hcmsodCksdGhpcy5fcGFyc2VEZWNsYXJhdGlvbihlKSk6KHRoaXMucmVzdG9yZUF0TWFyayh0KSxudWxsKX0sZS5wcm90b3R5cGUuX3BhcnNlUHJvcGVydHk9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNyZWF0ZSh2aSksdD10aGlzLm1hcmsoKTtyZXR1cm4odGhpcy5hY2NlcHREZWxpbSgiKiIpfHx0aGlzLmFjY2VwdERlbGltKCJfIikpJiZ0aGlzLmhhc1doaXRlc3BhY2UoKT8odGhpcy5yZXN0b3JlQXRNYXJrKHQpLG51bGwpOmUuc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZVByb3BlcnR5SWRlbnRpZmllcigpKT90aGlzLmZpbmlzaChlKTpudWxsfSxlLnByb3RvdHlwZS5fcGFyc2VQcm9wZXJ0eUlkZW50aWZpZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VJZGVudCgpfSxlLnByb3RvdHlwZS5fcGFyc2VDaGFyc2V0PWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVlayhabi5DaGFyc2V0KSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZShvaSk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5hY2NlcHQoWm4uU3RyaW5nKT90aGlzLmFjY2VwdChabi5TZW1pQ29sb24pP3RoaXMuZmluaXNoKGUpOnRoaXMuZmluaXNoKGUsQ3MuU2VtaUNvbG9uRXhwZWN0ZWQpOnRoaXMuZmluaXNoKGUsQ3MuSWRlbnRpZmllckV4cGVjdGVkKX0sZS5wcm90b3R5cGUuX3BhcnNlSW1wb3J0PWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBpbXBvcnQiKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZShJaSk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVVSSUxpdGVyYWwoKSl8fGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VTdHJpbmdMaXRlcmFsKCkpPyh0aGlzLnBlZWsoWm4uU2VtaUNvbG9uKXx8dGhpcy5wZWVrKFpuLkVPRil8fGUuc2V0TWVkaWFsaXN0KHRoaXMuX3BhcnNlTWVkaWFRdWVyeUxpc3QoKSksdGhpcy5maW5pc2goZSkpOnRoaXMuZmluaXNoKGUsQ3MuVVJJT3JTdHJpbmdFeHBlY3RlZCl9LGUucHJvdG90eXBlLl9wYXJzZU5hbWVzcGFjZT1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAbmFtZXNwYWNlIikpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5jcmVhdGUoV2kpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VVUklMaXRlcmFsKCkpfHwoZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpLGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VVUklMaXRlcmFsKCkpfHxlLmFkZENoaWxkKHRoaXMuX3BhcnNlU3RyaW5nTGl0ZXJhbCgpKSk/dGhpcy5hY2NlcHQoWm4uU2VtaUNvbG9uKT90aGlzLmZpbmlzaChlKTp0aGlzLmZpbmlzaChlLENzLlNlbWlDb2xvbkV4cGVjdGVkKTp0aGlzLmZpbmlzaChlLENzLlVSSUV4cGVjdGVkLFtabi5TZW1pQ29sb25dKX0sZS5wcm90b3R5cGUuX3BhcnNlRm9udEZhY2U9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQGZvbnQtZmFjZSIpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKE5pKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLl9wYXJzZUJvZHkoZSx0aGlzLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbi5iaW5kKHRoaXMpKX0sZS5wcm90b3R5cGUuX3BhcnNlVmlld1BvcnQ9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQC1tcy12aWV3cG9ydCIpJiYhdGhpcy5wZWVrS2V5d29yZCgiQC1vLXZpZXdwb3J0IikmJiF0aGlzLnBlZWtLZXl3b3JkKCJAdmlld3BvcnQiKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZShEaSk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5fcGFyc2VCb2R5KGUsdGhpcy5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb24uYmluZCh0aGlzKSl9LGUucHJvdG90eXBlLl9wYXJzZUtleWZyYW1lPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVla1JlZ0V4cChabi5BdEtleXdvcmQsdGhpcy5rZXlmcmFtZVJlZ2V4KSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZShBaSksdD10aGlzLmNyZWF0ZShvaSk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksZS5zZXRLZXl3b3JkKHRoaXMuZmluaXNoKHQpKSx0Lm1hdGNoZXMoIkAtbXMta2V5ZnJhbWVzIikmJnRoaXMubWFya0Vycm9yKHQsQ3MuVW5rbm93bktleXdvcmQpLGUuc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZUtleWZyYW1lSWRlbnQoKSk/dGhpcy5fcGFyc2VCb2R5KGUsdGhpcy5fcGFyc2VLZXlmcmFtZVNlbGVjdG9yLmJpbmQodGhpcykpOnRoaXMuZmluaXNoKGUsQ3MuSWRlbnRpZmllckV4cGVjdGVkLFtabi5DdXJseVJdKX0sZS5wcm90b3R5cGUuX3BhcnNlS2V5ZnJhbWVJZGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJzZUlkZW50KFtlaS5LZXlmcmFtZV0pfSxlLnByb3RvdHlwZS5fcGFyc2VLZXlmcmFtZVNlbGVjdG9yPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jcmVhdGUoemkpO2lmKCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSkmJiF0aGlzLmFjY2VwdChabi5QZXJjZW50YWdlKSlyZXR1cm4gbnVsbDtmb3IoO3RoaXMuYWNjZXB0KFpuLkNvbW1hKTspaWYoIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKSYmIXRoaXMuYWNjZXB0KFpuLlBlcmNlbnRhZ2UpKXJldHVybiB0aGlzLmZpbmlzaChlLENzLlBlcmNlbnRhZ2VFeHBlY3RlZCk7cmV0dXJuIHRoaXMuX3BhcnNlQm9keShlLHRoaXMuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uLmJpbmQodGhpcykpfSxlLnByb3RvdHlwZS5fdHJ5UGFyc2VLZXlmcmFtZVNlbGVjdG9yPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jcmVhdGUoemkpLHQ9dGhpcy5tYXJrKCk7aWYoIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKSYmIXRoaXMuYWNjZXB0KFpuLlBlcmNlbnRhZ2UpKXJldHVybiBudWxsO2Zvcig7dGhpcy5hY2NlcHQoWm4uQ29tbWEpOylpZighZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpJiYhdGhpcy5hY2NlcHQoWm4uUGVyY2VudGFnZSkpcmV0dXJuIHRoaXMucmVzdG9yZUF0TWFyayh0KSxudWxsO3JldHVybiB0aGlzLnBlZWsoWm4uQ3VybHlMKT90aGlzLl9wYXJzZUJvZHkoZSx0aGlzLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbi5iaW5kKHRoaXMpKToodGhpcy5yZXN0b3JlQXRNYXJrKHQpLG51bGwpfSxlLnByb3RvdHlwZS5fcGFyc2VTdXBwb3J0cz1mdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lJiYoZT0hMSksIXRoaXMucGVla0tleXdvcmQoIkBzdXBwb3J0cyIpKXJldHVybiBudWxsO3ZhciB0PXRoaXMuY3JlYXRlKFVpKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0LmFkZENoaWxkKHRoaXMuX3BhcnNlU3VwcG9ydHNDb25kaXRpb24oKSksdGhpcy5fcGFyc2VCb2R5KHQsdGhpcy5fcGFyc2VTdXBwb3J0c0RlY2xhcmF0aW9uLmJpbmQodGhpcyxlKSl9LGUucHJvdG90eXBlLl9wYXJzZVN1cHBvcnRzRGVjbGFyYXRpb249ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPSExKSxlP3RoaXMuX3RyeVBhcnNlUnVsZXNldCghMCl8fHRoaXMuX3RyeVRvUGFyc2VEZWNsYXJhdGlvbigpfHx0aGlzLl9wYXJzZVN0eWxlc2hlZXRTdGF0ZW1lbnQoITApOnRoaXMuX3BhcnNlU3R5bGVzaGVldFN0YXRlbWVudCghMSl9LGUucHJvdG90eXBlLl9wYXJzZVN1cHBvcnRzQ29uZGl0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jcmVhdGUoSGkpO2lmKHRoaXMuYWNjZXB0SWRlbnQoIm5vdCIpKWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VTdXBwb3J0c0NvbmRpdGlvbkluUGFyZW5zKCkpO2Vsc2UgaWYoZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVN1cHBvcnRzQ29uZGl0aW9uSW5QYXJlbnMoKSksdGhpcy5wZWVrUmVnRXhwKFpuLklkZW50LC9eKGFuZHxvcikkL2kpKWZvcih2YXIgdD10aGlzLnRva2VuLnRleHQudG9Mb3dlckNhc2UoKTt0aGlzLmFjY2VwdElkZW50KHQpOyllLmFkZENoaWxkKHRoaXMuX3BhcnNlU3VwcG9ydHNDb25kaXRpb25JblBhcmVucygpKTtyZXR1cm4gdGhpcy5maW5pc2goZSl9LGUucHJvdG90eXBlLl9wYXJzZVN1cHBvcnRzQ29uZGl0aW9uSW5QYXJlbnM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNyZWF0ZShIaSk7aWYodGhpcy5hY2NlcHQoWm4uUGFyZW50aGVzaXNMKSlyZXR1cm4gdGhpcy5wcmV2VG9rZW4mJihlLmxQYXJlbnQ9dGhpcy5wcmV2VG9rZW4ub2Zmc2V0KSxlLmFkZENoaWxkKHRoaXMuX3RyeVRvUGFyc2VEZWNsYXJhdGlvbihbWm4uUGFyZW50aGVzaXNSXSkpfHx0aGlzLl9wYXJzZVN1cHBvcnRzQ29uZGl0aW9uKCk/dGhpcy5hY2NlcHQoWm4uUGFyZW50aGVzaXNSKT8odGhpcy5wcmV2VG9rZW4mJihlLnJQYXJlbnQ9dGhpcy5wcmV2VG9rZW4ub2Zmc2V0KSx0aGlzLmZpbmlzaChlKSk6dGhpcy5maW5pc2goZSxDcy5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQsW1puLlBhcmVudGhlc2lzUl0sW10pOnRoaXMuZmluaXNoKGUsQ3MuQ29uZGl0aW9uRXhwZWN0ZWQpO2lmKHRoaXMucGVlayhabi5JZGVudCkpe3ZhciB0PXRoaXMubWFyaygpO2lmKHRoaXMuY29uc3VtZVRva2VuKCksIXRoaXMuaGFzV2hpdGVzcGFjZSgpJiZ0aGlzLmFjY2VwdChabi5QYXJlbnRoZXNpc0wpKXtmb3IodmFyIG49MTt0aGlzLnRva2VuLnR5cGUhPT1abi5FT0YmJjAhPT1uOyl0aGlzLnRva2VuLnR5cGU9PT1abi5QYXJlbnRoZXNpc0w/bisrOnRoaXMudG9rZW4udHlwZT09PVpuLlBhcmVudGhlc2lzUiYmbi0tLHRoaXMuY29uc3VtZVRva2VuKCk7cmV0dXJuIHRoaXMuZmluaXNoKGUpfXRoaXMucmVzdG9yZUF0TWFyayh0KX1yZXR1cm4gdGhpcy5maW5pc2goZSxDcy5MZWZ0UGFyZW50aGVzaXNFeHBlY3RlZCxbXSxbWm4uUGFyZW50aGVzaXNMXSl9LGUucHJvdG90eXBlLl9wYXJzZU1lZGlhRGVjbGFyYXRpb249ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPSExKSxlP3RoaXMuX3RyeVBhcnNlUnVsZXNldCghMCl8fHRoaXMuX3RyeVRvUGFyc2VEZWNsYXJhdGlvbigpfHx0aGlzLl9wYXJzZVN0eWxlc2hlZXRTdGF0ZW1lbnQoITApOnRoaXMuX3BhcnNlU3R5bGVzaGVldFN0YXRlbWVudCghMSl9LGUucHJvdG90eXBlLl9wYXJzZU1lZGlhPWZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUmJihlPSExKSwhdGhpcy5wZWVrS2V5d29yZCgiQG1lZGlhIikpcmV0dXJuIG51bGw7dmFyIHQ9dGhpcy5jcmVhdGUoVmkpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHQuYWRkQ2hpbGQodGhpcy5fcGFyc2VNZWRpYVF1ZXJ5TGlzdCgpKT90aGlzLl9wYXJzZUJvZHkodCx0aGlzLl9wYXJzZU1lZGlhRGVjbGFyYXRpb24uYmluZCh0aGlzLGUpKTp0aGlzLmZpbmlzaCh0LENzLk1lZGlhUXVlcnlFeHBlY3RlZCl9LGUucHJvdG90eXBlLl9wYXJzZU1lZGlhUXVlcnlMaXN0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jcmVhdGUoQmkpO2lmKCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlTWVkaWFRdWVyeSgpKSlyZXR1cm4gdGhpcy5maW5pc2goZSxDcy5NZWRpYVF1ZXJ5RXhwZWN0ZWQpO2Zvcig7dGhpcy5hY2NlcHQoWm4uQ29tbWEpOylpZighZS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1lZGlhUXVlcnkoKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUsQ3MuTWVkaWFRdWVyeUV4cGVjdGVkKTtyZXR1cm4gdGhpcy5maW5pc2goZSl9LGUucHJvdG90eXBlLl9wYXJzZU1lZGlhUXVlcnk9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNyZWF0ZShqaSksdD10aGlzLm1hcmsoKTtpZih0aGlzLmFjY2VwdElkZW50KCJub3QiKSx0aGlzLnBlZWsoWm4uUGFyZW50aGVzaXNMKSl0aGlzLnJlc3RvcmVBdE1hcmsodCksZS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1lZGlhQ29uZGl0aW9uKCkpO2Vsc2V7aWYodGhpcy5hY2NlcHRJZGVudCgib25seSIpLCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSkpcmV0dXJuIG51bGw7dGhpcy5hY2NlcHRJZGVudCgiYW5kIikmJmUuYWRkQ2hpbGQodGhpcy5fcGFyc2VNZWRpYUNvbmRpdGlvbigpKX1yZXR1cm4gdGhpcy5maW5pc2goZSl9LGUucHJvdG90eXBlLl9wYXJzZVJhdGlvPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5tYXJrKCksdD10aGlzLmNyZWF0ZShybyk7cmV0dXJuIHRoaXMuX3BhcnNlTnVtZXJpYygpP3RoaXMuYWNjZXB0RGVsaW0oIi8iKT90aGlzLl9wYXJzZU51bWVyaWMoKT90aGlzLmZpbmlzaCh0KTp0aGlzLmZpbmlzaCh0LENzLk51bWJlckV4cGVjdGVkKToodGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGwpOm51bGx9LGUucHJvdG90eXBlLl9wYXJzZU1lZGlhQ29uZGl0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jcmVhdGUocWkpO3RoaXMuYWNjZXB0SWRlbnQoIm5vdCIpO2Zvcih2YXIgdD0hMDt0Oyl7aWYoIXRoaXMuYWNjZXB0KFpuLlBhcmVudGhlc2lzTCkpcmV0dXJuIHRoaXMuZmluaXNoKGUsQ3MuTGVmdFBhcmVudGhlc2lzRXhwZWN0ZWQsW10sW1puLkN1cmx5TF0pO2lmKHRoaXMucGVlayhabi5QYXJlbnRoZXNpc0wpfHx0aGlzLnBlZWtJZGVudCgibm90Iik/ZS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1lZGlhQ29uZGl0aW9uKCkpOmUuYWRkQ2hpbGQodGhpcy5fcGFyc2VNZWRpYUZlYXR1cmUoKSksIXRoaXMuYWNjZXB0KFpuLlBhcmVudGhlc2lzUikpcmV0dXJuIHRoaXMuZmluaXNoKGUsQ3MuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkLFtdLFtabi5DdXJseUxdKTt0PXRoaXMuYWNjZXB0SWRlbnQoImFuZCIpfHx0aGlzLmFjY2VwdElkZW50KCJvciIpfXJldHVybiB0aGlzLmZpbmlzaChlKX0sZS5wcm90b3R5cGUuX3BhcnNlTWVkaWFGZWF0dXJlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PVtabi5QYXJlbnRoZXNpc1JdLG49dGhpcy5jcmVhdGUoJGkpLHI9ZnVuY3Rpb24oKXtyZXR1cm4gZS5hY2NlcHREZWxpbSgiPCIpfHxlLmFjY2VwdERlbGltKCI+Iik/KGUuaGFzV2hpdGVzcGFjZSgpfHxlLmFjY2VwdERlbGltKCI9IiksITApOiEhZS5hY2NlcHREZWxpbSgiPSIpfTtpZihuLmFkZENoaWxkKHRoaXMuX3BhcnNlTWVkaWFGZWF0dXJlTmFtZSgpKSl7aWYodGhpcy5hY2NlcHQoWm4uQ29sb24pKXtpZighbi5hZGRDaGlsZCh0aGlzLl9wYXJzZU1lZGlhRmVhdHVyZVZhbHVlKCkpKXJldHVybiB0aGlzLmZpbmlzaChuLENzLlRlcm1FeHBlY3RlZCxbXSx0KX1lbHNlIGlmKHIoKSl7aWYoIW4uYWRkQ2hpbGQodGhpcy5fcGFyc2VNZWRpYUZlYXR1cmVWYWx1ZSgpKSlyZXR1cm4gdGhpcy5maW5pc2gobixDcy5UZXJtRXhwZWN0ZWQsW10sdCk7aWYocigpJiYhbi5hZGRDaGlsZCh0aGlzLl9wYXJzZU1lZGlhRmVhdHVyZVZhbHVlKCkpKXJldHVybiB0aGlzLmZpbmlzaChuLENzLlRlcm1FeHBlY3RlZCxbXSx0KX19ZWxzZXtpZighbi5hZGRDaGlsZCh0aGlzLl9wYXJzZU1lZGlhRmVhdHVyZVZhbHVlKCkpKXJldHVybiB0aGlzLmZpbmlzaChuLENzLklkZW50aWZpZXJFeHBlY3RlZCxbXSx0KTtpZighcigpKXJldHVybiB0aGlzLmZpbmlzaChuLENzLk9wZXJhdG9yRXhwZWN0ZWQsW10sdCk7aWYoIW4uYWRkQ2hpbGQodGhpcy5fcGFyc2VNZWRpYUZlYXR1cmVOYW1lKCkpKXJldHVybiB0aGlzLmZpbmlzaChuLENzLklkZW50aWZpZXJFeHBlY3RlZCxbXSx0KTtpZihyKCkmJiFuLmFkZENoaWxkKHRoaXMuX3BhcnNlTWVkaWFGZWF0dXJlVmFsdWUoKSkpcmV0dXJuIHRoaXMuZmluaXNoKG4sQ3MuVGVybUV4cGVjdGVkLFtdLHQpfXJldHVybiB0aGlzLmZpbmlzaChuKX0sZS5wcm90b3R5cGUuX3BhcnNlTWVkaWFGZWF0dXJlTmFtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJzZUlkZW50KCl9LGUucHJvdG90eXBlLl9wYXJzZU1lZGlhRmVhdHVyZVZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlUmF0aW8oKXx8dGhpcy5fcGFyc2VUZXJtRXhwcmVzc2lvbigpfSxlLnByb3RvdHlwZS5fcGFyc2VNZWRpdW09ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNyZWF0ZShvaSk7cmV0dXJuIGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKT90aGlzLmZpbmlzaChlKTpudWxsfSxlLnByb3RvdHlwZS5fcGFyc2VQYWdlRGVjbGFyYXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VQYWdlTWFyZ2luQm94KCl8fHRoaXMuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uKCl9LGUucHJvdG90eXBlLl9wYXJzZVBhZ2U9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQHBhZ2UiKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZShHaSk7aWYodGhpcy5jb25zdW1lVG9rZW4oKSxlLmFkZENoaWxkKHRoaXMuX3BhcnNlUGFnZVNlbGVjdG9yKCkpKWZvcig7dGhpcy5hY2NlcHQoWm4uQ29tbWEpOylpZighZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVBhZ2VTZWxlY3RvcigpKSlyZXR1cm4gdGhpcy5maW5pc2goZSxDcy5JZGVudGlmaWVyRXhwZWN0ZWQpO3JldHVybiB0aGlzLl9wYXJzZUJvZHkoZSx0aGlzLl9wYXJzZVBhZ2VEZWNsYXJhdGlvbi5iaW5kKHRoaXMpKX0sZS5wcm90b3R5cGUuX3BhcnNlUGFnZU1hcmdpbkJveD1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWsoWm4uQXRLZXl3b3JkKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZShKaSk7cmV0dXJuIHRoaXMuYWNjZXB0T25lS2V5d29yZChmbCl8fHRoaXMubWFya0Vycm9yKGUsQ3MuVW5rbm93bkF0UnVsZSxbXSxbWm4uQ3VybHlMXSksdGhpcy5fcGFyc2VCb2R5KGUsdGhpcy5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb24uYmluZCh0aGlzKSl9LGUucHJvdG90eXBlLl9wYXJzZVBhZ2VTZWxlY3Rvcj1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWsoWm4uSWRlbnQpJiYhdGhpcy5wZWVrKFpuLkNvbG9uKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZShvaSk7cmV0dXJuIGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKSx0aGlzLmFjY2VwdChabi5Db2xvbikmJiFlLmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSk/dGhpcy5maW5pc2goZSxDcy5JZGVudGlmaWVyRXhwZWN0ZWQpOnRoaXMuZmluaXNoKGUpfSxlLnByb3RvdHlwZS5fcGFyc2VEb2N1bWVudD1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJALW1vei1kb2N1bWVudCIpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKEtpKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLnJlc3luYyhbXSxbWm4uQ3VybHlMXSksdGhpcy5fcGFyc2VCb2R5KGUsdGhpcy5fcGFyc2VTdHlsZXNoZWV0U3RhdGVtZW50LmJpbmQodGhpcykpfSxlLnByb3RvdHlwZS5fcGFyc2VVbmtub3duQXRSdWxlPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVlayhabi5BdEtleXdvcmQpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKGJvKTtlLmFkZENoaWxkKHRoaXMuX3BhcnNlVW5rbm93bkF0UnVsZU5hbWUoKSk7dmFyIHQ9MCxuPTAscj0wLGk9MDtlOmZvcig7Oyl7c3dpdGNoKHRoaXMudG9rZW4udHlwZSl7Y2FzZSBabi5TZW1pQ29sb246aWYoMD09PW4mJjA9PT1yJiYwPT09aSlicmVhayBlO2JyZWFrO2Nhc2UgWm4uRU9GOnJldHVybiBuPjA/dGhpcy5maW5pc2goZSxDcy5SaWdodEN1cmx5RXhwZWN0ZWQpOmk+MD90aGlzLmZpbmlzaChlLENzLlJpZ2h0U3F1YXJlQnJhY2tldEV4cGVjdGVkKTpyPjA/dGhpcy5maW5pc2goZSxDcy5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQpOnRoaXMuZmluaXNoKGUpO2Nhc2UgWm4uQ3VybHlMOnQrKyxuKys7YnJlYWs7Y2FzZSBabi5DdXJseVI6aWYobi0tLHQ+MCYmMD09PW4pe2lmKHRoaXMuY29uc3VtZVRva2VuKCksaT4wKXJldHVybiB0aGlzLmZpbmlzaChlLENzLlJpZ2h0U3F1YXJlQnJhY2tldEV4cGVjdGVkKTtpZihyPjApcmV0dXJuIHRoaXMuZmluaXNoKGUsQ3MuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKTticmVhayBlfWlmKG48MCl7aWYoMD09PXImJjA9PT1pKWJyZWFrIGU7cmV0dXJuIHRoaXMuZmluaXNoKGUsQ3MuTGVmdEN1cmx5RXhwZWN0ZWQpfWJyZWFrO2Nhc2UgWm4uUGFyZW50aGVzaXNMOnIrKzticmVhaztjYXNlIFpuLlBhcmVudGhlc2lzUjppZigtLXI8MClyZXR1cm4gdGhpcy5maW5pc2goZSxDcy5MZWZ0UGFyZW50aGVzaXNFeHBlY3RlZCk7YnJlYWs7Y2FzZSBabi5CcmFja2V0TDppKys7YnJlYWs7Y2FzZSBabi5CcmFja2V0UjppZigtLWk8MClyZXR1cm4gdGhpcy5maW5pc2goZSxDcy5MZWZ0U3F1YXJlQnJhY2tldEV4cGVjdGVkKX10aGlzLmNvbnN1bWVUb2tlbigpfXJldHVybiBlfSxlLnByb3RvdHlwZS5fcGFyc2VVbmtub3duQXRSdWxlTmFtZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuY3JlYXRlKG9pKTtyZXR1cm4gdGhpcy5hY2NlcHQoWm4uQXRLZXl3b3JkKT90aGlzLmZpbmlzaChlKTplfSxlLnByb3RvdHlwZS5fcGFyc2VPcGVyYXRvcj1mdW5jdGlvbigpe2lmKHRoaXMucGVla0RlbGltKCIvIil8fHRoaXMucGVla0RlbGltKCIqIil8fHRoaXMucGVla0RlbGltKCIrIil8fHRoaXMucGVla0RlbGltKCItIil8fHRoaXMucGVlayhabi5EYXNobWF0Y2gpfHx0aGlzLnBlZWsoWm4uSW5jbHVkZXMpfHx0aGlzLnBlZWsoWm4uU3Vic3RyaW5nT3BlcmF0b3IpfHx0aGlzLnBlZWsoWm4uUHJlZml4T3BlcmF0b3IpfHx0aGlzLnBlZWsoWm4uU3VmZml4T3BlcmF0b3IpfHx0aGlzLnBlZWtEZWxpbSgiPSIpKXt2YXIgZT10aGlzLmNyZWF0ZU5vZGUoWnIuT3BlcmF0b3IpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuZmluaXNoKGUpfXJldHVybiBudWxsfSxlLnByb3RvdHlwZS5fcGFyc2VVbmFyeU9wZXJhdG9yPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVla0RlbGltKCIrIikmJiF0aGlzLnBlZWtEZWxpbSgiLSIpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKG9pKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmZpbmlzaChlKX0sZS5wcm90b3R5cGUuX3BhcnNlQ29tYmluYXRvcj1mdW5jdGlvbigpe2lmKHRoaXMucGVla0RlbGltKCI+Iikpe3ZhciBlPXRoaXMuY3JlYXRlKG9pKTt0aGlzLmNvbnN1bWVUb2tlbigpO3ZhciB0PXRoaXMubWFyaygpO2lmKCF0aGlzLmhhc1doaXRlc3BhY2UoKSYmdGhpcy5hY2NlcHREZWxpbSgiPiIpKXtpZighdGhpcy5oYXNXaGl0ZXNwYWNlKCkmJnRoaXMuYWNjZXB0RGVsaW0oIj4iKSlyZXR1cm4gZS50eXBlPVpyLlNlbGVjdG9yQ29tYmluYXRvclNoYWRvd1BpZXJjaW5nRGVzY2VuZGFudCx0aGlzLmZpbmlzaChlKTt0aGlzLnJlc3RvcmVBdE1hcmsodCl9cmV0dXJuIGUudHlwZT1aci5TZWxlY3RvckNvbWJpbmF0b3JQYXJlbnQsdGhpcy5maW5pc2goZSl9aWYodGhpcy5wZWVrRGVsaW0oIisiKSl7ZT10aGlzLmNyZWF0ZShvaSk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksZS50eXBlPVpyLlNlbGVjdG9yQ29tYmluYXRvclNpYmxpbmcsdGhpcy5maW5pc2goZSl9aWYodGhpcy5wZWVrRGVsaW0oIn4iKSl7ZT10aGlzLmNyZWF0ZShvaSk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksZS50eXBlPVpyLlNlbGVjdG9yQ29tYmluYXRvckFsbFNpYmxpbmdzLHRoaXMuZmluaXNoKGUpfWlmKHRoaXMucGVla0RlbGltKCIvIikpe2U9dGhpcy5jcmVhdGUob2kpO3RoaXMuY29uc3VtZVRva2VuKCk7dD10aGlzLm1hcmsoKTtpZighdGhpcy5oYXNXaGl0ZXNwYWNlKCkmJnRoaXMuYWNjZXB0SWRlbnQoImRlZXAiKSYmIXRoaXMuaGFzV2hpdGVzcGFjZSgpJiZ0aGlzLmFjY2VwdERlbGltKCIvIikpcmV0dXJuIGUudHlwZT1aci5TZWxlY3RvckNvbWJpbmF0b3JTaGFkb3dQaWVyY2luZ0Rlc2NlbmRhbnQsdGhpcy5maW5pc2goZSk7dGhpcy5yZXN0b3JlQXRNYXJrKHQpfXJldHVybiBudWxsfSxlLnByb3RvdHlwZS5fcGFyc2VTaW1wbGVTZWxlY3Rvcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuY3JlYXRlKG1pKSx0PTA7Zm9yKGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VFbGVtZW50TmFtZSgpKSYmdCsrOygwPT09dHx8IXRoaXMuaGFzV2hpdGVzcGFjZSgpKSYmZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVNpbXBsZVNlbGVjdG9yQm9keSgpKTspdCsrO3JldHVybiB0PjA/dGhpcy5maW5pc2goZSk6bnVsbH0sZS5wcm90b3R5cGUuX3BhcnNlU2ltcGxlU2VsZWN0b3JCb2R5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlUHNldWRvKCl8fHRoaXMuX3BhcnNlSGFzaCgpfHx0aGlzLl9wYXJzZUNsYXNzKCl8fHRoaXMuX3BhcnNlQXR0cmliKCl9LGUucHJvdG90eXBlLl9wYXJzZVNlbGVjdG9ySWRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VJZGVudCgpfSxlLnByb3RvdHlwZS5fcGFyc2VIYXNoPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVlayhabi5IYXNoKSYmIXRoaXMucGVla0RlbGltKCIjIikpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5jcmVhdGVOb2RlKFpyLklkZW50aWZpZXJTZWxlY3Rvcik7aWYodGhpcy5hY2NlcHREZWxpbSgiIyIpKXtpZih0aGlzLmhhc1doaXRlc3BhY2UoKXx8IWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VTZWxlY3RvcklkZW50KCkpKXJldHVybiB0aGlzLmZpbmlzaChlLENzLklkZW50aWZpZXJFeHBlY3RlZCl9ZWxzZSB0aGlzLmNvbnN1bWVUb2tlbigpO3JldHVybiB0aGlzLmZpbmlzaChlKX0sZS5wcm90b3R5cGUuX3BhcnNlQ2xhc3M9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrRGVsaW0oIi4iKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZU5vZGUoWnIuQ2xhc3NTZWxlY3Rvcik7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5oYXNXaGl0ZXNwYWNlKCl8fCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlU2VsZWN0b3JJZGVudCgpKT90aGlzLmZpbmlzaChlLENzLklkZW50aWZpZXJFeHBlY3RlZCk6dGhpcy5maW5pc2goZSl9LGUucHJvdG90eXBlLl9wYXJzZUVsZW1lbnROYW1lPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5tYXJrKCksdD10aGlzLmNyZWF0ZU5vZGUoWnIuRWxlbWVudE5hbWVTZWxlY3Rvcik7cmV0dXJuIHQuYWRkQ2hpbGQodGhpcy5fcGFyc2VOYW1lc3BhY2VQcmVmaXgoKSksdC5hZGRDaGlsZCh0aGlzLl9wYXJzZVNlbGVjdG9ySWRlbnQoKSl8fHRoaXMuYWNjZXB0RGVsaW0oIioiKT90aGlzLmZpbmlzaCh0KToodGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGwpfSxlLnByb3RvdHlwZS5fcGFyc2VOYW1lc3BhY2VQcmVmaXg9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm1hcmsoKSx0PXRoaXMuY3JlYXRlTm9kZShaci5OYW1lc3BhY2VQcmVmaXgpO3JldHVybiF0LmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSkmJnRoaXMuYWNjZXB0RGVsaW0oIioiKSx0aGlzLmFjY2VwdERlbGltKCJ8Iik/dGhpcy5maW5pc2godCk6KHRoaXMucmVzdG9yZUF0TWFyayhlKSxudWxsKX0sZS5wcm90b3R5cGUuX3BhcnNlQXR0cmliPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVlayhabi5CcmFja2V0TCkpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5jcmVhdGUoUWkpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLGUuc2V0TmFtZXNwYWNlUHJlZml4KHRoaXMuX3BhcnNlTmFtZXNwYWNlUHJlZml4KCkpLGUuc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZUlkZW50KCkpPyhlLnNldE9wZXJhdG9yKHRoaXMuX3BhcnNlT3BlcmF0b3IoKSkmJihlLnNldFZhbHVlKHRoaXMuX3BhcnNlQmluYXJ5RXhwcigpKSx0aGlzLmFjY2VwdElkZW50KCJpIiksdGhpcy5hY2NlcHRJZGVudCgicyIpKSx0aGlzLmFjY2VwdChabi5CcmFja2V0Uik/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSxDcy5SaWdodFNxdWFyZUJyYWNrZXRFeHBlY3RlZCkpOnRoaXMuZmluaXNoKGUsQ3MuSWRlbnRpZmllckV4cGVjdGVkKX0sZS5wcm90b3R5cGUuX3BhcnNlUHNldWRvPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMuX3RyeVBhcnNlUHNldWRvSWRlbnRpZmllcigpO2lmKHQpe2lmKCF0aGlzLmhhc1doaXRlc3BhY2UoKSYmdGhpcy5hY2NlcHQoWm4uUGFyZW50aGVzaXNMKSl7aWYodC5hZGRDaGlsZCh0aGlzLnRyeSgoZnVuY3Rpb24oKXt2YXIgdD1lLmNyZWF0ZShvaSk7aWYoIXQuYWRkQ2hpbGQoZS5fcGFyc2VTZWxlY3RvcighMSkpKXJldHVybiBudWxsO2Zvcig7ZS5hY2NlcHQoWm4uQ29tbWEpJiZ0LmFkZENoaWxkKGUuX3BhcnNlU2VsZWN0b3IoITEpKTspO3JldHVybiBlLnBlZWsoWm4uUGFyZW50aGVzaXNSKT9lLmZpbmlzaCh0KTpudWxsfSkpfHx0aGlzLl9wYXJzZUJpbmFyeUV4cHIoKSksIXRoaXMuYWNjZXB0KFpuLlBhcmVudGhlc2lzUikpcmV0dXJuIHRoaXMuZmluaXNoKHQsQ3MuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKX1yZXR1cm4gdGhpcy5maW5pc2godCl9cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLl90cnlQYXJzZVBzZXVkb0lkZW50aWZpZXI9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrKFpuLkNvbG9uKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLm1hcmsoKSx0PXRoaXMuY3JlYXRlTm9kZShaci5Qc2V1ZG9TZWxlY3Rvcik7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5oYXNXaGl0ZXNwYWNlKCk/KHRoaXMucmVzdG9yZUF0TWFyayhlKSxudWxsKToodGhpcy5hY2NlcHQoWm4uQ29sb24pLHRoaXMuaGFzV2hpdGVzcGFjZSgpfHwhdC5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpP3RoaXMuZmluaXNoKHQsQ3MuSWRlbnRpZmllckV4cGVjdGVkKTp0aGlzLmZpbmlzaCh0KSl9LGUucHJvdG90eXBlLl90cnlQYXJzZVByaW89ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm1hcmsoKSx0PXRoaXMuX3BhcnNlUHJpbygpO3JldHVybiB0fHwodGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGwpfSxlLnByb3RvdHlwZS5fcGFyc2VQcmlvPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVlayhabi5FeGNsYW1hdGlvbikpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5jcmVhdGVOb2RlKFpyLlByaW8pO3JldHVybiB0aGlzLmFjY2VwdChabi5FeGNsYW1hdGlvbikmJnRoaXMuYWNjZXB0SWRlbnQoImltcG9ydGFudCIpP3RoaXMuZmluaXNoKGUpOm51bGx9LGUucHJvdG90eXBlLl9wYXJzZUV4cHI9ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9ITEpO3ZhciB0PXRoaXMuY3JlYXRlKFhpKTtpZighdC5hZGRDaGlsZCh0aGlzLl9wYXJzZUJpbmFyeUV4cHIoKSkpcmV0dXJuIG51bGw7Zm9yKDs7KXtpZih0aGlzLnBlZWsoWm4uQ29tbWEpKXtpZihlKXJldHVybiB0aGlzLmZpbmlzaCh0KTt0aGlzLmNvbnN1bWVUb2tlbigpfWVsc2UgaWYoIXRoaXMuaGFzV2hpdGVzcGFjZSgpKWJyZWFrO2lmKCF0LmFkZENoaWxkKHRoaXMuX3BhcnNlQmluYXJ5RXhwcigpKSlicmVha31yZXR1cm4gdGhpcy5maW5pc2godCl9LGUucHJvdG90eXBlLl9wYXJzZVVuaWNvZGVSYW5nZT1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtJZGVudCgidSIpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKGFpKTtyZXR1cm4gdGhpcy5hY2NlcHRVbmljb2RlUmFuZ2UoKT90aGlzLmZpbmlzaChlKTpudWxsfSxlLnByb3RvdHlwZS5fcGFyc2VOYW1lZExpbmU9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrKFpuLkJyYWNrZXRMKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZU5vZGUoWnIuR3JpZExpbmUpO2Zvcih0aGlzLmNvbnN1bWVUb2tlbigpO2UuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKTspO3JldHVybiB0aGlzLmFjY2VwdChabi5CcmFja2V0Uik/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSxDcy5SaWdodFNxdWFyZUJyYWNrZXRFeHBlY3RlZCl9LGUucHJvdG90eXBlLl9wYXJzZUJpbmFyeUV4cHI9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmNyZWF0ZShZaSk7aWYoIW4uc2V0TGVmdChlfHx0aGlzLl9wYXJzZVRlcm0oKSkpcmV0dXJuIG51bGw7aWYoIW4uc2V0T3BlcmF0b3IodHx8dGhpcy5fcGFyc2VPcGVyYXRvcigpKSlyZXR1cm4gdGhpcy5maW5pc2gobik7aWYoIW4uc2V0UmlnaHQodGhpcy5fcGFyc2VUZXJtKCkpKXJldHVybiB0aGlzLmZpbmlzaChuLENzLlRlcm1FeHBlY3RlZCk7bj10aGlzLmZpbmlzaChuKTt2YXIgcj10aGlzLl9wYXJzZU9wZXJhdG9yKCk7cmV0dXJuIHImJihuPXRoaXMuX3BhcnNlQmluYXJ5RXhwcihuLHIpKSx0aGlzLmZpbmlzaChuKX0sZS5wcm90b3R5cGUuX3BhcnNlVGVybT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuY3JlYXRlKFppKTtyZXR1cm4gZS5zZXRPcGVyYXRvcih0aGlzLl9wYXJzZVVuYXJ5T3BlcmF0b3IoKSksZS5zZXRFeHByZXNzaW9uKHRoaXMuX3BhcnNlVGVybUV4cHJlc3Npb24oKSk/dGhpcy5maW5pc2goZSk6bnVsbH0sZS5wcm90b3R5cGUuX3BhcnNlVGVybUV4cHJlc3Npb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VVUklMaXRlcmFsKCl8fHRoaXMuX3BhcnNlVW5pY29kZVJhbmdlKCl8fHRoaXMuX3BhcnNlRnVuY3Rpb24oKXx8dGhpcy5fcGFyc2VJZGVudCgpfHx0aGlzLl9wYXJzZVN0cmluZ0xpdGVyYWwoKXx8dGhpcy5fcGFyc2VOdW1lcmljKCl8fHRoaXMuX3BhcnNlSGV4Q29sb3IoKXx8dGhpcy5fcGFyc2VPcGVyYXRpb24oKXx8dGhpcy5fcGFyc2VOYW1lZExpbmUoKX0sZS5wcm90b3R5cGUuX3BhcnNlT3BlcmF0aW9uPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVlayhabi5QYXJlbnRoZXNpc0wpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKG9pKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSxlLmFkZENoaWxkKHRoaXMuX3BhcnNlRXhwcigpKSx0aGlzLmFjY2VwdChabi5QYXJlbnRoZXNpc1IpP3RoaXMuZmluaXNoKGUpOnRoaXMuZmluaXNoKGUsQ3MuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKX0sZS5wcm90b3R5cGUuX3BhcnNlTnVtZXJpYz1mdW5jdGlvbigpe2lmKHRoaXMucGVlayhabi5OdW0pfHx0aGlzLnBlZWsoWm4uUGVyY2VudGFnZSl8fHRoaXMucGVlayhabi5SZXNvbHV0aW9uKXx8dGhpcy5wZWVrKFpuLkxlbmd0aCl8fHRoaXMucGVlayhabi5FTVMpfHx0aGlzLnBlZWsoWm4uRVhTKXx8dGhpcy5wZWVrKFpuLkFuZ2xlKXx8dGhpcy5wZWVrKFpuLlRpbWUpfHx0aGlzLnBlZWsoWm4uRGltZW5zaW9uKXx8dGhpcy5wZWVrKFpuLkZyZXEpKXt2YXIgZT10aGlzLmNyZWF0ZShhbyk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5maW5pc2goZSl9cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLl9wYXJzZVN0cmluZ0xpdGVyYWw9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrKFpuLlN0cmluZykmJiF0aGlzLnBlZWsoWm4uQmFkU3RyaW5nKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZU5vZGUoWnIuU3RyaW5nTGl0ZXJhbCk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5maW5pc2goZSl9LGUucHJvdG90eXBlLl9wYXJzZVVSSUxpdGVyYWw9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrUmVnRXhwKFpuLklkZW50LC9edXJsKC1wcmVmaXgpPyQvaSkpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5tYXJrKCksdD10aGlzLmNyZWF0ZU5vZGUoWnIuVVJJTGl0ZXJhbCk7cmV0dXJuIHRoaXMuYWNjZXB0KFpuLklkZW50KSx0aGlzLmhhc1doaXRlc3BhY2UoKXx8IXRoaXMucGVlayhabi5QYXJlbnRoZXNpc0wpPyh0aGlzLnJlc3RvcmVBdE1hcmsoZSksbnVsbCk6KHRoaXMuc2Nhbm5lci5pblVSTD0hMCx0aGlzLmNvbnN1bWVUb2tlbigpLHQuYWRkQ2hpbGQodGhpcy5fcGFyc2VVUkxBcmd1bWVudCgpKSx0aGlzLnNjYW5uZXIuaW5VUkw9ITEsdGhpcy5hY2NlcHQoWm4uUGFyZW50aGVzaXNSKT90aGlzLmZpbmlzaCh0KTp0aGlzLmZpbmlzaCh0LENzLlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCkpfSxlLnByb3RvdHlwZS5fcGFyc2VVUkxBcmd1bWVudD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuY3JlYXRlKG9pKTtyZXR1cm4gdGhpcy5hY2NlcHQoWm4uU3RyaW5nKXx8dGhpcy5hY2NlcHQoWm4uQmFkU3RyaW5nKXx8dGhpcy5hY2NlcHRVbnF1b3RlZFN0cmluZygpP3RoaXMuZmluaXNoKGUpOm51bGx9LGUucHJvdG90eXBlLl9wYXJzZUlkZW50PWZ1bmN0aW9uKGUpe2lmKCF0aGlzLnBlZWsoWm4uSWRlbnQpKXJldHVybiBudWxsO3ZhciB0PXRoaXMuY3JlYXRlKGxpKTtyZXR1cm4gZSYmKHQucmVmZXJlbmNlVHlwZXM9ZSksdC5pc0N1c3RvbVByb3BlcnR5PXRoaXMucGVla1JlZ0V4cChabi5JZGVudCwvXi0tLyksdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmZpbmlzaCh0KX0sZS5wcm90b3R5cGUuX3BhcnNlRnVuY3Rpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm1hcmsoKSx0PXRoaXMuY3JlYXRlKHdpKTtpZighdC5zZXRJZGVudGlmaWVyKHRoaXMuX3BhcnNlRnVuY3Rpb25JZGVudGlmaWVyKCkpKXJldHVybiBudWxsO2lmKHRoaXMuaGFzV2hpdGVzcGFjZSgpfHwhdGhpcy5hY2NlcHQoWm4uUGFyZW50aGVzaXNMKSlyZXR1cm4gdGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGw7aWYodC5nZXRBcmd1bWVudHMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZUZ1bmN0aW9uQXJndW1lbnQoKSkpZm9yKDt0aGlzLmFjY2VwdChabi5Db21tYSkmJiF0aGlzLnBlZWsoWm4uUGFyZW50aGVzaXNSKTspdC5nZXRBcmd1bWVudHMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZUZ1bmN0aW9uQXJndW1lbnQoKSl8fHRoaXMubWFya0Vycm9yKHQsQ3MuRXhwcmVzc2lvbkV4cGVjdGVkKTtyZXR1cm4gdGhpcy5hY2NlcHQoWm4uUGFyZW50aGVzaXNSKT90aGlzLmZpbmlzaCh0KTp0aGlzLmZpbmlzaCh0LENzLlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCl9LGUucHJvdG90eXBlLl9wYXJzZUZ1bmN0aW9uSWRlbnRpZmllcj1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWsoWm4uSWRlbnQpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKGxpKTtpZihlLnJlZmVyZW5jZVR5cGVzPVtlaS5GdW5jdGlvbl0sdGhpcy5hY2NlcHRJZGVudCgicHJvZ2lkIikpe2lmKHRoaXMuYWNjZXB0KFpuLkNvbG9uKSlmb3IoO3RoaXMuYWNjZXB0KFpuLklkZW50KSYmdGhpcy5hY2NlcHREZWxpbSgiLiIpOyk7cmV0dXJuIHRoaXMuZmluaXNoKGUpfXJldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuZmluaXNoKGUpfSxlLnByb3RvdHlwZS5fcGFyc2VGdW5jdGlvbkFyZ3VtZW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jcmVhdGUoU2kpO3JldHVybiBlLnNldFZhbHVlKHRoaXMuX3BhcnNlRXhwcighMCkpP3RoaXMuZmluaXNoKGUpOm51bGx9LGUucHJvdG90eXBlLl9wYXJzZUhleENvbG9yPWZ1bmN0aW9uKCl7aWYodGhpcy5wZWVrUmVnRXhwKFpuLkhhc2gsL14jKFtBLUZhLWYwLTldezN9fFtBLUZhLWYwLTldezR9fFtBLUZhLWYwLTldezZ9fFtBLUZhLWYwLTldezh9KSQvZykpe3ZhciBlPXRoaXMuY3JlYXRlKG5vKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmZpbmlzaChlKX1yZXR1cm4gbnVsbH0sZX0oKTtmdW5jdGlvbiB3bChlLHQpe3JldHVybi0xIT09ZS5pbmRleE9mKHQpfWZ1bmN0aW9uIHhsKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWVbdF09YXJndW1lbnRzW3RdO2Zvcih2YXIgbj1bXSxyPTAsaT1lO3I8aS5sZW5ndGg7cisrKWZvcih2YXIgbz1pW3JdLHM9MCxhPW87czxhLmxlbmd0aDtzKyspe3ZhciBsPWFbc107d2wobixsKXx8bi5wdXNoKGwpfXJldHVybiBufXZhciBTbCxDbD1mdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKHQsbil7cmV0dXJuKGU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsdCl7ZS5fX3Byb3RvX189dH18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pfSkodCxuKX07cmV0dXJuIGZ1bmN0aW9uKHQsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4mJm51bGwhPT1uKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcobikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gcigpe3RoaXMuY29uc3RydWN0b3I9dH1lKHQsbiksdC5wcm90b3R5cGU9bnVsbD09PW4/T2JqZWN0LmNyZWF0ZShuKTooci5wcm90b3R5cGU9bi5wcm90b3R5cGUsbmV3IHIpfX0oKSxrbD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt0aGlzLm9mZnNldD1lLHRoaXMubGVuZ3RoPXQsdGhpcy5zeW1ib2xzPVtdLHRoaXMucGFyZW50PW51bGwsdGhpcy5jaGlsZHJlbj1bXX1yZXR1cm4gZS5wcm90b3R5cGUuYWRkQ2hpbGQ9ZnVuY3Rpb24oZSl7dGhpcy5jaGlsZHJlbi5wdXNoKGUpLGUuc2V0UGFyZW50KHRoaXMpfSxlLnByb3RvdHlwZS5zZXRQYXJlbnQ9ZnVuY3Rpb24oZSl7dGhpcy5wYXJlbnQ9ZX0sZS5wcm90b3R5cGUuZmluZFNjb3BlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PTApLHRoaXMub2Zmc2V0PD1lJiZ0aGlzLm9mZnNldCt0aGlzLmxlbmd0aD5lK3R8fHRoaXMub2Zmc2V0PT09ZSYmdGhpcy5sZW5ndGg9PT10P3RoaXMuZmluZEluU2NvcGUoZSx0KTpudWxsfSxlLnByb3RvdHlwZS5maW5kSW5TY29wZT1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PTApO3ZhciBuPWUrdCxyPWZ1bmN0aW9uKGUsdCl7dmFyIG49MCxyPWUubGVuZ3RoO2lmKDA9PT1yKXJldHVybiAwO2Zvcig7bjxyOyl7dmFyIGk9TWF0aC5mbG9vcigobityKS8yKTt0KGVbaV0pP3I9aTpuPWkrMX1yZXR1cm4gbn0odGhpcy5jaGlsZHJlbiwoZnVuY3Rpb24oZSl7cmV0dXJuIGUub2Zmc2V0Pm59KSk7aWYoMD09PXIpcmV0dXJuIHRoaXM7dmFyIGk9dGhpcy5jaGlsZHJlbltyLTFdO3JldHVybiBpLm9mZnNldDw9ZSYmaS5vZmZzZXQraS5sZW5ndGg+PWUrdD9pLmZpbmRJblNjb3BlKGUsdCk6dGhpc30sZS5wcm90b3R5cGUuYWRkU3ltYm9sPWZ1bmN0aW9uKGUpe3RoaXMuc3ltYm9scy5wdXNoKGUpfSxlLnByb3RvdHlwZS5nZXRTeW1ib2w9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MDtuPHRoaXMuc3ltYm9scy5sZW5ndGg7bisrKXt2YXIgcj10aGlzLnN5bWJvbHNbbl07aWYoci5uYW1lPT09ZSYmci50eXBlPT09dClyZXR1cm4gcn1yZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuZ2V0U3ltYm9scz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN5bWJvbHN9LGV9KCksX2w9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBlLmNhbGwodGhpcywwLE51bWJlci5NQVhfVkFMVUUpfHx0aGlzfXJldHVybiBDbCh0LGUpLHR9KGtsKSxFbD1mdW5jdGlvbihlLHQsbixyKXt0aGlzLm5hbWU9ZSx0aGlzLnZhbHVlPXQsdGhpcy5ub2RlPW4sdGhpcy50eXBlPXJ9LEZsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLnNjb3BlPWV9cmV0dXJuIGUucHJvdG90eXBlLmFkZFN5bWJvbD1mdW5jdGlvbihlLHQsbixyKXtpZigtMSE9PWUub2Zmc2V0KXt2YXIgaT10aGlzLnNjb3BlLmZpbmRTY29wZShlLm9mZnNldCxlLmxlbmd0aCk7aSYmaS5hZGRTeW1ib2wobmV3IEVsKHQsbixlLHIpKX19LGUucHJvdG90eXBlLmFkZFNjb3BlPWZ1bmN0aW9uKGUpe2lmKC0xIT09ZS5vZmZzZXQpe3ZhciB0PXRoaXMuc2NvcGUuZmluZFNjb3BlKGUub2Zmc2V0LGUubGVuZ3RoKTtpZih0JiYodC5vZmZzZXQhPT1lLm9mZnNldHx8dC5sZW5ndGghPT1lLmxlbmd0aCkpe3ZhciBuPW5ldyBrbChlLm9mZnNldCxlLmxlbmd0aCk7cmV0dXJuIHQuYWRkQ2hpbGQobiksbn1yZXR1cm4gdH1yZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuYWRkU3ltYm9sVG9DaGlsZFNjb3BlPWZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoZSYmLTEhPT1lLm9mZnNldCl7dmFyIG89dGhpcy5hZGRTY29wZShlKTtvJiZvLmFkZFN5bWJvbChuZXcgRWwobixyLHQsaSkpfX0sZS5wcm90b3R5cGUudmlzaXROb2RlPWZ1bmN0aW9uKGUpe3N3aXRjaChlLnR5cGUpe2Nhc2UgWnIuS2V5ZnJhbWU6cmV0dXJuIHRoaXMuYWRkU3ltYm9sKGUsZS5nZXROYW1lKCksdm9pZCAwLGVpLktleWZyYW1lKSwhMDtjYXNlIFpyLkN1c3RvbVByb3BlcnR5RGVjbGFyYXRpb246cmV0dXJuIHRoaXMudmlzaXRDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uTm9kZShlKTtjYXNlIFpyLlZhcmlhYmxlRGVjbGFyYXRpb246cmV0dXJuIHRoaXMudmlzaXRWYXJpYWJsZURlY2xhcmF0aW9uTm9kZShlKTtjYXNlIFpyLlJ1bGVzZXQ6cmV0dXJuIHRoaXMudmlzaXRSdWxlU2V0KGUpO2Nhc2UgWnIuTWl4aW5EZWNsYXJhdGlvbjpyZXR1cm4gdGhpcy5hZGRTeW1ib2woZSxlLmdldE5hbWUoKSx2b2lkIDAsZWkuTWl4aW4pLCEwO2Nhc2UgWnIuRnVuY3Rpb25EZWNsYXJhdGlvbjpyZXR1cm4gdGhpcy5hZGRTeW1ib2woZSxlLmdldE5hbWUoKSx2b2lkIDAsZWkuRnVuY3Rpb24pLCEwO2Nhc2UgWnIuRnVuY3Rpb25QYXJhbWV0ZXI6cmV0dXJuIHRoaXMudmlzaXRGdW5jdGlvblBhcmFtZXRlck5vZGUoZSk7Y2FzZSBaci5EZWNsYXJhdGlvbnM6cmV0dXJuIHRoaXMuYWRkU2NvcGUoZSksITA7Y2FzZSBaci5Gb3I6dmFyIHQ9ZSxuPXQuZ2V0RGVjbGFyYXRpb25zKCk7cmV0dXJuIG4mJnQudmFyaWFibGUmJnRoaXMuYWRkU3ltYm9sVG9DaGlsZFNjb3BlKG4sdC52YXJpYWJsZSx0LnZhcmlhYmxlLmdldE5hbWUoKSx2b2lkIDAsZWkuVmFyaWFibGUpLCEwO2Nhc2UgWnIuRWFjaDp2YXIgcj1lLGk9ci5nZXREZWNsYXJhdGlvbnMoKTtpZihpKWZvcih2YXIgbz0wLHM9ci5nZXRWYXJpYWJsZXMoKS5nZXRDaGlsZHJlbigpO288cy5sZW5ndGg7bysrKXt2YXIgYT1zW29dO3RoaXMuYWRkU3ltYm9sVG9DaGlsZFNjb3BlKGksYSxhLmdldE5hbWUoKSx2b2lkIDAsZWkuVmFyaWFibGUpfXJldHVybiEwfXJldHVybiEwfSxlLnByb3RvdHlwZS52aXNpdFJ1bGVTZXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zY29wZS5maW5kU2NvcGUoZS5vZmZzZXQsZS5sZW5ndGgpO2lmKHQpZm9yKHZhciBuPTAscj1lLmdldFNlbGVjdG9ycygpLmdldENoaWxkcmVuKCk7bjxyLmxlbmd0aDtuKyspe3ZhciBpPXJbbl07aSBpbnN0YW5jZW9mIHVpJiYxPT09aS5nZXRDaGlsZHJlbigpLmxlbmd0aCYmdC5hZGRTeW1ib2wobmV3IEVsKGkuZ2V0Q2hpbGQoMCkuZ2V0VGV4dCgpLHZvaWQgMCxpLGVpLlJ1bGUpKX1yZXR1cm4hMH0sZS5wcm90b3R5cGUudmlzaXRWYXJpYWJsZURlY2xhcmF0aW9uTm9kZT1mdW5jdGlvbihlKXt2YXIgdD1lLmdldFZhbHVlKCk/ZS5nZXRWYWx1ZSgpLmdldFRleHQoKTp2b2lkIDA7cmV0dXJuIHRoaXMuYWRkU3ltYm9sKGUsZS5nZXROYW1lKCksdCxlaS5WYXJpYWJsZSksITB9LGUucHJvdG90eXBlLnZpc2l0RnVuY3Rpb25QYXJhbWV0ZXJOb2RlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0UGFyZW50KCkuZ2V0RGVjbGFyYXRpb25zKCk7aWYodCl7dmFyIG49ZS5nZXREZWZhdWx0VmFsdWUoKSxyPW4/bi5nZXRUZXh0KCk6dm9pZCAwO3RoaXMuYWRkU3ltYm9sVG9DaGlsZFNjb3BlKHQsZSxlLmdldE5hbWUoKSxyLGVpLlZhcmlhYmxlKX1yZXR1cm4hMH0sZS5wcm90b3R5cGUudmlzaXRDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uTm9kZT1mdW5jdGlvbihlKXt2YXIgdD1lLmdldFZhbHVlKCk/ZS5nZXRWYWx1ZSgpLmdldFRleHQoKToiIjtyZXR1cm4gdGhpcy5hZGRDU1NWYXJpYWJsZShlLmdldFByb3BlcnR5KCksZS5nZXRQcm9wZXJ0eSgpLmdldE5hbWUoKSx0LGVpLlZhcmlhYmxlKSwhMH0sZS5wcm90b3R5cGUuYWRkQ1NTVmFyaWFibGU9ZnVuY3Rpb24oZSx0LG4scil7LTEhPT1lLm9mZnNldCYmdGhpcy5zY29wZS5hZGRTeW1ib2wobmV3IEVsKHQsbixlLHIpKX0sZX0oKSxSbD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5nbG9iYWw9bmV3IF9sLGUuYWNjZXB0VmlzaXRvcihuZXcgRmwodGhpcy5nbG9iYWwpKX1yZXR1cm4gZS5wcm90b3R5cGUuZmluZFN5bWJvbHNBdE9mZnNldD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10aGlzLmdsb2JhbC5maW5kU2NvcGUoZSwwKSxyPVtdLGk9e307bjspe2Zvcih2YXIgbz1uLmdldFN5bWJvbHMoKSxzPTA7czxvLmxlbmd0aDtzKyspe3ZhciBhPW9bc107YS50eXBlIT09dHx8aVthLm5hbWVdfHwoci5wdXNoKGEpLGlbYS5uYW1lXT0hMCl9bj1uLnBhcmVudH1yZXR1cm4gcn0sZS5wcm90b3R5cGUuaW50ZXJuYWxGaW5kU3ltYm9sPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZTtpZihlLnBhcmVudCBpbnN0YW5jZW9mIHhpJiZlLnBhcmVudC5nZXRQYXJlbnQoKWluc3RhbmNlb2YgZGkmJihuPWUucGFyZW50LmdldFBhcmVudCgpLmdldERlY2xhcmF0aW9ucygpKSxlLnBhcmVudCBpbnN0YW5jZW9mIFNpJiZlLnBhcmVudC5nZXRQYXJlbnQoKWluc3RhbmNlb2Ygd2kpe3ZhciByPWUucGFyZW50LmdldFBhcmVudCgpLmdldElkZW50aWZpZXIoKTtpZihyKXt2YXIgaT10aGlzLmludGVybmFsRmluZFN5bWJvbChyLFtlaS5GdW5jdGlvbl0pO2kmJihuPWkubm9kZS5nZXREZWNsYXJhdGlvbnMoKSl9fWlmKCFuKXJldHVybiBudWxsO2Zvcih2YXIgbz1lLmdldFRleHQoKSxzPXRoaXMuZ2xvYmFsLmZpbmRTY29wZShuLm9mZnNldCxuLmxlbmd0aCk7czspe2Zvcih2YXIgYT0wO2E8dC5sZW5ndGg7YSsrKXt2YXIgbD10W2FdLGM9cy5nZXRTeW1ib2wobyxsKTtpZihjKXJldHVybiBjfXM9cy5wYXJlbnR9cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLmV2YWx1YXRlUmVmZXJlbmNlVHlwZXM9ZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIGxpKXt2YXIgdD1lLnJlZmVyZW5jZVR5cGVzO2lmKHQpcmV0dXJuIHQ7aWYoZS5pc0N1c3RvbVByb3BlcnR5KXJldHVybltlaS5WYXJpYWJsZV07dmFyIG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5maW5kUGFyZW50KFpyLkRlY2xhcmF0aW9uKSxuPXQmJnQuZ2V0VmFsdWUoKTtyZXR1cm4gbiYmbi5lbmNsb3NlcyhlKT90Om51bGx9KGUpO2lmKG4pe3ZhciByPW4uZ2V0Tm9uUHJlZml4ZWRQcm9wZXJ0eU5hbWUoKTtpZigoImFuaW1hdGlvbiI9PT1yfHwiYW5pbWF0aW9uLW5hbWUiPT09cikmJm4uZ2V0VmFsdWUoKSYmbi5nZXRWYWx1ZSgpLm9mZnNldD09PWUub2Zmc2V0KXJldHVybltlaS5LZXlmcmFtZV19fWVsc2UgaWYoZSBpbnN0YW5jZW9mIGhvKXJldHVybltlaS5WYXJpYWJsZV07cmV0dXJuIGUuZmluZEFQYXJlbnQoWnIuU2VsZWN0b3IsWnIuRXh0ZW5kc1JlZmVyZW5jZSk/W2VpLlJ1bGVdOm51bGx9LGUucHJvdG90eXBlLmZpbmRTeW1ib2xGcm9tTm9kZT1mdW5jdGlvbihlKXtpZighZSlyZXR1cm4gbnVsbDtmb3IoO2UudHlwZT09PVpyLkludGVycG9sYXRpb247KWU9ZS5nZXRQYXJlbnQoKTt2YXIgdD10aGlzLmV2YWx1YXRlUmVmZXJlbmNlVHlwZXMoZSk7cmV0dXJuIHQ/dGhpcy5pbnRlcm5hbEZpbmRTeW1ib2woZSx0KTpudWxsfSxlLnByb3RvdHlwZS5tYXRjaGVzU3ltYm9sPWZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuITE7Zm9yKDtlLnR5cGU9PT1aci5JbnRlcnBvbGF0aW9uOyllPWUuZ2V0UGFyZW50KCk7aWYoIWUubWF0Y2hlcyh0Lm5hbWUpKXJldHVybiExO3ZhciBuPXRoaXMuZXZhbHVhdGVSZWZlcmVuY2VUeXBlcyhlKTtyZXR1cm4hKCFufHwtMT09PW4uaW5kZXhPZih0LnR5cGUpKSYmdGhpcy5pbnRlcm5hbEZpbmRTeW1ib2woZSxuKT09PXR9LGUucHJvdG90eXBlLmZpbmRTeW1ib2w9ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj10aGlzLmdsb2JhbC5maW5kU2NvcGUobik7cjspe3ZhciBpPXIuZ2V0U3ltYm9sKGUsdCk7aWYoaSlyZXR1cm4gaTtyPXIucGFyZW50fXJldHVybiBudWxsfSxlfSgpO1NsPSgoKT0+e3ZhciBlPXs0NzA6ZT0+e2Z1bmN0aW9uIHQoZSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIlBhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgIitKU09OLnN0cmluZ2lmeShlKSl9ZnVuY3Rpb24gbihlLHQpe2Zvcih2YXIgbixyPSIiLGk9MCxvPS0xLHM9MCxhPTA7YTw9ZS5sZW5ndGg7KythKXtpZihhPGUubGVuZ3RoKW49ZS5jaGFyQ29kZUF0KGEpO2Vsc2V7aWYoNDc9PT1uKWJyZWFrO249NDd9aWYoNDc9PT1uKXtpZihvPT09YS0xfHwxPT09cyk7ZWxzZSBpZihvIT09YS0xJiYyPT09cyl7aWYoci5sZW5ndGg8Mnx8MiE9PWl8fDQ2IT09ci5jaGFyQ29kZUF0KHIubGVuZ3RoLTEpfHw0NiE9PXIuY2hhckNvZGVBdChyLmxlbmd0aC0yKSlpZihyLmxlbmd0aD4yKXt2YXIgbD1yLmxhc3RJbmRleE9mKCIvIik7aWYobCE9PXIubGVuZ3RoLTEpey0xPT09bD8ocj0iIixpPTApOmk9KHI9ci5zbGljZSgwLGwpKS5sZW5ndGgtMS1yLmxhc3RJbmRleE9mKCIvIiksbz1hLHM9MDtjb250aW51ZX19ZWxzZSBpZigyPT09ci5sZW5ndGh8fDE9PT1yLmxlbmd0aCl7cj0iIixpPTAsbz1hLHM9MDtjb250aW51ZX10JiYoci5sZW5ndGg+MD9yKz0iLy4uIjpyPSIuLiIsaT0yKX1lbHNlIHIubGVuZ3RoPjA/cis9Ii8iK2Uuc2xpY2UobysxLGEpOnI9ZS5zbGljZShvKzEsYSksaT1hLW8tMTtvPWEscz0wfWVsc2UgNDY9PT1uJiYtMSE9PXM/KytzOnM9LTF9cmV0dXJuIHJ9dmFyIHI9e3Jlc29sdmU6ZnVuY3Rpb24oKXtmb3IodmFyIGUscj0iIixpPSExLG89YXJndW1lbnRzLmxlbmd0aC0xO28+PS0xJiYhaTtvLS0pe3ZhciBzO28+PTA/cz1hcmd1bWVudHNbb106KHZvaWQgMD09PWUmJihlPXByb2Nlc3MuY3dkKCkpLHM9ZSksdChzKSwwIT09cy5sZW5ndGgmJihyPXMrIi8iK3IsaT00Nz09PXMuY2hhckNvZGVBdCgwKSl9cmV0dXJuIHI9bihyLCFpKSxpP3IubGVuZ3RoPjA/Ii8iK3I6Ii8iOnIubGVuZ3RoPjA/cjoiLiJ9LG5vcm1hbGl6ZTpmdW5jdGlvbihlKXtpZih0KGUpLDA9PT1lLmxlbmd0aClyZXR1cm4iLiI7dmFyIHI9NDc9PT1lLmNoYXJDb2RlQXQoMCksaT00Nz09PWUuY2hhckNvZGVBdChlLmxlbmd0aC0xKTtyZXR1cm4gMCE9PShlPW4oZSwhcikpLmxlbmd0aHx8cnx8KGU9Ii4iKSxlLmxlbmd0aD4wJiZpJiYoZSs9Ii8iKSxyPyIvIitlOmV9LGlzQWJzb2x1dGU6ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSksZS5sZW5ndGg+MCYmNDc9PT1lLmNoYXJDb2RlQXQoMCl9LGpvaW46ZnVuY3Rpb24oKXtpZigwPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4iLiI7Zm9yKHZhciBlLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7KytuKXt2YXIgaT1hcmd1bWVudHNbbl07dChpKSxpLmxlbmd0aD4wJiYodm9pZCAwPT09ZT9lPWk6ZSs9Ii8iK2kpfXJldHVybiB2b2lkIDA9PT1lPyIuIjpyLm5vcm1hbGl6ZShlKX0scmVsYXRpdmU6ZnVuY3Rpb24oZSxuKXtpZih0KGUpLHQobiksZT09PW4pcmV0dXJuIiI7aWYoKGU9ci5yZXNvbHZlKGUpKT09PShuPXIucmVzb2x2ZShuKSkpcmV0dXJuIiI7Zm9yKHZhciBpPTE7aTxlLmxlbmd0aCYmNDc9PT1lLmNoYXJDb2RlQXQoaSk7KytpKTtmb3IodmFyIG89ZS5sZW5ndGgscz1vLWksYT0xO2E8bi5sZW5ndGgmJjQ3PT09bi5jaGFyQ29kZUF0KGEpOysrYSk7Zm9yKHZhciBsPW4ubGVuZ3RoLWEsYz1zPGw/czpsLGg9LTEsZD0wO2Q8PWM7KytkKXtpZihkPT09Yyl7aWYobD5jKXtpZig0Nz09PW4uY2hhckNvZGVBdChhK2QpKXJldHVybiBuLnNsaWNlKGErZCsxKTtpZigwPT09ZClyZXR1cm4gbi5zbGljZShhK2QpfWVsc2Ugcz5jJiYoNDc9PT1lLmNoYXJDb2RlQXQoaStkKT9oPWQ6MD09PWQmJihoPTApKTticmVha312YXIgcD1lLmNoYXJDb2RlQXQoaStkKTtpZihwIT09bi5jaGFyQ29kZUF0KGErZCkpYnJlYWs7NDc9PT1wJiYoaD1kKX12YXIgdT0iIjtmb3IoZD1pK2grMTtkPD1vOysrZClkIT09byYmNDchPT1lLmNoYXJDb2RlQXQoZCl8fCgwPT09dS5sZW5ndGg/dSs9Ii4uIjp1Kz0iLy4uIik7cmV0dXJuIHUubGVuZ3RoPjA/dStuLnNsaWNlKGEraCk6KGErPWgsNDc9PT1uLmNoYXJDb2RlQXQoYSkmJisrYSxuLnNsaWNlKGEpKX0sX21ha2VMb25nOmZ1bmN0aW9uKGUpe3JldHVybiBlfSxkaXJuYW1lOmZ1bmN0aW9uKGUpe2lmKHQoZSksMD09PWUubGVuZ3RoKXJldHVybiIuIjtmb3IodmFyIG49ZS5jaGFyQ29kZUF0KDApLHI9NDc9PT1uLGk9LTEsbz0hMCxzPWUubGVuZ3RoLTE7cz49MTstLXMpaWYoNDc9PT0obj1lLmNoYXJDb2RlQXQocykpKXtpZighbyl7aT1zO2JyZWFrfX1lbHNlIG89ITE7cmV0dXJuLTE9PT1pP3I/Ii8iOiIuIjpyJiYxPT09aT8iLy8iOmUuc2xpY2UoMCxpKX0sYmFzZW5hbWU6ZnVuY3Rpb24oZSxuKXtpZih2b2lkIDAhPT1uJiYic3RyaW5nIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcignImV4dCIgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZycpO3QoZSk7dmFyIHIsaT0wLG89LTEscz0hMDtpZih2b2lkIDAhPT1uJiZuLmxlbmd0aD4wJiZuLmxlbmd0aDw9ZS5sZW5ndGgpe2lmKG4ubGVuZ3RoPT09ZS5sZW5ndGgmJm49PT1lKXJldHVybiIiO3ZhciBhPW4ubGVuZ3RoLTEsbD0tMTtmb3Iocj1lLmxlbmd0aC0xO3I+PTA7LS1yKXt2YXIgYz1lLmNoYXJDb2RlQXQocik7aWYoNDc9PT1jKXtpZighcyl7aT1yKzE7YnJlYWt9fWVsc2UtMT09PWwmJihzPSExLGw9cisxKSxhPj0wJiYoYz09PW4uY2hhckNvZGVBdChhKT8tMT09LS1hJiYobz1yKTooYT0tMSxvPWwpKX1yZXR1cm4gaT09PW8/bz1sOi0xPT09byYmKG89ZS5sZW5ndGgpLGUuc2xpY2UoaSxvKX1mb3Iocj1lLmxlbmd0aC0xO3I+PTA7LS1yKWlmKDQ3PT09ZS5jaGFyQ29kZUF0KHIpKXtpZighcyl7aT1yKzE7YnJlYWt9fWVsc2UtMT09PW8mJihzPSExLG89cisxKTtyZXR1cm4tMT09PW8/IiI6ZS5zbGljZShpLG8pfSxleHRuYW1lOmZ1bmN0aW9uKGUpe3QoZSk7Zm9yKHZhciBuPS0xLHI9MCxpPS0xLG89ITAscz0wLGE9ZS5sZW5ndGgtMTthPj0wOy0tYSl7dmFyIGw9ZS5jaGFyQ29kZUF0KGEpO2lmKDQ3IT09bCktMT09PWkmJihvPSExLGk9YSsxKSw0Nj09PWw/LTE9PT1uP249YToxIT09cyYmKHM9MSk6LTEhPT1uJiYocz0tMSk7ZWxzZSBpZighbyl7cj1hKzE7YnJlYWt9fXJldHVybi0xPT09bnx8LTE9PT1pfHwwPT09c3x8MT09PXMmJm49PT1pLTEmJm49PT1yKzE/IiI6ZS5zbGljZShuLGkpfSxmb3JtYXQ6ZnVuY3Rpb24oZSl7aWYobnVsbD09PWV8fCJvYmplY3QiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInBhdGhPYmplY3QiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgZSk7cmV0dXJuIG49KHQ9ZSkuZGlyfHx0LnJvb3Qscj10LmJhc2V8fCh0Lm5hbWV8fCIiKSsodC5leHR8fCIiKSxuP249PT10LnJvb3Q/bityOm4rIi8iK3I6cjt2YXIgdCxuLHJ9LHBhcnNlOmZ1bmN0aW9uKGUpe3QoZSk7dmFyIG49e3Jvb3Q6IiIsZGlyOiIiLGJhc2U6IiIsZXh0OiIiLG5hbWU6IiJ9O2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gbjt2YXIgcixpPWUuY2hhckNvZGVBdCgwKSxvPTQ3PT09aTtvPyhuLnJvb3Q9Ii8iLHI9MSk6cj0wO2Zvcih2YXIgcz0tMSxhPTAsbD0tMSxjPSEwLGg9ZS5sZW5ndGgtMSxkPTA7aD49cjstLWgpaWYoNDchPT0oaT1lLmNoYXJDb2RlQXQoaCkpKS0xPT09bCYmKGM9ITEsbD1oKzEpLDQ2PT09aT8tMT09PXM/cz1oOjEhPT1kJiYoZD0xKTotMSE9PXMmJihkPS0xKTtlbHNlIGlmKCFjKXthPWgrMTticmVha31yZXR1cm4tMT09PXN8fC0xPT09bHx8MD09PWR8fDE9PT1kJiZzPT09bC0xJiZzPT09YSsxPy0xIT09bCYmKG4uYmFzZT1uLm5hbWU9MD09PWEmJm8/ZS5zbGljZSgxLGwpOmUuc2xpY2UoYSxsKSk6KDA9PT1hJiZvPyhuLm5hbWU9ZS5zbGljZSgxLHMpLG4uYmFzZT1lLnNsaWNlKDEsbCkpOihuLm5hbWU9ZS5zbGljZShhLHMpLG4uYmFzZT1lLnNsaWNlKGEsbCkpLG4uZXh0PWUuc2xpY2UocyxsKSksYT4wP24uZGlyPWUuc2xpY2UoMCxhLTEpOm8mJihuLmRpcj0iLyIpLG59LHNlcDoiLyIsZGVsaW1pdGVyOiI6Iix3aW4zMjpudWxsLHBvc2l4Om51bGx9O3IucG9zaXg9cixlLmV4cG9ydHM9cn0sNDQ3OihlLHQsbik9Pnt2YXIgcjtpZihuLnIodCksbi5kKHQse1VSSTooKT0+ZixVdGlsczooKT0+RX0pLCJvYmplY3QiPT10eXBlb2YgcHJvY2VzcylyPSJ3aW4zMiI9PT1wcm9jZXNzLnBsYXRmb3JtO2Vsc2UgaWYoIm9iamVjdCI9PXR5cGVvZiBuYXZpZ2F0b3Ipe3ZhciBpPW5hdmlnYXRvci51c2VyQWdlbnQ7cj1pLmluZGV4T2YoIldpbmRvd3MiKT49MH12YXIgbyxzLGE9KG89ZnVuY3Rpb24oZSx0KXtyZXR1cm4obz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZSx0KXtlLl9fcHJvdG9fXz10fXx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKSYmKGVbbl09dFtuXSl9KShlLHQpfSxmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKHQpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPWV9byhlLHQpLGUucHJvdG90eXBlPW51bGw9PT10P09iamVjdC5jcmVhdGUodCk6KG4ucHJvdG90eXBlPXQucHJvdG90eXBlLG5ldyBuKX0pLGw9L15cd1tcd1xkKy4tXSokLyxjPS9eXC8vLGg9L15cL1wvLztmdW5jdGlvbiBkKGUsdCl7aWYoIWUuc2NoZW1lJiZ0KXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogU2NoZW1lIGlzIG1pc3Npbmc6IHtzY2hlbWU6ICIiLCBhdXRob3JpdHk6ICInLmNvbmNhdChlLmF1dGhvcml0eSwnIiwgcGF0aDogIicpLmNvbmNhdChlLnBhdGgsJyIsIHF1ZXJ5OiAiJykuY29uY2F0KGUucXVlcnksJyIsIGZyYWdtZW50OiAiJykuY29uY2F0KGUuZnJhZ21lbnQsJyJ9JykpO2lmKGUuc2NoZW1lJiYhbC50ZXN0KGUuc2NoZW1lKSl0aHJvdyBuZXcgRXJyb3IoIltVcmlFcnJvcl06IFNjaGVtZSBjb250YWlucyBpbGxlZ2FsIGNoYXJhY3RlcnMuIik7aWYoZS5wYXRoKWlmKGUuYXV0aG9yaXR5KXtpZighYy50ZXN0KGUucGF0aCkpdGhyb3cgbmV3IEVycm9yKCdbVXJpRXJyb3JdOiBJZiBhIFVSSSBjb250YWlucyBhbiBhdXRob3JpdHkgY29tcG9uZW50LCB0aGVuIHRoZSBwYXRoIGNvbXBvbmVudCBtdXN0IGVpdGhlciBiZSBlbXB0eSBvciBiZWdpbiB3aXRoIGEgc2xhc2ggKCIvIikgY2hhcmFjdGVyJyl9ZWxzZSBpZihoLnRlc3QoZS5wYXRoKSl0aHJvdyBuZXcgRXJyb3IoJ1tVcmlFcnJvcl06IElmIGEgVVJJIGRvZXMgbm90IGNvbnRhaW4gYW4gYXV0aG9yaXR5IGNvbXBvbmVudCwgdGhlbiB0aGUgcGF0aCBjYW5ub3QgYmVnaW4gd2l0aCB0d28gc2xhc2ggY2hhcmFjdGVycyAoIi8vIiknKX12YXIgcD0iIix1PSIvIixtPS9eKChbXjovPyNdKz8pOik/KFwvXC8oW14vPyNdKikpPyhbXj8jXSopKFw/KFteI10qKSk/KCMoLiopKT8vLGY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuLHIsaSxvKXt2YXIgcyxhO3ZvaWQgMD09PW8mJihvPSExKSwib2JqZWN0Ij09dHlwZW9mIGU/KHRoaXMuc2NoZW1lPWUuc2NoZW1lfHxwLHRoaXMuYXV0aG9yaXR5PWUuYXV0aG9yaXR5fHxwLHRoaXMucGF0aD1lLnBhdGh8fHAsdGhpcy5xdWVyeT1lLnF1ZXJ5fHxwLHRoaXMuZnJhZ21lbnQ9ZS5mcmFnbWVudHx8cCk6KHRoaXMuc2NoZW1lPShhPW8sKHM9ZSl8fGE/czoiZmlsZSIpLHRoaXMuYXV0aG9yaXR5PXR8fHAsdGhpcy5wYXRoPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2UiaHR0cHMiOmNhc2UiaHR0cCI6Y2FzZSJmaWxlIjp0P3RbMF0hPT11JiYodD11K3QpOnQ9dX1yZXR1cm4gdH0odGhpcy5zY2hlbWUsbnx8cCksdGhpcy5xdWVyeT1yfHxwLHRoaXMuZnJhZ21lbnQ9aXx8cCxkKHRoaXMsbykpfXJldHVybiBlLmlzVXJpPWZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgZXx8ISF0JiYic3RyaW5nIj09dHlwZW9mIHQuYXV0aG9yaXR5JiYic3RyaW5nIj09dHlwZW9mIHQuZnJhZ21lbnQmJiJzdHJpbmciPT10eXBlb2YgdC5wYXRoJiYic3RyaW5nIj09dHlwZW9mIHQucXVlcnkmJiJzdHJpbmciPT10eXBlb2YgdC5zY2hlbWUmJiJzdHJpbmciPT10eXBlb2YgdC5mc1BhdGgmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LndpdGgmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnRvU3RyaW5nfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImZzUGF0aCIse2dldDpmdW5jdGlvbigpe3JldHVybiB4KHRoaXMsITEpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLndpdGg9ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIHRoaXM7dmFyIHQ9ZS5zY2hlbWUsbj1lLmF1dGhvcml0eSxyPWUucGF0aCxpPWUucXVlcnksbz1lLmZyYWdtZW50O3JldHVybiB2b2lkIDA9PT10P3Q9dGhpcy5zY2hlbWU6bnVsbD09PXQmJih0PXApLHZvaWQgMD09PW4/bj10aGlzLmF1dGhvcml0eTpudWxsPT09biYmKG49cCksdm9pZCAwPT09cj9yPXRoaXMucGF0aDpudWxsPT09ciYmKHI9cCksdm9pZCAwPT09aT9pPXRoaXMucXVlcnk6bnVsbD09PWkmJihpPXApLHZvaWQgMD09PW8/bz10aGlzLmZyYWdtZW50Om51bGw9PT1vJiYobz1wKSx0PT09dGhpcy5zY2hlbWUmJm49PT10aGlzLmF1dGhvcml0eSYmcj09PXRoaXMucGF0aCYmaT09PXRoaXMucXVlcnkmJm89PT10aGlzLmZyYWdtZW50P3RoaXM6bmV3IGIodCxuLHIsaSxvKX0sZS5wYXJzZT1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PSExKTt2YXIgbj1tLmV4ZWMoZSk7cmV0dXJuIG4/bmV3IGIoblsyXXx8cCxfKG5bNF18fHApLF8obls1XXx8cCksXyhuWzddfHxwKSxfKG5bOV18fHApLHQpOm5ldyBiKHAscCxwLHAscCl9LGUuZmlsZT1mdW5jdGlvbihlKXt2YXIgdD1wO2lmKHImJihlPWUucmVwbGFjZSgvXFwvZyx1KSksZVswXT09PXUmJmVbMV09PT11KXt2YXIgbj1lLmluZGV4T2YodSwyKTstMT09PW4/KHQ9ZS5zdWJzdHJpbmcoMiksZT11KToodD1lLnN1YnN0cmluZygyLG4pLGU9ZS5zdWJzdHJpbmcobil8fHUpfXJldHVybiBuZXcgYigiZmlsZSIsdCxlLHAscCl9LGUuZnJvbT1mdW5jdGlvbihlKXt2YXIgdD1uZXcgYihlLnNjaGVtZSxlLmF1dGhvcml0eSxlLnBhdGgsZS5xdWVyeSxlLmZyYWdtZW50KTtyZXR1cm4gZCh0LCEwKSx0fSxlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLFModGhpcyxlKX0sZS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGUucmV2aXZlPWZ1bmN0aW9uKHQpe2lmKHQpe2lmKHQgaW5zdGFuY2VvZiBlKXJldHVybiB0O3ZhciBuPW5ldyBiKHQpO3JldHVybiBuLl9mb3JtYXR0ZWQ9dC5leHRlcm5hbCxuLl9mc1BhdGg9dC5fc2VwPT09Zz90LmZzUGF0aDpudWxsLG59cmV0dXJuIHR9LGV9KCksZz1yPzE6dm9pZCAwLGI9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciB0PW51bGwhPT1lJiZlLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpcztyZXR1cm4gdC5fZm9ybWF0dGVkPW51bGwsdC5fZnNQYXRoPW51bGwsdH1yZXR1cm4gYSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZnNQYXRoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZzUGF0aHx8KHRoaXMuX2ZzUGF0aD14KHRoaXMsITEpKSx0aGlzLl9mc1BhdGh9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPSExKSxlP1ModGhpcywhMCk6KHRoaXMuX2Zvcm1hdHRlZHx8KHRoaXMuX2Zvcm1hdHRlZD1TKHRoaXMsITEpKSx0aGlzLl9mb3JtYXR0ZWQpfSx0LnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXt2YXIgZT17JG1pZDoxfTtyZXR1cm4gdGhpcy5fZnNQYXRoJiYoZS5mc1BhdGg9dGhpcy5fZnNQYXRoLGUuX3NlcD1nKSx0aGlzLl9mb3JtYXR0ZWQmJihlLmV4dGVybmFsPXRoaXMuX2Zvcm1hdHRlZCksdGhpcy5wYXRoJiYoZS5wYXRoPXRoaXMucGF0aCksdGhpcy5zY2hlbWUmJihlLnNjaGVtZT10aGlzLnNjaGVtZSksdGhpcy5hdXRob3JpdHkmJihlLmF1dGhvcml0eT10aGlzLmF1dGhvcml0eSksdGhpcy5xdWVyeSYmKGUucXVlcnk9dGhpcy5xdWVyeSksdGhpcy5mcmFnbWVudCYmKGUuZnJhZ21lbnQ9dGhpcy5mcmFnbWVudCksZX0sdH0oZikseT0oKHM9e30pWzU4XT0iJTNBIixzWzQ3XT0iJTJGIixzWzYzXT0iJTNGIixzWzM1XT0iJTIzIixzWzkxXT0iJTVCIixzWzkzXT0iJTVEIixzWzY0XT0iJTQwIixzWzMzXT0iJTIxIixzWzM2XT0iJTI0IixzWzM4XT0iJTI2IixzWzM5XT0iJTI3IixzWzQwXT0iJTI4IixzWzQxXT0iJTI5IixzWzQyXT0iJTJBIixzWzQzXT0iJTJCIixzWzQ0XT0iJTJDIixzWzU5XT0iJTNCIixzWzYxXT0iJTNEIixzWzMyXT0iJTIwIixzKTtmdW5jdGlvbiB2KGUsdCl7Zm9yKHZhciBuPXZvaWQgMCxyPS0xLGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIG89ZS5jaGFyQ29kZUF0KGkpO2lmKG8+PTk3JiZvPD0xMjJ8fG8+PTY1JiZvPD05MHx8bz49NDgmJm88PTU3fHw0NT09PW98fDQ2PT09b3x8OTU9PT1vfHwxMjY9PT1vfHx0JiY0Nz09PW8pLTEhPT1yJiYobis9ZW5jb2RlVVJJQ29tcG9uZW50KGUuc3Vic3RyaW5nKHIsaSkpLHI9LTEpLHZvaWQgMCE9PW4mJihuKz1lLmNoYXJBdChpKSk7ZWxzZXt2b2lkIDA9PT1uJiYobj1lLnN1YnN0cigwLGkpKTt2YXIgcz15W29dO3ZvaWQgMCE9PXM/KC0xIT09ciYmKG4rPWVuY29kZVVSSUNvbXBvbmVudChlLnN1YnN0cmluZyhyLGkpKSxyPS0xKSxuKz1zKTotMT09PXImJihyPWkpfX1yZXR1cm4tMSE9PXImJihuKz1lbmNvZGVVUklDb21wb25lbnQoZS5zdWJzdHJpbmcocikpKSx2b2lkIDAhPT1uP246ZX1mdW5jdGlvbiB3KGUpe2Zvcih2YXIgdD12b2lkIDAsbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lLmNoYXJDb2RlQXQobik7MzU9PT1yfHw2Mz09PXI/KHZvaWQgMD09PXQmJih0PWUuc3Vic3RyKDAsbikpLHQrPXlbcl0pOnZvaWQgMCE9PXQmJih0Kz1lW25dKX1yZXR1cm4gdm9pZCAwIT09dD90OmV9ZnVuY3Rpb24geChlLHQpe3ZhciBuO3JldHVybiBuPWUuYXV0aG9yaXR5JiZlLnBhdGgubGVuZ3RoPjEmJiJmaWxlIj09PWUuc2NoZW1lPyIvLyIuY29uY2F0KGUuYXV0aG9yaXR5KS5jb25jYXQoZS5wYXRoKTo0Nz09PWUucGF0aC5jaGFyQ29kZUF0KDApJiYoZS5wYXRoLmNoYXJDb2RlQXQoMSk+PTY1JiZlLnBhdGguY2hhckNvZGVBdCgxKTw9OTB8fGUucGF0aC5jaGFyQ29kZUF0KDEpPj05NyYmZS5wYXRoLmNoYXJDb2RlQXQoMSk8PTEyMikmJjU4PT09ZS5wYXRoLmNoYXJDb2RlQXQoMik/dD9lLnBhdGguc3Vic3RyKDEpOmUucGF0aFsxXS50b0xvd2VyQ2FzZSgpK2UucGF0aC5zdWJzdHIoMik6ZS5wYXRoLHImJihuPW4ucmVwbGFjZSgvXC8vZywiXFwiKSksbn1mdW5jdGlvbiBTKGUsdCl7dmFyIG49dD93OnYscj0iIixpPWUuc2NoZW1lLG89ZS5hdXRob3JpdHkscz1lLnBhdGgsYT1lLnF1ZXJ5LGw9ZS5mcmFnbWVudDtpZihpJiYocis9aSxyKz0iOiIpLChvfHwiZmlsZSI9PT1pKSYmKHIrPXUscis9dSksbyl7dmFyIGM9by5pbmRleE9mKCJAIik7aWYoLTEhPT1jKXt2YXIgaD1vLnN1YnN0cigwLGMpO289by5zdWJzdHIoYysxKSwtMT09PShjPWguaW5kZXhPZigiOiIpKT9yKz1uKGgsITEpOihyKz1uKGguc3Vic3RyKDAsYyksITEpLHIrPSI6IixyKz1uKGguc3Vic3RyKGMrMSksITEpKSxyKz0iQCJ9LTE9PT0oYz0obz1vLnRvTG93ZXJDYXNlKCkpLmluZGV4T2YoIjoiKSk/cis9bihvLCExKToocis9bihvLnN1YnN0cigwLGMpLCExKSxyKz1vLnN1YnN0cihjKSl9aWYocyl7aWYocy5sZW5ndGg+PTMmJjQ3PT09cy5jaGFyQ29kZUF0KDApJiY1OD09PXMuY2hhckNvZGVBdCgyKSkoZD1zLmNoYXJDb2RlQXQoMSkpPj02NSYmZDw9OTAmJihzPSIvIi5jb25jYXQoU3RyaW5nLmZyb21DaGFyQ29kZShkKzMyKSwiOiIpLmNvbmNhdChzLnN1YnN0cigzKSkpO2Vsc2UgaWYocy5sZW5ndGg+PTImJjU4PT09cy5jaGFyQ29kZUF0KDEpKXt2YXIgZDsoZD1zLmNoYXJDb2RlQXQoMCkpPj02NSYmZDw9OTAmJihzPSIiLmNvbmNhdChTdHJpbmcuZnJvbUNoYXJDb2RlKGQrMzIpLCI6IikuY29uY2F0KHMuc3Vic3RyKDIpKSl9cis9bihzLCEwKX1yZXR1cm4gYSYmKHIrPSI/IixyKz1uKGEsITEpKSxsJiYocis9IiMiLHIrPXQ/bDp2KGwsITEpKSxyfWZ1bmN0aW9uIEMoZSl7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZSl9Y2F0Y2godCl7cmV0dXJuIGUubGVuZ3RoPjM/ZS5zdWJzdHIoMCwzKStDKGUuc3Vic3RyKDMpKTplfX12YXIgaz0vKCVbMC05QS1aYS16XVswLTlBLVphLXpdKSsvZztmdW5jdGlvbiBfKGUpe3JldHVybiBlLm1hdGNoKGspP2UucmVwbGFjZShrLChmdW5jdGlvbihlKXtyZXR1cm4gQyhlKX0pKTplfXZhciBFLEYsUj1uKDQ3MCksRD1mdW5jdGlvbihlLHQsbil7aWYobnx8Mj09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKHZhciByLGk9MCxvPXQubGVuZ3RoO2k8bztpKyspIXImJmkgaW4gdHx8KHJ8fChyPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQsMCxpKSkscltpXT10W2ldKTtyZXR1cm4gZS5jb25jYXQocnx8QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCkpfSxOPVIucG9zaXh8fFI7KEY9RXx8KEU9e30pKS5qb2luUGF0aD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTtyZXR1cm4gZS53aXRoKHtwYXRoOk4uam9pbi5hcHBseShOLEQoW2UucGF0aF0sdCwhMSkpfSl9LEYucmVzb2x2ZVBhdGg9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbi0xXT1hcmd1bWVudHNbbl07dmFyIHI9ZS5wYXRofHwiLyI7cmV0dXJuIGUud2l0aCh7cGF0aDpOLnJlc29sdmUuYXBwbHkoTixEKFtyXSx0LCExKSl9KX0sRi5kaXJuYW1lPWZ1bmN0aW9uKGUpe3ZhciB0PU4uZGlybmFtZShlLnBhdGgpO3JldHVybiAxPT09dC5sZW5ndGgmJjQ2PT09dC5jaGFyQ29kZUF0KDApP2U6ZS53aXRoKHtwYXRoOnR9KX0sRi5iYXNlbmFtZT1mdW5jdGlvbihlKXtyZXR1cm4gTi5iYXNlbmFtZShlLnBhdGgpfSxGLmV4dG5hbWU9ZnVuY3Rpb24oZSl7cmV0dXJuIE4uZXh0bmFtZShlLnBhdGgpfX19LHQ9e307ZnVuY3Rpb24gbihyKXtpZih0W3JdKXJldHVybiB0W3JdLmV4cG9ydHM7dmFyIGk9dFtyXT17ZXhwb3J0czp7fX07cmV0dXJuIGVbcl0oaSxpLmV4cG9ydHMsbiksaS5leHBvcnRzfXJldHVybiBuLmQ9KGUsdCk9Pntmb3IodmFyIHIgaW4gdCluLm8odCxyKSYmIW4ubyhlLHIpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOiEwLGdldDp0W3JdfSl9LG4ubz0oZSx0KT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCksbi5yPWU9PnsidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSxuKDQ0Nyl9KSgpO3ZhcntVUkk6RGwsVXRpbHM6Tmx9PVNsLFRsPWZ1bmN0aW9uKGUsdCxuKXtpZihufHwyPT09YXJndW1lbnRzLmxlbmd0aClmb3IodmFyIHIsaT0wLG89dC5sZW5ndGg7aTxvO2krKykhciYmaSBpbiB0fHwocnx8KHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwwLGkpKSxyW2ldPXRbaV0pO3JldHVybiBlLmNvbmNhdChyfHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KSl9O2Z1bmN0aW9uIEFsKGUpe3JldHVybiBObC5kaXJuYW1lKERsLnBhcnNlKGUpKS50b1N0cmluZygpfWZ1bmN0aW9uIHpsKGUpe2Zvcih2YXIgdD1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W24tMV09YXJndW1lbnRzW25dO3JldHVybiBObC5qb2luUGF0aC5hcHBseShObCxUbChbRGwucGFyc2UoZSldLHQsITEpKS50b1N0cmluZygpfXZhciBJbD1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24oaSxvKXtmdW5jdGlvbiBzKGUpe3RyeXtsKHIubmV4dChlKSl9Y2F0Y2goZSl7byhlKX19ZnVuY3Rpb24gYShlKXt0cnl7bChyLnRocm93KGUpKX1jYXRjaChlKXtvKGUpfX1mdW5jdGlvbiBsKGUpe3ZhciB0O2UuZG9uZT9pKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIG4/dDpuZXcgbigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihzLGEpfWwoKHI9ci5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX0sTWw9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGksbyxzPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJmlbMF0pdGhyb3cgaVsxXTtyZXR1cm4gaVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBvPXtuZXh0OmEoMCksdGhyb3c6YSgxKSxyZXR1cm46YSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKG9bU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksbztmdW5jdGlvbiBhKG8pe3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24obyl7aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtzOyl0cnl7aWYobj0xLHImJihpPTImb1swXT9yLnJldHVybjpvWzBdP3IudGhyb3d8fCgoaT1yLnJldHVybikmJmkuY2FsbChyKSwwKTpyLm5leHQpJiYhKGk9aS5jYWxsKHIsb1sxXSkpLmRvbmUpcmV0dXJuIGk7c3dpdGNoKHI9MCxpJiYobz1bMiZvWzBdLGkudmFsdWVdKSxvWzBdKXtjYXNlIDA6Y2FzZSAxOmk9bzticmVhaztjYXNlIDQ6cmV0dXJuIHMubGFiZWwrKyx7dmFsdWU6b1sxXSxkb25lOiExfTtjYXNlIDU6cy5sYWJlbCsrLHI9b1sxXSxvPVswXTtjb250aW51ZTtjYXNlIDc6bz1zLm9wcy5wb3AoKSxzLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKGk9cy50cnlzLChpPWkubGVuZ3RoPjAmJmlbaS5sZW5ndGgtMV0pfHw2IT09b1swXSYmMiE9PW9bMF0pKXtzPTA7Y29udGludWV9aWYoMz09PW9bMF0mJighaXx8b1sxXT5pWzBdJiZvWzFdPGlbM10pKXtzLmxhYmVsPW9bMV07YnJlYWt9aWYoNj09PW9bMF0mJnMubGFiZWw8aVsxXSl7cy5sYWJlbD1pWzFdLGk9bzticmVha31pZihpJiZzLmxhYmVsPGlbMl0pe3MubGFiZWw9aVsyXSxzLm9wcy5wdXNoKG8pO2JyZWFrfWlbMl0mJnMub3BzLnBvcCgpLHMudHJ5cy5wb3AoKTtjb250aW51ZX1vPXQuY2FsbChlLHMpfWNhdGNoKGUpe289WzYsZV0scj0wfWZpbmFsbHl7bj1pPTB9aWYoNSZvWzBdKXRocm93IG9bMV07cmV0dXJue3ZhbHVlOm9bMF0/b1sxXTp2b2lkIDAsZG9uZTohMH19KFtvLGFdKX19fSxQbD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5yZWFkRGlyZWN0b3J5PWUsdGhpcy5saXRlcmFsQ29tcGxldGlvbnM9W10sdGhpcy5pbXBvcnRDb21wbGV0aW9ucz1bXX1yZXR1cm4gZS5wcm90b3R5cGUub25Dc3NVUklMaXRlcmFsVmFsdWU9ZnVuY3Rpb24oZSl7dGhpcy5saXRlcmFsQ29tcGxldGlvbnMucHVzaChlKX0sZS5wcm90b3R5cGUub25Dc3NJbXBvcnRQYXRoPWZ1bmN0aW9uKGUpe3RoaXMuaW1wb3J0Q29tcGxldGlvbnMucHVzaChlKX0sZS5wcm90b3R5cGUuY29tcHV0ZUNvbXBsZXRpb25zPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIElsKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgbixyLGksbyxzLGEsbCxjLGgsZCxwLHUsbSxmLGcsYix5O3JldHVybiBNbCh0aGlzLChmdW5jdGlvbih2KXtzd2l0Y2godi5sYWJlbCl7Y2FzZSAwOm49e2l0ZW1zOltdLGlzSW5jb21wbGV0ZTohMX0scj0wLGk9dGhpcy5saXRlcmFsQ29tcGxldGlvbnMsdi5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gcjxpLmxlbmd0aD8obz1pW3JdLHM9by51cmlWYWx1ZSwiLiIhPT0obT1MbChzKSkmJiIuLiIhPT1tP1szLDJdOihuLmlzSW5jb21wbGV0ZT0hMCxbMyw0XSkpOlszLDVdO2Nhc2UgMjpyZXR1cm5bNCx0aGlzLnByb3ZpZGVQYXRoU3VnZ2VzdGlvbnMocyxvLnBvc2l0aW9uLG8ucmFuZ2UsZSx0KV07Y2FzZSAzOmZvcihhPXYuc2VudCgpLGw9MCxjPWE7bDxjLmxlbmd0aDtsKyspeT1jW2xdLG4uaXRlbXMucHVzaCh5KTt2LmxhYmVsPTQ7Y2FzZSA0OnJldHVybiByKyssWzMsMV07Y2FzZSA1Omg9MCxkPXRoaXMuaW1wb3J0Q29tcGxldGlvbnMsdi5sYWJlbD02O2Nhc2UgNjpyZXR1cm4gaDxkLmxlbmd0aD8ocD1kW2hdLHU9cC5wYXRoVmFsdWUsIi4iIT09KG09TGwodSkpJiYiLi4iIT09bT9bMyw3XToobi5pc0luY29tcGxldGU9ITAsWzMsOV0pKTpbMywxMF07Y2FzZSA3OnJldHVybls0LHRoaXMucHJvdmlkZVBhdGhTdWdnZXN0aW9ucyh1LHAucG9zaXRpb24scC5yYW5nZSxlLHQpXTtjYXNlIDg6Zm9yKGY9di5zZW50KCksInNjc3MiPT09ZS5sYW5ndWFnZUlkJiZmLmZvckVhY2goKGZ1bmN0aW9uKGUpe0hyKGUubGFiZWwsIl8iKSYmR3IoZS5sYWJlbCwiLnNjc3MiKSYmKGUudGV4dEVkaXQ/ZS50ZXh0RWRpdC5uZXdUZXh0PWUubGFiZWwuc2xpY2UoMSwtNSk6ZS5sYWJlbD1lLmxhYmVsLnNsaWNlKDEsLTUpKX0pKSxnPTAsYj1mO2c8Yi5sZW5ndGg7ZysrKXk9YltnXSxuLml0ZW1zLnB1c2goeSk7di5sYWJlbD05O2Nhc2UgOTpyZXR1cm4gaCsrLFszLDZdO2Nhc2UgMTA6cmV0dXJuWzIsbl19fSkpfSkpfSxlLnByb3RvdHlwZS5wcm92aWRlUGF0aFN1Z2dlc3Rpb25zPWZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIElsKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgbyxzLGEsbCxjLGgsZCxwLHUsbSxmLGcsYix5LHY7cmV0dXJuIE1sKHRoaXMsKGZ1bmN0aW9uKHcpe3N3aXRjaCh3LmxhYmVsKXtjYXNlIDA6aWYobz1MbChlKSxzPUhyKGUsIiciKXx8SHIoZSwnIicpLGE9cz9vLnNsaWNlKDAsdC5jaGFyYWN0ZXItKG4uc3RhcnQuY2hhcmFjdGVyKzEpKTpvLnNsaWNlKDAsdC5jaGFyYWN0ZXItbi5zdGFydC5jaGFyYWN0ZXIpLGw9ci51cmksYz1zP2Z1bmN0aW9uKGUsdCxuKXt2YXIgcj1VbChlLnN0YXJ0LHQpLGk9VWwoZS5lbmQsbik7cmV0dXJuIEFvLmNyZWF0ZShyLGkpfShuLDEsLTEpOm4saD1mdW5jdGlvbihlLHQsbil7dmFyIHIsaT1lLmxhc3RJbmRleE9mKCIvIik7aWYoLTE9PT1pKXI9bjtlbHNle3ZhciBvPXQuc2xpY2UoaSsxKSxzPVVsKG4uZW5kLC1vLmxlbmd0aCksYT1vLmluZGV4T2YoIiAiKSxsPXZvaWQgMDtsPS0xIT09YT9VbChzLGEpOm4uZW5kLHI9QW8uY3JlYXRlKHMsbCl9cmV0dXJuIHJ9KGEsbyxjKSxkPWEuc3Vic3RyaW5nKDAsYS5sYXN0SW5kZXhPZigiLyIpKzEpLCEocD1pLnJlc29sdmVSZWZlcmVuY2UoZHx8Ii4iLGwpKSlyZXR1cm5bMyw0XTt3LmxhYmVsPTE7Y2FzZSAxOnJldHVybiB3LnRyeXMucHVzaChbMSwzLCw0XSksdT1bXSxbNCx0aGlzLnJlYWREaXJlY3RvcnkocCldO2Nhc2UgMjpmb3IobT13LnNlbnQoKSxmPTAsZz1tO2Y8Zy5sZW5ndGg7ZisrKWI9Z1tmXSx5PWJbMF0sdj1iWzFdLHkuY2hhckNvZGVBdCgwKT09PU9sfHx2IT09TmEuRGlyZWN0b3J5JiZ6bChwLHkpPT09bHx8dS5wdXNoKFdsKHksdj09PU5hLkRpcmVjdG9yeSxoKSk7cmV0dXJuWzIsdV07Y2FzZSAzOnJldHVybiB3LnNlbnQoKSxbMyw0XTtjYXNlIDQ6cmV0dXJuWzIsW11dfX0pKX0pKX0sZX0oKSxPbD0iLiIuY2hhckNvZGVBdCgwKTtmdW5jdGlvbiBMbChlKXtyZXR1cm4gSHIoZSwiJyIpfHxIcihlLCciJyk/ZS5zbGljZSgxLC0xKTplfWZ1bmN0aW9uIFdsKGUsdCxuKXtyZXR1cm4gdD97bGFiZWw6VmwoZSs9Ii8iKSxraW5kOk1zLkZvbGRlcix0ZXh0RWRpdDpvcy5yZXBsYWNlKG4sVmwoZSkpLGNvbW1hbmQ6e3RpdGxlOiJTdWdnZXN0Iixjb21tYW5kOiJlZGl0b3IuYWN0aW9uLnRyaWdnZXJTdWdnZXN0In19OntsYWJlbDpWbChlKSxraW5kOk1zLkZpbGUsdGV4dEVkaXQ6b3MucmVwbGFjZShuLFZsKGUpKX19ZnVuY3Rpb24gVmwoZSl7cmV0dXJuIGUucmVwbGFjZSgvKFxzfFwofFwpfCx8InwnKS9nLCJcXCQxIil9ZnVuY3Rpb24gVWwoZSx0KXtyZXR1cm4gTm8uY3JlYXRlKGUubGluZSxlLmNoYXJhY3Rlcit0KX12YXIgS2wsQmwsamw9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoKGZ1bmN0aW9uKGksbyl7ZnVuY3Rpb24gcyhlKXt0cnl7bChyLm5leHQoZSkpfWNhdGNoKGUpe28oZSl9fWZ1bmN0aW9uIGEoZSl7dHJ5e2woci50aHJvdyhlKSl9Y2F0Y2goZSl7byhlKX19ZnVuY3Rpb24gbChlKXt2YXIgdDtlLmRvbmU/aShlLnZhbHVlKToodD1lLnZhbHVlLHQgaW5zdGFuY2VvZiBuP3Q6bmV3IG4oKGZ1bmN0aW9uKGUpe2UodCl9KSkpLnRoZW4ocyxhKX1sKChyPXIuYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KSl9LHFsPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8scz17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZpWzBdKXRocm93IGlbMV07cmV0dXJuIGlbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gbz17bmV4dDphKDApLHRocm93OmEoMSkscmV0dXJuOmEoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihvW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLG87ZnVuY3Rpb24gYShvKXtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKG8pe2lmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7czspdHJ5e2lmKG49MSxyJiYoaT0yJm9bMF0/ci5yZXR1cm46b1swXT9yLnRocm93fHwoKGk9ci5yZXR1cm4pJiZpLmNhbGwociksMCk6ci5uZXh0KSYmIShpPWkuY2FsbChyLG9bMV0pKS5kb25lKXJldHVybiBpO3N3aXRjaChyPTAsaSYmKG89WzImb1swXSxpLnZhbHVlXSksb1swXSl7Y2FzZSAwOmNhc2UgMTppPW87YnJlYWs7Y2FzZSA0OnJldHVybiBzLmxhYmVsKysse3ZhbHVlOm9bMV0sZG9uZTohMX07Y2FzZSA1OnMubGFiZWwrKyxyPW9bMV0sbz1bMF07Y29udGludWU7Y2FzZSA3Om89cy5vcHMucG9wKCkscy50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShpPXMudHJ5cywoaT1pLmxlbmd0aD4wJiZpW2kubGVuZ3RoLTFdKXx8NiE9PW9bMF0mJjIhPT1vWzBdKSl7cz0wO2NvbnRpbnVlfWlmKDM9PT1vWzBdJiYoIWl8fG9bMV0+aVswXSYmb1sxXTxpWzNdKSl7cy5sYWJlbD1vWzFdO2JyZWFrfWlmKDY9PT1vWzBdJiZzLmxhYmVsPGlbMV0pe3MubGFiZWw9aVsxXSxpPW87YnJlYWt9aWYoaSYmcy5sYWJlbDxpWzJdKXtzLmxhYmVsPWlbMl0scy5vcHMucHVzaChvKTticmVha31pWzJdJiZzLm9wcy5wb3AoKSxzLnRyeXMucG9wKCk7Y29udGludWV9bz10LmNhbGwoZSxzKX1jYXRjaChlKXtvPVs2LGVdLHI9MH1maW5hbGx5e249aT0wfWlmKDUmb1swXSl0aHJvdyBvWzFdO3JldHVybnt2YWx1ZTpvWzBdP29bMV06dm9pZCAwLGRvbmU6ITB9fShbbyxhXSl9fX0sJGw9X28oKSxIbD1Pcy5TbmlwcGV0LEdsPXt0aXRsZToiU3VnZ2VzdCIsY29tbWFuZDoiZWRpdG9yLmFjdGlvbi50cmlnZ2VyU3VnZ2VzdCJ9OyhCbD1LbHx8KEtsPXt9KSkuRW51bXM9IiAiLEJsLk5vcm1hbD0iZCIsQmwuVmVuZG9yUHJlZml4ZWQ9IngiLEJsLlRlcm09InkiLEJsLlZhcmlhYmxlPSJ6Ijt2YXIgSmw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuKXt2b2lkIDA9PT1lJiYoZT1udWxsKSx0aGlzLnZhcmlhYmxlUHJlZml4PWUsdGhpcy5sc09wdGlvbnM9dCx0aGlzLmNzc0RhdGFNYW5hZ2VyPW4sdGhpcy5jb21wbGV0aW9uUGFydGljaXBhbnRzPVtdfXJldHVybiBlLnByb3RvdHlwZS5jb25maWd1cmU9ZnVuY3Rpb24oZSl7dGhpcy5kZWZhdWx0U2V0dGluZ3M9ZX0sZS5wcm90b3R5cGUuZ2V0U3ltYm9sQ29udGV4dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN5bWJvbENvbnRleHR8fCh0aGlzLnN5bWJvbENvbnRleHQ9bmV3IFJsKHRoaXMuc3R5bGVTaGVldCkpLHRoaXMuc3ltYm9sQ29udGV4dH0sZS5wcm90b3R5cGUuc2V0Q29tcGxldGlvblBhcnRpY2lwYW50cz1mdW5jdGlvbihlKXt0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHM9ZXx8W119LGUucHJvdG90eXBlLmRvQ29tcGxldGUyPWZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIHZvaWQgMD09PWkmJihpPXRoaXMuZGVmYXVsdFNldHRpbmdzKSxqbCh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIG8scyxhLGw7cmV0dXJuIHFsKHRoaXMsKGZ1bmN0aW9uKGMpe3N3aXRjaChjLmxhYmVsKXtjYXNlIDA6aWYoIXRoaXMubHNPcHRpb25zLmZpbGVTeXN0ZW1Qcm92aWRlcnx8IXRoaXMubHNPcHRpb25zLmZpbGVTeXN0ZW1Qcm92aWRlci5yZWFkRGlyZWN0b3J5KXJldHVyblsyLHRoaXMuZG9Db21wbGV0ZShlLHQsbixpKV07bz1uZXcgUGwodGhpcy5sc09wdGlvbnMuZmlsZVN5c3RlbVByb3ZpZGVyLnJlYWREaXJlY3RvcnkpLHM9dGhpcy5jb21wbGV0aW9uUGFydGljaXBhbnRzLHRoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cz1bb10uY29uY2F0KHMpLGE9dGhpcy5kb0NvbXBsZXRlKGUsdCxuLGkpLGMubGFiZWw9MTtjYXNlIDE6cmV0dXJuIGMudHJ5cy5wdXNoKFsxLCwzLDRdKSxbNCxvLmNvbXB1dGVDb21wbGV0aW9ucyhlLHIpXTtjYXNlIDI6cmV0dXJuIGw9Yy5zZW50KCksWzIse2lzSW5jb21wbGV0ZTphLmlzSW5jb21wbGV0ZXx8bC5pc0luY29tcGxldGUsaXRlbXM6bC5pdGVtcy5jb25jYXQoYS5pdGVtcyl9XTtjYXNlIDM6cmV0dXJuIHRoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cz1zLFs3XTtjYXNlIDQ6cmV0dXJuWzJdfX0pKX0pKX0sZS5wcm90b3R5cGUuZG9Db21wbGV0ZT1mdW5jdGlvbihlLHQsbixyKXt0aGlzLm9mZnNldD1lLm9mZnNldEF0KHQpLHRoaXMucG9zaXRpb249dCx0aGlzLmN1cnJlbnRXb3JkPWZ1bmN0aW9uKGUsdCl7dmFyIG49dC0xLHI9ZS5nZXRUZXh0KCk7Zm9yKDtuPj0wJiYtMT09PScgXHRcblxyIjp7WygpXX0sKj4rJy5pbmRleE9mKHIuY2hhckF0KG4pKTspbi0tO3JldHVybiByLnN1YnN0cmluZyhuKzEsdCl9KGUsdGhpcy5vZmZzZXQpLHRoaXMuZGVmYXVsdFJlcGxhY2VSYW5nZT1Bby5jcmVhdGUoTm8uY3JlYXRlKHRoaXMucG9zaXRpb24ubGluZSx0aGlzLnBvc2l0aW9uLmNoYXJhY3Rlci10aGlzLmN1cnJlbnRXb3JkLmxlbmd0aCksdGhpcy5wb3NpdGlvbiksdGhpcy50ZXh0RG9jdW1lbnQ9ZSx0aGlzLnN0eWxlU2hlZXQ9bix0aGlzLmRvY3VtZW50U2V0dGluZ3M9cjt0cnl7dmFyIGk9e2lzSW5jb21wbGV0ZTohMSxpdGVtczpbXX07dGhpcy5ub2RlUGF0aD1paSh0aGlzLnN0eWxlU2hlZXQsdGhpcy5vZmZzZXQpO2Zvcih2YXIgbz10aGlzLm5vZGVQYXRoLmxlbmd0aC0xO28+PTA7by0tKXt2YXIgcz10aGlzLm5vZGVQYXRoW29dO2lmKHMgaW5zdGFuY2VvZiB2aSl0aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25Qcm9wZXJ0eShzLmdldFBhcmVudCgpLGkpO2Vsc2UgaWYocyBpbnN0YW5jZW9mIFhpKXMucGFyZW50IGluc3RhbmNlb2YgY28/dGhpcy5nZXRWYXJpYWJsZVByb3Bvc2FscyhudWxsLGkpOnRoaXMuZ2V0Q29tcGxldGlvbnNGb3JFeHByZXNzaW9uKHMsaSk7ZWxzZSBpZihzIGluc3RhbmNlb2YgbWkpe3ZhciBhPXMuZmluZEFQYXJlbnQoWnIuRXh0ZW5kc1JlZmVyZW5jZSxaci5SdWxlc2V0KTtpZihhKWlmKGEudHlwZT09PVpyLkV4dGVuZHNSZWZlcmVuY2UpdGhpcy5nZXRDb21wbGV0aW9uc0ZvckV4dGVuZHNSZWZlcmVuY2UoYSxzLGkpO2Vsc2V7dmFyIGw9YTt0aGlzLmdldENvbXBsZXRpb25zRm9yU2VsZWN0b3IobCxsJiZsLmlzTmVzdGVkKCksaSl9fWVsc2UgaWYocyBpbnN0YW5jZW9mIFNpKXRoaXMuZ2V0Q29tcGxldGlvbnNGb3JGdW5jdGlvbkFyZ3VtZW50KHMscy5nZXRQYXJlbnQoKSxpKTtlbHNlIGlmKHMgaW5zdGFuY2VvZiBoaSl0aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25zKHMsaSk7ZWxzZSBpZihzIGluc3RhbmNlb2YgbG8pdGhpcy5nZXRDb21wbGV0aW9uc0ZvclZhcmlhYmxlRGVjbGFyYXRpb24ocyxpKTtlbHNlIGlmKHMgaW5zdGFuY2VvZiBwaSl0aGlzLmdldENvbXBsZXRpb25zRm9yUnVsZVNldChzLGkpO2Vsc2UgaWYocyBpbnN0YW5jZW9mIGNvKXRoaXMuZ2V0Q29tcGxldGlvbnNGb3JJbnRlcnBvbGF0aW9uKHMsaSk7ZWxzZSBpZihzIGluc3RhbmNlb2YgUmkpdGhpcy5nZXRDb21wbGV0aW9uc0ZvckZ1bmN0aW9uRGVjbGFyYXRpb24ocyxpKTtlbHNlIGlmKHMgaW5zdGFuY2VvZiBmbyl0aGlzLmdldENvbXBsZXRpb25zRm9yTWl4aW5SZWZlcmVuY2UocyxpKTtlbHNlIGlmKHMgaW5zdGFuY2VvZiB3aSl0aGlzLmdldENvbXBsZXRpb25zRm9yRnVuY3Rpb25Bcmd1bWVudChudWxsLHMsaSk7ZWxzZSBpZihzIGluc3RhbmNlb2YgVWkpdGhpcy5nZXRDb21wbGV0aW9uc0ZvclN1cHBvcnRzKHMsaSk7ZWxzZSBpZihzIGluc3RhbmNlb2YgSGkpdGhpcy5nZXRDb21wbGV0aW9uc0ZvclN1cHBvcnRzQ29uZGl0aW9uKHMsaSk7ZWxzZSBpZihzIGluc3RhbmNlb2YgcG8pdGhpcy5nZXRDb21wbGV0aW9uc0ZvckV4dGVuZHNSZWZlcmVuY2UocyxudWxsLGkpO2Vsc2UgaWYocy50eXBlPT09WnIuVVJJTGl0ZXJhbCl0aGlzLmdldENvbXBsZXRpb25Gb3JVcmlMaXRlcmFsVmFsdWUocyxpKTtlbHNlIGlmKG51bGw9PT1zLnBhcmVudCl0aGlzLmdldENvbXBsZXRpb25Gb3JUb3BMZXZlbChpKTtlbHNle2lmKHMudHlwZSE9PVpyLlN0cmluZ0xpdGVyYWx8fCF0aGlzLmlzSW1wb3J0UGF0aFBhcmVudChzLnBhcmVudC50eXBlKSljb250aW51ZTt0aGlzLmdldENvbXBsZXRpb25Gb3JJbXBvcnRQYXRoKHMsaSl9aWYoaS5pdGVtcy5sZW5ndGg+MHx8dGhpcy5vZmZzZXQ+cy5vZmZzZXQpcmV0dXJuIHRoaXMuZmluYWxpemUoaSl9cmV0dXJuIHRoaXMuZ2V0Q29tcGxldGlvbnNGb3JTdHlsZXNoZWV0KGkpLDA9PT1pLml0ZW1zLmxlbmd0aCYmdGhpcy52YXJpYWJsZVByZWZpeCYmMD09PXRoaXMuY3VycmVudFdvcmQuaW5kZXhPZih0aGlzLnZhcmlhYmxlUHJlZml4KSYmdGhpcy5nZXRWYXJpYWJsZVByb3Bvc2FscyhudWxsLGkpLHRoaXMuZmluYWxpemUoaSl9ZmluYWxseXt0aGlzLnBvc2l0aW9uPW51bGwsdGhpcy5jdXJyZW50V29yZD1udWxsLHRoaXMudGV4dERvY3VtZW50PW51bGwsdGhpcy5zdHlsZVNoZWV0PW51bGwsdGhpcy5zeW1ib2xDb250ZXh0PW51bGwsdGhpcy5kZWZhdWx0UmVwbGFjZVJhbmdlPW51bGwsdGhpcy5ub2RlUGF0aD1udWxsfX0sZS5wcm90b3R5cGUuaXNJbXBvcnRQYXRoUGFyZW50PWZ1bmN0aW9uKGUpe3JldHVybiBlPT09WnIuSW1wb3J0fSxlLnByb3RvdHlwZS5maW5hbGl6ZT1mdW5jdGlvbihlKXtyZXR1cm4gZX0sZS5wcm90b3R5cGUuZmluZEluTm9kZVBhdGg9ZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspZVt0XT1hcmd1bWVudHNbdF07Zm9yKHZhciBuPXRoaXMubm9kZVBhdGgubGVuZ3RoLTE7bj49MDtuLS0pe3ZhciByPXRoaXMubm9kZVBhdGhbbl07aWYoLTEhPT1lLmluZGV4T2Yoci50eXBlKSlyZXR1cm4gcn1yZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvblByb3BlcnR5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZ2V0UHJvcGVydHlQcm9wb3NhbHMoZSx0KX0sZS5wcm90b3R5cGUuZ2V0UHJvcGVydHlQcm9wb3NhbHM9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLHI9dGhpcy5pc1RyaWdnZXJQcm9wZXJ0eVZhbHVlQ29tcGxldGlvbkVuYWJsZWQsaT10aGlzLmlzQ29tcGxldGVQcm9wZXJ0eVdpdGhTZW1pY29sb25FbmFibGVkO3JldHVybiB0aGlzLmNzc0RhdGFNYW5hZ2VyLmdldFByb3BlcnRpZXMoKS5mb3JFYWNoKChmdW5jdGlvbihvKXt2YXIgcyxhLGw9ITE7ZT8ocz1uLmdldENvbXBsZXRpb25SYW5nZShlLmdldFByb3BlcnR5KCkpLGE9by5uYW1lLGJsKGUuY29sb25Qb3NpdGlvbil8fChhKz0iOiAiLGw9ITApKToocz1uLmdldENvbXBsZXRpb25SYW5nZShudWxsKSxhPW8ubmFtZSsiOiAiLGw9ITApLCFlJiZpJiYoYSs9IiQwOyIpLGUmJiFlLnNlbWljb2xvblBvc2l0aW9uJiZpJiZuLm9mZnNldD49bi50ZXh0RG9jdW1lbnQub2Zmc2V0QXQocy5lbmQpJiYoYSs9IiQwOyIpO3ZhciBjPXtsYWJlbDpvLm5hbWUsZG9jdW1lbnRhdGlvbjpXYShvLG4uZG9lc1N1cHBvcnRNYXJrZG93bigpKSx0YWdzOlhsKG8pP1tXcy5EZXByZWNhdGVkXTpbXSx0ZXh0RWRpdDpvcy5yZXBsYWNlKHMsYSksaW5zZXJ0VGV4dEZvcm1hdDpPcy5TbmlwcGV0LGtpbmQ6TXMuUHJvcGVydHl9O28ucmVzdHJpY3Rpb25zfHwobD0hMSksciYmbCYmKGMuY29tbWFuZD1HbCk7dmFyIGg9KDI1NS0oIm51bWJlciI9PXR5cGVvZiBvLnJlbGV2YW5jZT9NYXRoLm1pbihNYXRoLm1heChvLnJlbGV2YW5jZSwwKSw5OSk6NTApKS50b1N0cmluZygxNiksZD1IcihvLm5hbWUsIi0iKT9LbC5WZW5kb3JQcmVmaXhlZDpLbC5Ob3JtYWw7Yy5zb3J0VGV4dD1kKyJfIitoLHQuaXRlbXMucHVzaChjKX0pKSx0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5vbkNzc1Byb3BlcnR5JiZlLm9uQ3NzUHJvcGVydHkoe3Byb3BlcnR5TmFtZTpuLmN1cnJlbnRXb3JkLHJhbmdlOm4uZGVmYXVsdFJlcGxhY2VSYW5nZX0pfSkpLHR9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiaXNUcmlnZ2VyUHJvcGVydHlWYWx1ZUNvbXBsZXRpb25FbmFibGVkIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIGUsdDtyZXR1cm4gbnVsbD09PSh0PW51bGw9PT0oZT10aGlzLmRvY3VtZW50U2V0dGluZ3MpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnRyaWdnZXJQcm9wZXJ0eVZhbHVlQ29tcGxldGlvbil8fHZvaWQgMD09PXR8fHR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJpc0NvbXBsZXRlUHJvcGVydHlXaXRoU2VtaWNvbG9uRW5hYmxlZCIse2dldDpmdW5jdGlvbigpe3ZhciBlLHQ7cmV0dXJuIG51bGw9PT0odD1udWxsPT09KGU9dGhpcy5kb2N1bWVudFNldHRpbmdzKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5jb21wbGV0ZVByb3BlcnR5V2l0aFNlbWljb2xvbil8fHZvaWQgMD09PXR8fHR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvblZhbHVlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXRoaXMscj1lLmdldEZ1bGxQcm9wZXJ0eU5hbWUoKSxpPXRoaXMuY3NzRGF0YU1hbmFnZXIuZ2V0UHJvcGVydHkociksbz1lLmdldFZhbHVlKCl8fG51bGw7byYmby5oYXNDaGlsZHJlbigpOylvPW8uZmluZENoaWxkQXRPZmZzZXQodGhpcy5vZmZzZXQsITEpO2lmKHRoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cy5mb3JFYWNoKChmdW5jdGlvbihlKXtlLm9uQ3NzUHJvcGVydHlWYWx1ZSYmZS5vbkNzc1Byb3BlcnR5VmFsdWUoe3Byb3BlcnR5TmFtZTpyLHByb3BlcnR5VmFsdWU6bi5jdXJyZW50V29yZCxyYW5nZTpuLmdldENvbXBsZXRpb25SYW5nZShvKX0pfSkpLGkpe2lmKGkucmVzdHJpY3Rpb25zKWZvcih2YXIgcz0wLGE9aS5yZXN0cmljdGlvbnM7czxhLmxlbmd0aDtzKyspe3N3aXRjaChhW3NdKXtjYXNlImNvbG9yIjp0aGlzLmdldENvbG9yUHJvcG9zYWxzKGksbyx0KTticmVhaztjYXNlInBvc2l0aW9uIjp0aGlzLmdldFBvc2l0aW9uUHJvcG9zYWxzKGksbyx0KTticmVhaztjYXNlInJlcGVhdCI6dGhpcy5nZXRSZXBlYXRTdHlsZVByb3Bvc2FscyhpLG8sdCk7YnJlYWs7Y2FzZSJsaW5lLXN0eWxlIjp0aGlzLmdldExpbmVTdHlsZVByb3Bvc2FscyhpLG8sdCk7YnJlYWs7Y2FzZSJsaW5lLXdpZHRoIjp0aGlzLmdldExpbmVXaWR0aFByb3Bvc2FscyhpLG8sdCk7YnJlYWs7Y2FzZSJnZW9tZXRyeS1ib3giOnRoaXMuZ2V0R2VvbWV0cnlCb3hQcm9wb3NhbHMoaSxvLHQpO2JyZWFrO2Nhc2UiYm94Ijp0aGlzLmdldEJveFByb3Bvc2FscyhpLG8sdCk7YnJlYWs7Y2FzZSJpbWFnZSI6dGhpcy5nZXRJbWFnZVByb3Bvc2FscyhpLG8sdCk7YnJlYWs7Y2FzZSJ0aW1pbmctZnVuY3Rpb24iOnRoaXMuZ2V0VGltaW5nRnVuY3Rpb25Qcm9wb3NhbHMoaSxvLHQpO2JyZWFrO2Nhc2Uic2hhcGUiOnRoaXMuZ2V0QmFzaWNTaGFwZVByb3Bvc2FscyhpLG8sdCl9fXRoaXMuZ2V0VmFsdWVFbnVtUHJvcG9zYWxzKGksbyx0KSx0aGlzLmdldENTU1dpZGVLZXl3b3JkUHJvcG9zYWxzKGksbyx0KSx0aGlzLmdldFVuaXRQcm9wb3NhbHMoaSxvLHQpfWVsc2UgZm9yKHZhciBsPWZ1bmN0aW9uKGUsdCl7dmFyIG49dC5nZXRGdWxsUHJvcGVydHlOYW1lKCkscj1uZXcgWWw7ZnVuY3Rpb24gaShlKXtyZXR1cm4oZSBpbnN0YW5jZW9mIGxpfHxlIGluc3RhbmNlb2YgYW98fGUgaW5zdGFuY2VvZiBubykmJnIuYWRkKGUuZ2V0VGV4dCgpKSwhMH1mdW5jdGlvbiBvKGUpe3ZhciB0PWUuZ2V0RnVsbFByb3BlcnR5TmFtZSgpO3JldHVybiBuPT09dH1mdW5jdGlvbiBzKGUpe2lmKGUgaW5zdGFuY2VvZiBiaSYmZSE9PXQmJm8oZSkpe3ZhciBuPWUuZ2V0VmFsdWUoKTtuJiZuLmFjY2VwdChpKX1yZXR1cm4hMH1yZXR1cm4gZS5hY2NlcHQocykscn0odGhpcy5zdHlsZVNoZWV0LGUpLGM9MCxoPWwuZ2V0RW50cmllcygpO2M8aC5sZW5ndGg7YysrKXt2YXIgZD1oW2NdO3QuaXRlbXMucHVzaCh7bGFiZWw6ZCx0ZXh0RWRpdDpvcy5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKG8pLGQpLGtpbmQ6TXMuVmFsdWV9KX1yZXR1cm4gdGhpcy5nZXRWYXJpYWJsZVByb3Bvc2FscyhvLHQpLHRoaXMuZ2V0VGVybVByb3Bvc2FscyhpLG8sdCksdH0sZS5wcm90b3R5cGUuZ2V0VmFsdWVFbnVtUHJvcG9zYWxzPWZ1bmN0aW9uKGUsdCxuKXtpZihlLnZhbHVlcylmb3IodmFyIHI9MCxpPWUudmFsdWVzO3I8aS5sZW5ndGg7cisrKXt2YXIgbz1pW3JdLHM9by5uYW1lLGE9dm9pZCAwO2lmKEdyKHMsIikiKSl7dmFyIGw9cy5sYXN0SW5kZXhPZigiKCIpOy0xIT09bCYmKHM9cy5zdWJzdHIoMCxsKSsiKCQxKSIsYT1IbCl9dmFyIGM9S2wuRW51bXM7SHIoby5uYW1lLCItIikmJihjKz1LbC5WZW5kb3JQcmVmaXhlZCk7dmFyIGg9e2xhYmVsOm8ubmFtZSxkb2N1bWVudGF0aW9uOldhKG8sdGhpcy5kb2VzU3VwcG9ydE1hcmtkb3duKCkpLHRhZ3M6WGwoZSk/W1dzLkRlcHJlY2F0ZWRdOltdLHRleHRFZGl0Om9zLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UodCkscyksc29ydFRleHQ6YyxraW5kOk1zLlZhbHVlLGluc2VydFRleHRGb3JtYXQ6YX07bi5pdGVtcy5wdXNoKGgpfXJldHVybiBufSxlLnByb3RvdHlwZS5nZXRDU1NXaWRlS2V5d29yZFByb3Bvc2Fscz1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByIGluIGFsKW4uaXRlbXMucHVzaCh7bGFiZWw6cixkb2N1bWVudGF0aW9uOmFsW3JdLHRleHRFZGl0Om9zLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UodCksciksa2luZDpNcy5WYWx1ZX0pO2Zvcih2YXIgaSBpbiBsbCl7dmFyIG89WmwoaSk7bi5pdGVtcy5wdXNoKHtsYWJlbDppLGRvY3VtZW50YXRpb246bGxbaV0sdGV4dEVkaXQ6b3MucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZSh0KSxvKSxraW5kOk1zLkZ1bmN0aW9uLGluc2VydFRleHRGb3JtYXQ6SGwsY29tbWFuZDpIcihpLCJ2YXIiKT9HbDp2b2lkIDB9KX1yZXR1cm4gbn0sZS5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbnNGb3JJbnRlcnBvbGF0aW9uPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMub2Zmc2V0Pj1lLm9mZnNldCsyJiZ0aGlzLmdldFZhcmlhYmxlUHJvcG9zYWxzKG51bGwsdCksdH0sZS5wcm90b3R5cGUuZ2V0VmFyaWFibGVQcm9wb3NhbHM9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MCxyPXRoaXMuZ2V0U3ltYm9sQ29udGV4dCgpLmZpbmRTeW1ib2xzQXRPZmZzZXQodGhpcy5vZmZzZXQsZWkuVmFyaWFibGUpO248ci5sZW5ndGg7bisrKXt2YXIgaT1yW25dLG89SHIoaS5uYW1lLCItLSIpPyJ2YXIoIi5jb25jYXQoaS5uYW1lLCIpIik6aS5uYW1lLHM9e2xhYmVsOmkubmFtZSxkb2N1bWVudGF0aW9uOmkudmFsdWU/SnIoaS52YWx1ZSk6aS52YWx1ZSx0ZXh0RWRpdDpvcy5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKGUpLG8pLGtpbmQ6TXMuVmFyaWFibGUsc29ydFRleHQ6S2wuVmFyaWFibGV9O2lmKCJzdHJpbmciPT10eXBlb2Ygcy5kb2N1bWVudGF0aW9uJiZ0YyhzLmRvY3VtZW50YXRpb24pJiYocy5raW5kPU1zLkNvbG9yKSxpLm5vZGUudHlwZT09PVpyLkZ1bmN0aW9uUGFyYW1ldGVyKXt2YXIgYT1pLm5vZGUuZ2V0UGFyZW50KCk7YS50eXBlPT09WnIuTWl4aW5EZWNsYXJhdGlvbiYmKHMuZGV0YWlsPSRsKCJjb21wbGV0aW9uLmFyZ3VtZW50IiwiYXJndW1lbnQgZnJvbSAnezB9JyIsYS5nZXROYW1lKCkpKX10Lml0ZW1zLnB1c2gocyl9cmV0dXJuIHR9LGUucHJvdG90eXBlLmdldFZhcmlhYmxlUHJvcG9zYWxzRm9yQ1NTVmFyRnVuY3Rpb249ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IFlsO3RoaXMuc3R5bGVTaGVldC5hY2NlcHRWaXNpdG9yKG5ldyBlYyh0LHRoaXMub2Zmc2V0KSk7Zm9yKHZhciBuPTAscj10aGlzLmdldFN5bWJvbENvbnRleHQoKS5maW5kU3ltYm9sc0F0T2Zmc2V0KHRoaXMub2Zmc2V0LGVpLlZhcmlhYmxlKTtuPHIubGVuZ3RoO24rKyl7dmFyIGk9cltuXTtpZihIcihpLm5hbWUsIi0tIikpInN0cmluZyI9PXR5cGVvZihsPXtsYWJlbDppLm5hbWUsZG9jdW1lbnRhdGlvbjppLnZhbHVlP0pyKGkudmFsdWUpOmkudmFsdWUsdGV4dEVkaXQ6b3MucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZShudWxsKSxpLm5hbWUpLGtpbmQ6TXMuVmFyaWFibGV9KS5kb2N1bWVudGF0aW9uJiZ0YyhsLmRvY3VtZW50YXRpb24pJiYobC5raW5kPU1zLkNvbG9yKSxlLml0ZW1zLnB1c2gobCk7dC5yZW1vdmUoaS5uYW1lKX1mb3IodmFyIG89MCxzPXQuZ2V0RW50cmllcygpO288cy5sZW5ndGg7bysrKXt2YXIgYT1zW29dO2lmKEhyKGEsIi0tIikpe3ZhciBsPXtsYWJlbDphLHRleHRFZGl0Om9zLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UobnVsbCksYSksa2luZDpNcy5WYXJpYWJsZX07ZS5pdGVtcy5wdXNoKGwpfX1yZXR1cm4gZX0sZS5wcm90b3R5cGUuZ2V0VW5pdFByb3Bvc2Fscz1mdW5jdGlvbihlLHQsbil7dmFyIHI9IjAiO2lmKHRoaXMuY3VycmVudFdvcmQubGVuZ3RoPjApe3ZhciBpPXRoaXMuY3VycmVudFdvcmQubWF0Y2goL14tP1xkW1wuXGQrXSovKTtpJiYocj1pWzBdLG4uaXNJbmNvbXBsZXRlPXIubGVuZ3RoPT09dGhpcy5jdXJyZW50V29yZC5sZW5ndGgpfWVsc2UgMD09PXRoaXMuY3VycmVudFdvcmQubGVuZ3RoJiYobi5pc0luY29tcGxldGU9ITApO2lmKHQmJnQucGFyZW50JiZ0LnBhcmVudC50eXBlPT09WnIuVGVybSYmKHQ9dC5nZXRQYXJlbnQoKSksZS5yZXN0cmljdGlvbnMpZm9yKHZhciBvPTAscz1lLnJlc3RyaWN0aW9ucztvPHMubGVuZ3RoO28rKyl7dmFyIGE9c1tvXSxsPXBsW2FdO2lmKGwpZm9yKHZhciBjPTAsaD1sO2M8aC5sZW5ndGg7YysrKXt2YXIgZD1yK2hbY107bi5pdGVtcy5wdXNoKHtsYWJlbDpkLHRleHRFZGl0Om9zLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UodCksZCksa2luZDpNcy5Vbml0fSl9fXJldHVybiBufSxlLnByb3RvdHlwZS5nZXRDb21wbGV0aW9uUmFuZ2U9ZnVuY3Rpb24oZSl7aWYoZSYmZS5vZmZzZXQ8PXRoaXMub2Zmc2V0JiZ0aGlzLm9mZnNldDw9ZS5lbmQpe3ZhciB0PS0xIT09ZS5lbmQ/dGhpcy50ZXh0RG9jdW1lbnQucG9zaXRpb25BdChlLmVuZCk6dGhpcy5wb3NpdGlvbixuPXRoaXMudGV4dERvY3VtZW50LnBvc2l0aW9uQXQoZS5vZmZzZXQpO2lmKG4ubGluZT09PXQubGluZSlyZXR1cm4gQW8uY3JlYXRlKG4sdCl9cmV0dXJuIHRoaXMuZGVmYXVsdFJlcGxhY2VSYW5nZX0sZS5wcm90b3R5cGUuZ2V0Q29sb3JQcm9wb3NhbHM9ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgciBpbiAkYSluLml0ZW1zLnB1c2goe2xhYmVsOnIsZG9jdW1lbnRhdGlvbjokYVtyXSx0ZXh0RWRpdDpvcy5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHQpLHIpLGtpbmQ6TXMuQ29sb3J9KTtmb3IodmFyIHIgaW4gSGEpbi5pdGVtcy5wdXNoKHtsYWJlbDpyLGRvY3VtZW50YXRpb246SGFbcl0sdGV4dEVkaXQ6b3MucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZSh0KSxyKSxraW5kOk1zLlZhbHVlfSk7dmFyIGk9bmV3IFlsO3RoaXMuc3R5bGVTaGVldC5hY2NlcHRWaXNpdG9yKG5ldyBRbChpLHRoaXMub2Zmc2V0KSk7Zm9yKHZhciBvPTAscz1pLmdldEVudHJpZXMoKTtvPHMubGVuZ3RoO28rKyl7cj1zW29dO24uaXRlbXMucHVzaCh7bGFiZWw6cix0ZXh0RWRpdDpvcy5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHQpLHIpLGtpbmQ6TXMuQ29sb3J9KX1mb3IodmFyIGE9ZnVuY3Rpb24oZSl7dmFyIHI9MSxpPWUuZnVuYy5yZXBsYWNlKC9cWz9cJChcdyspXF0/L2csKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIiR7IityKysrIjoiK3QrIn0ifSkpO24uaXRlbXMucHVzaCh7bGFiZWw6ZS5mdW5jLnN1YnN0cigwLGUuZnVuYy5pbmRleE9mKCIoIikpLGRldGFpbDplLmZ1bmMsZG9jdW1lbnRhdGlvbjplLmRlc2MsdGV4dEVkaXQ6b3MucmVwbGFjZShsLmdldENvbXBsZXRpb25SYW5nZSh0KSxpKSxpbnNlcnRUZXh0Rm9ybWF0OkhsLGtpbmQ6TXMuRnVuY3Rpb259KX0sbD10aGlzLGM9MCxoPXFhO2M8aC5sZW5ndGg7YysrKXthKGhbY10pfXJldHVybiBufSxlLnByb3RvdHlwZS5nZXRQb3NpdGlvblByb3Bvc2Fscz1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByIGluIHRsKW4uaXRlbXMucHVzaCh7bGFiZWw6cixkb2N1bWVudGF0aW9uOnRsW3JdLHRleHRFZGl0Om9zLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UodCksciksa2luZDpNcy5WYWx1ZX0pO3JldHVybiBufSxlLnByb3RvdHlwZS5nZXRSZXBlYXRTdHlsZVByb3Bvc2Fscz1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByIGluIG5sKW4uaXRlbXMucHVzaCh7bGFiZWw6cixkb2N1bWVudGF0aW9uOm5sW3JdLHRleHRFZGl0Om9zLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UodCksciksa2luZDpNcy5WYWx1ZX0pO3JldHVybiBufSxlLnByb3RvdHlwZS5nZXRMaW5lU3R5bGVQcm9wb3NhbHM9ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgciBpbiBybCluLml0ZW1zLnB1c2goe2xhYmVsOnIsZG9jdW1lbnRhdGlvbjpybFtyXSx0ZXh0RWRpdDpvcy5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHQpLHIpLGtpbmQ6TXMuVmFsdWV9KTtyZXR1cm4gbn0sZS5wcm90b3R5cGUuZ2V0TGluZVdpZHRoUHJvcG9zYWxzPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9MCxpPWlsO3I8aS5sZW5ndGg7cisrKXt2YXIgbz1pW3JdO24uaXRlbXMucHVzaCh7bGFiZWw6byx0ZXh0RWRpdDpvcy5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHQpLG8pLGtpbmQ6TXMuVmFsdWV9KX1yZXR1cm4gbn0sZS5wcm90b3R5cGUuZ2V0R2VvbWV0cnlCb3hQcm9wb3NhbHM9ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgciBpbiBzbCluLml0ZW1zLnB1c2goe2xhYmVsOnIsZG9jdW1lbnRhdGlvbjpzbFtyXSx0ZXh0RWRpdDpvcy5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHQpLHIpLGtpbmQ6TXMuVmFsdWV9KTtyZXR1cm4gbn0sZS5wcm90b3R5cGUuZ2V0Qm94UHJvcG9zYWxzPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHIgaW4gb2wpbi5pdGVtcy5wdXNoKHtsYWJlbDpyLGRvY3VtZW50YXRpb246b2xbcl0sdGV4dEVkaXQ6b3MucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZSh0KSxyKSxraW5kOk1zLlZhbHVlfSk7cmV0dXJuIG59LGUucHJvdG90eXBlLmdldEltYWdlUHJvcG9zYWxzPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHIgaW4gY2wpe3ZhciBpPVpsKHIpO24uaXRlbXMucHVzaCh7bGFiZWw6cixkb2N1bWVudGF0aW9uOmNsW3JdLHRleHRFZGl0Om9zLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UodCksaSksa2luZDpNcy5GdW5jdGlvbixpbnNlcnRUZXh0Rm9ybWF0OnIhPT1pP0hsOnZvaWQgMH0pfXJldHVybiBufSxlLnByb3RvdHlwZS5nZXRUaW1pbmdGdW5jdGlvblByb3Bvc2Fscz1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByIGluIGhsKXt2YXIgaT1abChyKTtuLml0ZW1zLnB1c2goe2xhYmVsOnIsZG9jdW1lbnRhdGlvbjpobFtyXSx0ZXh0RWRpdDpvcy5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHQpLGkpLGtpbmQ6TXMuRnVuY3Rpb24saW5zZXJ0VGV4dEZvcm1hdDpyIT09aT9IbDp2b2lkIDB9KX1yZXR1cm4gbn0sZS5wcm90b3R5cGUuZ2V0QmFzaWNTaGFwZVByb3Bvc2Fscz1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByIGluIGRsKXt2YXIgaT1abChyKTtuLml0ZW1zLnB1c2goe2xhYmVsOnIsZG9jdW1lbnRhdGlvbjpkbFtyXSx0ZXh0RWRpdDpvcy5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHQpLGkpLGtpbmQ6TXMuRnVuY3Rpb24saW5zZXJ0VGV4dEZvcm1hdDpyIT09aT9IbDp2b2lkIDB9KX1yZXR1cm4gbn0sZS5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbnNGb3JTdHlsZXNoZWV0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuc3R5bGVTaGVldC5maW5kRmlyc3RDaGlsZEJlZm9yZU9mZnNldCh0aGlzLm9mZnNldCk7cmV0dXJuIHQ/dCBpbnN0YW5jZW9mIHBpP3RoaXMuZ2V0Q29tcGxldGlvbnNGb3JSdWxlU2V0KHQsZSk6dCBpbnN0YW5jZW9mIFVpP3RoaXMuZ2V0Q29tcGxldGlvbnNGb3JTdXBwb3J0cyh0LGUpOmU6dGhpcy5nZXRDb21wbGV0aW9uRm9yVG9wTGV2ZWwoZSl9LGUucHJvdG90eXBlLmdldENvbXBsZXRpb25Gb3JUb3BMZXZlbD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLmNzc0RhdGFNYW5hZ2VyLmdldEF0RGlyZWN0aXZlcygpLmZvckVhY2goKGZ1bmN0aW9uKG4pe2UuaXRlbXMucHVzaCh7bGFiZWw6bi5uYW1lLHRleHRFZGl0Om9zLnJlcGxhY2UodC5nZXRDb21wbGV0aW9uUmFuZ2UobnVsbCksbi5uYW1lKSxkb2N1bWVudGF0aW9uOldhKG4sdC5kb2VzU3VwcG9ydE1hcmtkb3duKCkpLHRhZ3M6WGwobik/W1dzLkRlcHJlY2F0ZWRdOltdLGtpbmQ6TXMuS2V5d29yZH0pfSkpLHRoaXMuZ2V0Q29tcGxldGlvbnNGb3JTZWxlY3RvcihudWxsLCExLGUpLGV9LGUucHJvdG90eXBlLmdldENvbXBsZXRpb25zRm9yUnVsZVNldD1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZ2V0RGVjbGFyYXRpb25zKCk7cmV0dXJuIG4mJm4uZW5kc1dpdGgoIn0iKSYmdGhpcy5vZmZzZXQ+PW4uZW5kP3RoaXMuZ2V0Q29tcGxldGlvbkZvclRvcExldmVsKHQpOiFufHx0aGlzLm9mZnNldDw9bi5vZmZzZXQ/dGhpcy5nZXRDb21wbGV0aW9uc0ZvclNlbGVjdG9yKGUsZS5pc05lc3RlZCgpLHQpOnRoaXMuZ2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvbnMoZS5nZXREZWNsYXJhdGlvbnMoKSx0KX0sZS5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbnNGb3JTZWxlY3Rvcj1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyxpPXRoaXMuZmluZEluTm9kZVBhdGgoWnIuUHNldWRvU2VsZWN0b3IsWnIuSWRlbnRpZmllclNlbGVjdG9yLFpyLkNsYXNzU2VsZWN0b3IsWnIuRWxlbWVudE5hbWVTZWxlY3Rvcik7aWYoIWkmJnRoaXMuaGFzQ2hhcmFjdGVyQXRQb3NpdGlvbih0aGlzLm9mZnNldC10aGlzLmN1cnJlbnRXb3JkLmxlbmd0aC0xLCI6IikmJih0aGlzLmN1cnJlbnRXb3JkPSI6Iit0aGlzLmN1cnJlbnRXb3JkLHRoaXMuaGFzQ2hhcmFjdGVyQXRQb3NpdGlvbih0aGlzLm9mZnNldC10aGlzLmN1cnJlbnRXb3JkLmxlbmd0aC0xLCI6IikmJih0aGlzLmN1cnJlbnRXb3JkPSI6Iit0aGlzLmN1cnJlbnRXb3JkKSx0aGlzLmRlZmF1bHRSZXBsYWNlUmFuZ2U9QW8uY3JlYXRlKE5vLmNyZWF0ZSh0aGlzLnBvc2l0aW9uLmxpbmUsdGhpcy5wb3NpdGlvbi5jaGFyYWN0ZXItdGhpcy5jdXJyZW50V29yZC5sZW5ndGgpLHRoaXMucG9zaXRpb24pKSx0aGlzLmNzc0RhdGFNYW5hZ2VyLmdldFBzZXVkb0NsYXNzZXMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD1abChlLm5hbWUpLG89e2xhYmVsOmUubmFtZSx0ZXh0RWRpdDpvcy5yZXBsYWNlKHIuZ2V0Q29tcGxldGlvblJhbmdlKGkpLHQpLGRvY3VtZW50YXRpb246V2EoZSxyLmRvZXNTdXBwb3J0TWFya2Rvd24oKSksdGFnczpYbChlKT9bV3MuRGVwcmVjYXRlZF06W10sa2luZDpNcy5GdW5jdGlvbixpbnNlcnRUZXh0Rm9ybWF0OmUubmFtZSE9PXQ/SGw6dm9pZCAwfTtIcihlLm5hbWUsIjotIikmJihvLnNvcnRUZXh0PUtsLlZlbmRvclByZWZpeGVkKSxuLml0ZW1zLnB1c2gobyl9KSksdGhpcy5jc3NEYXRhTWFuYWdlci5nZXRQc2V1ZG9FbGVtZW50cygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PVpsKGUubmFtZSksbz17bGFiZWw6ZS5uYW1lLHRleHRFZGl0Om9zLnJlcGxhY2Uoci5nZXRDb21wbGV0aW9uUmFuZ2UoaSksdCksZG9jdW1lbnRhdGlvbjpXYShlLHIuZG9lc1N1cHBvcnRNYXJrZG93bigpKSx0YWdzOlhsKGUpP1tXcy5EZXByZWNhdGVkXTpbXSxraW5kOk1zLkZ1bmN0aW9uLGluc2VydFRleHRGb3JtYXQ6ZS5uYW1lIT09dD9IbDp2b2lkIDB9O0hyKGUubmFtZSwiOjotIikmJihvLnNvcnRUZXh0PUtsLlZlbmRvclByZWZpeGVkKSxuLml0ZW1zLnB1c2gobyl9KSksIXQpe2Zvcih2YXIgbz0wLHM9dWw7bzxzLmxlbmd0aDtvKyspe3ZhciBhPXNbb107bi5pdGVtcy5wdXNoKHtsYWJlbDphLHRleHRFZGl0Om9zLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UoaSksYSksa2luZDpNcy5LZXl3b3JkfSl9Zm9yKHZhciBsPTAsYz1tbDtsPGMubGVuZ3RoO2wrKyl7YT1jW2xdO24uaXRlbXMucHVzaCh7bGFiZWw6YSx0ZXh0RWRpdDpvcy5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKGkpLGEpLGtpbmQ6TXMuS2V5d29yZH0pfX12YXIgaD17fTtoW3RoaXMuY3VycmVudFdvcmRdPSEwO3ZhciBkPXRoaXMudGV4dERvY3VtZW50LmdldFRleHQoKTtpZih0aGlzLnN0eWxlU2hlZXQuYWNjZXB0KChmdW5jdGlvbihlKXtpZihlLnR5cGU9PT1aci5TaW1wbGVTZWxlY3RvciYmZS5sZW5ndGg+MCl7dmFyIHQ9ZC5zdWJzdHIoZS5vZmZzZXQsZS5sZW5ndGgpO3JldHVybiIuIiE9PXQuY2hhckF0KDApfHxoW3RdfHwoaFt0XT0hMCxuLml0ZW1zLnB1c2goe2xhYmVsOnQsdGV4dEVkaXQ6b3MucmVwbGFjZShyLmdldENvbXBsZXRpb25SYW5nZShpKSx0KSxraW5kOk1zLktleXdvcmR9KSksITF9cmV0dXJuITB9KSksZSYmZS5pc05lc3RlZCgpKXt2YXIgcD1lLmdldFNlbGVjdG9ycygpLmZpbmRGaXJzdENoaWxkQmVmb3JlT2Zmc2V0KHRoaXMub2Zmc2V0KTtwJiYwPT09ZS5nZXRTZWxlY3RvcnMoKS5nZXRDaGlsZHJlbigpLmluZGV4T2YocCkmJnRoaXMuZ2V0UHJvcGVydHlQcm9wb3NhbHMobnVsbCxuKX1yZXR1cm4gbn0sZS5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvbnM9ZnVuY3Rpb24oZSx0KXtpZighZXx8dGhpcy5vZmZzZXQ9PT1lLm9mZnNldClyZXR1cm4gdDt2YXIgbj1lLmZpbmRGaXJzdENoaWxkQmVmb3JlT2Zmc2V0KHRoaXMub2Zmc2V0KTtpZighbilyZXR1cm4gdGhpcy5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9uUHJvcGVydHkobnVsbCx0KTtpZihuIGluc3RhbmNlb2YgZmkpe3ZhciByPW47aWYoIWJsKHIuY29sb25Qb3NpdGlvbil8fHRoaXMub2Zmc2V0PD1yLmNvbG9uUG9zaXRpb24pcmV0dXJuIHRoaXMuZ2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvblByb3BlcnR5KHIsdCk7aWYoYmwoci5zZW1pY29sb25Qb3NpdGlvbikmJnIuc2VtaWNvbG9uUG9zaXRpb248dGhpcy5vZmZzZXQpcmV0dXJuIHRoaXMub2Zmc2V0PT09ci5zZW1pY29sb25Qb3NpdGlvbisxP3Q6dGhpcy5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9uUHJvcGVydHkobnVsbCx0KTtpZihyIGluc3RhbmNlb2YgYmkpcmV0dXJuIHRoaXMuZ2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvblZhbHVlKHIsdCl9ZWxzZSBuIGluc3RhbmNlb2YgcG8/dGhpcy5nZXRDb21wbGV0aW9uc0ZvckV4dGVuZHNSZWZlcmVuY2UobixudWxsLHQpOih0aGlzLmN1cnJlbnRXb3JkJiYiQCI9PT10aGlzLmN1cnJlbnRXb3JkWzBdfHxuIGluc3RhbmNlb2YgcGkpJiZ0aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25Qcm9wZXJ0eShudWxsLHQpO3JldHVybiB0fSxlLnByb3RvdHlwZS5nZXRDb21wbGV0aW9uc0ZvclZhcmlhYmxlRGVjbGFyYXRpb249ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5vZmZzZXQmJmJsKGUuY29sb25Qb3NpdGlvbikmJnRoaXMub2Zmc2V0PmUuY29sb25Qb3NpdGlvbiYmdGhpcy5nZXRWYXJpYWJsZVByb3Bvc2FscyhlLmdldFZhbHVlKCksdCksdH0sZS5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbnNGb3JFeHByZXNzaW9uPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5nZXRQYXJlbnQoKTtpZihuIGluc3RhbmNlb2YgU2kpcmV0dXJuIHRoaXMuZ2V0Q29tcGxldGlvbnNGb3JGdW5jdGlvbkFyZ3VtZW50KG4sbi5nZXRQYXJlbnQoKSx0KSx0O3ZhciByPWUuZmluZFBhcmVudChaci5EZWNsYXJhdGlvbik7aWYoIXIpcmV0dXJuIHRoaXMuZ2V0VGVybVByb3Bvc2Fscyh2b2lkIDAsbnVsbCx0KSx0O3ZhciBpPWUuZmluZENoaWxkQXRPZmZzZXQodGhpcy5vZmZzZXQsITApO3JldHVybiBpP2kgaW5zdGFuY2VvZiBhb3x8aSBpbnN0YW5jZW9mIGxpP3RoaXMuZ2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvblZhbHVlKHIsdCk6dDp0aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25WYWx1ZShyLHQpfSxlLnByb3RvdHlwZS5nZXRDb21wbGV0aW9uc0ZvckZ1bmN0aW9uQXJndW1lbnQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQuZ2V0SWRlbnRpZmllcigpO3JldHVybiByJiZyLm1hdGNoZXMoInZhciIpJiYodC5nZXRBcmd1bWVudHMoKS5oYXNDaGlsZHJlbigpJiZ0LmdldEFyZ3VtZW50cygpLmdldENoaWxkKDApIT09ZXx8dGhpcy5nZXRWYXJpYWJsZVByb3Bvc2Fsc0ZvckNTU1ZhckZ1bmN0aW9uKG4pKSxufSxlLnByb3RvdHlwZS5nZXRDb21wbGV0aW9uc0ZvckZ1bmN0aW9uRGVjbGFyYXRpb249ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmdldERlY2xhcmF0aW9ucygpO3JldHVybiBuJiZ0aGlzLm9mZnNldD5uLm9mZnNldCYmdGhpcy5vZmZzZXQ8bi5lbmQmJnRoaXMuZ2V0VGVybVByb3Bvc2Fscyh2b2lkIDAsbnVsbCx0KSx0fSxlLnByb3RvdHlwZS5nZXRDb21wbGV0aW9uc0Zvck1peGluUmVmZXJlbmNlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXRoaXMscj0wLGk9dGhpcy5nZXRTeW1ib2xDb250ZXh0KCkuZmluZFN5bWJvbHNBdE9mZnNldCh0aGlzLm9mZnNldCxlaS5NaXhpbik7cjxpLmxlbmd0aDtyKyspe3ZhciBvPWlbcl07by5ub2RlIGluc3RhbmNlb2YgZ28mJnQuaXRlbXMucHVzaCh0aGlzLm1ha2VUZXJtUHJvcG9zYWwobyxvLm5vZGUuZ2V0UGFyYW1ldGVycygpLG51bGwpKX12YXIgcz1lLmdldElkZW50aWZpZXIoKXx8bnVsbDtyZXR1cm4gdGhpcy5jb21wbGV0aW9uUGFydGljaXBhbnRzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2Uub25Dc3NNaXhpblJlZmVyZW5jZSYmZS5vbkNzc01peGluUmVmZXJlbmNlKHttaXhpbk5hbWU6bi5jdXJyZW50V29yZCxyYW5nZTpuLmdldENvbXBsZXRpb25SYW5nZShzKX0pfSkpLHR9LGUucHJvdG90eXBlLmdldFRlcm1Qcm9wb3NhbHM9ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj0wLGk9dGhpcy5nZXRTeW1ib2xDb250ZXh0KCkuZmluZFN5bWJvbHNBdE9mZnNldCh0aGlzLm9mZnNldCxlaS5GdW5jdGlvbik7cjxpLmxlbmd0aDtyKyspe3ZhciBvPWlbcl07by5ub2RlIGluc3RhbmNlb2YgUmkmJm4uaXRlbXMucHVzaCh0aGlzLm1ha2VUZXJtUHJvcG9zYWwobyxvLm5vZGUuZ2V0UGFyYW1ldGVycygpLHQpKX1yZXR1cm4gbn0sZS5wcm90b3R5cGUubWFrZVRlcm1Qcm9wb3NhbD1mdW5jdGlvbihlLHQsbil7ZS5ub2RlO3ZhciByPXQuZ2V0Q2hpbGRyZW4oKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgeGk/ZS5nZXROYW1lKCk6ZS5nZXRUZXh0KCl9KSksaT1lLm5hbWUrIigiK3IubWFwKChmdW5jdGlvbihlLHQpe3JldHVybiIkeyIrKHQrMSkrIjoiK2UrIn0ifSkpLmpvaW4oIiwgIikrIikiO3JldHVybntsYWJlbDplLm5hbWUsZGV0YWlsOmUubmFtZSsiKCIrci5qb2luKCIsICIpKyIpIix0ZXh0RWRpdDpvcy5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKG4pLGkpLGluc2VydFRleHRGb3JtYXQ6SGwsa2luZDpNcy5GdW5jdGlvbixzb3J0VGV4dDpLbC5UZXJtfX0sZS5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbnNGb3JTdXBwb3J0c0NvbmRpdGlvbj1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZmluZEZpcnN0Q2hpbGRCZWZvcmVPZmZzZXQodGhpcy5vZmZzZXQpO2lmKG4pe2lmKG4gaW5zdGFuY2VvZiBiaSlyZXR1cm4hYmwobi5jb2xvblBvc2l0aW9uKXx8dGhpcy5vZmZzZXQ8PW4uY29sb25Qb3NpdGlvbj90aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25Qcm9wZXJ0eShuLHQpOnRoaXMuZ2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvblZhbHVlKG4sdCk7aWYobiBpbnN0YW5jZW9mIEhpKXJldHVybiB0aGlzLmdldENvbXBsZXRpb25zRm9yU3VwcG9ydHNDb25kaXRpb24obix0KX1yZXR1cm4gYmwoZS5sUGFyZW50KSYmdGhpcy5vZmZzZXQ+ZS5sUGFyZW50JiYoIWJsKGUuclBhcmVudCl8fHRoaXMub2Zmc2V0PD1lLnJQYXJlbnQpP3RoaXMuZ2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvblByb3BlcnR5KG51bGwsdCk6dH0sZS5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbnNGb3JTdXBwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZ2V0RGVjbGFyYXRpb25zKCk7aWYoIW58fHRoaXMub2Zmc2V0PD1uLm9mZnNldCl7dmFyIHI9ZS5maW5kRmlyc3RDaGlsZEJlZm9yZU9mZnNldCh0aGlzLm9mZnNldCk7cmV0dXJuIHIgaW5zdGFuY2VvZiBIaT90aGlzLmdldENvbXBsZXRpb25zRm9yU3VwcG9ydHNDb25kaXRpb24ocix0KTp0fXJldHVybiB0aGlzLmdldENvbXBsZXRpb25Gb3JUb3BMZXZlbCh0KX0sZS5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbnNGb3JFeHRlbmRzUmVmZXJlbmNlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbn0sZS5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbkZvclVyaUxpdGVyYWxWYWx1ZT1mdW5jdGlvbihlLHQpe3ZhciBuLHIsaTtpZihlLmhhc0NoaWxkcmVuKCkpe3ZhciBvPWUuZ2V0Q2hpbGQoMCk7bj1vLmdldFRleHQoKSxyPXRoaXMucG9zaXRpb24saT10aGlzLmdldENvbXBsZXRpb25SYW5nZShvKX1lbHNle249IiIscj10aGlzLnBvc2l0aW9uO3ZhciBzPXRoaXMudGV4dERvY3VtZW50LnBvc2l0aW9uQXQoZS5vZmZzZXQrInVybCgiLmxlbmd0aCk7aT1Bby5jcmVhdGUocyxzKX1yZXR1cm4gdGhpcy5jb21wbGV0aW9uUGFydGljaXBhbnRzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2Uub25Dc3NVUklMaXRlcmFsVmFsdWUmJmUub25Dc3NVUklMaXRlcmFsVmFsdWUoe3VyaVZhbHVlOm4scG9zaXRpb246cixyYW5nZTppfSl9KSksdH0sZS5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbkZvckltcG9ydFBhdGg9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO3JldHVybiB0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5vbkNzc0ltcG9ydFBhdGgmJnQub25Dc3NJbXBvcnRQYXRoKHtwYXRoVmFsdWU6ZS5nZXRUZXh0KCkscG9zaXRpb246bi5wb3NpdGlvbixyYW5nZTpuLmdldENvbXBsZXRpb25SYW5nZShlKX0pfSkpLHR9LGUucHJvdG90eXBlLmhhc0NoYXJhY3RlckF0UG9zaXRpb249ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnRleHREb2N1bWVudC5nZXRUZXh0KCk7cmV0dXJuIGU+PTAmJmU8bi5sZW5ndGgmJm4uY2hhckF0KGUpPT09dH0sZS5wcm90b3R5cGUuZG9lc1N1cHBvcnRNYXJrZG93bj1mdW5jdGlvbigpe3ZhciBlLHQsbjtpZighYmwodGhpcy5zdXBwb3J0c01hcmtkb3duKSl7aWYoIWJsKHRoaXMubHNPcHRpb25zLmNsaWVudENhcGFiaWxpdGllcykpcmV0dXJuIHRoaXMuc3VwcG9ydHNNYXJrZG93bj0hMCx0aGlzLnN1cHBvcnRzTWFya2Rvd247dmFyIHI9bnVsbD09PShuPW51bGw9PT0odD1udWxsPT09KGU9dGhpcy5sc09wdGlvbnMuY2xpZW50Q2FwYWJpbGl0aWVzLnRleHREb2N1bWVudCl8fHZvaWQgMD09PWU/dm9pZCAwOmUuY29tcGxldGlvbil8fHZvaWQgMD09PXQ/dm9pZCAwOnQuY29tcGxldGlvbkl0ZW0pfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmRvY3VtZW50YXRpb25Gb3JtYXQ7dGhpcy5zdXBwb3J0c01hcmtkb3duPUFycmF5LmlzQXJyYXkocikmJi0xIT09ci5pbmRleE9mKEFzLk1hcmtkb3duKX1yZXR1cm4gdGhpcy5zdXBwb3J0c01hcmtkb3dufSxlfSgpO2Z1bmN0aW9uIFhsKGUpe3JldHVybiEoIWUuc3RhdHVzfHwibm9uc3RhbmRhcmQiIT09ZS5zdGF0dXMmJiJvYnNvbGV0ZSIhPT1lLnN0YXR1cyl9dmFyIFlsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuZW50cmllcz17fX1yZXR1cm4gZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3RoaXMuZW50cmllc1tlXT0hMH0sZS5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKGUpe2RlbGV0ZSB0aGlzLmVudHJpZXNbZV19LGUucHJvdG90eXBlLmdldEVudHJpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5lbnRyaWVzKX0sZX0oKTtmdW5jdGlvbiBabChlKXtyZXR1cm4gZS5yZXBsYWNlKC9cKFwpJC8sIigkMSkiKX12YXIgUWw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy5lbnRyaWVzPWUsdGhpcy5jdXJyZW50T2Zmc2V0PXR9cmV0dXJuIGUucHJvdG90eXBlLnZpc2l0Tm9kZT1mdW5jdGlvbihlKXtyZXR1cm4oZSBpbnN0YW5jZW9mIG5vfHxlIGluc3RhbmNlb2Ygd2kmJmZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0TmFtZSgpO3JldHVybiEhdCYmL14ocmdifHJnYmF8aHNsfGhzbGF8aHdiKSQvZ2kudGVzdCh0KX0oZSkpJiYodGhpcy5jdXJyZW50T2Zmc2V0PGUub2Zmc2V0fHxlLmVuZDx0aGlzLmN1cnJlbnRPZmZzZXQpJiZ0aGlzLmVudHJpZXMuYWRkKGUuZ2V0VGV4dCgpKSwhMH0sZX0oKSxlYz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt0aGlzLmVudHJpZXM9ZSx0aGlzLmN1cnJlbnRPZmZzZXQ9dH1yZXR1cm4gZS5wcm90b3R5cGUudmlzaXROb2RlPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgbGkmJmUuaXNDdXN0b21Qcm9wZXJ0eSYmKHRoaXMuY3VycmVudE9mZnNldDxlLm9mZnNldHx8ZS5lbmQ8dGhpcy5jdXJyZW50T2Zmc2V0KSYmdGhpcy5lbnRyaWVzLmFkZChlLmdldFRleHQoKSksITB9LGV9KCk7ZnVuY3Rpb24gdGMoZSl7cmV0dXJuIGUudG9Mb3dlckNhc2UoKWluICRhfHwvKF4jWzAtOUEtRl17Nn0kKXwoXiNbMC05QS1GXXszfSQpL2kudGVzdChlKX12YXIgbmMscmM9ZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbih0LG4pe3JldHVybihlPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKX0pKHQsbil9O3JldHVybiBmdW5jdGlvbih0LG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuJiZudWxsIT09bil0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKG4pKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPXR9ZSh0LG4pLHQucHJvdG90eXBlPW51bGw9PT1uP09iamVjdC5jcmVhdGUobik6KHIucHJvdG90eXBlPW4ucHJvdG90eXBlLG5ldyByKX19KCksaWM9X28oKSxvYz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLnBhcmVudD1udWxsLHRoaXMuY2hpbGRyZW49bnVsbCx0aGlzLmF0dHJpYnV0ZXM9bnVsbH1yZXR1cm4gZS5wcm90b3R5cGUuZmluZEF0dHJpYnV0ZT1mdW5jdGlvbihlKXtpZih0aGlzLmF0dHJpYnV0ZXMpZm9yKHZhciB0PTAsbj10aGlzLmF0dHJpYnV0ZXM7dDxuLmxlbmd0aDt0Kyspe3ZhciByPW5bdF07aWYoci5uYW1lPT09ZSlyZXR1cm4gci52YWx1ZX1yZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuYWRkQ2hpbGQ9ZnVuY3Rpb24odCl7dCBpbnN0YW5jZW9mIGUmJih0LnBhcmVudD10aGlzKSx0aGlzLmNoaWxkcmVufHwodGhpcy5jaGlsZHJlbj1bXSksdGhpcy5jaGlsZHJlbi5wdXNoKHQpfSxlLnByb3RvdHlwZS5hcHBlbmQ9ZnVuY3Rpb24oZSl7aWYodGhpcy5hdHRyaWJ1dGVzKXt2YXIgdD10aGlzLmF0dHJpYnV0ZXNbdGhpcy5hdHRyaWJ1dGVzLmxlbmd0aC0xXTt0LnZhbHVlPXQudmFsdWUrZX19LGUucHJvdG90eXBlLnByZXBlbmQ9ZnVuY3Rpb24oZSl7aWYodGhpcy5hdHRyaWJ1dGVzKXt2YXIgdD10aGlzLmF0dHJpYnV0ZXNbMF07dC52YWx1ZT1lK3QudmFsdWV9fSxlLnByb3RvdHlwZS5maW5kUm9vdD1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzO2UucGFyZW50JiYhKGUucGFyZW50IGluc3RhbmNlb2Ygc2MpOyllPWUucGFyZW50O3JldHVybiBlfSxlLnByb3RvdHlwZS5yZW1vdmVDaGlsZD1mdW5jdGlvbihlKXtpZih0aGlzLmNoaWxkcmVuKXt2YXIgdD10aGlzLmNoaWxkcmVuLmluZGV4T2YoZSk7aWYoLTEhPT10KXJldHVybiB0aGlzLmNoaWxkcmVuLnNwbGljZSh0LDEpLCEwfXJldHVybiExfSxlLnByb3RvdHlwZS5hZGRBdHRyPWZ1bmN0aW9uKGUsdCl7dGhpcy5hdHRyaWJ1dGVzfHwodGhpcy5hdHRyaWJ1dGVzPVtdKTtmb3IodmFyIG49MCxyPXRoaXMuYXR0cmlidXRlcztuPHIubGVuZ3RoO24rKyl7dmFyIGk9cltuXTtpZihpLm5hbWU9PT1lKXJldHVybiB2b2lkKGkudmFsdWUrPSIgIit0KX10aGlzLmF0dHJpYnV0ZXMucHVzaCh7bmFtZTplLHZhbHVlOnR9KX0sZS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9ITApO3ZhciBuPW5ldyBlO2lmKHRoaXMuYXR0cmlidXRlcyl7bi5hdHRyaWJ1dGVzPVtdO2Zvcih2YXIgcj0wLGk9dGhpcy5hdHRyaWJ1dGVzO3I8aS5sZW5ndGg7cisrKXt2YXIgbz1pW3JdO24uYWRkQXR0cihvLm5hbWUsby52YWx1ZSl9fWlmKHQmJnRoaXMuY2hpbGRyZW4pe24uY2hpbGRyZW49W107Zm9yKHZhciBzPTA7czx0aGlzLmNoaWxkcmVuLmxlbmd0aDtzKyspbi5hZGRDaGlsZCh0aGlzLmNoaWxkcmVuW3NdLmNsb25lKCkpfXJldHVybiBufSxlLnByb3RvdHlwZS5jbG9uZVdpdGhQYXJlbnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNsb25lKCExKTshdGhpcy5wYXJlbnR8fHRoaXMucGFyZW50IGluc3RhbmNlb2Ygc2N8fHRoaXMucGFyZW50LmNsb25lV2l0aFBhcmVudCgpLmFkZENoaWxkKGUpO3JldHVybiBlfSxlfSgpLHNjPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gbnVsbCE9PWUmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiByYyh0LGUpLHR9KG9jKSxhYz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQpe3ZhciBuPWUuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5hZGRBdHRyKCJuYW1lIix0KSxufXJldHVybiByYyh0LGUpLHR9KG9jKSxsYz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5xdW90ZT1lLHRoaXMucmVzdWx0PVtdfXJldHVybiBlLnByb3RvdHlwZS5wcmludD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5yZXN1bHQ9W10sZSBpbnN0YW5jZW9mIHNjP2UuY2hpbGRyZW4mJnRoaXMuZG9QcmludChlLmNoaWxkcmVuLDApOnRoaXMuZG9QcmludChbZV0sMCksW3tsYW5ndWFnZToiaHRtbCIsdmFsdWU6dGhpcy5yZXN1bHQuam9pbigiXG4iKX1dfSxlLnByb3RvdHlwZS5kb1ByaW50PWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTAscj1lO248ci5sZW5ndGg7bisrKXt2YXIgaT1yW25dO3RoaXMuZG9QcmludEVsZW1lbnQoaSx0KSxpLmNoaWxkcmVuJiZ0aGlzLmRvUHJpbnQoaS5jaGlsZHJlbix0KzEpfX0sZS5wcm90b3R5cGUud3JpdGVMaW5lPWZ1bmN0aW9uKGUsdCl7dmFyIG49bmV3IEFycmF5KGUrMSkuam9pbigiICAiKTt0aGlzLnJlc3VsdC5wdXNoKG4rdCl9LGUucHJvdG90eXBlLmRvUHJpbnRFbGVtZW50PWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5maW5kQXR0cmlidXRlKCJuYW1lIik7aWYoZSBpbnN0YW5jZW9mIGFjfHwi4oCmIj09PW4pdGhpcy53cml0ZUxpbmUodCxuKTtlbHNle3ZhciByPVsiPCJdO2lmKG4/ci5wdXNoKG4pOnIucHVzaCgiZWxlbWVudCIpLGUuYXR0cmlidXRlcylmb3IodmFyIGk9MCxvPWUuYXR0cmlidXRlcztpPG8ubGVuZ3RoO2krKyl7dmFyIHM9b1tpXTtpZigibmFtZSIhPT1zLm5hbWUpe3IucHVzaCgiICIpLHIucHVzaChzLm5hbWUpO3ZhciBhPXMudmFsdWU7YSYmKHIucHVzaCgiPSIpLHIucHVzaChuYy5lbnN1cmUoYSx0aGlzLnF1b3RlKSkpfX1yLnB1c2goIj4iKSx0aGlzLndyaXRlTGluZSh0LHIuam9pbigiIikpfX0sZX0oKTshZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt2YXIgdD1lLm1hdGNoKC9eWyciXSguKilbIiddJC8pO3JldHVybiB0P3RbMV06ZX1lLmVuc3VyZT1mdW5jdGlvbihlLG4pe3JldHVybiBuK3QoZSkrbn0sZS5yZW1vdmU9dH0obmN8fChuYz17fSkpO3ZhciBjYz1mdW5jdGlvbigpe3RoaXMuaWQ9MCx0aGlzLmF0dHI9MCx0aGlzLnRhZz0wfTtmdW5jdGlvbiBoYyhlLHQpe2Zvcih2YXIgbj1uZXcgb2Mscj0wLGk9ZS5nZXRDaGlsZHJlbigpO3I8aS5sZW5ndGg7cisrKXt2YXIgbz1pW3JdO3N3aXRjaChvLnR5cGUpe2Nhc2UgWnIuU2VsZWN0b3JDb21iaW5hdG9yOmlmKHQpe3ZhciBzPW8uZ2V0VGV4dCgpLnNwbGl0KCImIik7aWYoMT09PXMubGVuZ3RoKXtuLmFkZEF0dHIoIm5hbWUiLHNbMF0pO2JyZWFrfWlmKG49dC5jbG9uZVdpdGhQYXJlbnQoKSxzWzBdKW4uZmluZFJvb3QoKS5wcmVwZW5kKHNbMF0pO2Zvcih2YXIgYT0xO2E8cy5sZW5ndGg7YSsrKXtpZihhPjEpe3ZhciBsPXQuY2xvbmVXaXRoUGFyZW50KCk7bi5hZGRDaGlsZChsLmZpbmRSb290KCkpLG49bH1uLmFwcGVuZChzW2FdKX19YnJlYWs7Y2FzZSBaci5TZWxlY3RvclBsYWNlaG9sZGVyOmlmKG8ubWF0Y2hlcygiQGF0LXJvb3QiKSlyZXR1cm4gbjtjYXNlIFpyLkVsZW1lbnROYW1lU2VsZWN0b3I6dmFyIGM9by5nZXRUZXh0KCk7bi5hZGRBdHRyKCJuYW1lIiwiKiI9PT1jPyJlbGVtZW50IjpkYyhjKSk7YnJlYWs7Y2FzZSBaci5DbGFzc1NlbGVjdG9yOm4uYWRkQXR0cigiY2xhc3MiLGRjKG8uZ2V0VGV4dCgpLnN1YnN0cmluZygxKSkpO2JyZWFrO2Nhc2UgWnIuSWRlbnRpZmllclNlbGVjdG9yOm4uYWRkQXR0cigiaWQiLGRjKG8uZ2V0VGV4dCgpLnN1YnN0cmluZygxKSkpO2JyZWFrO2Nhc2UgWnIuTWl4aW5EZWNsYXJhdGlvbjpuLmFkZEF0dHIoImNsYXNzIixvLmdldE5hbWUoKSk7YnJlYWs7Y2FzZSBaci5Qc2V1ZG9TZWxlY3RvcjpuLmFkZEF0dHIoZGMoby5nZXRUZXh0KCkpLCIiKTticmVhaztjYXNlIFpyLkF0dHJpYnV0ZVNlbGVjdG9yOnZhciBoPW8sZD1oLmdldElkZW50aWZpZXIoKTtpZihkKXt2YXIgcD1oLmdldFZhbHVlKCksdT1oLmdldE9wZXJhdG9yKCksbT12b2lkIDA7aWYocCYmdSlzd2l0Y2goZGModS5nZXRUZXh0KCkpKXtjYXNlInw9IjptPSIiLmNvbmNhdChuYy5yZW1vdmUoZGMocC5nZXRUZXh0KCkpKSwiLeKApiIpO2JyZWFrO2Nhc2UiXj0iOm09IiIuY29uY2F0KG5jLnJlbW92ZShkYyhwLmdldFRleHQoKSkpLCLigKYiKTticmVhaztjYXNlIiQ9IjptPSLigKYiLmNvbmNhdChuYy5yZW1vdmUoZGMocC5nZXRUZXh0KCkpKSk7YnJlYWs7Y2FzZSJ+PSI6bT0iIOKApiAiLmNvbmNhdChuYy5yZW1vdmUoZGMocC5nZXRUZXh0KCkpKSwiIOKApiAiKTticmVhaztjYXNlIio9IjptPSLigKYiLmNvbmNhdChuYy5yZW1vdmUoZGMocC5nZXRUZXh0KCkpKSwi4oCmIik7YnJlYWs7ZGVmYXVsdDptPW5jLnJlbW92ZShkYyhwLmdldFRleHQoKSkpfW4uYWRkQXR0cihkYyhkLmdldFRleHQoKSksbSl9fX1yZXR1cm4gbn1mdW5jdGlvbiBkYyhlKXt2YXIgdD1uZXcgJHI7dC5zZXRTb3VyY2UoZSk7dmFyIG49dC5zY2FuVW5xdW90ZWRTdHJpbmcoKTtyZXR1cm4gbj9uLnRleHQ6ZX12YXIgcGM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuY3NzRGF0YU1hbmFnZXI9ZX1yZXR1cm4gZS5wcm90b3R5cGUuc2VsZWN0b3JUb01hcmtlZFN0cmluZz1mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlKXtpZihlLm1hdGNoZXMoIkBhdC1yb290IikpcmV0dXJuIG51bGw7dmFyIHQ9bmV3IHNjLG49W10scj1lLmdldFBhcmVudCgpO2lmKHIgaW5zdGFuY2VvZiBwaSlmb3IodmFyIGk9ci5nZXRQYXJlbnQoKTtpJiYhbWMoaSk7KXtpZihpIGluc3RhbmNlb2YgcGkpe2lmKGkuZ2V0U2VsZWN0b3JzKCkubWF0Y2hlcygiQGF0LXJvb3QiKSlicmVhaztuLnB1c2goaSl9aT1pLmdldFBhcmVudCgpfWZvcih2YXIgbz1uZXcgdWModCkscz1uLmxlbmd0aC0xO3M+PTA7cy0tKXt2YXIgYT1uW3NdLmdldFNlbGVjdG9ycygpLmdldENoaWxkKDApO2EmJm8ucHJvY2Vzc1NlbGVjdG9yKGEpfXJldHVybiBvLnByb2Nlc3NTZWxlY3RvcihlKSx0fShlKTtpZih0KXt2YXIgbj1uZXcgbGMoJyInKS5wcmludCh0KTtyZXR1cm4gbi5wdXNoKHRoaXMuc2VsZWN0b3JUb1NwZWNpZmljaXR5TWFya2VkU3RyaW5nKGUpKSxufXJldHVybltdfSxlLnByb3RvdHlwZS5zaW1wbGVTZWxlY3RvclRvTWFya2VkU3RyaW5nPWZ1bmN0aW9uKGUpe3ZhciB0PWhjKGUpLG49bmV3IGxjKCciJykucHJpbnQodCk7cmV0dXJuIG4ucHVzaCh0aGlzLnNlbGVjdG9yVG9TcGVjaWZpY2l0eU1hcmtlZFN0cmluZyhlKSksbn0sZS5wcm90b3R5cGUuaXNQc2V1ZG9FbGVtZW50SWRlbnRpZmllcj1mdW5jdGlvbihlKXt2YXIgdD1lLm1hdGNoKC9eOjo/KFtcdy1dKykvKTtyZXR1cm4hIXQmJiEhdGhpcy5jc3NEYXRhTWFuYWdlci5nZXRQc2V1ZG9FbGVtZW50KCI6OiIrdFsxXSl9LGUucHJvdG90eXBlLnNlbGVjdG9yVG9TcGVjaWZpY2l0eU1hcmtlZFN0cmluZz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLG49ZnVuY3Rpb24oZSl7dmFyIHI9bmV3IGNjO2U6Zm9yKHZhciBpPTAsbz1lLmdldENoaWxkcmVuKCk7aTxvLmxlbmd0aDtpKyspe3ZhciBzPW9baV07c3dpdGNoKHMudHlwZSl7Y2FzZSBaci5JZGVudGlmaWVyU2VsZWN0b3I6ci5pZCsrO2JyZWFrO2Nhc2UgWnIuQ2xhc3NTZWxlY3RvcjpjYXNlIFpyLkF0dHJpYnV0ZVNlbGVjdG9yOnIuYXR0cisrO2JyZWFrO2Nhc2UgWnIuRWxlbWVudE5hbWVTZWxlY3RvcjppZihzLm1hdGNoZXMoIioiKSlicmVhaztyLnRhZysrO2JyZWFrO2Nhc2UgWnIuUHNldWRvU2VsZWN0b3I6dmFyIGE9cy5nZXRUZXh0KCk7aWYodC5pc1BzZXVkb0VsZW1lbnRJZGVudGlmaWVyKGEpKXtyLnRhZysrO2JyZWFrfWlmKGEubWF0Y2goL146d2hlcmUvaSkpY29udGludWUgZTtpZihhLm1hdGNoKC9eOihub3R8aGFzfGlzKS9pKSYmcy5nZXRDaGlsZHJlbigpLmxlbmd0aD4wKXtmb3IodmFyIGw9bmV3IGNjLGM9MCxoPXMuZ2V0Q2hpbGRyZW4oKTtjPGgubGVuZ3RoO2MrKyl7dmFyIGQ9aFtjXTtkLnR5cGU9PT1aci5VbmRlZmluZWQmJmQuZ2V0Q2hpbGRyZW4oKTtmb3IodmFyIHA9MCx1PWQuZ2V0Q2hpbGRyZW4oKTtwPHUubGVuZ3RoO3ArKyl7dmFyIG09dVtwXTsoZj1uKG0pKS5pZD5sLmlkP2w9ZjpmLmlkPGwuaWR8fChmLmF0dHI+bC5hdHRyP2w9ZjpmLmF0dHI8bC5hdHRyfHxmLnRhZz5sLnRhZyYmKGw9ZikpfX1yLmlkKz1sLmlkLHIuYXR0cis9bC5hdHRyLHIudGFnKz1sLnRhZztjb250aW51ZSBlfXIuYXR0cisrfWlmKHMuZ2V0Q2hpbGRyZW4oKS5sZW5ndGg+MCl7dmFyIGY9bihzKTtyLmlkKz1mLmlkLHIuYXR0cis9Zi5hdHRyLHIudGFnKz1mLnRhZ319cmV0dXJuIHJ9LHI9bihlKTtyZXR1cm4gaWMoInNwZWNpZmljaXR5IiwiW1NlbGVjdG9yIFNwZWNpZmljaXR5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvU3BlY2lmaWNpdHkpOiAoezB9LCB7MX0sIHsyfSkiLHIuaWQsci5hdHRyLHIudGFnKX0sZX0oKSx1Yz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5wcmV2PW51bGwsdGhpcy5lbGVtZW50PWV9cmV0dXJuIGUucHJvdG90eXBlLnByb2Nlc3NTZWxlY3Rvcj1mdW5jdGlvbihlKXt2YXIgdD1udWxsO2lmKCEodGhpcy5lbGVtZW50IGluc3RhbmNlb2Ygc2MpJiZlLmdldENoaWxkcmVuKCkuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaGFzQ2hpbGRyZW4oKSYmZS5nZXRDaGlsZCgwKS50eXBlPT09WnIuU2VsZWN0b3JDb21iaW5hdG9yfSkpKXt2YXIgbj10aGlzLmVsZW1lbnQuZmluZFJvb3QoKTtuLnBhcmVudCBpbnN0YW5jZW9mIHNjJiYodD10aGlzLmVsZW1lbnQsdGhpcy5lbGVtZW50PW4ucGFyZW50LHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZChuKSx0aGlzLnByZXY9bnVsbCl9Zm9yKHZhciByPTAsaT1lLmdldENoaWxkcmVuKCk7cjxpLmxlbmd0aDtyKyspe3ZhciBvPWlbcl07aWYobyBpbnN0YW5jZW9mIG1pKXtpZih0aGlzLnByZXYgaW5zdGFuY2VvZiBtaSl7dmFyIHM9bmV3IGFjKCLigKYiKTt0aGlzLmVsZW1lbnQuYWRkQ2hpbGQocyksdGhpcy5lbGVtZW50PXN9ZWxzZSB0aGlzLnByZXYmJih0aGlzLnByZXYubWF0Y2hlcygiKyIpfHx0aGlzLnByZXYubWF0Y2hlcygifiIpKSYmdGhpcy5lbGVtZW50LnBhcmVudCYmKHRoaXMuZWxlbWVudD10aGlzLmVsZW1lbnQucGFyZW50KTt0aGlzLnByZXYmJnRoaXMucHJldi5tYXRjaGVzKCJ+IikmJnRoaXMuZWxlbWVudC5hZGRDaGlsZChuZXcgYWMoIuKLriIpKTt2YXIgYT1oYyhvLHQpLGw9YS5maW5kUm9vdCgpO3RoaXMuZWxlbWVudC5hZGRDaGlsZChsKSx0aGlzLmVsZW1lbnQ9YX0obyBpbnN0YW5jZW9mIG1pfHxvLnR5cGU9PT1aci5TZWxlY3RvckNvbWJpbmF0b3JQYXJlbnR8fG8udHlwZT09PVpyLlNlbGVjdG9yQ29tYmluYXRvclNoYWRvd1BpZXJjaW5nRGVzY2VuZGFudHx8by50eXBlPT09WnIuU2VsZWN0b3JDb21iaW5hdG9yU2libGluZ3x8by50eXBlPT09WnIuU2VsZWN0b3JDb21iaW5hdG9yQWxsU2libGluZ3MpJiYodGhpcy5wcmV2PW8pfX0sZX0oKTtmdW5jdGlvbiBtYyhlKXtzd2l0Y2goZS50eXBlKXtjYXNlIFpyLk1peGluRGVjbGFyYXRpb246Y2FzZSBaci5TdHlsZXNoZWV0OnJldHVybiEwfXJldHVybiExfXZhciBmYz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt0aGlzLmNsaWVudENhcGFiaWxpdGllcz1lLHRoaXMuY3NzRGF0YU1hbmFnZXI9dCx0aGlzLnNlbGVjdG9yUHJpbnRpbmc9bmV3IHBjKHQpfXJldHVybiBlLnByb3RvdHlwZS5jb25maWd1cmU9ZnVuY3Rpb24oZSl7dGhpcy5kZWZhdWx0U2V0dGluZ3M9ZX0sZS5wcm90b3R5cGUuZG9Ib3Zlcj1mdW5jdGlvbihlLHQsbixyKXtmdW5jdGlvbiBpKHQpe3JldHVybiBBby5jcmVhdGUoZS5wb3NpdGlvbkF0KHQub2Zmc2V0KSxlLnBvc2l0aW9uQXQodC5lbmQpKX12b2lkIDA9PT1yJiYocj10aGlzLmRlZmF1bHRTZXR0aW5ncyk7Zm9yKHZhciBvPWlpKG4sZS5vZmZzZXRBdCh0KSkscz1udWxsLGE9MDthPG8ubGVuZ3RoO2ErKyl7dmFyIGw9b1thXTtpZihsIGluc3RhbmNlb2YgdWkpe3M9e2NvbnRlbnRzOnRoaXMuc2VsZWN0b3JQcmludGluZy5zZWxlY3RvclRvTWFya2VkU3RyaW5nKGwpLHJhbmdlOmkobCl9O2JyZWFrfWlmKGwgaW5zdGFuY2VvZiBtaSl7SHIobC5nZXRUZXh0KCksIkAiKXx8KHM9e2NvbnRlbnRzOnRoaXMuc2VsZWN0b3JQcmludGluZy5zaW1wbGVTZWxlY3RvclRvTWFya2VkU3RyaW5nKGwpLHJhbmdlOmkobCl9KTticmVha31pZihsIGluc3RhbmNlb2YgYmkpe3ZhciBjPWwuZ2V0RnVsbFByb3BlcnR5TmFtZSgpOyhkPXRoaXMuY3NzRGF0YU1hbmFnZXIuZ2V0UHJvcGVydHkoYykpJiYocz0ocD1XYShkLHRoaXMuZG9lc1N1cHBvcnRNYXJrZG93bigpLHIpKT97Y29udGVudHM6cCxyYW5nZTppKGwpfTpudWxsKX1lbHNlIGlmKGwgaW5zdGFuY2VvZiBibyl7dmFyIGg9bC5nZXRUZXh0KCk7KGQ9dGhpcy5jc3NEYXRhTWFuYWdlci5nZXRBdERpcmVjdGl2ZShoKSkmJihzPShwPVdhKGQsdGhpcy5kb2VzU3VwcG9ydE1hcmtkb3duKCkscikpP3tjb250ZW50czpwLHJhbmdlOmkobCl9Om51bGwpfWVsc2UgaWYobCBpbnN0YW5jZW9mIG9pJiZsLnR5cGU9PT1aci5Qc2V1ZG9TZWxlY3Rvcil7dmFyIGQscCx1PWwuZ2V0VGV4dCgpOyhkPSI6OiI9PT11LnNsaWNlKDAsMik/dGhpcy5jc3NEYXRhTWFuYWdlci5nZXRQc2V1ZG9FbGVtZW50KHUpOnRoaXMuY3NzRGF0YU1hbmFnZXIuZ2V0UHNldWRvQ2xhc3ModSkpJiYocz0ocD1XYShkLHRoaXMuZG9lc1N1cHBvcnRNYXJrZG93bigpLHIpKT97Y29udGVudHM6cCxyYW5nZTppKGwpfTpudWxsKX1lbHNlO31yZXR1cm4gcyYmKHMuY29udGVudHM9dGhpcy5jb252ZXJ0Q29udGVudHMocy5jb250ZW50cykpLHN9LGUucHJvdG90eXBlLmNvbnZlcnRDb250ZW50cz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5kb2VzU3VwcG9ydE1hcmtkb3duKCl8fCJzdHJpbmciPT10eXBlb2YgZT9lOiJraW5kImluIGU/e2tpbmQ6InBsYWludGV4dCIsdmFsdWU6ZS52YWx1ZX06QXJyYXkuaXNBcnJheShlKT9lLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP2U6ZS52YWx1ZX0pKTplLnZhbHVlfSxlLnByb3RvdHlwZS5kb2VzU3VwcG9ydE1hcmtkb3duPWZ1bmN0aW9uKCl7aWYoIWJsKHRoaXMuc3VwcG9ydHNNYXJrZG93bikpe2lmKCFibCh0aGlzLmNsaWVudENhcGFiaWxpdGllcykpcmV0dXJuIHRoaXMuc3VwcG9ydHNNYXJrZG93bj0hMCx0aGlzLnN1cHBvcnRzTWFya2Rvd247dmFyIGU9dGhpcy5jbGllbnRDYXBhYmlsaXRpZXMudGV4dERvY3VtZW50JiZ0aGlzLmNsaWVudENhcGFiaWxpdGllcy50ZXh0RG9jdW1lbnQuaG92ZXI7dGhpcy5zdXBwb3J0c01hcmtkb3duPWUmJmUuY29udGVudEZvcm1hdCYmQXJyYXkuaXNBcnJheShlLmNvbnRlbnRGb3JtYXQpJiYtMSE9PWUuY29udGVudEZvcm1hdC5pbmRleE9mKEFzLk1hcmtkb3duKX1yZXR1cm4gdGhpcy5zdXBwb3J0c01hcmtkb3dufSxlfSgpLGdjPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKChmdW5jdGlvbihpLG8pe2Z1bmN0aW9uIHMoZSl7dHJ5e2woci5uZXh0KGUpKX1jYXRjaChlKXtvKGUpfX1mdW5jdGlvbiBhKGUpe3RyeXtsKHIudGhyb3coZSkpfWNhdGNoKGUpe28oZSl9fWZ1bmN0aW9uIGwoZSl7dmFyIHQ7ZS5kb25lP2koZS52YWx1ZSk6KHQ9ZS52YWx1ZSx0IGluc3RhbmNlb2Ygbj90Om5ldyBuKChmdW5jdGlvbihlKXtlKHQpfSkpKS50aGVuKHMsYSl9bCgocj1yLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfSxiYz1mdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxvLHM9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmaVswXSl0aHJvdyBpWzFdO3JldHVybiBpWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIG89e25leHQ6YSgwKSx0aHJvdzphKDEpLHJldHVybjphKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYob1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxvO2Z1bmN0aW9uIGEobyl7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihvKXtpZihuKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO3M7KXRyeXtpZihuPTEsciYmKGk9MiZvWzBdP3IucmV0dXJuOm9bMF0/ci50aHJvd3x8KChpPXIucmV0dXJuKSYmaS5jYWxsKHIpLDApOnIubmV4dCkmJiEoaT1pLmNhbGwocixvWzFdKSkuZG9uZSlyZXR1cm4gaTtzd2l0Y2gocj0wLGkmJihvPVsyJm9bMF0saS52YWx1ZV0pLG9bMF0pe2Nhc2UgMDpjYXNlIDE6aT1vO2JyZWFrO2Nhc2UgNDpyZXR1cm4gcy5sYWJlbCsrLHt2YWx1ZTpvWzFdLGRvbmU6ITF9O2Nhc2UgNTpzLmxhYmVsKysscj1vWzFdLG89WzBdO2NvbnRpbnVlO2Nhc2UgNzpvPXMub3BzLnBvcCgpLHMudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoaT1zLnRyeXMsKGk9aS5sZW5ndGg+MCYmaVtpLmxlbmd0aC0xXSl8fDYhPT1vWzBdJiYyIT09b1swXSkpe3M9MDtjb250aW51ZX1pZigzPT09b1swXSYmKCFpfHxvWzFdPmlbMF0mJm9bMV08aVszXSkpe3MubGFiZWw9b1sxXTticmVha31pZig2PT09b1swXSYmcy5sYWJlbDxpWzFdKXtzLmxhYmVsPWlbMV0saT1vO2JyZWFrfWlmKGkmJnMubGFiZWw8aVsyXSl7cy5sYWJlbD1pWzJdLHMub3BzLnB1c2gobyk7YnJlYWt9aVsyXSYmcy5vcHMucG9wKCkscy50cnlzLnBvcCgpO2NvbnRpbnVlfW89dC5jYWxsKGUscyl9Y2F0Y2goZSl7bz1bNixlXSxyPTB9ZmluYWxseXtuPWk9MH1pZig1Jm9bMF0pdGhyb3cgb1sxXTtyZXR1cm57dmFsdWU6b1swXT9vWzFdOnZvaWQgMCxkb25lOiEwfX0oW28sYV0pfX19LHljPV9vKCksdmM9L15cdys6XC9cLy8sd2M9L15kYXRhOi8seGM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy5maWxlU3lzdGVtUHJvdmlkZXI9ZSx0aGlzLnJlc29sdmVNb2R1bGVSZWZlcmVuY2VzPXR9cmV0dXJuIGUucHJvdG90eXBlLmZpbmREZWZpbml0aW9uPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uZXcgUmwobiksaT1yaShuLGUub2Zmc2V0QXQodCkpO2lmKCFpKXJldHVybiBudWxsO3ZhciBvPXIuZmluZFN5bWJvbEZyb21Ob2RlKGkpO3JldHVybiBvP3t1cmk6ZS51cmkscmFuZ2U6U2Moby5ub2RlLGUpfTpudWxsfSxlLnByb3RvdHlwZS5maW5kUmVmZXJlbmNlcz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuZmluZERvY3VtZW50SGlnaGxpZ2h0cyhlLHQsbikubWFwKChmdW5jdGlvbih0KXtyZXR1cm57dXJpOmUudXJpLHJhbmdlOnQucmFuZ2V9fSkpfSxlLnByb3RvdHlwZS5maW5kRG9jdW1lbnRIaWdobGlnaHRzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1bXSxpPXJpKG4sZS5vZmZzZXRBdCh0KSk7aWYoIWl8fGkudHlwZT09PVpyLlN0eWxlc2hlZXR8fGkudHlwZT09PVpyLkRlY2xhcmF0aW9ucylyZXR1cm4gcjtpLnR5cGU9PT1aci5JZGVudGlmaWVyJiZpLnBhcmVudCYmaS5wYXJlbnQudHlwZT09PVpyLkNsYXNzU2VsZWN0b3ImJihpPWkucGFyZW50KTt2YXIgbz1uZXcgUmwobikscz1vLmZpbmRTeW1ib2xGcm9tTm9kZShpKSxhPWkuZ2V0VGV4dCgpO3JldHVybiBuLmFjY2VwdCgoZnVuY3Rpb24odCl7aWYocyl7aWYoby5tYXRjaGVzU3ltYm9sKHQscykpcmV0dXJuIHIucHVzaCh7a2luZDpDYyh0KSxyYW5nZTpTYyh0LGUpfSksITF9ZWxzZSBpJiZpLnR5cGU9PT10LnR5cGUmJnQubWF0Y2hlcyhhKSYmci5wdXNoKHtraW5kOkNjKHQpLHJhbmdlOlNjKHQsZSl9KTtyZXR1cm4hMH0pKSxyfSxlLnByb3RvdHlwZS5pc1Jhd1N0cmluZ0RvY3VtZW50TGlua05vZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHlwZT09PVpyLkltcG9ydH0sZS5wcm90b3R5cGUuZmluZERvY3VtZW50TGlua3M9ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1bXSxpPTAsbz10aGlzLmZpbmRVbnJlc29sdmVkTGlua3MoZSx0KTtpPG8ubGVuZ3RoO2krKyl7dmFyIHM9b1tpXS5saW5rLGE9cy50YXJnZXQ7aWYoIWF8fHdjLnRlc3QoYSkpO2Vsc2UgaWYodmMudGVzdChhKSlyLnB1c2gocyk7ZWxzZXt2YXIgbD1uLnJlc29sdmVSZWZlcmVuY2UoYSxlLnVyaSk7bCYmKHMudGFyZ2V0PWwpLHIucHVzaChzKX19cmV0dXJuIHJ9LGUucHJvdG90eXBlLmZpbmREb2N1bWVudExpbmtzMj1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGdjKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgcixpLG8scyxhLGwsYyxoO3JldHVybiBiYyh0aGlzLChmdW5jdGlvbihkKXtzd2l0Y2goZC5sYWJlbCl7Y2FzZSAwOnI9dGhpcy5maW5kVW5yZXNvbHZlZExpbmtzKGUsdCksaT1bXSxvPTAscz1yLGQubGFiZWw9MTtjYXNlIDE6cmV0dXJuIG88cy5sZW5ndGg/KGE9c1tvXSxsPWEubGluaywoYz1sLnRhcmdldCkmJiF3Yy50ZXN0KGMpP1szLDJdOlszLDVdKTpbMyw2XTtjYXNlIDI6cmV0dXJuIHZjLnRlc3QoYyk/KGkucHVzaChsKSxbMyw1XSk6WzMsM107Y2FzZSAzOnJldHVybls0LHRoaXMucmVzb2x2ZVJlbGF0aXZlUmVmZXJlbmNlKGMsZS51cmksbixhLmlzUmF3TGluayldO2Nhc2UgNDp2b2lkIDAhPT0oaD1kLnNlbnQoKSkmJihsLnRhcmdldD1oLGkucHVzaChsKSksZC5sYWJlbD01O2Nhc2UgNTpyZXR1cm4gbysrLFszLDFdO2Nhc2UgNjpyZXR1cm5bMixpXX19KSl9KSl9LGUucHJvdG90eXBlLmZpbmRVbnJlc29sdmVkTGlua3M9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLHI9W10saT1mdW5jdGlvbih0KXt2YXIgaT10LmdldFRleHQoKSxvPVNjKHQsZSk7aWYoby5zdGFydC5saW5lIT09by5lbmQubGluZXx8by5zdGFydC5jaGFyYWN0ZXIhPT1vLmVuZC5jaGFyYWN0ZXIpeyhIcihpLCInIil8fEhyKGksJyInKSkmJihpPWkuc2xpY2UoMSwtMSkpO3ZhciBzPSEhdC5wYXJlbnQmJm4uaXNSYXdTdHJpbmdEb2N1bWVudExpbmtOb2RlKHQucGFyZW50KTtyLnB1c2goe2xpbms6e3RhcmdldDppLHJhbmdlOm99LGlzUmF3TGluazpzfSl9fTtyZXR1cm4gdC5hY2NlcHQoKGZ1bmN0aW9uKGUpe2lmKGUudHlwZT09PVpyLlVSSUxpdGVyYWwpe3ZhciB0PWUuZ2V0Q2hpbGQoMCk7cmV0dXJuIHQmJmkodCksITF9aWYoZS5wYXJlbnQmJm4uaXNSYXdTdHJpbmdEb2N1bWVudExpbmtOb2RlKGUucGFyZW50KSl7dmFyIHI9ZS5nZXRUZXh0KCk7cmV0dXJuKEhyKHIsIiciKXx8SHIociwnIicpKSYmaShlKSwhMX1yZXR1cm4hMH0pKSxyfSxlLnByb3RvdHlwZS5maW5kRG9jdW1lbnRTeW1ib2xzPWZ1bmN0aW9uKGUsdCl7dmFyIG49W107cmV0dXJuIHQuYWNjZXB0KChmdW5jdGlvbih0KXt2YXIgcj17bmFtZTpudWxsLGtpbmQ6ZWEuQ2xhc3MsbG9jYXRpb246bnVsbH0saT10O2lmKHQgaW5zdGFuY2VvZiB1aSlyZXR1cm4gci5uYW1lPXQuZ2V0VGV4dCgpLChpPXQuZmluZEFQYXJlbnQoWnIuUnVsZXNldCxaci5FeHRlbmRzUmVmZXJlbmNlKSkmJihyLmxvY2F0aW9uPUlvLmNyZWF0ZShlLnVyaSxTYyhpLGUpKSxuLnB1c2gocikpLCExO2lmKHQgaW5zdGFuY2VvZiBsbylyLm5hbWU9dC5nZXROYW1lKCksci5raW5kPWVhLlZhcmlhYmxlO2Vsc2UgaWYodCBpbnN0YW5jZW9mIGdvKXIubmFtZT10LmdldE5hbWUoKSxyLmtpbmQ9ZWEuTWV0aG9kO2Vsc2UgaWYodCBpbnN0YW5jZW9mIFJpKXIubmFtZT10LmdldE5hbWUoKSxyLmtpbmQ9ZWEuRnVuY3Rpb247ZWxzZSBpZih0IGluc3RhbmNlb2YgQWkpci5uYW1lPXljKCJsaXRlcmFsLmtleWZyYW1lcyIsIkBrZXlmcmFtZXMgezB9Iix0LmdldE5hbWUoKSk7ZWxzZSBpZih0IGluc3RhbmNlb2YgTmkpci5uYW1lPXljKCJsaXRlcmFsLmZvbnRmYWNlIiwiQGZvbnQtZmFjZSIpO2Vsc2UgaWYodCBpbnN0YW5jZW9mIFZpKXt2YXIgbz10LmdldENoaWxkKDApO28gaW5zdGFuY2VvZiBCaSYmKHIubmFtZT0iQG1lZGlhICIrby5nZXRUZXh0KCksci5raW5kPWVhLk1vZHVsZSl9cmV0dXJuIHIubmFtZSYmKHIubG9jYXRpb249SW8uY3JlYXRlKGUudXJpLFNjKGksZSkpLG4ucHVzaChyKSksITB9KSksbn0sZS5wcm90b3R5cGUuZmluZERvY3VtZW50Q29sb3JzPWZ1bmN0aW9uKGUsdCl7dmFyIG49W107cmV0dXJuIHQuYWNjZXB0KChmdW5jdGlvbih0KXt2YXIgcj1mdW5jdGlvbihlLHQpe3ZhciBuPWVsKGUpO2lmKG4pe3JldHVybntjb2xvcjpuLHJhbmdlOlNjKGUsdCl9fXJldHVybiBudWxsfSh0LGUpO3JldHVybiByJiZuLnB1c2gociksITB9KSksbn0sZS5wcm90b3R5cGUuZ2V0Q29sb3JQcmVzZW50YXRpb25zPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG89W10scz1NYXRoLnJvdW5kKDI1NSpuLnJlZCksYT1NYXRoLnJvdW5kKDI1NSpuLmdyZWVuKSxsPU1hdGgucm91bmQoMjU1Km4uYmx1ZSk7aT0xPT09bi5hbHBoYT8icmdiKCIuY29uY2F0KHMsIiwgIikuY29uY2F0KGEsIiwgIikuY29uY2F0KGwsIikiKToicmdiYSgiLmNvbmNhdChzLCIsICIpLmNvbmNhdChhLCIsICIpLmNvbmNhdChsLCIsICIpLmNvbmNhdChuLmFscGhhLCIpIiksby5wdXNoKHtsYWJlbDppLHRleHRFZGl0Om9zLnJlcGxhY2UocixpKX0pLGk9MT09PW4uYWxwaGE/IiMiLmNvbmNhdChrYyhzKSkuY29uY2F0KGtjKGEpKS5jb25jYXQoa2MobCkpOiIjIi5jb25jYXQoa2MocykpLmNvbmNhdChrYyhhKSkuY29uY2F0KGtjKGwpKS5jb25jYXQoa2MoTWF0aC5yb3VuZCgyNTUqbi5hbHBoYSkpKSxvLnB1c2goe2xhYmVsOmksdGV4dEVkaXQ6b3MucmVwbGFjZShyLGkpfSk7dmFyIGM9UWEobik7aT0xPT09Yy5hPyJoc2woIi5jb25jYXQoYy5oLCIsICIpLmNvbmNhdChNYXRoLnJvdW5kKDEwMCpjLnMpLCIlLCAiKS5jb25jYXQoTWF0aC5yb3VuZCgxMDAqYy5sKSwiJSkiKToiaHNsYSgiLmNvbmNhdChjLmgsIiwgIikuY29uY2F0KE1hdGgucm91bmQoMTAwKmMucyksIiUsICIpLmNvbmNhdChNYXRoLnJvdW5kKDEwMCpjLmwpLCIlLCAiKS5jb25jYXQoYy5hLCIpIiksby5wdXNoKHtsYWJlbDppLHRleHRFZGl0Om9zLnJlcGxhY2UocixpKX0pO3ZhciBoPWZ1bmN0aW9uKGUpe3ZhciB0PVFhKGUpLG49TWF0aC5taW4oZS5yZWQsZS5ncmVlbixlLmJsdWUpLHI9MS1NYXRoLm1heChlLnJlZCxlLmdyZWVuLGUuYmx1ZSk7cmV0dXJue2g6dC5oLHc6bixiOnIsYTp0LmF9fShuKTtyZXR1cm4gaT0xPT09aC5hPyJod2IoIi5jb25jYXQoaC5oLCIgIikuY29uY2F0KE1hdGgucm91bmQoMTAwKmgudyksIiUgIikuY29uY2F0KE1hdGgucm91bmQoMTAwKmguYiksIiUpIik6Imh3YigiLmNvbmNhdChoLmgsIiAiKS5jb25jYXQoTWF0aC5yb3VuZCgxMDAqaC53KSwiJSAiKS5jb25jYXQoTWF0aC5yb3VuZCgxMDAqaC5iKSwiJSAvICIpLmNvbmNhdChoLmEsIikiKSxvLnB1c2goe2xhYmVsOmksdGV4dEVkaXQ6b3MucmVwbGFjZShyLGkpfSksb30sZS5wcm90b3R5cGUuZG9SZW5hbWU9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbz10aGlzLmZpbmREb2N1bWVudEhpZ2hsaWdodHMoZSx0LHIpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG9zLnJlcGxhY2UoZS5yYW5nZSxuKX0pKTtyZXR1cm57Y2hhbmdlczooaT17fSxpW2UudXJpXT1vLGkpfX0sZS5wcm90b3R5cGUucmVzb2x2ZU1vZHVsZVJlZmVyZW5jZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGdjKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgcixpLG8scyxhO3JldHVybiBiYyh0aGlzLChmdW5jdGlvbihsKXtzd2l0Y2gobC5sYWJlbCl7Y2FzZSAwOnJldHVybiBIcih0LCJmaWxlOi8vIik/KHI9ZnVuY3Rpb24oZSl7aWYoIkAiPT09ZVswXSlyZXR1cm4gZS5zdWJzdHJpbmcoMCxlLmluZGV4T2YoIi8iLGUuaW5kZXhPZigiLyIpKzEpKTtyZXR1cm4gZS5zdWJzdHJpbmcoMCxlLmluZGV4T2YoIi8iKSl9KGUpLGk9bi5yZXNvbHZlUmVmZXJlbmNlKCIvIix0KSxvPUFsKHQpLFs0LHRoaXMucmVzb2x2ZVBhdGhUb01vZHVsZShyLG8saSldKTpbMywyXTtjYXNlIDE6aWYocz1sLnNlbnQoKSlyZXR1cm4gYT1lLnN1YnN0cmluZyhyLmxlbmd0aCsxKSxbMix6bChzLGEpXTtsLmxhYmVsPTI7Y2FzZSAyOnJldHVyblsyLHZvaWQgMF19fSkpfSkpfSxlLnByb3RvdHlwZS5yZXNvbHZlUmVsYXRpdmVSZWZlcmVuY2U9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIGdjKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgcixpO3JldHVybiBiYyh0aGlzLChmdW5jdGlvbihvKXtzd2l0Y2goby5sYWJlbCl7Y2FzZSAwOnJldHVybiByPW4ucmVzb2x2ZVJlZmVyZW5jZShlLHQpLCJ+Ij09PWVbMF0mJiIvIiE9PWVbMV0mJnRoaXMuZmlsZVN5c3RlbVByb3ZpZGVyPyhlPWUuc3Vic3RyaW5nKDEpLFs0LHRoaXMucmVzb2x2ZU1vZHVsZVJlZmVyZW5jZShlLHQsbildKTpbMywyXTtjYXNlIDE6cmV0dXJuWzIsby5zZW50KCl8fHJdO2Nhc2UgMjpyZXR1cm4gdGhpcy5yZXNvbHZlTW9kdWxlUmVmZXJlbmNlcz8oaT1yKT9bNCx0aGlzLmZpbGVFeGlzdHMocildOlszLDRdOlszLDddO2Nhc2UgMzppPW8uc2VudCgpLG8ubGFiZWw9NDtjYXNlIDQ6cmV0dXJuIGk/WzIscl06WzMsNV07Y2FzZSA1OnJldHVybls0LHRoaXMucmVzb2x2ZU1vZHVsZVJlZmVyZW5jZShlLHQsbildO2Nhc2UgNjpyZXR1cm5bMixvLnNlbnQoKXx8cl07Y2FzZSA3OnJldHVyblsyLHJdfX0pKX0pKX0sZS5wcm90b3R5cGUucmVzb2x2ZVBhdGhUb01vZHVsZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGdjKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgcjtyZXR1cm4gYmModGhpcywoZnVuY3Rpb24oaSl7c3dpdGNoKGkubGFiZWwpe2Nhc2UgMDpyZXR1cm4gcj16bCh0LCJub2RlX21vZHVsZXMiLGUsInBhY2thZ2UuanNvbiIpLFs0LHRoaXMuZmlsZUV4aXN0cyhyKV07Y2FzZSAxOnJldHVybiBpLnNlbnQoKT9bMixBbChyKV06biYmdC5zdGFydHNXaXRoKG4pJiZ0Lmxlbmd0aCE9PW4ubGVuZ3RoP1syLHRoaXMucmVzb2x2ZVBhdGhUb01vZHVsZShlLEFsKHQpLG4pXTpbMix2b2lkIDBdfX0pKX0pKX0sZS5wcm90b3R5cGUuZmlsZUV4aXN0cz1mdW5jdGlvbihlKXtyZXR1cm4gZ2ModGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciB0O3JldHVybiBiYyh0aGlzLChmdW5jdGlvbihuKXtzd2l0Y2gobi5sYWJlbCl7Y2FzZSAwOmlmKCF0aGlzLmZpbGVTeXN0ZW1Qcm92aWRlcilyZXR1cm5bMiwhMV07bi5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gbi50cnlzLnB1c2goWzEsMywsNF0pLFs0LHRoaXMuZmlsZVN5c3RlbVByb3ZpZGVyLnN0YXQoZSldO2Nhc2UgMjpyZXR1cm4odD1uLnNlbnQoKSkudHlwZT09PU5hLlVua25vd24mJi0xPT09dC5zaXplP1syLCExXTpbMiwhMF07Y2FzZSAzOnJldHVybiBuLnNlbnQoKSxbMiwhMV07Y2FzZSA0OnJldHVyblsyXX19KSl9KSl9LGV9KCk7ZnVuY3Rpb24gU2MoZSx0KXtyZXR1cm4gQW8uY3JlYXRlKHQucG9zaXRpb25BdChlLm9mZnNldCksdC5wb3NpdGlvbkF0KGUuZW5kKSl9ZnVuY3Rpb24gQ2MoZSl7aWYoZS50eXBlPT09WnIuU2VsZWN0b3IpcmV0dXJuIFlzLldyaXRlO2lmKGUgaW5zdGFuY2VvZiBsaSYmZS5wYXJlbnQmJmUucGFyZW50IGluc3RhbmNlb2YgdmkmJmUuaXNDdXN0b21Qcm9wZXJ0eSlyZXR1cm4gWXMuV3JpdGU7aWYoZS5wYXJlbnQpc3dpdGNoKGUucGFyZW50LnR5cGUpe2Nhc2UgWnIuRnVuY3Rpb25EZWNsYXJhdGlvbjpjYXNlIFpyLk1peGluRGVjbGFyYXRpb246Y2FzZSBaci5LZXlmcmFtZTpjYXNlIFpyLlZhcmlhYmxlRGVjbGFyYXRpb246Y2FzZSBaci5GdW5jdGlvblBhcmFtZXRlcjpyZXR1cm4gWXMuV3JpdGV9cmV0dXJuIFlzLlJlYWR9ZnVuY3Rpb24ga2MoZSl7dmFyIHQ9ZS50b1N0cmluZygxNik7cmV0dXJuIDIhPT10Lmxlbmd0aD8iMCIrdDp0fXZhciBfYz1fbygpLEVjPWVvLldhcm5pbmcsRmM9ZW8uRXJyb3IsUmM9ZW8uSWdub3JlLERjPWZ1bmN0aW9uKGUsdCxuKXt0aGlzLmlkPWUsdGhpcy5tZXNzYWdlPXQsdGhpcy5kZWZhdWx0VmFsdWU9bn0sTmM9ZnVuY3Rpb24oZSx0LG4pe3RoaXMuaWQ9ZSx0aGlzLm1lc3NhZ2U9dCx0aGlzLmRlZmF1bHRWYWx1ZT1ufSxUYz17QWxsVmVuZG9yUHJlZml4ZXM6bmV3IERjKCJjb21wYXRpYmxlVmVuZG9yUHJlZml4ZXMiLF9jKCJydWxlLnZlbmRvcnByZWZpeGVzLmFsbCIsIldoZW4gdXNpbmcgYSB2ZW5kb3Itc3BlY2lmaWMgcHJlZml4IG1ha2Ugc3VyZSB0byBhbHNvIGluY2x1ZGUgYWxsIG90aGVyIHZlbmRvci1zcGVjaWZpYyBwcm9wZXJ0aWVzIiksUmMpLEluY2x1ZGVTdGFuZGFyZFByb3BlcnR5V2hlblVzaW5nVmVuZG9yUHJlZml4Om5ldyBEYygidmVuZG9yUHJlZml4IixfYygicnVsZS5zdGFuZGFyZHZlbmRvcnByZWZpeC5hbGwiLCJXaGVuIHVzaW5nIGEgdmVuZG9yLXNwZWNpZmljIHByZWZpeCBhbHNvIGluY2x1ZGUgdGhlIHN0YW5kYXJkIHByb3BlcnR5IiksRWMpLER1cGxpY2F0ZURlY2xhcmF0aW9uczpuZXcgRGMoImR1cGxpY2F0ZVByb3BlcnRpZXMiLF9jKCJydWxlLmR1cGxpY2F0ZURlY2xhcmF0aW9ucyIsIkRvIG5vdCB1c2UgZHVwbGljYXRlIHN0eWxlIGRlZmluaXRpb25zIiksUmMpLEVtcHR5UnVsZVNldDpuZXcgRGMoImVtcHR5UnVsZXMiLF9jKCJydWxlLmVtcHR5UnVsZVNldHMiLCJEbyBub3QgdXNlIGVtcHR5IHJ1bGVzZXRzIiksRWMpLEltcG9ydFN0YXRlbWVtZW50Om5ldyBEYygiaW1wb3J0U3RhdGVtZW50IixfYygicnVsZS5pbXBvcnREaXJlY3RpdmUiLCJJbXBvcnQgc3RhdGVtZW50cyBkbyBub3QgbG9hZCBpbiBwYXJhbGxlbCIpLFJjKSxCZXdhcmVPZkJveE1vZGVsU2l6ZTpuZXcgRGMoImJveE1vZGVsIixfYygicnVsZS5iZXdhcmVPZkJveE1vZGVsU2l6ZSIsIkRvIG5vdCB1c2Ugd2lkdGggb3IgaGVpZ2h0IHdoZW4gdXNpbmcgcGFkZGluZyBvciBib3JkZXIiKSxSYyksVW5pdmVyc2FsU2VsZWN0b3I6bmV3IERjKCJ1bml2ZXJzYWxTZWxlY3RvciIsX2MoInJ1bGUudW5pdmVyc2FsU2VsZWN0b3IiLCJUaGUgdW5pdmVyc2FsIHNlbGVjdG9yICgqKSBpcyBrbm93biB0byBiZSBzbG93IiksUmMpLFplcm9XaXRoVW5pdDpuZXcgRGMoInplcm9Vbml0cyIsX2MoInJ1bGUuemVyb1dpZHRoVW5pdCIsIk5vIHVuaXQgZm9yIHplcm8gbmVlZGVkIiksUmMpLFJlcXVpcmVkUHJvcGVydGllc0ZvckZvbnRGYWNlOm5ldyBEYygiZm9udEZhY2VQcm9wZXJ0aWVzIixfYygicnVsZS5mb250RmFjZVByb3BlcnRpZXMiLCJAZm9udC1mYWNlIHJ1bGUgbXVzdCBkZWZpbmUgJ3NyYycgYW5kICdmb250LWZhbWlseScgcHJvcGVydGllcyIpLEVjKSxIZXhDb2xvckxlbmd0aDpuZXcgRGMoImhleENvbG9yTGVuZ3RoIixfYygicnVsZS5oZXhDb2xvciIsIkhleCBjb2xvcnMgbXVzdCBjb25zaXN0IG9mIHRocmVlLCBmb3VyLCBzaXggb3IgZWlnaHQgaGV4IG51bWJlcnMiKSxGYyksQXJnc0luQ29sb3JGdW5jdGlvbjpuZXcgRGMoImFyZ3VtZW50c0luQ29sb3JGdW5jdGlvbiIsX2MoInJ1bGUuY29sb3JGdW5jdGlvbiIsIkludmFsaWQgbnVtYmVyIG9mIHBhcmFtZXRlcnMiKSxGYyksVW5rbm93blByb3BlcnR5Om5ldyBEYygidW5rbm93blByb3BlcnRpZXMiLF9jKCJydWxlLnVua25vd25Qcm9wZXJ0eSIsIlVua25vd24gcHJvcGVydHkuIiksRWMpLFVua25vd25BdFJ1bGVzOm5ldyBEYygidW5rbm93bkF0UnVsZXMiLF9jKCJydWxlLnVua25vd25BdFJ1bGVzIiwiVW5rbm93biBhdC1ydWxlLiIpLEVjKSxJRVN0YXJIYWNrOm5ldyBEYygiaWVIYWNrIixfYygicnVsZS5pZUhhY2siLCJJRSBoYWNrcyBhcmUgb25seSBuZWNlc3Nhcnkgd2hlbiBzdXBwb3J0aW5nIElFNyBhbmQgb2xkZXIiKSxSYyksVW5rbm93blZlbmRvclNwZWNpZmljUHJvcGVydHk6bmV3IERjKCJ1bmtub3duVmVuZG9yU3BlY2lmaWNQcm9wZXJ0aWVzIixfYygicnVsZS51bmtub3duVmVuZG9yU3BlY2lmaWNQcm9wZXJ0eSIsIlVua25vd24gdmVuZG9yIHNwZWNpZmljIHByb3BlcnR5LiIpLFJjKSxQcm9wZXJ0eUlnbm9yZWREdWVUb0Rpc3BsYXk6bmV3IERjKCJwcm9wZXJ0eUlnbm9yZWREdWVUb0Rpc3BsYXkiLF9jKCJydWxlLnByb3BlcnR5SWdub3JlZER1ZVRvRGlzcGxheSIsIlByb3BlcnR5IGlzIGlnbm9yZWQgZHVlIHRvIHRoZSBkaXNwbGF5LiIpLEVjKSxBdm9pZEltcG9ydGFudDpuZXcgRGMoImltcG9ydGFudCIsX2MoInJ1bGUuYXZvaWRJbXBvcnRhbnQiLCJBdm9pZCB1c2luZyAhaW1wb3J0YW50LiBJdCBpcyBhbiBpbmRpY2F0aW9uIHRoYXQgdGhlIHNwZWNpZmljaXR5IG9mIHRoZSBlbnRpcmUgQ1NTIGhhcyBnb3R0ZW4gb3V0IG9mIGNvbnRyb2wgYW5kIG5lZWRzIHRvIGJlIHJlZmFjdG9yZWQuIiksUmMpLEF2b2lkRmxvYXQ6bmV3IERjKCJmbG9hdCIsX2MoInJ1bGUuYXZvaWRGbG9hdCIsIkF2b2lkIHVzaW5nICdmbG9hdCcuIEZsb2F0cyBsZWFkIHRvIGZyYWdpbGUgQ1NTIHRoYXQgaXMgZWFzeSB0byBicmVhayBpZiBvbmUgYXNwZWN0IG9mIHRoZSBsYXlvdXQgY2hhbmdlcy4iKSxSYyksQXZvaWRJZFNlbGVjdG9yOm5ldyBEYygiaWRTZWxlY3RvciIsX2MoInJ1bGUuYXZvaWRJZFNlbGVjdG9yIiwiU2VsZWN0b3JzIHNob3VsZCBub3QgY29udGFpbiBJRHMgYmVjYXVzZSB0aGVzZSBydWxlcyBhcmUgdG9vIHRpZ2h0bHkgY291cGxlZCB3aXRoIHRoZSBIVE1MLiIpLFJjKX0sQWM9e1ZhbGlkUHJvcGVydGllczpuZXcgTmMoInZhbGlkUHJvcGVydGllcyIsX2MoInJ1bGUudmFsaWRQcm9wZXJ0aWVzIiwiQSBsaXN0IG9mIHByb3BlcnRpZXMgdGhhdCBhcmUgbm90IHZhbGlkYXRlZCBhZ2FpbnN0IHRoZSBgdW5rbm93blByb3BlcnRpZXNgIHJ1bGUuIiksW10pfSx6Yz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dm9pZCAwPT09ZSYmKGU9e30pLHRoaXMuY29uZj1lfXJldHVybiBlLnByb3RvdHlwZS5nZXRSdWxlPWZ1bmN0aW9uKGUpe2lmKHRoaXMuY29uZi5oYXNPd25Qcm9wZXJ0eShlLmlkKSl7dmFyIHQ9ZnVuY3Rpb24oZSl7c3dpdGNoKGUpe2Nhc2UiaWdub3JlIjpyZXR1cm4gZW8uSWdub3JlO2Nhc2Uid2FybmluZyI6cmV0dXJuIGVvLldhcm5pbmc7Y2FzZSJlcnJvciI6cmV0dXJuIGVvLkVycm9yfXJldHVybiBudWxsfSh0aGlzLmNvbmZbZS5pZF0pO2lmKHQpcmV0dXJuIHR9cmV0dXJuIGUuZGVmYXVsdFZhbHVlfSxlLnByb3RvdHlwZS5nZXRTZXR0aW5nPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNvbmZbZS5pZF19LGV9KCk7dmFyIEljPV9vKCksTWM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuY3NzRGF0YU1hbmFnZXI9ZX1yZXR1cm4gZS5wcm90b3R5cGUuZG9Db2RlQWN0aW9ucz1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gdGhpcy5kb0NvZGVBY3Rpb25zMihlLHQsbixyKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBuPXQuZWRpdCYmdC5lZGl0LmRvY3VtZW50Q2hhbmdlcyYmdC5lZGl0LmRvY3VtZW50Q2hhbmdlc1swXTtyZXR1cm4gcnMuY3JlYXRlKHQudGl0bGUsIl9jc3MuYXBwbHlDb2RlQWN0aW9uIixlLnVyaSxlLnZlcnNpb24sbiYmbi5lZGl0cyl9KSl9LGUucHJvdG90eXBlLmRvQ29kZUFjdGlvbnMyPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPVtdO2lmKG4uZGlhZ25vc3RpY3MpZm9yKHZhciBvPTAscz1uLmRpYWdub3N0aWNzO288cy5sZW5ndGg7bysrKXt2YXIgYT1zW29dO3RoaXMuYXBwZW5kRml4ZXNGb3JNYXJrZXIoZSxyLGEsaSl9cmV0dXJuIGl9LGUucHJvdG90eXBlLmdldEZpeGVzRm9yVW5rbm93blByb3BlcnR5PWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXQuZ2V0TmFtZSgpLG89W107dGhpcy5jc3NEYXRhTWFuYWdlci5nZXRQcm9wZXJ0aWVzKCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oZSx0LG4pe3ZvaWQgMD09PW4mJihuPTQpO3ZhciByPU1hdGguYWJzKGUubGVuZ3RoLXQubGVuZ3RoKTtpZihyPm4pcmV0dXJuIDA7dmFyIGksbyxzPVtdLGE9W107Zm9yKGk9MDtpPHQubGVuZ3RoKzE7KytpKWEucHVzaCgwKTtmb3IoaT0wO2k8ZS5sZW5ndGgrMTsrK2kpcy5wdXNoKGEpO2ZvcihpPTE7aTxlLmxlbmd0aCsxOysraSlmb3Iobz0xO288dC5sZW5ndGgrMTsrK28pZVtpLTFdPT09dFtvLTFdP3NbaV1bb109c1tpLTFdW28tMV0rMTpzW2ldW29dPU1hdGgubWF4KHNbaS0xXVtvXSxzW2ldW28tMV0pO3JldHVybiBzW2UubGVuZ3RoXVt0Lmxlbmd0aF0tTWF0aC5zcXJ0KHIpfShpLGUubmFtZSk7dD49aS5sZW5ndGgvMiYmby5wdXNoKHtwcm9wZXJ0eTplLm5hbWUsc2NvcmU6dH0pfSkpLG8uc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5zY29yZS1lLnNjb3JlfHxlLnByb3BlcnR5LmxvY2FsZUNvbXBhcmUodC5wcm9wZXJ0eSl9KSk7Zm9yKHZhciBzPTMsYT0wLGw9bzthPGwubGVuZ3RoO2ErKyl7dmFyIGM9bFthXS5wcm9wZXJ0eSxoPUljKCJjc3MuY29kZWFjdGlvbi5yZW5hbWUiLCJSZW5hbWUgdG8gJ3swfSciLGMpLGQ9b3MucmVwbGFjZShuLnJhbmdlLGMpLHA9RXMuY3JlYXRlKGUudXJpLGUudmVyc2lvbiksdT17ZG9jdW1lbnRDaGFuZ2VzOltwcy5jcmVhdGUocCxbZF0pXX0sbT1oYS5jcmVhdGUoaCx1LHNhLlF1aWNrRml4KTtpZihtLmRpYWdub3N0aWNzPVtuXSxyLnB1c2gobSksLS1zPD0wKXJldHVybn19LGUucHJvdG90eXBlLmFwcGVuZEZpeGVzRm9yTWFya2VyPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKG4uY29kZT09PVRjLlVua25vd25Qcm9wZXJ0eS5pZClmb3IodmFyIGk9ZS5vZmZzZXRBdChuLnJhbmdlLnN0YXJ0KSxvPWUub2Zmc2V0QXQobi5yYW5nZS5lbmQpLHM9aWkodCxpKSxhPXMubGVuZ3RoLTE7YT49MDthLS0pe3ZhciBsPXNbYV07aWYobCBpbnN0YW5jZW9mIGJpKXt2YXIgYz1sLmdldFByb3BlcnR5KCk7aWYoYyYmYy5vZmZzZXQ9PT1pJiZjLmVuZD09PW8pcmV0dXJuIHZvaWQgdGhpcy5nZXRGaXhlc0ZvclVua25vd25Qcm9wZXJ0eShlLGMsbixyKX19fSxlfSgpLFBjPWZ1bmN0aW9uKGUpe3RoaXMuZnVsbFByb3BlcnR5TmFtZT1lLmdldEZ1bGxQcm9wZXJ0eU5hbWUoKS50b0xvd2VyQ2FzZSgpLHRoaXMubm9kZT1lfTtmdW5jdGlvbiBPYyhlLHQsbixyKXt2YXIgaT1lW3RdO2kudmFsdWU9bixuJiYod2woaS5wcm9wZXJ0aWVzLHIpfHxpLnByb3BlcnRpZXMucHVzaChyKSl9ZnVuY3Rpb24gTGMoZSx0LG4scil7InRvcCI9PT10fHwicmlnaHQiPT09dHx8ImJvdHRvbSI9PT10fHwibGVmdCI9PT10P09jKGUsdCxuLHIpOmZ1bmN0aW9uKGUsdCxuKXtPYyhlLCJ0b3AiLHQsbiksT2MoZSwicmlnaHQiLHQsbiksT2MoZSwiYm90dG9tIix0LG4pLE9jKGUsImxlZnQiLHQsbil9KGUsbixyKX1mdW5jdGlvbiBXYyhlLHQsbil7c3dpdGNoKHQubGVuZ3RoKXtjYXNlIDE6TGMoZSx2b2lkIDAsdFswXSxuKTticmVhaztjYXNlIDI6TGMoZSwidG9wIix0WzBdLG4pLExjKGUsImJvdHRvbSIsdFswXSxuKSxMYyhlLCJyaWdodCIsdFsxXSxuKSxMYyhlLCJsZWZ0Iix0WzFdLG4pO2JyZWFrO2Nhc2UgMzpMYyhlLCJ0b3AiLHRbMF0sbiksTGMoZSwicmlnaHQiLHRbMV0sbiksTGMoZSwibGVmdCIsdFsxXSxuKSxMYyhlLCJib3R0b20iLHRbMl0sbik7YnJlYWs7Y2FzZSA0OkxjKGUsInRvcCIsdFswXSxuKSxMYyhlLCJyaWdodCIsdFsxXSxuKSxMYyhlLCJib3R0b20iLHRbMl0sbiksTGMoZSwibGVmdCIsdFszXSxuKX19ZnVuY3Rpb24gVmMoZSx0KXtmb3IodmFyIG49MCxyPXQ7bjxyLmxlbmd0aDtuKyspe3ZhciBpPXJbbl07aWYoZS5tYXRjaGVzKGkpKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIFVjKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSEwKSwoIXR8fCFWYyhlLFsiaW5pdGlhbCIsInVuc2V0Il0pKSYmMCE9PXBhcnNlRmxvYXQoZS5nZXRUZXh0KCkpfWZ1bmN0aW9uIEtjKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSEwKSxlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIFVjKGUsdCl9KSl9ZnVuY3Rpb24gQmMoZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9ITApLCFWYyhlLFsibm9uZSIsImhpZGRlbiJdKSYmKCF0fHwhVmMoZSxbImluaXRpYWwiLCJ1bnNldCJdKSl9ZnVuY3Rpb24gamMoZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9ITApLGUubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gQmMoZSx0KX0pKX1mdW5jdGlvbiBxYyhlKXt2YXIgdD1lLmdldENoaWxkcmVuKCk7aWYoMT09PXQubGVuZ3RoKXJldHVybiBVYyhpPXRbMF0pJiZCYyhpKTtmb3IodmFyIG49MCxyPXQ7bjxyLmxlbmd0aDtuKyspe3ZhciBpO2lmKCFVYyhpPXJbbl0sITEpfHwhQmMoaSwhMSkpcmV0dXJuITF9cmV0dXJuITB9dmFyICRjPV9vKCksSGM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dGhpcy5kYXRhPXt9fXJldHVybiBlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuZGF0YVtlXTtyfHwocj17bm9kZXM6W10sbmFtZXM6W119LHRoaXMuZGF0YVtlXT1yKSxyLm5hbWVzLnB1c2godCksbiYmci5ub2Rlcy5wdXNoKG4pfSxlfSgpLEdjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbil7dmFyIHI9dGhpczt0aGlzLmNzc0RhdGFNYW5hZ2VyPW4sdGhpcy53YXJuaW5ncz1bXSx0aGlzLnNldHRpbmdzPXQsdGhpcy5kb2N1bWVudFRleHQ9ZS5nZXRUZXh0KCksdGhpcy5rZXlmcmFtZXM9bmV3IEhjLHRoaXMudmFsaWRQcm9wZXJ0aWVzPXt9O3ZhciBpPXQuZ2V0U2V0dGluZyhBYy5WYWxpZFByb3BlcnRpZXMpO0FycmF5LmlzQXJyYXkoaSkmJmkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXt2YXIgdD1lLnRyaW0oKS50b0xvd2VyQ2FzZSgpO3QubGVuZ3RoJiYoci52YWxpZFByb3BlcnRpZXNbdF09ITApfX0pKX1yZXR1cm4gZS5lbnRyaWVzPWZ1bmN0aW9uKHQsbixyLGksbyl7dmFyIHM9bmV3IGUobixyLGkpO3JldHVybiB0LmFjY2VwdFZpc2l0b3Iocykscy5jb21wbGV0ZVZhbGlkYXRpb25zKCkscy5nZXRFbnRyaWVzKG8pfSxlLnByb3RvdHlwZS5pc1ZhbGlkUHJvcGVydHlEZWNsYXJhdGlvbj1mdW5jdGlvbihlKXt2YXIgdD1lLmZ1bGxQcm9wZXJ0eU5hbWU7cmV0dXJuIHRoaXMudmFsaWRQcm9wZXJ0aWVzW3RdfSxlLnByb3RvdHlwZS5mZXRjaD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1bXSxyPTAsaT1lO3I8aS5sZW5ndGg7cisrKXt2YXIgbz1pW3JdO28uZnVsbFByb3BlcnR5TmFtZT09PXQmJm4ucHVzaChvKX1yZXR1cm4gbn0sZS5wcm90b3R5cGUuZmV0Y2hXaXRoVmFsdWU9ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1bXSxpPTAsbz1lO2k8by5sZW5ndGg7aSsrKXt2YXIgcz1vW2ldO2lmKHMuZnVsbFByb3BlcnR5TmFtZT09PXQpe3ZhciBhPXMubm9kZS5nZXRWYWx1ZSgpO2EmJnRoaXMuZmluZFZhbHVlSW5FeHByZXNzaW9uKGEsbikmJnIucHVzaChzKX19cmV0dXJuIHJ9LGUucHJvdG90eXBlLmZpbmRWYWx1ZUluRXhwcmVzc2lvbj1mdW5jdGlvbihlLHQpe3ZhciBuPSExO3JldHVybiBlLmFjY2VwdCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUudHlwZT09PVpyLklkZW50aWZpZXImJmUubWF0Y2hlcyh0KSYmKG49ITApLCFufSkpLG59LGUucHJvdG90eXBlLmdldEVudHJpZXM9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPWVvLldhcm5pbmd8ZW8uRXJyb3IpLHRoaXMud2FybmluZ3MuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gMCE9KHQuZ2V0TGV2ZWwoKSZlKX0pKX0sZS5wcm90b3R5cGUuYWRkRW50cnk9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW5ldyBTbyhlLHQsdGhpcy5zZXR0aW5ncy5nZXRSdWxlKHQpLG4pO3RoaXMud2FybmluZ3MucHVzaChyKX0sZS5wcm90b3R5cGUuZ2V0TWlzc2luZ05hbWVzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPWUuc2xpY2UoMCkscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgaT1uLmluZGV4T2YodFtyXSk7LTEhPT1pJiYobltpXT1udWxsKX12YXIgbz1udWxsO2ZvcihyPTA7cjxuLmxlbmd0aDtyKyspe3ZhciBzPW5bcl07cyYmKG89bnVsbD09PW8/JGMoIm5hbWVsaXN0LnNpbmdsZSIsIid7MH0nIixzKTokYygibmFtZWxpc3QuY29uY2F0ZW5hdGVkIiwiezB9LCAnezF9JyIsbyxzKSl9cmV0dXJuIG99LGUucHJvdG90eXBlLnZpc2l0Tm9kZT1mdW5jdGlvbihlKXtzd2l0Y2goZS50eXBlKXtjYXNlIFpyLlVua25vd25BdFJ1bGU6cmV0dXJuIHRoaXMudmlzaXRVbmtub3duQXRSdWxlKGUpO2Nhc2UgWnIuS2V5ZnJhbWU6cmV0dXJuIHRoaXMudmlzaXRLZXlmcmFtZShlKTtjYXNlIFpyLkZvbnRGYWNlOnJldHVybiB0aGlzLnZpc2l0Rm9udEZhY2UoZSk7Y2FzZSBaci5SdWxlc2V0OnJldHVybiB0aGlzLnZpc2l0UnVsZVNldChlKTtjYXNlIFpyLlNpbXBsZVNlbGVjdG9yOnJldHVybiB0aGlzLnZpc2l0U2ltcGxlU2VsZWN0b3IoZSk7Y2FzZSBaci5GdW5jdGlvbjpyZXR1cm4gdGhpcy52aXNpdEZ1bmN0aW9uKGUpO2Nhc2UgWnIuTnVtZXJpY1ZhbHVlOnJldHVybiB0aGlzLnZpc2l0TnVtZXJpY1ZhbHVlKGUpO2Nhc2UgWnIuSW1wb3J0OnJldHVybiB0aGlzLnZpc2l0SW1wb3J0KGUpO2Nhc2UgWnIuSGV4Q29sb3JWYWx1ZTpyZXR1cm4gdGhpcy52aXNpdEhleENvbG9yVmFsdWUoZSk7Y2FzZSBaci5QcmlvOnJldHVybiB0aGlzLnZpc2l0UHJpbyhlKTtjYXNlIFpyLklkZW50aWZpZXJTZWxlY3RvcjpyZXR1cm4gdGhpcy52aXNpdElkZW50aWZpZXJTZWxlY3RvcihlKX1yZXR1cm4hMH0sZS5wcm90b3R5cGUuY29tcGxldGVWYWxpZGF0aW9ucz1mdW5jdGlvbigpe3RoaXMudmFsaWRhdGVLZXlmcmFtZXMoKX0sZS5wcm90b3R5cGUudmlzaXRVbmtub3duQXRSdWxlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0Q2hpbGQoMCk7cmV0dXJuISF0JiYoIXRoaXMuY3NzRGF0YU1hbmFnZXIuZ2V0QXREaXJlY3RpdmUodC5nZXRUZXh0KCkpJiYodGhpcy5hZGRFbnRyeSh0LFRjLlVua25vd25BdFJ1bGVzLCJVbmtub3duIGF0IHJ1bGUgIi5jb25jYXQodC5nZXRUZXh0KCkpKSwhMCkpfSxlLnByb3RvdHlwZS52aXNpdEtleWZyYW1lPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0S2V5d29yZCgpO2lmKCF0KXJldHVybiExO3ZhciBuPXQuZ2V0VGV4dCgpO3JldHVybiB0aGlzLmtleWZyYW1lcy5hZGQoZS5nZXROYW1lKCksbiwiQGtleWZyYW1lcyIhPT1uP3Q6bnVsbCksITB9LGUucHJvdG90eXBlLnZhbGlkYXRlS2V5ZnJhbWVzPWZ1bmN0aW9uKCl7dmFyIGU9WyJALXdlYmtpdC1rZXlmcmFtZXMiLCJALW1vei1rZXlmcmFtZXMiLCJALW8ta2V5ZnJhbWVzIl07Zm9yKHZhciB0IGluIHRoaXMua2V5ZnJhbWVzLmRhdGEpe3ZhciBuPXRoaXMua2V5ZnJhbWVzLmRhdGFbdF0ubmFtZXMscj0tMT09PW4uaW5kZXhPZigiQGtleWZyYW1lcyIpO2lmKHJ8fDEhPT1uLmxlbmd0aCl7dmFyIGk9dGhpcy5nZXRNaXNzaW5nTmFtZXMoZSxuKTtpZihpfHxyKWZvcih2YXIgbz0wLHM9dGhpcy5rZXlmcmFtZXMuZGF0YVt0XS5ub2RlcztvPHMubGVuZ3RoO28rKyl7dmFyIGE9c1tvXTtpZihyKXt2YXIgbD0kYygia2V5ZnJhbWVzLnN0YW5kYXJkcnVsZS5taXNzaW5nIiwiQWx3YXlzIGRlZmluZSBzdGFuZGFyZCBydWxlICdAa2V5ZnJhbWVzJyB3aGVuIGRlZmluaW5nIGtleWZyYW1lcy4iKTt0aGlzLmFkZEVudHJ5KGEsVGMuSW5jbHVkZVN0YW5kYXJkUHJvcGVydHlXaGVuVXNpbmdWZW5kb3JQcmVmaXgsbCl9aWYoaSl7bD0kYygia2V5ZnJhbWVzLnZlbmRvcnNwZWNpZmljLm1pc3NpbmciLCJBbHdheXMgaW5jbHVkZSBhbGwgdmVuZG9yIHNwZWNpZmljIHJ1bGVzOiBNaXNzaW5nOiB7MH0iLGkpO3RoaXMuYWRkRW50cnkoYSxUYy5BbGxWZW5kb3JQcmVmaXhlcyxsKX19fX1yZXR1cm4hMH0sZS5wcm90b3R5cGUudmlzaXRTaW1wbGVTZWxlY3Rvcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmRvY3VtZW50VGV4dC5jaGFyQXQoZS5vZmZzZXQpO3JldHVybiAxPT09ZS5sZW5ndGgmJiIqIj09PXQmJnRoaXMuYWRkRW50cnkoZSxUYy5Vbml2ZXJzYWxTZWxlY3RvciksITB9LGUucHJvdG90eXBlLnZpc2l0SWRlbnRpZmllclNlbGVjdG9yPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmFkZEVudHJ5KGUsVGMuQXZvaWRJZFNlbGVjdG9yKSwhMH0sZS5wcm90b3R5cGUudmlzaXRJbXBvcnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYWRkRW50cnkoZSxUYy5JbXBvcnRTdGF0ZW1lbWVudCksITB9LGUucHJvdG90eXBlLnZpc2l0UnVsZVNldD1mdW5jdGlvbih0KXt2YXIgbj10LmdldERlY2xhcmF0aW9ucygpO2lmKCFuKXJldHVybiExO24uaGFzQ2hpbGRyZW4oKXx8dGhpcy5hZGRFbnRyeSh0LmdldFNlbGVjdG9ycygpLFRjLkVtcHR5UnVsZVNldCk7Zm9yKHZhciByPVtdLGk9MCxvPW4uZ2V0Q2hpbGRyZW4oKTtpPG8ubGVuZ3RoO2krKyl7KHk9b1tpXSlpbnN0YW5jZW9mIGJpJiZyLnB1c2gobmV3IFBjKHkpKX12YXIgcz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9e3RvcDp7dmFsdWU6ITEscHJvcGVydGllczpbXX0scmlnaHQ6e3ZhbHVlOiExLHByb3BlcnRpZXM6W119LGJvdHRvbTp7dmFsdWU6ITEscHJvcGVydGllczpbXX0sbGVmdDp7dmFsdWU6ITEscHJvcGVydGllczpbXX19LG49MCxyPWU7bjxyLmxlbmd0aDtuKyspe3ZhciBpPXJbbl0sbz1pLm5vZGUudmFsdWU7aWYodm9pZCAwIT09bylzd2l0Y2goaS5mdWxsUHJvcGVydHlOYW1lKXtjYXNlImJveC1zaXppbmciOnJldHVybnt0b3A6e3ZhbHVlOiExLHByb3BlcnRpZXM6W119LHJpZ2h0Ont2YWx1ZTohMSxwcm9wZXJ0aWVzOltdfSxib3R0b206e3ZhbHVlOiExLHByb3BlcnRpZXM6W119LGxlZnQ6e3ZhbHVlOiExLHByb3BlcnRpZXM6W119fTtjYXNlIndpZHRoIjp0LndpZHRoPWk7YnJlYWs7Y2FzZSJoZWlnaHQiOnQuaGVpZ2h0PWk7YnJlYWs7ZGVmYXVsdDp2YXIgcz1pLmZ1bGxQcm9wZXJ0eU5hbWUuc3BsaXQoIi0iKTtzd2l0Y2goc1swXSl7Y2FzZSJib3JkZXIiOnN3aXRjaChzWzFdKXtjYXNlIHZvaWQgMDpjYXNlInRvcCI6Y2FzZSJyaWdodCI6Y2FzZSJib3R0b20iOmNhc2UibGVmdCI6c3dpdGNoKHNbMl0pe2Nhc2Ugdm9pZCAwOkxjKHQsc1sxXSxxYyhvKSxpKTticmVhaztjYXNlIndpZHRoIjpMYyh0LHNbMV0sVWMobywhMSksaSk7YnJlYWs7Y2FzZSJzdHlsZSI6TGModCxzWzFdLEJjKG8sITApLGkpfWJyZWFrO2Nhc2Uid2lkdGgiOldjKHQsS2Moby5nZXRDaGlsZHJlbigpLCExKSxpKTticmVhaztjYXNlInN0eWxlIjpXYyh0LGpjKG8uZ2V0Q2hpbGRyZW4oKSwhMCksaSl9YnJlYWs7Y2FzZSJwYWRkaW5nIjoxPT09cy5sZW5ndGg/V2ModCxLYyhvLmdldENoaWxkcmVuKCksITApLGkpOkxjKHQsc1sxXSxVYyhvLCEwKSxpKX19fXJldHVybiB0fShyKTtpZihzLndpZHRoKXt2YXIgYT1bXTtpZihzLnJpZ2h0LnZhbHVlJiYoYT14bChhLHMucmlnaHQucHJvcGVydGllcykpLHMubGVmdC52YWx1ZSYmKGE9eGwoYSxzLmxlZnQucHJvcGVydGllcykpLDAhPT1hLmxlbmd0aCl7Zm9yKHZhciBsPTAsYz1hO2w8Yy5sZW5ndGg7bCsrKXt2YXIgaD1jW2xdO3RoaXMuYWRkRW50cnkoaC5ub2RlLFRjLkJld2FyZU9mQm94TW9kZWxTaXplKX10aGlzLmFkZEVudHJ5KHMud2lkdGgubm9kZSxUYy5CZXdhcmVPZkJveE1vZGVsU2l6ZSl9fWlmKHMuaGVpZ2h0KXthPVtdO2lmKHMudG9wLnZhbHVlJiYoYT14bChhLHMudG9wLnByb3BlcnRpZXMpKSxzLmJvdHRvbS52YWx1ZSYmKGE9eGwoYSxzLmJvdHRvbS5wcm9wZXJ0aWVzKSksMCE9PWEubGVuZ3RoKXtmb3IodmFyIGQ9MCxwPWE7ZDxwLmxlbmd0aDtkKyspe2g9cFtkXTt0aGlzLmFkZEVudHJ5KGgubm9kZSxUYy5CZXdhcmVPZkJveE1vZGVsU2l6ZSl9dGhpcy5hZGRFbnRyeShzLmhlaWdodC5ub2RlLFRjLkJld2FyZU9mQm94TW9kZWxTaXplKX19dmFyIHU9dGhpcy5mZXRjaFdpdGhWYWx1ZShyLCJkaXNwbGF5IiwiaW5saW5lLWJsb2NrIik7aWYodS5sZW5ndGg+MClmb3IodmFyIG09dGhpcy5mZXRjaChyLCJmbG9hdCIpLGY9MDtmPG0ubGVuZ3RoO2YrKyl7dmFyIGc9bVtmXS5ub2RlOyh3PWcuZ2V0VmFsdWUoKSkmJiF3Lm1hdGNoZXMoIm5vbmUiKSYmdGhpcy5hZGRFbnRyeShnLFRjLlByb3BlcnR5SWdub3JlZER1ZVRvRGlzcGxheSwkYygicnVsZS5wcm9wZXJ0eUlnbm9yZWREdWVUb0Rpc3BsYXlJbmxpbmVCbG9jayIsImlubGluZS1ibG9jayBpcyBpZ25vcmVkIGR1ZSB0byB0aGUgZmxvYXQuIElmICdmbG9hdCcgaGFzIGEgdmFsdWUgb3RoZXIgdGhhbiAnbm9uZScsIHRoZSBib3ggaXMgZmxvYXRlZCBhbmQgJ2Rpc3BsYXknIGlzIHRyZWF0ZWQgYXMgJ2Jsb2NrJyIpKX1pZigodT10aGlzLmZldGNoV2l0aFZhbHVlKHIsImRpc3BsYXkiLCJibG9jayIpKS5sZW5ndGg+MClmb3IobT10aGlzLmZldGNoKHIsInZlcnRpY2FsLWFsaWduIiksZj0wO2Y8bS5sZW5ndGg7ZisrKXRoaXMuYWRkRW50cnkobVtmXS5ub2RlLFRjLlByb3BlcnR5SWdub3JlZER1ZVRvRGlzcGxheSwkYygicnVsZS5wcm9wZXJ0eUlnbm9yZWREdWVUb0Rpc3BsYXlCbG9jayIsIlByb3BlcnR5IGlzIGlnbm9yZWQgZHVlIHRvIHRoZSBkaXNwbGF5LiBXaXRoICdkaXNwbGF5OiBibG9jaycsIHZlcnRpY2FsLWFsaWduIHNob3VsZCBub3QgYmUgdXNlZC4iKSk7dmFyIGI9dGhpcy5mZXRjaChyLCJmbG9hdCIpO2ZvcihmPTA7ZjxiLmxlbmd0aDtmKyspe3ZhciB5PWJbZl07dGhpcy5pc1ZhbGlkUHJvcGVydHlEZWNsYXJhdGlvbih5KXx8dGhpcy5hZGRFbnRyeSh5Lm5vZGUsVGMuQXZvaWRGbG9hdCl9Zm9yKHZhciB2PTA7djxyLmxlbmd0aDt2Kyspe3ZhciB3O2lmKCJiYWNrZ3JvdW5kIiE9PSh5PXJbdl0pLmZ1bGxQcm9wZXJ0eU5hbWUmJiF0aGlzLnZhbGlkUHJvcGVydGllc1t5LmZ1bGxQcm9wZXJ0eU5hbWVdKWlmKCh3PXkubm9kZS5nZXRWYWx1ZSgpKSYmIi0iIT09dGhpcy5kb2N1bWVudFRleHQuY2hhckF0KHcub2Zmc2V0KSl7dmFyIHg9dGhpcy5mZXRjaChyLHkuZnVsbFByb3BlcnR5TmFtZSk7aWYoeC5sZW5ndGg+MSlmb3IodmFyIFM9MDtTPHgubGVuZ3RoO1MrKyl7dmFyIEM9eFtTXS5ub2RlLmdldFZhbHVlKCk7QyYmIi0iIT09dGhpcy5kb2N1bWVudFRleHQuY2hhckF0KEMub2Zmc2V0KSYmeFtTXSE9PXkmJnRoaXMuYWRkRW50cnkoeS5ub2RlLFRjLkR1cGxpY2F0ZURlY2xhcmF0aW9ucyl9fX1pZighdC5nZXRTZWxlY3RvcnMoKS5tYXRjaGVzKCI6ZXhwb3J0Iikpe2Zvcih2YXIgaz1uZXcgSGMsXz0hMSxFPTAsRj1yO0U8Ri5sZW5ndGg7RSsrKXt2YXIgUj0oeT1GW0VdKS5ub2RlO2lmKHRoaXMuaXNDU1NEZWNsYXJhdGlvbihSKSl7dmFyIEQ9eS5mdWxsUHJvcGVydHlOYW1lLE49RC5jaGFyQXQoMCk7aWYoIi0iPT09Til7aWYoIi0iIT09RC5jaGFyQXQoMSkpe3RoaXMuY3NzRGF0YU1hbmFnZXIuaXNLbm93blByb3BlcnR5KEQpfHx0aGlzLnZhbGlkUHJvcGVydGllc1tEXXx8dGhpcy5hZGRFbnRyeShSLmdldFByb3BlcnR5KCksVGMuVW5rbm93blZlbmRvclNwZWNpZmljUHJvcGVydHkpO3ZhciBUPVIuZ2V0Tm9uUHJlZml4ZWRQcm9wZXJ0eU5hbWUoKTtrLmFkZChULEQsUi5nZXRQcm9wZXJ0eSgpKX19ZWxzZXt2YXIgQT1EOyIqIiE9PU4mJiJfIiE9PU58fCh0aGlzLmFkZEVudHJ5KFIuZ2V0UHJvcGVydHkoKSxUYy5JRVN0YXJIYWNrKSxEPUQuc3Vic3RyKDEpKSx0aGlzLmNzc0RhdGFNYW5hZ2VyLmlzS25vd25Qcm9wZXJ0eShBKXx8dGhpcy5jc3NEYXRhTWFuYWdlci5pc0tub3duUHJvcGVydHkoRCl8fHRoaXMudmFsaWRQcm9wZXJ0aWVzW0RdfHx0aGlzLmFkZEVudHJ5KFIuZ2V0UHJvcGVydHkoKSxUYy5Vbmtub3duUHJvcGVydHksJGMoInByb3BlcnR5LnVua25vd25wcm9wZXJ0eS5kZXRhaWxlZCIsIlVua25vd24gcHJvcGVydHk6ICd7MH0nIixSLmdldEZ1bGxQcm9wZXJ0eU5hbWUoKSkpLGsuYWRkKEQsRCxudWxsKX19ZWxzZSBfPSEwfWlmKCFfKWZvcih2YXIgeiBpbiBrLmRhdGEpe3ZhciBJPWsuZGF0YVt6XSxNPUkubmFtZXMsUD10aGlzLmNzc0RhdGFNYW5hZ2VyLmlzU3RhbmRhcmRQcm9wZXJ0eSh6KSYmLTE9PT1NLmluZGV4T2Yoeik7aWYoUHx8MSE9PU0ubGVuZ3RoKXtmb3IodmFyIE89W10sTD0odj0wLGUucHJlZml4ZXMubGVuZ3RoKTt2PEw7disrKXt2YXIgVz1lLnByZWZpeGVzW3ZdO3RoaXMuY3NzRGF0YU1hbmFnZXIuaXNTdGFuZGFyZFByb3BlcnR5KFcreikmJk8ucHVzaChXK3opfXZhciBWPXRoaXMuZ2V0TWlzc2luZ05hbWVzKE8sTSk7aWYoVnx8UClmb3IodmFyIFU9MCxLPUkubm9kZXM7VTxLLmxlbmd0aDtVKyspe3ZhciBCPUtbVV07aWYoUCl7dmFyIGo9JGMoInByb3BlcnR5LnN0YW5kYXJkLm1pc3NpbmciLCJBbHNvIGRlZmluZSB0aGUgc3RhbmRhcmQgcHJvcGVydHkgJ3swfScgZm9yIGNvbXBhdGliaWxpdHkiLHopO3RoaXMuYWRkRW50cnkoQixUYy5JbmNsdWRlU3RhbmRhcmRQcm9wZXJ0eVdoZW5Vc2luZ1ZlbmRvclByZWZpeCxqKX1pZihWKXtqPSRjKCJwcm9wZXJ0eS52ZW5kb3JzcGVjaWZpYy5taXNzaW5nIiwiQWx3YXlzIGluY2x1ZGUgYWxsIHZlbmRvciBzcGVjaWZpYyBwcm9wZXJ0aWVzOiBNaXNzaW5nOiB7MH0iLFYpO3RoaXMuYWRkRW50cnkoQixUYy5BbGxWZW5kb3JQcmVmaXhlcyxqKX19fX19cmV0dXJuITB9LGUucHJvdG90eXBlLnZpc2l0UHJpbz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hZGRFbnRyeShlLFRjLkF2b2lkSW1wb3J0YW50KSwhMH0sZS5wcm90b3R5cGUudmlzaXROdW1lcmljVmFsdWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5maW5kUGFyZW50KFpyLkZ1bmN0aW9uKTtpZih0JiYiY2FsYyI9PT10LmdldE5hbWUoKSlyZXR1cm4hMDt2YXIgbj1lLmZpbmRQYXJlbnQoWnIuRGVjbGFyYXRpb24pO2lmKG4mJm4uZ2V0VmFsdWUoKSl7dmFyIHI9ZS5nZXRWYWx1ZSgpO2lmKCFyLnVuaXR8fC0xPT09cGwubGVuZ3RoLmluZGV4T2Yoci51bml0LnRvTG93ZXJDYXNlKCkpKXJldHVybiEwOzA9PT1wYXJzZUZsb2F0KHIudmFsdWUpJiZyLnVuaXQmJiF0aGlzLnZhbGlkUHJvcGVydGllc1tuLmdldEZ1bGxQcm9wZXJ0eU5hbWUoKV0mJnRoaXMuYWRkRW50cnkoZSxUYy5aZXJvV2l0aFVuaXQpfXJldHVybiEwfSxlLnByb3RvdHlwZS52aXNpdEZvbnRGYWNlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0RGVjbGFyYXRpb25zKCk7aWYoIXQpcmV0dXJuITE7Zm9yKHZhciBuPSExLHI9ITEsaT0hMSxvPTAscz10LmdldENoaWxkcmVuKCk7bzxzLmxlbmd0aDtvKyspe3ZhciBhPXNbb107aWYodGhpcy5pc0NTU0RlY2xhcmF0aW9uKGEpKXt2YXIgbD1hLmdldFByb3BlcnR5KCkuZ2V0TmFtZSgpLnRvTG93ZXJDYXNlKCk7InNyYyI9PT1sJiYobj0hMCksImZvbnQtZmFtaWx5Ij09PWwmJihyPSEwKX1lbHNlIGk9ITB9cmV0dXJuIGl8fG4mJnJ8fHRoaXMuYWRkRW50cnkoZSxUYy5SZXF1aXJlZFByb3BlcnRpZXNGb3JGb250RmFjZSksITB9LGUucHJvdG90eXBlLmlzQ1NTRGVjbGFyYXRpb249ZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIGJpKXtpZighZS5nZXRWYWx1ZSgpKXJldHVybiExO3ZhciB0PWUuZ2V0UHJvcGVydHkoKTtpZighdClyZXR1cm4hMTt2YXIgbj10LmdldElkZW50aWZpZXIoKTtyZXR1cm4hKCFufHxuLmNvbnRhaW5zSW50ZXJwb2xhdGlvbigpKX1yZXR1cm4hMX0sZS5wcm90b3R5cGUudmlzaXRIZXhDb2xvclZhbHVlPWZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoO3JldHVybiA5IT09dCYmNyE9PXQmJjUhPT10JiY0IT09dCYmdGhpcy5hZGRFbnRyeShlLFRjLkhleENvbG9yTGVuZ3RoKSwhMX0sZS5wcm90b3R5cGUudmlzaXRGdW5jdGlvbj1mdW5jdGlvbihlKXt2YXIgdD1lLmdldE5hbWUoKS50b0xvd2VyQ2FzZSgpLG49LTEscj0wO3N3aXRjaCh0KXtjYXNlInJnYigiOmNhc2UiaHNsKCI6bj0zO2JyZWFrO2Nhc2UicmdiYSgiOmNhc2UiaHNsYSgiOm49NH1yZXR1cm4tMSE9PW4mJihlLmdldEFyZ3VtZW50cygpLmFjY2VwdCgoZnVuY3Rpb24oZSl7cmV0dXJuIShlIGluc3RhbmNlb2YgWWkpfHwocis9MSwhMSl9KSksciE9PW4mJnRoaXMuYWRkRW50cnkoZSxUYy5BcmdzSW5Db2xvckZ1bmN0aW9uKSksITB9LGUucHJlZml4ZXM9WyItbXMtIiwiLW1vei0iLCItby0iLCItd2Via2l0LSJdLGV9KCksSmM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuY3NzRGF0YU1hbmFnZXI9ZX1yZXR1cm4gZS5wcm90b3R5cGUuY29uZmlndXJlPWZ1bmN0aW9uKGUpe3RoaXMuc2V0dGluZ3M9ZX0sZS5wcm90b3R5cGUuZG9WYWxpZGF0aW9uPWZ1bmN0aW9uKGUsdCxuKXtpZih2b2lkIDA9PT1uJiYobj10aGlzLnNldHRpbmdzKSxuJiYhMT09PW4udmFsaWRhdGUpcmV0dXJuW107dmFyIHI9W107ci5wdXNoLmFwcGx5KHIsQ28uZW50cmllcyh0KSksci5wdXNoLmFwcGx5KHIsR2MuZW50cmllcyh0LGUsbmV3IHpjKG4mJm4ubGludCksdGhpcy5jc3NEYXRhTWFuYWdlcikpO3ZhciBpPVtdO2Zvcih2YXIgbyBpbiBUYylpLnB1c2goVGNbb10uaWQpO3JldHVybiByLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0TGV2ZWwoKSE9PWVvLklnbm9yZX0pKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBuPUFvLmNyZWF0ZShlLnBvc2l0aW9uQXQodC5nZXRPZmZzZXQoKSksZS5wb3NpdGlvbkF0KHQuZ2V0T2Zmc2V0KCkrdC5nZXRMZW5ndGgoKSkpLHI9ZS5sYW5ndWFnZUlkO3JldHVybntjb2RlOnQuZ2V0UnVsZSgpLmlkLHNvdXJjZTpyLG1lc3NhZ2U6dC5nZXRNZXNzYWdlKCksc2V2ZXJpdHk6dC5nZXRMZXZlbCgpPT09ZW8uV2FybmluZz9Yby5XYXJuaW5nOlhvLkVycm9yLHJhbmdlOm59fSkpfSxlfSgpLFhjPWZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24odCxuKXtyZXR1cm4oZT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZSx0KXtlLl9fcHJvdG9fXz10fXx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKSYmKGVbbl09dFtuXSl9KSh0LG4pfTtyZXR1cm4gZnVuY3Rpb24odCxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgbiYmbnVsbCE9PW4pdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhuKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiByKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWUodCxuKSx0LnByb3RvdHlwZT1udWxsPT09bj9PYmplY3QuY3JlYXRlKG4pOihyLnByb3RvdHlwZT1uLnByb3RvdHlwZSxuZXcgcil9fSgpLFljPSIvIi5jaGFyQ29kZUF0KDApLFpjPSJcbiIuY2hhckNvZGVBdCgwKSxRYz0iXHIiLmNoYXJDb2RlQXQoMCksZWg9IlxmIi5jaGFyQ29kZUF0KDApLHRoPSIkIi5jaGFyQ29kZUF0KDApLG5oPSIjIi5jaGFyQ29kZUF0KDApLHJoPSJ7Ii5jaGFyQ29kZUF0KDApLGloPSI9Ii5jaGFyQ29kZUF0KDApLG9oPSIhIi5jaGFyQ29kZUF0KDApLHNoPSI8Ii5jaGFyQ29kZUF0KDApLGFoPSI+Ii5jaGFyQ29kZUF0KDApLGxoPSIuIi5jaGFyQ29kZUF0KDApLGNoPVpuLkN1c3RvbVRva2VuLGhoPWNoKyssZGg9Y2grKztjaCsrO3ZhciBwaD1jaCsrLHVoPWNoKyssbWg9Y2grKyxmaD1jaCsrLGdoPWNoKys7Y2grKzt2YXIgYmg9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBudWxsIT09ZSYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIFhjKHQsZSksdC5wcm90b3R5cGUuc2Nhbk5leHQ9ZnVuY3Rpb24odCl7aWYodGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcih0aCkpe3ZhciBuPVsiJCJdO2lmKHRoaXMuaWRlbnQobikpcmV0dXJuIHRoaXMuZmluaXNoVG9rZW4odCxoaCxuLmpvaW4oIiIpKTt0aGlzLnN0cmVhbS5nb0JhY2tUbyh0KX1yZXR1cm4gdGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcnMoW25oLHJoXSk/dGhpcy5maW5pc2hUb2tlbih0LGRoKTp0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFycyhbaWgsaWhdKT90aGlzLmZpbmlzaFRva2VuKHQscGgpOnRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXJzKFtvaCxpaF0pP3RoaXMuZmluaXNoVG9rZW4odCx1aCk6dGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcihzaCk/dGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcihpaCk/dGhpcy5maW5pc2hUb2tlbih0LGZoKTp0aGlzLmZpbmlzaFRva2VuKHQsWm4uRGVsaW0pOnRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXIoYWgpP3RoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXIoaWgpP3RoaXMuZmluaXNoVG9rZW4odCxtaCk6dGhpcy5maW5pc2hUb2tlbih0LFpuLkRlbGltKTp0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFycyhbbGgsbGgsbGhdKT90aGlzLmZpbmlzaFRva2VuKHQsZ2gpOmUucHJvdG90eXBlLnNjYW5OZXh0LmNhbGwodGhpcyx0KX0sdC5wcm90b3R5cGUuY29tbWVudD1mdW5jdGlvbigpe3JldHVybiEhZS5wcm90b3R5cGUuY29tbWVudC5jYWxsKHRoaXMpfHwhKHRoaXMuaW5VUkx8fCF0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFycyhbWWMsWWNdKSkmJih0aGlzLnN0cmVhbS5hZHZhbmNlV2hpbGVDaGFyKChmdW5jdGlvbihlKXtzd2l0Y2goZSl7Y2FzZSBaYzpjYXNlIFFjOmNhc2UgZWg6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMH19KSksITApfSx0fSgkcikseWg9X28oKSx2aD1mdW5jdGlvbihlLHQpe3RoaXMuaWQ9ZSx0aGlzLm1lc3NhZ2U9dH0sd2g9e0Zyb21FeHBlY3RlZDpuZXcgdmgoInNjc3MtZnJvbWV4cGVjdGVkIix5aCgiZXhwZWN0ZWQuZnJvbSIsIidmcm9tJyBleHBlY3RlZCIpKSxUaHJvdWdoT3JUb0V4cGVjdGVkOm5ldyB2aCgic2Nzcy10aHJvdWdoZXhwZWN0ZWQiLHloKCJleHBlY3RlZC50aHJvdWdoIiwiJ3Rocm91Z2gnIG9yICd0bycgZXhwZWN0ZWQiKSksSW5FeHBlY3RlZDpuZXcgdmgoInNjc3MtZnJvbWV4cGVjdGVkIix5aCgiZXhwZWN0ZWQuaW4iLCInaW4nIGV4cGVjdGVkIikpfSx4aD1mdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKHQsbil7cmV0dXJuKGU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsdCl7ZS5fX3Byb3RvX189dH18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pfSkodCxuKX07cmV0dXJuIGZ1bmN0aW9uKHQsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4mJm51bGwhPT1uKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcobikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gcigpe3RoaXMuY29uc3RydWN0b3I9dH1lKHQsbiksdC5wcm90b3R5cGU9bnVsbD09PW4/T2JqZWN0LmNyZWF0ZShuKTooci5wcm90b3R5cGU9bi5wcm90b3R5cGUsbmV3IHIpfX0oKSxTaD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0dXJuIGUuY2FsbCh0aGlzLG5ldyBiaCl8fHRoaXN9cmV0dXJuIHhoKHQsZSksdC5wcm90b3R5cGUuX3BhcnNlU3R5bGVzaGVldFN0YXRlbWVudD1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9ITEpLHRoaXMucGVlayhabi5BdEtleXdvcmQpP3RoaXMuX3BhcnNlV2FybkFuZERlYnVnKCl8fHRoaXMuX3BhcnNlQ29udHJvbFN0YXRlbWVudCgpfHx0aGlzLl9wYXJzZU1peGluRGVjbGFyYXRpb24oKXx8dGhpcy5fcGFyc2VNaXhpbkNvbnRlbnQoKXx8dGhpcy5fcGFyc2VNaXhpblJlZmVyZW5jZSgpfHx0aGlzLl9wYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oKXx8dGhpcy5fcGFyc2VGb3J3YXJkKCl8fHRoaXMuX3BhcnNlVXNlKCl8fHRoaXMuX3BhcnNlUnVsZXNldCh0KXx8ZS5wcm90b3R5cGUuX3BhcnNlU3R5bGVzaGVldEF0U3RhdGVtZW50LmNhbGwodGhpcyx0KTp0aGlzLl9wYXJzZVJ1bGVzZXQoITApfHx0aGlzLl9wYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24oKX0sdC5wcm90b3R5cGUuX3BhcnNlSW1wb3J0PWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBpbXBvcnQiKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZShJaSk7aWYodGhpcy5jb25zdW1lVG9rZW4oKSwhZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVVSSUxpdGVyYWwoKSkmJiFlLmFkZENoaWxkKHRoaXMuX3BhcnNlU3RyaW5nTGl0ZXJhbCgpKSlyZXR1cm4gdGhpcy5maW5pc2goZSxDcy5VUklPclN0cmluZ0V4cGVjdGVkKTtmb3IoO3RoaXMuYWNjZXB0KFpuLkNvbW1hKTspaWYoIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VVUklMaXRlcmFsKCkpJiYhZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVN0cmluZ0xpdGVyYWwoKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUsQ3MuVVJJT3JTdHJpbmdFeHBlY3RlZCk7cmV0dXJuIHRoaXMucGVlayhabi5TZW1pQ29sb24pfHx0aGlzLnBlZWsoWm4uRU9GKXx8ZS5zZXRNZWRpYWxpc3QodGhpcy5fcGFyc2VNZWRpYVF1ZXJ5TGlzdCgpKSx0aGlzLmZpbmlzaChlKX0sdC5wcm90b3R5cGUuX3BhcnNlVmFyaWFibGVEZWNsYXJhdGlvbj1mdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lJiYoZT1bXSksIXRoaXMucGVlayhoaCkpcmV0dXJuIG51bGw7dmFyIHQ9dGhpcy5jcmVhdGUobG8pO2lmKCF0LnNldFZhcmlhYmxlKHRoaXMuX3BhcnNlVmFyaWFibGUoKSkpcmV0dXJuIG51bGw7aWYoIXRoaXMuYWNjZXB0KFpuLkNvbG9uKSlyZXR1cm4gdGhpcy5maW5pc2godCxDcy5Db2xvbkV4cGVjdGVkKTtpZih0aGlzLnByZXZUb2tlbiYmKHQuY29sb25Qb3NpdGlvbj10aGlzLnByZXZUb2tlbi5vZmZzZXQpLCF0LnNldFZhbHVlKHRoaXMuX3BhcnNlRXhwcigpKSlyZXR1cm4gdGhpcy5maW5pc2godCxDcy5WYXJpYWJsZVZhbHVlRXhwZWN0ZWQsW10sZSk7Zm9yKDt0aGlzLnBlZWsoWm4uRXhjbGFtYXRpb24pOylpZih0LmFkZENoaWxkKHRoaXMuX3RyeVBhcnNlUHJpbygpKSk7ZWxzZXtpZih0aGlzLmNvbnN1bWVUb2tlbigpLCF0aGlzLnBlZWtSZWdFeHAoWm4uSWRlbnQsL14oZGVmYXVsdHxnbG9iYWwpJC8pKXJldHVybiB0aGlzLmZpbmlzaCh0LENzLlVua25vd25LZXl3b3JkKTt0aGlzLmNvbnN1bWVUb2tlbigpfXJldHVybiB0aGlzLnBlZWsoWm4uU2VtaUNvbG9uKSYmKHQuc2VtaWNvbG9uUG9zaXRpb249dGhpcy50b2tlbi5vZmZzZXQpLHRoaXMuZmluaXNoKHQpfSx0LnByb3RvdHlwZS5fcGFyc2VNZWRpYUNvbmRpdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJzZUludGVycG9sYXRpb24oKXx8ZS5wcm90b3R5cGUuX3BhcnNlTWVkaWFDb25kaXRpb24uY2FsbCh0aGlzKX0sdC5wcm90b3R5cGUuX3BhcnNlTWVkaWFGZWF0dXJlTmFtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJzZU1vZHVsZU1lbWJlcigpfHx0aGlzLl9wYXJzZUZ1bmN0aW9uKCl8fHRoaXMuX3BhcnNlSWRlbnQoKXx8dGhpcy5fcGFyc2VWYXJpYWJsZSgpfSx0LnByb3RvdHlwZS5fcGFyc2VLZXlmcmFtZVNlbGVjdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyeVBhcnNlS2V5ZnJhbWVTZWxlY3RvcigpfHx0aGlzLl9wYXJzZUNvbnRyb2xTdGF0ZW1lbnQodGhpcy5fcGFyc2VLZXlmcmFtZVNlbGVjdG9yLmJpbmQodGhpcykpfHx0aGlzLl9wYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24oKXx8dGhpcy5fcGFyc2VNaXhpbkNvbnRlbnQoKX0sdC5wcm90b3R5cGUuX3BhcnNlVmFyaWFibGU9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrKGhoKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZShobyk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksZX0sdC5wcm90b3R5cGUuX3BhcnNlTW9kdWxlTWVtYmVyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5tYXJrKCksdD10aGlzLmNyZWF0ZSh4byk7cmV0dXJuIHQuc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZUlkZW50KFtlaS5Nb2R1bGVdKSk/dGhpcy5oYXNXaGl0ZXNwYWNlKCl8fCF0aGlzLmFjY2VwdERlbGltKCIuIil8fHRoaXMuaGFzV2hpdGVzcGFjZSgpPyh0aGlzLnJlc3RvcmVBdE1hcmsoZSksbnVsbCk6dC5hZGRDaGlsZCh0aGlzLl9wYXJzZVZhcmlhYmxlKCl8fHRoaXMuX3BhcnNlRnVuY3Rpb24oKSk/dDp0aGlzLmZpbmlzaCh0LENzLklkZW50aWZpZXJPclZhcmlhYmxlRXhwZWN0ZWQpOm51bGx9LHQucHJvdG90eXBlLl9wYXJzZUlkZW50PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYoIXRoaXMucGVlayhabi5JZGVudCkmJiF0aGlzLnBlZWsoZGgpJiYhdGhpcy5wZWVrRGVsaW0oIi0iKSlyZXR1cm4gbnVsbDt2YXIgbj10aGlzLmNyZWF0ZShsaSk7bi5yZWZlcmVuY2VUeXBlcz1lLG4uaXNDdXN0b21Qcm9wZXJ0eT10aGlzLnBlZWtSZWdFeHAoWm4uSWRlbnQsL14tLS8pO2Zvcih2YXIgcixpPSExOyh0aGlzLmFjY2VwdChabi5JZGVudCl8fG4uYWRkQ2hpbGQoKHI9dm9pZCAwLHI9dC5tYXJrKCksdC5hY2NlcHREZWxpbSgiLSIpJiYodC5oYXNXaGl0ZXNwYWNlKCl8fHQuYWNjZXB0RGVsaW0oIi0iKSx0Lmhhc1doaXRlc3BhY2UoKSk/KHQucmVzdG9yZUF0TWFyayhyKSxudWxsKTp0Ll9wYXJzZUludGVycG9sYXRpb24oKSkpfHxpJiZ0aGlzLmFjY2VwdFJlZ2V4cCgvXltcdy1dLykpJiYoaT0hMCwhdGhpcy5oYXNXaGl0ZXNwYWNlKCkpOyk7cmV0dXJuIGk/dGhpcy5maW5pc2gobik6bnVsbH0sdC5wcm90b3R5cGUuX3BhcnNlVGVybUV4cHJlc3Npb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VNb2R1bGVNZW1iZXIoKXx8dGhpcy5fcGFyc2VWYXJpYWJsZSgpfHx0aGlzLl9wYXJzZVNlbGVjdG9yQ29tYmluYXRvcigpfHxlLnByb3RvdHlwZS5fcGFyc2VUZXJtRXhwcmVzc2lvbi5jYWxsKHRoaXMpfSx0LnByb3RvdHlwZS5fcGFyc2VJbnRlcnBvbGF0aW9uPWZ1bmN0aW9uKCl7aWYodGhpcy5wZWVrKGRoKSl7dmFyIGU9dGhpcy5jcmVhdGUoY28pO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VFeHByKCkpfHx0aGlzLl9wYXJzZVNlbGVjdG9yQ29tYmluYXRvcigpP3RoaXMuYWNjZXB0KFpuLkN1cmx5Uik/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSxDcy5SaWdodEN1cmx5RXhwZWN0ZWQpOnRoaXMuYWNjZXB0KFpuLkN1cmx5Uik/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSxDcy5FeHByZXNzaW9uRXhwZWN0ZWQpfXJldHVybiBudWxsfSx0LnByb3RvdHlwZS5fcGFyc2VPcGVyYXRvcj1mdW5jdGlvbigpe2lmKHRoaXMucGVlayhwaCl8fHRoaXMucGVlayh1aCl8fHRoaXMucGVlayhtaCl8fHRoaXMucGVlayhmaCl8fHRoaXMucGVla0RlbGltKCI+Iil8fHRoaXMucGVla0RlbGltKCI8Iil8fHRoaXMucGVla0lkZW50KCJhbmQiKXx8dGhpcy5wZWVrSWRlbnQoIm9yIil8fHRoaXMucGVla0RlbGltKCIlIikpe3ZhciB0PXRoaXMuY3JlYXRlTm9kZShaci5PcGVyYXRvcik7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5maW5pc2godCl9cmV0dXJuIGUucHJvdG90eXBlLl9wYXJzZU9wZXJhdG9yLmNhbGwodGhpcyl9LHQucHJvdG90eXBlLl9wYXJzZVVuYXJ5T3BlcmF0b3I9ZnVuY3Rpb24oKXtpZih0aGlzLnBlZWtJZGVudCgibm90Iikpe3ZhciB0PXRoaXMuY3JlYXRlKG9pKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmZpbmlzaCh0KX1yZXR1cm4gZS5wcm90b3R5cGUuX3BhcnNlVW5hcnlPcGVyYXRvci5jYWxsKHRoaXMpfSx0LnByb3RvdHlwZS5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wZWVrKFpuLkF0S2V5d29yZCk/dGhpcy5fcGFyc2VLZXlmcmFtZSgpfHx0aGlzLl9wYXJzZUltcG9ydCgpfHx0aGlzLl9wYXJzZU1lZGlhKCEwKXx8dGhpcy5fcGFyc2VGb250RmFjZSgpfHx0aGlzLl9wYXJzZVdhcm5BbmREZWJ1ZygpfHx0aGlzLl9wYXJzZUNvbnRyb2xTdGF0ZW1lbnQoKXx8dGhpcy5fcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKCl8fHRoaXMuX3BhcnNlRXh0ZW5kcygpfHx0aGlzLl9wYXJzZU1peGluUmVmZXJlbmNlKCl8fHRoaXMuX3BhcnNlTWl4aW5Db250ZW50KCl8fHRoaXMuX3BhcnNlTWl4aW5EZWNsYXJhdGlvbigpfHx0aGlzLl9wYXJzZVJ1bGVzZXQoITApfHx0aGlzLl9wYXJzZVN1cHBvcnRzKCEwKXx8ZS5wcm90b3R5cGUuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uQXRTdGF0ZW1lbnQuY2FsbCh0aGlzKTp0aGlzLl9wYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24oKXx8dGhpcy5fdHJ5UGFyc2VSdWxlc2V0KCEwKXx8ZS5wcm90b3R5cGUuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uLmNhbGwodGhpcyl9LHQucHJvdG90eXBlLl9wYXJzZURlY2xhcmF0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3RyeVBhcnNlQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbihlKTtpZih0KXJldHVybiB0O3ZhciBuPXRoaXMuY3JlYXRlKGJpKTtpZighbi5zZXRQcm9wZXJ0eSh0aGlzLl9wYXJzZVByb3BlcnR5KCkpKXJldHVybiBudWxsO2lmKCF0aGlzLmFjY2VwdChabi5Db2xvbikpcmV0dXJuIHRoaXMuZmluaXNoKG4sQ3MuQ29sb25FeHBlY3RlZCxbWm4uQ29sb25dLGV8fFtabi5TZW1pQ29sb25dKTt0aGlzLnByZXZUb2tlbiYmKG4uY29sb25Qb3NpdGlvbj10aGlzLnByZXZUb2tlbi5vZmZzZXQpO3ZhciByPSExO2lmKG4uc2V0VmFsdWUodGhpcy5fcGFyc2VFeHByKCkpJiYocj0hMCxuLmFkZENoaWxkKHRoaXMuX3BhcnNlUHJpbygpKSksdGhpcy5wZWVrKFpuLkN1cmx5TCkpbi5zZXROZXN0ZWRQcm9wZXJ0aWVzKHRoaXMuX3BhcnNlTmVzdGVkUHJvcGVydGllcygpKTtlbHNlIGlmKCFyKXJldHVybiB0aGlzLmZpbmlzaChuLENzLlByb3BlcnR5VmFsdWVFeHBlY3RlZCk7cmV0dXJuIHRoaXMucGVlayhabi5TZW1pQ29sb24pJiYobi5zZW1pY29sb25Qb3NpdGlvbj10aGlzLnRva2VuLm9mZnNldCksdGhpcy5maW5pc2gobil9LHQucHJvdG90eXBlLl9wYXJzZU5lc3RlZFByb3BlcnRpZXM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNyZWF0ZShUaSk7cmV0dXJuIHRoaXMuX3BhcnNlQm9keShlLHRoaXMuX3BhcnNlRGVjbGFyYXRpb24uYmluZCh0aGlzKSl9LHQucHJvdG90eXBlLl9wYXJzZUV4dGVuZHM9ZnVuY3Rpb24oKXtpZih0aGlzLnBlZWtLZXl3b3JkKCJAZXh0ZW5kIikpe3ZhciBlPXRoaXMuY3JlYXRlKHBvKTtpZih0aGlzLmNvbnN1bWVUb2tlbigpLCFlLmdldFNlbGVjdG9ycygpLmFkZENoaWxkKHRoaXMuX3BhcnNlU2ltcGxlU2VsZWN0b3IoKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUsQ3MuU2VsZWN0b3JFeHBlY3RlZCk7Zm9yKDt0aGlzLmFjY2VwdChabi5Db21tYSk7KWUuZ2V0U2VsZWN0b3JzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VTaW1wbGVTZWxlY3RvcigpKTtyZXR1cm4gdGhpcy5hY2NlcHQoWm4uRXhjbGFtYXRpb24pJiYhdGhpcy5hY2NlcHRJZGVudCgib3B0aW9uYWwiKT90aGlzLmZpbmlzaChlLENzLlVua25vd25LZXl3b3JkKTp0aGlzLmZpbmlzaChlKX1yZXR1cm4gbnVsbH0sdC5wcm90b3R5cGUuX3BhcnNlU2ltcGxlU2VsZWN0b3JCb2R5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlU2VsZWN0b3JDb21iaW5hdG9yKCl8fHRoaXMuX3BhcnNlU2VsZWN0b3JQbGFjZWhvbGRlcigpfHxlLnByb3RvdHlwZS5fcGFyc2VTaW1wbGVTZWxlY3RvckJvZHkuY2FsbCh0aGlzKX0sdC5wcm90b3R5cGUuX3BhcnNlU2VsZWN0b3JDb21iaW5hdG9yPWZ1bmN0aW9uKCl7aWYodGhpcy5wZWVrRGVsaW0oIiYiKSl7dmFyIGU9dGhpcy5jcmVhdGVOb2RlKFpyLlNlbGVjdG9yQ29tYmluYXRvcik7Zm9yKHRoaXMuY29uc3VtZVRva2VuKCk7IXRoaXMuaGFzV2hpdGVzcGFjZSgpJiYodGhpcy5hY2NlcHREZWxpbSgiLSIpfHx0aGlzLmFjY2VwdChabi5OdW0pfHx0aGlzLmFjY2VwdChabi5EaW1lbnNpb24pfHxlLmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSl8fHRoaXMuYWNjZXB0RGVsaW0oIiYiKSk7KTtyZXR1cm4gdGhpcy5maW5pc2goZSl9cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLl9wYXJzZVNlbGVjdG9yUGxhY2Vob2xkZXI9ZnVuY3Rpb24oKXtpZih0aGlzLnBlZWtEZWxpbSgiJSIpKXt2YXIgZT10aGlzLmNyZWF0ZU5vZGUoWnIuU2VsZWN0b3JQbGFjZWhvbGRlcik7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5fcGFyc2VJZGVudCgpLHRoaXMuZmluaXNoKGUpfWlmKHRoaXMucGVla0tleXdvcmQoIkBhdC1yb290Iikpe2U9dGhpcy5jcmVhdGVOb2RlKFpyLlNlbGVjdG9yUGxhY2Vob2xkZXIpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuZmluaXNoKGUpfXJldHVybiBudWxsfSx0LnByb3RvdHlwZS5fcGFyc2VFbGVtZW50TmFtZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMubWFyaygpLG49ZS5wcm90b3R5cGUuX3BhcnNlRWxlbWVudE5hbWUuY2FsbCh0aGlzKTtyZXR1cm4gbiYmIXRoaXMuaGFzV2hpdGVzcGFjZSgpJiZ0aGlzLnBlZWsoWm4uUGFyZW50aGVzaXNMKT8odGhpcy5yZXN0b3JlQXRNYXJrKHQpLG51bGwpOm59LHQucHJvdG90eXBlLl90cnlQYXJzZVBzZXVkb0lkZW50aWZpZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VJbnRlcnBvbGF0aW9uKCl8fGUucHJvdG90eXBlLl90cnlQYXJzZVBzZXVkb0lkZW50aWZpZXIuY2FsbCh0aGlzKX0sdC5wcm90b3R5cGUuX3BhcnNlV2FybkFuZERlYnVnPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBkZWJ1ZyIpJiYhdGhpcy5wZWVrS2V5d29yZCgiQHdhcm4iKSYmIXRoaXMucGVla0tleXdvcmQoIkBlcnJvciIpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlTm9kZShaci5EZWJ1Zyk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUV4cHIoKSksdGhpcy5maW5pc2goZSl9LHQucHJvdG90eXBlLl9wYXJzZUNvbnRyb2xTdGF0ZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPXRoaXMuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uLmJpbmQodGhpcykpLHRoaXMucGVlayhabi5BdEtleXdvcmQpP3RoaXMuX3BhcnNlSWZTdGF0ZW1lbnQoZSl8fHRoaXMuX3BhcnNlRm9yU3RhdGVtZW50KGUpfHx0aGlzLl9wYXJzZUVhY2hTdGF0ZW1lbnQoZSl8fHRoaXMuX3BhcnNlV2hpbGVTdGF0ZW1lbnQoZSk6bnVsbH0sdC5wcm90b3R5cGUuX3BhcnNlSWZTdGF0ZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucGVla0tleXdvcmQoIkBpZiIpP3RoaXMuX2ludGVybmFsUGFyc2VJZlN0YXRlbWVudChlKTpudWxsfSx0LnByb3RvdHlwZS5faW50ZXJuYWxQYXJzZUlmU3RhdGVtZW50PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuY3JlYXRlKENpKTtpZih0aGlzLmNvbnN1bWVUb2tlbigpLCF0LnNldEV4cHJlc3Npb24odGhpcy5fcGFyc2VFeHByKCEwKSkpcmV0dXJuIHRoaXMuZmluaXNoKHQsQ3MuRXhwcmVzc2lvbkV4cGVjdGVkKTtpZih0aGlzLl9wYXJzZUJvZHkodCxlKSx0aGlzLmFjY2VwdEtleXdvcmQoIkBlbHNlIikpaWYodGhpcy5wZWVrSWRlbnQoImlmIikpdC5zZXRFbHNlQ2xhdXNlKHRoaXMuX2ludGVybmFsUGFyc2VJZlN0YXRlbWVudChlKSk7ZWxzZSBpZih0aGlzLnBlZWsoWm4uQ3VybHlMKSl7dmFyIG49dGhpcy5jcmVhdGUoRmkpO3RoaXMuX3BhcnNlQm9keShuLGUpLHQuc2V0RWxzZUNsYXVzZShuKX1yZXR1cm4gdGhpcy5maW5pc2godCl9LHQucHJvdG90eXBlLl9wYXJzZUZvclN0YXRlbWVudD1mdW5jdGlvbihlKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQGZvciIpKXJldHVybiBudWxsO3ZhciB0PXRoaXMuY3JlYXRlKGtpKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0LnNldFZhcmlhYmxlKHRoaXMuX3BhcnNlVmFyaWFibGUoKSk/dGhpcy5hY2NlcHRJZGVudCgiZnJvbSIpP3QuYWRkQ2hpbGQodGhpcy5fcGFyc2VCaW5hcnlFeHByKCkpP3RoaXMuYWNjZXB0SWRlbnQoInRvIil8fHRoaXMuYWNjZXB0SWRlbnQoInRocm91Z2giKT90LmFkZENoaWxkKHRoaXMuX3BhcnNlQmluYXJ5RXhwcigpKT90aGlzLl9wYXJzZUJvZHkodCxlKTp0aGlzLmZpbmlzaCh0LENzLkV4cHJlc3Npb25FeHBlY3RlZCxbWm4uQ3VybHlSXSk6dGhpcy5maW5pc2godCx3aC5UaHJvdWdoT3JUb0V4cGVjdGVkLFtabi5DdXJseVJdKTp0aGlzLmZpbmlzaCh0LENzLkV4cHJlc3Npb25FeHBlY3RlZCxbWm4uQ3VybHlSXSk6dGhpcy5maW5pc2godCx3aC5Gcm9tRXhwZWN0ZWQsW1puLkN1cmx5Ul0pOnRoaXMuZmluaXNoKHQsQ3MuVmFyaWFibGVOYW1lRXhwZWN0ZWQsW1puLkN1cmx5Ul0pfSx0LnByb3RvdHlwZS5fcGFyc2VFYWNoU3RhdGVtZW50PWZ1bmN0aW9uKGUpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAZWFjaCIpKXJldHVybiBudWxsO3ZhciB0PXRoaXMuY3JlYXRlKF9pKTt0aGlzLmNvbnN1bWVUb2tlbigpO3ZhciBuPXQuZ2V0VmFyaWFibGVzKCk7aWYoIW4uYWRkQ2hpbGQodGhpcy5fcGFyc2VWYXJpYWJsZSgpKSlyZXR1cm4gdGhpcy5maW5pc2godCxDcy5WYXJpYWJsZU5hbWVFeHBlY3RlZCxbWm4uQ3VybHlSXSk7Zm9yKDt0aGlzLmFjY2VwdChabi5Db21tYSk7KWlmKCFuLmFkZENoaWxkKHRoaXMuX3BhcnNlVmFyaWFibGUoKSkpcmV0dXJuIHRoaXMuZmluaXNoKHQsQ3MuVmFyaWFibGVOYW1lRXhwZWN0ZWQsW1puLkN1cmx5Ul0pO3JldHVybiB0aGlzLmZpbmlzaChuKSx0aGlzLmFjY2VwdElkZW50KCJpbiIpP3QuYWRkQ2hpbGQodGhpcy5fcGFyc2VFeHByKCkpP3RoaXMuX3BhcnNlQm9keSh0LGUpOnRoaXMuZmluaXNoKHQsQ3MuRXhwcmVzc2lvbkV4cGVjdGVkLFtabi5DdXJseVJdKTp0aGlzLmZpbmlzaCh0LHdoLkluRXhwZWN0ZWQsW1puLkN1cmx5Ul0pfSx0LnByb3RvdHlwZS5fcGFyc2VXaGlsZVN0YXRlbWVudD1mdW5jdGlvbihlKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQHdoaWxlIikpcmV0dXJuIG51bGw7dmFyIHQ9dGhpcy5jcmVhdGUoRWkpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHQuYWRkQ2hpbGQodGhpcy5fcGFyc2VCaW5hcnlFeHByKCkpP3RoaXMuX3BhcnNlQm9keSh0LGUpOnRoaXMuZmluaXNoKHQsQ3MuRXhwcmVzc2lvbkV4cGVjdGVkLFtabi5DdXJseVJdKX0sdC5wcm90b3R5cGUuX3BhcnNlRnVuY3Rpb25Cb2R5RGVjbGFyYXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKCl8fHRoaXMuX3BhcnNlUmV0dXJuU3RhdGVtZW50KCl8fHRoaXMuX3BhcnNlV2FybkFuZERlYnVnKCl8fHRoaXMuX3BhcnNlQ29udHJvbFN0YXRlbWVudCh0aGlzLl9wYXJzZUZ1bmN0aW9uQm9keURlY2xhcmF0aW9uLmJpbmQodGhpcykpfSx0LnByb3RvdHlwZS5fcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBmdW5jdGlvbiIpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKFJpKTtpZih0aGlzLmNvbnN1bWVUb2tlbigpLCFlLnNldElkZW50aWZpZXIodGhpcy5fcGFyc2VJZGVudChbZWkuRnVuY3Rpb25dKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUsQ3MuSWRlbnRpZmllckV4cGVjdGVkLFtabi5DdXJseVJdKTtpZighdGhpcy5hY2NlcHQoWm4uUGFyZW50aGVzaXNMKSlyZXR1cm4gdGhpcy5maW5pc2goZSxDcy5MZWZ0UGFyZW50aGVzaXNFeHBlY3RlZCxbWm4uQ3VybHlSXSk7aWYoZS5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VQYXJhbWV0ZXJEZWNsYXJhdGlvbigpKSlmb3IoO3RoaXMuYWNjZXB0KFpuLkNvbW1hKSYmIXRoaXMucGVlayhabi5QYXJlbnRoZXNpc1IpOylpZighZS5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VQYXJhbWV0ZXJEZWNsYXJhdGlvbigpKSlyZXR1cm4gdGhpcy5maW5pc2goZSxDcy5WYXJpYWJsZU5hbWVFeHBlY3RlZCk7cmV0dXJuIHRoaXMuYWNjZXB0KFpuLlBhcmVudGhlc2lzUik/dGhpcy5fcGFyc2VCb2R5KGUsdGhpcy5fcGFyc2VGdW5jdGlvbkJvZHlEZWNsYXJhdGlvbi5iaW5kKHRoaXMpKTp0aGlzLmZpbmlzaChlLENzLlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCxbWm4uQ3VybHlSXSl9LHQucHJvdG90eXBlLl9wYXJzZVJldHVyblN0YXRlbWVudD1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAcmV0dXJuIikpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5jcmVhdGVOb2RlKFpyLlJldHVyblN0YXRlbWVudCk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUV4cHIoKSk/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSxDcy5FeHByZXNzaW9uRXhwZWN0ZWQpfSx0LnByb3RvdHlwZS5fcGFyc2VNaXhpbkRlY2xhcmF0aW9uPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBtaXhpbiIpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKGdvKTtpZih0aGlzLmNvbnN1bWVUb2tlbigpLCFlLnNldElkZW50aWZpZXIodGhpcy5fcGFyc2VJZGVudChbZWkuTWl4aW5dKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUsQ3MuSWRlbnRpZmllckV4cGVjdGVkLFtabi5DdXJseVJdKTtpZih0aGlzLmFjY2VwdChabi5QYXJlbnRoZXNpc0wpKXtpZihlLmdldFBhcmFtZXRlcnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZVBhcmFtZXRlckRlY2xhcmF0aW9uKCkpKWZvcig7dGhpcy5hY2NlcHQoWm4uQ29tbWEpJiYhdGhpcy5wZWVrKFpuLlBhcmVudGhlc2lzUik7KWlmKCFlLmdldFBhcmFtZXRlcnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZVBhcmFtZXRlckRlY2xhcmF0aW9uKCkpKXJldHVybiB0aGlzLmZpbmlzaChlLENzLlZhcmlhYmxlTmFtZUV4cGVjdGVkKTtpZighdGhpcy5hY2NlcHQoWm4uUGFyZW50aGVzaXNSKSlyZXR1cm4gdGhpcy5maW5pc2goZSxDcy5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQsW1puLkN1cmx5Ul0pfXJldHVybiB0aGlzLl9wYXJzZUJvZHkoZSx0aGlzLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbi5iaW5kKHRoaXMpKX0sdC5wcm90b3R5cGUuX3BhcnNlUGFyYW1ldGVyRGVjbGFyYXRpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNyZWF0ZSh4aSk7cmV0dXJuIGUuc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZVZhcmlhYmxlKCkpPyh0aGlzLmFjY2VwdChnaCksdGhpcy5hY2NlcHQoWm4uQ29sb24pJiYhZS5zZXREZWZhdWx0VmFsdWUodGhpcy5fcGFyc2VFeHByKCEwKSk/dGhpcy5maW5pc2goZSxDcy5WYXJpYWJsZVZhbHVlRXhwZWN0ZWQsW10sW1puLkNvbW1hLFpuLlBhcmVudGhlc2lzUl0pOnRoaXMuZmluaXNoKGUpKTpudWxsfSx0LnByb3RvdHlwZS5fcGFyc2VNaXhpbkNvbnRlbnQ9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQGNvbnRlbnQiKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZSh1byk7aWYodGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmFjY2VwdChabi5QYXJlbnRoZXNpc0wpKXtpZihlLmdldEFyZ3VtZW50cygpLmFkZENoaWxkKHRoaXMuX3BhcnNlRnVuY3Rpb25Bcmd1bWVudCgpKSlmb3IoO3RoaXMuYWNjZXB0KFpuLkNvbW1hKSYmIXRoaXMucGVlayhabi5QYXJlbnRoZXNpc1IpOylpZighZS5nZXRBcmd1bWVudHMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZUZ1bmN0aW9uQXJndW1lbnQoKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUsQ3MuRXhwcmVzc2lvbkV4cGVjdGVkKTtpZighdGhpcy5hY2NlcHQoWm4uUGFyZW50aGVzaXNSKSlyZXR1cm4gdGhpcy5maW5pc2goZSxDcy5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQpfXJldHVybiB0aGlzLmZpbmlzaChlKX0sdC5wcm90b3R5cGUuX3BhcnNlTWl4aW5SZWZlcmVuY2U9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQGluY2x1ZGUiKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZShmbyk7dGhpcy5jb25zdW1lVG9rZW4oKTt2YXIgdD10aGlzLl9wYXJzZUlkZW50KFtlaS5NaXhpbl0pO2lmKCFlLnNldElkZW50aWZpZXIodCkpcmV0dXJuIHRoaXMuZmluaXNoKGUsQ3MuSWRlbnRpZmllckV4cGVjdGVkLFtabi5DdXJseVJdKTtpZighdGhpcy5oYXNXaGl0ZXNwYWNlKCkmJnRoaXMuYWNjZXB0RGVsaW0oIi4iKSYmIXRoaXMuaGFzV2hpdGVzcGFjZSgpKXt2YXIgbj10aGlzLl9wYXJzZUlkZW50KFtlaS5NaXhpbl0pO2lmKCFuKXJldHVybiB0aGlzLmZpbmlzaChlLENzLklkZW50aWZpZXJFeHBlY3RlZCxbWm4uQ3VybHlSXSk7dmFyIHI9dGhpcy5jcmVhdGUoeG8pO3QucmVmZXJlbmNlVHlwZXM9W2VpLk1vZHVsZV0sci5zZXRJZGVudGlmaWVyKHQpLGUuc2V0SWRlbnRpZmllcihuKSxlLmFkZENoaWxkKHIpfWlmKHRoaXMuYWNjZXB0KFpuLlBhcmVudGhlc2lzTCkpe2lmKGUuZ2V0QXJndW1lbnRzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VGdW5jdGlvbkFyZ3VtZW50KCkpKWZvcig7dGhpcy5hY2NlcHQoWm4uQ29tbWEpJiYhdGhpcy5wZWVrKFpuLlBhcmVudGhlc2lzUik7KWlmKCFlLmdldEFyZ3VtZW50cygpLmFkZENoaWxkKHRoaXMuX3BhcnNlRnVuY3Rpb25Bcmd1bWVudCgpKSlyZXR1cm4gdGhpcy5maW5pc2goZSxDcy5FeHByZXNzaW9uRXhwZWN0ZWQpO2lmKCF0aGlzLmFjY2VwdChabi5QYXJlbnRoZXNpc1IpKXJldHVybiB0aGlzLmZpbmlzaChlLENzLlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCl9cmV0dXJuKHRoaXMucGVla0lkZW50KCJ1c2luZyIpfHx0aGlzLnBlZWsoWm4uQ3VybHlMKSkmJmUuc2V0Q29udGVudCh0aGlzLl9wYXJzZU1peGluQ29udGVudERlY2xhcmF0aW9uKCkpLHRoaXMuZmluaXNoKGUpfSx0LnByb3RvdHlwZS5fcGFyc2VNaXhpbkNvbnRlbnREZWNsYXJhdGlvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuY3JlYXRlKG1vKTtpZih0aGlzLmFjY2VwdElkZW50KCJ1c2luZyIpKXtpZighdGhpcy5hY2NlcHQoWm4uUGFyZW50aGVzaXNMKSlyZXR1cm4gdGhpcy5maW5pc2goZSxDcy5MZWZ0UGFyZW50aGVzaXNFeHBlY3RlZCxbWm4uQ3VybHlMXSk7aWYoZS5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VQYXJhbWV0ZXJEZWNsYXJhdGlvbigpKSlmb3IoO3RoaXMuYWNjZXB0KFpuLkNvbW1hKSYmIXRoaXMucGVlayhabi5QYXJlbnRoZXNpc1IpOylpZighZS5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VQYXJhbWV0ZXJEZWNsYXJhdGlvbigpKSlyZXR1cm4gdGhpcy5maW5pc2goZSxDcy5WYXJpYWJsZU5hbWVFeHBlY3RlZCk7aWYoIXRoaXMuYWNjZXB0KFpuLlBhcmVudGhlc2lzUikpcmV0dXJuIHRoaXMuZmluaXNoKGUsQ3MuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkLFtabi5DdXJseUxdKX1yZXR1cm4gdGhpcy5wZWVrKFpuLkN1cmx5TCkmJnRoaXMuX3BhcnNlQm9keShlLHRoaXMuX3BhcnNlTWl4aW5SZWZlcmVuY2VCb2R5U3RhdGVtZW50LmJpbmQodGhpcykpLHRoaXMuZmluaXNoKGUpfSx0LnByb3RvdHlwZS5fcGFyc2VNaXhpblJlZmVyZW5jZUJvZHlTdGF0ZW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJ5UGFyc2VLZXlmcmFtZVNlbGVjdG9yKCl8fHRoaXMuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uKCl9LHQucHJvdG90eXBlLl9wYXJzZUZ1bmN0aW9uQXJndW1lbnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNyZWF0ZShTaSksdD10aGlzLm1hcmsoKSxuPXRoaXMuX3BhcnNlVmFyaWFibGUoKTtpZihuKWlmKHRoaXMuYWNjZXB0KFpuLkNvbG9uKSllLnNldElkZW50aWZpZXIobik7ZWxzZXtpZih0aGlzLmFjY2VwdChnaCkpcmV0dXJuIGUuc2V0VmFsdWUobiksdGhpcy5maW5pc2goZSk7dGhpcy5yZXN0b3JlQXRNYXJrKHQpfXJldHVybiBlLnNldFZhbHVlKHRoaXMuX3BhcnNlRXhwcighMCkpPyh0aGlzLmFjY2VwdChnaCksZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVByaW8oKSksdGhpcy5maW5pc2goZSkpOmUuc2V0VmFsdWUodGhpcy5fdHJ5UGFyc2VQcmlvKCkpP3RoaXMuZmluaXNoKGUpOm51bGx9LHQucHJvdG90eXBlLl9wYXJzZVVSTEFyZ3VtZW50PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5tYXJrKCksbj1lLnByb3RvdHlwZS5fcGFyc2VVUkxBcmd1bWVudC5jYWxsKHRoaXMpO2lmKCFufHwhdGhpcy5wZWVrKFpuLlBhcmVudGhlc2lzUikpe3RoaXMucmVzdG9yZUF0TWFyayh0KTt2YXIgcj10aGlzLmNyZWF0ZShvaSk7cmV0dXJuIHIuYWRkQ2hpbGQodGhpcy5fcGFyc2VCaW5hcnlFeHByKCkpLHRoaXMuZmluaXNoKHIpfXJldHVybiBufSx0LnByb3RvdHlwZS5fcGFyc2VPcGVyYXRpb249ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrKFpuLlBhcmVudGhlc2lzTCkpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5jcmVhdGUob2kpO2Zvcih0aGlzLmNvbnN1bWVUb2tlbigpO2UuYWRkQ2hpbGQodGhpcy5fcGFyc2VMaXN0RWxlbWVudCgpKTspdGhpcy5hY2NlcHQoWm4uQ29tbWEpO3JldHVybiB0aGlzLmFjY2VwdChabi5QYXJlbnRoZXNpc1IpP3RoaXMuZmluaXNoKGUpOnRoaXMuZmluaXNoKGUsQ3MuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKX0sdC5wcm90b3R5cGUuX3BhcnNlTGlzdEVsZW1lbnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNyZWF0ZSh5byksdD10aGlzLl9wYXJzZUJpbmFyeUV4cHIoKTtpZighdClyZXR1cm4gbnVsbDtpZih0aGlzLmFjY2VwdChabi5Db2xvbikpe2lmKGUuc2V0S2V5KHQpLCFlLnNldFZhbHVlKHRoaXMuX3BhcnNlQmluYXJ5RXhwcigpKSlyZXR1cm4gdGhpcy5maW5pc2goZSxDcy5FeHByZXNzaW9uRXhwZWN0ZWQpfWVsc2UgZS5zZXRWYWx1ZSh0KTtyZXR1cm4gdGhpcy5maW5pc2goZSl9LHQucHJvdG90eXBlLl9wYXJzZVVzZT1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAdXNlIikpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5jcmVhdGUoTWkpO2lmKHRoaXMuY29uc3VtZVRva2VuKCksIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VTdHJpbmdMaXRlcmFsKCkpKXJldHVybiB0aGlzLmZpbmlzaChlLENzLlN0cmluZ0xpdGVyYWxFeHBlY3RlZCk7aWYoIXRoaXMucGVlayhabi5TZW1pQ29sb24pJiYhdGhpcy5wZWVrKFpuLkVPRikpe2lmKCF0aGlzLnBlZWtSZWdFeHAoWm4uSWRlbnQsL2FzfHdpdGgvKSlyZXR1cm4gdGhpcy5maW5pc2goZSxDcy5Vbmtub3duS2V5d29yZCk7aWYodGhpcy5hY2NlcHRJZGVudCgiYXMiKSYmIWUuc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZUlkZW50KFtlaS5Nb2R1bGVdKSkmJiF0aGlzLmFjY2VwdERlbGltKCIqIikpcmV0dXJuIHRoaXMuZmluaXNoKGUsQ3MuSWRlbnRpZmllck9yV2lsZGNhcmRFeHBlY3RlZCk7aWYodGhpcy5hY2NlcHRJZGVudCgid2l0aCIpKXtpZighdGhpcy5hY2NlcHQoWm4uUGFyZW50aGVzaXNMKSlyZXR1cm4gdGhpcy5maW5pc2goZSxDcy5MZWZ0UGFyZW50aGVzaXNFeHBlY3RlZCxbWm4uUGFyZW50aGVzaXNSXSk7aWYoIWUuZ2V0UGFyYW1ldGVycygpLmFkZENoaWxkKHRoaXMuX3BhcnNlTW9kdWxlQ29uZmlnRGVjbGFyYXRpb24oKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUsQ3MuVmFyaWFibGVOYW1lRXhwZWN0ZWQpO2Zvcig7dGhpcy5hY2NlcHQoWm4uQ29tbWEpJiYhdGhpcy5wZWVrKFpuLlBhcmVudGhlc2lzUik7KWlmKCFlLmdldFBhcmFtZXRlcnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1vZHVsZUNvbmZpZ0RlY2xhcmF0aW9uKCkpKXJldHVybiB0aGlzLmZpbmlzaChlLENzLlZhcmlhYmxlTmFtZUV4cGVjdGVkKTtpZighdGhpcy5hY2NlcHQoWm4uUGFyZW50aGVzaXNSKSlyZXR1cm4gdGhpcy5maW5pc2goZSxDcy5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQpfX1yZXR1cm4gdGhpcy5hY2NlcHQoWm4uU2VtaUNvbG9uKXx8dGhpcy5hY2NlcHQoWm4uRU9GKT90aGlzLmZpbmlzaChlKTp0aGlzLmZpbmlzaChlLENzLlNlbWlDb2xvbkV4cGVjdGVkKX0sdC5wcm90b3R5cGUuX3BhcnNlTW9kdWxlQ29uZmlnRGVjbGFyYXRpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNyZWF0ZShQaSk7cmV0dXJuIGUuc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZVZhcmlhYmxlKCkpP3RoaXMuYWNjZXB0KFpuLkNvbG9uKSYmZS5zZXRWYWx1ZSh0aGlzLl9wYXJzZUV4cHIoITApKT8hdGhpcy5hY2NlcHQoWm4uRXhjbGFtYXRpb24pfHwhdGhpcy5oYXNXaGl0ZXNwYWNlKCkmJnRoaXMuYWNjZXB0SWRlbnQoImRlZmF1bHQiKT90aGlzLmZpbmlzaChlKTp0aGlzLmZpbmlzaChlLENzLlVua25vd25LZXl3b3JkKTp0aGlzLmZpbmlzaChlLENzLlZhcmlhYmxlVmFsdWVFeHBlY3RlZCxbXSxbWm4uQ29tbWEsWm4uUGFyZW50aGVzaXNSXSk6bnVsbH0sdC5wcm90b3R5cGUuX3BhcnNlRm9yd2FyZD1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAZm9yd2FyZCIpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKE9pKTtpZih0aGlzLmNvbnN1bWVUb2tlbigpLCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlU3RyaW5nTGl0ZXJhbCgpKSlyZXR1cm4gdGhpcy5maW5pc2goZSxDcy5TdHJpbmdMaXRlcmFsRXhwZWN0ZWQpO2lmKHRoaXMuYWNjZXB0SWRlbnQoIndpdGgiKSl7aWYoIXRoaXMuYWNjZXB0KFpuLlBhcmVudGhlc2lzTCkpcmV0dXJuIHRoaXMuZmluaXNoKGUsQ3MuTGVmdFBhcmVudGhlc2lzRXhwZWN0ZWQsW1puLlBhcmVudGhlc2lzUl0pO2lmKCFlLmdldFBhcmFtZXRlcnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1vZHVsZUNvbmZpZ0RlY2xhcmF0aW9uKCkpKXJldHVybiB0aGlzLmZpbmlzaChlLENzLlZhcmlhYmxlTmFtZUV4cGVjdGVkKTtmb3IoO3RoaXMuYWNjZXB0KFpuLkNvbW1hKSYmIXRoaXMucGVlayhabi5QYXJlbnRoZXNpc1IpOylpZighZS5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VNb2R1bGVDb25maWdEZWNsYXJhdGlvbigpKSlyZXR1cm4gdGhpcy5maW5pc2goZSxDcy5WYXJpYWJsZU5hbWVFeHBlY3RlZCk7aWYoIXRoaXMuYWNjZXB0KFpuLlBhcmVudGhlc2lzUikpcmV0dXJuIHRoaXMuZmluaXNoKGUsQ3MuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKX1pZighdGhpcy5wZWVrKFpuLlNlbWlDb2xvbikmJiF0aGlzLnBlZWsoWm4uRU9GKSl7aWYoIXRoaXMucGVla1JlZ0V4cChabi5JZGVudCwvYXN8aGlkZXxzaG93LykpcmV0dXJuIHRoaXMuZmluaXNoKGUsQ3MuVW5rbm93bktleXdvcmQpO2lmKHRoaXMuYWNjZXB0SWRlbnQoImFzIikpe3ZhciB0PXRoaXMuX3BhcnNlSWRlbnQoW2VpLkZvcndhcmRdKTtpZighZS5zZXRJZGVudGlmaWVyKHQpKXJldHVybiB0aGlzLmZpbmlzaChlLENzLklkZW50aWZpZXJFeHBlY3RlZCk7aWYodGhpcy5oYXNXaGl0ZXNwYWNlKCl8fCF0aGlzLmFjY2VwdERlbGltKCIqIikpcmV0dXJuIHRoaXMuZmluaXNoKGUsQ3MuV2lsZGNhcmRFeHBlY3RlZCl9aWYoKHRoaXMucGVla0lkZW50KCJoaWRlIil8fHRoaXMucGVla0lkZW50KCJzaG93IikpJiYhZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUZvcndhcmRWaXNpYmlsaXR5KCkpKXJldHVybiB0aGlzLmZpbmlzaChlLENzLklkZW50aWZpZXJPclZhcmlhYmxlRXhwZWN0ZWQpfXJldHVybiB0aGlzLmFjY2VwdChabi5TZW1pQ29sb24pfHx0aGlzLmFjY2VwdChabi5FT0YpP3RoaXMuZmluaXNoKGUpOnRoaXMuZmluaXNoKGUsQ3MuU2VtaUNvbG9uRXhwZWN0ZWQpfSx0LnByb3RvdHlwZS5fcGFyc2VGb3J3YXJkVmlzaWJpbGl0eT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuY3JlYXRlKExpKTtmb3IoZS5zZXRJZGVudGlmaWVyKHRoaXMuX3BhcnNlSWRlbnQoKSk7ZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVZhcmlhYmxlKCl8fHRoaXMuX3BhcnNlSWRlbnQoKSk7KXRoaXMuYWNjZXB0KFpuLkNvbW1hKTtyZXR1cm4gZS5nZXRDaGlsZHJlbigpLmxlbmd0aD4xP2U6bnVsbH0sdC5wcm90b3R5cGUuX3BhcnNlU3VwcG9ydHNDb25kaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VJbnRlcnBvbGF0aW9uKCl8fGUucHJvdG90eXBlLl9wYXJzZVN1cHBvcnRzQ29uZGl0aW9uLmNhbGwodGhpcyl9LHR9KHZsKSxDaD1mdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKHQsbil7cmV0dXJuKGU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsdCl7ZS5fX3Byb3RvX189dH18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pfSkodCxuKX07cmV0dXJuIGZ1bmN0aW9uKHQsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4mJm51bGwhPT1uKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcobikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gcigpe3RoaXMuY29uc3RydWN0b3I9dH1lKHQsbiksdC5wcm90b3R5cGU9bnVsbD09PW4/T2JqZWN0LmNyZWF0ZShuKTooci5wcm90b3R5cGU9bi5wcm90b3R5cGUsbmV3IHIpfX0oKSxraD1fbygpLF9oPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobixyKXt2YXIgaT1lLmNhbGwodGhpcywiJCIsbixyKXx8dGhpcztyZXR1cm4gRWgodC5zY3NzTW9kdWxlTG9hZGVycyksRWgodC5zY3NzTW9kdWxlQnVpbHRJbnMpLGl9cmV0dXJuIENoKHQsZSksdC5wcm90b3R5cGUuaXNJbXBvcnRQYXRoUGFyZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0PT09WnIuRm9yd2FyZHx8dD09PVpyLlVzZXx8ZS5wcm90b3R5cGUuaXNJbXBvcnRQYXRoUGFyZW50LmNhbGwodGhpcyx0KX0sdC5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbkZvckltcG9ydFBhdGg9ZnVuY3Rpb24obixyKXt2YXIgaT1uLmdldFBhcmVudCgpLnR5cGU7aWYoaT09PVpyLkZvcndhcmR8fGk9PT1aci5Vc2UpZm9yKHZhciBvPTAscz10LnNjc3NNb2R1bGVCdWlsdElucztvPHMubGVuZ3RoO28rKyl7dmFyIGE9c1tvXSxsPXtsYWJlbDphLmxhYmVsLGRvY3VtZW50YXRpb246YS5kb2N1bWVudGF0aW9uLHRleHRFZGl0Om9zLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UobiksIiciLmNvbmNhdChhLmxhYmVsLCInIikpLGtpbmQ6TXMuTW9kdWxlfTtyLml0ZW1zLnB1c2gobCl9cmV0dXJuIGUucHJvdG90eXBlLmdldENvbXBsZXRpb25Gb3JJbXBvcnRQYXRoLmNhbGwodGhpcyxuLHIpfSx0LnByb3RvdHlwZS5jcmVhdGVSZXBsYWNlRnVuY3Rpb249ZnVuY3Rpb24oKXt2YXIgZT0xO3JldHVybiBmdW5jdGlvbihuLHIpe3JldHVybiJcXCIrcisiOiAkeyIrZSsrKyI6IisodC52YXJpYWJsZURlZmF1bHRzW3JdfHwiIikrIn0ifX0sdC5wcm90b3R5cGUuY3JlYXRlRnVuY3Rpb25Qcm9wb3NhbHM9ZnVuY3Rpb24oZSx0LG4scil7Zm9yKHZhciBpPTAsbz1lO2k8by5sZW5ndGg7aSsrKXt2YXIgcz1vW2ldLGE9cy5mdW5jLnJlcGxhY2UoL1xbPyhcJFx3KylcXT8vZyx0aGlzLmNyZWF0ZVJlcGxhY2VGdW5jdGlvbigpKSxsPXtsYWJlbDpzLmZ1bmMuc3Vic3RyKDAscy5mdW5jLmluZGV4T2YoIigiKSksZGV0YWlsOnMuZnVuYyxkb2N1bWVudGF0aW9uOnMuZGVzYyx0ZXh0RWRpdDpvcy5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHQpLGEpLGluc2VydFRleHRGb3JtYXQ6T3MuU25pcHBldCxraW5kOk1zLkZ1bmN0aW9ufTtuJiYobC5zb3J0VGV4dD0ieiIpLHIuaXRlbXMucHVzaChsKX1yZXR1cm4gcn0sdC5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbnNGb3JTZWxlY3Rvcj1mdW5jdGlvbihuLHIsaSl7cmV0dXJuIHRoaXMuY3JlYXRlRnVuY3Rpb25Qcm9wb3NhbHModC5zZWxlY3RvckZ1bmNzLG51bGwsITAsaSksZS5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbnNGb3JTZWxlY3Rvci5jYWxsKHRoaXMsbixyLGkpfSx0LnByb3RvdHlwZS5nZXRUZXJtUHJvcG9zYWxzPWZ1bmN0aW9uKG4scixpKXt2YXIgbz10LmJ1aWx0SW5GdW5jcztyZXR1cm4gbiYmKG89by5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiFlLnR5cGV8fCFuLnJlc3RyaWN0aW9uc3x8LTEhPT1uLnJlc3RyaWN0aW9ucy5pbmRleE9mKGUudHlwZSl9KSkpLHRoaXMuY3JlYXRlRnVuY3Rpb25Qcm9wb3NhbHMobyxyLCEwLGkpLGUucHJvdG90eXBlLmdldFRlcm1Qcm9wb3NhbHMuY2FsbCh0aGlzLG4scixpKX0sdC5wcm90b3R5cGUuZ2V0Q29sb3JQcm9wb3NhbHM9ZnVuY3Rpb24obixyLGkpe3JldHVybiB0aGlzLmNyZWF0ZUZ1bmN0aW9uUHJvcG9zYWxzKHQuY29sb3JQcm9wb3NhbHMsciwhMSxpKSxlLnByb3RvdHlwZS5nZXRDb2xvclByb3Bvc2Fscy5jYWxsKHRoaXMsbixyLGkpfSx0LnByb3RvdHlwZS5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9uUHJvcGVydHk9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdGhpcy5nZXRDb21wbGV0aW9uRm9yQXREaXJlY3RpdmVzKG4pLHRoaXMuZ2V0Q29tcGxldGlvbnNGb3JTZWxlY3RvcihudWxsLCEwLG4pLGUucHJvdG90eXBlLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25Qcm9wZXJ0eS5jYWxsKHRoaXMsdCxuKX0sdC5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbnNGb3JFeHRlbmRzUmVmZXJlbmNlPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9MCxpPXRoaXMuZ2V0U3ltYm9sQ29udGV4dCgpLmZpbmRTeW1ib2xzQXRPZmZzZXQodGhpcy5vZmZzZXQsZWkuUnVsZSk7cjxpLmxlbmd0aDtyKyspe3ZhciBvPWlbcl0scz17bGFiZWw6by5uYW1lLHRleHRFZGl0Om9zLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UodCksby5uYW1lKSxraW5kOk1zLkZ1bmN0aW9ufTtuLml0ZW1zLnB1c2gocyl9cmV0dXJuIG59LHQucHJvdG90eXBlLmdldENvbXBsZXRpb25Gb3JBdERpcmVjdGl2ZXM9ZnVuY3Rpb24oZSl7dmFyIG47cmV0dXJuKG49ZS5pdGVtcykucHVzaC5hcHBseShuLHQuc2Nzc0F0RGlyZWN0aXZlcyksZX0sdC5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbkZvclRvcExldmVsPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmdldENvbXBsZXRpb25Gb3JBdERpcmVjdGl2ZXModCksdGhpcy5nZXRDb21wbGV0aW9uRm9yTW9kdWxlTG9hZGVycyh0KSxlLnByb3RvdHlwZS5nZXRDb21wbGV0aW9uRm9yVG9wTGV2ZWwuY2FsbCh0aGlzLHQpLHR9LHQucHJvdG90eXBlLmdldENvbXBsZXRpb25Gb3JNb2R1bGVMb2FkZXJzPWZ1bmN0aW9uKGUpe3ZhciBuO3JldHVybihuPWUuaXRlbXMpLnB1c2guYXBwbHkobix0LnNjc3NNb2R1bGVMb2FkZXJzKSxlfSx0LnZhcmlhYmxlRGVmYXVsdHM9eyRyZWQ6IjEiLCRncmVlbjoiMiIsJGJsdWU6IjMiLCRhbHBoYToiMS4wIiwkY29sb3I6IiMwMDAwMDAiLCR3ZWlnaHQ6IjAuNSIsJGh1ZToiMCIsJHNhdHVyYXRpb246IjAlIiwkbGlnaHRuZXNzOiIwJSIsJGRlZ3JlZXM6IjAiLCRhbW91bnQ6IjAiLCRzdHJpbmc6JyIiJywkc3Vic3RyaW5nOicicyInLCRudW1iZXI6IjAiLCRsaW1pdDoiMSJ9LHQuY29sb3JQcm9wb3NhbHM9W3tmdW5jOiJyZWQoJGNvbG9yKSIsZGVzYzpraCgic2Nzcy5idWlsdGluLnJlZCIsIkdldHMgdGhlIHJlZCBjb21wb25lbnQgb2YgYSBjb2xvci4iKX0se2Z1bmM6ImdyZWVuKCRjb2xvcikiLGRlc2M6a2goInNjc3MuYnVpbHRpbi5ncmVlbiIsIkdldHMgdGhlIGdyZWVuIGNvbXBvbmVudCBvZiBhIGNvbG9yLiIpfSx7ZnVuYzoiYmx1ZSgkY29sb3IpIixkZXNjOmtoKCJzY3NzLmJ1aWx0aW4uYmx1ZSIsIkdldHMgdGhlIGJsdWUgY29tcG9uZW50IG9mIGEgY29sb3IuIil9LHtmdW5jOiJtaXgoJGNvbG9yLCAkY29sb3IsIFskd2VpZ2h0XSkiLGRlc2M6a2goInNjc3MuYnVpbHRpbi5taXgiLCJNaXhlcyB0d28gY29sb3JzIHRvZ2V0aGVyLiIpfSx7ZnVuYzoiaHVlKCRjb2xvcikiLGRlc2M6a2goInNjc3MuYnVpbHRpbi5odWUiLCJHZXRzIHRoZSBodWUgY29tcG9uZW50IG9mIGEgY29sb3IuIil9LHtmdW5jOiJzYXR1cmF0aW9uKCRjb2xvcikiLGRlc2M6a2goInNjc3MuYnVpbHRpbi5zYXR1cmF0aW9uIiwiR2V0cyB0aGUgc2F0dXJhdGlvbiBjb21wb25lbnQgb2YgYSBjb2xvci4iKX0se2Z1bmM6ImxpZ2h0bmVzcygkY29sb3IpIixkZXNjOmtoKCJzY3NzLmJ1aWx0aW4ubGlnaHRuZXNzIiwiR2V0cyB0aGUgbGlnaHRuZXNzIGNvbXBvbmVudCBvZiBhIGNvbG9yLiIpfSx7ZnVuYzoiYWRqdXN0LWh1ZSgkY29sb3IsICRkZWdyZWVzKSIsZGVzYzpraCgic2Nzcy5idWlsdGluLmFkanVzdC1odWUiLCJDaGFuZ2VzIHRoZSBodWUgb2YgYSBjb2xvci4iKX0se2Z1bmM6ImxpZ2h0ZW4oJGNvbG9yLCAkYW1vdW50KSIsZGVzYzpraCgic2Nzcy5idWlsdGluLmxpZ2h0ZW4iLCJNYWtlcyBhIGNvbG9yIGxpZ2h0ZXIuIil9LHtmdW5jOiJkYXJrZW4oJGNvbG9yLCAkYW1vdW50KSIsZGVzYzpraCgic2Nzcy5idWlsdGluLmRhcmtlbiIsIk1ha2VzIGEgY29sb3IgZGFya2VyLiIpfSx7ZnVuYzoic2F0dXJhdGUoJGNvbG9yLCAkYW1vdW50KSIsZGVzYzpraCgic2Nzcy5idWlsdGluLnNhdHVyYXRlIiwiTWFrZXMgYSBjb2xvciBtb3JlIHNhdHVyYXRlZC4iKX0se2Z1bmM6ImRlc2F0dXJhdGUoJGNvbG9yLCAkYW1vdW50KSIsZGVzYzpraCgic2Nzcy5idWlsdGluLmRlc2F0dXJhdGUiLCJNYWtlcyBhIGNvbG9yIGxlc3Mgc2F0dXJhdGVkLiIpfSx7ZnVuYzoiZ3JheXNjYWxlKCRjb2xvcikiLGRlc2M6a2goInNjc3MuYnVpbHRpbi5ncmF5c2NhbGUiLCJDb252ZXJ0cyBhIGNvbG9yIHRvIGdyYXlzY2FsZS4iKX0se2Z1bmM6ImNvbXBsZW1lbnQoJGNvbG9yKSIsZGVzYzpraCgic2Nzcy5idWlsdGluLmNvbXBsZW1lbnQiLCJSZXR1cm5zIHRoZSBjb21wbGVtZW50IG9mIGEgY29sb3IuIil9LHtmdW5jOiJpbnZlcnQoJGNvbG9yKSIsZGVzYzpraCgic2Nzcy5idWlsdGluLmludmVydCIsIlJldHVybnMgdGhlIGludmVyc2Ugb2YgYSBjb2xvci4iKX0se2Z1bmM6ImFscGhhKCRjb2xvcikiLGRlc2M6a2goInNjc3MuYnVpbHRpbi5hbHBoYSIsIkdldHMgdGhlIG9wYWNpdHkgY29tcG9uZW50IG9mIGEgY29sb3IuIil9LHtmdW5jOiJvcGFjaXR5KCRjb2xvcikiLGRlc2M6IkdldHMgdGhlIGFscGhhIGNvbXBvbmVudCAob3BhY2l0eSkgb2YgYSBjb2xvci4ifSx7ZnVuYzoicmdiYSgkY29sb3IsICRhbHBoYSkiLGRlc2M6a2goInNjc3MuYnVpbHRpbi5yZ2JhIiwiQ2hhbmdlcyB0aGUgYWxwaGEgY29tcG9uZW50IGZvciBhIGNvbG9yLiIpfSx7ZnVuYzoib3BhY2lmeSgkY29sb3IsICRhbW91bnQpIixkZXNjOmtoKCJzY3NzLmJ1aWx0aW4ub3BhY2lmeSIsIk1ha2VzIGEgY29sb3IgbW9yZSBvcGFxdWUuIil9LHtmdW5jOiJmYWRlLWluKCRjb2xvciwgJGFtb3VudCkiLGRlc2M6a2goInNjc3MuYnVpbHRpbi5mYWRlLWluIiwiTWFrZXMgYSBjb2xvciBtb3JlIG9wYXF1ZS4iKX0se2Z1bmM6InRyYW5zcGFyZW50aXplKCRjb2xvciwgJGFtb3VudCkiLGRlc2M6a2goInNjc3MuYnVpbHRpbi50cmFuc3BhcmVudGl6ZSIsIk1ha2VzIGEgY29sb3IgbW9yZSB0cmFuc3BhcmVudC4iKX0se2Z1bmM6ImZhZGUtb3V0KCRjb2xvciwgJGFtb3VudCkiLGRlc2M6a2goInNjc3MuYnVpbHRpbi5mYWRlLW91dCIsIk1ha2VzIGEgY29sb3IgbW9yZSB0cmFuc3BhcmVudC4iKX0se2Z1bmM6ImFkanVzdC1jb2xvcigkY29sb3IsIFskcmVkXSwgWyRncmVlbl0sIFskYmx1ZV0sIFskaHVlXSwgWyRzYXR1cmF0aW9uXSwgWyRsaWdodG5lc3NdLCBbJGFscGhhXSkiLGRlc2M6a2goInNjc3MuYnVpbHRpbi5hZGp1c3QtY29sb3IiLCJJbmNyZWFzZXMgb3IgZGVjcmVhc2VzIG9uZSBvciBtb3JlIGNvbXBvbmVudHMgb2YgYSBjb2xvci4iKX0se2Z1bmM6InNjYWxlLWNvbG9yKCRjb2xvciwgWyRyZWRdLCBbJGdyZWVuXSwgWyRibHVlXSwgWyRzYXR1cmF0aW9uXSwgWyRsaWdodG5lc3NdLCBbJGFscGhhXSkiLGRlc2M6a2goInNjc3MuYnVpbHRpbi5zY2FsZS1jb2xvciIsIkZsdWlkbHkgc2NhbGVzIG9uZSBvciBtb3JlIHByb3BlcnRpZXMgb2YgYSBjb2xvci4iKX0se2Z1bmM6ImNoYW5nZS1jb2xvcigkY29sb3IsIFskcmVkXSwgWyRncmVlbl0sIFskYmx1ZV0sIFskaHVlXSwgWyRzYXR1cmF0aW9uXSwgWyRsaWdodG5lc3NdLCBbJGFscGhhXSkiLGRlc2M6a2goInNjc3MuYnVpbHRpbi5jaGFuZ2UtY29sb3IiLCJDaGFuZ2VzIG9uZSBvciBtb3JlIHByb3BlcnRpZXMgb2YgYSBjb2xvci4iKX0se2Z1bmM6ImllLWhleC1zdHIoJGNvbG9yKSIsZGVzYzpraCgic2Nzcy5idWlsdGluLmllLWhleC1zdHIiLCJDb252ZXJ0cyBhIGNvbG9yIGludG8gdGhlIGZvcm1hdCB1bmRlcnN0b29kIGJ5IElFIGZpbHRlcnMuIil9XSx0LnNlbGVjdG9yRnVuY3M9W3tmdW5jOiJzZWxlY3Rvci1uZXN0KCRzZWxlY3RvcnPigKYpIixkZXNjOmtoKCJzY3NzLmJ1aWx0aW4uc2VsZWN0b3ItbmVzdCIsIk5lc3RzIHNlbGVjdG9yIGJlbmVhdGggb25lIGFub3RoZXIgbGlrZSB0aGV5IHdvdWxkIGJlIG5lc3RlZCBpbiB0aGUgc3R5bGVzaGVldC4iKX0se2Z1bmM6InNlbGVjdG9yLWFwcGVuZCgkc2VsZWN0b3Jz4oCmKSIsZGVzYzpraCgic2Nzcy5idWlsdGluLnNlbGVjdG9yLWFwcGVuZCIsIkFwcGVuZHMgc2VsZWN0b3JzIHRvIG9uZSBhbm90aGVyIHdpdGhvdXQgc3BhY2VzIGluIGJldHdlZW4uIil9LHtmdW5jOiJzZWxlY3Rvci1leHRlbmQoJHNlbGVjdG9yLCAkZXh0ZW5kZWUsICRleHRlbmRlcikiLGRlc2M6a2goInNjc3MuYnVpbHRpbi5zZWxlY3Rvci1leHRlbmQiLCJFeHRlbmRzICRleHRlbmRlZSB3aXRoICRleHRlbmRlciB3aXRoaW4gJHNlbGVjdG9yLiIpfSx7ZnVuYzoic2VsZWN0b3ItcmVwbGFjZSgkc2VsZWN0b3IsICRvcmlnaW5hbCwgJHJlcGxhY2VtZW50KSIsZGVzYzpraCgic2Nzcy5idWlsdGluLnNlbGVjdG9yLXJlcGxhY2UiLCJSZXBsYWNlcyAkb3JpZ2luYWwgd2l0aCAkcmVwbGFjZW1lbnQgd2l0aGluICRzZWxlY3Rvci4iKX0se2Z1bmM6InNlbGVjdG9yLXVuaWZ5KCRzZWxlY3RvcjEsICRzZWxlY3RvcjIpIixkZXNjOmtoKCJzY3NzLmJ1aWx0aW4uc2VsZWN0b3ItdW5pZnkiLCJVbmlmaWVzIHR3byBzZWxlY3RvcnMgdG8gcHJvZHVjZSBhIHNlbGVjdG9yIHRoYXQgbWF0Y2hlcyBlbGVtZW50cyBtYXRjaGVkIGJ5IGJvdGguIil9LHtmdW5jOiJpcy1zdXBlcnNlbGVjdG9yKCRzdXBlciwgJHN1YikiLGRlc2M6a2goInNjc3MuYnVpbHRpbi5pcy1zdXBlcnNlbGVjdG9yIiwiUmV0dXJucyB3aGV0aGVyICRzdXBlciBtYXRjaGVzIGFsbCB0aGUgZWxlbWVudHMgJHN1YiBkb2VzLCBhbmQgcG9zc2libHkgbW9yZS4iKX0se2Z1bmM6InNpbXBsZS1zZWxlY3RvcnMoJHNlbGVjdG9yKSIsZGVzYzpraCgic2Nzcy5idWlsdGluLnNpbXBsZS1zZWxlY3RvcnMiLCJSZXR1cm5zIHRoZSBzaW1wbGUgc2VsZWN0b3JzIHRoYXQgY29tcHJpc2UgYSBjb21wb3VuZCBzZWxlY3Rvci4iKX0se2Z1bmM6InNlbGVjdG9yLXBhcnNlKCRzZWxlY3RvcikiLGRlc2M6a2goInNjc3MuYnVpbHRpbi5zZWxlY3Rvci1wYXJzZSIsIlBhcnNlcyBhIHNlbGVjdG9yIGludG8gdGhlIGZvcm1hdCByZXR1cm5lZCBieSAmLiIpfV0sdC5idWlsdEluRnVuY3M9W3tmdW5jOiJ1bnF1b3RlKCRzdHJpbmcpIixkZXNjOmtoKCJzY3NzLmJ1aWx0aW4udW5xdW90ZSIsIlJlbW92ZXMgcXVvdGVzIGZyb20gYSBzdHJpbmcuIil9LHtmdW5jOiJxdW90ZSgkc3RyaW5nKSIsZGVzYzpraCgic2Nzcy5idWlsdGluLnF1b3RlIiwiQWRkcyBxdW90ZXMgdG8gYSBzdHJpbmcuIil9LHtmdW5jOiJzdHItbGVuZ3RoKCRzdHJpbmcpIixkZXNjOmtoKCJzY3NzLmJ1aWx0aW4uc3RyLWxlbmd0aCIsIlJldHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIGEgc3RyaW5nLiIpfSx7ZnVuYzoic3RyLWluc2VydCgkc3RyaW5nLCAkaW5zZXJ0LCAkaW5kZXgpIixkZXNjOmtoKCJzY3NzLmJ1aWx0aW4uc3RyLWluc2VydCIsIkluc2VydHMgJGluc2VydCBpbnRvICRzdHJpbmcgYXQgJGluZGV4LiIpfSx7ZnVuYzoic3RyLWluZGV4KCRzdHJpbmcsICRzdWJzdHJpbmcpIixkZXNjOmtoKCJzY3NzLmJ1aWx0aW4uc3RyLWluZGV4IiwiUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VyYW5jZSBvZiAkc3Vic3RyaW5nIGluICRzdHJpbmcuIil9LHtmdW5jOiJzdHItc2xpY2UoJHN0cmluZywgJHN0YXJ0LWF0LCBbJGVuZC1hdF0pIixkZXNjOmtoKCJzY3NzLmJ1aWx0aW4uc3RyLXNsaWNlIiwiRXh0cmFjdHMgYSBzdWJzdHJpbmcgZnJvbSAkc3RyaW5nLiIpfSx7ZnVuYzoidG8tdXBwZXItY2FzZSgkc3RyaW5nKSIsZGVzYzpraCgic2Nzcy5idWlsdGluLnRvLXVwcGVyLWNhc2UiLCJDb252ZXJ0cyBhIHN0cmluZyB0byB1cHBlciBjYXNlLiIpfSx7ZnVuYzoidG8tbG93ZXItY2FzZSgkc3RyaW5nKSIsZGVzYzpraCgic2Nzcy5idWlsdGluLnRvLWxvd2VyLWNhc2UiLCJDb252ZXJ0cyBhIHN0cmluZyB0byBsb3dlciBjYXNlLiIpfSx7ZnVuYzoicGVyY2VudGFnZSgkbnVtYmVyKSIsZGVzYzpraCgic2Nzcy5idWlsdGluLnBlcmNlbnRhZ2UiLCJDb252ZXJ0cyBhIHVuaXRsZXNzIG51bWJlciB0byBhIHBlcmNlbnRhZ2UuIiksdHlwZToicGVyY2VudGFnZSJ9LHtmdW5jOiJyb3VuZCgkbnVtYmVyKSIsZGVzYzpraCgic2Nzcy5idWlsdGluLnJvdW5kIiwiUm91bmRzIGEgbnVtYmVyIHRvIHRoZSBuZWFyZXN0IHdob2xlIG51bWJlci4iKX0se2Z1bmM6ImNlaWwoJG51bWJlcikiLGRlc2M6a2goInNjc3MuYnVpbHRpbi5jZWlsIiwiUm91bmRzIGEgbnVtYmVyIHVwIHRvIHRoZSBuZXh0IHdob2xlIG51bWJlci4iKX0se2Z1bmM6ImZsb29yKCRudW1iZXIpIixkZXNjOmtoKCJzY3NzLmJ1aWx0aW4uZmxvb3IiLCJSb3VuZHMgYSBudW1iZXIgZG93biB0byB0aGUgcHJldmlvdXMgd2hvbGUgbnVtYmVyLiIpfSx7ZnVuYzoiYWJzKCRudW1iZXIpIixkZXNjOmtoKCJzY3NzLmJ1aWx0aW4uYWJzIiwiUmV0dXJucyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgYSBudW1iZXIuIil9LHtmdW5jOiJtaW4oJG51bWJlcnMpIixkZXNjOmtoKCJzY3NzLmJ1aWx0aW4ubWluIiwiRmluZHMgdGhlIG1pbmltdW0gb2Ygc2V2ZXJhbCBudW1iZXJzLiIpfSx7ZnVuYzoibWF4KCRudW1iZXJzKSIsZGVzYzpraCgic2Nzcy5idWlsdGluLm1heCIsIkZpbmRzIHRoZSBtYXhpbXVtIG9mIHNldmVyYWwgbnVtYmVycy4iKX0se2Z1bmM6InJhbmRvbShbJGxpbWl0XSkiLGRlc2M6a2goInNjc3MuYnVpbHRpbi5yYW5kb20iLCJSZXR1cm5zIGEgcmFuZG9tIG51bWJlci4iKX0se2Z1bmM6Imxlbmd0aCgkbGlzdCkiLGRlc2M6a2goInNjc3MuYnVpbHRpbi5sZW5ndGgiLCJSZXR1cm5zIHRoZSBsZW5ndGggb2YgYSBsaXN0LiIpfSx7ZnVuYzoibnRoKCRsaXN0LCAkbikiLGRlc2M6a2goInNjc3MuYnVpbHRpbi5udGgiLCJSZXR1cm5zIGEgc3BlY2lmaWMgaXRlbSBpbiBhIGxpc3QuIil9LHtmdW5jOiJzZXQtbnRoKCRsaXN0LCAkbiwgJHZhbHVlKSIsZGVzYzpraCgic2Nzcy5idWlsdGluLnNldC1udGgiLCJSZXBsYWNlcyB0aGUgbnRoIGl0ZW0gaW4gYSBsaXN0LiIpfSx7ZnVuYzoiam9pbigkbGlzdDEsICRsaXN0MiwgWyRzZXBhcmF0b3JdKSIsZGVzYzpraCgic2Nzcy5idWlsdGluLmpvaW4iLCJKb2lucyB0b2dldGhlciB0d28gbGlzdHMgaW50byBvbmUuIil9LHtmdW5jOiJhcHBlbmQoJGxpc3QxLCAkdmFsLCBbJHNlcGFyYXRvcl0pIixkZXNjOmtoKCJzY3NzLmJ1aWx0aW4uYXBwZW5kIiwiQXBwZW5kcyBhIHNpbmdsZSB2YWx1ZSBvbnRvIHRoZSBlbmQgb2YgYSBsaXN0LiIpfSx7ZnVuYzoiemlwKCRsaXN0cykiLGRlc2M6a2goInNjc3MuYnVpbHRpbi56aXAiLCJDb21iaW5lcyBzZXZlcmFsIGxpc3RzIGludG8gYSBzaW5nbGUgbXVsdGlkaW1lbnNpb25hbCBsaXN0LiIpfSx7ZnVuYzoiaW5kZXgoJGxpc3QsICR2YWx1ZSkiLGRlc2M6a2goInNjc3MuYnVpbHRpbi5pbmRleCIsIlJldHVybnMgdGhlIHBvc2l0aW9uIG9mIGEgdmFsdWUgd2l0aGluIGEgbGlzdC4iKX0se2Z1bmM6Imxpc3Qtc2VwYXJhdG9yKCNsaXN0KSIsZGVzYzpraCgic2Nzcy5idWlsdGluLmxpc3Qtc2VwYXJhdG9yIiwiUmV0dXJucyB0aGUgc2VwYXJhdG9yIG9mIGEgbGlzdC4iKX0se2Z1bmM6Im1hcC1nZXQoJG1hcCwgJGtleSkiLGRlc2M6a2goInNjc3MuYnVpbHRpbi5tYXAtZ2V0IiwiUmV0dXJucyB0aGUgdmFsdWUgaW4gYSBtYXAgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4ga2V5LiIpfSx7ZnVuYzoibWFwLW1lcmdlKCRtYXAxLCAkbWFwMikiLGRlc2M6a2goInNjc3MuYnVpbHRpbi5tYXAtbWVyZ2UiLCJNZXJnZXMgdHdvIG1hcHMgdG9nZXRoZXIgaW50byBhIG5ldyBtYXAuIil9LHtmdW5jOiJtYXAtcmVtb3ZlKCRtYXAsICRrZXlzKSIsZGVzYzpraCgic2Nzcy5idWlsdGluLm1hcC1yZW1vdmUiLCJSZXR1cm5zIGEgbmV3IG1hcCB3aXRoIGtleXMgcmVtb3ZlZC4iKX0se2Z1bmM6Im1hcC1rZXlzKCRtYXApIixkZXNjOmtoKCJzY3NzLmJ1aWx0aW4ubWFwLWtleXMiLCJSZXR1cm5zIGEgbGlzdCBvZiBhbGwga2V5cyBpbiBhIG1hcC4iKX0se2Z1bmM6Im1hcC12YWx1ZXMoJG1hcCkiLGRlc2M6a2goInNjc3MuYnVpbHRpbi5tYXAtdmFsdWVzIiwiUmV0dXJucyBhIGxpc3Qgb2YgYWxsIHZhbHVlcyBpbiBhIG1hcC4iKX0se2Z1bmM6Im1hcC1oYXMta2V5KCRtYXAsICRrZXkpIixkZXNjOmtoKCJzY3NzLmJ1aWx0aW4ubWFwLWhhcy1rZXkiLCJSZXR1cm5zIHdoZXRoZXIgYSBtYXAgaGFzIGEgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4ga2V5LiIpfSx7ZnVuYzoia2V5d29yZHMoJGFyZ3MpIixkZXNjOmtoKCJzY3NzLmJ1aWx0aW4ua2V5d29yZHMiLCJSZXR1cm5zIHRoZSBrZXl3b3JkcyBwYXNzZWQgdG8gYSBmdW5jdGlvbiB0aGF0IHRha2VzIHZhcmlhYmxlIGFyZ3VtZW50cy4iKX0se2Z1bmM6ImZlYXR1cmUtZXhpc3RzKCRmZWF0dXJlKSIsZGVzYzpraCgic2Nzcy5idWlsdGluLmZlYXR1cmUtZXhpc3RzIiwiUmV0dXJucyB3aGV0aGVyIGEgZmVhdHVyZSBleGlzdHMgaW4gdGhlIGN1cnJlbnQgU2FzcyBydW50aW1lLiIpfSx7ZnVuYzoidmFyaWFibGUtZXhpc3RzKCRuYW1lKSIsZGVzYzpraCgic2Nzcy5idWlsdGluLnZhcmlhYmxlLWV4aXN0cyIsIlJldHVybnMgd2hldGhlciBhIHZhcmlhYmxlIHdpdGggdGhlIGdpdmVuIG5hbWUgZXhpc3RzIGluIHRoZSBjdXJyZW50IHNjb3BlLiIpfSx7ZnVuYzoiZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygkbmFtZSkiLGRlc2M6a2goInNjc3MuYnVpbHRpbi5nbG9iYWwtdmFyaWFibGUtZXhpc3RzIiwiUmV0dXJucyB3aGV0aGVyIGEgdmFyaWFibGUgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBleGlzdHMgaW4gdGhlIGdsb2JhbCBzY29wZS4iKX0se2Z1bmM6ImZ1bmN0aW9uLWV4aXN0cygkbmFtZSkiLGRlc2M6a2goInNjc3MuYnVpbHRpbi5mdW5jdGlvbi1leGlzdHMiLCJSZXR1cm5zIHdoZXRoZXIgYSBmdW5jdGlvbiB3aXRoIHRoZSBnaXZlbiBuYW1lIGV4aXN0cy4iKX0se2Z1bmM6Im1peGluLWV4aXN0cygkbmFtZSkiLGRlc2M6a2goInNjc3MuYnVpbHRpbi5taXhpbi1leGlzdHMiLCJSZXR1cm5zIHdoZXRoZXIgYSBtaXhpbiB3aXRoIHRoZSBnaXZlbiBuYW1lIGV4aXN0cy4iKX0se2Z1bmM6Imluc3BlY3QoJHZhbHVlKSIsZGVzYzpraCgic2Nzcy5idWlsdGluLmluc3BlY3QiLCJSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSB2YWx1ZSBhcyBpdCB3b3VsZCBiZSByZXByZXNlbnRlZCBpbiBTYXNzLiIpfSx7ZnVuYzoidHlwZS1vZigkdmFsdWUpIixkZXNjOmtoKCJzY3NzLmJ1aWx0aW4udHlwZS1vZiIsIlJldHVybnMgdGhlIHR5cGUgb2YgYSB2YWx1ZS4iKX0se2Z1bmM6InVuaXQoJG51bWJlcikiLGRlc2M6a2goInNjc3MuYnVpbHRpbi51bml0IiwiUmV0dXJucyB0aGUgdW5pdChzKSBhc3NvY2lhdGVkIHdpdGggYSBudW1iZXIuIil9LHtmdW5jOiJ1bml0bGVzcygkbnVtYmVyKSIsZGVzYzpraCgic2Nzcy5idWlsdGluLnVuaXRsZXNzIiwiUmV0dXJucyB3aGV0aGVyIGEgbnVtYmVyIGhhcyB1bml0cy4iKX0se2Z1bmM6ImNvbXBhcmFibGUoJG51bWJlcjEsICRudW1iZXIyKSIsZGVzYzpraCgic2Nzcy5idWlsdGluLmNvbXBhcmFibGUiLCJSZXR1cm5zIHdoZXRoZXIgdHdvIG51bWJlcnMgY2FuIGJlIGFkZGVkLCBzdWJ0cmFjdGVkLCBvciBjb21wYXJlZC4iKX0se2Z1bmM6ImNhbGwoJG5hbWUsICRhcmdz4oCmKSIsZGVzYzpraCgic2Nzcy5idWlsdGluLmNhbGwiLCJEeW5hbWljYWxseSBjYWxscyBhIFNhc3MgZnVuY3Rpb24uIil9XSx0LnNjc3NBdERpcmVjdGl2ZXM9W3tsYWJlbDoiQGV4dGVuZCIsZG9jdW1lbnRhdGlvbjpraCgic2Nzcy5idWlsdGluLkBleHRlbmQiLCJJbmhlcml0cyB0aGUgc3R5bGVzIG9mIGFub3RoZXIgc2VsZWN0b3IuIiksa2luZDpNcy5LZXl3b3JkfSx7bGFiZWw6IkBhdC1yb290Iixkb2N1bWVudGF0aW9uOmtoKCJzY3NzLmJ1aWx0aW4uQGF0LXJvb3QiLCJDYXVzZXMgb25lIG9yIG1vcmUgcnVsZXMgdG8gYmUgZW1pdHRlZCBhdCB0aGUgcm9vdCBvZiB0aGUgZG9jdW1lbnQuIiksa2luZDpNcy5LZXl3b3JkfSx7bGFiZWw6IkBkZWJ1ZyIsZG9jdW1lbnRhdGlvbjpraCgic2Nzcy5idWlsdGluLkBkZWJ1ZyIsIlByaW50cyB0aGUgdmFsdWUgb2YgYW4gZXhwcmVzc2lvbiB0byB0aGUgc3RhbmRhcmQgZXJyb3Igb3V0cHV0IHN0cmVhbS4gVXNlZnVsIGZvciBkZWJ1Z2dpbmcgY29tcGxpY2F0ZWQgU2FzcyBmaWxlcy4iKSxraW5kOk1zLktleXdvcmR9LHtsYWJlbDoiQHdhcm4iLGRvY3VtZW50YXRpb246a2goInNjc3MuYnVpbHRpbi5Ad2FybiIsIlByaW50cyB0aGUgdmFsdWUgb2YgYW4gZXhwcmVzc2lvbiB0byB0aGUgc3RhbmRhcmQgZXJyb3Igb3V0cHV0IHN0cmVhbS4gVXNlZnVsIGZvciBsaWJyYXJpZXMgdGhhdCBuZWVkIHRvIHdhcm4gdXNlcnMgb2YgZGVwcmVjYXRpb25zIG9yIHJlY292ZXJpbmcgZnJvbSBtaW5vciBtaXhpbiB1c2FnZSBtaXN0YWtlcy4gV2FybmluZ3MgY2FuIGJlIHR1cm5lZCBvZmYgd2l0aCB0aGUgYC0tcXVpZXRgIGNvbW1hbmQtbGluZSBvcHRpb24gb3IgdGhlIGA6cXVpZXRgIFNhc3Mgb3B0aW9uLiIpLGtpbmQ6TXMuS2V5d29yZH0se2xhYmVsOiJAZXJyb3IiLGRvY3VtZW50YXRpb246a2goInNjc3MuYnVpbHRpbi5AZXJyb3IiLCJUaHJvd3MgdGhlIHZhbHVlIG9mIGFuIGV4cHJlc3Npb24gYXMgYSBmYXRhbCBlcnJvciB3aXRoIHN0YWNrIHRyYWNlLiBVc2VmdWwgZm9yIHZhbGlkYXRpbmcgYXJndW1lbnRzIHRvIG1peGlucyBhbmQgZnVuY3Rpb25zLiIpLGtpbmQ6TXMuS2V5d29yZH0se2xhYmVsOiJAaWYiLGRvY3VtZW50YXRpb246a2goInNjc3MuYnVpbHRpbi5AaWYiLCJJbmNsdWRlcyB0aGUgYm9keSBpZiB0aGUgZXhwcmVzc2lvbiBkb2VzIG5vdCBldmFsdWF0ZSB0byBgZmFsc2VgIG9yIGBudWxsYC4iKSxpbnNlcnRUZXh0OiJAaWYgJHsxOmV4cHJ9IHtcblx0JDBcbn0iLGluc2VydFRleHRGb3JtYXQ6T3MuU25pcHBldCxraW5kOk1zLktleXdvcmR9LHtsYWJlbDoiQGZvciIsZG9jdW1lbnRhdGlvbjpraCgic2Nzcy5idWlsdGluLkBmb3IiLCJGb3IgbG9vcCB0aGF0IHJlcGVhdGVkbHkgb3V0cHV0cyBhIHNldCBvZiBzdHlsZXMgZm9yIGVhY2ggYCR2YXJgIGluIHRoZSBgZnJvbS90aHJvdWdoYCBvciBgZnJvbS90b2AgY2xhdXNlLiIpLGluc2VydFRleHQ6IkBmb3IgXFwkJHsxOnZhcn0gZnJvbSAkezI6c3RhcnR9ICR7M3x0byx0aHJvdWdofH0gJHs0OmVuZH0ge1xuXHQkMFxufSIsaW5zZXJ0VGV4dEZvcm1hdDpPcy5TbmlwcGV0LGtpbmQ6TXMuS2V5d29yZH0se2xhYmVsOiJAZWFjaCIsZG9jdW1lbnRhdGlvbjpraCgic2Nzcy5idWlsdGluLkBlYWNoIiwiRWFjaCBsb29wIHRoYXQgc2V0cyBgJHZhcmAgdG8gZWFjaCBpdGVtIGluIHRoZSBsaXN0IG9yIG1hcCwgdGhlbiBvdXRwdXRzIHRoZSBzdHlsZXMgaXQgY29udGFpbnMgdXNpbmcgdGhhdCB2YWx1ZSBvZiBgJHZhcmAuIiksaW5zZXJ0VGV4dDoiQGVhY2ggXFwkJHsxOnZhcn0gaW4gJHsyOmxpc3R9IHtcblx0JDBcbn0iLGluc2VydFRleHRGb3JtYXQ6T3MuU25pcHBldCxraW5kOk1zLktleXdvcmR9LHtsYWJlbDoiQHdoaWxlIixkb2N1bWVudGF0aW9uOmtoKCJzY3NzLmJ1aWx0aW4uQHdoaWxlIiwiV2hpbGUgbG9vcCB0aGF0IHRha2VzIGFuIGV4cHJlc3Npb24gYW5kIHJlcGVhdGVkbHkgb3V0cHV0cyB0aGUgbmVzdGVkIHN0eWxlcyB1bnRpbCB0aGUgc3RhdGVtZW50IGV2YWx1YXRlcyB0byBgZmFsc2VgLiIpLGluc2VydFRleHQ6IkB3aGlsZSAkezE6Y29uZGl0aW9ufSB7XG5cdCQwXG59IixpbnNlcnRUZXh0Rm9ybWF0Ok9zLlNuaXBwZXQsa2luZDpNcy5LZXl3b3JkfSx7bGFiZWw6IkBtaXhpbiIsZG9jdW1lbnRhdGlvbjpraCgic2Nzcy5idWlsdGluLkBtaXhpbiIsIkRlZmluZXMgc3R5bGVzIHRoYXQgY2FuIGJlIHJlLXVzZWQgdGhyb3VnaG91dCB0aGUgc3R5bGVzaGVldCB3aXRoIGBAaW5jbHVkZWAuIiksaW5zZXJ0VGV4dDoiQG1peGluICR7MTpuYW1lfSB7XG5cdCQwXG59IixpbnNlcnRUZXh0Rm9ybWF0Ok9zLlNuaXBwZXQsa2luZDpNcy5LZXl3b3JkfSx7bGFiZWw6IkBpbmNsdWRlIixkb2N1bWVudGF0aW9uOmtoKCJzY3NzLmJ1aWx0aW4uQGluY2x1ZGUiLCJJbmNsdWRlcyB0aGUgc3R5bGVzIGRlZmluZWQgYnkgYW5vdGhlciBtaXhpbiBpbnRvIHRoZSBjdXJyZW50IHJ1bGUuIiksa2luZDpNcy5LZXl3b3JkfSx7bGFiZWw6IkBmdW5jdGlvbiIsZG9jdW1lbnRhdGlvbjpraCgic2Nzcy5idWlsdGluLkBmdW5jdGlvbiIsIkRlZmluZXMgY29tcGxleCBvcGVyYXRpb25zIHRoYXQgY2FuIGJlIHJlLXVzZWQgdGhyb3VnaG91dCBzdHlsZXNoZWV0cy4iKSxraW5kOk1zLktleXdvcmR9XSx0LnNjc3NNb2R1bGVMb2FkZXJzPVt7bGFiZWw6IkB1c2UiLGRvY3VtZW50YXRpb246a2goInNjc3MuYnVpbHRpbi5AdXNlIiwiTG9hZHMgbWl4aW5zLCBmdW5jdGlvbnMsIGFuZCB2YXJpYWJsZXMgZnJvbSBvdGhlciBTYXNzIHN0eWxlc2hlZXRzIGFzICdtb2R1bGVzJywgYW5kIGNvbWJpbmVzIENTUyBmcm9tIG11bHRpcGxlIHN0eWxlc2hlZXRzIHRvZ2V0aGVyLiIpLHJlZmVyZW5jZXM6W3tuYW1lOiJTYXNzIGRvY3VtZW50YXRpb24iLHVybDoiaHR0cHM6Ly9zYXNzLWxhbmcuY29tL2RvY3VtZW50YXRpb24vYXQtcnVsZXMvdXNlIn1dLGluc2VydFRleHQ6IkB1c2UgJDA7IixpbnNlcnRUZXh0Rm9ybWF0Ok9zLlNuaXBwZXQsa2luZDpNcy5LZXl3b3JkfSx7bGFiZWw6IkBmb3J3YXJkIixkb2N1bWVudGF0aW9uOmtoKCJzY3NzLmJ1aWx0aW4uQGZvcndhcmQiLCJMb2FkcyBhIFNhc3Mgc3R5bGVzaGVldCBhbmQgbWFrZXMgaXRzIG1peGlucywgZnVuY3Rpb25zLCBhbmQgdmFyaWFibGVzIGF2YWlsYWJsZSB3aGVuIHRoaXMgc3R5bGVzaGVldCBpcyBsb2FkZWQgd2l0aCB0aGUgQHVzZSBydWxlLiIpLHJlZmVyZW5jZXM6W3tuYW1lOiJTYXNzIGRvY3VtZW50YXRpb24iLHVybDoiaHR0cHM6Ly9zYXNzLWxhbmcuY29tL2RvY3VtZW50YXRpb24vYXQtcnVsZXMvZm9yd2FyZCJ9XSxpbnNlcnRUZXh0OiJAZm9yd2FyZCAkMDsiLGluc2VydFRleHRGb3JtYXQ6T3MuU25pcHBldCxraW5kOk1zLktleXdvcmR9XSx0LnNjc3NNb2R1bGVCdWlsdElucz1be2xhYmVsOiJzYXNzOm1hdGgiLGRvY3VtZW50YXRpb246a2goInNjc3MuYnVpbHRpbi5zYXNzOm1hdGgiLCJQcm92aWRlcyBmdW5jdGlvbnMgdGhhdCBvcGVyYXRlIG9uIG51bWJlcnMuIikscmVmZXJlbmNlczpbe25hbWU6IlNhc3MgZG9jdW1lbnRhdGlvbiIsdXJsOiJodHRwczovL3Nhc3MtbGFuZy5jb20vZG9jdW1lbnRhdGlvbi9tb2R1bGVzL21hdGgifV19LHtsYWJlbDoic2FzczpzdHJpbmciLGRvY3VtZW50YXRpb246a2goInNjc3MuYnVpbHRpbi5zYXNzOnN0cmluZyIsIk1ha2VzIGl0IGVhc3kgdG8gY29tYmluZSwgc2VhcmNoLCBvciBzcGxpdCBhcGFydCBzdHJpbmdzLiIpLHJlZmVyZW5jZXM6W3tuYW1lOiJTYXNzIGRvY3VtZW50YXRpb24iLHVybDoiaHR0cHM6Ly9zYXNzLWxhbmcuY29tL2RvY3VtZW50YXRpb24vbW9kdWxlcy9zdHJpbmcifV19LHtsYWJlbDoic2Fzczpjb2xvciIsZG9jdW1lbnRhdGlvbjpraCgic2Nzcy5idWlsdGluLnNhc3M6Y29sb3IiLCJHZW5lcmF0ZXMgbmV3IGNvbG9ycyBiYXNlZCBvbiBleGlzdGluZyBvbmVzLCBtYWtpbmcgaXQgZWFzeSB0byBidWlsZCBjb2xvciB0aGVtZXMuIikscmVmZXJlbmNlczpbe25hbWU6IlNhc3MgZG9jdW1lbnRhdGlvbiIsdXJsOiJodHRwczovL3Nhc3MtbGFuZy5jb20vZG9jdW1lbnRhdGlvbi9tb2R1bGVzL2NvbG9yIn1dfSx7bGFiZWw6InNhc3M6bGlzdCIsZG9jdW1lbnRhdGlvbjpraCgic2Nzcy5idWlsdGluLnNhc3M6bGlzdCIsIkxldHMgeW91IGFjY2VzcyBhbmQgbW9kaWZ5IHZhbHVlcyBpbiBsaXN0cy4iKSxyZWZlcmVuY2VzOlt7bmFtZToiU2FzcyBkb2N1bWVudGF0aW9uIix1cmw6Imh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kb2N1bWVudGF0aW9uL21vZHVsZXMvbGlzdCJ9XX0se2xhYmVsOiJzYXNzOm1hcCIsZG9jdW1lbnRhdGlvbjpraCgic2Nzcy5idWlsdGluLnNhc3M6bWFwIiwiTWFrZXMgaXQgcG9zc2libGUgdG8gbG9vayB1cCB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGEga2V5IGluIGEgbWFwLCBhbmQgbXVjaCBtb3JlLiIpLHJlZmVyZW5jZXM6W3tuYW1lOiJTYXNzIGRvY3VtZW50YXRpb24iLHVybDoiaHR0cHM6Ly9zYXNzLWxhbmcuY29tL2RvY3VtZW50YXRpb24vbW9kdWxlcy9tYXAifV19LHtsYWJlbDoic2FzczpzZWxlY3RvciIsZG9jdW1lbnRhdGlvbjpraCgic2Nzcy5idWlsdGluLnNhc3M6c2VsZWN0b3IiLCJQcm92aWRlcyBhY2Nlc3MgdG8gU2Fzc+KAmXMgcG93ZXJmdWwgc2VsZWN0b3IgZW5naW5lLiIpLHJlZmVyZW5jZXM6W3tuYW1lOiJTYXNzIGRvY3VtZW50YXRpb24iLHVybDoiaHR0cHM6Ly9zYXNzLWxhbmcuY29tL2RvY3VtZW50YXRpb24vbW9kdWxlcy9zZWxlY3RvciJ9XX0se2xhYmVsOiJzYXNzOm1ldGEiLGRvY3VtZW50YXRpb246a2goInNjc3MuYnVpbHRpbi5zYXNzOm1ldGEiLCJFeHBvc2VzIHRoZSBkZXRhaWxzIG9mIFNhc3PigJlzIGlubmVyIHdvcmtpbmdzLiIpLHJlZmVyZW5jZXM6W3tuYW1lOiJTYXNzIGRvY3VtZW50YXRpb24iLHVybDoiaHR0cHM6Ly9zYXNzLWxhbmcuY29tL2RvY3VtZW50YXRpb24vbW9kdWxlcy9tZXRhIn1dfV0sdH0oSmwpO2Z1bmN0aW9uIEVoKGUpe2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aWYoZS5kb2N1bWVudGF0aW9uJiZlLnJlZmVyZW5jZXMmJmUucmVmZXJlbmNlcy5sZW5ndGg+MCl7dmFyIHQ9InN0cmluZyI9PXR5cGVvZiBlLmRvY3VtZW50YXRpb24/e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTplLmRvY3VtZW50YXRpb259OntraW5kOiJtYXJrZG93biIsdmFsdWU6ZS5kb2N1bWVudGF0aW9uLnZhbHVlfTt0LnZhbHVlKz0iXG5cbiIsdC52YWx1ZSs9ZS5yZWZlcmVuY2VzLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIlsiLmNvbmNhdChlLm5hbWUsIl0oIikuY29uY2F0KGUudXJsLCIpIil9KSkuam9pbigiIHwgIiksZS5kb2N1bWVudGF0aW9uPXR9fSkpfXZhciBGaCxSaCxEaCxOaD1mdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKHQsbil7cmV0dXJuKGU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsdCl7ZS5fX3Byb3RvX189dH18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pfSkodCxuKX07cmV0dXJuIGZ1bmN0aW9uKHQsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4mJm51bGwhPT1uKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcobikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gcigpe3RoaXMuY29uc3RydWN0b3I9dH1lKHQsbiksdC5wcm90b3R5cGU9bnVsbD09PW4/T2JqZWN0LmNyZWF0ZShuKTooci5wcm90b3R5cGU9bi5wcm90b3R5cGUsbmV3IHIpfX0oKSxUaD0iLyIuY2hhckNvZGVBdCgwKSxBaD0iXG4iLmNoYXJDb2RlQXQoMCksemg9IlxyIi5jaGFyQ29kZUF0KDApLEloPSJcZiIuY2hhckNvZGVBdCgwKSxNaD0iYCIuY2hhckNvZGVBdCgwKSxQaD0iLiIuY2hhckNvZGVBdCgwKSxPaD1abi5DdXN0b21Ub2tlbixMaD1PaCsrLFdoPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gbnVsbCE9PWUmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBOaCh0LGUpLHQucHJvdG90eXBlLnNjYW5OZXh0PWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMuZXNjYXBlZEphdmFTY3JpcHQoKTtyZXR1cm4gbnVsbCE9PW4/dGhpcy5maW5pc2hUb2tlbih0LG4pOnRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXJzKFtQaCxQaCxQaF0pP3RoaXMuZmluaXNoVG9rZW4odCxMaCk6ZS5wcm90b3R5cGUuc2Nhbk5leHQuY2FsbCh0aGlzLHQpfSx0LnByb3RvdHlwZS5jb21tZW50PWZ1bmN0aW9uKCl7cmV0dXJuISFlLnByb3RvdHlwZS5jb21tZW50LmNhbGwodGhpcyl8fCEodGhpcy5pblVSTHx8IXRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXJzKFtUaCxUaF0pKSYmKHRoaXMuc3RyZWFtLmFkdmFuY2VXaGlsZUNoYXIoKGZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlIEFoOmNhc2Ugemg6Y2FzZSBJaDpyZXR1cm4hMTtkZWZhdWx0OnJldHVybiEwfX0pKSwhMCl9LHQucHJvdG90eXBlLmVzY2FwZWRKYXZhU2NyaXB0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RyZWFtLnBlZWtDaGFyKCk9PT1NaD8odGhpcy5zdHJlYW0uYWR2YW5jZSgxKSx0aGlzLnN0cmVhbS5hZHZhbmNlV2hpbGVDaGFyKChmdW5jdGlvbihlKXtyZXR1cm4gZSE9PU1ofSkpLHRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXIoTWgpP1puLkVzY2FwZWRKYXZhU2NyaXB0OlpuLkJhZEVzY2FwZWRKYXZhU2NyaXB0KTpudWxsfSx0fSgkciksVmg9ZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbih0LG4pe3JldHVybihlPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKX0pKHQsbil9O3JldHVybiBmdW5jdGlvbih0LG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuJiZudWxsIT09bil0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKG4pKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPXR9ZSh0LG4pLHQucHJvdG90eXBlPW51bGw9PT1uP09iamVjdC5jcmVhdGUobik6KHIucHJvdG90eXBlPW4ucHJvdG90eXBlLG5ldyByKX19KCksVWg9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBlLmNhbGwodGhpcyxuZXcgV2gpfHx0aGlzfXJldHVybiBWaCh0LGUpLHQucHJvdG90eXBlLl9wYXJzZVN0eWxlc2hlZXRTdGF0ZW1lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSExKSx0aGlzLnBlZWsoWm4uQXRLZXl3b3JkKT90aGlzLl9wYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24oKXx8dGhpcy5fcGFyc2VQbHVnaW4oKXx8ZS5wcm90b3R5cGUuX3BhcnNlU3R5bGVzaGVldEF0U3RhdGVtZW50LmNhbGwodGhpcyx0KTp0aGlzLl90cnlQYXJzZU1peGluRGVjbGFyYXRpb24oKXx8dGhpcy5fdHJ5UGFyc2VNaXhpblJlZmVyZW5jZSgpfHx0aGlzLl9wYXJzZUZ1bmN0aW9uKCl8fHRoaXMuX3BhcnNlUnVsZXNldCghMCl9LHQucHJvdG90eXBlLl9wYXJzZUltcG9ydD1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAaW1wb3J0IikmJiF0aGlzLnBlZWtLZXl3b3JkKCJAaW1wb3J0LW9uY2UiKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZShJaSk7aWYodGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmFjY2VwdChabi5QYXJlbnRoZXNpc0wpKXtpZighdGhpcy5hY2NlcHQoWm4uSWRlbnQpKXJldHVybiB0aGlzLmZpbmlzaChlLENzLklkZW50aWZpZXJFeHBlY3RlZCxbWm4uU2VtaUNvbG9uXSk7ZG97aWYoIXRoaXMuYWNjZXB0KFpuLkNvbW1hKSlicmVha313aGlsZSh0aGlzLmFjY2VwdChabi5JZGVudCkpO2lmKCF0aGlzLmFjY2VwdChabi5QYXJlbnRoZXNpc1IpKXJldHVybiB0aGlzLmZpbmlzaChlLENzLlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCxbWm4uU2VtaUNvbG9uXSl9cmV0dXJuIGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VVUklMaXRlcmFsKCkpfHxlLmFkZENoaWxkKHRoaXMuX3BhcnNlU3RyaW5nTGl0ZXJhbCgpKT8odGhpcy5wZWVrKFpuLlNlbWlDb2xvbil8fHRoaXMucGVlayhabi5FT0YpfHxlLnNldE1lZGlhbGlzdCh0aGlzLl9wYXJzZU1lZGlhUXVlcnlMaXN0KCkpLHRoaXMuZmluaXNoKGUpKTp0aGlzLmZpbmlzaChlLENzLlVSSU9yU3RyaW5nRXhwZWN0ZWQsW1puLlNlbWlDb2xvbl0pfSx0LnByb3RvdHlwZS5fcGFyc2VQbHVnaW49ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQHBsdWdpbiIpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlTm9kZShaci5QbHVnaW4pO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VTdHJpbmdMaXRlcmFsKCkpP3RoaXMuYWNjZXB0KFpuLlNlbWlDb2xvbik/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSxDcy5TZW1pQ29sb25FeHBlY3RlZCk6dGhpcy5maW5pc2goZSxDcy5TdHJpbmdMaXRlcmFsRXhwZWN0ZWQpfSx0LnByb3RvdHlwZS5fcGFyc2VNZWRpYVF1ZXJ5PWZ1bmN0aW9uKCl7dmFyIHQ9ZS5wcm90b3R5cGUuX3BhcnNlTWVkaWFRdWVyeS5jYWxsKHRoaXMpO2lmKCF0KXt2YXIgbj10aGlzLmNyZWF0ZShqaSk7cmV0dXJuIG4uYWRkQ2hpbGQodGhpcy5fcGFyc2VWYXJpYWJsZSgpKT90aGlzLmZpbmlzaChuKTpudWxsfXJldHVybiB0fSx0LnByb3RvdHlwZS5fcGFyc2VNZWRpYURlY2xhcmF0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0hMSksdGhpcy5fdHJ5UGFyc2VSdWxlc2V0KGUpfHx0aGlzLl90cnlUb1BhcnNlRGVjbGFyYXRpb24oKXx8dGhpcy5fdHJ5UGFyc2VNaXhpbkRlY2xhcmF0aW9uKCl8fHRoaXMuX3RyeVBhcnNlTWl4aW5SZWZlcmVuY2UoKXx8dGhpcy5fcGFyc2VEZXRhY2hlZFJ1bGVTZXRNaXhpbigpfHx0aGlzLl9wYXJzZVN0eWxlc2hlZXRTdGF0ZW1lbnQoZSl9LHQucHJvdG90eXBlLl9wYXJzZU1lZGlhRmVhdHVyZU5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VJZGVudCgpfHx0aGlzLl9wYXJzZVZhcmlhYmxlKCl9LHQucHJvdG90eXBlLl9wYXJzZVZhcmlhYmxlRGVjbGFyYXRpb249ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9W10pO3ZhciB0PXRoaXMuY3JlYXRlKGxvKSxuPXRoaXMubWFyaygpO2lmKCF0LnNldFZhcmlhYmxlKHRoaXMuX3BhcnNlVmFyaWFibGUoITApKSlyZXR1cm4gbnVsbDtpZighdGhpcy5hY2NlcHQoWm4uQ29sb24pKXJldHVybiB0aGlzLnJlc3RvcmVBdE1hcmsobiksbnVsbDtpZih0aGlzLnByZXZUb2tlbiYmKHQuY29sb25Qb3NpdGlvbj10aGlzLnByZXZUb2tlbi5vZmZzZXQpLHQuc2V0VmFsdWUodGhpcy5fcGFyc2VEZXRhY2hlZFJ1bGVTZXQoKSkpdC5uZWVkc1NlbWljb2xvbj0hMTtlbHNlIGlmKCF0LnNldFZhbHVlKHRoaXMuX3BhcnNlRXhwcigpKSlyZXR1cm4gdGhpcy5maW5pc2godCxDcy5WYXJpYWJsZVZhbHVlRXhwZWN0ZWQsW10sZSk7cmV0dXJuIHQuYWRkQ2hpbGQodGhpcy5fcGFyc2VQcmlvKCkpLHRoaXMucGVlayhabi5TZW1pQ29sb24pJiYodC5zZW1pY29sb25Qb3NpdGlvbj10aGlzLnRva2VuLm9mZnNldCksdGhpcy5maW5pc2godCl9LHQucHJvdG90eXBlLl9wYXJzZURldGFjaGVkUnVsZVNldD1mdW5jdGlvbigpe3ZhciBlPXRoaXMubWFyaygpO2lmKHRoaXMucGVla0RlbGltKCIjIil8fHRoaXMucGVla0RlbGltKCIuIikpe2lmKHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5oYXNXaGl0ZXNwYWNlKCl8fCF0aGlzLmFjY2VwdChabi5QYXJlbnRoZXNpc0wpKXJldHVybiB0aGlzLnJlc3RvcmVBdE1hcmsoZSksbnVsbDt2YXIgdD10aGlzLmNyZWF0ZShnbyk7aWYodC5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VNaXhpblBhcmFtZXRlcigpKSlmb3IoOyh0aGlzLmFjY2VwdChabi5Db21tYSl8fHRoaXMuYWNjZXB0KFpuLlNlbWlDb2xvbikpJiYhdGhpcy5wZWVrKFpuLlBhcmVudGhlc2lzUik7KXQuZ2V0UGFyYW1ldGVycygpLmFkZENoaWxkKHRoaXMuX3BhcnNlTWl4aW5QYXJhbWV0ZXIoKSl8fHRoaXMubWFya0Vycm9yKHQsQ3MuSWRlbnRpZmllckV4cGVjdGVkLFtdLFtabi5QYXJlbnRoZXNpc1JdKTtpZighdGhpcy5hY2NlcHQoWm4uUGFyZW50aGVzaXNSKSlyZXR1cm4gdGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGx9aWYoIXRoaXMucGVlayhabi5DdXJseUwpKXJldHVybiBudWxsO3ZhciBuPXRoaXMuY3JlYXRlKGRpKTtyZXR1cm4gdGhpcy5fcGFyc2VCb2R5KG4sdGhpcy5fcGFyc2VEZXRhY2hlZFJ1bGVTZXRCb2R5LmJpbmQodGhpcykpLHRoaXMuZmluaXNoKG4pfSx0LnByb3RvdHlwZS5fcGFyc2VEZXRhY2hlZFJ1bGVTZXRCb2R5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyeVBhcnNlS2V5ZnJhbWVTZWxlY3RvcigpfHx0aGlzLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbigpfSx0LnByb3RvdHlwZS5fYWRkTG9va3VwQ2hpbGRyZW49ZnVuY3Rpb24oZSl7aWYoIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VMb29rdXBWYWx1ZSgpKSlyZXR1cm4hMTtmb3IodmFyIHQ9ITE7dGhpcy5wZWVrKFpuLkJyYWNrZXRMKSYmKHQ9ITApLGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VMb29rdXBWYWx1ZSgpKTspdD0hMTtyZXR1cm4hdH0sdC5wcm90b3R5cGUuX3BhcnNlTG9va3VwVmFsdWU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNyZWF0ZShvaSksdD10aGlzLm1hcmsoKTtyZXR1cm4gdGhpcy5hY2NlcHQoWm4uQnJhY2tldEwpJiYoKGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VWYXJpYWJsZSghMSwhMCkpfHxlLmFkZENoaWxkKHRoaXMuX3BhcnNlUHJvcGVydHlJZGVudGlmaWVyKCkpKSYmdGhpcy5hY2NlcHQoWm4uQnJhY2tldFIpfHx0aGlzLmFjY2VwdChabi5CcmFja2V0UikpP2U6KHRoaXMucmVzdG9yZUF0TWFyayh0KSxudWxsKX0sdC5wcm90b3R5cGUuX3BhcnNlVmFyaWFibGU9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT1lJiYoZT0hMSksdm9pZCAwPT09dCYmKHQ9ITEpO3ZhciBuPSFlJiZ0aGlzLnBlZWtEZWxpbSgiJCIpO2lmKCF0aGlzLnBlZWtEZWxpbSgiQCIpJiYhbiYmIXRoaXMucGVlayhabi5BdEtleXdvcmQpKXJldHVybiBudWxsO2Zvcih2YXIgcj10aGlzLmNyZWF0ZShobyksaT10aGlzLm1hcmsoKTt0aGlzLmFjY2VwdERlbGltKCJAIil8fCFlJiZ0aGlzLmFjY2VwdERlbGltKCIkIik7KWlmKHRoaXMuaGFzV2hpdGVzcGFjZSgpKXJldHVybiB0aGlzLnJlc3RvcmVBdE1hcmsoaSksbnVsbDtyZXR1cm4odGhpcy5hY2NlcHQoWm4uQXRLZXl3b3JkKXx8dGhpcy5hY2NlcHQoWm4uSWRlbnQpKSYmKHR8fCF0aGlzLnBlZWsoWm4uQnJhY2tldEwpfHx0aGlzLl9hZGRMb29rdXBDaGlsZHJlbihyKSk/cjoodGhpcy5yZXN0b3JlQXRNYXJrKGkpLG51bGwpfSx0LnByb3RvdHlwZS5fcGFyc2VUZXJtRXhwcmVzc2lvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJzZVZhcmlhYmxlKCl8fHRoaXMuX3BhcnNlRXNjYXBlZCgpfHxlLnByb3RvdHlwZS5fcGFyc2VUZXJtRXhwcmVzc2lvbi5jYWxsKHRoaXMpfHx0aGlzLl90cnlQYXJzZU1peGluUmVmZXJlbmNlKCExKX0sdC5wcm90b3R5cGUuX3BhcnNlRXNjYXBlZD1mdW5jdGlvbigpe2lmKHRoaXMucGVlayhabi5Fc2NhcGVkSmF2YVNjcmlwdCl8fHRoaXMucGVlayhabi5CYWRFc2NhcGVkSmF2YVNjcmlwdCkpe3ZhciBlPXRoaXMuY3JlYXRlTm9kZShaci5Fc2NhcGVkVmFsdWUpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuZmluaXNoKGUpfWlmKHRoaXMucGVla0RlbGltKCJ+Iikpe2U9dGhpcy5jcmVhdGVOb2RlKFpyLkVzY2FwZWRWYWx1ZSk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5hY2NlcHQoWm4uU3RyaW5nKXx8dGhpcy5hY2NlcHQoWm4uRXNjYXBlZEphdmFTY3JpcHQpP3RoaXMuZmluaXNoKGUpOnRoaXMuZmluaXNoKGUsQ3MuVGVybUV4cGVjdGVkKX1yZXR1cm4gbnVsbH0sdC5wcm90b3R5cGUuX3BhcnNlT3BlcmF0b3I9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9wYXJzZUd1YXJkT3BlcmF0b3IoKTtyZXR1cm4gdHx8ZS5wcm90b3R5cGUuX3BhcnNlT3BlcmF0b3IuY2FsbCh0aGlzKX0sdC5wcm90b3R5cGUuX3BhcnNlR3VhcmRPcGVyYXRvcj1mdW5jdGlvbigpe2lmKHRoaXMucGVla0RlbGltKCI+Iikpe3ZhciBlPXRoaXMuY3JlYXRlTm9kZShaci5PcGVyYXRvcik7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5hY2NlcHREZWxpbSgiPSIpLGV9aWYodGhpcy5wZWVrRGVsaW0oIj0iKSl7ZT10aGlzLmNyZWF0ZU5vZGUoWnIuT3BlcmF0b3IpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuYWNjZXB0RGVsaW0oIjwiKSxlfWlmKHRoaXMucGVla0RlbGltKCI8Iikpe2U9dGhpcy5jcmVhdGVOb2RlKFpyLk9wZXJhdG9yKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmFjY2VwdERlbGltKCI9IiksZX1yZXR1cm4gbnVsbH0sdC5wcm90b3R5cGUuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGVlayhabi5BdEtleXdvcmQpP3RoaXMuX3BhcnNlS2V5ZnJhbWUoKXx8dGhpcy5fcGFyc2VNZWRpYSghMCl8fHRoaXMuX3BhcnNlSW1wb3J0KCl8fHRoaXMuX3BhcnNlU3VwcG9ydHMoITApfHx0aGlzLl9wYXJzZURldGFjaGVkUnVsZVNldE1peGluKCl8fHRoaXMuX3BhcnNlVmFyaWFibGVEZWNsYXJhdGlvbigpfHxlLnByb3RvdHlwZS5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb25BdFN0YXRlbWVudC5jYWxsKHRoaXMpOnRoaXMuX3RyeVBhcnNlTWl4aW5EZWNsYXJhdGlvbigpfHx0aGlzLl90cnlQYXJzZVJ1bGVzZXQoITApfHx0aGlzLl90cnlQYXJzZU1peGluUmVmZXJlbmNlKCl8fHRoaXMuX3BhcnNlRnVuY3Rpb24oKXx8dGhpcy5fcGFyc2VFeHRlbmQoKXx8ZS5wcm90b3R5cGUuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uLmNhbGwodGhpcyl9LHQucHJvdG90eXBlLl9wYXJzZUtleWZyYW1lSWRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VJZGVudChbZWkuS2V5ZnJhbWVdKXx8dGhpcy5fcGFyc2VWYXJpYWJsZSgpfSx0LnByb3RvdHlwZS5fcGFyc2VLZXlmcmFtZVNlbGVjdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlRGV0YWNoZWRSdWxlU2V0TWl4aW4oKXx8ZS5wcm90b3R5cGUuX3BhcnNlS2V5ZnJhbWVTZWxlY3Rvci5jYWxsKHRoaXMpfSx0LnByb3RvdHlwZS5fcGFyc2VTaW1wbGVTZWxlY3RvckJvZHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VTZWxlY3RvckNvbWJpbmF0b3IoKXx8ZS5wcm90b3R5cGUuX3BhcnNlU2ltcGxlU2VsZWN0b3JCb2R5LmNhbGwodGhpcyl9LHQucHJvdG90eXBlLl9wYXJzZVNlbGVjdG9yPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuY3JlYXRlKHVpKSxuPSExO2ZvcihlJiYobj10LmFkZENoaWxkKHRoaXMuX3BhcnNlQ29tYmluYXRvcigpKSk7dC5hZGRDaGlsZCh0aGlzLl9wYXJzZVNpbXBsZVNlbGVjdG9yKCkpOyl7bj0hMDt2YXIgcj10aGlzLm1hcmsoKTtpZih0LmFkZENoaWxkKHRoaXMuX3BhcnNlR3VhcmQoKSkmJnRoaXMucGVlayhabi5DdXJseUwpKWJyZWFrO3RoaXMucmVzdG9yZUF0TWFyayhyKSx0LmFkZENoaWxkKHRoaXMuX3BhcnNlQ29tYmluYXRvcigpKX1yZXR1cm4gbj90aGlzLmZpbmlzaCh0KTpudWxsfSx0LnByb3RvdHlwZS5fcGFyc2VTZWxlY3RvckNvbWJpbmF0b3I9ZnVuY3Rpb24oKXtpZih0aGlzLnBlZWtEZWxpbSgiJiIpKXt2YXIgZT10aGlzLmNyZWF0ZU5vZGUoWnIuU2VsZWN0b3JDb21iaW5hdG9yKTtmb3IodGhpcy5jb25zdW1lVG9rZW4oKTshdGhpcy5oYXNXaGl0ZXNwYWNlKCkmJih0aGlzLmFjY2VwdERlbGltKCItIil8fHRoaXMuYWNjZXB0KFpuLk51bSl8fHRoaXMuYWNjZXB0KFpuLkRpbWVuc2lvbil8fGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKXx8dGhpcy5hY2NlcHREZWxpbSgiJiIpKTspO3JldHVybiB0aGlzLmZpbmlzaChlKX1yZXR1cm4gbnVsbH0sdC5wcm90b3R5cGUuX3BhcnNlU2VsZWN0b3JJZGVudD1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtJbnRlcnBvbGF0ZWRJZGVudCgpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlTm9kZShaci5TZWxlY3RvckludGVycG9sYXRpb24pO3JldHVybiB0aGlzLl9hY2NlcHRJbnRlcnBvbGF0ZWRJZGVudChlKT90aGlzLmZpbmlzaChlKTpudWxsfSx0LnByb3RvdHlwZS5fcGFyc2VQcm9wZXJ0eUlkZW50aWZpZXI9ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9ITEpO3ZhciB0PS9eW1x3LV0rLztpZighdGhpcy5wZWVrSW50ZXJwb2xhdGVkSWRlbnQoKSYmIXRoaXMucGVla1JlZ0V4cCh0aGlzLnRva2VuLnR5cGUsdCkpcmV0dXJuIG51bGw7dmFyIG49dGhpcy5tYXJrKCkscj10aGlzLmNyZWF0ZShsaSk7ci5pc0N1c3RvbVByb3BlcnR5PXRoaXMuYWNjZXB0RGVsaW0oIi0iKSYmdGhpcy5hY2NlcHREZWxpbSgiLSIpO3JldHVybihlP3IuaXNDdXN0b21Qcm9wZXJ0eT9yLmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSk6ci5hZGRDaGlsZCh0aGlzLl9wYXJzZVJlZ2V4cCh0KSk6ci5pc0N1c3RvbVByb3BlcnR5P3RoaXMuX2FjY2VwdEludGVycG9sYXRlZElkZW50KHIpOnRoaXMuX2FjY2VwdEludGVycG9sYXRlZElkZW50KHIsdCkpPyhlfHx0aGlzLmhhc1doaXRlc3BhY2UoKXx8KHRoaXMuYWNjZXB0RGVsaW0oIisiKSx0aGlzLmhhc1doaXRlc3BhY2UoKXx8dGhpcy5hY2NlcHRJZGVudCgiXyIpKSx0aGlzLmZpbmlzaChyKSk6KHRoaXMucmVzdG9yZUF0TWFyayhuKSxudWxsKX0sdC5wcm90b3R5cGUucGVla0ludGVycG9sYXRlZElkZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGVlayhabi5JZGVudCl8fHRoaXMucGVla0RlbGltKCJAIil8fHRoaXMucGVla0RlbGltKCIkIil8fHRoaXMucGVla0RlbGltKCItIil9LHQucHJvdG90eXBlLl9hY2NlcHRJbnRlcnBvbGF0ZWRJZGVudD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10aGlzLHI9ITEsaT1mdW5jdGlvbigpe3ZhciBlPW4ubWFyaygpO3JldHVybiBuLmFjY2VwdERlbGltKCItIikmJihuLmhhc1doaXRlc3BhY2UoKXx8bi5hY2NlcHREZWxpbSgiLSIpLG4uaGFzV2hpdGVzcGFjZSgpKT8obi5yZXN0b3JlQXRNYXJrKGUpLG51bGwpOm4uX3BhcnNlSW50ZXJwb2xhdGlvbigpfSxvPXQ/ZnVuY3Rpb24oKXtyZXR1cm4gbi5hY2NlcHRSZWdleHAodCl9OmZ1bmN0aW9uKCl7cmV0dXJuIG4uYWNjZXB0KFpuLklkZW50KX07KG8oKXx8ZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUludGVycG9sYXRpb24oKXx8dGhpcy50cnkoaSkpKSYmKHI9ITAsIXRoaXMuaGFzV2hpdGVzcGFjZSgpKTspO3JldHVybiByfSx0LnByb3RvdHlwZS5fcGFyc2VJbnRlcnBvbGF0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5tYXJrKCk7aWYodGhpcy5wZWVrRGVsaW0oIkAiKXx8dGhpcy5wZWVrRGVsaW0oIiQiKSl7dmFyIHQ9dGhpcy5jcmVhdGVOb2RlKFpyLkludGVycG9sYXRpb24pO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuaGFzV2hpdGVzcGFjZSgpfHwhdGhpcy5hY2NlcHQoWm4uQ3VybHlMKT8odGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGwpOnQuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKT90aGlzLmFjY2VwdChabi5DdXJseVIpP3RoaXMuZmluaXNoKHQpOnRoaXMuZmluaXNoKHQsQ3MuUmlnaHRDdXJseUV4cGVjdGVkKTp0aGlzLmZpbmlzaCh0LENzLklkZW50aWZpZXJFeHBlY3RlZCl9cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLl90cnlQYXJzZU1peGluRGVjbGFyYXRpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm1hcmsoKSx0PXRoaXMuY3JlYXRlKGdvKTtpZighdC5zZXRJZGVudGlmaWVyKHRoaXMuX3BhcnNlTWl4aW5EZWNsYXJhdGlvbklkZW50aWZpZXIoKSl8fCF0aGlzLmFjY2VwdChabi5QYXJlbnRoZXNpc0wpKXJldHVybiB0aGlzLnJlc3RvcmVBdE1hcmsoZSksbnVsbDtpZih0LmdldFBhcmFtZXRlcnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1peGluUGFyYW1ldGVyKCkpKWZvcig7KHRoaXMuYWNjZXB0KFpuLkNvbW1hKXx8dGhpcy5hY2NlcHQoWm4uU2VtaUNvbG9uKSkmJiF0aGlzLnBlZWsoWm4uUGFyZW50aGVzaXNSKTspdC5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VNaXhpblBhcmFtZXRlcigpKXx8dGhpcy5tYXJrRXJyb3IodCxDcy5JZGVudGlmaWVyRXhwZWN0ZWQsW10sW1puLlBhcmVudGhlc2lzUl0pO3JldHVybiB0aGlzLmFjY2VwdChabi5QYXJlbnRoZXNpc1IpPyh0LnNldEd1YXJkKHRoaXMuX3BhcnNlR3VhcmQoKSksdGhpcy5wZWVrKFpuLkN1cmx5TCk/dGhpcy5fcGFyc2VCb2R5KHQsdGhpcy5fcGFyc2VNaXhJbkJvZHlEZWNsYXJhdGlvbi5iaW5kKHRoaXMpKToodGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGwpKToodGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGwpfSx0LnByb3RvdHlwZS5fcGFyc2VNaXhJbkJvZHlEZWNsYXJhdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJzZUZvbnRGYWNlKCl8fHRoaXMuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uKCl9LHQucHJvdG90eXBlLl9wYXJzZU1peGluRGVjbGFyYXRpb25JZGVudGlmaWVyPWZ1bmN0aW9uKCl7dmFyIGU7aWYodGhpcy5wZWVrRGVsaW0oIiMiKXx8dGhpcy5wZWVrRGVsaW0oIi4iKSl7aWYoZT10aGlzLmNyZWF0ZShsaSksdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmhhc1doaXRlc3BhY2UoKXx8IWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKSlyZXR1cm4gbnVsbH1lbHNle2lmKCF0aGlzLnBlZWsoWm4uSGFzaCkpcmV0dXJuIG51bGw7ZT10aGlzLmNyZWF0ZShsaSksdGhpcy5jb25zdW1lVG9rZW4oKX1yZXR1cm4gZS5yZWZlcmVuY2VUeXBlcz1bZWkuTWl4aW5dLHRoaXMuZmluaXNoKGUpfSx0LnByb3RvdHlwZS5fcGFyc2VQc2V1ZG89ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrKFpuLkNvbG9uKSlyZXR1cm4gbnVsbDt2YXIgdD10aGlzLm1hcmsoKSxuPXRoaXMuY3JlYXRlKHBvKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmFjY2VwdElkZW50KCJleHRlbmQiKT90aGlzLl9jb21wbGV0ZUV4dGVuZHMobik6KHRoaXMucmVzdG9yZUF0TWFyayh0KSxlLnByb3RvdHlwZS5fcGFyc2VQc2V1ZG8uY2FsbCh0aGlzKSl9LHQucHJvdG90eXBlLl9wYXJzZUV4dGVuZD1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtEZWxpbSgiJiIpKXJldHVybiBudWxsO3ZhciBlPXRoaXMubWFyaygpLHQ9dGhpcy5jcmVhdGUocG8pO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLCF0aGlzLmhhc1doaXRlc3BhY2UoKSYmdGhpcy5hY2NlcHQoWm4uQ29sb24pJiZ0aGlzLmFjY2VwdElkZW50KCJleHRlbmQiKT90aGlzLl9jb21wbGV0ZUV4dGVuZHModCk6KHRoaXMucmVzdG9yZUF0TWFyayhlKSxudWxsKX0sdC5wcm90b3R5cGUuX2NvbXBsZXRlRXh0ZW5kcz1mdW5jdGlvbihlKXtpZighdGhpcy5hY2NlcHQoWm4uUGFyZW50aGVzaXNMKSlyZXR1cm4gdGhpcy5maW5pc2goZSxDcy5MZWZ0UGFyZW50aGVzaXNFeHBlY3RlZCk7dmFyIHQ9ZS5nZXRTZWxlY3RvcnMoKTtpZighdC5hZGRDaGlsZCh0aGlzLl9wYXJzZVNlbGVjdG9yKCEwKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUsQ3MuU2VsZWN0b3JFeHBlY3RlZCk7Zm9yKDt0aGlzLmFjY2VwdChabi5Db21tYSk7KWlmKCF0LmFkZENoaWxkKHRoaXMuX3BhcnNlU2VsZWN0b3IoITApKSlyZXR1cm4gdGhpcy5maW5pc2goZSxDcy5TZWxlY3RvckV4cGVjdGVkKTtyZXR1cm4gdGhpcy5hY2NlcHQoWm4uUGFyZW50aGVzaXNSKT90aGlzLmZpbmlzaChlKTp0aGlzLmZpbmlzaChlLENzLlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCl9LHQucHJvdG90eXBlLl9wYXJzZURldGFjaGVkUnVsZVNldE1peGluPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVlayhabi5BdEtleXdvcmQpKXJldHVybiBudWxsO3ZhciBlPXRoaXMubWFyaygpLHQ9dGhpcy5jcmVhdGUoZm8pO3JldHVybiF0LmFkZENoaWxkKHRoaXMuX3BhcnNlVmFyaWFibGUoITApKXx8IXRoaXMuaGFzV2hpdGVzcGFjZSgpJiZ0aGlzLmFjY2VwdChabi5QYXJlbnRoZXNpc0wpP3RoaXMuYWNjZXB0KFpuLlBhcmVudGhlc2lzUik/dGhpcy5maW5pc2godCk6dGhpcy5maW5pc2godCxDcy5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQpOih0aGlzLnJlc3RvcmVBdE1hcmsoZSksbnVsbCl9LHQucHJvdG90eXBlLl90cnlQYXJzZU1peGluUmVmZXJlbmNlPWZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPSEwKTtmb3IodmFyIHQ9dGhpcy5tYXJrKCksbj10aGlzLmNyZWF0ZShmbykscj10aGlzLl9wYXJzZU1peGluRGVjbGFyYXRpb25JZGVudGlmaWVyKCk7cjspe3RoaXMuYWNjZXB0RGVsaW0oIj4iKTt2YXIgaT10aGlzLl9wYXJzZU1peGluRGVjbGFyYXRpb25JZGVudGlmaWVyKCk7aWYoIWkpYnJlYWs7bi5nZXROYW1lc3BhY2VzKCkuYWRkQ2hpbGQocikscj1pfWlmKCFuLnNldElkZW50aWZpZXIocikpcmV0dXJuIHRoaXMucmVzdG9yZUF0TWFyayh0KSxudWxsO3ZhciBvPSExO2lmKHRoaXMuYWNjZXB0KFpuLlBhcmVudGhlc2lzTCkpe2lmKG89ITAsbi5nZXRBcmd1bWVudHMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1peGluQXJndW1lbnQoKSkpZm9yKDsodGhpcy5hY2NlcHQoWm4uQ29tbWEpfHx0aGlzLmFjY2VwdChabi5TZW1pQ29sb24pKSYmIXRoaXMucGVlayhabi5QYXJlbnRoZXNpc1IpOylpZighbi5nZXRBcmd1bWVudHMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1peGluQXJndW1lbnQoKSkpcmV0dXJuIHRoaXMuZmluaXNoKG4sQ3MuRXhwcmVzc2lvbkV4cGVjdGVkKTtpZighdGhpcy5hY2NlcHQoWm4uUGFyZW50aGVzaXNSKSlyZXR1cm4gdGhpcy5maW5pc2gobixDcy5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQpO3IucmVmZXJlbmNlVHlwZXM9W2VpLk1peGluXX1lbHNlIHIucmVmZXJlbmNlVHlwZXM9W2VpLk1peGluLGVpLlJ1bGVdO3JldHVybiB0aGlzLnBlZWsoWm4uQnJhY2tldEwpP2V8fHRoaXMuX2FkZExvb2t1cENoaWxkcmVuKG4pOm4uYWRkQ2hpbGQodGhpcy5fcGFyc2VQcmlvKCkpLG98fHRoaXMucGVlayhabi5TZW1pQ29sb24pfHx0aGlzLnBlZWsoWm4uQ3VybHlSKXx8dGhpcy5wZWVrKFpuLkVPRik/dGhpcy5maW5pc2gobik6KHRoaXMucmVzdG9yZUF0TWFyayh0KSxudWxsKX0sdC5wcm90b3R5cGUuX3BhcnNlTWl4aW5Bcmd1bWVudD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuY3JlYXRlKFNpKSx0PXRoaXMubWFyaygpLG49dGhpcy5fcGFyc2VWYXJpYWJsZSgpO3JldHVybiBuJiYodGhpcy5hY2NlcHQoWm4uQ29sb24pP2Uuc2V0SWRlbnRpZmllcihuKTp0aGlzLnJlc3RvcmVBdE1hcmsodCkpLGUuc2V0VmFsdWUodGhpcy5fcGFyc2VEZXRhY2hlZFJ1bGVTZXQoKXx8dGhpcy5fcGFyc2VFeHByKCEwKSk/dGhpcy5maW5pc2goZSk6KHRoaXMucmVzdG9yZUF0TWFyayh0KSxudWxsKX0sdC5wcm90b3R5cGUuX3BhcnNlTWl4aW5QYXJhbWV0ZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNyZWF0ZSh4aSk7aWYodGhpcy5wZWVrS2V5d29yZCgiQHJlc3QiKSl7dmFyIHQ9dGhpcy5jcmVhdGUob2kpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuYWNjZXB0KExoKT8oZS5zZXRJZGVudGlmaWVyKHRoaXMuZmluaXNoKHQpKSx0aGlzLmZpbmlzaChlKSk6dGhpcy5maW5pc2goZSxDcy5Eb3RFeHBlY3RlZCxbXSxbWm4uQ29tbWEsWm4uUGFyZW50aGVzaXNSXSl9aWYodGhpcy5wZWVrKExoKSl7dmFyIG49dGhpcy5jcmVhdGUob2kpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLGUuc2V0SWRlbnRpZmllcih0aGlzLmZpbmlzaChuKSksdGhpcy5maW5pc2goZSl9dmFyIHI9ITE7cmV0dXJuIGUuc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZVZhcmlhYmxlKCkpJiYodGhpcy5hY2NlcHQoWm4uQ29sb24pLHI9ITApLGUuc2V0RGVmYXVsdFZhbHVlKHRoaXMuX3BhcnNlRGV0YWNoZWRSdWxlU2V0KCl8fHRoaXMuX3BhcnNlRXhwcighMCkpfHxyP3RoaXMuZmluaXNoKGUpOm51bGx9LHQucHJvdG90eXBlLl9wYXJzZUd1YXJkPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVla0lkZW50KCJ3aGVuIikpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5jcmVhdGUodm8pO2lmKHRoaXMuY29uc3VtZVRva2VuKCksZS5pc05lZ2F0ZWQ9dGhpcy5hY2NlcHRJZGVudCgibm90IiksIWUuZ2V0Q29uZGl0aW9ucygpLmFkZENoaWxkKHRoaXMuX3BhcnNlR3VhcmRDb25kaXRpb24oKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUsQ3MuQ29uZGl0aW9uRXhwZWN0ZWQpO2Zvcig7dGhpcy5hY2NlcHRJZGVudCgiYW5kIil8fHRoaXMuYWNjZXB0KFpuLkNvbW1hKTspaWYoIWUuZ2V0Q29uZGl0aW9ucygpLmFkZENoaWxkKHRoaXMuX3BhcnNlR3VhcmRDb25kaXRpb24oKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUsQ3MuQ29uZGl0aW9uRXhwZWN0ZWQpO3JldHVybiB0aGlzLmZpbmlzaChlKX0sdC5wcm90b3R5cGUuX3BhcnNlR3VhcmRDb25kaXRpb249ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrKFpuLlBhcmVudGhlc2lzTCkpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5jcmVhdGUod28pO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VFeHByKCkpLHRoaXMuYWNjZXB0KFpuLlBhcmVudGhlc2lzUik/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSxDcy5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQpfSx0LnByb3RvdHlwZS5fcGFyc2VGdW5jdGlvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMubWFyaygpLHQ9dGhpcy5jcmVhdGUod2kpO2lmKCF0LnNldElkZW50aWZpZXIodGhpcy5fcGFyc2VGdW5jdGlvbklkZW50aWZpZXIoKSkpcmV0dXJuIG51bGw7aWYodGhpcy5oYXNXaGl0ZXNwYWNlKCl8fCF0aGlzLmFjY2VwdChabi5QYXJlbnRoZXNpc0wpKXJldHVybiB0aGlzLnJlc3RvcmVBdE1hcmsoZSksbnVsbDtpZih0LmdldEFyZ3VtZW50cygpLmFkZENoaWxkKHRoaXMuX3BhcnNlTWl4aW5Bcmd1bWVudCgpKSlmb3IoOyh0aGlzLmFjY2VwdChabi5Db21tYSl8fHRoaXMuYWNjZXB0KFpuLlNlbWlDb2xvbikpJiYhdGhpcy5wZWVrKFpuLlBhcmVudGhlc2lzUik7KWlmKCF0LmdldEFyZ3VtZW50cygpLmFkZENoaWxkKHRoaXMuX3BhcnNlTWl4aW5Bcmd1bWVudCgpKSlyZXR1cm4gdGhpcy5maW5pc2godCxDcy5FeHByZXNzaW9uRXhwZWN0ZWQpO3JldHVybiB0aGlzLmFjY2VwdChabi5QYXJlbnRoZXNpc1IpP3RoaXMuZmluaXNoKHQpOnRoaXMuZmluaXNoKHQsQ3MuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKX0sdC5wcm90b3R5cGUuX3BhcnNlRnVuY3Rpb25JZGVudGlmaWVyPWZ1bmN0aW9uKCl7aWYodGhpcy5wZWVrRGVsaW0oIiUiKSl7dmFyIHQ9dGhpcy5jcmVhdGUobGkpO3JldHVybiB0LnJlZmVyZW5jZVR5cGVzPVtlaS5GdW5jdGlvbl0sdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmZpbmlzaCh0KX1yZXR1cm4gZS5wcm90b3R5cGUuX3BhcnNlRnVuY3Rpb25JZGVudGlmaWVyLmNhbGwodGhpcyl9LHQucHJvdG90eXBlLl9wYXJzZVVSTEFyZ3VtZW50PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5tYXJrKCksbj1lLnByb3RvdHlwZS5fcGFyc2VVUkxBcmd1bWVudC5jYWxsKHRoaXMpO2lmKCFufHwhdGhpcy5wZWVrKFpuLlBhcmVudGhlc2lzUikpe3RoaXMucmVzdG9yZUF0TWFyayh0KTt2YXIgcj10aGlzLmNyZWF0ZShvaSk7cmV0dXJuIHIuYWRkQ2hpbGQodGhpcy5fcGFyc2VCaW5hcnlFeHByKCkpLHRoaXMuZmluaXNoKHIpfXJldHVybiBufSx0fSh2bCksS2g9ZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbih0LG4pe3JldHVybihlPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKX0pKHQsbil9O3JldHVybiBmdW5jdGlvbih0LG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuJiZudWxsIT09bil0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKG4pKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPXR9ZSh0LG4pLHQucHJvdG90eXBlPW51bGw9PT1uP09iamVjdC5jcmVhdGUobik6KHIucHJvdG90eXBlPW4ucHJvdG90eXBlLG5ldyByKX19KCksQmg9X28oKSxqaD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLCJAIix0LG4pfHx0aGlzfXJldHVybiBLaCh0LGUpLHQucHJvdG90eXBlLmNyZWF0ZUZ1bmN0aW9uUHJvcG9zYWxzPWZ1bmN0aW9uKGUsdCxuLHIpe2Zvcih2YXIgaT0wLG89ZTtpPG8ubGVuZ3RoO2krKyl7dmFyIHM9b1tpXSxhPXtsYWJlbDpzLm5hbWUsZGV0YWlsOnMuZXhhbXBsZSxkb2N1bWVudGF0aW9uOnMuZGVzY3JpcHRpb24sdGV4dEVkaXQ6b3MucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZSh0KSxzLm5hbWUrIigkMCkiKSxpbnNlcnRUZXh0Rm9ybWF0Ok9zLlNuaXBwZXQsa2luZDpNcy5GdW5jdGlvbn07biYmKGEuc29ydFRleHQ9InoiKSxyLml0ZW1zLnB1c2goYSl9cmV0dXJuIHJ9LHQucHJvdG90eXBlLmdldFRlcm1Qcm9wb3NhbHM9ZnVuY3Rpb24obixyLGkpe3ZhciBvPXQuYnVpbHRJblByb3Bvc2FscztyZXR1cm4gbiYmKG89by5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiFlLnR5cGV8fCFuLnJlc3RyaWN0aW9uc3x8LTEhPT1uLnJlc3RyaWN0aW9ucy5pbmRleE9mKGUudHlwZSl9KSkpLHRoaXMuY3JlYXRlRnVuY3Rpb25Qcm9wb3NhbHMobyxyLCEwLGkpLGUucHJvdG90eXBlLmdldFRlcm1Qcm9wb3NhbHMuY2FsbCh0aGlzLG4scixpKX0sdC5wcm90b3R5cGUuZ2V0Q29sb3JQcm9wb3NhbHM9ZnVuY3Rpb24obixyLGkpe3JldHVybiB0aGlzLmNyZWF0ZUZ1bmN0aW9uUHJvcG9zYWxzKHQuY29sb3JQcm9wb3NhbHMsciwhMSxpKSxlLnByb3RvdHlwZS5nZXRDb2xvclByb3Bvc2Fscy5jYWxsKHRoaXMsbixyLGkpfSx0LnByb3RvdHlwZS5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9uUHJvcGVydHk9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdGhpcy5nZXRDb21wbGV0aW9uc0ZvclNlbGVjdG9yKG51bGwsITAsbiksZS5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvblByb3BlcnR5LmNhbGwodGhpcyx0LG4pfSx0LmJ1aWx0SW5Qcm9wb3NhbHM9W3tuYW1lOiJpZiIsZXhhbXBsZToiaWYoY29uZGl0aW9uLCB0cnVlVmFsdWUgWywgZmFsc2VWYWx1ZV0pOyIsZGVzY3JpcHRpb246QmgoImxlc3MuYnVpbHRpbi5pZiIsInJldHVybnMgb25lIG9mIHR3byB2YWx1ZXMgZGVwZW5kaW5nIG9uIGEgY29uZGl0aW9uLiIpfSx7bmFtZToiYm9vbGVhbiIsZXhhbXBsZToiYm9vbGVhbihjb25kaXRpb24pOyIsZGVzY3JpcHRpb246QmgoImxlc3MuYnVpbHRpbi5ib29sZWFuIiwnInN0b3JlIiBhIGJvb2xlYW4gdGVzdCBmb3IgbGF0ZXIgZXZhbHVhdGlvbiBpbiBhIGd1YXJkIG9yIGlmKCkuJyl9LHtuYW1lOiJsZW5ndGgiLGV4YW1wbGU6Imxlbmd0aChAbGlzdCk7IixkZXNjcmlwdGlvbjpCaCgibGVzcy5idWlsdGluLmxlbmd0aCIsInJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBhIHZhbHVlIGxpc3QiKX0se25hbWU6ImV4dHJhY3QiLGV4YW1wbGU6ImV4dHJhY3QoQGxpc3QsIGluZGV4KTsiLGRlc2NyaXB0aW9uOkJoKCJsZXNzLmJ1aWx0aW4uZXh0cmFjdCIsInJldHVybnMgYSB2YWx1ZSBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uIGluIHRoZSBsaXN0Iil9LHtuYW1lOiJyYW5nZSIsZXhhbXBsZToicmFuZ2UoW3N0YXJ0LCBdIGVuZCBbLCBzdGVwXSk7IixkZXNjcmlwdGlvbjpCaCgibGVzcy5idWlsdGluLnJhbmdlIiwiZ2VuZXJhdGUgYSBsaXN0IHNwYW5uaW5nIGEgcmFuZ2Ugb2YgdmFsdWVzIil9LHtuYW1lOiJlYWNoIixleGFtcGxlOiJlYWNoKEBsaXN0LCBydWxlc2V0KTsiLGRlc2NyaXB0aW9uOkJoKCJsZXNzLmJ1aWx0aW4uZWFjaCIsImJpbmQgdGhlIGV2YWx1YXRpb24gb2YgYSBydWxlc2V0IHRvIGVhY2ggbWVtYmVyIG9mIGEgbGlzdC4iKX0se25hbWU6ImVzY2FwZSIsZXhhbXBsZToiZXNjYXBlKEBzdHJpbmcpOyIsZGVzY3JpcHRpb246QmgoImxlc3MuYnVpbHRpbi5lc2NhcGUiLCJVUkwgZW5jb2RlcyBhIHN0cmluZyIpfSx7bmFtZToiZSIsZXhhbXBsZToiZShAc3RyaW5nKTsiLGRlc2NyaXB0aW9uOkJoKCJsZXNzLmJ1aWx0aW4uZSIsImVzY2FwZSBzdHJpbmcgY29udGVudCIpfSx7bmFtZToicmVwbGFjZSIsZXhhbXBsZToicmVwbGFjZShAc3RyaW5nLCBAcGF0dGVybiwgQHJlcGxhY2VtZW50WywgQGZsYWdzXSk7IixkZXNjcmlwdGlvbjpCaCgibGVzcy5idWlsdGluLnJlcGxhY2UiLCJzdHJpbmcgcmVwbGFjZSIpfSx7bmFtZToidW5pdCIsZXhhbXBsZToidW5pdChAZGltZW5zaW9uLCBbQHVuaXQ6ICcnXSk7IixkZXNjcmlwdGlvbjpCaCgibGVzcy5idWlsdGluLnVuaXQiLCJyZW1vdmUgb3IgY2hhbmdlIHRoZSB1bml0IG9mIGEgZGltZW5zaW9uIil9LHtuYW1lOiJjb2xvciIsZXhhbXBsZToiY29sb3IoQHN0cmluZyk7IixkZXNjcmlwdGlvbjpCaCgibGVzcy5idWlsdGluLmNvbG9yIiwicGFyc2VzIGEgc3RyaW5nIHRvIGEgY29sb3IiKSx0eXBlOiJjb2xvciJ9LHtuYW1lOiJjb252ZXJ0IixleGFtcGxlOiJjb252ZXJ0KEB2YWx1ZSwgdW5pdCk7IixkZXNjcmlwdGlvbjpCaCgibGVzcy5idWlsdGluLmNvbnZlcnQiLCJjb252ZXJ0cyBudW1iZXJzIGZyb20gb25lIHR5cGUgaW50byBhbm90aGVyIil9LHtuYW1lOiJkYXRhLXVyaSIsZXhhbXBsZToiZGF0YS11cmkoW21pbWV0eXBlLF0gdXJsKTsiLGRlc2NyaXB0aW9uOkJoKCJsZXNzLmJ1aWx0aW4uZGF0YS11cmkiLCJpbmxpbmVzIGEgcmVzb3VyY2UgYW5kIGZhbGxzIGJhY2sgdG8gYHVybCgpYCIpLHR5cGU6InVybCJ9LHtuYW1lOiJhYnMiLGRlc2NyaXB0aW9uOkJoKCJsZXNzLmJ1aWx0aW4uYWJzIiwiYWJzb2x1dGUgdmFsdWUgb2YgYSBudW1iZXIiKSxleGFtcGxlOiJhYnMobnVtYmVyKTsifSx7bmFtZToiYWNvcyIsZGVzY3JpcHRpb246QmgoImxlc3MuYnVpbHRpbi5hY29zIiwiYXJjY29zaW5lIC0gaW52ZXJzZSBvZiBjb3NpbmUgZnVuY3Rpb24iKSxleGFtcGxlOiJhY29zKG51bWJlcik7In0se25hbWU6ImFzaW4iLGRlc2NyaXB0aW9uOkJoKCJsZXNzLmJ1aWx0aW4uYXNpbiIsImFyY3NpbmUgLSBpbnZlcnNlIG9mIHNpbmUgZnVuY3Rpb24iKSxleGFtcGxlOiJhc2luKG51bWJlcik7In0se25hbWU6ImNlaWwiLGV4YW1wbGU6ImNlaWwoQG51bWJlcik7IixkZXNjcmlwdGlvbjpCaCgibGVzcy5idWlsdGluLmNlaWwiLCJyb3VuZHMgdXAgdG8gYW4gaW50ZWdlciIpfSx7bmFtZToiY29zIixkZXNjcmlwdGlvbjpCaCgibGVzcy5idWlsdGluLmNvcyIsImNvc2luZSBmdW5jdGlvbiIpLGV4YW1wbGU6ImNvcyhudW1iZXIpOyJ9LHtuYW1lOiJmbG9vciIsZGVzY3JpcHRpb246QmgoImxlc3MuYnVpbHRpbi5mbG9vciIsInJvdW5kcyBkb3duIHRvIGFuIGludGVnZXIiKSxleGFtcGxlOiJmbG9vcihAbnVtYmVyKTsifSx7bmFtZToicGVyY2VudGFnZSIsZGVzY3JpcHRpb246QmgoImxlc3MuYnVpbHRpbi5wZXJjZW50YWdlIiwiY29udmVydHMgdG8gYSAlLCBlLmcuIDAuNSA+IDUwJSIpLGV4YW1wbGU6InBlcmNlbnRhZ2UoQG51bWJlcik7Iix0eXBlOiJwZXJjZW50YWdlIn0se25hbWU6InJvdW5kIixkZXNjcmlwdGlvbjpCaCgibGVzcy5idWlsdGluLnJvdW5kIiwicm91bmRzIGEgbnVtYmVyIHRvIGEgbnVtYmVyIG9mIHBsYWNlcyIpLGV4YW1wbGU6InJvdW5kKG51bWJlciwgW3BsYWNlczogMF0pOyJ9LHtuYW1lOiJzcXJ0IixkZXNjcmlwdGlvbjpCaCgibGVzcy5idWlsdGluLnNxcnQiLCJjYWxjdWxhdGVzIHNxdWFyZSByb290IG9mIGEgbnVtYmVyIiksZXhhbXBsZToic3FydChudW1iZXIpOyJ9LHtuYW1lOiJzaW4iLGRlc2NyaXB0aW9uOkJoKCJsZXNzLmJ1aWx0aW4uc2luIiwic2luZSBmdW5jdGlvbiIpLGV4YW1wbGU6InNpbihudW1iZXIpOyJ9LHtuYW1lOiJ0YW4iLGRlc2NyaXB0aW9uOkJoKCJsZXNzLmJ1aWx0aW4udGFuIiwidGFuZ2VudCBmdW5jdGlvbiIpLGV4YW1wbGU6InRhbihudW1iZXIpOyJ9LHtuYW1lOiJhdGFuIixkZXNjcmlwdGlvbjpCaCgibGVzcy5idWlsdGluLmF0YW4iLCJhcmN0YW5nZW50IC0gaW52ZXJzZSBvZiB0YW5nZW50IGZ1bmN0aW9uIiksZXhhbXBsZToiYXRhbihudW1iZXIpOyJ9LHtuYW1lOiJwaSIsZGVzY3JpcHRpb246QmgoImxlc3MuYnVpbHRpbi5waSIsInJldHVybnMgcGkiKSxleGFtcGxlOiJwaSgpOyJ9LHtuYW1lOiJwb3ciLGRlc2NyaXB0aW9uOkJoKCJsZXNzLmJ1aWx0aW4ucG93IiwiZmlyc3QgYXJndW1lbnQgcmFpc2VkIHRvIHRoZSBwb3dlciBvZiB0aGUgc2Vjb25kIGFyZ3VtZW50IiksZXhhbXBsZToicG93KEBiYXNlLCBAZXhwb25lbnQpOyJ9LHtuYW1lOiJtb2QiLGRlc2NyaXB0aW9uOkJoKCJsZXNzLmJ1aWx0aW4ubW9kIiwiZmlyc3QgYXJndW1lbnQgbW9kdWx1cyBzZWNvbmQgYXJndW1lbnQiKSxleGFtcGxlOiJtb2QobnVtYmVyLCBudW1iZXIpOyJ9LHtuYW1lOiJtaW4iLGRlc2NyaXB0aW9uOkJoKCJsZXNzLmJ1aWx0aW4ubWluIiwicmV0dXJucyB0aGUgbG93ZXN0IG9mIG9uZSBvciBtb3JlIHZhbHVlcyIpLGV4YW1wbGU6Im1pbihAeCwgQHkpOyJ9LHtuYW1lOiJtYXgiLGRlc2NyaXB0aW9uOkJoKCJsZXNzLmJ1aWx0aW4ubWF4IiwicmV0dXJucyB0aGUgbG93ZXN0IG9mIG9uZSBvciBtb3JlIHZhbHVlcyIpLGV4YW1wbGU6Im1heChAeCwgQHkpOyJ9XSx0LmNvbG9yUHJvcG9zYWxzPVt7bmFtZToiYXJnYiIsZXhhbXBsZToiYXJnYihAY29sb3IpOyIsZGVzY3JpcHRpb246QmgoImxlc3MuYnVpbHRpbi5hcmdiIiwiY3JlYXRlcyBhICNBQVJSR0dCQiIpfSx7bmFtZToiaHNsIixleGFtcGxlOiJoc2woQGh1ZSwgQHNhdHVyYXRpb24sIEBsaWdodG5lc3MpOyIsZGVzY3JpcHRpb246QmgoImxlc3MuYnVpbHRpbi5oc2wiLCJjcmVhdGVzIGEgY29sb3IiKX0se25hbWU6ImhzbGEiLGV4YW1wbGU6ImhzbGEoQGh1ZSwgQHNhdHVyYXRpb24sIEBsaWdodG5lc3MsIEBhbHBoYSk7IixkZXNjcmlwdGlvbjpCaCgibGVzcy5idWlsdGluLmhzbGEiLCJjcmVhdGVzIGEgY29sb3IiKX0se25hbWU6ImhzdiIsZXhhbXBsZToiaHN2KEBodWUsIEBzYXR1cmF0aW9uLCBAdmFsdWUpOyIsZGVzY3JpcHRpb246QmgoImxlc3MuYnVpbHRpbi5oc3YiLCJjcmVhdGVzIGEgY29sb3IiKX0se25hbWU6ImhzdmEiLGV4YW1wbGU6ImhzdmEoQGh1ZSwgQHNhdHVyYXRpb24sIEB2YWx1ZSwgQGFscGhhKTsiLGRlc2NyaXB0aW9uOkJoKCJsZXNzLmJ1aWx0aW4uaHN2YSIsImNyZWF0ZXMgYSBjb2xvciIpfSx7bmFtZToiaHVlIixleGFtcGxlOiJodWUoQGNvbG9yKTsiLGRlc2NyaXB0aW9uOkJoKCJsZXNzLmJ1aWx0aW4uaHVlIiwicmV0dXJucyB0aGUgYGh1ZWAgY2hhbm5lbCBvZiBgQGNvbG9yYCBpbiB0aGUgSFNMIHNwYWNlIil9LHtuYW1lOiJzYXR1cmF0aW9uIixleGFtcGxlOiJzYXR1cmF0aW9uKEBjb2xvcik7IixkZXNjcmlwdGlvbjpCaCgibGVzcy5idWlsdGluLnNhdHVyYXRpb24iLCJyZXR1cm5zIHRoZSBgc2F0dXJhdGlvbmAgY2hhbm5lbCBvZiBgQGNvbG9yYCBpbiB0aGUgSFNMIHNwYWNlIil9LHtuYW1lOiJsaWdodG5lc3MiLGV4YW1wbGU6ImxpZ2h0bmVzcyhAY29sb3IpOyIsZGVzY3JpcHRpb246QmgoImxlc3MuYnVpbHRpbi5saWdodG5lc3MiLCJyZXR1cm5zIHRoZSBgbGlnaHRuZXNzYCBjaGFubmVsIG9mIGBAY29sb3JgIGluIHRoZSBIU0wgc3BhY2UiKX0se25hbWU6Imhzdmh1ZSIsZXhhbXBsZToiaHN2aHVlKEBjb2xvcik7IixkZXNjcmlwdGlvbjpCaCgibGVzcy5idWlsdGluLmhzdmh1ZSIsInJldHVybnMgdGhlIGBodWVgIGNoYW5uZWwgb2YgYEBjb2xvcmAgaW4gdGhlIEhTViBzcGFjZSIpfSx7bmFtZToiaHN2c2F0dXJhdGlvbiIsZXhhbXBsZToiaHN2c2F0dXJhdGlvbihAY29sb3IpOyIsZGVzY3JpcHRpb246QmgoImxlc3MuYnVpbHRpbi5oc3ZzYXR1cmF0aW9uIiwicmV0dXJucyB0aGUgYHNhdHVyYXRpb25gIGNoYW5uZWwgb2YgYEBjb2xvcmAgaW4gdGhlIEhTViBzcGFjZSIpfSx7bmFtZToiaHN2dmFsdWUiLGV4YW1wbGU6ImhzdnZhbHVlKEBjb2xvcik7IixkZXNjcmlwdGlvbjpCaCgibGVzcy5idWlsdGluLmhzdnZhbHVlIiwicmV0dXJucyB0aGUgYHZhbHVlYCBjaGFubmVsIG9mIGBAY29sb3JgIGluIHRoZSBIU1Ygc3BhY2UiKX0se25hbWU6InJlZCIsZXhhbXBsZToicmVkKEBjb2xvcik7IixkZXNjcmlwdGlvbjpCaCgibGVzcy5idWlsdGluLnJlZCIsInJldHVybnMgdGhlIGByZWRgIGNoYW5uZWwgb2YgYEBjb2xvcmAiKX0se25hbWU6ImdyZWVuIixleGFtcGxlOiJncmVlbihAY29sb3IpOyIsZGVzY3JpcHRpb246QmgoImxlc3MuYnVpbHRpbi5ncmVlbiIsInJldHVybnMgdGhlIGBncmVlbmAgY2hhbm5lbCBvZiBgQGNvbG9yYCIpfSx7bmFtZToiYmx1ZSIsZXhhbXBsZToiYmx1ZShAY29sb3IpOyIsZGVzY3JpcHRpb246QmgoImxlc3MuYnVpbHRpbi5ibHVlIiwicmV0dXJucyB0aGUgYGJsdWVgIGNoYW5uZWwgb2YgYEBjb2xvcmAiKX0se25hbWU6ImFscGhhIixleGFtcGxlOiJhbHBoYShAY29sb3IpOyIsZGVzY3JpcHRpb246QmgoImxlc3MuYnVpbHRpbi5hbHBoYSIsInJldHVybnMgdGhlIGBhbHBoYWAgY2hhbm5lbCBvZiBgQGNvbG9yYCIpfSx7bmFtZToibHVtYSIsZXhhbXBsZToibHVtYShAY29sb3IpOyIsZGVzY3JpcHRpb246QmgoImxlc3MuYnVpbHRpbi5sdW1hIiwicmV0dXJucyB0aGUgYGx1bWFgIHZhbHVlIChwZXJjZXB0dWFsIGJyaWdodG5lc3MpIG9mIGBAY29sb3JgIil9LHtuYW1lOiJzYXR1cmF0ZSIsZXhhbXBsZToic2F0dXJhdGUoQGNvbG9yLCAxMCUpOyIsZGVzY3JpcHRpb246QmgoImxlc3MuYnVpbHRpbi5zYXR1cmF0ZSIsInJldHVybiBgQGNvbG9yYCAxMCUgcG9pbnRzIG1vcmUgc2F0dXJhdGVkIil9LHtuYW1lOiJkZXNhdHVyYXRlIixleGFtcGxlOiJkZXNhdHVyYXRlKEBjb2xvciwgMTAlKTsiLGRlc2NyaXB0aW9uOkJoKCJsZXNzLmJ1aWx0aW4uZGVzYXR1cmF0ZSIsInJldHVybiBgQGNvbG9yYCAxMCUgcG9pbnRzIGxlc3Mgc2F0dXJhdGVkIil9LHtuYW1lOiJsaWdodGVuIixleGFtcGxlOiJsaWdodGVuKEBjb2xvciwgMTAlKTsiLGRlc2NyaXB0aW9uOkJoKCJsZXNzLmJ1aWx0aW4ubGlnaHRlbiIsInJldHVybiBgQGNvbG9yYCAxMCUgcG9pbnRzIGxpZ2h0ZXIiKX0se25hbWU6ImRhcmtlbiIsZXhhbXBsZToiZGFya2VuKEBjb2xvciwgMTAlKTsiLGRlc2NyaXB0aW9uOkJoKCJsZXNzLmJ1aWx0aW4uZGFya2VuIiwicmV0dXJuIGBAY29sb3JgIDEwJSBwb2ludHMgZGFya2VyIil9LHtuYW1lOiJmYWRlaW4iLGV4YW1wbGU6ImZhZGVpbihAY29sb3IsIDEwJSk7IixkZXNjcmlwdGlvbjpCaCgibGVzcy5idWlsdGluLmZhZGVpbiIsInJldHVybiBgQGNvbG9yYCAxMCUgcG9pbnRzIGxlc3MgdHJhbnNwYXJlbnQiKX0se25hbWU6ImZhZGVvdXQiLGV4YW1wbGU6ImZhZGVvdXQoQGNvbG9yLCAxMCUpOyIsZGVzY3JpcHRpb246QmgoImxlc3MuYnVpbHRpbi5mYWRlb3V0IiwicmV0dXJuIGBAY29sb3JgIDEwJSBwb2ludHMgbW9yZSB0cmFuc3BhcmVudCIpfSx7bmFtZToiZmFkZSIsZXhhbXBsZToiZmFkZShAY29sb3IsIDUwJSk7IixkZXNjcmlwdGlvbjpCaCgibGVzcy5idWlsdGluLmZhZGUiLCJyZXR1cm4gYEBjb2xvcmAgd2l0aCA1MCUgdHJhbnNwYXJlbmN5Iil9LHtuYW1lOiJzcGluIixleGFtcGxlOiJzcGluKEBjb2xvciwgMTApOyIsZGVzY3JpcHRpb246QmgoImxlc3MuYnVpbHRpbi5zcGluIiwicmV0dXJuIGBAY29sb3JgIHdpdGggYSAxMCBkZWdyZWUgbGFyZ2VyIGluIGh1ZSIpfSx7bmFtZToibWl4IixleGFtcGxlOiJtaXgoQGNvbG9yMSwgQGNvbG9yMiwgW0B3ZWlnaHQ6IDUwJV0pOyIsZGVzY3JpcHRpb246QmgoImxlc3MuYnVpbHRpbi5taXgiLCJyZXR1cm4gYSBtaXggb2YgYEBjb2xvcjFgIGFuZCBgQGNvbG9yMmAiKX0se25hbWU6ImdyZXlzY2FsZSIsZXhhbXBsZToiZ3JleXNjYWxlKEBjb2xvcik7IixkZXNjcmlwdGlvbjpCaCgibGVzcy5idWlsdGluLmdyZXlzY2FsZSIsInJldHVybnMgYSBncmV5LCAxMDAlIGRlc2F0dXJhdGVkIGNvbG9yIil9LHtuYW1lOiJjb250cmFzdCIsZXhhbXBsZToiY29udHJhc3QoQGNvbG9yMSwgW0BkYXJrY29sb3I6IGJsYWNrXSwgW0BsaWdodGNvbG9yOiB3aGl0ZV0sIFtAdGhyZXNob2xkOiA0MyVdKTsiLGRlc2NyaXB0aW9uOkJoKCJsZXNzLmJ1aWx0aW4uY29udHJhc3QiLCJyZXR1cm4gYEBkYXJrY29sb3JgIGlmIGBAY29sb3IxIGlzPiA0MyUgbHVtYWAgb3RoZXJ3aXNlIHJldHVybiBgQGxpZ2h0Y29sb3JgLCBzZWUgbm90ZXMiKX0se25hbWU6Im11bHRpcGx5IixleGFtcGxlOiJtdWx0aXBseShAY29sb3IxLCBAY29sb3IyKTsifSx7bmFtZToic2NyZWVuIixleGFtcGxlOiJzY3JlZW4oQGNvbG9yMSwgQGNvbG9yMik7In0se25hbWU6Im92ZXJsYXkiLGV4YW1wbGU6Im92ZXJsYXkoQGNvbG9yMSwgQGNvbG9yMik7In0se25hbWU6InNvZnRsaWdodCIsZXhhbXBsZToic29mdGxpZ2h0KEBjb2xvcjEsIEBjb2xvcjIpOyJ9LHtuYW1lOiJoYXJkbGlnaHQiLGV4YW1wbGU6ImhhcmRsaWdodChAY29sb3IxLCBAY29sb3IyKTsifSx7bmFtZToiZGlmZmVyZW5jZSIsZXhhbXBsZToiZGlmZmVyZW5jZShAY29sb3IxLCBAY29sb3IyKTsifSx7bmFtZToiZXhjbHVzaW9uIixleGFtcGxlOiJleGNsdXNpb24oQGNvbG9yMSwgQGNvbG9yMik7In0se25hbWU6ImF2ZXJhZ2UiLGV4YW1wbGU6ImF2ZXJhZ2UoQGNvbG9yMSwgQGNvbG9yMik7In0se25hbWU6Im5lZ2F0aW9uIixleGFtcGxlOiJuZWdhdGlvbihAY29sb3IxLCBAY29sb3IyKTsifV0sdH0oSmwpO2Z1bmN0aW9uIHFoKGUsdCl7dmFyIG49ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0KXtyZXR1cm4gZS5wb3NpdGlvbkF0KHQub2Zmc2V0KS5saW5lfWZ1bmN0aW9uIG4odCl7cmV0dXJuIGUucG9zaXRpb25BdCh0Lm9mZnNldCt0LmxlbikubGluZX1mdW5jdGlvbiByKCl7c3dpdGNoKGUubGFuZ3VhZ2VJZCl7Y2FzZSJzY3NzIjpyZXR1cm4gbmV3IGJoO2Nhc2UibGVzcyI6cmV0dXJuIG5ldyBXaDtkZWZhdWx0OnJldHVybiBuZXcgJHJ9fWZ1bmN0aW9uIGkoZSxyKXt2YXIgaT10KGUpLG89bihlKTtyZXR1cm4gaSE9PW8/e3N0YXJ0TGluZTppLGVuZExpbmU6byxraW5kOnJ9Om51bGx9dmFyIG89W10scz1bXSxhPXIoKTthLmlnbm9yZUNvbW1lbnQ9ITEsYS5zZXRTb3VyY2UoZS5nZXRUZXh0KCkpO3ZhciBsPWEuc2NhbigpLGM9bnVsbCxoPWZ1bmN0aW9uKCl7c3dpdGNoKGwudHlwZSl7Y2FzZSBabi5DdXJseUw6Y2FzZSBkaDpzLnB1c2goe2xpbmU6dChsKSx0eXBlOiJicmFjZSIsaXNTdGFydDohMH0pO2JyZWFrO2Nhc2UgWm4uQ3VybHlSOmlmKDAhPT1zLmxlbmd0aCl7aWYoIShwPSRoKHMsImJyYWNlIikpKWJyZWFrO3ZhciByPW4obCk7ImJyYWNlIj09PXAudHlwZSYmKGMmJm4oYykhPT1yJiZyLS0scC5saW5lIT09ciYmby5wdXNoKHtzdGFydExpbmU6cC5saW5lLGVuZExpbmU6cixraW5kOnZvaWQgMH0pKX1icmVhaztjYXNlIFpuLkNvbW1lbnQ6dmFyIGg9ZnVuY3Rpb24oZSl7cmV0dXJuIiNyZWdpb24iPT09ZT97bGluZTp0KGwpLHR5cGU6ImNvbW1lbnQiLGlzU3RhcnQ6ITB9OntsaW5lOm4obCksdHlwZToiY29tbWVudCIsaXNTdGFydDohMX19LGQ9ZnVuY3Rpb24odCl7dmFyIG49dC50ZXh0Lm1hdGNoKC9eXHMqXC9cKlxzKigjcmVnaW9ufCNlbmRyZWdpb24pXGJccyooLio/KVxzKlwqXC8vKTtpZihuKXJldHVybiBoKG5bMV0pO2lmKCJzY3NzIj09PWUubGFuZ3VhZ2VJZHx8Imxlc3MiPT09ZS5sYW5ndWFnZUlkKXt2YXIgcj10LnRleHQubWF0Y2goL15ccypcL1wvXHMqKCNyZWdpb258I2VuZHJlZ2lvbilcYlxzKiguKj8pXHMqLyk7aWYocilyZXR1cm4gaChyWzFdKX1yZXR1cm4gbnVsbH0obCk7aWYoZClpZihkLmlzU3RhcnQpcy5wdXNoKGQpO2Vsc2V7dmFyIHA7aWYoIShwPSRoKHMsImNvbW1lbnQiKSkpYnJlYWs7ImNvbW1lbnQiPT09cC50eXBlJiZwLmxpbmUhPT1kLmxpbmUmJm8ucHVzaCh7c3RhcnRMaW5lOnAubGluZSxlbmRMaW5lOmQubGluZSxraW5kOiJyZWdpb24ifSl9ZWxzZXt2YXIgdT1pKGwsImNvbW1lbnQiKTt1JiZvLnB1c2godSl9fWM9bCxsPWEuc2NhbigpfTtmb3IoO2wudHlwZSE9PVpuLkVPRjspaCgpO3JldHVybiBvfShlKTtyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgbj10JiZ0LnJhbmdlTGltaXR8fE51bWJlci5NQVhfVkFMVUUscj1lLnNvcnQoKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5zdGFydExpbmUtdC5zdGFydExpbmU7cmV0dXJuIDA9PT1uJiYobj1lLmVuZExpbmUtdC5lbmRMaW5lKSxufSkpLGk9W10sbz0tMTtyZXR1cm4gci5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnN0YXJ0TGluZTxvJiZvPGUuZW5kTGluZXx8KGkucHVzaChlKSxvPWUuZW5kTGluZSl9KSksaS5sZW5ndGg8bj9pOmkuc2xpY2UoMCxuKX0obix0KX1mdW5jdGlvbiAkaChlLHQpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gbnVsbDtmb3IodmFyIG49ZS5sZW5ndGgtMTtuPj0wO24tLSlpZihlW25dLnR5cGU9PT10JiZlW25dLmlzU3RhcnQpcmV0dXJuIGUuc3BsaWNlKG4sMSlbMF07cmV0dXJuIG51bGx9Rmg9WywsZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt0aGlzLl9fcGFyZW50PWUsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD0wLHRoaXMuX19pbmRlbnRfY291bnQ9LTEsdGhpcy5fX2FsaWdubWVudF9jb3VudD0wLHRoaXMuX193cmFwX3BvaW50X2luZGV4PTAsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PTAsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PS0xLHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD0wLHRoaXMuX19pdGVtcz1bXX1mdW5jdGlvbiBuKGUsdCl7dGhpcy5fX2NhY2hlPVsiIl0sdGhpcy5fX2luZGVudF9zaXplPWUuaW5kZW50X3NpemUsdGhpcy5fX2luZGVudF9zdHJpbmc9ZS5pbmRlbnRfY2hhcixlLmluZGVudF93aXRoX3RhYnN8fCh0aGlzLl9faW5kZW50X3N0cmluZz1uZXcgQXJyYXkoZS5pbmRlbnRfc2l6ZSsxKS5qb2luKGUuaW5kZW50X2NoYXIpKSx0PXR8fCIiLGUuaW5kZW50X2xldmVsPjAmJih0PW5ldyBBcnJheShlLmluZGVudF9sZXZlbCsxKS5qb2luKHRoaXMuX19pbmRlbnRfc3RyaW5nKSksdGhpcy5fX2Jhc2Vfc3RyaW5nPXQsdGhpcy5fX2Jhc2Vfc3RyaW5nX2xlbmd0aD10Lmxlbmd0aH1mdW5jdGlvbiByKGUscil7dGhpcy5fX2luZGVudF9jYWNoZT1uZXcgbihlLHIpLHRoaXMucmF3PSExLHRoaXMuX2VuZF93aXRoX25ld2xpbmU9ZS5lbmRfd2l0aF9uZXdsaW5lLHRoaXMuaW5kZW50X3NpemU9ZS5pbmRlbnRfc2l6ZSx0aGlzLndyYXBfbGluZV9sZW5ndGg9ZS53cmFwX2xpbmVfbGVuZ3RoLHRoaXMuaW5kZW50X2VtcHR5X2xpbmVzPWUuaW5kZW50X2VtcHR5X2xpbmVzLHRoaXMuX19saW5lcz1bXSx0aGlzLnByZXZpb3VzX2xpbmU9bnVsbCx0aGlzLmN1cnJlbnRfbGluZT1udWxsLHRoaXMubmV4dF9saW5lPW5ldyB0KHRoaXMpLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD0hMSx0aGlzLl9fYWRkX291dHB1dGxpbmUoKX10LnByb3RvdHlwZS5jbG9uZV9lbXB0eT1mdW5jdGlvbigpe3ZhciBlPW5ldyB0KHRoaXMuX19wYXJlbnQpO3JldHVybiBlLnNldF9pbmRlbnQodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSxlfSx0LnByb3RvdHlwZS5pdGVtPWZ1bmN0aW9uKGUpe3JldHVybiBlPDA/dGhpcy5fX2l0ZW1zW3RoaXMuX19pdGVtcy5sZW5ndGgrZV06dGhpcy5fX2l0ZW1zW2VdfSx0LnByb3RvdHlwZS5oYXNfbWF0Y2g9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuX19pdGVtcy5sZW5ndGgtMTt0Pj0wO3QtLSlpZih0aGlzLl9faXRlbXNbdF0ubWF0Y2goZSkpcmV0dXJuITA7cmV0dXJuITF9LHQucHJvdG90eXBlLnNldF9pbmRlbnQ9ZnVuY3Rpb24oZSx0KXt0aGlzLmlzX2VtcHR5KCkmJih0aGlzLl9faW5kZW50X2NvdW50PWV8fDAsdGhpcy5fX2FsaWdubWVudF9jb3VudD10fHwwLHRoaXMuX19jaGFyYWN0ZXJfY291bnQ9dGhpcy5fX3BhcmVudC5nZXRfaW5kZW50X3NpemUodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSl9LHQucHJvdG90eXBlLl9zZXRfd3JhcF9wb2ludD1mdW5jdGlvbigpe3RoaXMuX19wYXJlbnQud3JhcF9saW5lX2xlbmd0aCYmKHRoaXMuX193cmFwX3BvaW50X2luZGV4PXRoaXMuX19pdGVtcy5sZW5ndGgsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PXRoaXMuX19jaGFyYWN0ZXJfY291bnQsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PXRoaXMuX19wYXJlbnQubmV4dF9saW5lLl9faW5kZW50X2NvdW50LHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD10aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2FsaWdubWVudF9jb3VudCl9LHQucHJvdG90eXBlLl9zaG91bGRfd3JhcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fd3JhcF9wb2ludF9pbmRleCYmdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50LndyYXBfbGluZV9sZW5ndGgmJnRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2NoYXJhY3Rlcl9jb3VudH0sdC5wcm90b3R5cGUuX2FsbG93X3dyYXA9ZnVuY3Rpb24oKXtpZih0aGlzLl9zaG91bGRfd3JhcCgpKXt0aGlzLl9fcGFyZW50LmFkZF9uZXdfbGluZSgpO3ZhciBlPXRoaXMuX19wYXJlbnQuY3VycmVudF9saW5lO3JldHVybiBlLnNldF9pbmRlbnQodGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50LHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudCksZS5fX2l0ZW1zPXRoaXMuX19pdGVtcy5zbGljZSh0aGlzLl9fd3JhcF9wb2ludF9pbmRleCksdGhpcy5fX2l0ZW1zPXRoaXMuX19pdGVtcy5zbGljZSgwLHRoaXMuX193cmFwX3BvaW50X2luZGV4KSxlLl9fY2hhcmFjdGVyX2NvdW50Kz10aGlzLl9fY2hhcmFjdGVyX2NvdW50LXRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudCx0aGlzLl9fY2hhcmFjdGVyX2NvdW50PXRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudCwiICI9PT1lLl9faXRlbXNbMF0mJihlLl9faXRlbXMuc3BsaWNlKDAsMSksZS5fX2NoYXJhY3Rlcl9jb3VudC09MSksITB9cmV0dXJuITF9LHQucHJvdG90eXBlLmlzX2VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLl9faXRlbXMubGVuZ3RofSx0LnByb3RvdHlwZS5sYXN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKT9udWxsOnRoaXMuX19pdGVtc1t0aGlzLl9faXRlbXMubGVuZ3RoLTFdfSx0LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGUpe3RoaXMuX19pdGVtcy5wdXNoKGUpO3ZhciB0PWUubGFzdEluZGV4T2YoIlxuIik7LTEhPT10P3RoaXMuX19jaGFyYWN0ZXJfY291bnQ9ZS5sZW5ndGgtdDp0aGlzLl9fY2hhcmFjdGVyX2NvdW50Kz1lLmxlbmd0aH0sdC5wcm90b3R5cGUucG9wPWZ1bmN0aW9uKCl7dmFyIGU9bnVsbDtyZXR1cm4gdGhpcy5pc19lbXB0eSgpfHwoZT10aGlzLl9faXRlbXMucG9wKCksdGhpcy5fX2NoYXJhY3Rlcl9jb3VudC09ZS5sZW5ndGgpLGV9LHQucHJvdG90eXBlLl9yZW1vdmVfaW5kZW50PWZ1bmN0aW9uKCl7dGhpcy5fX2luZGVudF9jb3VudD4wJiYodGhpcy5fX2luZGVudF9jb3VudC09MSx0aGlzLl9fY2hhcmFjdGVyX2NvdW50LT10aGlzLl9fcGFyZW50LmluZGVudF9zaXplKX0sdC5wcm90b3R5cGUuX3JlbW92ZV93cmFwX2luZGVudD1mdW5jdGlvbigpe3RoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudD4wJiYodGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50LT0xKX0sdC5wcm90b3R5cGUudHJpbT1mdW5jdGlvbigpe2Zvcig7IiAiPT09dGhpcy5sYXN0KCk7KXRoaXMuX19pdGVtcy5wb3AoKSx0aGlzLl9fY2hhcmFjdGVyX2NvdW50LT0xfSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBlPSIiO3JldHVybiB0aGlzLmlzX2VtcHR5KCk/dGhpcy5fX3BhcmVudC5pbmRlbnRfZW1wdHlfbGluZXMmJihlPXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zdHJpbmcodGhpcy5fX2luZGVudF9jb3VudCkpOihlPXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zdHJpbmcodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSxlKz10aGlzLl9faXRlbXMuam9pbigiIikpLGV9LG4ucHJvdG90eXBlLmdldF9pbmRlbnRfc2l6ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX19iYXNlX3N0cmluZ19sZW5ndGg7cmV0dXJuIHQ9dHx8MCxlPDAmJihuPTApLG4rPWUqdGhpcy5fX2luZGVudF9zaXplLG4rPXR9LG4ucHJvdG90eXBlLmdldF9pbmRlbnRfc3RyaW5nPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fX2Jhc2Vfc3RyaW5nO3JldHVybiB0PXR8fDAsZTwwJiYoZT0wLG49IiIpLHQrPWUqdGhpcy5fX2luZGVudF9zaXplLHRoaXMuX19lbnN1cmVfY2FjaGUodCksbis9dGhpcy5fX2NhY2hlW3RdfSxuLnByb3RvdHlwZS5fX2Vuc3VyZV9jYWNoZT1mdW5jdGlvbihlKXtmb3IoO2U+PXRoaXMuX19jYWNoZS5sZW5ndGg7KXRoaXMuX19hZGRfY29sdW1uKCl9LG4ucHJvdG90eXBlLl9fYWRkX2NvbHVtbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX19jYWNoZS5sZW5ndGgsdD0wLG49IiI7dGhpcy5fX2luZGVudF9zaXplJiZlPj10aGlzLl9faW5kZW50X3NpemUmJihlLT0odD1NYXRoLmZsb29yKGUvdGhpcy5fX2luZGVudF9zaXplKSkqdGhpcy5fX2luZGVudF9zaXplLG49bmV3IEFycmF5KHQrMSkuam9pbih0aGlzLl9faW5kZW50X3N0cmluZykpLGUmJihuKz1uZXcgQXJyYXkoZSsxKS5qb2luKCIgIikpLHRoaXMuX19jYWNoZS5wdXNoKG4pfSxyLnByb3RvdHlwZS5fX2FkZF9vdXRwdXRsaW5lPWZ1bmN0aW9uKCl7dGhpcy5wcmV2aW91c19saW5lPXRoaXMuY3VycmVudF9saW5lLHRoaXMuY3VycmVudF9saW5lPXRoaXMubmV4dF9saW5lLmNsb25lX2VtcHR5KCksdGhpcy5fX2xpbmVzLnB1c2godGhpcy5jdXJyZW50X2xpbmUpfSxyLnByb3RvdHlwZS5nZXRfbGluZV9udW1iZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX2xpbmVzLmxlbmd0aH0sci5wcm90b3R5cGUuZ2V0X2luZGVudF9zdHJpbmc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3N0cmluZyhlLHQpfSxyLnByb3RvdHlwZS5nZXRfaW5kZW50X3NpemU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3NpemUoZSx0KX0sci5wcm90b3R5cGUuaXNfZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5wcmV2aW91c19saW5lJiZ0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpfSxyLnByb3RvdHlwZS5hZGRfbmV3X2xpbmU9ZnVuY3Rpb24oZSl7cmV0dXJuISh0aGlzLmlzX2VtcHR5KCl8fCFlJiZ0aGlzLmp1c3RfYWRkZWRfbmV3bGluZSgpfHwodGhpcy5yYXd8fHRoaXMuX19hZGRfb3V0cHV0bGluZSgpLDApKX0sci5wcm90b3R5cGUuZ2V0X2NvZGU9ZnVuY3Rpb24oZSl7dGhpcy50cmltKCEwKTt2YXIgdD10aGlzLmN1cnJlbnRfbGluZS5wb3AoKTt0JiYoIlxuIj09PXRbdC5sZW5ndGgtMV0mJih0PXQucmVwbGFjZSgvXG4rJC9nLCIiKSksdGhpcy5jdXJyZW50X2xpbmUucHVzaCh0KSksdGhpcy5fZW5kX3dpdGhfbmV3bGluZSYmdGhpcy5fX2FkZF9vdXRwdXRsaW5lKCk7dmFyIG49dGhpcy5fX2xpbmVzLmpvaW4oIlxuIik7cmV0dXJuIlxuIiE9PWUmJihuPW4ucmVwbGFjZSgvW1xuXS9nLGUpKSxufSxyLnByb3RvdHlwZS5zZXRfd3JhcF9wb2ludD1mdW5jdGlvbigpe3RoaXMuY3VycmVudF9saW5lLl9zZXRfd3JhcF9wb2ludCgpfSxyLnByb3RvdHlwZS5zZXRfaW5kZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9ZXx8MCx0PXR8fDAsdGhpcy5uZXh0X2xpbmUuc2V0X2luZGVudChlLHQpLHRoaXMuX19saW5lcy5sZW5ndGg+MT8odGhpcy5jdXJyZW50X2xpbmUuc2V0X2luZGVudChlLHQpLCEwKToodGhpcy5jdXJyZW50X2xpbmUuc2V0X2luZGVudCgpLCExKX0sci5wcm90b3R5cGUuYWRkX3Jhd190b2tlbj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubmV3bGluZXM7dCsrKXRoaXMuX19hZGRfb3V0cHV0bGluZSgpO3RoaXMuY3VycmVudF9saW5lLnNldF9pbmRlbnQoLTEpLHRoaXMuY3VycmVudF9saW5lLnB1c2goZS53aGl0ZXNwYWNlX2JlZm9yZSksdGhpcy5jdXJyZW50X2xpbmUucHVzaChlLnRleHQpLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD0hMX0sci5wcm90b3R5cGUuYWRkX3Rva2VuPWZ1bmN0aW9uKGUpe3RoaXMuX19hZGRfc3BhY2VfYmVmb3JlX3Rva2VuKCksdGhpcy5jdXJyZW50X2xpbmUucHVzaChlKSx0aGlzLnNwYWNlX2JlZm9yZV90b2tlbj0hMSx0aGlzLm5vbl9icmVha2luZ19zcGFjZT0hMSx0aGlzLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQ9dGhpcy5jdXJyZW50X2xpbmUuX2FsbG93X3dyYXAoKX0sci5wcm90b3R5cGUuX19hZGRfc3BhY2VfYmVmb3JlX3Rva2VuPWZ1bmN0aW9uKCl7dGhpcy5zcGFjZV9iZWZvcmVfdG9rZW4mJiF0aGlzLmp1c3RfYWRkZWRfbmV3bGluZSgpJiYodGhpcy5ub25fYnJlYWtpbmdfc3BhY2V8fHRoaXMuc2V0X3dyYXBfcG9pbnQoKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKCIgIikpfSxyLnByb3RvdHlwZS5yZW1vdmVfaW5kZW50PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLl9fbGluZXMubGVuZ3RoO2U8dDspdGhpcy5fX2xpbmVzW2VdLl9yZW1vdmVfaW5kZW50KCksZSsrO3RoaXMuY3VycmVudF9saW5lLl9yZW1vdmVfd3JhcF9pbmRlbnQoKX0sci5wcm90b3R5cGUudHJpbT1mdW5jdGlvbihlKXtmb3IoZT12b2lkIDAhPT1lJiZlLHRoaXMuY3VycmVudF9saW5lLnRyaW0oKTtlJiZ0aGlzLl9fbGluZXMubGVuZ3RoPjEmJnRoaXMuY3VycmVudF9saW5lLmlzX2VtcHR5KCk7KXRoaXMuX19saW5lcy5wb3AoKSx0aGlzLmN1cnJlbnRfbGluZT10aGlzLl9fbGluZXNbdGhpcy5fX2xpbmVzLmxlbmd0aC0xXSx0aGlzLmN1cnJlbnRfbGluZS50cmltKCk7dGhpcy5wcmV2aW91c19saW5lPXRoaXMuX19saW5lcy5sZW5ndGg+MT90aGlzLl9fbGluZXNbdGhpcy5fX2xpbmVzLmxlbmd0aC0yXTpudWxsfSxyLnByb3RvdHlwZS5qdXN0X2FkZGVkX25ld2xpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50X2xpbmUuaXNfZW1wdHkoKX0sci5wcm90b3R5cGUuanVzdF9hZGRlZF9ibGFua2xpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc19lbXB0eSgpfHx0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpJiZ0aGlzLnByZXZpb3VzX2xpbmUuaXNfZW1wdHkoKX0sci5wcm90b3R5cGUuZW5zdXJlX2VtcHR5X2xpbmVfYWJvdmU9ZnVuY3Rpb24oZSxuKXtmb3IodmFyIHI9dGhpcy5fX2xpbmVzLmxlbmd0aC0yO3I+PTA7KXt2YXIgaT10aGlzLl9fbGluZXNbcl07aWYoaS5pc19lbXB0eSgpKWJyZWFrO2lmKDAhPT1pLml0ZW0oMCkuaW5kZXhPZihlKSYmaS5pdGVtKC0xKSE9PW4pe3RoaXMuX19saW5lcy5zcGxpY2UocisxLDAsbmV3IHQodGhpcykpLHRoaXMucHJldmlvdXNfbGluZT10aGlzLl9fbGluZXNbdGhpcy5fX2xpbmVzLmxlbmd0aC0yXTticmVha31yLS19fSxlLmV4cG9ydHMuT3V0cHV0PXJ9LCwsLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXt0aGlzLnJhd19vcHRpb25zPW4oZSx0KSx0aGlzLmRpc2FibGVkPXRoaXMuX2dldF9ib29sZWFuKCJkaXNhYmxlZCIpLHRoaXMuZW9sPXRoaXMuX2dldF9jaGFyYWN0ZXJzKCJlb2wiLCJhdXRvIiksdGhpcy5lbmRfd2l0aF9uZXdsaW5lPXRoaXMuX2dldF9ib29sZWFuKCJlbmRfd2l0aF9uZXdsaW5lIiksdGhpcy5pbmRlbnRfc2l6ZT10aGlzLl9nZXRfbnVtYmVyKCJpbmRlbnRfc2l6ZSIsNCksdGhpcy5pbmRlbnRfY2hhcj10aGlzLl9nZXRfY2hhcmFjdGVycygiaW5kZW50X2NoYXIiLCIgIiksdGhpcy5pbmRlbnRfbGV2ZWw9dGhpcy5fZ2V0X251bWJlcigiaW5kZW50X2xldmVsIiksdGhpcy5wcmVzZXJ2ZV9uZXdsaW5lcz10aGlzLl9nZXRfYm9vbGVhbigicHJlc2VydmVfbmV3bGluZXMiLCEwKSx0aGlzLm1heF9wcmVzZXJ2ZV9uZXdsaW5lcz10aGlzLl9nZXRfbnVtYmVyKCJtYXhfcHJlc2VydmVfbmV3bGluZXMiLDMyNzg2KSx0aGlzLnByZXNlcnZlX25ld2xpbmVzfHwodGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXM9MCksdGhpcy5pbmRlbnRfd2l0aF90YWJzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfd2l0aF90YWJzIiwiXHQiPT09dGhpcy5pbmRlbnRfY2hhciksdGhpcy5pbmRlbnRfd2l0aF90YWJzJiYodGhpcy5pbmRlbnRfY2hhcj0iXHQiLDE9PT10aGlzLmluZGVudF9zaXplJiYodGhpcy5pbmRlbnRfc2l6ZT00KSksdGhpcy53cmFwX2xpbmVfbGVuZ3RoPXRoaXMuX2dldF9udW1iZXIoIndyYXBfbGluZV9sZW5ndGgiLHRoaXMuX2dldF9udW1iZXIoIm1heF9jaGFyIikpLHRoaXMuaW5kZW50X2VtcHR5X2xpbmVzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfZW1wdHlfbGluZXMiKSx0aGlzLnRlbXBsYXRpbmc9dGhpcy5fZ2V0X3NlbGVjdGlvbl9saXN0KCJ0ZW1wbGF0aW5nIixbImF1dG8iLCJub25lIiwiZGphbmdvIiwiZXJiIiwiaGFuZGxlYmFycyIsInBocCIsInNtYXJ0eSJdLFsiYXV0byJdKX1mdW5jdGlvbiBuKGUsdCl7dmFyIG4saT17fTtmb3IobiBpbiBlPXIoZSkpbiE9PXQmJihpW25dPWVbbl0pO2lmKHQmJmVbdF0pZm9yKG4gaW4gZVt0XSlpW25dPWVbdF1bbl07cmV0dXJuIGl9ZnVuY3Rpb24gcihlKXt2YXIgdCxuPXt9O2Zvcih0IGluIGUpblt0LnJlcGxhY2UoLy0vZywiXyIpXT1lW3RdO3JldHVybiBufXQucHJvdG90eXBlLl9nZXRfYXJyYXk9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnJhd19vcHRpb25zW2VdLHI9dHx8W107cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBuP251bGwhPT1uJiYiZnVuY3Rpb24iPT10eXBlb2Ygbi5jb25jYXQmJihyPW4uY29uY2F0KCkpOiJzdHJpbmciPT10eXBlb2YgbiYmKHI9bi5zcGxpdCgvW15hLXpBLVowLTlfXC9cLV0rLykpLHJ9LHQucHJvdG90eXBlLl9nZXRfYm9vbGVhbj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMucmF3X29wdGlvbnNbZV07cmV0dXJuIHZvaWQgMD09PW4/ISF0OiEhbn0sdC5wcm90b3R5cGUuX2dldF9jaGFyYWN0ZXJzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5yYXdfb3B0aW9uc1tlXSxyPXR8fCIiO3JldHVybiJzdHJpbmciPT10eXBlb2YgbiYmKHI9bi5yZXBsYWNlKC9cXHIvLCJcciIpLnJlcGxhY2UoL1xcbi8sIlxuIikucmVwbGFjZSgvXFx0LywiXHQiKSkscn0sdC5wcm90b3R5cGUuX2dldF9udW1iZXI9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnJhd19vcHRpb25zW2VdO3Q9cGFyc2VJbnQodCwxMCksaXNOYU4odCkmJih0PTApO3ZhciByPXBhcnNlSW50KG4sMTApO3JldHVybiBpc05hTihyKSYmKHI9dCkscn0sdC5wcm90b3R5cGUuX2dldF9zZWxlY3Rpb249ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX2dldF9zZWxlY3Rpb25fbGlzdChlLHQsbik7aWYoMSE9PXIubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBPcHRpb24gVmFsdWU6IFRoZSBvcHRpb24gJyIrZSsiJyBjYW4gb25seSBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4iK3QrIlxuWW91IHBhc3NlZCBpbjogJyIrdGhpcy5yYXdfb3B0aW9uc1tlXSsiJyIpO3JldHVybiByWzBdfSx0LnByb3RvdHlwZS5fZ2V0X3NlbGVjdGlvbl9saXN0PWZ1bmN0aW9uKGUsdCxuKXtpZighdHx8MD09PXQubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiU2VsZWN0aW9uIGxpc3QgY2Fubm90IGJlIGVtcHR5LiIpO2lmKG49bnx8W3RbMF1dLCF0aGlzLl9pc192YWxpZF9zZWxlY3Rpb24obix0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgRGVmYXVsdCBWYWx1ZSEiKTt2YXIgcj10aGlzLl9nZXRfYXJyYXkoZSxuKTtpZighdGhpcy5faXNfdmFsaWRfc2VsZWN0aW9uKHIsdCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIE9wdGlvbiBWYWx1ZTogVGhlIG9wdGlvbiAnIitlKyInIGNhbiBjb250YWluIG9ubHkgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4iK3QrIlxuWW91IHBhc3NlZCBpbjogJyIrdGhpcy5yYXdfb3B0aW9uc1tlXSsiJyIpO3JldHVybiByfSx0LnByb3RvdHlwZS5faXNfdmFsaWRfc2VsZWN0aW9uPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubGVuZ3RoJiZ0Lmxlbmd0aCYmIWUuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuLTE9PT10LmluZGV4T2YoZSl9KSl9LGUuZXhwb3J0cy5PcHRpb25zPXQsZS5leHBvcnRzLm5vcm1hbGl6ZU9wdHM9cixlLmV4cG9ydHMubWVyZ2VPcHRzPW59LCxmdW5jdGlvbihlKXt2YXIgdD1SZWdFeHAucHJvdG90eXBlLmhhc093blByb3BlcnR5KCJzdGlja3kiKTtmdW5jdGlvbiBuKGUpe3RoaXMuX19pbnB1dD1lfHwiIix0aGlzLl9faW5wdXRfbGVuZ3RoPXRoaXMuX19pbnB1dC5sZW5ndGgsdGhpcy5fX3Bvc2l0aW9uPTB9bi5wcm90b3R5cGUucmVzdGFydD1mdW5jdGlvbigpe3RoaXMuX19wb3NpdGlvbj0wfSxuLnByb3RvdHlwZS5iYWNrPWZ1bmN0aW9uKCl7dGhpcy5fX3Bvc2l0aW9uPjAmJih0aGlzLl9fcG9zaXRpb24tPTEpfSxuLnByb3RvdHlwZS5oYXNOZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19wb3NpdGlvbjx0aGlzLl9faW5wdXRfbGVuZ3RofSxuLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7dmFyIGU9bnVsbDtyZXR1cm4gdGhpcy5oYXNOZXh0KCkmJihlPXRoaXMuX19pbnB1dC5jaGFyQXQodGhpcy5fX3Bvc2l0aW9uKSx0aGlzLl9fcG9zaXRpb24rPTEpLGV9LG4ucHJvdG90eXBlLnBlZWs9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtyZXR1cm4gZT1lfHwwLChlKz10aGlzLl9fcG9zaXRpb24pPj0wJiZlPHRoaXMuX19pbnB1dF9sZW5ndGgmJih0PXRoaXMuX19pbnB1dC5jaGFyQXQoZSkpLHR9LG4ucHJvdG90eXBlLl9fbWF0Y2g9ZnVuY3Rpb24oZSxuKXtlLmxhc3RJbmRleD1uO3ZhciByPWUuZXhlYyh0aGlzLl9faW5wdXQpO3JldHVybiFyfHx0JiZlLnN0aWNreXx8ci5pbmRleCE9PW4mJihyPW51bGwpLHJ9LG4ucHJvdG90eXBlLnRlc3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD10fHwwLCh0Kz10aGlzLl9fcG9zaXRpb24pPj0wJiZ0PHRoaXMuX19pbnB1dF9sZW5ndGgmJiEhdGhpcy5fX21hdGNoKGUsdCl9LG4ucHJvdG90eXBlLnRlc3RDaGFyPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5wZWVrKHQpO3JldHVybiBlLmxhc3RJbmRleD0wLG51bGwhPT1uJiZlLnRlc3Qobil9LG4ucHJvdG90eXBlLm1hdGNoPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19tYXRjaChlLHRoaXMuX19wb3NpdGlvbik7cmV0dXJuIHQ/dGhpcy5fX3Bvc2l0aW9uKz10WzBdLmxlbmd0aDp0PW51bGwsdH0sbi5wcm90b3R5cGUucmVhZD1mdW5jdGlvbihlLHQsbil7dmFyIHIsaT0iIjtyZXR1cm4gZSYmKHI9dGhpcy5tYXRjaChlKSkmJihpKz1yWzBdKSwhdHx8IXImJmV8fChpKz10aGlzLnJlYWRVbnRpbCh0LG4pKSxpfSxuLnByb3RvdHlwZS5yZWFkVW50aWw9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPXRoaXMuX19wb3NpdGlvbjtlLmxhc3RJbmRleD10aGlzLl9fcG9zaXRpb247dmFyIGk9ZS5leGVjKHRoaXMuX19pbnB1dCk7cmV0dXJuIGk/KHI9aS5pbmRleCx0JiYocis9aVswXS5sZW5ndGgpKTpyPXRoaXMuX19pbnB1dF9sZW5ndGgsbj10aGlzLl9faW5wdXQuc3Vic3RyaW5nKHRoaXMuX19wb3NpdGlvbixyKSx0aGlzLl9fcG9zaXRpb249cixufSxuLnByb3RvdHlwZS5yZWFkVW50aWxBZnRlcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5yZWFkVW50aWwoZSwhMCl9LG4ucHJvdG90eXBlLmdldF9yZWdleHA9ZnVuY3Rpb24oZSxuKXt2YXIgcj1udWxsLGk9ImciO3JldHVybiBuJiZ0JiYoaT0ieSIpLCJzdHJpbmciPT10eXBlb2YgZSYmIiIhPT1lP3I9bmV3IFJlZ0V4cChlLGkpOmUmJihyPW5ldyBSZWdFeHAoZS5zb3VyY2UsaSkpLHJ9LG4ucHJvdG90eXBlLmdldF9saXRlcmFsX3JlZ2V4cD1mdW5jdGlvbihlKXtyZXR1cm4gUmVnRXhwKGUucmVwbGFjZSgvWy1cL1xcXiQqKz8uKCl8W1xde31dL2csIlxcJCYiKSl9LG4ucHJvdG90eXBlLnBlZWtVbnRpbEFmdGVyPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19wb3NpdGlvbixuPXRoaXMucmVhZFVudGlsQWZ0ZXIoZSk7cmV0dXJuIHRoaXMuX19wb3NpdGlvbj10LG59LG4ucHJvdG90eXBlLmxvb2tCYWNrPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19wb3NpdGlvbi0xO3JldHVybiB0Pj1lLmxlbmd0aCYmdGhpcy5fX2lucHV0LnN1YnN0cmluZyh0LWUubGVuZ3RoLHQpLnRvTG93ZXJDYXNlKCk9PT1lfSxlLmV4cG9ydHMuSW5wdXRTY2FubmVyPW59LCwsLCxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCl7ZT0ic3RyaW5nIj09dHlwZW9mIGU/ZTplLnNvdXJjZSx0PSJzdHJpbmciPT10eXBlb2YgdD90OnQuc291cmNlLHRoaXMuX19kaXJlY3RpdmVzX2Jsb2NrX3BhdHRlcm49bmV3IFJlZ0V4cChlKy8gYmVhdXRpZnkoIFx3K1s6XVx3KykrIC8uc291cmNlK3QsImciKSx0aGlzLl9fZGlyZWN0aXZlX3BhdHRlcm49LyAoXHcrKVs6XShcdyspL2csdGhpcy5fX2RpcmVjdGl2ZXNfZW5kX2lnbm9yZV9wYXR0ZXJuPW5ldyBSZWdFeHAoZSsvXHNiZWF1dGlmeVxzaWdub3JlOmVuZFxzLy5zb3VyY2UrdCwiZyIpfXQucHJvdG90eXBlLmdldF9kaXJlY3RpdmVzPWZ1bmN0aW9uKGUpe2lmKCFlLm1hdGNoKHRoaXMuX19kaXJlY3RpdmVzX2Jsb2NrX3BhdHRlcm4pKXJldHVybiBudWxsO3ZhciB0PXt9O3RoaXMuX19kaXJlY3RpdmVfcGF0dGVybi5sYXN0SW5kZXg9MDtmb3IodmFyIG49dGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuLmV4ZWMoZSk7bjspdFtuWzFdXT1uWzJdLG49dGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuLmV4ZWMoZSk7cmV0dXJuIHR9LHQucHJvdG90eXBlLnJlYWRJZ25vcmVkPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlYWRVbnRpbEFmdGVyKHRoaXMuX19kaXJlY3RpdmVzX2VuZF9pZ25vcmVfcGF0dGVybil9LGUuZXhwb3J0cy5EaXJlY3RpdmVzPXR9LCxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigxNikuQmVhdXRpZmllcixpPW4oMTcpLk9wdGlvbnM7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyByKGUsdCkuYmVhdXRpZnkoKX0sZS5leHBvcnRzLmRlZmF1bHRPcHRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBpfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTcpLk9wdGlvbnMsaT1uKDIpLk91dHB1dCxvPW4oOCkuSW5wdXRTY2FubmVyLHM9bmV3KDAsbigxMykuRGlyZWN0aXZlcykoL1wvXCovLC9cKlwvLyksYT0vXHJcbnxbXHJcbl0vLGw9L1xyXG58W1xyXG5dL2csYz0vXHMvLGg9Lyg/OlxzfFxuKSsvZyxkPS9cL1wqKD86W1xzXFNdKj8pKCg/OlwqXC8pfCQpL2cscD0vXC9cLyg/OlteXG5cclx1MjAyOFx1MjAyOV0qKS9nO2Z1bmN0aW9uIHUoZSx0KXt0aGlzLl9zb3VyY2VfdGV4dD1lfHwiIix0aGlzLl9vcHRpb25zPW5ldyByKHQpLHRoaXMuX2NoPW51bGwsdGhpcy5faW5wdXQ9bnVsbCx0aGlzLk5FU1RFRF9BVF9SVUxFPXsiQHBhZ2UiOiEwLCJAZm9udC1mYWNlIjohMCwiQGtleWZyYW1lcyI6ITAsIkBtZWRpYSI6ITAsIkBzdXBwb3J0cyI6ITAsIkBkb2N1bWVudCI6ITB9LHRoaXMuQ09ORElUSU9OQUxfR1JPVVBfUlVMRT17IkBtZWRpYSI6ITAsIkBzdXBwb3J0cyI6ITAsIkBkb2N1bWVudCI6ITB9fXUucHJvdG90eXBlLmVhdFN0cmluZz1mdW5jdGlvbihlKXt2YXIgdD0iIjtmb3IodGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpO3RoaXMuX2NoOyl7aWYodCs9dGhpcy5fY2gsIlxcIj09PXRoaXMuX2NoKXQrPXRoaXMuX2lucHV0Lm5leHQoKTtlbHNlIGlmKC0xIT09ZS5pbmRleE9mKHRoaXMuX2NoKXx8IlxuIj09PXRoaXMuX2NoKWJyZWFrO3RoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKX1yZXR1cm4gdH0sdS5wcm90b3R5cGUuZWF0V2hpdGVzcGFjZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9Yy50ZXN0KHRoaXMuX2lucHV0LnBlZWsoKSksbj0wO2MudGVzdCh0aGlzLl9pbnB1dC5wZWVrKCkpOyl0aGlzLl9jaD10aGlzLl9pbnB1dC5uZXh0KCksZSYmIlxuIj09PXRoaXMuX2NoJiYoMD09PW58fG48dGhpcy5fb3B0aW9ucy5tYXhfcHJlc2VydmVfbmV3bGluZXMpJiYobisrLHRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoITApKTtyZXR1cm4gdH0sdS5wcm90b3R5cGUuZm91bmROZXN0ZWRQc2V1ZG9DbGFzcz1mdW5jdGlvbigpe2Zvcih2YXIgZT0wLHQ9MSxuPXRoaXMuX2lucHV0LnBlZWsodCk7bjspe2lmKCJ7Ij09PW4pcmV0dXJuITA7aWYoIigiPT09billKz0xO2Vsc2UgaWYoIikiPT09bil7aWYoMD09PWUpcmV0dXJuITE7ZS09MX1lbHNlIGlmKCI7Ij09PW58fCJ9Ij09PW4pcmV0dXJuITE7dCsrLG49dGhpcy5faW5wdXQucGVlayh0KX1yZXR1cm4hMX0sdS5wcm90b3R5cGUucHJpbnRfc3RyaW5nPWZ1bmN0aW9uKGUpe3RoaXMuX291dHB1dC5zZXRfaW5kZW50KHRoaXMuX2luZGVudExldmVsKSx0aGlzLl9vdXRwdXQubm9uX2JyZWFraW5nX3NwYWNlPSEwLHRoaXMuX291dHB1dC5hZGRfdG9rZW4oZSl9LHUucHJvdG90eXBlLnByZXNlcnZlU2luZ2xlU3BhY2U9ZnVuY3Rpb24oZSl7ZSYmKHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITApfSx1LnByb3RvdHlwZS5pbmRlbnQ9ZnVuY3Rpb24oKXt0aGlzLl9pbmRlbnRMZXZlbCsrfSx1LnByb3RvdHlwZS5vdXRkZW50PWZ1bmN0aW9uKCl7dGhpcy5faW5kZW50TGV2ZWw+MCYmdGhpcy5faW5kZW50TGV2ZWwtLX0sdS5wcm90b3R5cGUuYmVhdXRpZnk9ZnVuY3Rpb24oKXtpZih0aGlzLl9vcHRpb25zLmRpc2FibGVkKXJldHVybiB0aGlzLl9zb3VyY2VfdGV4dDt2YXIgZT10aGlzLl9zb3VyY2VfdGV4dCx0PXRoaXMuX29wdGlvbnMuZW9sOyJhdXRvIj09PXQmJih0PSJcbiIsZSYmYS50ZXN0KGV8fCIiKSYmKHQ9ZS5tYXRjaChhKVswXSkpO3ZhciBuPShlPWUucmVwbGFjZShsLCJcbiIpKS5tYXRjaCgvXltcdCBdKi8pWzBdO3RoaXMuX291dHB1dD1uZXcgaSh0aGlzLl9vcHRpb25zLG4pLHRoaXMuX2lucHV0PW5ldyBvKGUpLHRoaXMuX2luZGVudExldmVsPTAsdGhpcy5fbmVzdGVkTGV2ZWw9MCx0aGlzLl9jaD1udWxsO2Zvcih2YXIgcix1LG09MCxmPSExLGc9ITEsYj0hMSx5PSExLHY9ITEsdz10aGlzLl9jaDtyPSIiIT09dGhpcy5faW5wdXQucmVhZChoKSx1PXcsdGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpLCJcXCI9PT10aGlzLl9jaCYmdGhpcy5faW5wdXQuaGFzTmV4dCgpJiYodGhpcy5fY2grPXRoaXMuX2lucHV0Lm5leHQoKSksdz10aGlzLl9jaCx0aGlzLl9jaDspaWYoIi8iPT09dGhpcy5fY2gmJiIqIj09PXRoaXMuX2lucHV0LnBlZWsoKSl7dGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpLHRoaXMuX2lucHV0LmJhY2soKTt2YXIgeD10aGlzLl9pbnB1dC5yZWFkKGQpLFM9cy5nZXRfZGlyZWN0aXZlcyh4KTtTJiYic3RhcnQiPT09Uy5pZ25vcmUmJih4Kz1zLnJlYWRJZ25vcmVkKHRoaXMuX2lucHV0KSksdGhpcy5wcmludF9zdHJpbmcoeCksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCl9ZWxzZSBpZigiLyI9PT10aGlzLl9jaCYmIi8iPT09dGhpcy5faW5wdXQucGVlaygpKXRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITAsdGhpcy5faW5wdXQuYmFjaygpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2lucHV0LnJlYWQocCkpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCk7ZWxzZSBpZigiQCI9PT10aGlzLl9jaClpZih0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UociksInsiPT09dGhpcy5faW5wdXQucGVlaygpKXRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoK3RoaXMuZWF0U3RyaW5nKCJ9IikpO2Vsc2V7dGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpO3ZhciBDPXRoaXMuX2lucHV0LnBlZWtVbnRpbEFmdGVyKC9bOiAsO3t9KClbXF1cLz0nIl0vZyk7Qy5tYXRjaCgvWyA6XSQvKSYmKEM9dGhpcy5lYXRTdHJpbmcoIjogIikucmVwbGFjZSgvXHMkLywiIiksdGhpcy5wcmludF9zdHJpbmcoQyksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCksImV4dGVuZCI9PT0oQz1DLnJlcGxhY2UoL1xzJC8sIiIpKT95PSEwOiJpbXBvcnQiPT09QyYmKHY9ITApLEMgaW4gdGhpcy5ORVNURURfQVRfUlVMRT8odGhpcy5fbmVzdGVkTGV2ZWwrPTEsQyBpbiB0aGlzLkNPTkRJVElPTkFMX0dST1VQX1JVTEUmJihiPSEwKSk6Znx8MCE9PW18fC0xPT09Qy5pbmRleE9mKCI6Iil8fChnPSEwLHRoaXMuaW5kZW50KCkpfWVsc2UiIyI9PT10aGlzLl9jaCYmInsiPT09dGhpcy5faW5wdXQucGVlaygpPyh0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UociksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2grdGhpcy5lYXRTdHJpbmcoIn0iKSkpOiJ7Ij09PXRoaXMuX2NoPyhnJiYoZz0hMSx0aGlzLm91dGRlbnQoKSksYj8oYj0hMSxmPXRoaXMuX2luZGVudExldmVsPj10aGlzLl9uZXN0ZWRMZXZlbCk6Zj10aGlzLl9pbmRlbnRMZXZlbD49dGhpcy5fbmVzdGVkTGV2ZWwtMSx0aGlzLl9vcHRpb25zLm5ld2xpbmVfYmV0d2Vlbl9ydWxlcyYmZiYmdGhpcy5fb3V0cHV0LnByZXZpb3VzX2xpbmUmJiJ7IiE9PXRoaXMuX291dHB1dC5wcmV2aW91c19saW5lLml0ZW0oLTEpJiZ0aGlzLl9vdXRwdXQuZW5zdXJlX2VtcHR5X2xpbmVfYWJvdmUoIi8iLCIsIiksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCwiZXhwYW5kIj09PXRoaXMuX29wdGlvbnMuYnJhY2Vfc3R5bGU/KHRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5pbmRlbnQoKSx0aGlzLl9vdXRwdXQuc2V0X2luZGVudCh0aGlzLl9pbmRlbnRMZXZlbCkpOih0aGlzLmluZGVudCgpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCkpOiJ9Ij09PXRoaXMuX2NoPyh0aGlzLm91dGRlbnQoKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCksInsiPT09dSYmdGhpcy5fb3V0cHV0LnRyaW0oITApLHY9ITEseT0hMSxnJiYodGhpcy5vdXRkZW50KCksZz0hMSksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLGY9ITEsdGhpcy5fbmVzdGVkTGV2ZWwmJnRoaXMuX25lc3RlZExldmVsLS0sdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCksdGhpcy5fb3B0aW9ucy5uZXdsaW5lX2JldHdlZW5fcnVsZXMmJiF0aGlzLl9vdXRwdXQuanVzdF9hZGRlZF9ibGFua2xpbmUoKSYmIn0iIT09dGhpcy5faW5wdXQucGVlaygpJiZ0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCEwKSk6IjoiPT09dGhpcy5fY2g/IWYmJiFifHx0aGlzLl9pbnB1dC5sb29rQmFjaygiJiIpfHx0aGlzLmZvdW5kTmVzdGVkUHNldWRvQ2xhc3MoKXx8dGhpcy5faW5wdXQubG9va0JhY2soIigiKXx8eXx8MCE9PW0/KHRoaXMuX2lucHV0Lmxvb2tCYWNrKCIgIikmJih0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwKSwiOiI9PT10aGlzLl9pbnB1dC5wZWVrKCk/KHRoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKSx0aGlzLnByaW50X3N0cmluZygiOjoiKSk6dGhpcy5wcmludF9zdHJpbmcoIjoiKSk6KHRoaXMucHJpbnRfc3RyaW5nKCI6IiksZ3x8KGc9ITAsdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCx0aGlzLmVhdFdoaXRlc3BhY2UoITApLHRoaXMuaW5kZW50KCkpKTonIic9PT10aGlzLl9jaHx8IiciPT09dGhpcy5fY2g/KHRoaXMucHJlc2VydmVTaW5nbGVTcGFjZShyKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCt0aGlzLmVhdFN0cmluZyh0aGlzLl9jaCkpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCkpOiI7Ij09PXRoaXMuX2NoPzA9PT1tPyhnJiYodGhpcy5vdXRkZW50KCksZz0hMSkseT0hMSx2PSExLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoITApLCIvIiE9PXRoaXMuX2lucHV0LnBlZWsoKSYmdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpKToodGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCk6IigiPT09dGhpcy5fY2g/dGhpcy5faW5wdXQubG9va0JhY2soInVybCIpPyh0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5lYXRXaGl0ZXNwYWNlKCksbSsrLHRoaXMuaW5kZW50KCksdGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpLCIpIj09PXRoaXMuX2NofHwnIic9PT10aGlzLl9jaHx8IiciPT09dGhpcy5fY2g/dGhpcy5faW5wdXQuYmFjaygpOnRoaXMuX2NoJiYodGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2grdGhpcy5lYXRTdHJpbmcoIikiKSksbSYmKG0tLSx0aGlzLm91dGRlbnQoKSkpKToodGhpcy5wcmVzZXJ2ZVNpbmdsZVNwYWNlKHIpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoKSxtKyssdGhpcy5pbmRlbnQoKSk6IikiPT09dGhpcy5fY2g/KG0mJihtLS0sdGhpcy5vdXRkZW50KCkpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSk6IiwiPT09dGhpcy5fY2g/KHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoITApLCF0aGlzLl9vcHRpb25zLnNlbGVjdG9yX3NlcGFyYXRvcl9uZXdsaW5lfHxnfHwwIT09bXx8dnx8eT90aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwOnRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKSk6Ij4iIT09dGhpcy5fY2gmJiIrIiE9PXRoaXMuX2NoJiYifiIhPT10aGlzLl9jaHx8Z3x8MCE9PW0/Il0iPT09dGhpcy5fY2g/dGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpOiJbIj09PXRoaXMuX2NoPyh0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UociksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpKToiPSI9PT10aGlzLl9jaD8odGhpcy5lYXRXaGl0ZXNwYWNlKCksdGhpcy5wcmludF9zdHJpbmcoIj0iKSxjLnRlc3QodGhpcy5fY2gpJiYodGhpcy5fY2g9IiIpKToiISIhPT10aGlzLl9jaHx8dGhpcy5faW5wdXQubG9va0JhY2soIlxcIik/KHRoaXMucHJlc2VydmVTaW5nbGVTcGFjZShyKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCkpOih0aGlzLnByaW50X3N0cmluZygiICIpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSk6dGhpcy5fb3B0aW9ucy5zcGFjZV9hcm91bmRfY29tYmluYXRvcj8odGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCk6KHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoKSx0aGlzLl9jaCYmYy50ZXN0KHRoaXMuX2NoKSYmKHRoaXMuX2NoPSIiKSk7cmV0dXJuIHRoaXMuX291dHB1dC5nZXRfY29kZSh0KX0sZS5leHBvcnRzLkJlYXV0aWZpZXI9dX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNikuT3B0aW9ucztmdW5jdGlvbiBpKGUpe3IuY2FsbCh0aGlzLGUsImNzcyIpLHRoaXMuc2VsZWN0b3Jfc2VwYXJhdG9yX25ld2xpbmU9dGhpcy5fZ2V0X2Jvb2xlYW4oInNlbGVjdG9yX3NlcGFyYXRvcl9uZXdsaW5lIiwhMCksdGhpcy5uZXdsaW5lX2JldHdlZW5fcnVsZXM9dGhpcy5fZ2V0X2Jvb2xlYW4oIm5ld2xpbmVfYmV0d2Vlbl9ydWxlcyIsITApO3ZhciB0PXRoaXMuX2dldF9ib29sZWFuKCJzcGFjZV9hcm91bmRfc2VsZWN0b3Jfc2VwYXJhdG9yIik7dGhpcy5zcGFjZV9hcm91bmRfY29tYmluYXRvcj10aGlzLl9nZXRfYm9vbGVhbigic3BhY2VfYXJvdW5kX2NvbWJpbmF0b3IiKXx8dDt2YXIgbj10aGlzLl9nZXRfc2VsZWN0aW9uX2xpc3QoImJyYWNlX3N0eWxlIixbImNvbGxhcHNlIiwiZXhwYW5kIiwiZW5kLWV4cGFuZCIsIm5vbmUiLCJwcmVzZXJ2ZS1pbmxpbmUiXSk7dGhpcy5icmFjZV9zdHlsZT0iY29sbGFwc2UiO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKSJleHBhbmQiIT09bltpXT90aGlzLmJyYWNlX3N0eWxlPSJjb2xsYXBzZSI6dGhpcy5icmFjZV9zdHlsZT1uW2ldfWkucHJvdG90eXBlPW5ldyByLGUuZXhwb3J0cy5PcHRpb25zPWl9XSxSaD17fSxEaD1mdW5jdGlvbiBlKHQpe3ZhciBuPVJoW3RdO2lmKHZvaWQgMCE9PW4pcmV0dXJuIG4uZXhwb3J0czt2YXIgcj1SaFt0XT17ZXhwb3J0czp7fX07cmV0dXJuIEZoW3RdKHIsci5leHBvcnRzLGUpLHIuZXhwb3J0c30oMTUpO3ZhciBIaD1EaDtmdW5jdGlvbiBHaChlLHQsbil7dmFyIHI9ZS5nZXRUZXh0KCksaT0hMCxvPTAscz0hMSxhPW4udGFiU2l6ZXx8NDtpZih0KXtmb3IodmFyIGw9ZS5vZmZzZXRBdCh0LnN0YXJ0KSxjPWw7Yz4wJiZlZChyLGMtMSk7KWMtLTswPT09Y3x8UWgocixjLTEpP2w9YzpjPGwmJihsPWMrMSk7Zm9yKHZhciBoPWUub2Zmc2V0QXQodC5lbmQpLGQ9aDtkPHIubGVuZ3RoJiZlZChyLGQpOylkKys7aWYoKGQ9PT1yLmxlbmd0aHx8UWgocixkKSkmJihoPWQpLHQ9QW8uY3JlYXRlKGUucG9zaXRpb25BdChsKSxlLnBvc2l0aW9uQXQoaCkpLHM9ZnVuY3Rpb24oZSx0KXtmb3IoO3Q+PTA7KXt2YXIgbj1lLmNoYXJDb2RlQXQodCk7aWYobj09PVhoKXJldHVybiEwO2lmKG49PT1ZaClyZXR1cm4hMTt0LS19cmV0dXJuITF9KHIsbCksaT1oPT09ci5sZW5ndGgscj1yLnN1YnN0cmluZyhsLGgpLDAhPT1sKXt2YXIgcD1lLm9mZnNldEF0KE5vLmNyZWF0ZSh0LnN0YXJ0LmxpbmUsMCkpO289ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQsaT0wLG89bi50YWJTaXplfHw0O2Zvcig7cjxlLmxlbmd0aDspe3ZhciBzPWUuY2hhckF0KHIpO2lmKCIgIj09PXMpaSsrO2Vsc2V7aWYoIlx0IiE9PXMpYnJlYWs7aSs9b31yKyt9cmV0dXJuIE1hdGguZmxvb3IoaS9vKX0oZS5nZXRUZXh0KCkscCxuKX1zJiYocj0ie1xuIi5jb25jYXQoSmgocikpKX1lbHNlIHQ9QW8uY3JlYXRlKE5vLmNyZWF0ZSgwLDApLGUucG9zaXRpb25BdChyLmxlbmd0aCkpO3ZhciB1PXtpbmRlbnRfc2l6ZTphLGluZGVudF9jaGFyOm4uaW5zZXJ0U3BhY2VzPyIgIjoiXHQiLGVuZF93aXRoX25ld2xpbmU6aSYmWmgobiwiaW5zZXJ0RmluYWxOZXdsaW5lIiwhMSksc2VsZWN0b3Jfc2VwYXJhdG9yX25ld2xpbmU6WmgobiwibmV3bGluZUJldHdlZW5TZWxlY3RvcnMiLCEwKSxuZXdsaW5lX2JldHdlZW5fcnVsZXM6WmgobiwibmV3bGluZUJldHdlZW5SdWxlcyIsITApLHNwYWNlX2Fyb3VuZF9zZWxlY3Rvcl9zZXBhcmF0b3I6Wmgobiwic3BhY2VBcm91bmRTZWxlY3RvclNlcGFyYXRvciIsITEpLGJyYWNlX3N0eWxlOlpoKG4sImJyYWNlU3R5bGUiLCJjb2xsYXBzZSIpLGluZGVudF9lbXB0eV9saW5lczpaaChuLCJpbmRlbnRFbXB0eUxpbmVzIiwhMSksbWF4X3ByZXNlcnZlX25ld2xpbmVzOlpoKG4sIm1heFByZXNlcnZlTmV3TGluZXMiLHZvaWQgMCkscHJlc2VydmVfbmV3bGluZXM6WmgobiwicHJlc2VydmVOZXdMaW5lcyIsITApLHdyYXBfbGluZV9sZW5ndGg6Wmgobiwid3JhcExpbmVMZW5ndGgiLHZvaWQgMCksZW9sOiJcbiJ9LG09SGgocix1KTtpZihzJiYobT1KaChtLnN1YnN0cmluZygyKSkpLG8+MCl7dmFyIGY9bi5pbnNlcnRTcGFjZXM/WHIoIiAiLGEqbyk6WHIoIlx0IixvKTttPW0uc3BsaXQoIlxuIikuam9pbigiXG4iK2YpLDA9PT10LnN0YXJ0LmNoYXJhY3RlciYmKG09ZittKX1yZXR1cm5be3JhbmdlOnQsbmV3VGV4dDptfV19ZnVuY3Rpb24gSmgoZSl7cmV0dXJuIGUucmVwbGFjZSgvXlxzKy8sIiIpfXZhciBYaD0ieyIuY2hhckNvZGVBdCgwKSxZaD0ifSIuY2hhckNvZGVBdCgwKTtmdW5jdGlvbiBaaChlLHQsbil7aWYoZSYmZS5oYXNPd25Qcm9wZXJ0eSh0KSl7dmFyIHI9ZVt0XTtpZihudWxsIT09cilyZXR1cm4gcn1yZXR1cm4gbn1mdW5jdGlvbiBRaChlLHQpe3JldHVybi0xIT09IlxyXG4iLmluZGV4T2YoZS5jaGFyQXQodCkpfWZ1bmN0aW9uIGVkKGUsdCl7cmV0dXJuLTEhPT0iIFx0Ii5pbmRleE9mKGUuY2hhckF0KHQpKX12YXIgdGQ9e3ZlcnNpb246MS4xLHByb3BlcnRpZXM6W3tuYW1lOiJhZGRpdGl2ZS1zeW1ib2xzIixicm93c2VyczpbIkZGMzMiXSxzeW50YXg6IlsgPGludGVnZXI+ICYmIDxzeW1ib2w+IF0jIixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkBjb3VudGVyLXN0eWxlIGRlc2NyaXB0b3IuIFNwZWNpZmllcyB0aGUgc3ltYm9scyB1c2VkIGJ5IHRoZSBtYXJrZXItY29uc3RydWN0aW9uIGFsZ29yaXRobSBzcGVjaWZpZWQgYnkgdGhlIHN5c3RlbSBkZXNjcmlwdG9yLiBOZWVkcyB0byBiZSBzcGVjaWZpZWQgaWYgdGhlIGNvdW50ZXIgc3lzdGVtIGlzICdhZGRpdGl2ZScuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIiwic3RyaW5nIiwiaW1hZ2UiLCJpZGVudGlmaWVyIl19LHtuYW1lOiJhbGlnbi1jb250ZW50Iix2YWx1ZXM6W3tuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJMaW5lcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgY2VudGVyIG9mIHRoZSBmbGV4IGNvbnRhaW5lci4ifSx7bmFtZToiZmxleC1lbmQiLGRlc2NyaXB0aW9uOiJMaW5lcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgZW5kIG9mIHRoZSBmbGV4IGNvbnRhaW5lci4ifSx7bmFtZToiZmxleC1zdGFydCIsZGVzY3JpcHRpb246IkxpbmVzIGFyZSBwYWNrZWQgdG93YXJkIHRoZSBzdGFydCBvZiB0aGUgZmxleCBjb250YWluZXIuIn0se25hbWU6InNwYWNlLWFyb3VuZCIsZGVzY3JpcHRpb246IkxpbmVzIGFyZSBldmVubHkgZGlzdHJpYnV0ZWQgaW4gdGhlIGZsZXggY29udGFpbmVyLCB3aXRoIGhhbGYtc2l6ZSBzcGFjZXMgb24gZWl0aGVyIGVuZC4ifSx7bmFtZToic3BhY2UtYmV0d2VlbiIsZGVzY3JpcHRpb246IkxpbmVzIGFyZSBldmVubHkgZGlzdHJpYnV0ZWQgaW4gdGhlIGZsZXggY29udGFpbmVyLiJ9LHtuYW1lOiJzdHJldGNoIixkZXNjcmlwdGlvbjoiTGluZXMgc3RyZXRjaCB0byB0YWtlIHVwIHRoZSByZW1haW5pbmcgc3BhY2UuIn1dLHN5bnRheDoibm9ybWFsIHwgPGJhc2VsaW5lLXBvc2l0aW9uPiB8IDxjb250ZW50LWRpc3RyaWJ1dGlvbj4gfCA8b3ZlcmZsb3ctcG9zaXRpb24+PyA8Y29udGVudC1wb3NpdGlvbj4iLHJlbGV2YW5jZTo2MixkZXNjcmlwdGlvbjoiQWxpZ25zIGEgZmxleCBjb250YWluZXLigJlzIGxpbmVzIHdpdGhpbiB0aGUgZmxleCBjb250YWluZXIgd2hlbiB0aGVyZSBpcyBleHRyYSBzcGFjZSBpbiB0aGUgY3Jvc3MtYXhpcywgc2ltaWxhciB0byBob3cgJ2p1c3RpZnktY29udGVudCcgYWxpZ25zIGluZGl2aWR1YWwgaXRlbXMgd2l0aGluIHRoZSBtYWluLWF4aXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJhbGlnbi1pdGVtcyIsdmFsdWVzOlt7bmFtZToiYmFzZWxpbmUiLGRlc2NyaXB0aW9uOiJJZiB0aGUgZmxleCBpdGVt4oCZcyBpbmxpbmUgYXhpcyBpcyB0aGUgc2FtZSBhcyB0aGUgY3Jvc3MgYXhpcywgdGhpcyB2YWx1ZSBpcyBpZGVudGljYWwgdG8gJ2ZsZXgtc3RhcnQnLiBPdGhlcndpc2UsIGl0IHBhcnRpY2lwYXRlcyBpbiBiYXNlbGluZSBhbGlnbm1lbnQuIn0se25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGl0ZW3igJlzIG1hcmdpbiBib3ggaXMgY2VudGVyZWQgaW4gdGhlIGNyb3NzIGF4aXMgd2l0aGluIHRoZSBsaW5lLiJ9LHtuYW1lOiJmbGV4LWVuZCIsZGVzY3JpcHRpb246IlRoZSBjcm9zcy1lbmQgbWFyZ2luIGVkZ2Ugb2YgdGhlIGZsZXggaXRlbSBpcyBwbGFjZWQgZmx1c2ggd2l0aCB0aGUgY3Jvc3MtZW5kIGVkZ2Ugb2YgdGhlIGxpbmUuIn0se25hbWU6ImZsZXgtc3RhcnQiLGRlc2NyaXB0aW9uOiJUaGUgY3Jvc3Mtc3RhcnQgbWFyZ2luIGVkZ2Ugb2YgdGhlIGZsZXggaXRlbSBpcyBwbGFjZWQgZmx1c2ggd2l0aCB0aGUgY3Jvc3Mtc3RhcnQgZWRnZSBvZiB0aGUgbGluZS4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IklmIHRoZSBjcm9zcyBzaXplIHByb3BlcnR5IG9mIHRoZSBmbGV4IGl0ZW0gY29tcHV0ZXMgdG8gYXV0bywgYW5kIG5laXRoZXIgb2YgdGhlIGNyb3NzLWF4aXMgbWFyZ2lucyBhcmUgYXV0bywgdGhlIGZsZXggaXRlbSBpcyBzdHJldGNoZWQuIn1dLHN5bnRheDoibm9ybWFsIHwgc3RyZXRjaCB8IDxiYXNlbGluZS1wb3NpdGlvbj4gfCBbIDxvdmVyZmxvdy1wb3NpdGlvbj4/IDxzZWxmLXBvc2l0aW9uPiBdIixyZWxldmFuY2U6ODUsZGVzY3JpcHRpb246IkFsaWducyBmbGV4IGl0ZW1zIGFsb25nIHRoZSBjcm9zcyBheGlzIG9mIHRoZSBjdXJyZW50IGxpbmUgb2YgdGhlIGZsZXggY29udGFpbmVyLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToianVzdGlmeS1pdGVtcyIsdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJub3JtYWwifSx7bmFtZToiZW5kIn0se25hbWU6InN0YXJ0In0se25hbWU6ImZsZXgtZW5kIixkZXNjcmlwdGlvbjonIkZsZXggaXRlbXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIGVuZCBvZiB0aGUgbGluZS4iJ30se25hbWU6ImZsZXgtc3RhcnQiLGRlc2NyaXB0aW9uOiciRmxleCBpdGVtcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgc3RhcnQgb2YgdGhlIGxpbmUuIid9LHtuYW1lOiJzZWxmLWVuZCIsZGVzY3JpcHRpb246IlRoZSBpdGVtIGlzIHBhY2tlZCBmbHVzaCB0byB0aGUgZWRnZSBvZiB0aGUgYWxpZ25tZW50IGNvbnRhaW5lciBvZiB0aGUgZW5kIHNpZGUgb2YgdGhlIGl0ZW0sIGluIHRoZSBhcHByb3ByaWF0ZSBheGlzLiJ9LHtuYW1lOiJzZWxmLXN0YXJ0IixkZXNjcmlwdGlvbjoiVGhlIGl0ZW0gaXMgcGFja2VkIGZsdXNoIHRvIHRoZSBlZGdlIG9mIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyIG9mIHRoZSBzdGFydCBzaWRlIG9mIHRoZSBpdGVtLCBpbiB0aGUgYXBwcm9wcmlhdGUgYXhpcy4uIn0se25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IlRoZSBpdGVtcyBhcmUgcGFja2VkIGZsdXNoIHRvIGVhY2ggb3RoZXIgdG93YXJkIHRoZSBjZW50ZXIgb2YgdGhlIG9mIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyLiJ9LHtuYW1lOiJsZWZ0In0se25hbWU6InJpZ2h0In0se25hbWU6ImJhc2VsaW5lIn0se25hbWU6ImZpcnN0IGJhc2VsaW5lIn0se25hbWU6Imxhc3QgYmFzZWxpbmUifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IklmIHRoZSBjcm9zcyBzaXplIHByb3BlcnR5IG9mIHRoZSBmbGV4IGl0ZW0gY29tcHV0ZXMgdG8gYXV0bywgYW5kIG5laXRoZXIgb2YgdGhlIGNyb3NzLWF4aXMgbWFyZ2lucyBhcmUgYXV0bywgdGhlIGZsZXggaXRlbSBpcyBzdHJldGNoZWQuIn0se25hbWU6InNhdmUifSx7bmFtZToidW5zYXZlIn0se25hbWU6ImxlZ2FjeSJ9XSxzeW50YXg6Im5vcm1hbCB8IHN0cmV0Y2ggfCA8YmFzZWxpbmUtcG9zaXRpb24+IHwgPG92ZXJmbG93LXBvc2l0aW9uPj8gWyA8c2VsZi1wb3NpdGlvbj4gfCBsZWZ0IHwgcmlnaHQgXSB8IGxlZ2FjeSB8IGxlZ2FjeSAmJiBbIGxlZnQgfCByaWdodCB8IGNlbnRlciBdIixyZWxldmFuY2U6NTMsZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIGRlZmF1bHQganVzdGlmeS1zZWxmIGZvciBhbGwgaXRlbXMgb2YgdGhlIGJveCwgZ2l2aW5nIHRoZW0gdGhlIGRlZmF1bHQgd2F5IG9mIGp1c3RpZnlpbmcgZWFjaCBib3ggYWxvbmcgdGhlIGFwcHJvcHJpYXRlIGF4aXMiLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Imp1c3RpZnktc2VsZiIsdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJub3JtYWwifSx7bmFtZToiZW5kIn0se25hbWU6InN0YXJ0In0se25hbWU6ImZsZXgtZW5kIixkZXNjcmlwdGlvbjonIkZsZXggaXRlbXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIGVuZCBvZiB0aGUgbGluZS4iJ30se25hbWU6ImZsZXgtc3RhcnQiLGRlc2NyaXB0aW9uOiciRmxleCBpdGVtcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgc3RhcnQgb2YgdGhlIGxpbmUuIid9LHtuYW1lOiJzZWxmLWVuZCIsZGVzY3JpcHRpb246IlRoZSBpdGVtIGlzIHBhY2tlZCBmbHVzaCB0byB0aGUgZWRnZSBvZiB0aGUgYWxpZ25tZW50IGNvbnRhaW5lciBvZiB0aGUgZW5kIHNpZGUgb2YgdGhlIGl0ZW0sIGluIHRoZSBhcHByb3ByaWF0ZSBheGlzLiJ9LHtuYW1lOiJzZWxmLXN0YXJ0IixkZXNjcmlwdGlvbjoiVGhlIGl0ZW0gaXMgcGFja2VkIGZsdXNoIHRvIHRoZSBlZGdlIG9mIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyIG9mIHRoZSBzdGFydCBzaWRlIG9mIHRoZSBpdGVtLCBpbiB0aGUgYXBwcm9wcmlhdGUgYXhpcy4uIn0se25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IlRoZSBpdGVtcyBhcmUgcGFja2VkIGZsdXNoIHRvIGVhY2ggb3RoZXIgdG93YXJkIHRoZSBjZW50ZXIgb2YgdGhlIG9mIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyLiJ9LHtuYW1lOiJsZWZ0In0se25hbWU6InJpZ2h0In0se25hbWU6ImJhc2VsaW5lIn0se25hbWU6ImZpcnN0IGJhc2VsaW5lIn0se25hbWU6Imxhc3QgYmFzZWxpbmUifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IklmIHRoZSBjcm9zcyBzaXplIHByb3BlcnR5IG9mIHRoZSBmbGV4IGl0ZW0gY29tcHV0ZXMgdG8gYXV0bywgYW5kIG5laXRoZXIgb2YgdGhlIGNyb3NzLWF4aXMgbWFyZ2lucyBhcmUgYXV0bywgdGhlIGZsZXggaXRlbSBpcyBzdHJldGNoZWQuIn0se25hbWU6InNhdmUifSx7bmFtZToidW5zYXZlIn1dLHN5bnRheDoiYXV0byB8IG5vcm1hbCB8IHN0cmV0Y2ggfCA8YmFzZWxpbmUtcG9zaXRpb24+IHwgPG92ZXJmbG93LXBvc2l0aW9uPj8gWyA8c2VsZi1wb3NpdGlvbj4gfCBsZWZ0IHwgcmlnaHQgXSIscmVsZXZhbmNlOjUzLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSB3YXkgb2YganVzdGlmeWluZyBhIGJveCBpbnNpZGUgaXRzIGNvbnRhaW5lciBhbG9uZyB0aGUgYXBwcm9wcmlhdGUgYXhpcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImFsaWduLXNlbGYiLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJDb21wdXRlcyB0byB0aGUgdmFsdWUgb2YgJ2FsaWduLWl0ZW1zJyBvbiB0aGUgZWxlbWVudOKAmXMgcGFyZW50LCBvciAnc3RyZXRjaCcgaWYgdGhlIGVsZW1lbnQgaGFzIG5vIHBhcmVudC4gT24gYWJzb2x1dGVseSBwb3NpdGlvbmVkIGVsZW1lbnRzLCBpdCBjb21wdXRlcyB0byBpdHNlbGYuIn0se25hbWU6ImJhc2VsaW5lIixkZXNjcmlwdGlvbjoiSWYgdGhlIGZsZXggaXRlbeKAmXMgaW5saW5lIGF4aXMgaXMgdGhlIHNhbWUgYXMgdGhlIGNyb3NzIGF4aXMsIHRoaXMgdmFsdWUgaXMgaWRlbnRpY2FsIHRvICdmbGV4LXN0YXJ0Jy4gT3RoZXJ3aXNlLCBpdCBwYXJ0aWNpcGF0ZXMgaW4gYmFzZWxpbmUgYWxpZ25tZW50LiJ9LHtuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJUaGUgZmxleCBpdGVt4oCZcyBtYXJnaW4gYm94IGlzIGNlbnRlcmVkIGluIHRoZSBjcm9zcyBheGlzIHdpdGhpbiB0aGUgbGluZS4ifSx7bmFtZToiZmxleC1lbmQiLGRlc2NyaXB0aW9uOiJUaGUgY3Jvc3MtZW5kIG1hcmdpbiBlZGdlIG9mIHRoZSBmbGV4IGl0ZW0gaXMgcGxhY2VkIGZsdXNoIHdpdGggdGhlIGNyb3NzLWVuZCBlZGdlIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJmbGV4LXN0YXJ0IixkZXNjcmlwdGlvbjoiVGhlIGNyb3NzLXN0YXJ0IG1hcmdpbiBlZGdlIG9mIHRoZSBmbGV4IGl0ZW0gaXMgcGxhY2VkIGZsdXNoIHdpdGggdGhlIGNyb3NzLXN0YXJ0IGVkZ2Ugb2YgdGhlIGxpbmUuIn0se25hbWU6InN0cmV0Y2giLGRlc2NyaXB0aW9uOiJJZiB0aGUgY3Jvc3Mgc2l6ZSBwcm9wZXJ0eSBvZiB0aGUgZmxleCBpdGVtIGNvbXB1dGVzIHRvIGF1dG8sIGFuZCBuZWl0aGVyIG9mIHRoZSBjcm9zcy1heGlzIG1hcmdpbnMgYXJlIGF1dG8sIHRoZSBmbGV4IGl0ZW0gaXMgc3RyZXRjaGVkLiJ9XSxzeW50YXg6ImF1dG8gfCBub3JtYWwgfCBzdHJldGNoIHwgPGJhc2VsaW5lLXBvc2l0aW9uPiB8IDxvdmVyZmxvdy1wb3NpdGlvbj4/IDxzZWxmLXBvc2l0aW9uPiIscmVsZXZhbmNlOjcyLGRlc2NyaXB0aW9uOiJBbGxvd3MgdGhlIGRlZmF1bHQgYWxpZ25tZW50IGFsb25nIHRoZSBjcm9zcyBheGlzIHRvIGJlIG92ZXJyaWRkZW4gZm9yIGluZGl2aWR1YWwgZmxleCBpdGVtcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImFsbCIsYnJvd3NlcnM6WyJFNzkiLCJGRjI3IiwiUzkuMSIsIkMzNyIsIk8yNCJdLHZhbHVlczpbXSxzeW50YXg6ImluaXRpYWwgfCBpbmhlcml0IHwgdW5zZXQgfCByZXZlcnQiLHJlbGV2YW5jZTo1MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYWxsIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgdGhhdCByZXNldHMgYWxsIHByb3BlcnRpZXMgZXhjZXB0ICdkaXJlY3Rpb24nIGFuZCAndW5pY29kZS1iaWRpJy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImFsdCIsYnJvd3NlcnM6WyJTOSJdLHZhbHVlczpbXSxyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FsdCJ9XSxkZXNjcmlwdGlvbjoiUHJvdmlkZXMgYWx0ZXJuYXRpdmUgdGV4dCBmb3IgYXNzaXN0aXZlIHRlY2hub2xvZ3kgdG8gcmVwbGFjZSB0aGUgZ2VuZXJhdGVkIGNvbnRlbnQgb2YgYSA6OmJlZm9yZSBvciA6OmFmdGVyIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJzdHJpbmciLCJlbnVtIl19LHtuYW1lOiJhbmltYXRpb24iLHZhbHVlczpbe25hbWU6ImFsdGVybmF0ZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIG5vcm1hbCBkaXJlY3Rpb24sIGFuZCB0aGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgZXZlbiBjb3VudHMgYXJlIHBsYXllZCBpbiBhIHJldmVyc2UgZGlyZWN0aW9uLiJ9LHtuYW1lOiJhbHRlcm5hdGUtcmV2ZXJzZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uLCBhbmQgdGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIGV2ZW4gY291bnRzIGFyZSBwbGF5ZWQgaW4gYSBub3JtYWwgZGlyZWN0aW9uLiJ9LHtuYW1lOiJiYWNrd2FyZHMiLGRlc2NyaXB0aW9uOiJUaGUgYmVnaW5uaW5nIHByb3BlcnR5IHZhbHVlIChhcyBkZWZpbmVkIGluIHRoZSBmaXJzdCBAa2V5ZnJhbWVzIGF0LXJ1bGUpIGlzIGFwcGxpZWQgYmVmb3JlIHRoZSBhbmltYXRpb24gaXMgZGlzcGxheWVkLCBkdXJpbmcgdGhlIHBlcmlvZCBkZWZpbmVkIGJ5ICdhbmltYXRpb24tZGVsYXknLiJ9LHtuYW1lOiJib3RoIixkZXNjcmlwdGlvbjoiQm90aCBmb3J3YXJkcyBhbmQgYmFja3dhcmRzIGZpbGwgbW9kZXMgYXJlIGFwcGxpZWQuIn0se25hbWU6ImZvcndhcmRzIixkZXNjcmlwdGlvbjoiVGhlIGZpbmFsIHByb3BlcnR5IHZhbHVlIChhcyBkZWZpbmVkIGluIHRoZSBsYXN0IEBrZXlmcmFtZXMgYXQtcnVsZSkgaXMgbWFpbnRhaW5lZCBhZnRlciB0aGUgYW5pbWF0aW9uIGNvbXBsZXRlcy4ifSx7bmFtZToiaW5maW5pdGUiLGRlc2NyaXB0aW9uOiJDYXVzZXMgdGhlIGFuaW1hdGlvbiB0byByZXBlYXQgZm9yZXZlci4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGFuaW1hdGlvbiBpcyBwZXJmb3JtZWQifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm9ybWFsIHBsYXliYWNrLiJ9LHtuYW1lOiJyZXZlcnNlIixkZXNjcmlwdGlvbjoiQWxsIGl0ZXJhdGlvbnMgb2YgdGhlIGFuaW1hdGlvbiBhcmUgcGxheWVkIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiBmcm9tIHRoZSB3YXkgdGhleSB3ZXJlIHNwZWNpZmllZC4ifV0sc3ludGF4OiI8c2luZ2xlLWFuaW1hdGlvbj4jIixyZWxldmFuY2U6ODIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FuaW1hdGlvbiJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGNvbWJpbmVzIHNpeCBvZiB0aGUgYW5pbWF0aW9uIHByb3BlcnRpZXMgaW50byBhIHNpbmdsZSBwcm9wZXJ0eS4iLHJlc3RyaWN0aW9uczpbInRpbWUiLCJ0aW1pbmctZnVuY3Rpb24iLCJlbnVtIiwiaWRlbnRpZmllciIsIm51bWJlciJdfSx7bmFtZToiYW5pbWF0aW9uLWRlbGF5IixzeW50YXg6Ijx0aW1lPiMiLHJlbGV2YW5jZTo2NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYW5pbWF0aW9uLWRlbGF5In1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZW4gdGhlIGFuaW1hdGlvbiB3aWxsIHN0YXJ0LiIscmVzdHJpY3Rpb25zOlsidGltZSJdfSx7bmFtZToiYW5pbWF0aW9uLWRpcmVjdGlvbiIsdmFsdWVzOlt7bmFtZToiYWx0ZXJuYXRlIixkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIG9kZCBjb3VudHMgYXJlIHBsYXllZCBpbiB0aGUgbm9ybWFsIGRpcmVjdGlvbiwgYW5kIHRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBldmVuIGNvdW50cyBhcmUgcGxheWVkIGluIGEgcmV2ZXJzZSBkaXJlY3Rpb24uIn0se25hbWU6ImFsdGVybmF0ZS1yZXZlcnNlIixkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIG9kZCBjb3VudHMgYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24sIGFuZCB0aGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgZXZlbiBjb3VudHMgYXJlIHBsYXllZCBpbiBhIG5vcm1hbCBkaXJlY3Rpb24uIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vcm1hbCBwbGF5YmFjay4ifSx7bmFtZToicmV2ZXJzZSIsZGVzY3JpcHRpb246IkFsbCBpdGVyYXRpb25zIG9mIHRoZSBhbmltYXRpb24gYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24gZnJvbSB0aGUgd2F5IHRoZXkgd2VyZSBzcGVjaWZpZWQuIn1dLHN5bnRheDoiPHNpbmdsZS1hbmltYXRpb24tZGlyZWN0aW9uPiMiLHJlbGV2YW5jZTo1NyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYW5pbWF0aW9uLWRpcmVjdGlvbiJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgYW5pbWF0aW9uIHNob3VsZCBwbGF5IGluIHJldmVyc2Ugb24gYWx0ZXJuYXRlIGN5Y2xlcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImFuaW1hdGlvbi1kdXJhdGlvbiIsc3ludGF4OiI8dGltZT4jIixyZWxldmFuY2U6NjgscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FuaW1hdGlvbi1kdXJhdGlvbiJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgbGVuZ3RoIG9mIHRpbWUgdGhhdCBhbiBhbmltYXRpb24gdGFrZXMgdG8gY29tcGxldGUgb25lIGN5Y2xlLiIscmVzdHJpY3Rpb25zOlsidGltZSJdfSx7bmFtZToiYW5pbWF0aW9uLWZpbGwtbW9kZSIsdmFsdWVzOlt7bmFtZToiYmFja3dhcmRzIixkZXNjcmlwdGlvbjoiVGhlIGJlZ2lubmluZyBwcm9wZXJ0eSB2YWx1ZSAoYXMgZGVmaW5lZCBpbiB0aGUgZmlyc3QgQGtleWZyYW1lcyBhdC1ydWxlKSBpcyBhcHBsaWVkIGJlZm9yZSB0aGUgYW5pbWF0aW9uIGlzIGRpc3BsYXllZCwgZHVyaW5nIHRoZSBwZXJpb2QgZGVmaW5lZCBieSAnYW5pbWF0aW9uLWRlbGF5Jy4ifSx7bmFtZToiYm90aCIsZGVzY3JpcHRpb246IkJvdGggZm9yd2FyZHMgYW5kIGJhY2t3YXJkcyBmaWxsIG1vZGVzIGFyZSBhcHBsaWVkLiJ9LHtuYW1lOiJmb3J3YXJkcyIsZGVzY3JpcHRpb246IlRoZSBmaW5hbCBwcm9wZXJ0eSB2YWx1ZSAoYXMgZGVmaW5lZCBpbiB0aGUgbGFzdCBAa2V5ZnJhbWVzIGF0LXJ1bGUpIGlzIG1haW50YWluZWQgYWZ0ZXIgdGhlIGFuaW1hdGlvbiBjb21wbGV0ZXMuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGVyZSBpcyBubyBjaGFuZ2UgdG8gdGhlIHByb3BlcnR5IHZhbHVlIGJldHdlZW4gdGhlIHRpbWUgdGhlIGFuaW1hdGlvbiBpcyBhcHBsaWVkIGFuZCB0aGUgdGltZSB0aGUgYW5pbWF0aW9uIGJlZ2lucyBwbGF5aW5nIG9yIGFmdGVyIHRoZSBhbmltYXRpb24gY29tcGxldGVzLiJ9XSxzeW50YXg6IjxzaW5nbGUtYW5pbWF0aW9uLWZpbGwtbW9kZT4jIixyZWxldmFuY2U6NjMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FuaW1hdGlvbi1maWxsLW1vZGUifV0sZGVzY3JpcHRpb246IkRlZmluZXMgd2hhdCB2YWx1ZXMgYXJlIGFwcGxpZWQgYnkgdGhlIGFuaW1hdGlvbiBvdXRzaWRlIHRoZSB0aW1lIGl0IGlzIGV4ZWN1dGluZy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQiLHZhbHVlczpbe25hbWU6ImluZmluaXRlIixkZXNjcmlwdGlvbjoiQ2F1c2VzIHRoZSBhbmltYXRpb24gdG8gcmVwZWF0IGZvcmV2ZXIuIn1dLHN5bnRheDoiPHNpbmdsZS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50PiMiLHJlbGV2YW5jZTo2MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHRpbWVzIGFuIGFuaW1hdGlvbiBjeWNsZSBpcyBwbGF5ZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIG9uZSwgbWVhbmluZyB0aGUgYW5pbWF0aW9uIHdpbGwgcGxheSBmcm9tIGJlZ2lubmluZyB0byBlbmQgb25jZS4iLHJlc3RyaWN0aW9uczpbIm51bWJlciIsImVudW0iXX0se25hbWU6ImFuaW1hdGlvbi1uYW1lIix2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gYW5pbWF0aW9uIGlzIHBlcmZvcm1lZCJ9XSxzeW50YXg6Ilsgbm9uZSB8IDxrZXlmcmFtZXMtbmFtZT4gXSMiLHJlbGV2YW5jZTo2OCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYW5pbWF0aW9uLW5hbWUifV0sZGVzY3JpcHRpb246IkRlZmluZXMgYSBsaXN0IG9mIGFuaW1hdGlvbnMgdGhhdCBhcHBseS4gRWFjaCBuYW1lIGlzIHVzZWQgdG8gc2VsZWN0IHRoZSBrZXlmcmFtZSBhdC1ydWxlIHRoYXQgcHJvdmlkZXMgdGhlIHByb3BlcnR5IHZhbHVlcyBmb3IgdGhlIGFuaW1hdGlvbi4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiLCJlbnVtIl19LHtuYW1lOiJhbmltYXRpb24tcGxheS1zdGF0ZSIsdmFsdWVzOlt7bmFtZToicGF1c2VkIixkZXNjcmlwdGlvbjoiQSBydW5uaW5nIGFuaW1hdGlvbiB3aWxsIGJlIHBhdXNlZC4ifSx7bmFtZToicnVubmluZyIsZGVzY3JpcHRpb246IlJlc3VtZSBwbGF5YmFjayBvZiBhIHBhdXNlZCBhbmltYXRpb24uIn1dLHN5bnRheDoiPHNpbmdsZS1hbmltYXRpb24tcGxheS1zdGF0ZT4jIixyZWxldmFuY2U6NTQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FuaW1hdGlvbi1wbGF5LXN0YXRlIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZXRoZXIgdGhlIGFuaW1hdGlvbiBpcyBydW5uaW5nIG9yIHBhdXNlZC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24iLHN5bnRheDoiPGVhc2luZy1mdW5jdGlvbj4jIixyZWxldmFuY2U6NzEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24ifV0sZGVzY3JpcHRpb246IkRlc2NyaWJlcyBob3cgdGhlIGFuaW1hdGlvbiB3aWxsIHByb2dyZXNzIG92ZXIgb25lIGN5Y2xlIG9mIGl0cyBkdXJhdGlvbi4iLHJlc3RyaWN0aW9uczpbInRpbWluZy1mdW5jdGlvbiJdfSx7bmFtZToiYmFja2ZhY2UtdmlzaWJpbGl0eSIsdmFsdWVzOlt7bmFtZToiaGlkZGVuIixkZXNjcmlwdGlvbjoiQmFjayBzaWRlIGlzIGhpZGRlbi4ifSx7bmFtZToidmlzaWJsZSIsZGVzY3JpcHRpb246IkJhY2sgc2lkZSBpcyB2aXNpYmxlLiJ9XSxzeW50YXg6InZpc2libGUgfCBoaWRkZW4iLHJlbGV2YW5jZTo1OSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmFja2ZhY2UtdmlzaWJpbGl0eSJ9XSxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgJ2JhY2snIHNpZGUgb2YgYSB0cmFuc2Zvcm1lZCBlbGVtZW50IGlzIHZpc2libGUgd2hlbiBmYWNpbmcgdGhlIHZpZXdlci4gV2l0aCBhbiBpZGVudGl0eSB0cmFuc2Zvcm0sIHRoZSBmcm9udCBzaWRlIG9mIGFuIGVsZW1lbnQgZmFjZXMgdGhlIHZpZXdlci4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImJhY2tncm91bmQiLHZhbHVlczpbe25hbWU6ImZpeGVkIixkZXNjcmlwdGlvbjoiVGhlIGJhY2tncm91bmQgaXMgZml4ZWQgd2l0aCByZWdhcmQgdG8gdGhlIHZpZXdwb3J0LiBJbiBwYWdlZCBtZWRpYSB3aGVyZSB0aGVyZSBpcyBubyB2aWV3cG9ydCwgYSAnZml4ZWQnIGJhY2tncm91bmQgaXMgZml4ZWQgd2l0aCByZXNwZWN0IHRvIHRoZSBwYWdlIGJveCBhbmQgdGhlcmVmb3JlIHJlcGxpY2F0ZWQgb24gZXZlcnkgcGFnZS4ifSx7bmFtZToibG9jYWwiLGRlc2NyaXB0aW9uOiJUaGUgYmFja2dyb3VuZCBpcyBmaXhlZCB3aXRoIHJlZ2FyZCB0byB0aGUgZWxlbWVudCdzIGNvbnRlbnRzOiBpZiB0aGUgZWxlbWVudCBoYXMgYSBzY3JvbGxpbmcgbWVjaGFuaXNtLCB0aGUgYmFja2dyb3VuZCBzY3JvbGxzIHdpdGggdGhlIGVsZW1lbnQncyBjb250ZW50cy4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkEgdmFsdWUgb2YgJ25vbmUnIGNvdW50cyBhcyBhbiBpbWFnZSBsYXllciBidXQgZHJhd3Mgbm90aGluZy4ifSx7bmFtZToic2Nyb2xsIixkZXNjcmlwdGlvbjoiVGhlIGJhY2tncm91bmQgaXMgZml4ZWQgd2l0aCByZWdhcmQgdG8gdGhlIGVsZW1lbnQgaXRzZWxmIGFuZCBkb2VzIG5vdCBzY3JvbGwgd2l0aCBpdHMgY29udGVudHMuIChJdCBpcyBlZmZlY3RpdmVseSBhdHRhY2hlZCB0byB0aGUgZWxlbWVudCdzIGJvcmRlci4pIn1dLHN5bnRheDoiWyA8YmctbGF5ZXI+ICwgXSogPGZpbmFsLWJnLWxheWVyPiIscmVsZXZhbmNlOjkzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgbW9zdCBiYWNrZ3JvdW5kIHByb3BlcnRpZXMgYXQgdGhlIHNhbWUgcGxhY2UgaW4gdGhlIHN0eWxlIHNoZWV0LiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImltYWdlIiwiY29sb3IiLCJwb3NpdGlvbiIsImxlbmd0aCIsInJlcGVhdCIsInBlcmNlbnRhZ2UiLCJib3giXX0se25hbWU6ImJhY2tncm91bmQtYXR0YWNobWVudCIsdmFsdWVzOlt7bmFtZToiZml4ZWQiLGRlc2NyaXB0aW9uOiJUaGUgYmFja2dyb3VuZCBpcyBmaXhlZCB3aXRoIHJlZ2FyZCB0byB0aGUgdmlld3BvcnQuIEluIHBhZ2VkIG1lZGlhIHdoZXJlIHRoZXJlIGlzIG5vIHZpZXdwb3J0LCBhICdmaXhlZCcgYmFja2dyb3VuZCBpcyBmaXhlZCB3aXRoIHJlc3BlY3QgdG8gdGhlIHBhZ2UgYm94IGFuZCB0aGVyZWZvcmUgcmVwbGljYXRlZCBvbiBldmVyeSBwYWdlLiJ9LHtuYW1lOiJsb2NhbCIsZGVzY3JpcHRpb246IlRoZSBiYWNrZ3JvdW5kIGlzIGZpeGVkIHdpdGggcmVnYXJkIHRvIHRoZSBlbGVtZW504oCZcyBjb250ZW50czogaWYgdGhlIGVsZW1lbnQgaGFzIGEgc2Nyb2xsaW5nIG1lY2hhbmlzbSwgdGhlIGJhY2tncm91bmQgc2Nyb2xscyB3aXRoIHRoZSBlbGVtZW504oCZcyBjb250ZW50cy4ifSx7bmFtZToic2Nyb2xsIixkZXNjcmlwdGlvbjoiVGhlIGJhY2tncm91bmQgaXMgZml4ZWQgd2l0aCByZWdhcmQgdG8gdGhlIGVsZW1lbnQgaXRzZWxmIGFuZCBkb2VzIG5vdCBzY3JvbGwgd2l0aCBpdHMgY29udGVudHMuIChJdCBpcyBlZmZlY3RpdmVseSBhdHRhY2hlZCB0byB0aGUgZWxlbWVudOKAmXMgYm9yZGVyLikifV0sc3ludGF4OiI8YXR0YWNobWVudD4jIixyZWxldmFuY2U6NTQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQtYXR0YWNobWVudCJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGJhY2tncm91bmQgaW1hZ2VzIGFyZSBmaXhlZCB3aXRoIHJlZ2FyZCB0byB0aGUgdmlld3BvcnQgKCdmaXhlZCcpIG9yIHNjcm9sbCBhbG9uZyB3aXRoIHRoZSBlbGVtZW50ICgnc2Nyb2xsJykgb3IgaXRzIGNvbnRlbnRzICgnbG9jYWwnKS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImJhY2tncm91bmQtYmxlbmQtbW9kZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjMwIiwiUzgiLCJDMzUiLCJPMjIiXSx2YWx1ZXM6W3tuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJEZWZhdWx0IGF0dHJpYnV0ZSB3aGljaCBzcGVjaWZpZXMgbm8gYmxlbmRpbmcifSx7bmFtZToibXVsdGlwbHkiLGRlc2NyaXB0aW9uOiJUaGUgc291cmNlIGNvbG9yIGlzIG11bHRpcGxpZWQgYnkgdGhlIGRlc3RpbmF0aW9uIGNvbG9yIGFuZCByZXBsYWNlcyB0aGUgZGVzdGluYXRpb24uIn0se25hbWU6InNjcmVlbiIsZGVzY3JpcHRpb246Ik11bHRpcGxpZXMgdGhlIGNvbXBsZW1lbnRzIG9mIHRoZSBiYWNrZHJvcCBhbmQgc291cmNlIGNvbG9yIHZhbHVlcywgdGhlbiBjb21wbGVtZW50cyB0aGUgcmVzdWx0LiJ9LHtuYW1lOiJvdmVybGF5IixkZXNjcmlwdGlvbjoiTXVsdGlwbGllcyBvciBzY3JlZW5zIHRoZSBjb2xvcnMsIGRlcGVuZGluZyBvbiB0aGUgYmFja2Ryb3AgY29sb3IgdmFsdWUuIn0se25hbWU6ImRhcmtlbiIsZGVzY3JpcHRpb246IlNlbGVjdHMgdGhlIGRhcmtlciBvZiB0aGUgYmFja2Ryb3AgYW5kIHNvdXJjZSBjb2xvcnMuIn0se25hbWU6ImxpZ2h0ZW4iLGRlc2NyaXB0aW9uOiJTZWxlY3RzIHRoZSBsaWdodGVyIG9mIHRoZSBiYWNrZHJvcCBhbmQgc291cmNlIGNvbG9ycy4ifSx7bmFtZToiY29sb3ItZG9kZ2UiLGRlc2NyaXB0aW9uOiJCcmlnaHRlbnMgdGhlIGJhY2tkcm9wIGNvbG9yIHRvIHJlZmxlY3QgdGhlIHNvdXJjZSBjb2xvci4ifSx7bmFtZToiY29sb3ItYnVybiIsZGVzY3JpcHRpb246IkRhcmtlbnMgdGhlIGJhY2tkcm9wIGNvbG9yIHRvIHJlZmxlY3QgdGhlIHNvdXJjZSBjb2xvci4ifSx7bmFtZToiaGFyZC1saWdodCIsZGVzY3JpcHRpb246Ik11bHRpcGxpZXMgb3Igc2NyZWVucyB0aGUgY29sb3JzLCBkZXBlbmRpbmcgb24gdGhlIHNvdXJjZSBjb2xvciB2YWx1ZS4ifSx7bmFtZToic29mdC1saWdodCIsZGVzY3JpcHRpb246IkRhcmtlbnMgb3IgbGlnaHRlbnMgdGhlIGNvbG9ycywgZGVwZW5kaW5nIG9uIHRoZSBzb3VyY2UgY29sb3IgdmFsdWUuIn0se25hbWU6ImRpZmZlcmVuY2UiLGRlc2NyaXB0aW9uOiJTdWJ0cmFjdHMgdGhlIGRhcmtlciBvZiB0aGUgdHdvIGNvbnN0aXR1ZW50IGNvbG9ycyBmcm9tIHRoZSBsaWdodGVyIGNvbG9yLi4ifSx7bmFtZToiZXhjbHVzaW9uIixkZXNjcmlwdGlvbjoiUHJvZHVjZXMgYW4gZWZmZWN0IHNpbWlsYXIgdG8gdGhhdCBvZiB0aGUgRGlmZmVyZW5jZSBtb2RlIGJ1dCBsb3dlciBpbiBjb250cmFzdC4ifSx7bmFtZToiaHVlIixicm93c2VyczpbIkU3OSIsIkZGMzAiLCJTOCIsIkMzNSIsIk8yMiJdLGRlc2NyaXB0aW9uOiJDcmVhdGVzIGEgY29sb3Igd2l0aCB0aGUgaHVlIG9mIHRoZSBzb3VyY2UgY29sb3IgYW5kIHRoZSBzYXR1cmF0aW9uIGFuZCBsdW1pbm9zaXR5IG9mIHRoZSBiYWNrZHJvcCBjb2xvci4ifSx7bmFtZToic2F0dXJhdGlvbiIsYnJvd3NlcnM6WyJFNzkiLCJGRjMwIiwiUzgiLCJDMzUiLCJPMjIiXSxkZXNjcmlwdGlvbjoiQ3JlYXRlcyBhIGNvbG9yIHdpdGggdGhlIHNhdHVyYXRpb24gb2YgdGhlIHNvdXJjZSBjb2xvciBhbmQgdGhlIGh1ZSBhbmQgbHVtaW5vc2l0eSBvZiB0aGUgYmFja2Ryb3AgY29sb3IuIn0se25hbWU6ImNvbG9yIixicm93c2VyczpbIkU3OSIsIkZGMzAiLCJTOCIsIkMzNSIsIk8yMiJdLGRlc2NyaXB0aW9uOiJDcmVhdGVzIGEgY29sb3Igd2l0aCB0aGUgaHVlIGFuZCBzYXR1cmF0aW9uIG9mIHRoZSBzb3VyY2UgY29sb3IgYW5kIHRoZSBsdW1pbm9zaXR5IG9mIHRoZSBiYWNrZHJvcCBjb2xvci4ifSx7bmFtZToibHVtaW5vc2l0eSIsYnJvd3NlcnM6WyJFNzkiLCJGRjMwIiwiUzgiLCJDMzUiLCJPMjIiXSxkZXNjcmlwdGlvbjoiQ3JlYXRlcyBhIGNvbG9yIHdpdGggdGhlIGx1bWlub3NpdHkgb2YgdGhlIHNvdXJjZSBjb2xvciBhbmQgdGhlIGh1ZSBhbmQgc2F0dXJhdGlvbiBvZiB0aGUgYmFja2Ryb3AgY29sb3IuIn1dLHN5bnRheDoiPGJsZW5kLW1vZGU+IyIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLWJsZW5kLW1vZGUifV0sZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIGJsZW5kaW5nIG1vZGUgb2YgZWFjaCBiYWNrZ3JvdW5kIGxheWVyLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiYmFja2dyb3VuZC1jbGlwIixzeW50YXg6Ijxib3g+IyIscmVsZXZhbmNlOjY5LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLWNsaXAifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGJhY2tncm91bmQgcGFpbnRpbmcgYXJlYS4iLHJlc3RyaWN0aW9uczpbImJveCJdfSx7bmFtZToiYmFja2dyb3VuZC1jb2xvciIsc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6OTUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQtY29sb3IifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJiYWNrZ3JvdW5kLWltYWdlIix2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiQ291bnRzIGFzIGFuIGltYWdlIGxheWVyIGJ1dCBkcmF3cyBub3RoaW5nLiJ9XSxzeW50YXg6IjxiZy1pbWFnZT4jIixyZWxldmFuY2U6ODkscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQtaW1hZ2UifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIGJhY2tncm91bmQgaW1hZ2Uocykgb2YgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImltYWdlIiwiZW51bSJdfSx7bmFtZToiYmFja2dyb3VuZC1vcmlnaW4iLHN5bnRheDoiPGJveD4jIixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQtb3JpZ2luIn1dLGRlc2NyaXB0aW9uOiJGb3IgZWxlbWVudHMgcmVuZGVyZWQgYXMgYSBzaW5nbGUgYm94LCBzcGVjaWZpZXMgdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4gRm9yIGVsZW1lbnRzIHJlbmRlcmVkIGFzIG11bHRpcGxlIGJveGVzIChlLmcuLCBpbmxpbmUgYm94ZXMgb24gc2V2ZXJhbCBsaW5lcywgYm94ZXMgb24gc2V2ZXJhbCBwYWdlcykgc3BlY2lmaWVzIHdoaWNoIGJveGVzICdib3gtZGVjb3JhdGlvbi1icmVhaycgb3BlcmF0ZXMgb24gdG8gZGV0ZXJtaW5lIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEocykuIixyZXN0cmljdGlvbnM6WyJib3giXX0se25hbWU6ImJhY2tncm91bmQtcG9zaXRpb24iLHN5bnRheDoiPGJnLXBvc2l0aW9uPiMiLHJlbGV2YW5jZTo4OCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZC1wb3NpdGlvbiJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBpbml0aWFsIHBvc2l0aW9uIG9mIHRoZSBiYWNrZ3JvdW5kIGltYWdlKHMpIChhZnRlciBhbnkgcmVzaXppbmcpIHdpdGhpbiB0aGVpciBjb3JyZXNwb25kaW5nIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4iLHJlc3RyaWN0aW9uczpbInBvc2l0aW9uIiwibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiYmFja2dyb3VuZC1wb3NpdGlvbi14Iix2YWx1ZXM6W3tuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJFcXVpdmFsZW50IHRvICc1MCUnICgnbGVmdCA1MCUnKSBmb3IgdGhlIGhvcml6b250YWwgcG9zaXRpb24gaWYgdGhlIGhvcml6b250YWwgcG9zaXRpb24gaXMgbm90IG90aGVyd2lzZSBzcGVjaWZpZWQsIG9yICc1MCUnICgndG9wIDUwJScpIGZvciB0aGUgdmVydGljYWwgcG9zaXRpb24gaWYgaXQgaXMuIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJFcXVpdmFsZW50IHRvICcwJScgZm9yIHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIGlmIG9uZSBvciB0d28gdmFsdWVzIGFyZSBnaXZlbiwgb3RoZXJ3aXNlIHNwZWNpZmllcyB0aGUgbGVmdCBlZGdlIGFzIHRoZSBvcmlnaW4gZm9yIHRoZSBuZXh0IG9mZnNldC4ifSx7bmFtZToicmlnaHQiLGRlc2NyaXB0aW9uOiJFcXVpdmFsZW50IHRvICcxMDAlJyBmb3IgdGhlIGhvcml6b250YWwgcG9zaXRpb24gaWYgb25lIG9yIHR3byB2YWx1ZXMgYXJlIGdpdmVuLCBvdGhlcndpc2Ugc3BlY2lmaWVzIHRoZSByaWdodCBlZGdlIGFzIHRoZSBvcmlnaW4gZm9yIHRoZSBuZXh0IG9mZnNldC4ifV0sc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoiWyBjZW50ZXIgfCBbIFsgbGVmdCB8IHJpZ2h0IHwgeC1zdGFydCB8IHgtZW5kIF0/IDxsZW5ndGgtcGVyY2VudGFnZT4/IF0hIF0jIixyZWxldmFuY2U6NTQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQtcG9zaXRpb24teCJ9XSxkZXNjcmlwdGlvbjoiSWYgYmFja2dyb3VuZCBpbWFnZXMgaGF2ZSBiZWVuIHNwZWNpZmllZCwgdGhpcyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlaXIgaW5pdGlhbCBwb3NpdGlvbiAoYWZ0ZXIgYW55IHJlc2l6aW5nKSB3aXRoaW4gdGhlaXIgY29ycmVzcG9uZGluZyBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJiYWNrZ3JvdW5kLXBvc2l0aW9uLXkiLHZhbHVlczpbe25hbWU6ImJvdHRvbSIsZGVzY3JpcHRpb246IkVxdWl2YWxlbnQgdG8gJzEwMCUnIGZvciB0aGUgdmVydGljYWwgcG9zaXRpb24gaWYgb25lIG9yIHR3byB2YWx1ZXMgYXJlIGdpdmVuLCBvdGhlcndpc2Ugc3BlY2lmaWVzIHRoZSBib3R0b20gZWRnZSBhcyB0aGUgb3JpZ2luIGZvciB0aGUgbmV4dCBvZmZzZXQuIn0se25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IkVxdWl2YWxlbnQgdG8gJzUwJScgKCdsZWZ0IDUwJScpIGZvciB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBpZiB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBpcyBub3Qgb3RoZXJ3aXNlIHNwZWNpZmllZCwgb3IgJzUwJScgKCd0b3AgNTAlJykgZm9yIHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbiBpZiBpdCBpcy4ifSx7bmFtZToidG9wIixkZXNjcmlwdGlvbjoiRXF1aXZhbGVudCB0byAnMCUnIGZvciB0aGUgdmVydGljYWwgcG9zaXRpb24gaWYgb25lIG9yIHR3byB2YWx1ZXMgYXJlIGdpdmVuLCBvdGhlcndpc2Ugc3BlY2lmaWVzIHRoZSB0b3AgZWRnZSBhcyB0aGUgb3JpZ2luIGZvciB0aGUgbmV4dCBvZmZzZXQuIn1dLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6IlsgY2VudGVyIHwgWyBbIHRvcCB8IGJvdHRvbSB8IHktc3RhcnQgfCB5LWVuZCBdPyA8bGVuZ3RoLXBlcmNlbnRhZ2U+PyBdISBdIyIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLXBvc2l0aW9uLXkifV0sZGVzY3JpcHRpb246IklmIGJhY2tncm91bmQgaW1hZ2VzIGhhdmUgYmVlbiBzcGVjaWZpZWQsIHRoaXMgcHJvcGVydHkgc3BlY2lmaWVzIHRoZWlyIGluaXRpYWwgcG9zaXRpb24gKGFmdGVyIGFueSByZXNpemluZykgd2l0aGluIHRoZWlyIGNvcnJlc3BvbmRpbmcgYmFja2dyb3VuZCBwb3NpdGlvbmluZyBhcmVhLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiYmFja2dyb3VuZC1yZXBlYXQiLHZhbHVlczpbXSxzeW50YXg6IjxyZXBlYXQtc3R5bGU+IyIscmVsZXZhbmNlOjg1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLXJlcGVhdCJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBiYWNrZ3JvdW5kIGltYWdlcyBhcmUgdGlsZWQgYWZ0ZXIgdGhleSBoYXZlIGJlZW4gc2l6ZWQgYW5kIHBvc2l0aW9uZWQuIixyZXN0cmljdGlvbnM6WyJyZXBlYXQiXX0se25hbWU6ImJhY2tncm91bmQtc2l6ZSIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlJlc29sdmVkIGJ5IHVzaW5nIHRoZSBpbWFnZeKAmXMgaW50cmluc2ljIHJhdGlvIGFuZCB0aGUgc2l6ZSBvZiB0aGUgb3RoZXIgZGltZW5zaW9uLCBvciBmYWlsaW5nIHRoYXQsIHVzaW5nIHRoZSBpbWFnZeKAmXMgaW50cmluc2ljIHNpemUsIG9yIGZhaWxpbmcgdGhhdCwgdHJlYXRpbmcgaXQgYXMgMTAwJS4ifSx7bmFtZToiY29udGFpbiIsZGVzY3JpcHRpb246IlNjYWxlIHRoZSBpbWFnZSwgd2hpbGUgcHJlc2VydmluZyBpdHMgaW50cmluc2ljIGFzcGVjdCByYXRpbyAoaWYgYW55KSwgdG8gdGhlIGxhcmdlc3Qgc2l6ZSBzdWNoIHRoYXQgYm90aCBpdHMgd2lkdGggYW5kIGl0cyBoZWlnaHQgY2FuIGZpdCBpbnNpZGUgdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4ifSx7bmFtZToiY292ZXIiLGRlc2NyaXB0aW9uOiJTY2FsZSB0aGUgaW1hZ2UsIHdoaWxlIHByZXNlcnZpbmcgaXRzIGludHJpbnNpYyBhc3BlY3QgcmF0aW8gKGlmIGFueSksIHRvIHRoZSBzbWFsbGVzdCBzaXplIHN1Y2ggdGhhdCBib3RoIGl0cyB3aWR0aCBhbmQgaXRzIGhlaWdodCBjYW4gY29tcGxldGVseSBjb3ZlciB0aGUgYmFja2dyb3VuZCBwb3NpdGlvbmluZyBhcmVhLiJ9XSxzeW50YXg6IjxiZy1zaXplPiMiLHJlbGV2YW5jZTo4NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZC1zaXplIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIGJhY2tncm91bmQgaW1hZ2VzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiYmVoYXZpb3IiLGJyb3dzZXJzOlsiSUU2Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJJRSBvbmx5LiBVc2VkIHRvIGV4dGVuZCBiZWhhdmlvcnMgb2YgdGhlIGJyb3dzZXIuIixyZXN0cmljdGlvbnM6WyJ1cmwiXX0se25hbWU6ImJsb2NrLXNpemUiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzU3IiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZiBvdGhlciBwcm9wZXJ0aWVzLiJ9XSxzeW50YXg6Ijwnd2lkdGgnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ibG9jay1zaXplIn1dLGRlc2NyaXB0aW9uOiJTaXplIG9mIGFuIGVsZW1lbnQgaW4gdGhlIGRpcmVjdGlvbiBvcHBvc2l0ZSB0aGF0IG9mIHRoZSBkaXJlY3Rpb24gc3BlY2lmaWVkIGJ5ICd3cml0aW5nLW1vZGUnLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiYm9yZGVyIixzeW50YXg6IjxsaW5lLXdpZHRoPiB8fCA8bGluZS1zdHlsZT4gfHwgPGNvbG9yPiIscmVsZXZhbmNlOjk2LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXIifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBmb3Igc2V0dGluZyBib3JkZXIgd2lkdGgsIHN0eWxlLCBhbmQgY29sb3IuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIiwibGluZS1zdHlsZSIsImNvbG9yIl19LHtuYW1lOiJib3JkZXItYmxvY2stZW5kIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLXdpZHRoJz4gfHwgPCdib3JkZXItdG9wLXN0eWxlJz4gfHwgPGNvbG9yPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYmxvY2stZW5kIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdib3JkZXItYm90dG9tJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudOKAmXMgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCIsImxpbmUtc3R5bGUiLCJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWJsb2NrLXN0YXJ0Iixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLXdpZHRoJz4gfHwgPCdib3JkZXItdG9wLXN0eWxlJz4gfHwgPGNvbG9yPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYmxvY2stc3RhcnQifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci10b3AnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIiwibGluZS1zdHlsZSIsImNvbG9yIl19LHtuYW1lOiJib3JkZXItYmxvY2stZW5kLWNvbG9yIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLWNvbG9yJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJsb2NrLWVuZC1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnYm9yZGVyLWJvdHRvbS1jb2xvcicuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnTigJlzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJib3JkZXItYmxvY2stc3RhcnQtY29sb3IiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J2JvcmRlci10b3AtY29sb3InPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYmxvY2stc3RhcnQtY29sb3IifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci10b3AtY29sb3InLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWJsb2NrLWVuZC1zdHlsZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC1zdHlsZSc+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ibG9jay1lbmQtc3R5bGUifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci1ib3R0b20tc3R5bGUnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsaW5lLXN0eWxlIl19LHtuYW1lOiJib3JkZXItYmxvY2stc3RhcnQtc3R5bGUiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J2JvcmRlci10b3Atc3R5bGUnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYmxvY2stc3RhcnQtc3R5bGUifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci10b3Atc3R5bGUnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsaW5lLXN0eWxlIl19LHtuYW1lOiJib3JkZXItYmxvY2stZW5kLXdpZHRoIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLXdpZHRoJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJsb2NrLWVuZC13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnYm9yZGVyLWJvdHRvbS13aWR0aCcuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnTigJlzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiXX0se25hbWU6ImJvcmRlci1ibG9jay1zdGFydC13aWR0aCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC13aWR0aCc+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ibG9jay1zdGFydC13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnYm9yZGVyLXRvcC13aWR0aCcuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnTigJlzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiXX0se25hbWU6ImJvcmRlci1ib3R0b20iLHN5bnRheDoiPGxpbmUtd2lkdGg+IHx8IDxsaW5lLXN0eWxlPiB8fCA8Y29sb3I+IixyZWxldmFuY2U6ODkscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ib3R0b20ifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBmb3Igc2V0dGluZyBib3JkZXIgd2lkdGgsIHN0eWxlIGFuZCBjb2xvci4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiLCJsaW5lLXN0eWxlIiwiY29sb3IiXX0se25hbWU6ImJvcmRlci1ib3R0b20tY29sb3IiLHN5bnRheDoiPCdib3JkZXItdG9wLWNvbG9yJz4iLHJlbGV2YW5jZTo3MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJvdHRvbS1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgY29sb3Igb2YgdGhlIGJvdHRvbSBib3JkZXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyIsc3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+ezEsMn0iLHJlbGV2YW5jZTo3NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgcmFkaWkgb2YgdGhlIGJvdHRvbSBsZWZ0IG91dGVyIGJvcmRlciBlZGdlLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMiLHN5bnRheDoiPGxlbmd0aC1wZXJjZW50YWdlPnsxLDJ9IixyZWxldmFuY2U6NzUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSByYWRpaSBvZiB0aGUgYm90dG9tIHJpZ2h0IG91dGVyIGJvcmRlciBlZGdlLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiYm9yZGVyLWJvdHRvbS1zdHlsZSIsc3ludGF4OiI8bGluZS1zdHlsZT4iLHJlbGV2YW5jZTo1OSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJvdHRvbS1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgc3R5bGUgb2YgdGhlIGJvdHRvbSBib3JkZXIuIixyZXN0cmljdGlvbnM6WyJsaW5lLXN0eWxlIl19LHtuYW1lOiJib3JkZXItYm90dG9tLXdpZHRoIixzeW50YXg6IjxsaW5lLXdpZHRoPiIscmVsZXZhbmNlOjYzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYm90dG9tLXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSB0aGlja25lc3Mgb2YgdGhlIGJvdHRvbSBib3JkZXIuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIl19LHtuYW1lOiJib3JkZXItY29sbGFwc2UiLHZhbHVlczpbe25hbWU6ImNvbGxhcHNlIixkZXNjcmlwdGlvbjoiU2VsZWN0cyB0aGUgY29sbGFwc2luZyBib3JkZXJzIG1vZGVsLiJ9LHtuYW1lOiJzZXBhcmF0ZSIsZGVzY3JpcHRpb246IlNlbGVjdHMgdGhlIHNlcGFyYXRlZCBib3JkZXJzIGJvcmRlciBtb2RlbC4ifV0sc3ludGF4OiJjb2xsYXBzZSB8IHNlcGFyYXRlIixyZWxldmFuY2U6NzUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1jb2xsYXBzZSJ9XSxkZXNjcmlwdGlvbjoiU2VsZWN0cyBhIHRhYmxlJ3MgYm9yZGVyIG1vZGVsLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiYm9yZGVyLWNvbG9yIix2YWx1ZXM6W10sc3ludGF4OiI8Y29sb3I+ezEsNH0iLHJlbGV2YW5jZTo4NyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJUaGUgY29sb3Igb2YgdGhlIGJvcmRlciBhcm91bmQgYWxsIGZvdXIgZWRnZXMgb2YgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJib3JkZXItaW1hZ2UiLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJJZiAnYXV0bycgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGJvcmRlciBpbWFnZSB3aWR0aCBpcyB0aGUgaW50cmluc2ljIHdpZHRoIG9yIGhlaWdodCAod2hpY2hldmVyIGlzIGFwcGxpY2FibGUpIG9mIHRoZSBjb3JyZXNwb25kaW5nIGltYWdlIHNsaWNlLiBJZiB0aGUgaW1hZ2UgZG9lcyBub3QgaGF2ZSB0aGUgcmVxdWlyZWQgaW50cmluc2ljIGRpbWVuc2lvbiB0aGVuIHRoZSBjb3JyZXNwb25kaW5nIGJvcmRlci13aWR0aCBpcyB1c2VkIGluc3RlYWQuIn0se25hbWU6ImZpbGwiLGRlc2NyaXB0aW9uOiJDYXVzZXMgdGhlIG1pZGRsZSBwYXJ0IG9mIHRoZSBib3JkZXItaW1hZ2UgdG8gYmUgcHJlc2VydmVkLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVXNlIHRoZSBib3JkZXIgc3R5bGVzLiJ9LHtuYW1lOiJyZXBlYXQiLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgdGlsZWQgKHJlcGVhdGVkKSB0byBmaWxsIHRoZSBhcmVhLiJ9LHtuYW1lOiJyb3VuZCIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyB0aWxlZCAocmVwZWF0ZWQpIHRvIGZpbGwgdGhlIGFyZWEuIElmIGl0IGRvZXMgbm90IGZpbGwgdGhlIGFyZWEgd2l0aCBhIHdob2xlIG51bWJlciBvZiB0aWxlcywgdGhlIGltYWdlIGlzIHJlc2NhbGVkIHNvIHRoYXQgaXQgZG9lcy4ifSx7bmFtZToic3BhY2UiLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgdGlsZWQgKHJlcGVhdGVkKSB0byBmaWxsIHRoZSBhcmVhLiBJZiBpdCBkb2VzIG5vdCBmaWxsIHRoZSBhcmVhIHdpdGggYSB3aG9sZSBudW1iZXIgb2YgdGlsZXMsIHRoZSBleHRyYSBzcGFjZSBpcyBkaXN0cmlidXRlZCBhcm91bmQgdGhlIHRpbGVzLiJ9LHtuYW1lOiJzdHJldGNoIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHN0cmV0Y2hlZCB0byBmaWxsIHRoZSBhcmVhLiJ9LHtuYW1lOiJ1cmwoKSJ9XSxzeW50YXg6IjwnYm9yZGVyLWltYWdlLXNvdXJjZSc+IHx8IDwnYm9yZGVyLWltYWdlLXNsaWNlJz4gWyAvIDwnYm9yZGVyLWltYWdlLXdpZHRoJz4gfCAvIDwnYm9yZGVyLWltYWdlLXdpZHRoJz4/IC8gPCdib3JkZXItaW1hZ2Utb3V0c2V0Jz4gXT8gfHwgPCdib3JkZXItaW1hZ2UtcmVwZWF0Jz4iLHJlbGV2YW5jZTo1MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWltYWdlIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgJ2JvcmRlci1pbWFnZS1zb3VyY2UnLCAnYm9yZGVyLWltYWdlLXNsaWNlJywgJ2JvcmRlci1pbWFnZS13aWR0aCcsICdib3JkZXItaW1hZ2Utb3V0c2V0JyBhbmQgJ2JvcmRlci1pbWFnZS1yZXBlYXQnLiBPbWl0dGVkIHZhbHVlcyBhcmUgc2V0IHRvIHRoZWlyIGluaXRpYWwgdmFsdWVzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSIsIm51bWJlciIsInVybCIsImVudW0iXX0se25hbWU6ImJvcmRlci1pbWFnZS1vdXRzZXQiLHN5bnRheDoiWyA8bGVuZ3RoPiB8IDxudW1iZXI+IF17MSw0fSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItaW1hZ2Utb3V0c2V0In1dLGRlc2NyaXB0aW9uOiJUaGUgdmFsdWVzIHNwZWNpZnkgdGhlIGFtb3VudCBieSB3aGljaCB0aGUgYm9yZGVyIGltYWdlIGFyZWEgZXh0ZW5kcyBiZXlvbmQgdGhlIGJvcmRlciBib3ggb24gdGhlIHRvcCwgcmlnaHQsIGJvdHRvbSwgYW5kIGxlZnQgc2lkZXMgcmVzcGVjdGl2ZWx5LiBJZiB0aGUgZm91cnRoIHZhbHVlIGlzIGFic2VudCwgaXQgaXMgdGhlIHNhbWUgYXMgdGhlIHNlY29uZC4gSWYgdGhlIHRoaXJkIG9uZSBpcyBhbHNvIGFic2VudCwgaXQgaXMgdGhlIHNhbWUgYXMgdGhlIGZpcnN0LiBJZiB0aGUgc2Vjb25kIG9uZSBpcyBhbHNvIGFic2VudCwgaXQgaXMgdGhlIHNhbWUgYXMgdGhlIGZpcnN0LiBOdW1iZXJzIHJlcHJlc2VudCBtdWx0aXBsZXMgb2YgdGhlIGNvcnJlc3BvbmRpbmcgYm9yZGVyLXdpZHRoLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibnVtYmVyIl19LHtuYW1lOiJib3JkZXItaW1hZ2UtcmVwZWF0Iix2YWx1ZXM6W3tuYW1lOiJyZXBlYXQiLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgdGlsZWQgKHJlcGVhdGVkKSB0byBmaWxsIHRoZSBhcmVhLiJ9LHtuYW1lOiJyb3VuZCIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyB0aWxlZCAocmVwZWF0ZWQpIHRvIGZpbGwgdGhlIGFyZWEuIElmIGl0IGRvZXMgbm90IGZpbGwgdGhlIGFyZWEgd2l0aCBhIHdob2xlIG51bWJlciBvZiB0aWxlcywgdGhlIGltYWdlIGlzIHJlc2NhbGVkIHNvIHRoYXQgaXQgZG9lcy4ifSx7bmFtZToic3BhY2UiLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgdGlsZWQgKHJlcGVhdGVkKSB0byBmaWxsIHRoZSBhcmVhLiBJZiBpdCBkb2VzIG5vdCBmaWxsIHRoZSBhcmVhIHdpdGggYSB3aG9sZSBudW1iZXIgb2YgdGlsZXMsIHRoZSBleHRyYSBzcGFjZSBpcyBkaXN0cmlidXRlZCBhcm91bmQgdGhlIHRpbGVzLiJ9LHtuYW1lOiJzdHJldGNoIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHN0cmV0Y2hlZCB0byBmaWxsIHRoZSBhcmVhLiJ9XSxzeW50YXg6Ilsgc3RyZXRjaCB8IHJlcGVhdCB8IHJvdW5kIHwgc3BhY2UgXXsxLDJ9IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbWFnZS1yZXBlYXQifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgdGhlIGltYWdlcyBmb3IgdGhlIHNpZGVzIGFuZCB0aGUgbWlkZGxlIHBhcnQgb2YgdGhlIGJvcmRlciBpbWFnZSBhcmUgc2NhbGVkIGFuZCB0aWxlZC4gSWYgdGhlIHNlY29uZCBrZXl3b3JkIGlzIGFic2VudCwgaXQgaXMgYXNzdW1lZCB0byBiZSB0aGUgc2FtZSBhcyB0aGUgZmlyc3QuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJib3JkZXItaW1hZ2Utc2xpY2UiLHZhbHVlczpbe25hbWU6ImZpbGwiLGRlc2NyaXB0aW9uOiJDYXVzZXMgdGhlIG1pZGRsZSBwYXJ0IG9mIHRoZSBib3JkZXItaW1hZ2UgdG8gYmUgcHJlc2VydmVkLiJ9XSxzeW50YXg6IjxudW1iZXItcGVyY2VudGFnZT57MSw0fSAmJiBmaWxsPyIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItaW1hZ2Utc2xpY2UifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBpbndhcmQgb2Zmc2V0cyBmcm9tIHRoZSB0b3AsIHJpZ2h0LCBib3R0b20sIGFuZCBsZWZ0IGVkZ2VzIG9mIHRoZSBpbWFnZSwgZGl2aWRpbmcgaXQgaW50byBuaW5lIHJlZ2lvbnM6IGZvdXIgY29ybmVycywgZm91ciBlZGdlcyBhbmQgYSBtaWRkbGUuIixyZXN0cmljdGlvbnM6WyJudW1iZXIiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJib3JkZXItaW1hZ2Utc291cmNlIix2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVXNlIHRoZSBib3JkZXIgc3R5bGVzLiJ9XSxzeW50YXg6Im5vbmUgfCA8aW1hZ2U+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbWFnZS1zb3VyY2UifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBhbiBpbWFnZSB0byB1c2UgaW5zdGVhZCBvZiB0aGUgYm9yZGVyIHN0eWxlcyBnaXZlbiBieSB0aGUgJ2JvcmRlci1zdHlsZScgcHJvcGVydGllcyBhbmQgYXMgYW4gYWRkaXRpb25hbCBiYWNrZ3JvdW5kIGxheWVyIGZvciB0aGUgZWxlbWVudC4gSWYgdGhlIHZhbHVlIGlzICdub25lJyBvciBpZiB0aGUgaW1hZ2UgY2Fubm90IGJlIGRpc3BsYXllZCwgdGhlIGJvcmRlciBzdHlsZXMgd2lsbCBiZSB1c2VkLiIscmVzdHJpY3Rpb25zOlsiaW1hZ2UiXX0se25hbWU6ImJvcmRlci1pbWFnZS13aWR0aCIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBib3JkZXIgaW1hZ2Ugd2lkdGggaXMgdGhlIGludHJpbnNpYyB3aWR0aCBvciBoZWlnaHQgKHdoaWNoZXZlciBpcyBhcHBsaWNhYmxlKSBvZiB0aGUgY29ycmVzcG9uZGluZyBpbWFnZSBzbGljZS4gSWYgdGhlIGltYWdlIGRvZXMgbm90IGhhdmUgdGhlIHJlcXVpcmVkIGludHJpbnNpYyBkaW1lbnNpb24gdGhlbiB0aGUgY29ycmVzcG9uZGluZyBib3JkZXItd2lkdGggaXMgdXNlZCBpbnN0ZWFkLiJ9XSxzeW50YXg6IlsgPGxlbmd0aC1wZXJjZW50YWdlPiB8IDxudW1iZXI+IHwgYXV0byBdezEsNH0iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWltYWdlLXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJUaGUgZm91ciB2YWx1ZXMgb2YgJ2JvcmRlci1pbWFnZS13aWR0aCcgc3BlY2lmeSBvZmZzZXRzIHRoYXQgYXJlIHVzZWQgdG8gZGl2aWRlIHRoZSBib3JkZXIgaW1hZ2UgYXJlYSBpbnRvIG5pbmUgcGFydHMuIFRoZXkgcmVwcmVzZW50IGlud2FyZCBkaXN0YW5jZXMgZnJvbSB0aGUgdG9wLCByaWdodCwgYm90dG9tLCBhbmQgbGVmdCBzaWRlcyBvZiB0aGUgYXJlYSwgcmVzcGVjdGl2ZWx5LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSIsIm51bWJlciJdfSx7bmFtZToiYm9yZGVyLWlubGluZS1lbmQiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J2JvcmRlci10b3Atd2lkdGgnPiB8fCA8J2JvcmRlci10b3Atc3R5bGUnPiB8fCA8Y29sb3I+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbmxpbmUtZW5kIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdib3JkZXItcmlnaHQnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIiwibGluZS1zdHlsZSIsImNvbG9yIl19LHtuYW1lOiJib3JkZXItaW5saW5lLXN0YXJ0Iixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLXdpZHRoJz4gfHwgPCdib3JkZXItdG9wLXN0eWxlJz4gfHwgPGNvbG9yPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItaW5saW5lLXN0YXJ0In1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdib3JkZXItbGVmdCcuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnTigJlzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiLCJsaW5lLXN0eWxlIiwiY29sb3IiXX0se25hbWU6ImJvcmRlci1pbmxpbmUtZW5kLWNvbG9yIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLWNvbG9yJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWlubGluZS1lbmQtY29sb3IifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci1yaWdodC1jb2xvcicuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnTigJlzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJib3JkZXItaW5saW5lLXN0YXJ0LWNvbG9yIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLWNvbG9yJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWlubGluZS1zdGFydC1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnYm9yZGVyLWxlZnQtY29sb3InLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWlubGluZS1lbmQtc3R5bGUiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J2JvcmRlci10b3Atc3R5bGUnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItaW5saW5lLWVuZC1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnYm9yZGVyLXJpZ2h0LXN0eWxlJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudOKAmXMgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSJdfSx7bmFtZToiYm9yZGVyLWlubGluZS1zdGFydC1zdHlsZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC1zdHlsZSc+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbmxpbmUtc3RhcnQtc3R5bGUifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci1sZWZ0LXN0eWxlJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudOKAmXMgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSJdfSx7bmFtZToiYm9yZGVyLWlubGluZS1lbmQtd2lkdGgiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J2JvcmRlci10b3Atd2lkdGgnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItaW5saW5lLWVuZC13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnYm9yZGVyLXJpZ2h0LXdpZHRoJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudOKAmXMgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCJdfSx7bmFtZToiYm9yZGVyLWlubGluZS1zdGFydC13aWR0aCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC13aWR0aCc+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbmxpbmUtc3RhcnQtd2lkdGgifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci1sZWZ0LXdpZHRoJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudOKAmXMgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCJdfSx7bmFtZToiYm9yZGVyLWxlZnQiLHN5bnRheDoiPGxpbmUtd2lkdGg+IHx8IDxsaW5lLXN0eWxlPiB8fCA8Y29sb3I+IixyZWxldmFuY2U6ODMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1sZWZ0In1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgYm9yZGVyIHdpZHRoLCBzdHlsZSBhbmQgY29sb3IiLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiLCJsaW5lLXN0eWxlIiwiY29sb3IiXX0se25hbWU6ImJvcmRlci1sZWZ0LWNvbG9yIixzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTo2NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWxlZnQtY29sb3IifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIGNvbG9yIG9mIHRoZSBsZWZ0IGJvcmRlci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJib3JkZXItbGVmdC1zdHlsZSIsc3ludGF4OiI8bGluZS1zdHlsZT4iLHJlbGV2YW5jZTo1MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWxlZnQtc3R5bGUifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIHN0eWxlIG9mIHRoZSBsZWZ0IGJvcmRlci4iLHJlc3RyaWN0aW9uczpbImxpbmUtc3R5bGUiXX0se25hbWU6ImJvcmRlci1sZWZ0LXdpZHRoIixzeW50YXg6IjxsaW5lLXdpZHRoPiIscmVsZXZhbmNlOjU5LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItbGVmdC13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgdGhpY2tuZXNzIG9mIHRoZSBsZWZ0IGJvcmRlci4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiXX0se25hbWU6ImJvcmRlci1yYWRpdXMiLHN5bnRheDoiPGxlbmd0aC1wZXJjZW50YWdlPnsxLDR9IFsgLyA8bGVuZ3RoLXBlcmNlbnRhZ2U+ezEsNH0gXT8iLHJlbGV2YW5jZTo5MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXJhZGl1cyJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgcmFkaWkgb2YgdGhlIG91dGVyIGJvcmRlciBlZGdlLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiYm9yZGVyLXJpZ2h0IixzeW50YXg6IjxsaW5lLXdpZHRoPiB8fCA8bGluZS1zdHlsZT4gfHwgPGNvbG9yPiIscmVsZXZhbmNlOjgyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItcmlnaHQifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBmb3Igc2V0dGluZyBib3JkZXIgd2lkdGgsIHN0eWxlIGFuZCBjb2xvciIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCIsImxpbmUtc3R5bGUiLCJjb2xvciJdfSx7bmFtZToiYm9yZGVyLXJpZ2h0LWNvbG9yIixzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTo2NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXJpZ2h0LWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBjb2xvciBvZiB0aGUgcmlnaHQgYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6ImJvcmRlci1yaWdodC1zdHlsZSIsc3ludGF4OiI8bGluZS1zdHlsZT4iLHJlbGV2YW5jZTo1MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXJpZ2h0LXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBzdHlsZSBvZiB0aGUgcmlnaHQgYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSJdfSx7bmFtZToiYm9yZGVyLXJpZ2h0LXdpZHRoIixzeW50YXg6IjxsaW5lLXdpZHRoPiIscmVsZXZhbmNlOjU5LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItcmlnaHQtd2lkdGgifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIHRoaWNrbmVzcyBvZiB0aGUgcmlnaHQgYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCJdfSx7bmFtZToiYm9yZGVyLXNwYWNpbmciLHN5bnRheDoiPGxlbmd0aD4gPGxlbmd0aD4/IixyZWxldmFuY2U6NjgscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1zcGFjaW5nIn1dLGRlc2NyaXB0aW9uOiJUaGUgbGVuZ3RocyBzcGVjaWZ5IHRoZSBkaXN0YW5jZSB0aGF0IHNlcGFyYXRlcyBhZGpvaW5pbmcgY2VsbCBib3JkZXJzLiBJZiBvbmUgbGVuZ3RoIGlzIHNwZWNpZmllZCwgaXQgZ2l2ZXMgYm90aCB0aGUgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgc3BhY2luZy4gSWYgdHdvIGFyZSBzcGVjaWZpZWQsIHRoZSBmaXJzdCBnaXZlcyB0aGUgaG9yaXpvbnRhbCBzcGFjaW5nIGFuZCB0aGUgc2Vjb25kIHRoZSB2ZXJ0aWNhbCBzcGFjaW5nLiBMZW5ndGhzIG1heSBub3QgYmUgbmVnYXRpdmUuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6ImJvcmRlci1zdHlsZSIsdmFsdWVzOltdLHN5bnRheDoiPGxpbmUtc3R5bGU+ezEsNH0iLHJlbGV2YW5jZTo4MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJUaGUgc3R5bGUgb2YgdGhlIGJvcmRlciBhcm91bmQgZWRnZXMgb2YgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImxpbmUtc3R5bGUiXX0se25hbWU6ImJvcmRlci10b3AiLHN5bnRheDoiPGxpbmUtd2lkdGg+IHx8IDxsaW5lLXN0eWxlPiB8fCA8Y29sb3I+IixyZWxldmFuY2U6ODgscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci10b3AifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBmb3Igc2V0dGluZyBib3JkZXIgd2lkdGgsIHN0eWxlIGFuZCBjb2xvciIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCIsImxpbmUtc3R5bGUiLCJjb2xvciJdfSx7bmFtZToiYm9yZGVyLXRvcC1jb2xvciIsc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6NzIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci10b3AtY29sb3IifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIGNvbG9yIG9mIHRoZSB0b3AgYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6ImJvcmRlci10b3AtbGVmdC1yYWRpdXMiLHN5bnRheDoiPGxlbmd0aC1wZXJjZW50YWdlPnsxLDJ9IixyZWxldmFuY2U6NzYscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci10b3AtbGVmdC1yYWRpdXMifV0sZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIHJhZGlpIG9mIHRoZSB0b3AgbGVmdCBvdXRlciBib3JkZXIgZWRnZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImJvcmRlci10b3AtcmlnaHQtcmFkaXVzIixzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT57MSwyfSIscmVsZXZhbmNlOjc1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItdG9wLXJpZ2h0LXJhZGl1cyJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgcmFkaWkgb2YgdGhlIHRvcCByaWdodCBvdXRlciBib3JkZXIgZWRnZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImJvcmRlci10b3Atc3R5bGUiLHN5bnRheDoiPGxpbmUtc3R5bGU+IixyZWxldmFuY2U6NTcscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci10b3Atc3R5bGUifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIHN0eWxlIG9mIHRoZSB0b3AgYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSJdfSx7bmFtZToiYm9yZGVyLXRvcC13aWR0aCIsc3ludGF4OiI8bGluZS13aWR0aD4iLHJlbGV2YW5jZTo2MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXRvcC13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgdGhpY2tuZXNzIG9mIHRoZSB0b3AgYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCJdfSx7bmFtZToiYm9yZGVyLXdpZHRoIix2YWx1ZXM6W10sc3ludGF4OiI8bGluZS13aWR0aD57MSw0fSIscmVsZXZhbmNlOjgyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItd2lkdGgifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCB0aGF0IHNldHMgdGhlIGZvdXIgJ2JvcmRlci0qLXdpZHRoJyBwcm9wZXJ0aWVzLiBJZiBpdCBoYXMgZm91ciB2YWx1ZXMsIHRoZXkgc2V0IHRvcCwgcmlnaHQsIGJvdHRvbSBhbmQgbGVmdCBpbiB0aGF0IG9yZGVyLiBJZiBsZWZ0IGlzIG1pc3NpbmcsIGl0IGlzIHRoZSBzYW1lIGFzIHJpZ2h0OyBpZiBib3R0b20gaXMgbWlzc2luZywgaXQgaXMgdGhlIHNhbWUgYXMgdG9wOyBpZiByaWdodCBpcyBtaXNzaW5nLCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIl19LHtuYW1lOiJib3R0b20iLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJGb3Igbm9uLXJlcGxhY2VkIGVsZW1lbnRzLCB0aGUgZWZmZWN0IG9mIHRoaXMgdmFsdWUgZGVwZW5kcyBvbiB3aGljaCBvZiByZWxhdGVkIHByb3BlcnRpZXMgaGF2ZSB0aGUgdmFsdWUgJ2F1dG8nIGFzIHdlbGwifV0sc3ludGF4OiI8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGF1dG8iLHJlbGV2YW5jZTo5MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm90dG9tIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGZhciBhbiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYm94J3MgYm90dG9tIG1hcmdpbiBlZGdlIGlzIG9mZnNldCBhYm92ZSB0aGUgYm90dG9tIGVkZ2Ugb2YgdGhlIGJveCdzICdjb250YWluaW5nIGJsb2NrJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImJveC1kZWNvcmF0aW9uLWJyZWFrIixicm93c2VyczpbIkU3OSIsIkZGMzIiLCJTNyIsIkMyMiIsIk8xNSJdLHZhbHVlczpbe25hbWU6ImNsb25lIixkZXNjcmlwdGlvbjoiRWFjaCBib3ggaXMgaW5kZXBlbmRlbnRseSB3cmFwcGVkIHdpdGggdGhlIGJvcmRlciBhbmQgcGFkZGluZy4ifSx7bmFtZToic2xpY2UiLGRlc2NyaXB0aW9uOiJUaGUgZWZmZWN0IGlzIGFzIHRob3VnaCB0aGUgZWxlbWVudCB3ZXJlIHJlbmRlcmVkIHdpdGggbm8gYnJlYWtzIHByZXNlbnQsIGFuZCB0aGVuIHNsaWNlZCBieSB0aGUgYnJlYWtzIGFmdGVyd2FyZC4ifV0sc3ludGF4OiJzbGljZSB8IGNsb25lIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JveC1kZWNvcmF0aW9uLWJyZWFrIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hldGhlciBpbmRpdmlkdWFsIGJveGVzIGFyZSB0cmVhdGVkIGFzIGJyb2tlbiBwaWVjZXMgb2Ygb25lIGNvbnRpbnVvdXMgYm94LCBvciB3aGV0aGVyIGVhY2ggYm94IGlzIGluZGl2aWR1YWxseSB3cmFwcGVkIHdpdGggdGhlIGJvcmRlciBhbmQgcGFkZGluZy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImJveC1zaGFkb3ciLHZhbHVlczpbe25hbWU6Imluc2V0IixkZXNjcmlwdGlvbjoiQ2hhbmdlcyB0aGUgZHJvcCBzaGFkb3cgZnJvbSBhbiBvdXRlciBzaGFkb3cgKG9uZSB0aGF0IHNoYWRvd3MgdGhlIGJveCBvbnRvIHRoZSBjYW52YXMsIGFzIGlmIGl0IHdlcmUgbGlmdGVkIGFib3ZlIHRoZSBjYW52YXMpIHRvIGFuIGlubmVyIHNoYWRvdyAob25lIHRoYXQgc2hhZG93cyB0aGUgY2FudmFzIG9udG8gdGhlIGJveCwgYXMgaWYgdGhlIGJveCB3ZXJlIGN1dCBvdXQgb2YgdGhlIGNhbnZhcyBhbmQgc2hpZnRlZCBiZWhpbmQgaXQpLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gc2hhZG93LiJ9XSxzeW50YXg6Im5vbmUgfCA8c2hhZG93PiMiLHJlbGV2YW5jZTo5MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm94LXNoYWRvdyJ9XSxkZXNjcmlwdGlvbjoiQXR0YWNoZXMgb25lIG9yIG1vcmUgZHJvcC1zaGFkb3dzIHRvIHRoZSBib3guIFRoZSBwcm9wZXJ0eSBpcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHNoYWRvd3MsIGVhY2ggc3BlY2lmaWVkIGJ5IDItNCBsZW5ndGggdmFsdWVzLCBhbiBvcHRpb25hbCBjb2xvciwgYW5kIGFuIG9wdGlvbmFsICdpbnNldCcga2V5d29yZC4gT21pdHRlZCBsZW5ndGhzIGFyZSAwOyBvbWl0dGVkIGNvbG9ycyBhcmUgYSB1c2VyIGFnZW50IGNob3NlbiBjb2xvci4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImNvbG9yIiwiZW51bSJdfSx7bmFtZToiYm94LXNpemluZyIsdmFsdWVzOlt7bmFtZToiYm9yZGVyLWJveCIsZGVzY3JpcHRpb246IlRoZSBzcGVjaWZpZWQgd2lkdGggYW5kIGhlaWdodCAoYW5kIHJlc3BlY3RpdmUgbWluL21heCBwcm9wZXJ0aWVzKSBvbiB0aGlzIGVsZW1lbnQgZGV0ZXJtaW5lIHRoZSBib3JkZXIgYm94IG9mIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJjb250ZW50LWJveCIsZGVzY3JpcHRpb246IkJlaGF2aW9yIG9mIHdpZHRoIGFuZCBoZWlnaHQgYXMgc3BlY2lmaWVkIGJ5IENTUzIuMS4gVGhlIHNwZWNpZmllZCB3aWR0aCBhbmQgaGVpZ2h0IChhbmQgcmVzcGVjdGl2ZSBtaW4vbWF4IHByb3BlcnRpZXMpIGFwcGx5IHRvIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IHJlc3BlY3RpdmVseSBvZiB0aGUgY29udGVudCBib3ggb2YgdGhlIGVsZW1lbnQuIn1dLHN5bnRheDoiY29udGVudC1ib3ggfCBib3JkZXItYm94IixyZWxldmFuY2U6OTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JveC1zaXppbmcifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgYmVoYXZpb3Igb2YgdGhlICd3aWR0aCcgYW5kICdoZWlnaHQnIHByb3BlcnRpZXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJicmVhay1hZnRlciIsdmFsdWVzOlt7bmFtZToiYWx3YXlzIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJOZWl0aGVyIGZvcmNlIG5vciBmb3JiaWQgYSBwYWdlL2NvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIHByaW5jaXBhbCBib3guIn0se25hbWU6ImF2b2lkIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIHByaW5jaXBhbCBib3guIn0se25hbWU6ImF2b2lkLWNvbHVtbiIsZGVzY3JpcHRpb246IkF2b2lkIGEgY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgcHJpbmNpcGFsIGJveC4ifSx7bmFtZToiYXZvaWQtcGFnZSIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIHByaW5jaXBhbCBib3guIn0se25hbWU6ImNvbHVtbiIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIGNvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIHByaW5jaXBhbCBib3guIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJGb3JjZSBvbmUgb3IgdHdvIHBhZ2UgYnJlYWtzIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveCBzbyB0aGF0IHRoZSBuZXh0IHBhZ2UgaXMgZm9ybWF0dGVkIGFzIGEgbGVmdCBwYWdlLiJ9LHtuYW1lOiJwYWdlIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIHByaW5jaXBhbCBib3guIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiRm9yY2Ugb25lIG9yIHR3byBwYWdlIGJyZWFrcyBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3ggc28gdGhhdCB0aGUgbmV4dCBwYWdlIGlzIGZvcm1hdHRlZCBhcyBhIHJpZ2h0IHBhZ2UuIn1dLHN5bnRheDoiYXV0byB8IGF2b2lkIHwgYWx3YXlzIHwgYWxsIHwgYXZvaWQtcGFnZSB8IHBhZ2UgfCBsZWZ0IHwgcmlnaHQgfCByZWN0byB8IHZlcnNvIHwgYXZvaWQtY29sdW1uIHwgY29sdW1uIHwgYXZvaWQtcmVnaW9uIHwgcmVnaW9uIixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgcGFnZS9jb2x1bW4vcmVnaW9uIGJyZWFrIGJlaGF2aW9yIGFmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiYnJlYWstYmVmb3JlIix2YWx1ZXM6W3tuYW1lOiJhbHdheXMiLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246Ik5laXRoZXIgZm9yY2Ugbm9yIGZvcmJpZCBhIHBhZ2UvY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgcHJpbmNpcGFsIGJveC4ifSx7bmFtZToiYXZvaWQiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgcHJpbmNpcGFsIGJveC4ifSx7bmFtZToiYXZvaWQtY29sdW1uIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBjb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBwcmluY2lwYWwgYm94LiJ9LHtuYW1lOiJhdm9pZC1wYWdlIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgcHJpbmNpcGFsIGJveC4ifSx7bmFtZToiY29sdW1uIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgcHJpbmNpcGFsIGJveC4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSBsZWZ0IHBhZ2UuIn0se25hbWU6InBhZ2UiLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgcHJpbmNpcGFsIGJveC4ifSx7bmFtZToicmlnaHQiLGRlc2NyaXB0aW9uOiJGb3JjZSBvbmUgb3IgdHdvIHBhZ2UgYnJlYWtzIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveCBzbyB0aGF0IHRoZSBuZXh0IHBhZ2UgaXMgZm9ybWF0dGVkIGFzIGEgcmlnaHQgcGFnZS4ifV0sc3ludGF4OiJhdXRvIHwgYXZvaWQgfCBhbHdheXMgfCBhbGwgfCBhdm9pZC1wYWdlIHwgcGFnZSB8IGxlZnQgfCByaWdodCB8IHJlY3RvIHwgdmVyc28gfCBhdm9pZC1jb2x1bW4gfCBjb2x1bW4gfCBhdm9pZC1yZWdpb24gfCByZWdpb24iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBwYWdlL2NvbHVtbi9yZWdpb24gYnJlYWsgYmVoYXZpb3IgYmVmb3JlIHRoZSBnZW5lcmF0ZWQgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiYnJlYWstaW5zaWRlIix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiSW1wb3NlIG5vIGFkZGl0aW9uYWwgYnJlYWtpbmcgY29uc3RyYWludHMgd2l0aGluIHRoZSBib3guIn0se25hbWU6ImF2b2lkIixkZXNjcmlwdGlvbjoiQXZvaWQgYnJlYWtzIHdpdGhpbiB0aGUgYm94LiJ9LHtuYW1lOiJhdm9pZC1jb2x1bW4iLGRlc2NyaXB0aW9uOiJBdm9pZCBhIGNvbHVtbiBicmVhayB3aXRoaW4gdGhlIGJveC4ifSx7bmFtZToiYXZvaWQtcGFnZSIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZSBicmVhayB3aXRoaW4gdGhlIGJveC4ifV0sc3ludGF4OiJhdXRvIHwgYXZvaWQgfCBhdm9pZC1wYWdlIHwgYXZvaWQtY29sdW1uIHwgYXZvaWQtcmVnaW9uIixyZWxldmFuY2U6NTEsZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgcGFnZS9jb2x1bW4vcmVnaW9uIGJyZWFrIGJlaGF2aW9yIGluc2lkZSB0aGUgcHJpbmNpcGFsIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImNhcHRpb24tc2lkZSIsdmFsdWVzOlt7bmFtZToiYm90dG9tIixkZXNjcmlwdGlvbjoiUG9zaXRpb25zIHRoZSBjYXB0aW9uIGJveCBiZWxvdyB0aGUgdGFibGUgYm94LiJ9LHtuYW1lOiJ0b3AiLGRlc2NyaXB0aW9uOiJQb3NpdGlvbnMgdGhlIGNhcHRpb24gYm94IGFib3ZlIHRoZSB0YWJsZSBib3guIn1dLHN5bnRheDoidG9wIHwgYm90dG9tIHwgYmxvY2stc3RhcnQgfCBibG9jay1lbmQgfCBpbmxpbmUtc3RhcnQgfCBpbmxpbmUtZW5kIixyZWxldmFuY2U6NTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NhcHRpb24tc2lkZSJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgY2FwdGlvbiBib3ggd2l0aCByZXNwZWN0IHRvIHRoZSB0YWJsZSBib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJjYXJldC1jb2xvciIsYnJvd3NlcnM6WyJFNzkiLCJGRjUzIiwiUzExLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHVzZXIgYWdlbnQgc2VsZWN0cyBhbiBhcHByb3ByaWF0ZSBjb2xvciBmb3IgdGhlIGNhcmV0LiBUaGlzIGlzIGdlbmVyYWxseSBjdXJyZW50Y29sb3IsIGJ1dCB0aGUgdXNlciBhZ2VudCBtYXkgY2hvb3NlIGEgZGlmZmVyZW50IGNvbG9yIHRvIGVuc3VyZSBnb29kIHZpc2liaWxpdHkgYW5kIGNvbnRyYXN0IHdpdGggdGhlIHN1cnJvdW5kaW5nIGNvbnRlbnQsIHRha2luZyBpbnRvIGFjY291bnQgdGhlIHZhbHVlIG9mIGN1cnJlbnRjb2xvciwgdGhlIGJhY2tncm91bmQsIHNoYWRvd3MsIGFuZCBvdGhlciBmYWN0b3JzLiJ9XSxzeW50YXg6ImF1dG8gfCA8Y29sb3I+IixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NhcmV0LWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJDb250cm9scyB0aGUgY29sb3Igb2YgdGhlIHRleHQgaW5zZXJ0aW9uIGluZGljYXRvci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIiwiZW51bSJdfSx7bmFtZToiY2xlYXIiLHZhbHVlczpbe25hbWU6ImJvdGgiLGRlc2NyaXB0aW9uOiJUaGUgY2xlYXJhbmNlIG9mIHRoZSBnZW5lcmF0ZWQgYm94IGlzIHNldCB0byB0aGUgYW1vdW50IG5lY2Vzc2FyeSB0byBwbGFjZSB0aGUgdG9wIGJvcmRlciBlZGdlIGJlbG93IHRoZSBib3R0b20gb3V0ZXIgZWRnZSBvZiBhbnkgcmlnaHQtZmxvYXRpbmcgYW5kIGxlZnQtZmxvYXRpbmcgYm94ZXMgdGhhdCByZXN1bHRlZCBmcm9tIGVsZW1lbnRzIGVhcmxpZXIgaW4gdGhlIHNvdXJjZSBkb2N1bWVudC4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IlRoZSBjbGVhcmFuY2Ugb2YgdGhlIGdlbmVyYXRlZCBib3ggaXMgc2V0IHRvIHRoZSBhbW91bnQgbmVjZXNzYXJ5IHRvIHBsYWNlIHRoZSB0b3AgYm9yZGVyIGVkZ2UgYmVsb3cgdGhlIGJvdHRvbSBvdXRlciBlZGdlIG9mIGFueSBsZWZ0LWZsb2F0aW5nIGJveGVzIHRoYXQgcmVzdWx0ZWQgZnJvbSBlbGVtZW50cyBlYXJsaWVyIGluIHRoZSBzb3VyY2UgZG9jdW1lbnQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBjb25zdHJhaW50IG9uIHRoZSBib3gncyBwb3NpdGlvbiB3aXRoIHJlc3BlY3QgdG8gZmxvYXRzLiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IlRoZSBjbGVhcmFuY2Ugb2YgdGhlIGdlbmVyYXRlZCBib3ggaXMgc2V0IHRvIHRoZSBhbW91bnQgbmVjZXNzYXJ5IHRvIHBsYWNlIHRoZSB0b3AgYm9yZGVyIGVkZ2UgYmVsb3cgdGhlIGJvdHRvbSBvdXRlciBlZGdlIG9mIGFueSByaWdodC1mbG9hdGluZyBib3hlcyB0aGF0IHJlc3VsdGVkIGZyb20gZWxlbWVudHMgZWFybGllciBpbiB0aGUgc291cmNlIGRvY3VtZW50LiJ9XSxzeW50YXg6Im5vbmUgfCBsZWZ0IHwgcmlnaHQgfCBib3RoIHwgaW5saW5lLXN0YXJ0IHwgaW5saW5lLWVuZCIscmVsZXZhbmNlOjg1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jbGVhciJ9XSxkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHdoaWNoIHNpZGVzIG9mIGFuIGVsZW1lbnQncyBib3goZXMpIG1heSBub3QgYmUgYWRqYWNlbnQgdG8gYW4gZWFybGllciBmbG9hdGluZyBib3guIFRoZSAnY2xlYXInIHByb3BlcnR5IGRvZXMgbm90IGNvbnNpZGVyIGZsb2F0cyBpbnNpZGUgdGhlIGVsZW1lbnQgaXRzZWxmIG9yIGluIG90aGVyIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dHMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJjbGlwIix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgZG9lcyBub3QgY2xpcC4ifSx7bmFtZToicmVjdCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIG9mZnNldHMgZnJvbSB0aGUgZWRnZXMgb2YgdGhlIGJvcmRlciBib3guIn1dLHN5bnRheDoiPHNoYXBlPiB8IGF1dG8iLHJlbGV2YW5jZTo3NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY2xpcCJ9XSxkZXNjcmlwdGlvbjoiRGVwcmVjYXRlZC4gVXNlIHRoZSAnY2xpcC1wYXRoJyBwcm9wZXJ0eSB3aGVuIHN1cHBvcnQgYWxsb3dzLiBEZWZpbmVzIHRoZSB2aXNpYmxlIHBvcnRpb24gb2YgYW4gZWxlbWVudOKAmXMgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiY2xpcC1wYXRoIix2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gY2xpcHBpbmcgcGF0aCBnZXRzIGNyZWF0ZWQuIn0se25hbWU6InVybCgpIixkZXNjcmlwdGlvbjoiUmVmZXJlbmNlcyBhIDxjbGlwUGF0aD4gZWxlbWVudCB0byBjcmVhdGUgYSBjbGlwcGluZyBwYXRoLiJ9XSxzeW50YXg6IjxjbGlwLXNvdXJjZT4gfCBbIDxiYXNpYy1zaGFwZT4gfHwgPGdlb21ldHJ5LWJveD4gXSB8IG5vbmUiLHJlbGV2YW5jZTo2MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY2xpcC1wYXRoIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbGlwcGluZyBwYXRoIHdoZXJlIGV2ZXJ5dGhpbmcgaW5zaWRlIHRoZSBwYXRoIGlzIHZpc2libGUgYW5kIGV2ZXJ5dGhpbmcgb3V0c2lkZSBpcyBjbGlwcGVkIG91dC4iLHJlc3RyaWN0aW9uczpbInVybCIsInNoYXBlIiwiZ2VvbWV0cnktYm94IiwiZW51bSJdfSx7bmFtZToiY2xpcC1ydWxlIixicm93c2VyczpbIkUiLCJDNSIsIkZGMyIsIklFMTAiLCJPOSIsIlM2Il0sdmFsdWVzOlt7bmFtZToiZXZlbm9kZCIsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIOKAmGluc2lkZW5lc3PigJkgb2YgYSBwb2ludCBvbiB0aGUgY2FudmFzIGJ5IGRyYXdpbmcgYSByYXkgZnJvbSB0aGF0IHBvaW50IHRvIGluZmluaXR5IGluIGFueSBkaXJlY3Rpb24gYW5kIGNvdW50aW5nIHRoZSBudW1iZXIgb2YgcGF0aCBzZWdtZW50cyBmcm9tIHRoZSBnaXZlbiBzaGFwZSB0aGF0IHRoZSByYXkgY3Jvc3Nlcy4ifSx7bmFtZToibm9uemVybyIsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIOKAmGluc2lkZW5lc3PigJkgb2YgYSBwb2ludCBvbiB0aGUgY2FudmFzIGJ5IGRyYXdpbmcgYSByYXkgZnJvbSB0aGF0IHBvaW50IHRvIGluZmluaXR5IGluIGFueSBkaXJlY3Rpb24gYW5kIHRoZW4gZXhhbWluaW5nIHRoZSBwbGFjZXMgd2hlcmUgYSBzZWdtZW50IG9mIHRoZSBzaGFwZSBjcm9zc2VzIHRoZSByYXkuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoZSBhbGdvcml0aG0gd2hpY2ggaXMgdG8gYmUgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCBwYXJ0cyBvZiB0aGUgY2FudmFzIGFyZSBpbmNsdWRlZCBpbnNpZGUgdGhlIHNoYXBlLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiY29sb3IiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjk1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb2xvciJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgY29sb3Igb2YgYW4gZWxlbWVudCdzIHRleHQiLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMiLGJyb3dzZXJzOlsiRSIsIkM1IiwiRkYzIiwiSUUxMCIsIk85IiwiUzYiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQ29sb3Igb3BlcmF0aW9ucyBhcmUgbm90IHJlcXVpcmVkIHRvIG9jY3VyIGluIGEgcGFydGljdWxhciBjb2xvciBzcGFjZS4ifSx7bmFtZToibGluZWFyUkdCIixkZXNjcmlwdGlvbjoiQ29sb3Igb3BlcmF0aW9ucyBzaG91bGQgb2NjdXIgaW4gdGhlIGxpbmVhcml6ZWQgUkdCIGNvbG9yIHNwYWNlLiJ9LHtuYW1lOiJzUkdCIixkZXNjcmlwdGlvbjoiQ29sb3Igb3BlcmF0aW9ucyBzaG91bGQgb2NjdXIgaW4gdGhlIHNSR0IgY29sb3Igc3BhY2UuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBjb2xvciBzcGFjZSBmb3IgaW1hZ2luZyBvcGVyYXRpb25zIHBlcmZvcm1lZCB2aWEgZmlsdGVyIGVmZmVjdHMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJjb2x1bW4tY291bnQiLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgY29sdW1ucyBieSB0aGUgJ2NvbHVtbi13aWR0aCcgcHJvcGVydHkgYW5kIHRoZSBlbGVtZW50IHdpZHRoLiJ9XSxzeW50YXg6IjxpbnRlZ2VyPiB8IGF1dG8iLHJlbGV2YW5jZTo1MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29sdW1uLWNvdW50In1dLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIG9wdGltYWwgbnVtYmVyIG9mIGNvbHVtbnMgaW50byB3aGljaCB0aGUgY29udGVudCBvZiB0aGUgZWxlbWVudCB3aWxsIGJlIGZsb3dlZC4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiLCJlbnVtIl19LHtuYW1lOiJjb2x1bW4tZmlsbCIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkZpbGxzIGNvbHVtbnMgc2VxdWVudGlhbGx5LiJ9LHtuYW1lOiJiYWxhbmNlIixkZXNjcmlwdGlvbjoiQmFsYW5jZSBjb250ZW50IGVxdWFsbHkgYmV0d2VlbiBjb2x1bW5zLCBpZiBwb3NzaWJsZS4ifV0sc3ludGF4OiJhdXRvIHwgYmFsYW5jZSB8IGJhbGFuY2UtYWxsIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvbHVtbi1maWxsIn1dLGRlc2NyaXB0aW9uOiJJbiBjb250aW51b3VzIG1lZGlhLCB0aGlzIHByb3BlcnR5IHdpbGwgb25seSBiZSBjb25zdWx0ZWQgaWYgdGhlIGxlbmd0aCBvZiBjb2x1bW5zIGhhcyBiZWVuIGNvbnN0cmFpbmVkLiBPdGhlcndpc2UsIGNvbHVtbnMgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGJhbGFuY2VkLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiY29sdW1uLWdhcCIsdmFsdWVzOlt7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiVXNlciBhZ2VudCBzcGVjaWZpYyBhbmQgdHlwaWNhbGx5IGVxdWl2YWxlbnQgdG8gMWVtLiJ9XSxzeW50YXg6Im5vcm1hbCB8IDxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1NCxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgZ2FwIGJldHdlZW4gY29sdW1ucy4gSWYgdGhlcmUgaXMgYSBjb2x1bW4gcnVsZSBiZXR3ZWVuIGNvbHVtbnMsIGl0IHdpbGwgYXBwZWFyIGluIHRoZSBtaWRkbGUgb2YgdGhlIGdhcC4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImVudW0iXX0se25hbWU6ImNvbHVtbi1ydWxlIixzeW50YXg6IjwnY29sdW1uLXJ1bGUtd2lkdGgnPiB8fCA8J2NvbHVtbi1ydWxlLXN0eWxlJz4gfHwgPCdjb2x1bW4tcnVsZS1jb2xvcic+IixyZWxldmFuY2U6NTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvbHVtbi1ydWxlIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgZm9yIHNldHRpbmcgJ2NvbHVtbi1ydWxlLXdpZHRoJywgJ2NvbHVtbi1ydWxlLXN0eWxlJywgYW5kICdjb2x1bW4tcnVsZS1jb2xvcicgYXQgdGhlIHNhbWUgcGxhY2UgaW4gdGhlIHN0eWxlIHNoZWV0LiBPbWl0dGVkIHZhbHVlcyBhcmUgc2V0IHRvIHRoZWlyIGluaXRpYWwgdmFsdWVzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCIsImxpbmUtc3R5bGUiLCJjb2xvciJdfSx7bmFtZToiY29sdW1uLXJ1bGUtY29sb3IiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb2x1bW4tcnVsZS1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgY29sb3Igb2YgdGhlIGNvbHVtbiBydWxlIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiY29sdW1uLXJ1bGUtc3R5bGUiLHN5bnRheDoiPCdib3JkZXItc3R5bGUnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb2x1bW4tcnVsZS1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgc3R5bGUgb2YgdGhlIHJ1bGUgYmV0d2VlbiBjb2x1bW5zIG9mIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJsaW5lLXN0eWxlIl19LHtuYW1lOiJjb2x1bW4tcnVsZS13aWR0aCIsc3ludGF4OiI8J2JvcmRlci13aWR0aCc+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvbHVtbi1ydWxlLXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSB3aWR0aCBvZiB0aGUgcnVsZSBiZXR3ZWVuIGNvbHVtbnMuIE5lZ2F0aXZlIHZhbHVlcyBhcmUgbm90IGFsbG93ZWQuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIl19LHtuYW1lOiJjb2x1bW5zIix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHdpZHRoIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZiBvdGhlciBwcm9wZXJ0aWVzLiJ9XSxzeW50YXg6IjwnY29sdW1uLXdpZHRoJz4gfHwgPCdjb2x1bW4tY291bnQnPiIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb2x1bW5zIn1dLGRlc2NyaXB0aW9uOiJBIHNob3J0aGFuZCBwcm9wZXJ0eSB3aGljaCBzZXRzIGJvdGggJ2NvbHVtbi13aWR0aCcgYW5kICdjb2x1bW4tY291bnQnLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwiaW50ZWdlciIsImVudW0iXX0se25hbWU6ImNvbHVtbi1zcGFuIix2YWx1ZXM6W3tuYW1lOiJhbGwiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBzcGFucyBhY3Jvc3MgYWxsIGNvbHVtbnMuIENvbnRlbnQgaW4gdGhlIG5vcm1hbCBmbG93IHRoYXQgYXBwZWFycyBiZWZvcmUgdGhlIGVsZW1lbnQgaXMgYXV0b21hdGljYWxseSBiYWxhbmNlZCBhY3Jvc3MgYWxsIGNvbHVtbnMgYmVmb3JlIHRoZSBlbGVtZW50IGFwcGVhci4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGRvZXMgbm90IHNwYW4gbXVsdGlwbGUgY29sdW1ucy4ifV0sc3ludGF4OiJub25lIHwgYWxsIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvbHVtbi1zcGFuIn1dLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIHBhZ2UvY29sdW1uIGJyZWFrIGJlaGF2aW9yIGFmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiY29sdW1uLXdpZHRoIix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHdpZHRoIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZiBvdGhlciBwcm9wZXJ0aWVzLiJ9XSxzeW50YXg6IjxsZW5ndGg+IHwgYXV0byIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb2x1bW4td2lkdGgifV0sZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgd2lkdGggb2YgY29sdW1ucyBpbiBtdWx0aWNvbCBlbGVtZW50cy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImVudW0iXX0se25hbWU6ImNvbnRhaW4iLGJyb3dzZXJzOlsiRTc5IiwiRkY2OSIsIlMxNS40IiwiQzUyIiwiTzQwIl0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBwcm9wZXJ0eSBoYXMgbm8gZWZmZWN0LiJ9LHtuYW1lOiJzdHJpY3QiLGRlc2NyaXB0aW9uOiJUdXJucyBvbiBhbGwgZm9ybXMgb2YgY29udGFpbm1lbnQgZm9yIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJjb250ZW50IixkZXNjcmlwdGlvbjoiQWxsIGNvbnRhaW5tZW50IHJ1bGVzIGV4Y2VwdCBzaXplIGFyZSBhcHBsaWVkIHRvIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJzaXplIixkZXNjcmlwdGlvbjoiRm9yIHByb3BlcnRpZXMgdGhhdCBjYW4gaGF2ZSBlZmZlY3RzIG9uIG1vcmUgdGhhbiBqdXN0IGFuIGVsZW1lbnQgYW5kIGl0cyBkZXNjZW5kYW50cywgdGhvc2UgZWZmZWN0cyBkb24ndCBlc2NhcGUgdGhlIGNvbnRhaW5pbmcgZWxlbWVudC4ifSx7bmFtZToibGF5b3V0IixkZXNjcmlwdGlvbjoiVHVybnMgb24gbGF5b3V0IGNvbnRhaW5tZW50IGZvciB0aGUgZWxlbWVudC4ifSx7bmFtZToic3R5bGUiLGRlc2NyaXB0aW9uOiJUdXJucyBvbiBzdHlsZSBjb250YWlubWVudCBmb3IgdGhlIGVsZW1lbnQuIn0se25hbWU6InBhaW50IixkZXNjcmlwdGlvbjoiVHVybnMgb24gcGFpbnQgY29udGFpbm1lbnQgZm9yIHRoZSBlbGVtZW50LiJ9XSxzeW50YXg6Im5vbmUgfCBzdHJpY3QgfCBjb250ZW50IHwgWyBzaXplIHx8IGxheW91dCB8fCBzdHlsZSB8fCBwYWludCBdIixyZWxldmFuY2U6NTkscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvbnRhaW4ifV0sZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IGFuIGVsZW1lbnQgYW5kIGl0cyBjb250ZW50cyBhcmUsIGFzIG11Y2ggYXMgcG9zc2libGUsIGluZGVwZW5kZW50IG9mIHRoZSByZXN0IG9mIHRoZSBkb2N1bWVudCB0cmVlLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiY29udGVudCIsdmFsdWVzOlt7bmFtZToiYXR0cigpIixkZXNjcmlwdGlvbjoiVGhlIGF0dHIobikgZnVuY3Rpb24gcmV0dXJucyBhcyBhIHN0cmluZyB0aGUgdmFsdWUgb2YgYXR0cmlidXRlIG4gZm9yIHRoZSBzdWJqZWN0IG9mIHRoZSBzZWxlY3Rvci4ifSx7bmFtZToiY291bnRlcihuYW1lKSIsZGVzY3JpcHRpb246IkNvdW50ZXJzIGFyZSBkZW5vdGVkIGJ5IGlkZW50aWZpZXJzIChzZWUgdGhlICdjb3VudGVyLWluY3JlbWVudCcgYW5kICdjb3VudGVyLXJlc2V0JyBwcm9wZXJ0aWVzKS4ifSx7bmFtZToiaWNvbiIsZGVzY3JpcHRpb246IlRoZSAocHNldWRvLSllbGVtZW50IGlzIHJlcGxhY2VkIGluIGl0cyBlbnRpcmV0eSBieSB0aGUgcmVzb3VyY2UgcmVmZXJlbmNlZCBieSBpdHMgJ2ljb24nIHByb3BlcnR5LCBhbmQgdHJlYXRlZCBhcyBhIHJlcGxhY2VkIGVsZW1lbnQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJPbiBlbGVtZW50cywgdGhpcyBpbmhpYml0cyB0aGUgY2hpbGRyZW4gb2YgdGhlIGVsZW1lbnQgZnJvbSBiZWluZyByZW5kZXJlZCBhcyBjaGlsZHJlbiBvZiB0aGlzIGVsZW1lbnQsIGFzIGlmIHRoZSBlbGVtZW50IHdhcyBlbXB0eS4gT24gcHNldWRvLWVsZW1lbnRzIGl0IGNhdXNlcyB0aGUgcHNldWRvLWVsZW1lbnQgdG8gaGF2ZSBubyBjb250ZW50LiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJTZWUgaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1jb250ZW50LyNjb250ZW50IGZvciBjb21wdXRhdGlvbiBydWxlcy4ifSx7bmFtZToidXJsKCkifV0sc3ludGF4OiJub3JtYWwgfCBub25lIHwgWyA8Y29udGVudC1yZXBsYWNlbWVudD4gfCA8Y29udGVudC1saXN0PiBdIFsvIFsgPHN0cmluZz4gfCA8Y291bnRlcj4gXSsgXT8iLHJlbGV2YW5jZTo5MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29udGVudCJ9XSxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB3aGljaCBwYWdlLWJhc2VkIG9jY3VycmVuY2Ugb2YgYSBnaXZlbiBlbGVtZW50IGlzIGFwcGxpZWQgdG8gYSBjb3VudGVyIG9yIHN0cmluZyB2YWx1ZS4iLHJlc3RyaWN0aW9uczpbInN0cmluZyIsInVybCJdfSx7bmFtZToiY291bnRlci1pbmNyZW1lbnQiLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGlzIGVsZW1lbnQgZG9lcyBub3QgYWx0ZXIgdGhlIHZhbHVlIG9mIGFueSBjb3VudGVycy4ifV0sc3ludGF4OiJbIDxjb3VudGVyLW5hbWU+IDxpbnRlZ2VyPj8gXSsgfCBub25lIixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvdW50ZXItaW5jcmVtZW50In1dLGRlc2NyaXB0aW9uOiJNYW5pcHVsYXRlIHRoZSB2YWx1ZSBvZiBleGlzdGluZyBjb3VudGVycy4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiLCJpbnRlZ2VyIl19LHtuYW1lOiJjb3VudGVyLXJlc2V0Iix2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIGNvdW50ZXIgaXMgbm90IG1vZGlmaWVkLiJ9XSxzeW50YXg6IlsgPGNvdW50ZXItbmFtZT4gPGludGVnZXI+PyB8IDxyZXZlcnNlZC1jb3VudGVyLW5hbWU+IDxpbnRlZ2VyPj8gXSsgfCBub25lIixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvdW50ZXItcmVzZXQifV0sZGVzY3JpcHRpb246IlByb3BlcnR5IGFjY2VwdHMgb25lIG9yIG1vcmUgbmFtZXMgb2YgY291bnRlcnMgKGlkZW50aWZpZXJzKSwgZWFjaCBvbmUgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhbiBpbnRlZ2VyLiBUaGUgaW50ZWdlciBnaXZlcyB0aGUgdmFsdWUgdGhhdCB0aGUgY291bnRlciBpcyBzZXQgdG8gb24gZWFjaCBvY2N1cnJlbmNlIG9mIHRoZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImludGVnZXIiXX0se25hbWU6ImN1cnNvciIsdmFsdWVzOlt7bmFtZToiYWxpYXMiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgYW4gYWxpYXMgb2Yvc2hvcnRjdXQgdG8gc29tZXRoaW5nIGlzIHRvIGJlIGNyZWF0ZWQuIE9mdGVuIHJlbmRlcmVkIGFzIGFuIGFycm93IHdpdGggYSBzbWFsbCBjdXJ2ZWQgYXJyb3cgbmV4dCB0byBpdC4ifSx7bmFtZToiYWxsLXNjcm9sbCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBzb21ldGhpbmcgY2FuIGJlIHNjcm9sbGVkIGluIGFueSBkaXJlY3Rpb24uIE9mdGVuIHJlbmRlcmVkIGFzIGFycm93cyBwb2ludGluZyB1cCwgZG93biwgbGVmdCwgYW5kIHJpZ2h0IHdpdGggYSBkb3QgaW4gdGhlIG1pZGRsZS4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBVQSBkZXRlcm1pbmVzIHRoZSBjdXJzb3IgdG8gZGlzcGxheSBiYXNlZCBvbiB0aGUgY3VycmVudCBjb250ZXh0LiJ9LHtuYW1lOiJjZWxsIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgYSBjZWxsIG9yIHNldCBvZiBjZWxscyBtYXkgYmUgc2VsZWN0ZWQuIE9mdGVuIHJlbmRlcmVkIGFzIGEgdGhpY2sgcGx1cy1zaWduIHdpdGggYSBkb3QgaW4gdGhlIG1pZGRsZS4ifSx7bmFtZToiY29sLXJlc2l6ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBpdGVtL2NvbHVtbiBjYW4gYmUgcmVzaXplZCBob3Jpem9udGFsbHkuIE9mdGVuIHJlbmRlcmVkIGFzIGFycm93cyBwb2ludGluZyBsZWZ0IGFuZCByaWdodCB3aXRoIGEgdmVydGljYWwgYmFyIHNlcGFyYXRpbmcgdGhlbS4ifSx7bmFtZToiY29udGV4dC1tZW51IixkZXNjcmlwdGlvbjoiQSBjb250ZXh0IG1lbnUgaXMgYXZhaWxhYmxlIGZvciB0aGUgb2JqZWN0IHVuZGVyIHRoZSBjdXJzb3IuIE9mdGVuIHJlbmRlcmVkIGFzIGFuIGFycm93IHdpdGggYSBzbWFsbCBtZW51LWxpa2UgZ3JhcGhpYyBuZXh0IHRvIGl0LiJ9LHtuYW1lOiJjb3B5IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHNvbWV0aGluZyBpcyB0byBiZSBjb3BpZWQuIE9mdGVuIHJlbmRlcmVkIGFzIGFuIGFycm93IHdpdGggYSBzbWFsbCBwbHVzIHNpZ24gbmV4dCB0byBpdC4ifSx7bmFtZToiY3Jvc3NoYWlyIixkZXNjcmlwdGlvbjoiQSBzaW1wbGUgY3Jvc3NoYWlyIChlLmcuLCBzaG9ydCBsaW5lIHNlZ21lbnRzIHJlc2VtYmxpbmcgYSAnKycgc2lnbikuIE9mdGVuIHVzZWQgdG8gaW5kaWNhdGUgYSB0d28gZGltZW5zaW9uYWwgYml0bWFwIHNlbGVjdGlvbiBtb2RlLiJ9LHtuYW1lOiJkZWZhdWx0IixkZXNjcmlwdGlvbjoiVGhlIHBsYXRmb3JtLWRlcGVuZGVudCBkZWZhdWx0IGN1cnNvci4gT2Z0ZW4gcmVuZGVyZWQgYXMgYW4gYXJyb3cuIn0se25hbWU6ImUtcmVzaXplIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgZWFzdCBlZGdlIGlzIHRvIGJlIG1vdmVkLiJ9LHtuYW1lOiJldy1yZXNpemUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgYSBiaWRpcmVjdGlvbmFsIGVhc3Qtd2VzdCByZXNpemUgY3Vyc29yLiJ9LHtuYW1lOiJncmFiIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgc29tZXRoaW5nIGNhbiBiZSBncmFiYmVkLiJ9LHtuYW1lOiJncmFiYmluZyIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHNvbWV0aGluZyBpcyBiZWluZyBncmFiYmVkLiJ9LHtuYW1lOiJoZWxwIixkZXNjcmlwdGlvbjoiSGVscCBpcyBhdmFpbGFibGUgZm9yIHRoZSBvYmplY3QgdW5kZXIgdGhlIGN1cnNvci4gT2Z0ZW4gcmVuZGVyZWQgYXMgYSBxdWVzdGlvbiBtYXJrIG9yIGEgYmFsbG9vbi4ifSx7bmFtZToibW92ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyBzb21ldGhpbmcgaXMgdG8gYmUgbW92ZWQuIn0se25hbWU6Ii1tb3otZ3JhYiIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHNvbWV0aGluZyBjYW4gYmUgZ3JhYmJlZC4ifSx7bmFtZToiLW1vei1ncmFiYmluZyIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHNvbWV0aGluZyBpcyBiZWluZyBncmFiYmVkLiJ9LHtuYW1lOiItbW96LXpvb20taW4iLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBzb21ldGhpbmcgY2FuIGJlIHpvb21lZCAobWFnbmlmaWVkKSBpbi4ifSx7bmFtZToiLW1vei16b29tLW91dCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHNvbWV0aGluZyBjYW4gYmUgem9vbWVkIChtYWduaWZpZWQpIG91dC4ifSx7bmFtZToibmUtcmVzaXplIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgbW92ZW1lbnQgc3RhcnRzIGZyb20gbm9ydGgtZWFzdCBjb3JuZXIuIn0se25hbWU6Im5lc3ctcmVzaXplIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIGEgYmlkaXJlY3Rpb25hbCBub3J0aC1lYXN0L3NvdXRoLXdlc3QgY3Vyc29yLiJ9LHtuYW1lOiJuby1kcm9wIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIGRyYWdnZWQgaXRlbSBjYW5ub3QgYmUgZHJvcHBlZCBhdCB0aGUgY3VycmVudCBjdXJzb3IgbG9jYXRpb24uIE9mdGVuIHJlbmRlcmVkIGFzIGEgaGFuZCBvciBwb2ludGVyIHdpdGggYSBzbWFsbCBjaXJjbGUgd2l0aCBhIGxpbmUgdGhyb3VnaCBpdC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGN1cnNvciBpcyByZW5kZXJlZCBmb3IgdGhlIGVsZW1lbnQuIn0se25hbWU6Im5vdC1hbGxvd2VkIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIHJlcXVlc3RlZCBhY3Rpb24gd2lsbCBub3QgYmUgY2FycmllZCBvdXQuIE9mdGVuIHJlbmRlcmVkIGFzIGEgY2lyY2xlIHdpdGggYSBsaW5lIHRocm91Z2ggaXQuIn0se25hbWU6Im4tcmVzaXplIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgbm9ydGggZWRnZSBpcyB0byBiZSBtb3ZlZC4ifSx7bmFtZToibnMtcmVzaXplIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIGEgYmlkaXJlY3Rpb25hbCBub3J0aC1zb3V0aCBjdXJzb3IuIn0se25hbWU6Im53LXJlc2l6ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IG1vdmVtZW50IHN0YXJ0cyBmcm9tIG5vcnRoLXdlc3QgY29ybmVyLiJ9LHtuYW1lOiJud3NlLXJlc2l6ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyBhIGJpZGlyZWN0aW9uYWwgbm9ydGgtd2VzdC9zb3V0aC1lYXN0IGN1cnNvci4ifSx7bmFtZToicG9pbnRlciIsZGVzY3JpcHRpb246IlRoZSBjdXJzb3IgaXMgYSBwb2ludGVyIHRoYXQgaW5kaWNhdGVzIGEgbGluay4ifSx7bmFtZToicHJvZ3Jlc3MiLGRlc2NyaXB0aW9uOiJBIHByb2dyZXNzIGluZGljYXRvci4gVGhlIHByb2dyYW0gaXMgcGVyZm9ybWluZyBzb21lIHByb2Nlc3NpbmcsIGJ1dCBpcyBkaWZmZXJlbnQgZnJvbSAnd2FpdCcgaW4gdGhhdCB0aGUgdXNlciBtYXkgc3RpbGwgaW50ZXJhY3Qgd2l0aCB0aGUgcHJvZ3JhbS4gT2Z0ZW4gcmVuZGVyZWQgYXMgYSBzcGlubmluZyBiZWFjaCBiYWxsLCBvciBhbiBhcnJvdyB3aXRoIGEgd2F0Y2ggb3IgaG91cmdsYXNzLiJ9LHtuYW1lOiJyb3ctcmVzaXplIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIGl0ZW0vcm93IGNhbiBiZSByZXNpemVkIHZlcnRpY2FsbHkuIE9mdGVuIHJlbmRlcmVkIGFzIGFycm93cyBwb2ludGluZyB1cCBhbmQgZG93biB3aXRoIGEgaG9yaXpvbnRhbCBiYXIgc2VwYXJhdGluZyB0aGVtLiJ9LHtuYW1lOiJzZS1yZXNpemUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBtb3ZlbWVudCBzdGFydHMgZnJvbSBzb3V0aC1lYXN0IGNvcm5lci4ifSx7bmFtZToicy1yZXNpemUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBzb3V0aCBlZGdlIGlzIHRvIGJlIG1vdmVkLiJ9LHtuYW1lOiJzdy1yZXNpemUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBtb3ZlbWVudCBzdGFydHMgZnJvbSBzb3V0aC13ZXN0IGNvcm5lci4ifSx7bmFtZToidGV4dCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0ZXh0IHRoYXQgbWF5IGJlIHNlbGVjdGVkLiBPZnRlbiByZW5kZXJlZCBhcyBhIHZlcnRpY2FsIEktYmVhbS4ifSx7bmFtZToidmVydGljYWwtdGV4dCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB2ZXJ0aWNhbC10ZXh0IHRoYXQgbWF5IGJlIHNlbGVjdGVkLiBPZnRlbiByZW5kZXJlZCBhcyBhIGhvcml6b250YWwgSS1iZWFtLiJ9LHtuYW1lOiJ3YWl0IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIHByb2dyYW0gaXMgYnVzeSBhbmQgdGhlIHVzZXIgc2hvdWxkIHdhaXQuIE9mdGVuIHJlbmRlcmVkIGFzIGEgd2F0Y2ggb3IgaG91cmdsYXNzLiJ9LHtuYW1lOiItd2Via2l0LWdyYWIiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBzb21ldGhpbmcgY2FuIGJlIGdyYWJiZWQuIn0se25hbWU6Ii13ZWJraXQtZ3JhYmJpbmciLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBzb21ldGhpbmcgaXMgYmVpbmcgZ3JhYmJlZC4ifSx7bmFtZToiLXdlYmtpdC16b29tLWluIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgc29tZXRoaW5nIGNhbiBiZSB6b29tZWQgKG1hZ25pZmllZCkgaW4uIn0se25hbWU6Ii13ZWJraXQtem9vbS1vdXQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBzb21ldGhpbmcgY2FuIGJlIHpvb21lZCAobWFnbmlmaWVkKSBvdXQuIn0se25hbWU6InctcmVzaXplIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgd2VzdCBlZGdlIGlzIHRvIGJlIG1vdmVkLiJ9LHtuYW1lOiJ6b29tLWluIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgc29tZXRoaW5nIGNhbiBiZSB6b29tZWQgKG1hZ25pZmllZCkgaW4uIn0se25hbWU6Inpvb20tb3V0IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgc29tZXRoaW5nIGNhbiBiZSB6b29tZWQgKG1hZ25pZmllZCkgb3V0LiJ9XSxzeW50YXg6IlsgWyA8dXJsPiBbIDx4PiA8eT4gXT8gLCBdKiBbIGF1dG8gfCBkZWZhdWx0IHwgbm9uZSB8IGNvbnRleHQtbWVudSB8IGhlbHAgfCBwb2ludGVyIHwgcHJvZ3Jlc3MgfCB3YWl0IHwgY2VsbCB8IGNyb3NzaGFpciB8IHRleHQgfCB2ZXJ0aWNhbC10ZXh0IHwgYWxpYXMgfCBjb3B5IHwgbW92ZSB8IG5vLWRyb3AgfCBub3QtYWxsb3dlZCB8IGUtcmVzaXplIHwgbi1yZXNpemUgfCBuZS1yZXNpemUgfCBudy1yZXNpemUgfCBzLXJlc2l6ZSB8IHNlLXJlc2l6ZSB8IHN3LXJlc2l6ZSB8IHctcmVzaXplIHwgZXctcmVzaXplIHwgbnMtcmVzaXplIHwgbmVzdy1yZXNpemUgfCBud3NlLXJlc2l6ZSB8IGNvbC1yZXNpemUgfCByb3ctcmVzaXplIHwgYWxsLXNjcm9sbCB8IHpvb20taW4gfCB6b29tLW91dCB8IGdyYWIgfCBncmFiYmluZyBdIF0iLHJlbGV2YW5jZTo5MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY3Vyc29yIn1dLGRlc2NyaXB0aW9uOiJBbGxvd3MgY29udHJvbCBvdmVyIGN1cnNvciBhcHBlYXJhbmNlIGluIGFuIGVsZW1lbnQiLHJlc3RyaWN0aW9uczpbInVybCIsIm51bWJlciIsImVudW0iXX0se25hbWU6ImRpcmVjdGlvbiIsdmFsdWVzOlt7bmFtZToibHRyIixkZXNjcmlwdGlvbjoiTGVmdC10by1yaWdodCBkaXJlY3Rpb24uIn0se25hbWU6InJ0bCIsZGVzY3JpcHRpb246IlJpZ2h0LXRvLWxlZnQgZGlyZWN0aW9uLiJ9XSxzeW50YXg6Imx0ciB8IHJ0bCIscmVsZXZhbmNlOjY5LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9kaXJlY3Rpb24ifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgaW5saW5lIGJhc2UgZGlyZWN0aW9uIG9yIGRpcmVjdGlvbmFsaXR5IG9mIGFueSBiaWRpIHBhcmFncmFwaCwgZW1iZWRkaW5nLCBpc29sYXRlLCBvciBvdmVycmlkZSBlc3RhYmxpc2hlZCBieSB0aGUgYm94LiBOb3RlOiBmb3IgSFRNTCBjb250ZW50IHVzZSB0aGUgJ2RpcicgYXR0cmlidXRlIGFuZCAnYmRvJyBlbGVtZW50IHJhdGhlciB0aGFuIHRoaXMgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJkaXNwbGF5Iix2YWx1ZXM6W3tuYW1lOiJibG9jayIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGdlbmVyYXRlcyBhIGJsb2NrLWxldmVsIGJveCJ9LHtuYW1lOiJjb250ZW50cyIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGl0c2VsZiBkb2VzIG5vdCBnZW5lcmF0ZSBhbnkgYm94ZXMsIGJ1dCBpdHMgY2hpbGRyZW4gYW5kIHBzZXVkby1lbGVtZW50cyBzdGlsbCBnZW5lcmF0ZSBib3hlcyBhcyBub3JtYWwuIn0se25hbWU6ImZsZXgiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBnZW5lcmF0ZXMgYSBwcmluY2lwYWwgZmxleCBjb250YWluZXIgYm94IGFuZCBlc3RhYmxpc2hlcyBhIGZsZXggZm9ybWF0dGluZyBjb250ZXh0LiJ9LHtuYW1lOiJmbGV4Ym94IixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgbGF5cyBvdXQgaXRzIGNvbnRlbnRzIHVzaW5nIGZsb3cgbGF5b3V0IChibG9jay1hbmQtaW5saW5lIGxheW91dCkuIFN0YW5kYXJkaXplZCBhcyAnZmxleCcuIn0se25hbWU6ImZsb3ctcm9vdCIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGdlbmVyYXRlcyBhIGJsb2NrIGNvbnRhaW5lciBib3gsIGFuZCBsYXlzIG91dCBpdHMgY29udGVudHMgdXNpbmcgZmxvdyBsYXlvdXQuIn0se25hbWU6ImdyaWQiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBnZW5lcmF0ZXMgYSBwcmluY2lwYWwgZ3JpZCBjb250YWluZXIgYm94LCBhbmQgZXN0YWJsaXNoZXMgYSBncmlkIGZvcm1hdHRpbmcgY29udGV4dC4ifSx7bmFtZToiaW5saW5lIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgZ2VuZXJhdGVzIGFuIGlubGluZS1sZXZlbCBib3guIn0se25hbWU6ImlubGluZS1ibG9jayIsZGVzY3JpcHRpb246IkEgYmxvY2sgYm94LCB3aGljaCBpdHNlbGYgaXMgZmxvd2VkIGFzIGEgc2luZ2xlIGlubGluZSBib3gsIHNpbWlsYXIgdG8gYSByZXBsYWNlZCBlbGVtZW50LiBUaGUgaW5zaWRlIG9mIGFuIGlubGluZS1ibG9jayBpcyBmb3JtYXR0ZWQgYXMgYSBibG9jayBib3gsIGFuZCB0aGUgYm94IGl0c2VsZiBpcyBmb3JtYXR0ZWQgYXMgYW4gaW5saW5lIGJveC4ifSx7bmFtZToiaW5saW5lLWZsZXgiLGRlc2NyaXB0aW9uOiJJbmxpbmUtbGV2ZWwgZmxleCBjb250YWluZXIuIn0se25hbWU6ImlubGluZS1mbGV4Ym94IixkZXNjcmlwdGlvbjoiSW5saW5lLWxldmVsIGZsZXggY29udGFpbmVyLiBTdGFuZGFyZGl6ZWQgYXMgJ2lubGluZS1mbGV4JyJ9LHtuYW1lOiJpbmxpbmUtdGFibGUiLGRlc2NyaXB0aW9uOiJJbmxpbmUtbGV2ZWwgdGFibGUgd3JhcHBlciBib3ggY29udGFpbmluZyB0YWJsZSBib3guIn0se25hbWU6Imxpc3QtaXRlbSIsZGVzY3JpcHRpb246Ik9uZSBvciBtb3JlIGJsb2NrIGJveGVzIGFuZCBvbmUgbWFya2VyIGJveC4ifSx7bmFtZToiLW1vei1ib3giLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBsYXlzIG91dCBpdHMgY29udGVudHMgdXNpbmcgZmxvdyBsYXlvdXQgKGJsb2NrLWFuZC1pbmxpbmUgbGF5b3V0KS4gU3RhbmRhcmRpemVkIGFzICdmbGV4Jy4ifSx7bmFtZToiLW1vei1kZWNrIn0se25hbWU6Ii1tb3otZ3JpZCJ9LHtuYW1lOiItbW96LWdyaWQtZ3JvdXAifSx7bmFtZToiLW1vei1ncmlkLWxpbmUifSx7bmFtZToiLW1vei1ncm91cGJveCJ9LHtuYW1lOiItbW96LWlubGluZS1ib3giLGRlc2NyaXB0aW9uOiJJbmxpbmUtbGV2ZWwgZmxleCBjb250YWluZXIuIFN0YW5kYXJkaXplZCBhcyAnaW5saW5lLWZsZXgnIn0se25hbWU6Ii1tb3otaW5saW5lLWdyaWQifSx7bmFtZToiLW1vei1pbmxpbmUtc3RhY2sifSx7bmFtZToiLW1vei1tYXJrZXIifSx7bmFtZToiLW1vei1wb3B1cCJ9LHtuYW1lOiItbW96LXN0YWNrIn0se25hbWU6Ii1tcy1mbGV4Ym94IixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgbGF5cyBvdXQgaXRzIGNvbnRlbnRzIHVzaW5nIGZsb3cgbGF5b3V0IChibG9jay1hbmQtaW5saW5lIGxheW91dCkuIFN0YW5kYXJkaXplZCBhcyAnZmxleCcuIn0se25hbWU6Ii1tcy1ncmlkIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgZ2VuZXJhdGVzIGEgcHJpbmNpcGFsIGdyaWQgY29udGFpbmVyIGJveCwgYW5kIGVzdGFibGlzaGVzIGEgZ3JpZCBmb3JtYXR0aW5nIGNvbnRleHQuIn0se25hbWU6Ii1tcy1pbmxpbmUtZmxleGJveCIsZGVzY3JpcHRpb246IklubGluZS1sZXZlbCBmbGV4IGNvbnRhaW5lci4gU3RhbmRhcmRpemVkIGFzICdpbmxpbmUtZmxleCcifSx7bmFtZToiLW1zLWlubGluZS1ncmlkIixkZXNjcmlwdGlvbjoiSW5saW5lLWxldmVsIGdyaWQgY29udGFpbmVyLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgYW5kIGl0cyBkZXNjZW5kYW50cyBnZW5lcmF0ZXMgbm8gYm94ZXMuIn0se25hbWU6InJ1YnkiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBnZW5lcmF0ZXMgYSBwcmluY2lwYWwgcnVieSBjb250YWluZXIgYm94LCBhbmQgZXN0YWJsaXNoZXMgYSBydWJ5IGZvcm1hdHRpbmcgY29udGV4dC4ifSx7bmFtZToicnVieS1iYXNlIn0se25hbWU6InJ1YnktYmFzZS1jb250YWluZXIifSx7bmFtZToicnVieS10ZXh0In0se25hbWU6InJ1YnktdGV4dC1jb250YWluZXIifSx7bmFtZToicnVuLWluIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgZ2VuZXJhdGVzIGEgcnVuLWluIGJveC4gUnVuLWluIGVsZW1lbnRzIGFjdCBsaWtlIGlubGluZXMgb3IgYmxvY2tzLCBkZXBlbmRpbmcgb24gdGhlIHN1cnJvdW5kaW5nIGVsZW1lbnRzLiJ9LHtuYW1lOiJ0YWJsZSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGdlbmVyYXRlcyBhIHByaW5jaXBhbCB0YWJsZSB3cmFwcGVyIGJveCBjb250YWluaW5nIGFuIGFkZGl0aW9uYWxseS1nZW5lcmF0ZWQgdGFibGUgYm94LCBhbmQgZXN0YWJsaXNoZXMgYSB0YWJsZSBmb3JtYXR0aW5nIGNvbnRleHQuIn0se25hbWU6InRhYmxlLWNhcHRpb24ifSx7bmFtZToidGFibGUtY2VsbCJ9LHtuYW1lOiJ0YWJsZS1jb2x1bW4ifSx7bmFtZToidGFibGUtY29sdW1uLWdyb3VwIn0se25hbWU6InRhYmxlLWZvb3Rlci1ncm91cCJ9LHtuYW1lOiJ0YWJsZS1oZWFkZXItZ3JvdXAifSx7bmFtZToidGFibGUtcm93In0se25hbWU6InRhYmxlLXJvdy1ncm91cCJ9LHtuYW1lOiItd2Via2l0LWJveCIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGxheXMgb3V0IGl0cyBjb250ZW50cyB1c2luZyBmbG93IGxheW91dCAoYmxvY2stYW5kLWlubGluZSBsYXlvdXQpLiBTdGFuZGFyZGl6ZWQgYXMgJ2ZsZXgnLiJ9LHtuYW1lOiItd2Via2l0LWZsZXgiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBsYXlzIG91dCBpdHMgY29udGVudHMgdXNpbmcgZmxvdyBsYXlvdXQgKGJsb2NrLWFuZC1pbmxpbmUgbGF5b3V0KS4ifSx7bmFtZToiLXdlYmtpdC1pbmxpbmUtYm94IixkZXNjcmlwdGlvbjoiSW5saW5lLWxldmVsIGZsZXggY29udGFpbmVyLiBTdGFuZGFyZGl6ZWQgYXMgJ2lubGluZS1mbGV4JyJ9LHtuYW1lOiItd2Via2l0LWlubGluZS1mbGV4IixkZXNjcmlwdGlvbjoiSW5saW5lLWxldmVsIGZsZXggY29udGFpbmVyLiJ9XSxzeW50YXg6IlsgPGRpc3BsYXktb3V0c2lkZT4gfHwgPGRpc3BsYXktaW5zaWRlPiBdIHwgPGRpc3BsYXktbGlzdGl0ZW0+IHwgPGRpc3BsYXktaW50ZXJuYWw+IHwgPGRpc3BsYXktYm94PiB8IDxkaXNwbGF5LWxlZ2FjeT4iLHJlbGV2YW5jZTo5NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZGlzcGxheSJ9XSxkZXNjcmlwdGlvbjoiSW4gY29tYmluYXRpb24gd2l0aCAnZmxvYXQnIGFuZCAncG9zaXRpb24nLCBkZXRlcm1pbmVzIHRoZSB0eXBlIG9mIGJveCBvciBib3hlcyB0aGF0IGFyZSBnZW5lcmF0ZWQgZm9yIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJlbXB0eS1jZWxscyIsdmFsdWVzOlt7bmFtZToiaGlkZSIsZGVzY3JpcHRpb246Ik5vIGJvcmRlcnMgb3IgYmFja2dyb3VuZHMgYXJlIGRyYXduIGFyb3VuZC9iZWhpbmQgZW1wdHkgY2VsbHMuIn0se25hbWU6Ii1tb3otc2hvdy1iYWNrZ3JvdW5kIn0se25hbWU6InNob3ciLGRlc2NyaXB0aW9uOiJCb3JkZXJzIGFuZCBiYWNrZ3JvdW5kcyBhcmUgZHJhd24gYXJvdW5kL2JlaGluZCBlbXB0eSBjZWxscyAobGlrZSBub3JtYWwgY2VsbHMpLiJ9XSxzeW50YXg6InNob3cgfCBoaWRlIixyZWxldmFuY2U6NTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2VtcHR5LWNlbGxzIn1dLGRlc2NyaXB0aW9uOiJJbiB0aGUgc2VwYXJhdGVkIGJvcmRlcnMgbW9kZWwsIHRoaXMgcHJvcGVydHkgY29udHJvbHMgdGhlIHJlbmRlcmluZyBvZiBib3JkZXJzIGFuZCBiYWNrZ3JvdW5kcyBhcm91bmQgY2VsbHMgdGhhdCBoYXZlIG5vIHZpc2libGUgY29udGVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImVuYWJsZS1iYWNrZ3JvdW5kIix2YWx1ZXM6W3tuYW1lOiJhY2N1bXVsYXRlIixkZXNjcmlwdGlvbjoiSWYgdGhlIGFuY2VzdG9yIGNvbnRhaW5lciBlbGVtZW50IGhhcyBhIHByb3BlcnR5IG9mIG5ldywgdGhlbiBhbGwgZ3JhcGhpY3MgZWxlbWVudHMgd2l0aGluIHRoZSBjdXJyZW50IGNvbnRhaW5lciBhcmUgcmVuZGVyZWQgYm90aCBvbiB0aGUgcGFyZW50J3MgYmFja2dyb3VuZCBpbWFnZSBhbmQgb250byB0aGUgdGFyZ2V0LiJ9LHtuYW1lOiJuZXciLGRlc2NyaXB0aW9uOiJDcmVhdGUgYSBuZXcgYmFja2dyb3VuZCBpbWFnZSBjYW52YXMuIEFsbCBjaGlsZHJlbiBvZiB0aGUgY3VycmVudCBjb250YWluZXIgZWxlbWVudCBjYW4gYWNjZXNzIHRoZSBiYWNrZ3JvdW5kLCBhbmQgdGhleSB3aWxsIGJlIHJlbmRlcmVkIG9udG8gYm90aCB0aGUgcGFyZW50J3MgYmFja2dyb3VuZCBpbWFnZSBjYW52YXMgaW4gYWRkaXRpb24gdG8gdGhlIHRhcmdldCBkZXZpY2UuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVwcmVjYXRlZC4gVXNlICdpc29sYXRpb24nIHByb3BlcnR5IGluc3RlYWQgd2hlbiBzdXBwb3J0IGFsbG93cy4gU3BlY2lmaWVzIGhvdyB0aGUgYWNjdW11bGF0aW9uIG9mIHRoZSBiYWNrZ3JvdW5kIGltYWdlIGlzIG1hbmFnZWQuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIiwibGVuZ3RoIiwicGVyY2VudGFnZSIsImVudW0iXX0se25hbWU6ImZhbGxiYWNrIixicm93c2VyczpbIkZGMzMiXSxzeW50YXg6Ijxjb3VudGVyLXN0eWxlLW5hbWU+IixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkBjb3VudGVyLXN0eWxlIGRlc2NyaXB0b3IuIFNwZWNpZmllcyBhIGZhbGxiYWNrIGNvdW50ZXIgc3R5bGUgdG8gYmUgdXNlZCB3aGVuIHRoZSBjdXJyZW50IGNvdW50ZXIgc3R5bGUgY2Fu4oCZdCBjcmVhdGUgYSByZXByZXNlbnRhdGlvbiBmb3IgYSBnaXZlbiBjb3VudGVyIHZhbHVlLiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciJdfSx7bmFtZToiZmlsbCIsdmFsdWVzOlt7bmFtZToidXJsKCkiLGRlc2NyaXB0aW9uOiJBIFVSTCByZWZlcmVuY2UgdG8gYSBwYWludCBzZXJ2ZXIgZWxlbWVudCwgd2hpY2ggaXMgYW4gZWxlbWVudCB0aGF0IGRlZmluZXMgYSBwYWludCBzZXJ2ZXI6IOKAmGhhdGNo4oCZLCDigJhsaW5lYXJHcmFkaWVudOKAmSwg4oCYbWVzaOKAmSwg4oCYcGF0dGVybuKAmSwg4oCYcmFkaWFsR3JhZGllbnTigJkgYW5kIOKAmHNvbGlkY29sb3LigJkuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBwYWludCBpcyBhcHBsaWVkIGluIHRoaXMgbGF5ZXIuIn1dLHJlbGV2YW5jZTo3NyxkZXNjcmlwdGlvbjoiUGFpbnRzIHRoZSBpbnRlcmlvciBvZiB0aGUgZ2l2ZW4gZ3JhcGhpY2FsIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJjb2xvciIsImVudW0iLCJ1cmwiXX0se25hbWU6ImZpbGwtb3BhY2l0eSIscmVsZXZhbmNlOjUyLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG9wYWNpdHkgb2YgdGhlIHBhaW50aW5nIG9wZXJhdGlvbiB1c2VkIHRvIHBhaW50IHRoZSBpbnRlcmlvciB0aGUgY3VycmVudCBvYmplY3QuIixyZXN0cmljdGlvbnM6WyJudW1iZXIoMC0xKSJdfSx7bmFtZToiZmlsbC1ydWxlIix2YWx1ZXM6W3tuYW1lOiJldmVub2RkIixkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUg4oCYaW5zaWRlbmVzc+KAmSBvZiBhIHBvaW50IG9uIHRoZSBjYW52YXMgYnkgZHJhd2luZyBhIHJheSBmcm9tIHRoYXQgcG9pbnQgdG8gaW5maW5pdHkgaW4gYW55IGRpcmVjdGlvbiBhbmQgY291bnRpbmcgdGhlIG51bWJlciBvZiBwYXRoIHNlZ21lbnRzIGZyb20gdGhlIGdpdmVuIHNoYXBlIHRoYXQgdGhlIHJheSBjcm9zc2VzLiJ9LHtuYW1lOiJub256ZXJvIixkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUg4oCYaW5zaWRlbmVzc+KAmSBvZiBhIHBvaW50IG9uIHRoZSBjYW52YXMgYnkgZHJhd2luZyBhIHJheSBmcm9tIHRoYXQgcG9pbnQgdG8gaW5maW5pdHkgaW4gYW55IGRpcmVjdGlvbiBhbmQgdGhlbiBleGFtaW5pbmcgdGhlIHBsYWNlcyB3aGVyZSBhIHNlZ21lbnQgb2YgdGhlIHNoYXBlIGNyb3NzZXMgdGhlIHJheS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhlIGFsZ29yaXRobSAob3Igd2luZGluZyBydWxlKSB3aGljaCBpcyB0byBiZSB1c2VkIHRvIGRldGVybWluZSB3aGF0IHBhcnRzIG9mIHRoZSBjYW52YXMgYXJlIGluY2x1ZGVkIGluc2lkZSB0aGUgc2hhcGUuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmaWx0ZXIiLGJyb3dzZXJzOlsiRTEyIiwiRkYzNSIsIlM5LjEiLCJDNTMiLCJPNDAiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gZmlsdGVyIGVmZmVjdHMgYXJlIGFwcGxpZWQuIn0se25hbWU6ImJsdXIoKSIsZGVzY3JpcHRpb246IkFwcGxpZXMgYSBHYXVzc2lhbiBibHVyIHRvIHRoZSBpbnB1dCBpbWFnZS4ifSx7bmFtZToiYnJpZ2h0bmVzcygpIixkZXNjcmlwdGlvbjoiQXBwbGllcyBhIGxpbmVhciBtdWx0aXBsaWVyIHRvIGlucHV0IGltYWdlLCBtYWtpbmcgaXQgYXBwZWFyIG1vcmUgb3IgbGVzcyBicmlnaHQuIn0se25hbWU6ImNvbnRyYXN0KCkiLGRlc2NyaXB0aW9uOiJBZGp1c3RzIHRoZSBjb250cmFzdCBvZiB0aGUgaW5wdXQuIn0se25hbWU6ImRyb3Atc2hhZG93KCkiLGRlc2NyaXB0aW9uOiJBcHBsaWVzIGEgZHJvcCBzaGFkb3cgZWZmZWN0IHRvIHRoZSBpbnB1dCBpbWFnZS4ifSx7bmFtZToiZ3JheXNjYWxlKCkiLGRlc2NyaXB0aW9uOiJDb252ZXJ0cyB0aGUgaW5wdXQgaW1hZ2UgdG8gZ3JheXNjYWxlLiJ9LHtuYW1lOiJodWUtcm90YXRlKCkiLGRlc2NyaXB0aW9uOiJBcHBsaWVzIGEgaHVlIHJvdGF0aW9uIG9uIHRoZSBpbnB1dCBpbWFnZS4gIn0se25hbWU6ImludmVydCgpIixkZXNjcmlwdGlvbjoiSW52ZXJ0cyB0aGUgc2FtcGxlcyBpbiB0aGUgaW5wdXQgaW1hZ2UuIn0se25hbWU6Im9wYWNpdHkoKSIsZGVzY3JpcHRpb246IkFwcGxpZXMgdHJhbnNwYXJlbmN5IHRvIHRoZSBzYW1wbGVzIGluIHRoZSBpbnB1dCBpbWFnZS4ifSx7bmFtZToic2F0dXJhdGUoKSIsZGVzY3JpcHRpb246IlNhdHVyYXRlcyB0aGUgaW5wdXQgaW1hZ2UuIn0se25hbWU6InNlcGlhKCkiLGRlc2NyaXB0aW9uOiJDb252ZXJ0cyB0aGUgaW5wdXQgaW1hZ2UgdG8gc2VwaWEuIn0se25hbWU6InVybCgpIixicm93c2VyczpbIkUxMiIsIkZGMzUiLCJTOS4xIiwiQzUzIiwiTzQwIl0sZGVzY3JpcHRpb246IkEgZmlsdGVyIHJlZmVyZW5jZSB0byBhIDxmaWx0ZXI+IGVsZW1lbnQuIn1dLHN5bnRheDoibm9uZSB8IDxmaWx0ZXItZnVuY3Rpb24tbGlzdD4iLHJlbGV2YW5jZTo2NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZmlsdGVyIn1dLGRlc2NyaXB0aW9uOiJQcm9jZXNzZXMgYW4gZWxlbWVudOKAmXMgcmVuZGVyaW5nIGJlZm9yZSBpdCBpcyBkaXNwbGF5ZWQgaW4gdGhlIGRvY3VtZW50LCBieSBhcHBseWluZyBvbmUgb3IgbW9yZSBmaWx0ZXIgZWZmZWN0cy4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJ1cmwiXX0se25hbWU6ImZsZXgiLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJSZXRyaWV2ZXMgdGhlIHZhbHVlIG9mIHRoZSBtYWluIHNpemUgcHJvcGVydHkgYXMgdGhlIHVzZWQgJ2ZsZXgtYmFzaXMnLiJ9LHtuYW1lOiJjb250ZW50IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIGF1dG9tYXRpYyBzaXppbmcsIGJhc2VkIG9uIHRoZSBmbGV4IGl0ZW3igJlzIGNvbnRlbnQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJFeHBhbmRzIHRvICcwIDAgYXV0bycuIn1dLHN5bnRheDoibm9uZSB8IFsgPCdmbGV4LWdyb3cnPiA8J2ZsZXgtc2hyaW5rJz4/IHx8IDwnZmxleC1iYXNpcyc+IF0iLHJlbGV2YW5jZTo4MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZmxleCJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBjb21wb25lbnRzIG9mIGEgZmxleGlibGUgbGVuZ3RoOiB0aGUgZmxleCBncm93IGZhY3RvciBhbmQgZmxleCBzaHJpbmsgZmFjdG9yLCBhbmQgdGhlIGZsZXggYmFzaXMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJudW1iZXIiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJmbGV4LWJhc2lzIix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiUmV0cmlldmVzIHRoZSB2YWx1ZSBvZiB0aGUgbWFpbiBzaXplIHByb3BlcnR5IGFzIHRoZSB1c2VkICdmbGV4LWJhc2lzJy4ifSx7bmFtZToiY29udGVudCIsZGVzY3JpcHRpb246IkluZGljYXRlcyBhdXRvbWF0aWMgc2l6aW5nLCBiYXNlZCBvbiB0aGUgZmxleCBpdGVt4oCZcyBjb250ZW50LiJ9XSxzeW50YXg6ImNvbnRlbnQgfCA8J3dpZHRoJz4iLHJlbGV2YW5jZTo2NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZmxleC1iYXNpcyJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgZmxleCBiYXNpcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsIm51bWJlciIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImZsZXgtZGlyZWN0aW9uIix2YWx1ZXM6W3tuYW1lOiJjb2x1bW4iLGRlc2NyaXB0aW9uOiJUaGUgZmxleCBjb250YWluZXLigJlzIG1haW4gYXhpcyBoYXMgdGhlIHNhbWUgb3JpZW50YXRpb24gYXMgdGhlIGJsb2NrIGF4aXMgb2YgdGhlIGN1cnJlbnQgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJjb2x1bW4tcmV2ZXJzZSIsZGVzY3JpcHRpb246IlNhbWUgYXMgJ2NvbHVtbicsIGV4Y2VwdCB0aGUgbWFpbi1zdGFydCBhbmQgbWFpbi1lbmQgZGlyZWN0aW9ucyBhcmUgc3dhcHBlZC4ifSx7bmFtZToicm93IixkZXNjcmlwdGlvbjoiVGhlIGZsZXggY29udGFpbmVy4oCZcyBtYWluIGF4aXMgaGFzIHRoZSBzYW1lIG9yaWVudGF0aW9uIGFzIHRoZSBpbmxpbmUgYXhpcyBvZiB0aGUgY3VycmVudCB3cml0aW5nIG1vZGUuIn0se25hbWU6InJvdy1yZXZlcnNlIixkZXNjcmlwdGlvbjoiU2FtZSBhcyAncm93JywgZXhjZXB0IHRoZSBtYWluLXN0YXJ0IGFuZCBtYWluLWVuZCBkaXJlY3Rpb25zIGFyZSBzd2FwcGVkLiJ9XSxzeW50YXg6InJvdyB8IHJvdy1yZXZlcnNlIHwgY29sdW1uIHwgY29sdW1uLXJldmVyc2UiLHJlbGV2YW5jZTo4MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZmxleC1kaXJlY3Rpb24ifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgZmxleCBpdGVtcyBhcmUgcGxhY2VkIGluIHRoZSBmbGV4IGNvbnRhaW5lciwgYnkgc2V0dGluZyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBmbGV4IGNvbnRhaW5lcuKAmXMgbWFpbiBheGlzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZmxleC1mbG93Iix2YWx1ZXM6W3tuYW1lOiJjb2x1bW4iLGRlc2NyaXB0aW9uOiJUaGUgZmxleCBjb250YWluZXLigJlzIG1haW4gYXhpcyBoYXMgdGhlIHNhbWUgb3JpZW50YXRpb24gYXMgdGhlIGJsb2NrIGF4aXMgb2YgdGhlIGN1cnJlbnQgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJjb2x1bW4tcmV2ZXJzZSIsZGVzY3JpcHRpb246IlNhbWUgYXMgJ2NvbHVtbicsIGV4Y2VwdCB0aGUgbWFpbi1zdGFydCBhbmQgbWFpbi1lbmQgZGlyZWN0aW9ucyBhcmUgc3dhcHBlZC4ifSx7bmFtZToibm93cmFwIixkZXNjcmlwdGlvbjoiVGhlIGZsZXggY29udGFpbmVyIGlzIHNpbmdsZS1saW5lLiJ9LHtuYW1lOiJyb3ciLGRlc2NyaXB0aW9uOiJUaGUgZmxleCBjb250YWluZXLigJlzIG1haW4gYXhpcyBoYXMgdGhlIHNhbWUgb3JpZW50YXRpb24gYXMgdGhlIGlubGluZSBheGlzIG9mIHRoZSBjdXJyZW50IHdyaXRpbmcgbW9kZS4ifSx7bmFtZToicm93LXJldmVyc2UiLGRlc2NyaXB0aW9uOiJTYW1lIGFzICdyb3cnLCBleGNlcHQgdGhlIG1haW4tc3RhcnQgYW5kIG1haW4tZW5kIGRpcmVjdGlvbnMgYXJlIHN3YXBwZWQuIn0se25hbWU6IndyYXAiLGRlc2NyaXB0aW9uOiJUaGUgZmxleGJveCBpcyBtdWx0aS1saW5lLiJ9LHtuYW1lOiJ3cmFwLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJTYW1lIGFzICd3cmFwJywgZXhjZXB0IHRoZSBjcm9zcy1zdGFydCBhbmQgY3Jvc3MtZW5kIGRpcmVjdGlvbnMgYXJlIHN3YXBwZWQuIn1dLHN5bnRheDoiPCdmbGV4LWRpcmVjdGlvbic+IHx8IDwnZmxleC13cmFwJz4iLHJlbGV2YW5jZTo2MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZmxleC1mbG93In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGZsZXhib3ggaXRlbXMgYXJlIHBsYWNlZCBpbiB0aGUgZmxleGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImZsZXgtZ3JvdyIsc3ludGF4OiI8bnVtYmVyPiIscmVsZXZhbmNlOjc1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mbGV4LWdyb3cifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIGZsZXggZ3JvdyBmYWN0b3IuIE5lZ2F0aXZlIG51bWJlcnMgYXJlIGludmFsaWQuIixyZXN0cmljdGlvbnM6WyJudW1iZXIiXX0se25hbWU6ImZsZXgtc2hyaW5rIixzeW50YXg6IjxudW1iZXI+IixyZWxldmFuY2U6NzQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZsZXgtc2hyaW5rIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBmbGV4IHNocmluayBmYWN0b3IuIE5lZ2F0aXZlIG51bWJlcnMgYXJlIGludmFsaWQuIixyZXN0cmljdGlvbnM6WyJudW1iZXIiXX0se25hbWU6ImZsZXgtd3JhcCIsdmFsdWVzOlt7bmFtZToibm93cmFwIixkZXNjcmlwdGlvbjoiVGhlIGZsZXggY29udGFpbmVyIGlzIHNpbmdsZS1saW5lLiJ9LHtuYW1lOiJ3cmFwIixkZXNjcmlwdGlvbjoiVGhlIGZsZXhib3ggaXMgbXVsdGktbGluZS4ifSx7bmFtZToid3JhcC1yZXZlcnNlIixkZXNjcmlwdGlvbjoiU2FtZSBhcyAnd3JhcCcsIGV4Y2VwdCB0aGUgY3Jvc3Mtc3RhcnQgYW5kIGNyb3NzLWVuZCBkaXJlY3Rpb25zIGFyZSBzd2FwcGVkLiJ9XSxzeW50YXg6Im5vd3JhcCB8IHdyYXAgfCB3cmFwLXJldmVyc2UiLHJlbGV2YW5jZTo3OSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZmxleC13cmFwIn1dLGRlc2NyaXB0aW9uOiJDb250cm9scyB3aGV0aGVyIHRoZSBmbGV4IGNvbnRhaW5lciBpcyBzaW5nbGUtbGluZSBvciBtdWx0aS1saW5lLCBhbmQgdGhlIGRpcmVjdGlvbiBvZiB0aGUgY3Jvc3MtYXhpcywgd2hpY2ggZGV0ZXJtaW5lcyB0aGUgZGlyZWN0aW9uIG5ldyBsaW5lcyBhcmUgc3RhY2tlZCBpbi4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImZsb2F0Iix2YWx1ZXM6W3tuYW1lOiJpbmxpbmUtZW5kIixkZXNjcmlwdGlvbjoiQSBrZXl3b3JkIGluZGljYXRpbmcgdGhhdCB0aGUgZWxlbWVudCBtdXN0IGZsb2F0IG9uIHRoZSBlbmQgc2lkZSBvZiBpdHMgY29udGFpbmluZyBibG9jay4gVGhhdCBpcyB0aGUgcmlnaHQgc2lkZSB3aXRoIGx0ciBzY3JpcHRzLCBhbmQgdGhlIGxlZnQgc2lkZSB3aXRoIHJ0bCBzY3JpcHRzLiJ9LHtuYW1lOiJpbmxpbmUtc3RhcnQiLGRlc2NyaXB0aW9uOiJBIGtleXdvcmQgaW5kaWNhdGluZyB0aGF0IHRoZSBlbGVtZW50IG11c3QgZmxvYXQgb24gdGhlIHN0YXJ0IHNpZGUgb2YgaXRzIGNvbnRhaW5pbmcgYmxvY2suIFRoYXQgaXMgdGhlIGxlZnQgc2lkZSB3aXRoIGx0ciBzY3JpcHRzLCBhbmQgdGhlIHJpZ2h0IHNpZGUgd2l0aCBydGwgc2NyaXB0cy4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGdlbmVyYXRlcyBhIGJsb2NrIGJveCB0aGF0IGlzIGZsb2F0ZWQgdG8gdGhlIGxlZnQuIENvbnRlbnQgZmxvd3Mgb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGJveCwgc3RhcnRpbmcgYXQgdGhlIHRvcCAoc3ViamVjdCB0byB0aGUgJ2NsZWFyJyBwcm9wZXJ0eSkuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgYm94IGlzIG5vdCBmbG9hdGVkLiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IlNpbWlsYXIgdG8gJ2xlZnQnLCBleGNlcHQgdGhlIGJveCBpcyBmbG9hdGVkIHRvIHRoZSByaWdodCwgYW5kIGNvbnRlbnQgZmxvd3Mgb24gdGhlIGxlZnQgc2lkZSBvZiB0aGUgYm94LCBzdGFydGluZyBhdCB0aGUgdG9wLiJ9XSxzeW50YXg6ImxlZnQgfCByaWdodCB8IG5vbmUgfCBpbmxpbmUtc3RhcnQgfCBpbmxpbmUtZW5kIixyZWxldmFuY2U6OTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2Zsb2F0In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGEgYm94IHNob3VsZCBiZSBmbG9hdGVkLiBJdCBtYXkgYmUgc2V0IGZvciBhbnkgZWxlbWVudCwgYnV0IG9ubHkgYXBwbGllcyB0byBlbGVtZW50cyB0aGF0IGdlbmVyYXRlIGJveGVzIHRoYXQgYXJlIG5vdCBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmbG9vZC1jb2xvciIsYnJvd3NlcnM6WyJFIiwiQzUiLCJGRjMiLCJJRTEwIiwiTzkiLCJTNiJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHdoYXQgY29sb3IgdG8gdXNlIHRvIGZsb29kIHRoZSBjdXJyZW50IGZpbHRlciBwcmltaXRpdmUgc3VicmVnaW9uLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6ImZsb29kLW9wYWNpdHkiLGJyb3dzZXJzOlsiRSIsIkM1IiwiRkYzIiwiSUUxMCIsIk85IiwiUzYiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkluZGljYXRlcyB3aGF0IG9wYWNpdHkgdG8gdXNlIHRvIGZsb29kIHRoZSBjdXJyZW50IGZpbHRlciBwcmltaXRpdmUgc3VicmVnaW9uLiIscmVzdHJpY3Rpb25zOlsibnVtYmVyKDAtMSkiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJmb250Iix2YWx1ZXM6W3tuYW1lOiIxMDAiLGRlc2NyaXB0aW9uOiJUaGluIn0se25hbWU6IjIwMCIsZGVzY3JpcHRpb246IkV4dHJhIExpZ2h0IChVbHRyYSBMaWdodCkifSx7bmFtZToiMzAwIixkZXNjcmlwdGlvbjoiTGlnaHQifSx7bmFtZToiNDAwIixkZXNjcmlwdGlvbjoiTm9ybWFsIn0se25hbWU6IjUwMCIsZGVzY3JpcHRpb246Ik1lZGl1bSJ9LHtuYW1lOiI2MDAiLGRlc2NyaXB0aW9uOiJTZW1pIEJvbGQgKERlbWkgQm9sZCkifSx7bmFtZToiNzAwIixkZXNjcmlwdGlvbjoiQm9sZCJ9LHtuYW1lOiI4MDAiLGRlc2NyaXB0aW9uOiJFeHRyYSBCb2xkIChVbHRyYSBCb2xkKSJ9LHtuYW1lOiI5MDAiLGRlc2NyaXB0aW9uOiJCbGFjayAoSGVhdnkpIn0se25hbWU6ImJvbGQiLGRlc2NyaXB0aW9uOiJTYW1lIGFzIDcwMCJ9LHtuYW1lOiJib2xkZXIiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHdlaWdodCBvZiB0aGUgZmFjZSBib2xkZXIgdGhhbiB0aGUgaW5oZXJpdGVkIHZhbHVlLiJ9LHtuYW1lOiJjYXB0aW9uIixkZXNjcmlwdGlvbjoiVGhlIGZvbnQgdXNlZCBmb3IgY2FwdGlvbmVkIGNvbnRyb2xzIChlLmcuLCBidXR0b25zLCBkcm9wLWRvd25zLCBldGMuKS4ifSx7bmFtZToiaWNvbiIsZGVzY3JpcHRpb246IlRoZSBmb250IHVzZWQgdG8gbGFiZWwgaWNvbnMuIn0se25hbWU6Iml0YWxpYyIsZGVzY3JpcHRpb246IlNlbGVjdHMgYSBmb250IHRoYXQgaXMgbGFiZWxlZCAnaXRhbGljJywgb3IsIGlmIHRoYXQgaXMgbm90IGF2YWlsYWJsZSwgb25lIGxhYmVsZWQgJ29ibGlxdWUnLiJ9LHtuYW1lOiJsYXJnZSJ9LHtuYW1lOiJsYXJnZXIifSx7bmFtZToibGlnaHRlciIsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgd2VpZ2h0IG9mIHRoZSBmYWNlIGxpZ2h0ZXIgdGhhbiB0aGUgaW5oZXJpdGVkIHZhbHVlLiJ9LHtuYW1lOiJtZWRpdW0ifSx7bmFtZToibWVudSIsZGVzY3JpcHRpb246IlRoZSBmb250IHVzZWQgaW4gbWVudXMgKGUuZy4sIGRyb3Bkb3duIG1lbnVzIGFuZCBtZW51IGxpc3RzKS4ifSx7bmFtZToibWVzc2FnZS1ib3giLGRlc2NyaXB0aW9uOiJUaGUgZm9udCB1c2VkIGluIGRpYWxvZyBib3hlcy4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgZmFjZSB0aGF0IGlzIG5vdCBsYWJlbGVkIGFzIGEgc21hbGwtY2FwcyBmb250LiJ9LHtuYW1lOiJvYmxpcXVlIixkZXNjcmlwdGlvbjoiU2VsZWN0cyBhIGZvbnQgdGhhdCBpcyBsYWJlbGVkICdvYmxpcXVlJy4ifSx7bmFtZToic21hbGwifSx7bmFtZToic21hbGwtY2FwcyIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGZvbnQgdGhhdCBpcyBsYWJlbGVkIGFzIGEgc21hbGwtY2FwcyBmb250LiBJZiBhIGdlbnVpbmUgc21hbGwtY2FwcyBmb250IGlzIG5vdCBhdmFpbGFibGUsIHVzZXIgYWdlbnRzIHNob3VsZCBzaW11bGF0ZSBhIHNtYWxsLWNhcHMgZm9udC4ifSx7bmFtZToic21hbGwtY2FwdGlvbiIsZGVzY3JpcHRpb246IlRoZSBmb250IHVzZWQgZm9yIGxhYmVsaW5nIHNtYWxsIGNvbnRyb2xzLiJ9LHtuYW1lOiJzbWFsbGVyIn0se25hbWU6InN0YXR1cy1iYXIiLGRlc2NyaXB0aW9uOiJUaGUgZm9udCB1c2VkIGluIHdpbmRvdyBzdGF0dXMgYmFycy4ifSx7bmFtZToieC1sYXJnZSJ9LHtuYW1lOiJ4LXNtYWxsIn0se25hbWU6Inh4LWxhcmdlIn0se25hbWU6Inh4LXNtYWxsIn1dLHN5bnRheDoiWyBbIDwnZm9udC1zdHlsZSc+IHx8IDxmb250LXZhcmlhbnQtY3NzMjE+IHx8IDwnZm9udC13ZWlnaHQnPiB8fCA8J2ZvbnQtc3RyZXRjaCc+IF0/IDwnZm9udC1zaXplJz4gWyAvIDwnbGluZS1oZWlnaHQnPiBdPyA8J2ZvbnQtZmFtaWx5Jz4gXSB8IGNhcHRpb24gfCBpY29uIHwgbWVudSB8IG1lc3NhZ2UtYm94IHwgc21hbGwtY2FwdGlvbiB8IHN0YXR1cy1iYXIiLHJlbGV2YW5jZTo4NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udCJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nICdmb250LXN0eWxlJywgJ2ZvbnQtdmFyaWFudCcsICdmb250LXdlaWdodCcsICdmb250LXNpemUnLCAnbGluZS1oZWlnaHQnLCBhbmQgJ2ZvbnQtZmFtaWx5JywgYXQgdGhlIHNhbWUgcGxhY2UgaW4gdGhlIHN0eWxlIHNoZWV0LiBUaGUgc3ludGF4IG9mIHRoaXMgcHJvcGVydHkgaXMgYmFzZWQgb24gYSB0cmFkaXRpb25hbCB0eXBvZ3JhcGhpY2FsIHNob3J0aGFuZCBub3RhdGlvbiB0byBzZXQgbXVsdGlwbGUgcHJvcGVydGllcyByZWxhdGVkIHRvIGZvbnRzLiIscmVzdHJpY3Rpb25zOlsiZm9udCJdfSx7bmFtZToiZm9udC1mYW1pbHkiLHZhbHVlczpbe25hbWU6Ii1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBPeHlnZW4sIFVidW50dSwgQ2FudGFyZWxsLCAnT3BlbiBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgc2Fucy1zZXJpZiJ9LHtuYW1lOiJBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIn0se25hbWU6IkNhbWJyaWEsIENvY2hpbiwgR2VvcmdpYSwgVGltZXMsICdUaW1lcyBOZXcgUm9tYW4nLCBzZXJpZiJ9LHtuYW1lOiInQ291cmllciBOZXcnLCBDb3VyaWVyLCBtb25vc3BhY2UifSx7bmFtZToiY3Vyc2l2ZSJ9LHtuYW1lOiJmYW50YXN5In0se25hbWU6IidGcmFua2xpbiBHb3RoaWMgTWVkaXVtJywgJ0FyaWFsIE5hcnJvdycsIEFyaWFsLCBzYW5zLXNlcmlmIn0se25hbWU6Ikdlb3JnaWEsICdUaW1lcyBOZXcgUm9tYW4nLCBUaW1lcywgc2VyaWYifSx7bmFtZToiJ0dpbGwgU2FucycsICdHaWxsIFNhbnMgTVQnLCBDYWxpYnJpLCAnVHJlYnVjaGV0IE1TJywgc2Fucy1zZXJpZiJ9LHtuYW1lOiJJbXBhY3QsIEhhZXR0ZW5zY2h3ZWlsZXIsICdBcmlhbCBOYXJyb3cgQm9sZCcsIHNhbnMtc2VyaWYifSx7bmFtZToiJ0x1Y2lkYSBTYW5zJywgJ0x1Y2lkYSBTYW5zIFJlZ3VsYXInLCAnTHVjaWRhIEdyYW5kZScsICdMdWNpZGEgU2FucyBVbmljb2RlJywgR2VuZXZhLCBWZXJkYW5hLCBzYW5zLXNlcmlmIn0se25hbWU6Im1vbm9zcGFjZSJ9LHtuYW1lOiJzYW5zLXNlcmlmIn0se25hbWU6IidTZWdvZSBVSScsIFRhaG9tYSwgR2VuZXZhLCBWZXJkYW5hLCBzYW5zLXNlcmlmIn0se25hbWU6InNlcmlmIn0se25hbWU6IidUaW1lcyBOZXcgUm9tYW4nLCBUaW1lcywgc2VyaWYifSx7bmFtZToiJ1RyZWJ1Y2hldCBNUycsICdMdWNpZGEgU2FucyBVbmljb2RlJywgJ0x1Y2lkYSBHcmFuZGUnLCAnTHVjaWRhIFNhbnMnLCBBcmlhbCwgc2Fucy1zZXJpZiJ9LHtuYW1lOiJWZXJkYW5hLCBHZW5ldmEsIFRhaG9tYSwgc2Fucy1zZXJpZiJ9XSxzeW50YXg6IjxmYW1pbHktbmFtZT4iLHJlbGV2YW5jZTo5NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC1mYW1pbHkifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHByaW9yaXRpemVkIGxpc3Qgb2YgZm9udCBmYW1pbHkgbmFtZXMgb3IgZ2VuZXJpYyBmYW1pbHkgbmFtZXMuIEEgdXNlciBhZ2VudCBpdGVyYXRlcyB0aHJvdWdoIHRoZSBsaXN0IG9mIGZhbWlseSBuYW1lcyB1bnRpbCBpdCBtYXRjaGVzIGFuIGF2YWlsYWJsZSBmb250IHRoYXQgY29udGFpbnMgYSBnbHlwaCBmb3IgdGhlIGNoYXJhY3RlciB0byBiZSByZW5kZXJlZC4iLHJlc3RyaWN0aW9uczpbImZvbnQiXX0se25hbWU6ImZvbnQtZmVhdHVyZS1zZXR0aW5ncyIsdmFsdWVzOlt7bmFtZTonImFhbHQiJyxkZXNjcmlwdGlvbjoiQWNjZXNzIEFsbCBBbHRlcm5hdGVzLiJ9LHtuYW1lOiciYWJ2ZiInLGRlc2NyaXB0aW9uOiJBYm92ZS1iYXNlIEZvcm1zLiBSZXF1aXJlZCBpbiBLaG1lciBzY3JpcHQuIn0se25hbWU6JyJhYnZtIicsZGVzY3JpcHRpb246IkFib3ZlLWJhc2UgTWFyayBQb3NpdGlvbmluZy4gUmVxdWlyZWQgaW4gSW5kaWMgc2NyaXB0cy4ifSx7bmFtZTonImFidnMiJyxkZXNjcmlwdGlvbjoiQWJvdmUtYmFzZSBTdWJzdGl0dXRpb25zLiBSZXF1aXJlZCBpbiBJbmRpYyBzY3JpcHRzLiJ9LHtuYW1lOiciYWZyYyInLGRlc2NyaXB0aW9uOiJBbHRlcm5hdGl2ZSBGcmFjdGlvbnMuIn0se25hbWU6JyJha2huIicsZGVzY3JpcHRpb246IkFraGFuZC4gUmVxdWlyZWQgaW4gbW9zdCBJbmRpYyBzY3JpcHRzLiJ9LHtuYW1lOiciYmx3ZiInLGRlc2NyaXB0aW9uOiJCZWxvdy1iYXNlIEZvcm0uIFJlcXVpcmVkIGluIGEgbnVtYmVyIG9mIEluZGljIHNjcmlwdHMuIn0se25hbWU6JyJibHdtIicsZGVzY3JpcHRpb246IkJlbG93LWJhc2UgTWFyayBQb3NpdGlvbmluZy4gUmVxdWlyZWQgaW4gSW5kaWMgc2NyaXB0cy4ifSx7bmFtZTonImJsd3MiJyxkZXNjcmlwdGlvbjoiQmVsb3ctYmFzZSBTdWJzdGl0dXRpb25zLiBSZXF1aXJlZCBpbiBJbmRpYyBzY3JpcHRzLiJ9LHtuYW1lOiciY2FsdCInLGRlc2NyaXB0aW9uOiJDb250ZXh0dWFsIEFsdGVybmF0ZXMuIn0se25hbWU6JyJjYXNlIicsZGVzY3JpcHRpb246IkNhc2UtU2Vuc2l0aXZlIEZvcm1zLiBBcHBsaWVzIG9ubHkgdG8gRXVyb3BlYW4gc2NyaXB0czsgcGFydGljdWxhcmx5IHByb21pbmVudCBpbiBTcGFuaXNoLWxhbmd1YWdlIHNldHRpbmcuIn0se25hbWU6JyJjY21wIicsZGVzY3JpcHRpb246IkdseXBoIENvbXBvc2l0aW9uL0RlY29tcG9zaXRpb24uIn0se25hbWU6JyJjZmFyIicsZGVzY3JpcHRpb246IkNvbmp1bmN0IEZvcm0gQWZ0ZXIgUm8uIFJlcXVpcmVkIGluIEtobWVyIHNjcmlwdHMuIn0se25hbWU6JyJjamN0IicsZGVzY3JpcHRpb246IkNvbmp1bmN0IEZvcm1zLiBSZXF1aXJlZCBpbiBJbmRpYyBzY3JpcHRzIHRoYXQgc2hvdyBzaW1pbGFyaXR5IHRvIERldmFuYWdhcmkuIn0se25hbWU6JyJjbGlnIicsZGVzY3JpcHRpb246IkNvbnRleHR1YWwgTGlnYXR1cmVzLiJ9LHtuYW1lOiciY3BjdCInLGRlc2NyaXB0aW9uOiJDZW50ZXJlZCBDSksgUHVuY3R1YXRpb24uIFVzZWQgcHJpbWFyaWx5IGluIENoaW5lc2UgZm9udHMuIn0se25hbWU6JyJjcHNwIicsZGVzY3JpcHRpb246IkNhcGl0YWwgU3BhY2luZy4gU2hvdWxkIG5vdCBiZSB1c2VkIGluIGNvbm5lY3Rpbmcgc2NyaXB0cyAoZS5nLiBtb3N0IEFyYWJpYykuIn0se25hbWU6JyJjc3doIicsZGVzY3JpcHRpb246IkNvbnRleHR1YWwgU3dhc2guIn0se25hbWU6JyJjdXJzIicsZGVzY3JpcHRpb246IkN1cnNpdmUgUG9zaXRpb25pbmcuIENhbiBiZSB1c2VkIGluIGFueSBjdXJzaXZlIHNjcmlwdC4ifSx7bmFtZTonImMycGMiJyxkZXNjcmlwdGlvbjoiUGV0aXRlIENhcGl0YWxzIEZyb20gQ2FwaXRhbHMuIEFwcGxpZXMgb25seSB0byBiaWNhbWVyYWwgc2NyaXB0cy4ifSx7bmFtZTonImMyc2MiJyxkZXNjcmlwdGlvbjoiU21hbGwgQ2FwaXRhbHMgRnJvbSBDYXBpdGFscy4gQXBwbGllcyBvbmx5IHRvIGJpY2FtZXJhbCBzY3JpcHRzLiJ9LHtuYW1lOiciZGlzdCInLGRlc2NyaXB0aW9uOiJEaXN0YW5jZXMuIFJlcXVpcmVkIGluIEluZGljIHNjcmlwdHMuIn0se25hbWU6JyJkbGlnIicsZGVzY3JpcHRpb246IkRpc2NyZXRpb25hcnkgbGlnYXR1cmVzLiJ9LHtuYW1lOiciZG5vbSInLGRlc2NyaXB0aW9uOiJEZW5vbWluYXRvcnMuIn0se25hbWU6JyJkdGxzIicsZGVzY3JpcHRpb246IkRvdGxlc3MgRm9ybXMuIEFwcGxpZWQgdG8gbWF0aCBmb3JtdWxhIGxheW91dC4ifSx7bmFtZTonImV4cHQiJyxkZXNjcmlwdGlvbjoiRXhwZXJ0IEZvcm1zLiBBcHBsaWVzIG9ubHkgdG8gSmFwYW5lc2UuIn0se25hbWU6JyJmYWx0IicsZGVzY3JpcHRpb246IkZpbmFsIEdseXBoIG9uIExpbmUgQWx0ZXJuYXRlcy4gQ2FuIGJlIHVzZWQgaW4gYW55IGN1cnNpdmUgc2NyaXB0LiJ9LHtuYW1lOiciZmluMiInLGRlc2NyaXB0aW9uOiJUZXJtaW5hbCBGb3JtICMyLiBVc2VkIG9ubHkgd2l0aCB0aGUgU3lyaWFjIHNjcmlwdC4ifSx7bmFtZTonImZpbjMiJyxkZXNjcmlwdGlvbjoiVGVybWluYWwgRm9ybSAjMy4gVXNlZCBvbmx5IHdpdGggdGhlIFN5cmlhYyBzY3JpcHQuIn0se25hbWU6JyJmaW5hIicsZGVzY3JpcHRpb246IlRlcm1pbmFsIEZvcm1zLiBDYW4gYmUgdXNlZCBpbiBhbnkgYWxwaGFiZXRpYyBzY3JpcHQuIn0se25hbWU6JyJmbGFjIicsZGVzY3JpcHRpb246IkZsYXR0ZW5lZCBhc2NlbnQgZm9ybXMuIEFwcGxpZWQgdG8gbWF0aCBmb3JtdWxhIGxheW91dC4ifSx7bmFtZTonImZyYWMiJyxkZXNjcmlwdGlvbjoiRnJhY3Rpb25zLiJ9LHtuYW1lOiciZndpZCInLGRlc2NyaXB0aW9uOiJGdWxsIFdpZHRocy4gQXBwbGllcyB0byBhbnkgc2NyaXB0IHdoaWNoIGNhbiB1c2UgbW9ub3NwYWNlZCBmb3Jtcy4ifSx7bmFtZTonImhhbGYiJyxkZXNjcmlwdGlvbjoiSGFsZiBGb3Jtcy4gUmVxdWlyZWQgaW4gSW5kaWMgc2NyaXB0cyB0aGF0IHNob3cgc2ltaWxhcml0eSB0byBEZXZhbmFnYXJpLiJ9LHtuYW1lOiciaGFsbiInLGRlc2NyaXB0aW9uOiJIYWxhbnQgRm9ybXMuIFJlcXVpcmVkIGluIEluZGljIHNjcmlwdHMuIn0se25hbWU6JyJoYWx0IicsZGVzY3JpcHRpb246IkFsdGVybmF0ZSBIYWxmIFdpZHRocy4gVXNlZCBvbmx5IGluIENKS1YgZm9udHMuIn0se25hbWU6JyJoaXN0IicsZGVzY3JpcHRpb246Ikhpc3RvcmljYWwgRm9ybXMuIn0se25hbWU6JyJoa25hIicsZGVzY3JpcHRpb246Ikhvcml6b250YWwgS2FuYSBBbHRlcm5hdGVzLiBBcHBsaWVzIG9ubHkgdG8gZm9udHMgdGhhdCBzdXBwb3J0IGthbmEgKGhpcmFnYW5hIGFuZCBrYXRha2FuYSkuIn0se25hbWU6JyJobGlnIicsZGVzY3JpcHRpb246Ikhpc3RvcmljYWwgTGlnYXR1cmVzLiJ9LHtuYW1lOiciaG5nbCInLGRlc2NyaXB0aW9uOiJIYW5ndWwuIEtvcmVhbiBvbmx5LiJ9LHtuYW1lOiciaG9qbyInLGRlc2NyaXB0aW9uOiJIb2pvIEthbmppIEZvcm1zIChKSVMgWCAwMjEyLTE5OTAgS2FuamkgRm9ybXMpLiBVc2VkIG9ubHkgd2l0aCBLYW5qaSBzY3JpcHQuIn0se25hbWU6JyJod2lkIicsZGVzY3JpcHRpb246IkhhbGYgV2lkdGhzLiBHZW5lcmFsbHkgdXNlZCBvbmx5IGluIENKS1YgZm9udHMuIn0se25hbWU6JyJpbml0IicsZGVzY3JpcHRpb246IkluaXRpYWwgRm9ybXMuIENhbiBiZSB1c2VkIGluIGFueSBhbHBoYWJldGljIHNjcmlwdC4ifSx7bmFtZTonImlzb2wiJyxkZXNjcmlwdGlvbjoiSXNvbGF0ZWQgRm9ybXMuIENhbiBiZSB1c2VkIGluIGFueSBjdXJzaXZlIHNjcmlwdC4ifSx7bmFtZTonIml0YWwiJyxkZXNjcmlwdGlvbjoiSXRhbGljcy4gQXBwbGllcyBtb3N0bHkgdG8gTGF0aW47IG5vdGUgdGhhdCBtYW55IG5vbi1MYXRpbiBmb250cyBjb250YWluIExhdGluIGFzIHdlbGwuIn0se25hbWU6JyJqYWx0IicsZGVzY3JpcHRpb246Ikp1c3RpZmljYXRpb24gQWx0ZXJuYXRlcy4gQ2FuIGJlIHVzZWQgaW4gYW55IGN1cnNpdmUgc2NyaXB0LiJ9LHtuYW1lOicianA3OCInLGRlc2NyaXB0aW9uOiJKSVM3OCBGb3Jtcy4gQXBwbGllcyBvbmx5IHRvIEphcGFuZXNlLiJ9LHtuYW1lOicianA4MyInLGRlc2NyaXB0aW9uOiJKSVM4MyBGb3Jtcy4gQXBwbGllcyBvbmx5IHRvIEphcGFuZXNlLiJ9LHtuYW1lOicianA5MCInLGRlc2NyaXB0aW9uOiJKSVM5MCBGb3Jtcy4gQXBwbGllcyBvbmx5IHRvIEphcGFuZXNlLiJ9LHtuYW1lOicianAwNCInLGRlc2NyaXB0aW9uOiJKSVMyMDA0IEZvcm1zLiBBcHBsaWVzIG9ubHkgdG8gSmFwYW5lc2UuIn0se25hbWU6JyJrZXJuIicsZGVzY3JpcHRpb246Iktlcm5pbmcuIn0se25hbWU6JyJsZmJkIicsZGVzY3JpcHRpb246IkxlZnQgQm91bmRzLiJ9LHtuYW1lOicibGlnYSInLGRlc2NyaXB0aW9uOiJTdGFuZGFyZCBMaWdhdHVyZXMuIn0se25hbWU6JyJsam1vIicsZGVzY3JpcHRpb246IkxlYWRpbmcgSmFtbyBGb3Jtcy4gUmVxdWlyZWQgZm9yIEhhbmd1bCBzY3JpcHQgd2hlbiBBbmNpZW50IEhhbmd1bCB3cml0aW5nIHN5c3RlbSBpcyBzdXBwb3J0ZWQuIn0se25hbWU6JyJsbnVtIicsZGVzY3JpcHRpb246IkxpbmluZyBGaWd1cmVzLiJ9LHtuYW1lOicibG9jbCInLGRlc2NyaXB0aW9uOiJMb2NhbGl6ZWQgRm9ybXMuIn0se25hbWU6JyJsdHJhIicsZGVzY3JpcHRpb246IkxlZnQtdG8tcmlnaHQgZ2x5cGggYWx0ZXJuYXRlcy4ifSx7bmFtZTonImx0cm0iJyxkZXNjcmlwdGlvbjoiTGVmdC10by1yaWdodCBtaXJyb3JlZCBmb3Jtcy4ifSx7bmFtZTonIm1hcmsiJyxkZXNjcmlwdGlvbjoiTWFyayBQb3NpdGlvbmluZy4ifSx7bmFtZTonIm1lZDIiJyxkZXNjcmlwdGlvbjoiTWVkaWFsIEZvcm0gIzIuIFVzZWQgb25seSB3aXRoIHRoZSBTeXJpYWMgc2NyaXB0LiJ9LHtuYW1lOicibWVkaSInLGRlc2NyaXB0aW9uOiJNZWRpYWwgRm9ybXMuIn0se25hbWU6JyJtZ3JrIicsZGVzY3JpcHRpb246Ik1hdGhlbWF0aWNhbCBHcmVlay4ifSx7bmFtZTonIm1rbWsiJyxkZXNjcmlwdGlvbjoiTWFyayB0byBNYXJrIFBvc2l0aW9uaW5nLiJ9LHtuYW1lOicibmFsdCInLGRlc2NyaXB0aW9uOiJBbHRlcm5hdGUgQW5ub3RhdGlvbiBGb3Jtcy4ifSx7bmFtZTonIm5sY2siJyxkZXNjcmlwdGlvbjoiTkxDIEthbmppIEZvcm1zLiBVc2VkIG9ubHkgd2l0aCBLYW5qaSBzY3JpcHQuIn0se25hbWU6JyJudWt0IicsZGVzY3JpcHRpb246Ik51a3RhIEZvcm1zLiBSZXF1aXJlZCBpbiBJbmRpYyBzY3JpcHRzLi4ifSx7bmFtZTonIm51bXIiJyxkZXNjcmlwdGlvbjoiTnVtZXJhdG9ycy4ifSx7bmFtZTonIm9udW0iJyxkZXNjcmlwdGlvbjoiT2xkc3R5bGUgRmlndXJlcy4ifSx7bmFtZTonIm9wYmQiJyxkZXNjcmlwdGlvbjoiT3B0aWNhbCBCb3VuZHMuIn0se25hbWU6JyJvcmRuIicsZGVzY3JpcHRpb246Ik9yZGluYWxzLiBBcHBsaWVzIG1vc3RseSB0byBMYXRpbiBzY3JpcHQuIn0se25hbWU6JyJvcm5tIicsZGVzY3JpcHRpb246Ik9ybmFtZW50cy4ifSx7bmFtZTonInBhbHQiJyxkZXNjcmlwdGlvbjoiUHJvcG9ydGlvbmFsIEFsdGVybmF0ZSBXaWR0aHMuIFVzZWQgbW9zdGx5IGluIENKS1YgZm9udHMuIn0se25hbWU6JyJwY2FwIicsZGVzY3JpcHRpb246IlBldGl0ZSBDYXBpdGFscy4ifSx7bmFtZTonInBrbmEiJyxkZXNjcmlwdGlvbjoiUHJvcG9ydGlvbmFsIEthbmEuIEdlbmVyYWxseSB1c2VkIG9ubHkgaW4gSmFwYW5lc2UgZm9udHMuIn0se25hbWU6JyJwbnVtIicsZGVzY3JpcHRpb246IlByb3BvcnRpb25hbCBGaWd1cmVzLiJ9LHtuYW1lOicicHJlZiInLGRlc2NyaXB0aW9uOiJQcmUtYmFzZSBGb3Jtcy4gUmVxdWlyZWQgaW4gS2htZXIgYW5kIE15YW5tYXIgKEJ1cm1lc2UpIHNjcmlwdHMgYW5kIHNvdXRoZXJuIEluZGljIHNjcmlwdHMgdGhhdCBtYXkgZGlzcGxheSBhIHByZS1iYXNlIGZvcm0gb2YgUmEuIn0se25hbWU6JyJwcmVzIicsZGVzY3JpcHRpb246IlByZS1iYXNlIFN1YnN0aXR1dGlvbnMuIFJlcXVpcmVkIGluIEluZGljIHNjcmlwdHMuIn0se25hbWU6JyJwc3RmIicsZGVzY3JpcHRpb246IlBvc3QtYmFzZSBGb3Jtcy4gUmVxdWlyZWQgaW4gc2NyaXB0cyBvZiBzb3V0aCBhbmQgc291dGhlYXN0IEFzaWEgdGhhdCBoYXZlIHBvc3QtYmFzZSBmb3JtcyBmb3IgY29uc29uYW50cyBlZzogR3VybXVraGksIE1hbGF5YWxhbSwgS2htZXIuIn0se25hbWU6JyJwc3RzIicsZGVzY3JpcHRpb246IlBvc3QtYmFzZSBTdWJzdGl0dXRpb25zLiJ9LHtuYW1lOicicHdpZCInLGRlc2NyaXB0aW9uOiJQcm9wb3J0aW9uYWwgV2lkdGhzLiJ9LHtuYW1lOicicXdpZCInLGRlc2NyaXB0aW9uOiJRdWFydGVyIFdpZHRocy4gR2VuZXJhbGx5IHVzZWQgb25seSBpbiBDSktWIGZvbnRzLiJ9LHtuYW1lOicicmFuZCInLGRlc2NyaXB0aW9uOiJSYW5kb21pemUuIn0se25hbWU6JyJyY2x0IicsZGVzY3JpcHRpb246IlJlcXVpcmVkIENvbnRleHR1YWwgQWx0ZXJuYXRlcy4gTWF5IGFwcGx5IHRvIGFueSBzY3JpcHQsIGJ1dCBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBmb3IgbWFueSBzdHlsZXMgb2YgQXJhYmljLiJ9LHtuYW1lOicicmxpZyInLGRlc2NyaXB0aW9uOiJSZXF1aXJlZCBMaWdhdHVyZXMuIEFwcGxpZXMgdG8gQXJhYmljIGFuZCBTeXJpYWMuIE1heSBhcHBseSB0byBzb21lIG90aGVyIHNjcmlwdHMuIn0se25hbWU6JyJya3JmIicsZGVzY3JpcHRpb246IlJha2FyIEZvcm1zLiBSZXF1aXJlZCBpbiBEZXZhbmFnYXJpIGFuZCBHdWphcmF0aSBzY3JpcHRzLiJ9LHtuYW1lOicicnBoZiInLGRlc2NyaXB0aW9uOiJSZXBoIEZvcm0uIFJlcXVpcmVkIGluIEluZGljIHNjcmlwdHMuIEUuZy4gRGV2YW5hZ2FyaSwgS2FubmFkYS4ifSx7bmFtZTonInJ0YmQiJyxkZXNjcmlwdGlvbjoiUmlnaHQgQm91bmRzLiJ9LHtuYW1lOicicnRsYSInLGRlc2NyaXB0aW9uOiJSaWdodC10by1sZWZ0IGFsdGVybmF0ZXMuIn0se25hbWU6JyJydGxtIicsZGVzY3JpcHRpb246IlJpZ2h0LXRvLWxlZnQgbWlycm9yZWQgZm9ybXMuIn0se25hbWU6JyJydWJ5IicsZGVzY3JpcHRpb246IlJ1YnkgTm90YXRpb24gRm9ybXMuIEFwcGxpZXMgb25seSB0byBKYXBhbmVzZS4ifSx7bmFtZTonInNhbHQiJyxkZXNjcmlwdGlvbjoiU3R5bGlzdGljIEFsdGVybmF0ZXMuIn0se25hbWU6JyJzaW5mIicsZGVzY3JpcHRpb246IlNjaWVudGlmaWMgSW5mZXJpb3JzLiJ9LHtuYW1lOicic2l6ZSInLGRlc2NyaXB0aW9uOiJPcHRpY2FsIHNpemUuIn0se25hbWU6JyJzbWNwIicsZGVzY3JpcHRpb246IlNtYWxsIENhcGl0YWxzLiBBcHBsaWVzIG9ubHkgdG8gYmljYW1lcmFsIHNjcmlwdHMuIn0se25hbWU6JyJzbXBsIicsZGVzY3JpcHRpb246IlNpbXBsaWZpZWQgRm9ybXMuIEFwcGxpZXMgb25seSB0byBDaGluZXNlIGFuZCBKYXBhbmVzZS4ifSx7bmFtZTonInNzdHkiJyxkZXNjcmlwdGlvbjoiTWF0aCBzY3JpcHQgc3R5bGUgYWx0ZXJuYXRlcy4ifSx7bmFtZTonInN0Y2giJyxkZXNjcmlwdGlvbjoiU3RyZXRjaGluZyBHbHlwaCBEZWNvbXBvc2l0aW9uLiJ9LHtuYW1lOicic3VicyInLGRlc2NyaXB0aW9uOiJTdWJzY3JpcHQuIn0se25hbWU6JyJzdXBzIicsZGVzY3JpcHRpb246IlN1cGVyc2NyaXB0LiJ9LHtuYW1lOicic3dzaCInLGRlc2NyaXB0aW9uOiJTd2FzaC4gRG9lcyBub3QgYXBwbHkgdG8gaWRlb2dyYXBoaWMgc2NyaXB0cy4ifSx7bmFtZTonInRpdGwiJyxkZXNjcmlwdGlvbjoiVGl0bGluZy4ifSx7bmFtZTonInRqbW8iJyxkZXNjcmlwdGlvbjoiVHJhaWxpbmcgSmFtbyBGb3Jtcy4gUmVxdWlyZWQgZm9yIEhhbmd1bCBzY3JpcHQgd2hlbiBBbmNpZW50IEhhbmd1bCB3cml0aW5nIHN5c3RlbSBpcyBzdXBwb3J0ZWQuIn0se25hbWU6JyJ0bmFtIicsZGVzY3JpcHRpb246IlRyYWRpdGlvbmFsIE5hbWUgRm9ybXMuIEFwcGxpZXMgb25seSB0byBKYXBhbmVzZS4ifSx7bmFtZTonInRudW0iJyxkZXNjcmlwdGlvbjoiVGFidWxhciBGaWd1cmVzLiJ9LHtuYW1lOicidHJhZCInLGRlc2NyaXB0aW9uOiJUcmFkaXRpb25hbCBGb3Jtcy4gQXBwbGllcyBvbmx5IHRvIENoaW5lc2UgYW5kIEphcGFuZXNlLiJ9LHtuYW1lOicidHdpZCInLGRlc2NyaXB0aW9uOiJUaGlyZCBXaWR0aHMuIEdlbmVyYWxseSB1c2VkIG9ubHkgaW4gQ0pLViBmb250cy4ifSx7bmFtZTonInVuaWMiJyxkZXNjcmlwdGlvbjoiVW5pY2FzZS4ifSx7bmFtZTonInZhbHQiJyxkZXNjcmlwdGlvbjoiQWx0ZXJuYXRlIFZlcnRpY2FsIE1ldHJpY3MuIEFwcGxpZXMgb25seSB0byBzY3JpcHRzIHdpdGggdmVydGljYWwgd3JpdGluZyBtb2Rlcy4ifSx7bmFtZTonInZhdHUiJyxkZXNjcmlwdGlvbjoiVmF0dHUgVmFyaWFudHMuIFVzZWQgZm9yIEluZGljIHNjcmlwdHMuIEUuZy4gRGV2YW5hZ2FyaS4ifSx7bmFtZTonInZlcnQiJyxkZXNjcmlwdGlvbjoiVmVydGljYWwgQWx0ZXJuYXRlcy4gQXBwbGllcyBvbmx5IHRvIHNjcmlwdHMgd2l0aCB2ZXJ0aWNhbCB3cml0aW5nIG1vZGVzLiJ9LHtuYW1lOicidmhhbCInLGRlc2NyaXB0aW9uOiJBbHRlcm5hdGUgVmVydGljYWwgSGFsZiBNZXRyaWNzLiBVc2VkIG9ubHkgaW4gQ0pLViBmb250cy4ifSx7bmFtZTonInZqbW8iJyxkZXNjcmlwdGlvbjoiVm93ZWwgSmFtbyBGb3Jtcy4gUmVxdWlyZWQgZm9yIEhhbmd1bCBzY3JpcHQgd2hlbiBBbmNpZW50IEhhbmd1bCB3cml0aW5nIHN5c3RlbSBpcyBzdXBwb3J0ZWQuIn0se25hbWU6JyJ2a25hIicsZGVzY3JpcHRpb246IlZlcnRpY2FsIEthbmEgQWx0ZXJuYXRlcy4gQXBwbGllcyBvbmx5IHRvIGZvbnRzIHRoYXQgc3VwcG9ydCBrYW5hIChoaXJhZ2FuYSBhbmQga2F0YWthbmEpLiJ9LHtuYW1lOicidmtybiInLGRlc2NyaXB0aW9uOiJWZXJ0aWNhbCBLZXJuaW5nLiJ9LHtuYW1lOicidnBhbCInLGRlc2NyaXB0aW9uOiJQcm9wb3J0aW9uYWwgQWx0ZXJuYXRlIFZlcnRpY2FsIE1ldHJpY3MuIFVzZWQgbW9zdGx5IGluIENKS1YgZm9udHMuIn0se25hbWU6JyJ2cnQyIicsZGVzY3JpcHRpb246IlZlcnRpY2FsIEFsdGVybmF0ZXMgYW5kIFJvdGF0aW9uLiBBcHBsaWVzIG9ubHkgdG8gc2NyaXB0cyB3aXRoIHZlcnRpY2FsIHdyaXRpbmcgbW9kZXMuIn0se25hbWU6JyJ6ZXJvIicsZGVzY3JpcHRpb246IlNsYXNoZWQgWmVyby4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm8gY2hhbmdlIGluIGdseXBoIHN1YnN0aXR1dGlvbiBvciBwb3NpdGlvbmluZyBvY2N1cnMuIn0se25hbWU6Im9mZiIsZGVzY3JpcHRpb246IkRpc2FibGUgZmVhdHVyZS4ifSx7bmFtZToib24iLGRlc2NyaXB0aW9uOiJFbmFibGUgZmVhdHVyZS4ifV0sc3ludGF4OiJub3JtYWwgfCA8ZmVhdHVyZS10YWctdmFsdWU+IyIscmVsZXZhbmNlOjU3LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LWZlYXR1cmUtc2V0dGluZ3MifV0sZGVzY3JpcHRpb246IlByb3ZpZGVzIGxvdy1sZXZlbCBjb250cm9sIG92ZXIgT3BlblR5cGUgZm9udCBmZWF0dXJlcy4gSXQgaXMgaW50ZW5kZWQgYXMgYSB3YXkgb2YgcHJvdmlkaW5nIGFjY2VzcyB0byBmb250IGZlYXR1cmVzIHRoYXQgYXJlIG5vdCB3aWRlbHkgdXNlZCBidXQgYXJlIG5lZWRlZCBmb3IgYSBwYXJ0aWN1bGFyIHVzZSBjYXNlLiIscmVzdHJpY3Rpb25zOlsic3RyaW5nIiwiaW50ZWdlciJdfSx7bmFtZToiZm9udC1rZXJuaW5nIixicm93c2VyczpbIkU3OSIsIkZGMzIiLCJTOSIsIkMzMyIsIk8yMCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhhdCBrZXJuaW5nIGlzIGFwcGxpZWQgYXQgdGhlIGRpc2NyZXRpb24gb2YgdGhlIHVzZXIgYWdlbnQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhhdCBrZXJuaW5nIGlzIG5vdCBhcHBsaWVkLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhhdCBrZXJuaW5nIGlzIGFwcGxpZWQuIn1dLHN5bnRheDoiYXV0byB8IG5vcm1hbCB8IG5vbmUiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC1rZXJuaW5nIn1dLGRlc2NyaXB0aW9uOiJLZXJuaW5nIGlzIHRoZSBjb250ZXh0dWFsIGFkanVzdG1lbnQgb2YgaW50ZXItZ2x5cGggc3BhY2luZy4gVGhpcyBwcm9wZXJ0eSBjb250cm9scyBtZXRyaWMga2VybmluZywga2VybmluZyB0aGF0IHV0aWxpemVzIGFkanVzdG1lbnQgZGF0YSBjb250YWluZWQgaW4gdGhlIGZvbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmb250LWxhbmd1YWdlLW92ZXJyaWRlIixicm93c2VyczpbIkZGMzQiXSx2YWx1ZXM6W3tuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJJbXBsaWVzIHRoYXQgd2hlbiByZW5kZXJpbmcgd2l0aCBPcGVuVHlwZSBmb250cyB0aGUgbGFuZ3VhZ2Ugb2YgdGhlIGRvY3VtZW50IGlzIHVzZWQgdG8gaW5mZXIgdGhlIE9wZW5UeXBlIGxhbmd1YWdlIHN5c3RlbSwgdXNlZCB0byBzZWxlY3QgbGFuZ3VhZ2Ugc3BlY2lmaWMgZmVhdHVyZXMgd2hlbiByZW5kZXJpbmcuIn1dLHN5bnRheDoibm9ybWFsIHwgPHN0cmluZz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC1sYW5ndWFnZS1vdmVycmlkZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIHZhbHVlIG9mICdub3JtYWwnIGltcGxpZXMgdGhhdCB3aGVuIHJlbmRlcmluZyB3aXRoIE9wZW5UeXBlIGZvbnRzIHRoZSBsYW5ndWFnZSBvZiB0aGUgZG9jdW1lbnQgaXMgdXNlZCB0byBpbmZlciB0aGUgT3BlblR5cGUgbGFuZ3VhZ2Ugc3lzdGVtLCB1c2VkIHRvIHNlbGVjdCBsYW5ndWFnZSBzcGVjaWZpYyBmZWF0dXJlcyB3aGVuIHJlbmRlcmluZy4iLHJlc3RyaWN0aW9uczpbInN0cmluZyJdfSx7bmFtZToiZm9udC1zaXplIix2YWx1ZXM6W3tuYW1lOiJsYXJnZSJ9LHtuYW1lOiJsYXJnZXIifSx7bmFtZToibWVkaXVtIn0se25hbWU6InNtYWxsIn0se25hbWU6InNtYWxsZXIifSx7bmFtZToieC1sYXJnZSJ9LHtuYW1lOiJ4LXNtYWxsIn0se25hbWU6Inh4LWxhcmdlIn0se25hbWU6Inh4LXNtYWxsIn1dLHN5bnRheDoiPGFic29sdXRlLXNpemU+IHwgPHJlbGF0aXZlLXNpemU+IHwgPGxlbmd0aC1wZXJjZW50YWdlPiIscmVsZXZhbmNlOjk1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXNpemUifV0sZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGUgZGVzaXJlZCBoZWlnaHQgb2YgZ2x5cGhzIGZyb20gdGhlIGZvbnQuIEZvciBzY2FsYWJsZSBmb250cywgdGhlIGZvbnQtc2l6ZSBpcyBhIHNjYWxlIGZhY3RvciBhcHBsaWVkIHRvIHRoZSBFTSB1bml0IG9mIHRoZSBmb250LiAoTm90ZSB0aGF0IGNlcnRhaW4gZ2x5cGhzIG1heSBibGVlZCBvdXRzaWRlIHRoZWlyIEVNIGJveC4pIEZvciBub24tc2NhbGFibGUgZm9udHMsIHRoZSBmb250LXNpemUgaXMgY29udmVydGVkIGludG8gYWJzb2x1dGUgdW5pdHMgYW5kIG1hdGNoZWQgYWdhaW5zdCB0aGUgZGVjbGFyZWQgZm9udC1zaXplIG9mIHRoZSBmb250LCB1c2luZyB0aGUgc2FtZSBhYnNvbHV0ZSBjb29yZGluYXRlIHNwYWNlIGZvciBib3RoIG9mIHRoZSBtYXRjaGVkIHZhbHVlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImZvbnQtc2l6ZS1hZGp1c3QiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MCIsIkM0MyIsIk8zMCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJEbyBub3QgcHJlc2VydmUgdGhlIGZvbnTigJlzIHgtaGVpZ2h0LiJ9XSxzeW50YXg6Im5vbmUgfCBbIGV4LWhlaWdodCB8IGNhcC1oZWlnaHQgfCBjaC13aWR0aCB8IGljLXdpZHRoIHwgaWMtaGVpZ2h0IF0/IFsgZnJvbS1mb250IHwgPG51bWJlcj4gXSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXNpemUtYWRqdXN0In1dLGRlc2NyaXB0aW9uOiJQcmVzZXJ2ZXMgdGhlIHJlYWRhYmlsaXR5IG9mIHRleHQgd2hlbiBmb250IGZhbGxiYWNrIG9jY3VycyBieSBhZGp1c3RpbmcgdGhlIGZvbnQtc2l6ZSBzbyB0aGF0IHRoZSB4LWhlaWdodCBpcyB0aGUgc2FtZSByZWdhcmRsZXNzIG9mIHRoZSBmb250IHVzZWQuIixyZXN0cmljdGlvbnM6WyJudW1iZXIiXX0se25hbWU6ImZvbnQtc3RyZXRjaCIsdmFsdWVzOlt7bmFtZToiY29uZGVuc2VkIn0se25hbWU6ImV4cGFuZGVkIn0se25hbWU6ImV4dHJhLWNvbmRlbnNlZCJ9LHtuYW1lOiJleHRyYS1leHBhbmRlZCJ9LHtuYW1lOiJuYXJyb3dlciIsZGVzY3JpcHRpb246IkluZGljYXRlcyBhIG5hcnJvd2VyIHZhbHVlIHJlbGF0aXZlIHRvIHRoZSB3aWR0aCBvZiB0aGUgcGFyZW50IGVsZW1lbnQuIn0se25hbWU6Im5vcm1hbCJ9LHtuYW1lOiJzZW1pLWNvbmRlbnNlZCJ9LHtuYW1lOiJzZW1pLWV4cGFuZGVkIn0se25hbWU6InVsdHJhLWNvbmRlbnNlZCJ9LHtuYW1lOiJ1bHRyYS1leHBhbmRlZCJ9LHtuYW1lOiJ3aWRlciIsZGVzY3JpcHRpb246IkluZGljYXRlcyBhIHdpZGVyIHZhbHVlIHJlbGF0aXZlIHRvIHRoZSB3aWR0aCBvZiB0aGUgcGFyZW50IGVsZW1lbnQuIn1dLHN5bnRheDoiPGZvbnQtc3RyZXRjaC1hYnNvbHV0ZT57MSwyfSIscmVsZXZhbmNlOjU2LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXN0cmV0Y2gifV0sZGVzY3JpcHRpb246IlNlbGVjdHMgYSBub3JtYWwsIGNvbmRlbnNlZCwgb3IgZXhwYW5kZWQgZmFjZSBmcm9tIGEgZm9udCBmYW1pbHkuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmb250LXN0eWxlIix2YWx1ZXM6W3tuYW1lOiJpdGFsaWMiLGRlc2NyaXB0aW9uOiJTZWxlY3RzIGEgZm9udCB0aGF0IGlzIGxhYmVsZWQgYXMgYW4gJ2l0YWxpYycgZmFjZSwgb3IgYW4gJ29ibGlxdWUnIGZhY2UgaWYgb25lIGlzIG5vdCJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJTZWxlY3RzIGEgZmFjZSB0aGF0IGlzIGNsYXNzaWZpZWQgYXMgJ25vcm1hbCcuIn0se25hbWU6Im9ibGlxdWUiLGRlc2NyaXB0aW9uOiJTZWxlY3RzIGEgZm9udCB0aGF0IGlzIGxhYmVsZWQgYXMgYW4gJ29ibGlxdWUnIGZhY2UsIG9yIGFuICdpdGFsaWMnIGZhY2UgaWYgb25lIGlzIG5vdC4ifV0sc3ludGF4OiJub3JtYWwgfCBpdGFsaWMgfCBvYmxpcXVlIDxhbmdsZT57MCwyfSIscmVsZXZhbmNlOjkwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJBbGxvd3MgaXRhbGljIG9yIG9ibGlxdWUgZmFjZXMgdG8gYmUgc2VsZWN0ZWQuIEl0YWxpYyBmb3JtcyBhcmUgZ2VuZXJhbGx5IGN1cnNpdmUgaW4gbmF0dXJlIHdoaWxlIG9ibGlxdWUgZmFjZXMgYXJlIHR5cGljYWxseSBzbG9wZWQgdmVyc2lvbnMgb2YgdGhlIHJlZ3VsYXIgZmFjZS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImZvbnQtc3ludGhlc2lzIixicm93c2VyczpbIkU5NyIsIkZGMzQiLCJTOSIsIkM5NyIsIk84MyJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJEaXNhbGxvdyBhbGwgc3ludGhldGljIGZhY2VzLiJ9LHtuYW1lOiJzdHlsZSIsZGVzY3JpcHRpb246IkFsbG93IHN5bnRoZXRpYyBpdGFsaWMgZmFjZXMuIn0se25hbWU6IndlaWdodCIsZGVzY3JpcHRpb246IkFsbG93IHN5bnRoZXRpYyBib2xkIGZhY2VzLiJ9XSxzeW50YXg6Im5vbmUgfCBbIHdlaWdodCB8fCBzdHlsZSB8fCBzbWFsbC1jYXBzIF0iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC1zeW50aGVzaXMifV0sZGVzY3JpcHRpb246IkNvbnRyb2xzIHdoZXRoZXIgdXNlciBhZ2VudHMgYXJlIGFsbG93ZWQgdG8gc3ludGhlc2l6ZSBib2xkIG9yIG9ibGlxdWUgZm9udCBmYWNlcyB3aGVuIGEgZm9udCBmYW1pbHkgbGFja3MgYm9sZCBvciBpdGFsaWMgZmFjZXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmb250LXZhcmlhbnQiLHZhbHVlczpbe25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGZhY2UgdGhhdCBpcyBub3QgbGFiZWxlZCBhcyBhIHNtYWxsLWNhcHMgZm9udC4ifSx7bmFtZToic21hbGwtY2FwcyIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGZvbnQgdGhhdCBpcyBsYWJlbGVkIGFzIGEgc21hbGwtY2FwcyBmb250LiBJZiBhIGdlbnVpbmUgc21hbGwtY2FwcyBmb250IGlzIG5vdCBhdmFpbGFibGUsIHVzZXIgYWdlbnRzIHNob3VsZCBzaW11bGF0ZSBhIHNtYWxsLWNhcHMgZm9udC4ifV0sc3ludGF4OiJub3JtYWwgfCBub25lIHwgWyA8Y29tbW9uLWxpZy12YWx1ZXM+IHx8IDxkaXNjcmV0aW9uYXJ5LWxpZy12YWx1ZXM+IHx8IDxoaXN0b3JpY2FsLWxpZy12YWx1ZXM+IHx8IDxjb250ZXh0dWFsLWFsdC12YWx1ZXM+IHx8IHN0eWxpc3RpYyg8ZmVhdHVyZS12YWx1ZS1uYW1lPikgfHwgaGlzdG9yaWNhbC1mb3JtcyB8fCBzdHlsZXNldCg8ZmVhdHVyZS12YWx1ZS1uYW1lPiMpIHx8IGNoYXJhY3Rlci12YXJpYW50KDxmZWF0dXJlLXZhbHVlLW5hbWU+IykgfHwgc3dhc2goPGZlYXR1cmUtdmFsdWUtbmFtZT4pIHx8IG9ybmFtZW50cyg8ZmVhdHVyZS12YWx1ZS1uYW1lPikgfHwgYW5ub3RhdGlvbig8ZmVhdHVyZS12YWx1ZS1uYW1lPikgfHwgWyBzbWFsbC1jYXBzIHwgYWxsLXNtYWxsLWNhcHMgfCBwZXRpdGUtY2FwcyB8IGFsbC1wZXRpdGUtY2FwcyB8IHVuaWNhc2UgfCB0aXRsaW5nLWNhcHMgXSB8fCA8bnVtZXJpYy1maWd1cmUtdmFsdWVzPiB8fCA8bnVtZXJpYy1zcGFjaW5nLXZhbHVlcz4gfHwgPG51bWVyaWMtZnJhY3Rpb24tdmFsdWVzPiB8fCBvcmRpbmFsIHx8IHNsYXNoZWQtemVybyB8fCA8ZWFzdC1hc2lhbi12YXJpYW50LXZhbHVlcz4gfHwgPGVhc3QtYXNpYW4td2lkdGgtdmFsdWVzPiB8fCBydWJ5IF0iLHJlbGV2YW5jZTo2NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC12YXJpYW50In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdmFyaWFudCByZXByZXNlbnRhdGlvbnMgb2YgdGhlIGZvbnQiLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImZvbnQtdmFyaWFudC1hbHRlcm5hdGVzIixicm93c2VyczpbIkZGMzQiLCJTOS4xIl0sdmFsdWVzOlt7bmFtZToiYW5ub3RhdGlvbigpIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIGFsdGVybmF0ZSBhbm5vdGF0aW9uIGZvcm1zLiJ9LHtuYW1lOiJjaGFyYWN0ZXItdmFyaWFudCgpIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIHNwZWNpZmljIGNoYXJhY3RlciB2YXJpYW50cy4ifSx7bmFtZToiaGlzdG9yaWNhbC1mb3JtcyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBoaXN0b3JpY2FsIGZvcm1zLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJOb25lIG9mIHRoZSBmZWF0dXJlcyBhcmUgZW5hYmxlZC4ifSx7bmFtZToib3JuYW1lbnRzKCkiLGRlc2NyaXB0aW9uOiJFbmFibGVzIHJlcGxhY2VtZW50IG9mIGRlZmF1bHQgZ2x5cGhzIHdpdGggb3JuYW1lbnRzLCBpZiBwcm92aWRlZCBpbiB0aGUgZm9udC4ifSx7bmFtZToic3R5bGVzZXQoKSIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSB3aXRoIHN0eWxpc3RpYyBzZXRzLiJ9LHtuYW1lOiJzdHlsaXN0aWMoKSIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBzdHlsaXN0aWMgYWx0ZXJuYXRlcy4ifSx7bmFtZToic3dhc2goKSIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBzd2FzaCBnbHlwaHMuIn1dLHN5bnRheDoibm9ybWFsIHwgWyBzdHlsaXN0aWMoIDxmZWF0dXJlLXZhbHVlLW5hbWU+ICkgfHwgaGlzdG9yaWNhbC1mb3JtcyB8fCBzdHlsZXNldCggPGZlYXR1cmUtdmFsdWUtbmFtZT4jICkgfHwgY2hhcmFjdGVyLXZhcmlhbnQoIDxmZWF0dXJlLXZhbHVlLW5hbWU+IyApIHx8IHN3YXNoKCA8ZmVhdHVyZS12YWx1ZS1uYW1lPiApIHx8IG9ybmFtZW50cyggPGZlYXR1cmUtdmFsdWUtbmFtZT4gKSB8fCBhbm5vdGF0aW9uKCA8ZmVhdHVyZS12YWx1ZS1uYW1lPiApIF0iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC12YXJpYW50LWFsdGVybmF0ZXMifV0sZGVzY3JpcHRpb246IkZvciBhbnkgZ2l2ZW4gY2hhcmFjdGVyLCBmb250cyBjYW4gcHJvdmlkZSBhIHZhcmlldHkgb2YgYWx0ZXJuYXRlIGdseXBocyBpbiBhZGRpdGlvbiB0byB0aGUgZGVmYXVsdCBnbHlwaCBmb3IgdGhhdCBjaGFyYWN0ZXIuIFRoaXMgcHJvcGVydHkgcHJvdmlkZXMgY29udHJvbCBvdmVyIHRoZSBzZWxlY3Rpb24gb2YgdGhlc2UgYWx0ZXJuYXRlIGdseXBocy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImZvbnQtdmFyaWFudC1jYXBzIixicm93c2VyczpbIkU3OSIsIkZGMzQiLCJTOS4xIiwiQzUyIiwiTzM5Il0sdmFsdWVzOlt7bmFtZToiYWxsLXBldGl0ZS1jYXBzIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIHBldGl0ZSBjYXBpdGFscyBmb3IgYm90aCB1cHBlciBhbmQgbG93ZXJjYXNlIGxldHRlcnMuIn0se25hbWU6ImFsbC1zbWFsbC1jYXBzIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIHNtYWxsIGNhcGl0YWxzIGZvciBib3RoIHVwcGVyIGFuZCBsb3dlcmNhc2UgbGV0dGVycy4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm9uZSBvZiB0aGUgZmVhdHVyZXMgYXJlIGVuYWJsZWQuIn0se25hbWU6InBldGl0ZS1jYXBzIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIHBldGl0ZSBjYXBpdGFscy4ifSx7bmFtZToic21hbGwtY2FwcyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBzbWFsbCBjYXBpdGFscy4gU21hbGwtY2FwcyBnbHlwaHMgdHlwaWNhbGx5IHVzZSB0aGUgZm9ybSBvZiB1cHBlcmNhc2UgbGV0dGVycyBidXQgYXJlIHJlZHVjZWQgdG8gdGhlIHNpemUgb2YgbG93ZXJjYXNlIGxldHRlcnMuIn0se25hbWU6InRpdGxpbmctY2FwcyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiB0aXRsaW5nIGNhcGl0YWxzLiJ9LHtuYW1lOiJ1bmljYXNlIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIG1peHR1cmUgb2Ygc21hbGwgY2FwaXRhbHMgZm9yIHVwcGVyY2FzZSBsZXR0ZXJzIHdpdGggbm9ybWFsIGxvd2VyY2FzZSBsZXR0ZXJzLiJ9XSxzeW50YXg6Im5vcm1hbCB8IHNtYWxsLWNhcHMgfCBhbGwtc21hbGwtY2FwcyB8IHBldGl0ZS1jYXBzIHwgYWxsLXBldGl0ZS1jYXBzIHwgdW5pY2FzZSB8IHRpdGxpbmctY2FwcyIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXZhcmlhbnQtY2FwcyJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGNvbnRyb2wgb3ZlciBjYXBpdGFsaXplZCBmb3Jtcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImZvbnQtdmFyaWFudC1lYXN0LWFzaWFuIixicm93c2VyczpbIkU3OSIsIkZGMzQiLCJTOS4xIiwiQzYzIiwiTzUwIl0sdmFsdWVzOlt7bmFtZToiZnVsbC13aWR0aCIsZGVzY3JpcHRpb246IkVuYWJsZXMgcmVuZGVyaW5nIG9mIGZ1bGwtd2lkdGggdmFyaWFudHMuIn0se25hbWU6ImppczA0IixkZXNjcmlwdGlvbjoiRW5hYmxlcyByZW5kZXJpbmcgb2YgSklTMDQgZm9ybXMuIn0se25hbWU6Imppczc4IixkZXNjcmlwdGlvbjoiRW5hYmxlcyByZW5kZXJpbmcgb2YgSklTNzggZm9ybXMuIn0se25hbWU6ImppczgzIixkZXNjcmlwdGlvbjoiRW5hYmxlcyByZW5kZXJpbmcgb2YgSklTODMgZm9ybXMuIn0se25hbWU6ImppczkwIixkZXNjcmlwdGlvbjoiRW5hYmxlcyByZW5kZXJpbmcgb2YgSklTOTAgZm9ybXMuIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vbmUgb2YgdGhlIGZlYXR1cmVzIGFyZSBlbmFibGVkLiJ9LHtuYW1lOiJwcm9wb3J0aW9uYWwtd2lkdGgiLGRlc2NyaXB0aW9uOiJFbmFibGVzIHJlbmRlcmluZyBvZiBwcm9wb3J0aW9uYWxseS1zcGFjZWQgdmFyaWFudHMuIn0se25hbWU6InJ1YnkiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgcnVieSB2YXJpYW50IGdseXBocy4ifSx7bmFtZToic2ltcGxpZmllZCIsZGVzY3JpcHRpb246IkVuYWJsZXMgcmVuZGVyaW5nIG9mIHNpbXBsaWZpZWQgZm9ybXMuIn0se25hbWU6InRyYWRpdGlvbmFsIixkZXNjcmlwdGlvbjoiRW5hYmxlcyByZW5kZXJpbmcgb2YgdHJhZGl0aW9uYWwgZm9ybXMuIn1dLHN5bnRheDoibm9ybWFsIHwgWyA8ZWFzdC1hc2lhbi12YXJpYW50LXZhbHVlcz4gfHwgPGVhc3QtYXNpYW4td2lkdGgtdmFsdWVzPiB8fCBydWJ5IF0iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC12YXJpYW50LWVhc3QtYXNpYW4ifV0sZGVzY3JpcHRpb246IkFsbG93cyBjb250cm9sIG9mIGdseXBoIHN1YnN0aXR1dGUgYW5kIHBvc2l0aW9uaW5nIGluIEVhc3QgQXNpYW4gdGV4dC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImZvbnQtdmFyaWFudC1saWdhdHVyZXMiLGJyb3dzZXJzOlsiRTc5IiwiRkYzNCIsIlM5LjEiLCJDMzQiLCJPMjEiXSx2YWx1ZXM6W3tuYW1lOiJhZGRpdGlvbmFsLWxpZ2F0dXJlcyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBhZGRpdGlvbmFsIGxpZ2F0dXJlcy4ifSx7bmFtZToiY29tbW9uLWxpZ2F0dXJlcyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBjb21tb24gbGlnYXR1cmVzLiJ9LHtuYW1lOiJjb250ZXh0dWFsIixicm93c2VyczpbIkU3OSIsIkZGMzQiLCJTOS4xIiwiQzM0IiwiTzIxIl0sZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBjb250ZXh0dWFsIGFsdGVybmF0ZXMuIn0se25hbWU6ImRpc2NyZXRpb25hcnktbGlnYXR1cmVzIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIGRpc2NyZXRpb25hcnkgbGlnYXR1cmVzLiJ9LHtuYW1lOiJoaXN0b3JpY2FsLWxpZ2F0dXJlcyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBoaXN0b3JpY2FsIGxpZ2F0dXJlcy4ifSx7bmFtZToibm8tYWRkaXRpb25hbC1saWdhdHVyZXMiLGRlc2NyaXB0aW9uOiJEaXNhYmxlcyBkaXNwbGF5IG9mIGFkZGl0aW9uYWwgbGlnYXR1cmVzLiJ9LHtuYW1lOiJuby1jb21tb24tbGlnYXR1cmVzIixkZXNjcmlwdGlvbjoiRGlzYWJsZXMgZGlzcGxheSBvZiBjb21tb24gbGlnYXR1cmVzLiJ9LHtuYW1lOiJuby1jb250ZXh0dWFsIixicm93c2VyczpbIkU3OSIsIkZGMzQiLCJTOS4xIiwiQzM0IiwiTzIxIl0sZGVzY3JpcHRpb246IkRpc2FibGVzIGRpc3BsYXkgb2YgY29udGV4dHVhbCBhbHRlcm5hdGVzLiJ9LHtuYW1lOiJuby1kaXNjcmV0aW9uYXJ5LWxpZ2F0dXJlcyIsZGVzY3JpcHRpb246IkRpc2FibGVzIGRpc3BsYXkgb2YgZGlzY3JldGlvbmFyeSBsaWdhdHVyZXMuIn0se25hbWU6Im5vLWhpc3RvcmljYWwtbGlnYXR1cmVzIixkZXNjcmlwdGlvbjoiRGlzYWJsZXMgZGlzcGxheSBvZiBoaXN0b3JpY2FsIGxpZ2F0dXJlcy4ifSx7bmFtZToibm9uZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjM0IiwiUzkuMSIsIkMzNCIsIk8yMSJdLGRlc2NyaXB0aW9uOiJEaXNhYmxlcyBhbGwgbGlnYXR1cmVzLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJJbXBsaWVzIHRoYXQgdGhlIGRlZmF1bHRzIHNldCBieSB0aGUgZm9udCBhcmUgdXNlZC4ifV0sc3ludGF4OiJub3JtYWwgfCBub25lIHwgWyA8Y29tbW9uLWxpZy12YWx1ZXM+IHx8IDxkaXNjcmV0aW9uYXJ5LWxpZy12YWx1ZXM+IHx8IDxoaXN0b3JpY2FsLWxpZy12YWx1ZXM+IHx8IDxjb250ZXh0dWFsLWFsdC12YWx1ZXM+IF0iLHJlbGV2YW5jZTo1MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC12YXJpYW50LWxpZ2F0dXJlcyJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGNvbnRyb2wgb3ZlciB3aGljaCBsaWdhdHVyZXMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQuIEEgdmFsdWUgb2Yg4oCYbm9ybWFs4oCZIGltcGxpZXMgdGhhdCB0aGUgZGVmYXVsdHMgc2V0IGJ5IHRoZSBmb250IGFyZSB1c2VkLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZm9udC12YXJpYW50LW51bWVyaWMiLGJyb3dzZXJzOlsiRTc5IiwiRkYzNCIsIlM5LjEiLCJDNTIiLCJPMzkiXSx2YWx1ZXM6W3tuYW1lOiJkaWFnb25hbC1mcmFjdGlvbnMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgbGluaW5nIGRpYWdvbmFsIGZyYWN0aW9ucy4ifSx7bmFtZToibGluaW5nLW51bXMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgbGluaW5nIG51bWVyYWxzLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJOb25lIG9mIHRoZSBmZWF0dXJlcyBhcmUgZW5hYmxlZC4ifSx7bmFtZToib2xkc3R5bGUtbnVtcyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBvbGQtc3R5bGUgbnVtZXJhbHMuIn0se25hbWU6Im9yZGluYWwiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgbGV0dGVyIGZvcm1zIHVzZWQgd2l0aCBvcmRpbmFsIG51bWJlcnMuIn0se25hbWU6InByb3BvcnRpb25hbC1udW1zIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIHByb3BvcnRpb25hbCBudW1lcmFscy4ifSx7bmFtZToic2xhc2hlZC16ZXJvIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIHNsYXNoZWQgemVyb3MuIn0se25hbWU6InN0YWNrZWQtZnJhY3Rpb25zIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIGxpbmluZyBzdGFja2VkIGZyYWN0aW9ucy4ifSx7bmFtZToidGFidWxhci1udW1zIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIHRhYnVsYXIgbnVtZXJhbHMuIn1dLHN5bnRheDoibm9ybWFsIHwgWyA8bnVtZXJpYy1maWd1cmUtdmFsdWVzPiB8fCA8bnVtZXJpYy1zcGFjaW5nLXZhbHVlcz4gfHwgPG51bWVyaWMtZnJhY3Rpb24tdmFsdWVzPiB8fCBvcmRpbmFsIHx8IHNsYXNoZWQtemVybyBdIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtdmFyaWFudC1udW1lcmljIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgY29udHJvbCBvdmVyIG51bWVyaWNhbCBmb3Jtcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImZvbnQtdmFyaWFudC1wb3NpdGlvbiIsYnJvd3NlcnM6WyJGRjM0IiwiUzkuMSJdLHZhbHVlczpbe25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vbmUgb2YgdGhlIGZlYXR1cmVzIGFyZSBlbmFibGVkLiJ9LHtuYW1lOiJzdWIiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2Ygc3Vic2NyaXB0IHZhcmlhbnRzIChPcGVuVHlwZSBmZWF0dXJlOiBzdWJzKS4ifSx7bmFtZToic3VwZXIiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2Ygc3VwZXJzY3JpcHQgdmFyaWFudHMgKE9wZW5UeXBlIGZlYXR1cmU6IHN1cHMpLiJ9XSxzeW50YXg6Im5vcm1hbCB8IHN1YiB8IHN1cGVyIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtdmFyaWFudC1wb3NpdGlvbiJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZm9udC13ZWlnaHQiLHZhbHVlczpbe25hbWU6IjEwMCIsZGVzY3JpcHRpb246IlRoaW4ifSx7bmFtZToiMjAwIixkZXNjcmlwdGlvbjoiRXh0cmEgTGlnaHQgKFVsdHJhIExpZ2h0KSJ9LHtuYW1lOiIzMDAiLGRlc2NyaXB0aW9uOiJMaWdodCJ9LHtuYW1lOiI0MDAiLGRlc2NyaXB0aW9uOiJOb3JtYWwifSx7bmFtZToiNTAwIixkZXNjcmlwdGlvbjoiTWVkaXVtIn0se25hbWU6IjYwMCIsZGVzY3JpcHRpb246IlNlbWkgQm9sZCAoRGVtaSBCb2xkKSJ9LHtuYW1lOiI3MDAiLGRlc2NyaXB0aW9uOiJCb2xkIn0se25hbWU6IjgwMCIsZGVzY3JpcHRpb246IkV4dHJhIEJvbGQgKFVsdHJhIEJvbGQpIn0se25hbWU6IjkwMCIsZGVzY3JpcHRpb246IkJsYWNrIChIZWF2eSkifSx7bmFtZToiYm9sZCIsZGVzY3JpcHRpb246IlNhbWUgYXMgNzAwIn0se25hbWU6ImJvbGRlciIsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgd2VpZ2h0IG9mIHRoZSBmYWNlIGJvbGRlciB0aGFuIHRoZSBpbmhlcml0ZWQgdmFsdWUuIn0se25hbWU6ImxpZ2h0ZXIiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHdlaWdodCBvZiB0aGUgZmFjZSBsaWdodGVyIHRoYW4gdGhlIGluaGVyaXRlZCB2YWx1ZS4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiU2FtZSBhcyA0MDAifV0sc3ludGF4OiI8Zm9udC13ZWlnaHQtYWJzb2x1dGU+ezEsMn0iLHJlbGV2YW5jZTo5NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC13ZWlnaHQifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB3ZWlnaHQgb2YgZ2x5cGhzIGluIHRoZSBmb250LCB0aGVpciBkZWdyZWUgb2YgYmxhY2tuZXNzIG9yIHN0cm9rZSB0aGlja25lc3MuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkNvbnRyb2xzIGdseXBoIG9yaWVudGF0aW9uIHdoZW4gdGhlIGlubGluZS1wcm9ncmVzc2lvbi1kaXJlY3Rpb24gaXMgaG9yaXpvbnRhbC4iLHJlc3RyaWN0aW9uczpbImFuZ2xlIiwibnVtYmVyIl19LHtuYW1lOiJnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlNldHMgdGhlIG9yaWVudGF0aW9uIGJhc2VkIG9uIHRoZSBmdWxsd2lkdGggb3Igbm9uLWZ1bGx3aWR0aCBjaGFyYWN0ZXJzIGFuZCB0aGUgbW9zdCBjb21tb24gb3JpZW50YXRpb24uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQ29udHJvbHMgZ2x5cGggb3JpZW50YXRpb24gd2hlbiB0aGUgaW5saW5lLXByb2dyZXNzaW9uLWRpcmVjdGlvbiBpcyB2ZXJ0aWNhbC4iLHJlc3RyaWN0aW9uczpbImFuZ2xlIiwibnVtYmVyIiwiZW51bSJdfSx7bmFtZToiZ3JpZC1hcmVhIixicm93c2VyczpbIkUxNiIsIkZGNTIiLCJTMTAuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgcHJvcGVydHkgY29udHJpYnV0ZXMgbm90aGluZyB0byB0aGUgZ3JpZCBpdGVt4oCZcyBwbGFjZW1lbnQsIGluZGljYXRpbmcgYXV0by1wbGFjZW1lbnQsIGFuIGF1dG9tYXRpYyBzcGFuLCBvciBhIGRlZmF1bHQgc3BhbiBvZiBvbmUuIn0se25hbWU6InNwYW4iLGRlc2NyaXB0aW9uOiJDb250cmlidXRlcyBhIGdyaWQgc3BhbiB0byB0aGUgZ3JpZCBpdGVt4oCZcyBwbGFjZW1lbnQgc3VjaCB0aGF0IHRoZSBjb3JyZXNwb25kaW5nIGVkZ2Ugb2YgdGhlIGdyaWQgaXRlbeKAmXMgZ3JpZCBhcmVhIGlzIE4gbGluZXMgZnJvbSBpdHMgb3Bwb3NpdGUgZWRnZS4ifV0sc3ludGF4OiI8Z3JpZC1saW5lPiBbIC8gPGdyaWQtbGluZT4gXXswLDN9IixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2dyaWQtYXJlYSJ9XSxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lIGEgZ3JpZCBpdGVt4oCZcyBzaXplIGFuZCBsb2NhdGlvbiB3aXRoaW4gdGhlIGdyaWQgYnkgY29udHJpYnV0aW5nIGEgbGluZSwgYSBzcGFuLCBvciBub3RoaW5nIChhdXRvbWF0aWMpIHRvIGl0cyBncmlkIHBsYWNlbWVudC4gU2hvcnRoYW5kIGZvciAnZ3JpZC1yb3ctc3RhcnQnLCAnZ3JpZC1jb2x1bW4tc3RhcnQnLCAnZ3JpZC1yb3ctZW5kJywgYW5kICdncmlkLWNvbHVtbi1lbmQnLiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImludGVnZXIiXX0se25hbWU6ImdyaWQiLGJyb3dzZXJzOlsiRTE2IiwiRkY1MiIsIlMxMC4xIiwiQzU3IiwiTzQ0Il0sc3ludGF4OiI8J2dyaWQtdGVtcGxhdGUnPiB8IDwnZ3JpZC10ZW1wbGF0ZS1yb3dzJz4gLyBbIGF1dG8tZmxvdyAmJiBkZW5zZT8gXSA8J2dyaWQtYXV0by1jb2x1bW5zJz4/IHwgWyBhdXRvLWZsb3cgJiYgZGVuc2U/IF0gPCdncmlkLWF1dG8tcm93cyc+PyAvIDwnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZ3JpZCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGdyaWQgQ1NTIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIHByb3BlcnR5IHRoYXQgc2V0cyBhbGwgb2YgdGhlIGV4cGxpY2l0IGdyaWQgcHJvcGVydGllcyAoJ2dyaWQtdGVtcGxhdGUtcm93cycsICdncmlkLXRlbXBsYXRlLWNvbHVtbnMnLCBhbmQgJ2dyaWQtdGVtcGxhdGUtYXJlYXMnKSwgYW5kIGFsbCB0aGUgaW1wbGljaXQgZ3JpZCBwcm9wZXJ0aWVzICgnZ3JpZC1hdXRvLXJvd3MnLCAnZ3JpZC1hdXRvLWNvbHVtbnMnLCBhbmQgJ2dyaWQtYXV0by1mbG93JyksIGluIGEgc2luZ2xlIGRlY2xhcmF0aW9uLiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJzdHJpbmciLCJlbnVtIl19LHtuYW1lOiJncmlkLWF1dG8tY29sdW1ucyIsdmFsdWVzOlt7bmFtZToibWluLWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1pbi1jb250ZW50IGNvbnRyaWJ1dGlvbiBvZiB0aGUgZ3JpZCBpdGVtcyBvY2N1cHlpbmcgdGhlIGdyaWQgdHJhY2suIn0se25hbWU6Im1heC1jb250ZW50IixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtYXgtY29udGVudCBjb250cmlidXRpb24gb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQXMgYSBtYXhpbXVtLCBpZGVudGljYWwgdG8gJ21heC1jb250ZW50Jy4gQXMgYSBtaW5pbXVtLCByZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1pbmltdW0gc2l6ZSAoYXMgc3BlY2lmaWVkIGJ5IG1pbi13aWR0aC9taW4taGVpZ2h0KSBvZiB0aGUgZ3JpZCBpdGVtcyBvY2N1cHlpbmcgdGhlIGdyaWQgdHJhY2suIn0se25hbWU6Im1pbm1heCgpIixkZXNjcmlwdGlvbjoiRGVmaW5lcyBhIHNpemUgcmFuZ2UgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIG1pbiBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIG1heC4ifV0sc3ludGF4OiI8dHJhY2stc2l6ZT4rIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2dyaWQtYXV0by1jb2x1bW5zIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHNpemUgb2YgaW1wbGljaXRseSBjcmVhdGVkIGNvbHVtbnMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJncmlkLWF1dG8tZmxvdyIsYnJvd3NlcnM6WyJFMTYiLCJGRjUyIiwiUzEwLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJyb3ciLGRlc2NyaXB0aW9uOiJUaGUgYXV0by1wbGFjZW1lbnQgYWxnb3JpdGhtIHBsYWNlcyBpdGVtcyBieSBmaWxsaW5nIGVhY2ggcm93IGluIHR1cm4sIGFkZGluZyBuZXcgcm93cyBhcyBuZWNlc3NhcnkuIn0se25hbWU6ImNvbHVtbiIsZGVzY3JpcHRpb246IlRoZSBhdXRvLXBsYWNlbWVudCBhbGdvcml0aG0gcGxhY2VzIGl0ZW1zIGJ5IGZpbGxpbmcgZWFjaCBjb2x1bW4gaW4gdHVybiwgYWRkaW5nIG5ldyBjb2x1bW5zIGFzIG5lY2Vzc2FyeS4ifSx7bmFtZToiZGVuc2UiLGRlc2NyaXB0aW9uOiJJZiBzcGVjaWZpZWQsIHRoZSBhdXRvLXBsYWNlbWVudCBhbGdvcml0aG0gdXNlcyBhIOKAnGRlbnNl4oCdIHBhY2tpbmcgYWxnb3JpdGhtLCB3aGljaCBhdHRlbXB0cyB0byBmaWxsIGluIGhvbGVzIGVhcmxpZXIgaW4gdGhlIGdyaWQgaWYgc21hbGxlciBpdGVtcyBjb21lIHVwIGxhdGVyLiJ9XSxzeW50YXg6Ilsgcm93IHwgY29sdW1uIF0gfHwgZGVuc2UiLHJlbGV2YW5jZTo1MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZ3JpZC1hdXRvLWZsb3cifV0sZGVzY3JpcHRpb246IkNvbnRyb2xzIGhvdyB0aGUgYXV0by1wbGFjZW1lbnQgYWxnb3JpdGhtIHdvcmtzLCBzcGVjaWZ5aW5nIGV4YWN0bHkgaG93IGF1dG8tcGxhY2VkIGl0ZW1zIGdldCBmbG93ZWQgaW50byB0aGUgZ3JpZC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImdyaWQtYXV0by1yb3dzIix2YWx1ZXM6W3tuYW1lOiJtaW4tY29udGVudCIsZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGxhcmdlc3QgbWluLWNvbnRlbnQgY29udHJpYnV0aW9uIG9mIHRoZSBncmlkIGl0ZW1zIG9jY3VweWluZyB0aGUgZ3JpZCB0cmFjay4ifSx7bmFtZToibWF4LWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1heC1jb250ZW50IGNvbnRyaWJ1dGlvbiBvZiB0aGUgZ3JpZCBpdGVtcyBvY2N1cHlpbmcgdGhlIGdyaWQgdHJhY2suIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJBcyBhIG1heGltdW0sIGlkZW50aWNhbCB0byAnbWF4LWNvbnRlbnQnLiBBcyBhIG1pbmltdW0sIHJlcHJlc2VudHMgdGhlIGxhcmdlc3QgbWluaW11bSBzaXplIChhcyBzcGVjaWZpZWQgYnkgbWluLXdpZHRoL21pbi1oZWlnaHQpIG9mIHRoZSBncmlkIGl0ZW1zIG9jY3VweWluZyB0aGUgZ3JpZCB0cmFjay4ifSx7bmFtZToibWlubWF4KCkiLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGEgc2l6ZSByYW5nZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gbWluIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gbWF4LiJ9XSxzeW50YXg6Ijx0cmFjay1zaXplPisiLHJlbGV2YW5jZTo1MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZ3JpZC1hdXRvLXJvd3MifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgc2l6ZSBvZiBpbXBsaWNpdGx5IGNyZWF0ZWQgcm93cy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImdyaWQtY29sdW1uIixicm93c2VyczpbIkUxNiIsIkZGNTIiLCJTMTAuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgcHJvcGVydHkgY29udHJpYnV0ZXMgbm90aGluZyB0byB0aGUgZ3JpZCBpdGVt4oCZcyBwbGFjZW1lbnQsIGluZGljYXRpbmcgYXV0by1wbGFjZW1lbnQsIGFuIGF1dG9tYXRpYyBzcGFuLCBvciBhIGRlZmF1bHQgc3BhbiBvZiBvbmUuIn0se25hbWU6InNwYW4iLGRlc2NyaXB0aW9uOiJDb250cmlidXRlcyBhIGdyaWQgc3BhbiB0byB0aGUgZ3JpZCBpdGVt4oCZcyBwbGFjZW1lbnQgc3VjaCB0aGF0IHRoZSBjb3JyZXNwb25kaW5nIGVkZ2Ugb2YgdGhlIGdyaWQgaXRlbeKAmXMgZ3JpZCBhcmVhIGlzIE4gbGluZXMgZnJvbSBpdHMgb3Bwb3NpdGUgZWRnZS4ifV0sc3ludGF4OiI8Z3JpZC1saW5lPiBbIC8gPGdyaWQtbGluZT4gXT8iLHJlbGV2YW5jZTo1MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZ3JpZC1jb2x1bW4ifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBmb3IgJ2dyaWQtY29sdW1uLXN0YXJ0JyBhbmQgJ2dyaWQtY29sdW1uLWVuZCcuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwiaW50ZWdlciIsImVudW0iXX0se25hbWU6ImdyaWQtY29sdW1uLWVuZCIsYnJvd3NlcnM6WyJFMTYiLCJGRjUyIiwiUzEwLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHByb3BlcnR5IGNvbnRyaWJ1dGVzIG5vdGhpbmcgdG8gdGhlIGdyaWQgaXRlbeKAmXMgcGxhY2VtZW50LCBpbmRpY2F0aW5nIGF1dG8tcGxhY2VtZW50LCBhbiBhdXRvbWF0aWMgc3Bhbiwgb3IgYSBkZWZhdWx0IHNwYW4gb2Ygb25lLiJ9LHtuYW1lOiJzcGFuIixkZXNjcmlwdGlvbjoiQ29udHJpYnV0ZXMgYSBncmlkIHNwYW4gdG8gdGhlIGdyaWQgaXRlbeKAmXMgcGxhY2VtZW50IHN1Y2ggdGhhdCB0aGUgY29ycmVzcG9uZGluZyBlZGdlIG9mIHRoZSBncmlkIGl0ZW3igJlzIGdyaWQgYXJlYSBpcyBOIGxpbmVzIGZyb20gaXRzIG9wcG9zaXRlIGVkZ2UuIn1dLHN5bnRheDoiPGdyaWQtbGluZT4iLHJlbGV2YW5jZTo1MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZ3JpZC1jb2x1bW4tZW5kIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmUgYSBncmlkIGl0ZW3igJlzIHNpemUgYW5kIGxvY2F0aW9uIHdpdGhpbiB0aGUgZ3JpZCBieSBjb250cmlidXRpbmcgYSBsaW5lLCBhIHNwYW4sIG9yIG5vdGhpbmcgKGF1dG9tYXRpYykgdG8gaXRzIGdyaWQgcGxhY2VtZW50LiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImludGVnZXIiLCJlbnVtIl19LHtuYW1lOiJncmlkLWNvbHVtbi1nYXAiLGJyb3dzZXJzOlsiRkY1MiIsIkM1NyIsIlMxMC4xIiwiTzQ0Il0sc3RhdHVzOiJvYnNvbGV0ZSIsc3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+IixyZWxldmFuY2U6MixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBndXR0ZXJzIGJldHdlZW4gZ3JpZCBjb2x1bW5zLiBSZXBsYWNlZCBieSAnY29sdW1uLWdhcCcgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6ImdyaWQtY29sdW1uLXN0YXJ0Iixicm93c2VyczpbIkUxNiIsIkZGNTIiLCJTMTAuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgcHJvcGVydHkgY29udHJpYnV0ZXMgbm90aGluZyB0byB0aGUgZ3JpZCBpdGVt4oCZcyBwbGFjZW1lbnQsIGluZGljYXRpbmcgYXV0by1wbGFjZW1lbnQsIGFuIGF1dG9tYXRpYyBzcGFuLCBvciBhIGRlZmF1bHQgc3BhbiBvZiBvbmUuIn0se25hbWU6InNwYW4iLGRlc2NyaXB0aW9uOiJDb250cmlidXRlcyBhIGdyaWQgc3BhbiB0byB0aGUgZ3JpZCBpdGVt4oCZcyBwbGFjZW1lbnQgc3VjaCB0aGF0IHRoZSBjb3JyZXNwb25kaW5nIGVkZ2Ugb2YgdGhlIGdyaWQgaXRlbeKAmXMgZ3JpZCBhcmVhIGlzIE4gbGluZXMgZnJvbSBpdHMgb3Bwb3NpdGUgZWRnZS4ifV0sc3ludGF4OiI8Z3JpZC1saW5lPiIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ncmlkLWNvbHVtbi1zdGFydCJ9XSxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lIGEgZ3JpZCBpdGVt4oCZcyBzaXplIGFuZCBsb2NhdGlvbiB3aXRoaW4gdGhlIGdyaWQgYnkgY29udHJpYnV0aW5nIGEgbGluZSwgYSBzcGFuLCBvciBub3RoaW5nIChhdXRvbWF0aWMpIHRvIGl0cyBncmlkIHBsYWNlbWVudC4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiLCJpbnRlZ2VyIiwiZW51bSJdfSx7bmFtZToiZ3JpZC1nYXAiLGJyb3dzZXJzOlsiRkY1MiIsIkM1NyIsIlMxMC4xIiwiTzQ0Il0sc3RhdHVzOiJvYnNvbGV0ZSIsc3ludGF4OiI8J2dyaWQtcm93LWdhcCc+IDwnZ3JpZC1jb2x1bW4tZ2FwJz4/IixyZWxldmFuY2U6MyxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHRoYXQgc3BlY2lmaWVzIHRoZSBndXR0ZXJzIGJldHdlZW4gZ3JpZCBjb2x1bW5zIGFuZCBncmlkIHJvd3MgaW4gb25lIGRlY2xhcmF0aW9uLiBSZXBsYWNlZCBieSAnZ2FwJyBwcm9wZXJ0eS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToiZ3JpZC1yb3ciLGJyb3dzZXJzOlsiRTE2IiwiRkY1MiIsIlMxMC4xIiwiQzU3IiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBwcm9wZXJ0eSBjb250cmlidXRlcyBub3RoaW5nIHRvIHRoZSBncmlkIGl0ZW3igJlzIHBsYWNlbWVudCwgaW5kaWNhdGluZyBhdXRvLXBsYWNlbWVudCwgYW4gYXV0b21hdGljIHNwYW4sIG9yIGEgZGVmYXVsdCBzcGFuIG9mIG9uZS4ifSx7bmFtZToic3BhbiIsZGVzY3JpcHRpb246IkNvbnRyaWJ1dGVzIGEgZ3JpZCBzcGFuIHRvIHRoZSBncmlkIGl0ZW3igJlzIHBsYWNlbWVudCBzdWNoIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgZWRnZSBvZiB0aGUgZ3JpZCBpdGVt4oCZcyBncmlkIGFyZWEgaXMgTiBsaW5lcyBmcm9tIGl0cyBvcHBvc2l0ZSBlZGdlLiJ9XSxzeW50YXg6IjxncmlkLWxpbmU+IFsgLyA8Z3JpZC1saW5lPiBdPyIscmVsZXZhbmNlOjUyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ncmlkLXJvdyJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIGZvciAnZ3JpZC1yb3ctc3RhcnQnIGFuZCAnZ3JpZC1yb3ctZW5kJy4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiLCJpbnRlZ2VyIiwiZW51bSJdfSx7bmFtZToiZ3JpZC1yb3ctZW5kIixicm93c2VyczpbIkUxNiIsIkZGNTIiLCJTMTAuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgcHJvcGVydHkgY29udHJpYnV0ZXMgbm90aGluZyB0byB0aGUgZ3JpZCBpdGVt4oCZcyBwbGFjZW1lbnQsIGluZGljYXRpbmcgYXV0by1wbGFjZW1lbnQsIGFuIGF1dG9tYXRpYyBzcGFuLCBvciBhIGRlZmF1bHQgc3BhbiBvZiBvbmUuIn0se25hbWU6InNwYW4iLGRlc2NyaXB0aW9uOiJDb250cmlidXRlcyBhIGdyaWQgc3BhbiB0byB0aGUgZ3JpZCBpdGVt4oCZcyBwbGFjZW1lbnQgc3VjaCB0aGF0IHRoZSBjb3JyZXNwb25kaW5nIGVkZ2Ugb2YgdGhlIGdyaWQgaXRlbeKAmXMgZ3JpZCBhcmVhIGlzIE4gbGluZXMgZnJvbSBpdHMgb3Bwb3NpdGUgZWRnZS4ifV0sc3ludGF4OiI8Z3JpZC1saW5lPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ncmlkLXJvdy1lbmQifV0sZGVzY3JpcHRpb246IkRldGVybWluZSBhIGdyaWQgaXRlbeKAmXMgc2l6ZSBhbmQgbG9jYXRpb24gd2l0aGluIHRoZSBncmlkIGJ5IGNvbnRyaWJ1dGluZyBhIGxpbmUsIGEgc3Bhbiwgb3Igbm90aGluZyAoYXV0b21hdGljKSB0byBpdHMgZ3JpZCBwbGFjZW1lbnQuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwiaW50ZWdlciIsImVudW0iXX0se25hbWU6ImdyaWQtcm93LWdhcCIsYnJvd3NlcnM6WyJGRjUyIiwiQzU3IiwiUzEwLjEiLCJPNDQiXSxzdGF0dXM6Im9ic29sZXRlIixzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZToxLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGd1dHRlcnMgYmV0d2VlbiBncmlkIHJvd3MuIFJlcGxhY2VkIGJ5ICdyb3ctZ2FwJyBwcm9wZXJ0eS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToiZ3JpZC1yb3ctc3RhcnQiLGJyb3dzZXJzOlsiRTE2IiwiRkY1MiIsIlMxMC4xIiwiQzU3IiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBwcm9wZXJ0eSBjb250cmlidXRlcyBub3RoaW5nIHRvIHRoZSBncmlkIGl0ZW3igJlzIHBsYWNlbWVudCwgaW5kaWNhdGluZyBhdXRvLXBsYWNlbWVudCwgYW4gYXV0b21hdGljIHNwYW4sIG9yIGEgZGVmYXVsdCBzcGFuIG9mIG9uZS4ifSx7bmFtZToic3BhbiIsZGVzY3JpcHRpb246IkNvbnRyaWJ1dGVzIGEgZ3JpZCBzcGFuIHRvIHRoZSBncmlkIGl0ZW3igJlzIHBsYWNlbWVudCBzdWNoIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgZWRnZSBvZiB0aGUgZ3JpZCBpdGVt4oCZcyBncmlkIGFyZWEgaXMgTiBsaW5lcyBmcm9tIGl0cyBvcHBvc2l0ZSBlZGdlLiJ9XSxzeW50YXg6IjxncmlkLWxpbmU+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2dyaWQtcm93LXN0YXJ0In1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmUgYSBncmlkIGl0ZW3igJlzIHNpemUgYW5kIGxvY2F0aW9uIHdpdGhpbiB0aGUgZ3JpZCBieSBjb250cmlidXRpbmcgYSBsaW5lLCBhIHNwYW4sIG9yIG5vdGhpbmcgKGF1dG9tYXRpYykgdG8gaXRzIGdyaWQgcGxhY2VtZW50LiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImludGVnZXIiLCJlbnVtIl19LHtuYW1lOiJncmlkLXRlbXBsYXRlIixicm93c2VyczpbIkUxNiIsIkZGNTIiLCJTMTAuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJTZXRzIGFsbCB0aHJlZSBwcm9wZXJ0aWVzIHRvIHRoZWlyIGluaXRpYWwgdmFsdWVzLiJ9LHtuYW1lOiJtaW4tY29udGVudCIsZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGxhcmdlc3QgbWluLWNvbnRlbnQgY29udHJpYnV0aW9uIG9mIHRoZSBncmlkIGl0ZW1zIG9jY3VweWluZyB0aGUgZ3JpZCB0cmFjay4ifSx7bmFtZToibWF4LWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1heC1jb250ZW50IGNvbnRyaWJ1dGlvbiBvZiB0aGUgZ3JpZCBpdGVtcyBvY2N1cHlpbmcgdGhlIGdyaWQgdHJhY2suIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJBcyBhIG1heGltdW0sIGlkZW50aWNhbCB0byAnbWF4LWNvbnRlbnQnLiBBcyBhIG1pbmltdW0sIHJlcHJlc2VudHMgdGhlIGxhcmdlc3QgbWluaW11bSBzaXplIChhcyBzcGVjaWZpZWQgYnkgbWluLXdpZHRoL21pbi1oZWlnaHQpIG9mIHRoZSBncmlkIGl0ZW1zIG9jY3VweWluZyB0aGUgZ3JpZCB0cmFjay4ifSx7bmFtZToic3ViZ3JpZCIsZGVzY3JpcHRpb246IlNldHMgJ2dyaWQtdGVtcGxhdGUtcm93cycgYW5kICdncmlkLXRlbXBsYXRlLWNvbHVtbnMnIHRvICdzdWJncmlkJywgYW5kICdncmlkLXRlbXBsYXRlLWFyZWFzJyB0byBpdHMgaW5pdGlhbCB2YWx1ZS4ifSx7bmFtZToibWlubWF4KCkiLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGEgc2l6ZSByYW5nZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gbWluIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gbWF4LiJ9LHtuYW1lOiJyZXBlYXQoKSIsZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYSByZXBlYXRlZCBmcmFnbWVudCBvZiB0aGUgdHJhY2sgbGlzdCwgYWxsb3dpbmcgYSBsYXJnZSBudW1iZXIgb2YgY29sdW1ucyBvciByb3dzIHRoYXQgZXhoaWJpdCBhIHJlY3VycmluZyBwYXR0ZXJuIHRvIGJlIHdyaXR0ZW4gaW4gYSBtb3JlIGNvbXBhY3QgZm9ybS4ifV0sc3ludGF4OiJub25lIHwgWyA8J2dyaWQtdGVtcGxhdGUtcm93cyc+IC8gPCdncmlkLXRlbXBsYXRlLWNvbHVtbnMnPiBdIHwgWyA8bGluZS1uYW1lcz4/IDxzdHJpbmc+IDx0cmFjay1zaXplPj8gPGxpbmUtbmFtZXM+PyBdKyBbIC8gPGV4cGxpY2l0LXRyYWNrLWxpc3Q+IF0/IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2dyaWQtdGVtcGxhdGUifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBmb3Igc2V0dGluZyBncmlkLXRlbXBsYXRlLWNvbHVtbnMsIGdyaWQtdGVtcGxhdGUtcm93cywgYW5kIGdyaWQtdGVtcGxhdGUtYXJlYXMgaW4gYSBzaW5nbGUgZGVjbGFyYXRpb24uIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwibGVuZ3RoIiwicGVyY2VudGFnZSIsInN0cmluZyIsImVudW0iXX0se25hbWU6ImdyaWQtdGVtcGxhdGUtYXJlYXMiLGJyb3dzZXJzOlsiRTE2IiwiRkY1MiIsIlMxMC4xIiwiQzU3IiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBncmlkIGNvbnRhaW5lciBkb2VzbuKAmXQgZGVmaW5lIGFueSBuYW1lZCBncmlkIGFyZWFzLiJ9XSxzeW50YXg6Im5vbmUgfCA8c3RyaW5nPisiLHJlbGV2YW5jZTo1MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZ3JpZC10ZW1wbGF0ZS1hcmVhcyJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIG5hbWVkIGdyaWQgYXJlYXMsIHdoaWNoIGFyZSBub3QgYXNzb2NpYXRlZCB3aXRoIGFueSBwYXJ0aWN1bGFyIGdyaWQgaXRlbSwgYnV0IGNhbiBiZSByZWZlcmVuY2VkIGZyb20gdGhlIGdyaWQtcGxhY2VtZW50IHByb3BlcnRpZXMuIixyZXN0cmljdGlvbnM6WyJzdHJpbmciXX0se25hbWU6ImdyaWQtdGVtcGxhdGUtY29sdW1ucyIsdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZXJlIGlzIG5vIGV4cGxpY2l0IGdyaWQ7IGFueSByb3dzL2NvbHVtbnMgd2lsbCBiZSBpbXBsaWNpdGx5IGdlbmVyYXRlZC4ifSx7bmFtZToibWluLWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1pbi1jb250ZW50IGNvbnRyaWJ1dGlvbiBvZiB0aGUgZ3JpZCBpdGVtcyBvY2N1cHlpbmcgdGhlIGdyaWQgdHJhY2suIn0se25hbWU6Im1heC1jb250ZW50IixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtYXgtY29udGVudCBjb250cmlidXRpb24gb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQXMgYSBtYXhpbXVtLCBpZGVudGljYWwgdG8gJ21heC1jb250ZW50Jy4gQXMgYSBtaW5pbXVtLCByZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1pbmltdW0gc2l6ZSAoYXMgc3BlY2lmaWVkIGJ5IG1pbi13aWR0aC9taW4taGVpZ2h0KSBvZiB0aGUgZ3JpZCBpdGVtcyBvY2N1cHlpbmcgdGhlIGdyaWQgdHJhY2suIn0se25hbWU6InN1YmdyaWQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgZ3JpZCB3aWxsIGFsaWduIHRvIGl0cyBwYXJlbnQgZ3JpZCBpbiB0aGF0IGF4aXMuIn0se25hbWU6Im1pbm1heCgpIixkZXNjcmlwdGlvbjoiRGVmaW5lcyBhIHNpemUgcmFuZ2UgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIG1pbiBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIG1heC4ifSx7bmFtZToicmVwZWF0KCkiLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGEgcmVwZWF0ZWQgZnJhZ21lbnQgb2YgdGhlIHRyYWNrIGxpc3QsIGFsbG93aW5nIGEgbGFyZ2UgbnVtYmVyIG9mIGNvbHVtbnMgb3Igcm93cyB0aGF0IGV4aGliaXQgYSByZWN1cnJpbmcgcGF0dGVybiB0byBiZSB3cml0dGVuIGluIGEgbW9yZSBjb21wYWN0IGZvcm0uIn1dLHN5bnRheDoibm9uZSB8IDx0cmFjay1saXN0PiB8IDxhdXRvLXRyYWNrLWxpc3Q+IHwgc3ViZ3JpZCA8bGluZS1uYW1lLWxpc3Q+PyIscmVsZXZhbmNlOjU4LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ncmlkLXRlbXBsYXRlLWNvbHVtbnMifV0sZGVzY3JpcHRpb246InNwZWNpZmllcywgYXMgYSBzcGFjZS1zZXBhcmF0ZWQgdHJhY2sgbGlzdCwgdGhlIGxpbmUgbmFtZXMgYW5kIHRyYWNrIHNpemluZyBmdW5jdGlvbnMgb2YgdGhlIGdyaWQuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwibGVuZ3RoIiwicGVyY2VudGFnZSIsImVudW0iXX0se25hbWU6ImdyaWQtdGVtcGxhdGUtcm93cyIsdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZXJlIGlzIG5vIGV4cGxpY2l0IGdyaWQ7IGFueSByb3dzL2NvbHVtbnMgd2lsbCBiZSBpbXBsaWNpdGx5IGdlbmVyYXRlZC4ifSx7bmFtZToibWluLWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1pbi1jb250ZW50IGNvbnRyaWJ1dGlvbiBvZiB0aGUgZ3JpZCBpdGVtcyBvY2N1cHlpbmcgdGhlIGdyaWQgdHJhY2suIn0se25hbWU6Im1heC1jb250ZW50IixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtYXgtY29udGVudCBjb250cmlidXRpb24gb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQXMgYSBtYXhpbXVtLCBpZGVudGljYWwgdG8gJ21heC1jb250ZW50Jy4gQXMgYSBtaW5pbXVtLCByZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1pbmltdW0gc2l6ZSAoYXMgc3BlY2lmaWVkIGJ5IG1pbi13aWR0aC9taW4taGVpZ2h0KSBvZiB0aGUgZ3JpZCBpdGVtcyBvY2N1cHlpbmcgdGhlIGdyaWQgdHJhY2suIn0se25hbWU6InN1YmdyaWQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgZ3JpZCB3aWxsIGFsaWduIHRvIGl0cyBwYXJlbnQgZ3JpZCBpbiB0aGF0IGF4aXMuIn0se25hbWU6Im1pbm1heCgpIixkZXNjcmlwdGlvbjoiRGVmaW5lcyBhIHNpemUgcmFuZ2UgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIG1pbiBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIG1heC4ifSx7bmFtZToicmVwZWF0KCkiLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGEgcmVwZWF0ZWQgZnJhZ21lbnQgb2YgdGhlIHRyYWNrIGxpc3QsIGFsbG93aW5nIGEgbGFyZ2UgbnVtYmVyIG9mIGNvbHVtbnMgb3Igcm93cyB0aGF0IGV4aGliaXQgYSByZWN1cnJpbmcgcGF0dGVybiB0byBiZSB3cml0dGVuIGluIGEgbW9yZSBjb21wYWN0IGZvcm0uIn1dLHN5bnRheDoibm9uZSB8IDx0cmFjay1saXN0PiB8IDxhdXRvLXRyYWNrLWxpc3Q+IHwgc3ViZ3JpZCA8bGluZS1uYW1lLWxpc3Q+PyIscmVsZXZhbmNlOjU0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ncmlkLXRlbXBsYXRlLXJvd3MifV0sZGVzY3JpcHRpb246InNwZWNpZmllcywgYXMgYSBzcGFjZS1zZXBhcmF0ZWQgdHJhY2sgbGlzdCwgdGhlIGxpbmUgbmFtZXMgYW5kIHRyYWNrIHNpemluZyBmdW5jdGlvbnMgb2YgdGhlIGdyaWQuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwibGVuZ3RoIiwicGVyY2VudGFnZSIsInN0cmluZyIsImVudW0iXX0se25hbWU6ImhlaWdodCIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBoZWlnaHQgZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mIG90aGVyIHByb3BlcnRpZXMuIn0se25hbWU6ImZpdC1jb250ZW50IixkZXNjcmlwdGlvbjoiVXNlIHRoZSBmaXQtY29udGVudCBpbmxpbmUgc2l6ZSBvciBmaXQtY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJtYXgtY29udGVudCIsZGVzY3JpcHRpb246IlVzZSB0aGUgbWF4LWNvbnRlbnQgaW5saW5lIHNpemUgb3IgbWF4LWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifSx7bmFtZToibWluLWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJVc2UgdGhlIG1pbi1jb250ZW50IGlubGluZSBzaXplIG9yIG1pbi1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn1dLHN5bnRheDoiPHZpZXdwb3J0LWxlbmd0aD57MSwyfSIscmVsZXZhbmNlOjk2LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9oZWlnaHQifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgaGVpZ2h0IG9mIHRoZSBjb250ZW50IGFyZWEsIHBhZGRpbmcgYXJlYSBvciBib3JkZXIgYXJlYSAoZGVwZW5kaW5nIG9uICdib3gtc2l6aW5nJykgb2YgY2VydGFpbiBib3hlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Imh5cGhlbnMiLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJDb25kaXRpb25hbCBoeXBoZW5hdGlvbiBjaGFyYWN0ZXJzIGluc2lkZSBhIHdvcmQsIGlmIHByZXNlbnQsIHRha2UgcHJpb3JpdHkgb3ZlciBhdXRvbWF0aWMgcmVzb3VyY2VzIHdoZW4gZGV0ZXJtaW5pbmcgaHlwaGVuYXRpb24gcG9pbnRzIHdpdGhpbiB0aGUgd29yZC4ifSx7bmFtZToibWFudWFsIixkZXNjcmlwdGlvbjoiV29yZHMgYXJlIG9ubHkgYnJva2VuIGF0IGxpbmUgYnJlYWtzIHdoZXJlIHRoZXJlIGFyZSBjaGFyYWN0ZXJzIGluc2lkZSB0aGUgd29yZCB0aGF0IHN1Z2dlc3QgbGluZSBicmVhayBvcHBvcnR1bml0aWVzIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJXb3JkcyBhcmUgbm90IGJyb2tlbiBhdCBsaW5lIGJyZWFrcywgZXZlbiBpZiBjaGFyYWN0ZXJzIGluc2lkZSB0aGUgd29yZCBzdWdnZXN0IGxpbmUgYnJlYWsgcG9pbnRzLiJ9XSxzeW50YXg6Im5vbmUgfCBtYW51YWwgfCBhdXRvIixyZWxldmFuY2U6NTUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2h5cGhlbnMifV0sZGVzY3JpcHRpb246IkNvbnRyb2xzIHdoZXRoZXIgaHlwaGVuYXRpb24gaXMgYWxsb3dlZCB0byBjcmVhdGUgbW9yZSBicmVhayBvcHBvcnR1bml0aWVzIHdpdGhpbiBhIGxpbmUgb2YgdGV4dC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImltYWdlLW9yaWVudGF0aW9uIixicm93c2VyczpbIkU4MSIsIkZGMjYiLCJTMTMuMSIsIkM4MSIsIk82NyJdLHZhbHVlczpbe25hbWU6ImZsaXAiLGRlc2NyaXB0aW9uOiJBZnRlciByb3RhdGluZyBieSB0aGUgcHJlY2VkZWRpbmcgYW5nbGUsIHRoZSBpbWFnZSBpcyBmbGlwcGVkIGhvcml6b250YWxseS4gRGVmYXVsdHMgdG8gMGRlZyBpZiB0aGUgYW5nbGUgaXMgb21taXR0ZWQuIn0se25hbWU6ImZyb20taW1hZ2UiLGRlc2NyaXB0aW9uOiJJZiB0aGUgaW1hZ2UgaGFzIGFuIG9yaWVudGF0aW9uIHNwZWNpZmllZCBpbiBpdHMgbWV0YWRhdGEsIHN1Y2ggYXMgRVhJRiwgdGhpcyB2YWx1ZSBjb21wdXRlcyB0byB0aGUgYW5nbGUgdGhhdCB0aGUgbWV0YWRhdGEgc3BlY2lmaWVzIGlzIG5lY2Vzc2FyeSB0byBjb3JyZWN0bHkgb3JpZW50IHRoZSBpbWFnZS4ifV0sc3ludGF4OiJmcm9tLWltYWdlIHwgPGFuZ2xlPiB8IFsgPGFuZ2xlPj8gZmxpcCBdIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ltYWdlLW9yaWVudGF0aW9uIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYW4gb3J0aG9nb25hbCByb3RhdGlvbiB0byBiZSBhcHBsaWVkIHRvIGFuIGltYWdlIGJlZm9yZSBpdCBpcyBsYWlkIG91dC4iLHJlc3RyaWN0aW9uczpbImFuZ2xlIl19LHtuYW1lOiJpbWFnZS1yZW5kZXJpbmciLGJyb3dzZXJzOlsiRTc5IiwiRkYzLjYiLCJTNiIsIkMxMyIsIk8xNSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2Ugc2hvdWxkIGJlIHNjYWxlZCB3aXRoIGFuIGFsZ29yaXRobSB0aGF0IG1heGltaXplcyB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgaW1hZ2UuIn0se25hbWU6ImNyaXNwLWVkZ2VzIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIG11c3QgYmUgc2NhbGVkIHdpdGggYW4gYWxnb3JpdGhtIHRoYXQgcHJlc2VydmVzIGNvbnRyYXN0IGFuZCBlZGdlcyBpbiB0aGUgaW1hZ2UsIGFuZCB3aGljaCBkb2VzIG5vdCBzbW9vdGggY29sb3JzIG9yIGludHJvZHVjZSBibHVyIHRvIHRoZSBpbWFnZSBpbiB0aGUgcHJvY2Vzcy4ifSx7bmFtZToiLW1vei1jcmlzcC1lZGdlcyIsYnJvd3NlcnM6WyJFNzkiLCJGRjMuNiIsIlM2IiwiQzEzIiwiTzE1Il19LHtuYW1lOiJvcHRpbWl6ZVF1YWxpdHkiLGRlc2NyaXB0aW9uOiJEZXByZWNhdGVkLiJ9LHtuYW1lOiJvcHRpbWl6ZVNwZWVkIixkZXNjcmlwdGlvbjoiRGVwcmVjYXRlZC4ifSx7bmFtZToicGl4ZWxhdGVkIixkZXNjcmlwdGlvbjoiV2hlbiBzY2FsaW5nIHRoZSBpbWFnZSB1cCwgdGhlICduZWFyZXN0IG5laWdoYm9yJyBvciBzaW1pbGFyIGFsZ29yaXRobSBtdXN0IGJlIHVzZWQsIHNvIHRoYXQgdGhlIGltYWdlIGFwcGVhcnMgdG8gYmUgc2ltcGx5IGNvbXBvc2VkIG9mIHZlcnkgbGFyZ2UgcGl4ZWxzLiJ9XSxzeW50YXg6ImF1dG8gfCBjcmlzcC1lZGdlcyB8IHBpeGVsYXRlZCIscmVsZXZhbmNlOjU0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9pbWFnZS1yZW5kZXJpbmcifV0sZGVzY3JpcHRpb246IlByb3ZpZGVzIGEgaGludCB0byB0aGUgdXNlci1hZ2VudCBhYm91dCB3aGF0IGFzcGVjdHMgb2YgYW4gaW1hZ2UgYXJlIG1vc3QgaW1wb3J0YW50IHRvIHByZXNlcnZlIHdoZW4gdGhlIGltYWdlIGlzIHNjYWxlZCwgdG8gYWlkIHRoZSB1c2VyLWFnZW50IGluIHRoZSBjaG9pY2Ugb2YgYW4gYXBwcm9wcmlhdGUgc2NhbGluZyBhbGdvcml0aG0uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJpbWUtbW9kZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjMiLCJJRTUiXSx2YWx1ZXM6W3tuYW1lOiJhY3RpdmUiLGRlc2NyaXB0aW9uOiJUaGUgaW5wdXQgbWV0aG9kIGVkaXRvciBpcyBpbml0aWFsbHkgYWN0aXZlOyB0ZXh0IGVudHJ5IGlzIHBlcmZvcm1lZCB1c2luZyBpdCB1bmxlc3MgdGhlIHVzZXIgc3BlY2lmaWNhbGx5IGRpc21pc3NlcyBpdC4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246Ik5vIGNoYW5nZSBpcyBtYWRlIHRvIHRoZSBjdXJyZW50IGlucHV0IG1ldGhvZCBlZGl0b3Igc3RhdGUuIFRoaXMgaXMgdGhlIGRlZmF1bHQuIn0se25hbWU6ImRpc2FibGVkIixkZXNjcmlwdGlvbjoiVGhlIGlucHV0IG1ldGhvZCBlZGl0b3IgaXMgZGlzYWJsZWQgYW5kIG1heSBub3QgYmUgYWN0aXZhdGVkIGJ5IHRoZSB1c2VyLiJ9LHtuYW1lOiJpbmFjdGl2ZSIsZGVzY3JpcHRpb246IlRoZSBpbnB1dCBtZXRob2QgZWRpdG9yIGlzIGluaXRpYWxseSBpbmFjdGl2ZSwgYnV0IHRoZSB1c2VyIG1heSBhY3RpdmF0ZSBpdCBpZiB0aGV5IHdpc2guIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IlRoZSBJTUUgc3RhdGUgc2hvdWxkIGJlIG5vcm1hbDsgdGhpcyB2YWx1ZSBjYW4gYmUgdXNlZCBpbiBhIHVzZXIgc3R5bGUgc2hlZXQgdG8gb3ZlcnJpZGUgdGhlIHBhZ2Ugc2V0dGluZy4ifV0sc3RhdHVzOiJvYnNvbGV0ZSIsc3ludGF4OiJhdXRvIHwgbm9ybWFsIHwgYWN0aXZlIHwgaW5hY3RpdmUgfCBkaXNhYmxlZCIscmVsZXZhbmNlOjAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ltZS1tb2RlIn1dLGRlc2NyaXB0aW9uOiJDb250cm9scyB0aGUgc3RhdGUgb2YgdGhlIGlucHV0IG1ldGhvZCBlZGl0b3IgZm9yIHRleHQgZmllbGRzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiaW5saW5lLXNpemUiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzU3IiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZiBvdGhlciBwcm9wZXJ0aWVzLiJ9XSxzeW50YXg6Ijwnd2lkdGgnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9pbmxpbmUtc2l6ZSJ9XSxkZXNjcmlwdGlvbjoiU2l6ZSBvZiBhbiBlbGVtZW50IGluIHRoZSBkaXJlY3Rpb24gc3BlY2lmaWVkIGJ5ICd3cml0aW5nLW1vZGUnLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiaXNvbGF0aW9uIixicm93c2VyczpbIkU3OSIsIkZGMzYiLCJTOCIsIkM0MSIsIk8zMCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJFbGVtZW50cyBhcmUgbm90IGlzb2xhdGVkIHVubGVzcyBhbiBvcGVyYXRpb24gaXMgYXBwbGllZCB0aGF0IGNhdXNlcyB0aGUgY3JlYXRpb24gb2YgYSBzdGFja2luZyBjb250ZXh0LiJ9LHtuYW1lOiJpc29sYXRlIixkZXNjcmlwdGlvbjoiSW4gQ1NTIHdpbGwgdHVybiB0aGUgZWxlbWVudCBpbnRvIGEgc3RhY2tpbmcgY29udGV4dC4ifV0sc3ludGF4OiJhdXRvIHwgaXNvbGF0ZSIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9pc29sYXRpb24ifV0sZGVzY3JpcHRpb246IkluIENTUyBzZXR0aW5nIHRvICdpc29sYXRlJyB3aWxsIHR1cm4gdGhlIGVsZW1lbnQgaW50byBhIHN0YWNraW5nIGNvbnRleHQuIEluIFNWRywgaXQgZGVmaW5lcyB3aGV0aGVyIGFuIGVsZW1lbnQgaXMgaXNvbGF0ZWQgb3Igbm90LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToianVzdGlmeS1jb250ZW50Iix2YWx1ZXM6W3tuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJGbGV4IGl0ZW1zIGFyZSBwYWNrZWQgdG93YXJkIHRoZSBjZW50ZXIgb2YgdGhlIGxpbmUuIn0se25hbWU6InN0YXJ0IixkZXNjcmlwdGlvbjoiVGhlIGl0ZW1zIGFyZSBwYWNrZWQgZmx1c2ggdG8gZWFjaCBvdGhlciB0b3dhcmQgdGhlIHN0YXJ0IGVkZ2Ugb2YgdGhlIGFsaWdubWVudCBjb250YWluZXIgaW4gdGhlIG1haW4gYXhpcy4ifSx7bmFtZToiZW5kIixkZXNjcmlwdGlvbjoiVGhlIGl0ZW1zIGFyZSBwYWNrZWQgZmx1c2ggdG8gZWFjaCBvdGhlciB0b3dhcmQgdGhlIGVuZCBlZGdlIG9mIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyIGluIHRoZSBtYWluIGF4aXMuIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJUaGUgaXRlbXMgYXJlIHBhY2tlZCBmbHVzaCB0byBlYWNoIG90aGVyIHRvd2FyZCB0aGUgbGVmdCBlZGdlIG9mIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyIGluIHRoZSBtYWluIGF4aXMuIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiVGhlIGl0ZW1zIGFyZSBwYWNrZWQgZmx1c2ggdG8gZWFjaCBvdGhlciB0b3dhcmQgdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIGFsaWdubWVudCBjb250YWluZXIgaW4gdGhlIG1haW4gYXhpcy4ifSx7bmFtZToic2FmZSIsZGVzY3JpcHRpb246IklmIHRoZSBzaXplIG9mIHRoZSBpdGVtIG92ZXJmbG93cyB0aGUgYWxpZ25tZW50IGNvbnRhaW5lciwgdGhlIGl0ZW0gaXMgaW5zdGVhZCBhbGlnbmVkIGFzIGlmIHRoZSBhbGlnbm1lbnQgbW9kZSB3ZXJlIHN0YXJ0LiJ9LHtuYW1lOiJ1bnNhZmUiLGRlc2NyaXB0aW9uOiJSZWdhcmRsZXNzIG9mIHRoZSByZWxhdGl2ZSBzaXplcyBvZiB0aGUgaXRlbSBhbmQgYWxpZ25tZW50IGNvbnRhaW5lciwgdGhlIGdpdmVuIGFsaWdubWVudCB2YWx1ZSBpcyBob25vcmVkLiJ9LHtuYW1lOiJzdHJldGNoIixkZXNjcmlwdGlvbjoiSWYgdGhlIGNvbWJpbmVkIHNpemUgb2YgdGhlIGFsaWdubWVudCBzdWJqZWN0cyBpcyBsZXNzIHRoYW4gdGhlIHNpemUgb2YgdGhlIGFsaWdubWVudCBjb250YWluZXIsIGFueSBhdXRvLXNpemVkIGFsaWdubWVudCBzdWJqZWN0cyBoYXZlIHRoZWlyIHNpemUgaW5jcmVhc2VkIGVxdWFsbHkgKG5vdCBwcm9wb3J0aW9uYWxseSksIHdoaWxlIHN0aWxsIHJlc3BlY3RpbmcgdGhlIGNvbnN0cmFpbnRzIGltcG9zZWQgYnkgbWF4LWhlaWdodC9tYXgtd2lkdGggKG9yIGVxdWl2YWxlbnQgZnVuY3Rpb25hbGl0eSksIHNvIHRoYXQgdGhlIGNvbWJpbmVkIHNpemUgZXhhY3RseSBmaWxscyB0aGUgYWxpZ25tZW50IGNvbnRhaW5lci4ifSx7bmFtZToic3BhY2UtZXZlbmx5IixkZXNjcmlwdGlvbjoiVGhlIGl0ZW1zIGFyZSBldmVubHkgZGlzdHJpYnV0ZWQgd2l0aGluIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyIGFsb25nIHRoZSBtYWluIGF4aXMuIn0se25hbWU6ImZsZXgtZW5kIixkZXNjcmlwdGlvbjoiRmxleCBpdGVtcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgZW5kIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJmbGV4LXN0YXJ0IixkZXNjcmlwdGlvbjoiRmxleCBpdGVtcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgc3RhcnQgb2YgdGhlIGxpbmUuIn0se25hbWU6InNwYWNlLWFyb3VuZCIsZGVzY3JpcHRpb246IkZsZXggaXRlbXMgYXJlIGV2ZW5seSBkaXN0cmlidXRlZCBpbiB0aGUgbGluZSwgd2l0aCBoYWxmLXNpemUgc3BhY2VzIG9uIGVpdGhlciBlbmQuIn0se25hbWU6InNwYWNlLWJldHdlZW4iLGRlc2NyaXB0aW9uOiJGbGV4IGl0ZW1zIGFyZSBldmVubHkgZGlzdHJpYnV0ZWQgaW4gdGhlIGxpbmUuIn0se25hbWU6ImJhc2VsaW5lIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHBhcnRpY2lwYXRpb24gaW4gZmlyc3QtYmFzZWxpbmUgYWxpZ25tZW50LiJ9LHtuYW1lOiJmaXJzdCBiYXNlbGluZSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBwYXJ0aWNpcGF0aW9uIGluIGZpcnN0LWJhc2VsaW5lIGFsaWdubWVudC4ifSx7bmFtZToibGFzdCBiYXNlbGluZSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBwYXJ0aWNpcGF0aW9uIGluIGxhc3QtYmFzZWxpbmUgYWxpZ25tZW50LiJ9XSxzeW50YXg6Im5vcm1hbCB8IDxjb250ZW50LWRpc3RyaWJ1dGlvbj4gfCA8b3ZlcmZsb3ctcG9zaXRpb24+PyBbIDxjb250ZW50LXBvc2l0aW9uPiB8IGxlZnQgfCByaWdodCBdIixyZWxldmFuY2U6ODUsZGVzY3JpcHRpb246IkFsaWducyBmbGV4IGl0ZW1zIGFsb25nIHRoZSBtYWluIGF4aXMgb2YgdGhlIGN1cnJlbnQgbGluZSBvZiB0aGUgZmxleCBjb250YWluZXIuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJrZXJuaW5nIix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgYWdlbnQgc2hvdWxkIGFkanVzdCBpbnRlci1nbHlwaCBzcGFjaW5nIGJhc2VkIG9uIGtlcm5pbmcgdGFibGVzIHRoYXQgYXJlIGluY2x1ZGVkIGluIHRoZSBmb250IHRoYXQgd2lsbCBiZSB1c2VkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkluZGljYXRlcyB3aGV0aGVyIHRoZSB1c2VyIGFnZW50IHNob3VsZCBhZGp1c3QgaW50ZXItZ2x5cGggc3BhY2luZyBiYXNlZCBvbiBrZXJuaW5nIHRhYmxlcyB0aGF0IGFyZSBpbmNsdWRlZCBpbiB0aGUgcmVsZXZhbnQgZm9udCBvciBpbnN0ZWFkIGRpc2FibGUgYXV0by1rZXJuaW5nIGFuZCBzZXQgaW50ZXItY2hhcmFjdGVyIHNwYWNpbmcgdG8gYSBzcGVjaWZpYyBsZW5ndGguIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJlbnVtIl19LHtuYW1lOiJsZWZ0Iix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRm9yIG5vbi1yZXBsYWNlZCBlbGVtZW50cywgdGhlIGVmZmVjdCBvZiB0aGlzIHZhbHVlIGRlcGVuZHMgb24gd2hpY2ggb2YgcmVsYXRlZCBwcm9wZXJ0aWVzIGhhdmUgdGhlIHZhbHVlICdhdXRvJyBhcyB3ZWxsIn1dLHN5bnRheDoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBhdXRvIixyZWxldmFuY2U6OTUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2xlZnQifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgZmFyIGFuIGFic29sdXRlbHkgcG9zaXRpb25lZCBib3gncyBsZWZ0IG1hcmdpbiBlZGdlIGlzIG9mZnNldCB0byB0aGUgcmlnaHQgb2YgdGhlIGxlZnQgZWRnZSBvZiB0aGUgYm94J3MgJ2NvbnRhaW5pbmcgYmxvY2snLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibGV0dGVyLXNwYWNpbmciLHZhbHVlczpbe25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IlRoZSBzcGFjaW5nIGlzIHRoZSBub3JtYWwgc3BhY2luZyBmb3IgdGhlIGN1cnJlbnQgZm9udC4gSXQgaXMgdHlwaWNhbGx5IHplcm8tbGVuZ3RoLiJ9XSxzeW50YXg6Im5vcm1hbCB8IDxsZW5ndGg+IixyZWxldmFuY2U6ODEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2xldHRlci1zcGFjaW5nIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG1pbmltdW0sIG1heGltdW0sIGFuZCBvcHRpbWFsIHNwYWNpbmcgYmV0d2VlbiBncmFwaGVtZSBjbHVzdGVycy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToibGlnaHRpbmctY29sb3IiLGJyb3dzZXJzOlsiRSIsIkM1IiwiRkYzIiwiSUUxMCIsIk85IiwiUzYiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIGNvbG9yIG9mIHRoZSBsaWdodCBzb3VyY2UgZm9yIGZpbHRlciBwcmltaXRpdmVzICdmZURpZmZ1c2VMaWdodGluZycgYW5kICdmZVNwZWN1bGFyTGlnaHRpbmcnLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6ImxpbmUtYnJlYWsiLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgVUEgZGV0ZXJtaW5lcyB0aGUgc2V0IG9mIGxpbmUtYnJlYWtpbmcgcmVzdHJpY3Rpb25zIHRvIHVzZSBmb3IgQ0pLIHNjcmlwdHMsIGFuZCBpdCBtYXkgdmFyeSB0aGUgcmVzdHJpY3Rpb25zIGJhc2VkIG9uIHRoZSBsZW5ndGggb2YgdGhlIGxpbmU7IGUuZy4sIHVzZSBhIGxlc3MgcmVzdHJpY3RpdmUgc2V0IG9mIGxpbmUtYnJlYWsgcnVsZXMgZm9yIHNob3J0IGxpbmVzLiJ9LHtuYW1lOiJsb29zZSIsZGVzY3JpcHRpb246IkJyZWFrcyB0ZXh0IHVzaW5nIHRoZSBsZWFzdCByZXN0cmljdGl2ZSBzZXQgb2YgbGluZS1icmVha2luZyBydWxlcy4gVHlwaWNhbGx5IHVzZWQgZm9yIHNob3J0IGxpbmVzLCBzdWNoIGFzIGluIG5ld3NwYXBlcnMuIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IkJyZWFrcyB0ZXh0IHVzaW5nIHRoZSBtb3N0IGNvbW1vbiBzZXQgb2YgbGluZS1icmVha2luZyBydWxlcy4ifSx7bmFtZToic3RyaWN0IixkZXNjcmlwdGlvbjoiQnJlYWtzIENKSyBzY3JpcHRzIHVzaW5nIGEgbW9yZSByZXN0cmljdGl2ZSBzZXQgb2YgbGluZS1icmVha2luZyBydWxlcyB0aGFuICdub3JtYWwnLiJ9XSxzeW50YXg6ImF1dG8gfCBsb29zZSB8IG5vcm1hbCB8IHN0cmljdCB8IGFueXdoZXJlIixyZWxldmFuY2U6NTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2xpbmUtYnJlYWsifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB3aGF0IHNldCBvZiBsaW5lIGJyZWFraW5nIHJlc3RyaWN0aW9ucyBhcmUgaW4gZWZmZWN0IHdpdGhpbiB0aGUgZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImxpbmUtaGVpZ2h0Iix2YWx1ZXM6W3tuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJUZWxscyB1c2VyIGFnZW50cyB0byBzZXQgdGhlIGNvbXB1dGVkIHZhbHVlIHRvIGEgJ3JlYXNvbmFibGUnIHZhbHVlIGJhc2VkIG9uIHRoZSBmb250IHNpemUgb2YgdGhlIGVsZW1lbnQuIn1dLHN5bnRheDoibm9ybWFsIHwgPG51bWJlcj4gfCA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiIscmVsZXZhbmNlOjkzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9saW5lLWhlaWdodCJ9XSxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgYmxvY2stcHJvZ3Jlc3Npb24gZGltZW5zaW9uIG9mIHRoZSB0ZXh0IGNvbnRlbnQgYXJlYSBvZiBhbiBpbmxpbmUgYm94LiIscmVzdHJpY3Rpb25zOlsibnVtYmVyIiwibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibGlzdC1zdHlsZSIsdmFsdWVzOlt7bmFtZToiYXJtZW5pYW4ifSx7bmFtZToiY2lyY2xlIixkZXNjcmlwdGlvbjoiQSBob2xsb3cgY2lyY2xlLiJ9LHtuYW1lOiJkZWNpbWFsIn0se25hbWU6ImRlY2ltYWwtbGVhZGluZy16ZXJvIn0se25hbWU6ImRpc2MiLGRlc2NyaXB0aW9uOiJBIGZpbGxlZCBjaXJjbGUuIn0se25hbWU6Imdlb3JnaWFuIn0se25hbWU6Imluc2lkZSIsZGVzY3JpcHRpb246IlRoZSBtYXJrZXIgYm94IGlzIG91dHNpZGUgdGhlIHByaW5jaXBhbCBibG9jayBib3gsIGFzIGRlc2NyaWJlZCBpbiB0aGUgc2VjdGlvbiBvbiB0aGUgOjptYXJrZXIgcHNldWRvLWVsZW1lbnQgYmVsb3cuIn0se25hbWU6Imxvd2VyLWFscGhhIn0se25hbWU6Imxvd2VyLWdyZWVrIn0se25hbWU6Imxvd2VyLWxhdGluIn0se25hbWU6Imxvd2VyLXJvbWFuIn0se25hbWU6Im5vbmUifSx7bmFtZToib3V0c2lkZSIsZGVzY3JpcHRpb246IlRoZSA6Om1hcmtlciBwc2V1ZG8tZWxlbWVudCBpcyBhbiBpbmxpbmUgZWxlbWVudCBwbGFjZWQgaW1tZWRpYXRlbHkgYmVmb3JlIGFsbCA6OmJlZm9yZSBwc2V1ZG8tZWxlbWVudHMgaW4gdGhlIHByaW5jaXBhbCBibG9jayBib3gsIGFmdGVyIHdoaWNoIHRoZSBlbGVtZW50J3MgY29udGVudCBmbG93cy4ifSx7bmFtZToic3F1YXJlIixkZXNjcmlwdGlvbjoiQSBmaWxsZWQgc3F1YXJlLiJ9LHtuYW1lOiJzeW1ib2xzKCkiLGRlc2NyaXB0aW9uOiJBbGxvd3MgYSBjb3VudGVyIHN0eWxlIHRvIGJlIGRlZmluZWQgaW5saW5lLiJ9LHtuYW1lOiJ1cHBlci1hbHBoYSJ9LHtuYW1lOiJ1cHBlci1sYXRpbiJ9LHtuYW1lOiJ1cHBlci1yb21hbiJ9LHtuYW1lOiJ1cmwoKSJ9XSxzeW50YXg6IjwnbGlzdC1zdHlsZS10eXBlJz4gfHwgPCdsaXN0LXN0eWxlLXBvc2l0aW9uJz4gfHwgPCdsaXN0LXN0eWxlLWltYWdlJz4iLHJlbGV2YW5jZTo4NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbGlzdC1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIGZvciBzZXR0aW5nICdsaXN0LXN0eWxlLXR5cGUnLCAnbGlzdC1zdHlsZS1wb3NpdGlvbicgYW5kICdsaXN0LXN0eWxlLWltYWdlJyIscmVzdHJpY3Rpb25zOlsiaW1hZ2UiLCJlbnVtIiwidXJsIl19LHtuYW1lOiJsaXN0LXN0eWxlLWltYWdlIix2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIGRlZmF1bHQgY29udGVudHMgb2YgdGhlIG9mIHRoZSBsaXN0IGl0ZW3igJlzIG1hcmtlciBhcmUgZ2l2ZW4gYnkgJ2xpc3Qtc3R5bGUtdHlwZScgaW5zdGVhZC4ifV0sc3ludGF4OiI8aW1hZ2U+IHwgbm9uZSIscmVsZXZhbmNlOjUyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9saXN0LXN0eWxlLWltYWdlIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBpbWFnZSB0aGF0IHdpbGwgYmUgdXNlZCBhcyB0aGUgbGlzdCBpdGVtIG1hcmtlci4gV2hlbiB0aGUgaW1hZ2UgaXMgYXZhaWxhYmxlLCBpdCB3aWxsIHJlcGxhY2UgdGhlIG1hcmtlciBzZXQgd2l0aCB0aGUgJ2xpc3Qtc3R5bGUtdHlwZScgbWFya2VyLiIscmVzdHJpY3Rpb25zOlsiaW1hZ2UiXX0se25hbWU6Imxpc3Qtc3R5bGUtcG9zaXRpb24iLHZhbHVlczpbe25hbWU6Imluc2lkZSIsZGVzY3JpcHRpb246IlRoZSBtYXJrZXIgYm94IGlzIG91dHNpZGUgdGhlIHByaW5jaXBhbCBibG9jayBib3gsIGFzIGRlc2NyaWJlZCBpbiB0aGUgc2VjdGlvbiBvbiB0aGUgOjptYXJrZXIgcHNldWRvLWVsZW1lbnQgYmVsb3cuIn0se25hbWU6Im91dHNpZGUiLGRlc2NyaXB0aW9uOiJUaGUgOjptYXJrZXIgcHNldWRvLWVsZW1lbnQgaXMgYW4gaW5saW5lIGVsZW1lbnQgcGxhY2VkIGltbWVkaWF0ZWx5IGJlZm9yZSBhbGwgOjpiZWZvcmUgcHNldWRvLWVsZW1lbnRzIGluIHRoZSBwcmluY2lwYWwgYmxvY2sgYm94LCBhZnRlciB3aGljaCB0aGUgZWxlbWVudCdzIGNvbnRlbnQgZmxvd3MuIn1dLHN5bnRheDoiaW5zaWRlIHwgb3V0c2lkZSIscmVsZXZhbmNlOjU1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9saXN0LXN0eWxlLXBvc2l0aW9uIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSAnOjptYXJrZXInIHBzZXVkby1lbGVtZW50J3MgYm94IGluIHRoZSBsaXN0IGl0ZW0uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJsaXN0LXN0eWxlLXR5cGUiLHZhbHVlczpbe25hbWU6ImFybWVuaWFuIixkZXNjcmlwdGlvbjoiVHJhZGl0aW9uYWwgdXBwZXJjYXNlIEFybWVuaWFuIG51bWJlcmluZy4ifSx7bmFtZToiY2lyY2xlIixkZXNjcmlwdGlvbjoiQSBob2xsb3cgY2lyY2xlLiJ9LHtuYW1lOiJkZWNpbWFsIixkZXNjcmlwdGlvbjoiV2VzdGVybiBkZWNpbWFsIG51bWJlcnMuIn0se25hbWU6ImRlY2ltYWwtbGVhZGluZy16ZXJvIixkZXNjcmlwdGlvbjoiRGVjaW1hbCBudW1iZXJzIHBhZGRlZCBieSBpbml0aWFsIHplcm9zLiJ9LHtuYW1lOiJkaXNjIixkZXNjcmlwdGlvbjoiQSBmaWxsZWQgY2lyY2xlLiJ9LHtuYW1lOiJnZW9yZ2lhbiIsZGVzY3JpcHRpb246IlRyYWRpdGlvbmFsIEdlb3JnaWFuIG51bWJlcmluZy4ifSx7bmFtZToibG93ZXItYWxwaGEiLGRlc2NyaXB0aW9uOiJMb3dlcmNhc2UgQVNDSUkgbGV0dGVycy4ifSx7bmFtZToibG93ZXItZ3JlZWsiLGRlc2NyaXB0aW9uOiJMb3dlcmNhc2UgY2xhc3NpY2FsIEdyZWVrLiJ9LHtuYW1lOiJsb3dlci1sYXRpbiIsZGVzY3JpcHRpb246Ikxvd2VyY2FzZSBBU0NJSSBsZXR0ZXJzLiJ9LHtuYW1lOiJsb3dlci1yb21hbiIsZGVzY3JpcHRpb246Ikxvd2VyY2FzZSBBU0NJSSBSb21hbiBudW1lcmFscy4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIG1hcmtlciJ9LHtuYW1lOiJzcXVhcmUiLGRlc2NyaXB0aW9uOiJBIGZpbGxlZCBzcXVhcmUuIn0se25hbWU6InN5bWJvbHMoKSIsZGVzY3JpcHRpb246IkFsbG93cyBhIGNvdW50ZXIgc3R5bGUgdG8gYmUgZGVmaW5lZCBpbmxpbmUuIn0se25hbWU6InVwcGVyLWFscGhhIixkZXNjcmlwdGlvbjoiVXBwZXJjYXNlIEFTQ0lJIGxldHRlcnMuIn0se25hbWU6InVwcGVyLWxhdGluIixkZXNjcmlwdGlvbjoiVXBwZXJjYXNlIEFTQ0lJIGxldHRlcnMuIn0se25hbWU6InVwcGVyLXJvbWFuIixkZXNjcmlwdGlvbjoiVXBwZXJjYXNlIEFTQ0lJIFJvbWFuIG51bWVyYWxzLiJ9XSxzeW50YXg6Ijxjb3VudGVyLXN0eWxlPiB8IDxzdHJpbmc+IHwgbm9uZSIscmVsZXZhbmNlOjc1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9saXN0LXN0eWxlLXR5cGUifV0sZGVzY3JpcHRpb246IlVzZWQgdG8gY29uc3RydWN0IHRoZSBkZWZhdWx0IGNvbnRlbnRzIG9mIGEgbGlzdCBpdGVt4oCZcyBtYXJrZXIiLHJlc3RyaWN0aW9uczpbImVudW0iLCJzdHJpbmciXX0se25hbWU6Im1hcmdpbiIsdmFsdWVzOlt7bmFtZToiYXV0byJ9XSxzeW50YXg6IlsgPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBhdXRvIF17MSw0fSIscmVsZXZhbmNlOjk2LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXJnaW4ifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSB0byBzZXQgdmFsdWVzIGZvciB0aGUgdGhpY2tuZXNzIG9mIHRoZSBtYXJnaW4gYXJlYS4gSWYgbGVmdCBpcyBvbWl0dGVkLCBpdCBpcyB0aGUgc2FtZSBhcyByaWdodC4gSWYgYm90dG9tIGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLCBpZiByaWdodCBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcC4gTmVnYXRpdmUgdmFsdWVzIGZvciBtYXJnaW4gcHJvcGVydGllcyBhcmUgYWxsb3dlZCwgYnV0IHRoZXJlIG1heSBiZSBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBsaW1pdHMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtYXJnaW4tYmxvY2stZW5kIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHZhbHVlczpbe25hbWU6ImF1dG8ifV0sc3ludGF4OiI8J21hcmdpbi1sZWZ0Jz4iLHJlbGV2YW5jZTo1MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFyZ2luLWJsb2NrLWVuZCJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnbWFyZ2luLWJvdHRvbScuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnTigJlzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im1hcmdpbi1ibG9jay1zdGFydCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIn1dLHN5bnRheDoiPCdtYXJnaW4tbGVmdCc+IixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hcmdpbi1ibG9jay1zdGFydCJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnbWFyZ2luLXRvcCcuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnTigJlzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im1hcmdpbi1ib3R0b20iLHZhbHVlczpbe25hbWU6ImF1dG8ifV0sc3ludGF4OiI8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGF1dG8iLHJlbGV2YW5jZTo5MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFyZ2luLWJvdHRvbSJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IHRvIHNldCB2YWx1ZXMgZm9yIHRoZSB0aGlja25lc3Mgb2YgdGhlIG1hcmdpbiBhcmVhLiBJZiBsZWZ0IGlzIG9taXR0ZWQsIGl0IGlzIHRoZSBzYW1lIGFzIHJpZ2h0LiBJZiBib3R0b20gaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AsIGlmIHJpZ2h0IGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLiBOZWdhdGl2ZSB2YWx1ZXMgZm9yIG1hcmdpbiBwcm9wZXJ0aWVzIGFyZSBhbGxvd2VkLCBidXQgdGhlcmUgbWF5IGJlIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIGxpbWl0cy4uIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtYXJnaW4taW5saW5lLWVuZCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIn1dLHN5bnRheDoiPCdtYXJnaW4tbGVmdCc+IixyZWxldmFuY2U6NTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hcmdpbi1pbmxpbmUtZW5kIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdtYXJnaW4tcmlnaHQnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtYXJnaW4taW5saW5lLXN0YXJ0Iixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHZhbHVlczpbe25hbWU6ImF1dG8ifV0sc3ludGF4OiI8J21hcmdpbi1sZWZ0Jz4iLHJlbGV2YW5jZTo1MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFyZ2luLWlubGluZS1zdGFydCJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnbWFyZ2luLWxlZnQnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtYXJnaW4tbGVmdCIsdmFsdWVzOlt7bmFtZToiYXV0byJ9XSxzeW50YXg6IjxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byIscmVsZXZhbmNlOjkyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXJnaW4tbGVmdCJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IHRvIHNldCB2YWx1ZXMgZm9yIHRoZSB0aGlja25lc3Mgb2YgdGhlIG1hcmdpbiBhcmVhLiBJZiBsZWZ0IGlzIG9taXR0ZWQsIGl0IGlzIHRoZSBzYW1lIGFzIHJpZ2h0LiBJZiBib3R0b20gaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AsIGlmIHJpZ2h0IGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLiBOZWdhdGl2ZSB2YWx1ZXMgZm9yIG1hcmdpbiBwcm9wZXJ0aWVzIGFyZSBhbGxvd2VkLCBidXQgdGhlcmUgbWF5IGJlIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIGxpbWl0cy4uIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtYXJnaW4tcmlnaHQiLHZhbHVlczpbe25hbWU6ImF1dG8ifV0sc3ludGF4OiI8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGF1dG8iLHJlbGV2YW5jZTo5MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFyZ2luLXJpZ2h0In1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgdG8gc2V0IHZhbHVlcyBmb3IgdGhlIHRoaWNrbmVzcyBvZiB0aGUgbWFyZ2luIGFyZWEuIElmIGxlZnQgaXMgb21pdHRlZCwgaXQgaXMgdGhlIHNhbWUgYXMgcmlnaHQuIElmIGJvdHRvbSBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcCwgaWYgcmlnaHQgaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AuIE5lZ2F0aXZlIHZhbHVlcyBmb3IgbWFyZ2luIHByb3BlcnRpZXMgYXJlIGFsbG93ZWQsIGJ1dCB0aGVyZSBtYXkgYmUgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgbGltaXRzLi4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im1hcmdpbi10b3AiLHZhbHVlczpbe25hbWU6ImF1dG8ifV0sc3ludGF4OiI8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGF1dG8iLHJlbGV2YW5jZTo5NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFyZ2luLXRvcCJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IHRvIHNldCB2YWx1ZXMgZm9yIHRoZSB0aGlja25lc3Mgb2YgdGhlIG1hcmdpbiBhcmVhLiBJZiBsZWZ0IGlzIG9taXR0ZWQsIGl0IGlzIHRoZSBzYW1lIGFzIHJpZ2h0LiBJZiBib3R0b20gaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AsIGlmIHJpZ2h0IGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLiBOZWdhdGl2ZSB2YWx1ZXMgZm9yIG1hcmdpbiBwcm9wZXJ0aWVzIGFyZSBhbGxvd2VkLCBidXQgdGhlcmUgbWF5IGJlIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIGxpbWl0cy4uIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtYXJrZXIiLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBubyBtYXJrZXIgc3ltYm9sIHdpbGwgYmUgZHJhd24gYXQgdGhlIGdpdmVuIHZlcnRleCBvciB2ZXJ0aWNlcy4ifSx7bmFtZToidXJsKCkiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgPG1hcmtlcj4gZWxlbWVudCByZWZlcmVuY2VkIHdpbGwgYmUgdXNlZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG1hcmtlciBzeW1ib2wgdGhhdCBzaGFsbCBiZSB1c2VkIGZvciBhbGwgcG9pbnRzIG9uIHRoZSBzZXRzIHRoZSB2YWx1ZSBmb3IgYWxsIHZlcnRpY2VzIG9uIHRoZSBnaXZlbiDigJhwYXRo4oCZIGVsZW1lbnQgb3IgYmFzaWMgc2hhcGUuIixyZXN0cmljdGlvbnM6WyJ1cmwiXX0se25hbWU6Im1hcmtlci1lbmQiLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBubyBtYXJrZXIgc3ltYm9sIHdpbGwgYmUgZHJhd24gYXQgdGhlIGdpdmVuIHZlcnRleCBvciB2ZXJ0aWNlcy4ifSx7bmFtZToidXJsKCkiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgPG1hcmtlcj4gZWxlbWVudCByZWZlcmVuY2VkIHdpbGwgYmUgdXNlZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG1hcmtlciB0aGF0IHdpbGwgYmUgZHJhd24gYXQgdGhlIGxhc3QgdmVydGljZXMgb2YgdGhlIGdpdmVuIG1hcmthYmxlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJ1cmwiXX0se25hbWU6Im1hcmtlci1taWQiLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBubyBtYXJrZXIgc3ltYm9sIHdpbGwgYmUgZHJhd24gYXQgdGhlIGdpdmVuIHZlcnRleCBvciB2ZXJ0aWNlcy4ifSx7bmFtZToidXJsKCkiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgPG1hcmtlcj4gZWxlbWVudCByZWZlcmVuY2VkIHdpbGwgYmUgdXNlZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG1hcmtlciB0aGF0IHdpbGwgYmUgZHJhd24gYXQgYWxsIHZlcnRpY2VzIGV4Y2VwdCB0aGUgZmlyc3QgYW5kIGxhc3QuIixyZXN0cmljdGlvbnM6WyJ1cmwiXX0se25hbWU6Im1hcmtlci1zdGFydCIsdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IG5vIG1hcmtlciBzeW1ib2wgd2lsbCBiZSBkcmF3biBhdCB0aGUgZ2l2ZW4gdmVydGV4IG9yIHZlcnRpY2VzLiJ9LHtuYW1lOiJ1cmwoKSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSA8bWFya2VyPiBlbGVtZW50IHJlZmVyZW5jZWQgd2lsbCBiZSB1c2VkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbWFya2VyIHRoYXQgd2lsbCBiZSBkcmF3biBhdCB0aGUgZmlyc3QgdmVydGljZXMgb2YgdGhlIGdpdmVuIG1hcmthYmxlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJ1cmwiXX0se25hbWU6Im1hc2staW1hZ2UiLGJyb3dzZXJzOlsiRTc5IiwiRkY1MyIsIlMxNS40IiwiQzEiLCJPMTUiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiQ291bnRzIGFzIGEgdHJhbnNwYXJlbnQgYmxhY2sgaW1hZ2UgbGF5ZXIuIn0se25hbWU6InVybCgpIixkZXNjcmlwdGlvbjoiUmVmZXJlbmNlIHRvIGEgPG1hc2sgZWxlbWVudCBvciB0byBhIENTUyBpbWFnZS4ifV0sc3ludGF4OiI8bWFzay1yZWZlcmVuY2U+IyIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLWltYWdlIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBtYXNrIGxheWVyIGltYWdlIG9mIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJ1cmwiLCJpbWFnZSIsImVudW0iXX0se25hbWU6Im1hc2stbW9kZSIsYnJvd3NlcnM6WyJGRjUzIiwiUzE1LjQiXSx2YWx1ZXM6W3tuYW1lOiJhbHBoYSIsZGVzY3JpcHRpb246IkFscGhhIHZhbHVlcyBvZiB0aGUgbWFzayBsYXllciBpbWFnZSBzaG91bGQgYmUgdXNlZCBhcyB0aGUgbWFzayB2YWx1ZXMuIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJVc2UgYWxwaGEgdmFsdWVzIGlmICdtYXNrLWltYWdlJyBpcyBhbiBpbWFnZSwgbHVtaW5hbmNlIGlmIGEgPG1hc2s+IGVsZW1lbnQgb3IgYSBDU1MgaW1hZ2UuIn0se25hbWU6Imx1bWluYW5jZSIsZGVzY3JpcHRpb246Ikx1bWluYW5jZSB2YWx1ZXMgb2YgdGhlIG1hc2sgbGF5ZXIgaW1hZ2Ugc2hvdWxkIGJlIHVzZWQgYXMgdGhlIG1hc2sgdmFsdWVzLiJ9XSxzeW50YXg6IjxtYXNraW5nLW1vZGU+IyIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLW1vZGUifV0sZGVzY3JpcHRpb246IkluZGljYXRlcyB3aGV0aGVyIHRoZSBtYXNrIGxheWVyIGltYWdlIGlzIHRyZWF0ZWQgYXMgbHVtaW5hbmNlIG1hc2sgb3IgYWxwaGEgbWFzay4iLHJlc3RyaWN0aW9uczpbInVybCIsImltYWdlIiwiZW51bSJdfSx7bmFtZToibWFzay1vcmlnaW4iLGJyb3dzZXJzOlsiRTc5IiwiRkY1MyIsIlMxNS40IiwiQzEiLCJPMTUiXSxzeW50YXg6IjxnZW9tZXRyeS1ib3g+IyIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLW9yaWdpbiJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtYXNrIHBvc2l0aW9uaW5nIGFyZWEuIixyZXN0cmljdGlvbnM6WyJnZW9tZXRyeS1ib3giLCJlbnVtIl19LHtuYW1lOiJtYXNrLXBvc2l0aW9uIixicm93c2VyczpbIkU3OSIsIkZGNTMiLCJTMTUuNCIsIkMxIiwiTzE1Il0sc3ludGF4OiI8cG9zaXRpb24+IyIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLXBvc2l0aW9uIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IG1hc2sgbGF5ZXIgaW1hZ2VzIGFyZSBwb3NpdGlvbmVkLiIscmVzdHJpY3Rpb25zOlsicG9zaXRpb24iLCJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtYXNrLXJlcGVhdCIsYnJvd3NlcnM6WyJFNzkiLCJGRjUzIiwiUzE1LjQiLCJDMSIsIk8xNSJdLHN5bnRheDoiPHJlcGVhdC1zdHlsZT4jIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hc2stcmVwZWF0In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IG1hc2sgbGF5ZXIgaW1hZ2VzIGFyZSB0aWxlZCBhZnRlciB0aGV5IGhhdmUgYmVlbiBzaXplZCBhbmQgcG9zaXRpb25lZC4iLHJlc3RyaWN0aW9uczpbInJlcGVhdCJdfSx7bmFtZToibWFzay1zaXplIixicm93c2VyczpbIkU3OSIsIkZGNTMiLCJTMTUuNCIsIkM0IiwiTzE1Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlJlc29sdmVkIGJ5IHVzaW5nIHRoZSBpbWFnZeKAmXMgaW50cmluc2ljIHJhdGlvIGFuZCB0aGUgc2l6ZSBvZiB0aGUgb3RoZXIgZGltZW5zaW9uLCBvciBmYWlsaW5nIHRoYXQsIHVzaW5nIHRoZSBpbWFnZeKAmXMgaW50cmluc2ljIHNpemUsIG9yIGZhaWxpbmcgdGhhdCwgdHJlYXRpbmcgaXQgYXMgMTAwJS4ifSx7bmFtZToiY29udGFpbiIsZGVzY3JpcHRpb246IlNjYWxlIHRoZSBpbWFnZSwgd2hpbGUgcHJlc2VydmluZyBpdHMgaW50cmluc2ljIGFzcGVjdCByYXRpbyAoaWYgYW55KSwgdG8gdGhlIGxhcmdlc3Qgc2l6ZSBzdWNoIHRoYXQgYm90aCBpdHMgd2lkdGggYW5kIGl0cyBoZWlnaHQgY2FuIGZpdCBpbnNpZGUgdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4ifSx7bmFtZToiY292ZXIiLGRlc2NyaXB0aW9uOiJTY2FsZSB0aGUgaW1hZ2UsIHdoaWxlIHByZXNlcnZpbmcgaXRzIGludHJpbnNpYyBhc3BlY3QgcmF0aW8gKGlmIGFueSksIHRvIHRoZSBzbWFsbGVzdCBzaXplIHN1Y2ggdGhhdCBib3RoIGl0cyB3aWR0aCBhbmQgaXRzIGhlaWdodCBjYW4gY29tcGxldGVseSBjb3ZlciB0aGUgYmFja2dyb3VuZCBwb3NpdGlvbmluZyBhcmVhLiJ9XSxzeW50YXg6IjxiZy1zaXplPiMiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFzay1zaXplIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIG1hc2sgbGF5ZXIgaW1hZ2VzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSIsImVudW0iXX0se25hbWU6Im1hc2stdHlwZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjM1IiwiUzciLCJDMjQiLCJPMTUiXSx2YWx1ZXM6W3tuYW1lOiJhbHBoYSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBhbHBoYSB2YWx1ZXMgb2YgdGhlIG1hc2sgc2hvdWxkIGJlIHVzZWQuIn0se25hbWU6Imx1bWluYW5jZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBsdW1pbmFuY2UgdmFsdWVzIG9mIHRoZSBtYXNrIHNob3VsZCBiZSB1c2VkLiJ9XSxzeW50YXg6Imx1bWluYW5jZSB8IGFscGhhIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hc2stdHlwZSJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGV0aGVyIHRoZSBjb250ZW50IG9mIHRoZSA8bWFzaz4gZWxlbWVudCBpcyB0cmVhdGVkIGFzIGFzIGx1bWluYW5jZSBtYXNrIG9yIGFscGhhIG1hc2suIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJtYXgtYmxvY2stc2l6ZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gbGltaXQgb24gdGhlIHdpZHRoIG9mIHRoZSBib3guIn1dLHN5bnRheDoiPCdtYXgtd2lkdGgnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXgtYmxvY2stc2l6ZSJ9XSxkZXNjcmlwdGlvbjoiTWF4aW11bSBzaXplIG9mIGFuIGVsZW1lbnQgaW4gdGhlIGRpcmVjdGlvbiBvcHBvc2l0ZSB0aGF0IG9mIHRoZSBkaXJlY3Rpb24gc3BlY2lmaWVkIGJ5ICd3cml0aW5nLW1vZGUnLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWF4LWhlaWdodCIsdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGxpbWl0IG9uIHRoZSBoZWlnaHQgb2YgdGhlIGJveC4ifSx7bmFtZToiZml0LWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJVc2UgdGhlIGZpdC1jb250ZW50IGlubGluZSBzaXplIG9yIGZpdC1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn0se25hbWU6Im1heC1jb250ZW50IixkZXNjcmlwdGlvbjoiVXNlIHRoZSBtYXgtY29udGVudCBpbmxpbmUgc2l6ZSBvciBtYXgtY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJtaW4tY29udGVudCIsZGVzY3JpcHRpb246IlVzZSB0aGUgbWluLWNvbnRlbnQgaW5saW5lIHNpemUgb3IgbWluLWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifV0sc3ludGF4OiI8dmlld3BvcnQtbGVuZ3RoPiIscmVsZXZhbmNlOjg1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXgtaGVpZ2h0In1dLGRlc2NyaXB0aW9uOiJBbGxvd3MgYXV0aG9ycyB0byBjb25zdHJhaW4gY29udGVudCBoZWlnaHQgdG8gYSBjZXJ0YWluIHJhbmdlLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWF4LWlubGluZS1zaXplIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBsaW1pdCBvbiB0aGUgaGVpZ2h0IG9mIHRoZSBib3guIn1dLHN5bnRheDoiPCdtYXgtd2lkdGgnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXgtaW5saW5lLXNpemUifV0sZGVzY3JpcHRpb246Ik1heGltdW0gc2l6ZSBvZiBhbiBlbGVtZW50IGluIHRoZSBkaXJlY3Rpb24gc3BlY2lmaWVkIGJ5ICd3cml0aW5nLW1vZGUnLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWF4LXdpZHRoIix2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gbGltaXQgb24gdGhlIHdpZHRoIG9mIHRoZSBib3guIn0se25hbWU6ImZpdC1jb250ZW50IixkZXNjcmlwdGlvbjoiVXNlIHRoZSBmaXQtY29udGVudCBpbmxpbmUgc2l6ZSBvciBmaXQtY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJtYXgtY29udGVudCIsZGVzY3JpcHRpb246IlVzZSB0aGUgbWF4LWNvbnRlbnQgaW5saW5lIHNpemUgb3IgbWF4LWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifSx7bmFtZToibWluLWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJVc2UgdGhlIG1pbi1jb250ZW50IGlubGluZSBzaXplIG9yIG1pbi1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn1dLHN5bnRheDoiPHZpZXdwb3J0LWxlbmd0aD4iLHJlbGV2YW5jZTo5MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWF4LXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJBbGxvd3MgYXV0aG9ycyB0byBjb25zdHJhaW4gY29udGVudCB3aWR0aCB0byBhIGNlcnRhaW4gcmFuZ2UuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtaW4tYmxvY2stc2l6ZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNTciLCJPNDQiXSxzeW50YXg6IjwnbWluLXdpZHRoJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWluLWJsb2NrLXNpemUifV0sZGVzY3JpcHRpb246Ik1pbmltYWwgc2l6ZSBvZiBhbiBlbGVtZW50IGluIHRoZSBkaXJlY3Rpb24gb3Bwb3NpdGUgdGhhdCBvZiB0aGUgZGlyZWN0aW9uIHNwZWNpZmllZCBieSAnd3JpdGluZy1tb2RlJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im1pbi1oZWlnaHQiLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToiZml0LWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJVc2UgdGhlIGZpdC1jb250ZW50IGlubGluZSBzaXplIG9yIGZpdC1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn0se25hbWU6Im1heC1jb250ZW50IixkZXNjcmlwdGlvbjoiVXNlIHRoZSBtYXgtY29udGVudCBpbmxpbmUgc2l6ZSBvciBtYXgtY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJtaW4tY29udGVudCIsZGVzY3JpcHRpb246IlVzZSB0aGUgbWluLWNvbnRlbnQgaW5saW5lIHNpemUgb3IgbWluLWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifV0sc3ludGF4OiI8dmlld3BvcnQtbGVuZ3RoPiIscmVsZXZhbmNlOjkwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9taW4taGVpZ2h0In1dLGRlc2NyaXB0aW9uOiJBbGxvd3MgYXV0aG9ycyB0byBjb25zdHJhaW4gY29udGVudCBoZWlnaHQgdG8gYSBjZXJ0YWluIHJhbmdlLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWluLWlubGluZS1zaXplIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM1NyIsIk80NCJdLHN5bnRheDoiPCdtaW4td2lkdGgnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9taW4taW5saW5lLXNpemUifV0sZGVzY3JpcHRpb246Ik1pbmltYWwgc2l6ZSBvZiBhbiBlbGVtZW50IGluIHRoZSBkaXJlY3Rpb24gc3BlY2lmaWVkIGJ5ICd3cml0aW5nLW1vZGUnLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWluLXdpZHRoIix2YWx1ZXM6W3tuYW1lOiJhdXRvIn0se25hbWU6ImZpdC1jb250ZW50IixkZXNjcmlwdGlvbjoiVXNlIHRoZSBmaXQtY29udGVudCBpbmxpbmUgc2l6ZSBvciBmaXQtY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJtYXgtY29udGVudCIsZGVzY3JpcHRpb246IlVzZSB0aGUgbWF4LWNvbnRlbnQgaW5saW5lIHNpemUgb3IgbWF4LWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifSx7bmFtZToibWluLWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJVc2UgdGhlIG1pbi1jb250ZW50IGlubGluZSBzaXplIG9yIG1pbi1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn1dLHN5bnRheDoiPHZpZXdwb3J0LWxlbmd0aD4iLHJlbGV2YW5jZTo4OCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWluLXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJBbGxvd3MgYXV0aG9ycyB0byBjb25zdHJhaW4gY29udGVudCB3aWR0aCB0byBhIGNlcnRhaW4gcmFuZ2UuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtaXgtYmxlbmQtbW9kZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjMyIiwiUzgiLCJDNDEiLCJPMjgiXSx2YWx1ZXM6W3tuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJEZWZhdWx0IGF0dHJpYnV0ZSB3aGljaCBzcGVjaWZpZXMgbm8gYmxlbmRpbmcifSx7bmFtZToibXVsdGlwbHkiLGRlc2NyaXB0aW9uOiJUaGUgc291cmNlIGNvbG9yIGlzIG11bHRpcGxpZWQgYnkgdGhlIGRlc3RpbmF0aW9uIGNvbG9yIGFuZCByZXBsYWNlcyB0aGUgZGVzdGluYXRpb24uIn0se25hbWU6InNjcmVlbiIsZGVzY3JpcHRpb246Ik11bHRpcGxpZXMgdGhlIGNvbXBsZW1lbnRzIG9mIHRoZSBiYWNrZHJvcCBhbmQgc291cmNlIGNvbG9yIHZhbHVlcywgdGhlbiBjb21wbGVtZW50cyB0aGUgcmVzdWx0LiJ9LHtuYW1lOiJvdmVybGF5IixkZXNjcmlwdGlvbjoiTXVsdGlwbGllcyBvciBzY3JlZW5zIHRoZSBjb2xvcnMsIGRlcGVuZGluZyBvbiB0aGUgYmFja2Ryb3AgY29sb3IgdmFsdWUuIn0se25hbWU6ImRhcmtlbiIsZGVzY3JpcHRpb246IlNlbGVjdHMgdGhlIGRhcmtlciBvZiB0aGUgYmFja2Ryb3AgYW5kIHNvdXJjZSBjb2xvcnMuIn0se25hbWU6ImxpZ2h0ZW4iLGRlc2NyaXB0aW9uOiJTZWxlY3RzIHRoZSBsaWdodGVyIG9mIHRoZSBiYWNrZHJvcCBhbmQgc291cmNlIGNvbG9ycy4ifSx7bmFtZToiY29sb3ItZG9kZ2UiLGRlc2NyaXB0aW9uOiJCcmlnaHRlbnMgdGhlIGJhY2tkcm9wIGNvbG9yIHRvIHJlZmxlY3QgdGhlIHNvdXJjZSBjb2xvci4ifSx7bmFtZToiY29sb3ItYnVybiIsZGVzY3JpcHRpb246IkRhcmtlbnMgdGhlIGJhY2tkcm9wIGNvbG9yIHRvIHJlZmxlY3QgdGhlIHNvdXJjZSBjb2xvci4ifSx7bmFtZToiaGFyZC1saWdodCIsZGVzY3JpcHRpb246Ik11bHRpcGxpZXMgb3Igc2NyZWVucyB0aGUgY29sb3JzLCBkZXBlbmRpbmcgb24gdGhlIHNvdXJjZSBjb2xvciB2YWx1ZS4ifSx7bmFtZToic29mdC1saWdodCIsZGVzY3JpcHRpb246IkRhcmtlbnMgb3IgbGlnaHRlbnMgdGhlIGNvbG9ycywgZGVwZW5kaW5nIG9uIHRoZSBzb3VyY2UgY29sb3IgdmFsdWUuIn0se25hbWU6ImRpZmZlcmVuY2UiLGRlc2NyaXB0aW9uOiJTdWJ0cmFjdHMgdGhlIGRhcmtlciBvZiB0aGUgdHdvIGNvbnN0aXR1ZW50IGNvbG9ycyBmcm9tIHRoZSBsaWdodGVyIGNvbG9yLi4ifSx7bmFtZToiZXhjbHVzaW9uIixkZXNjcmlwdGlvbjoiUHJvZHVjZXMgYW4gZWZmZWN0IHNpbWlsYXIgdG8gdGhhdCBvZiB0aGUgRGlmZmVyZW5jZSBtb2RlIGJ1dCBsb3dlciBpbiBjb250cmFzdC4ifSx7bmFtZToiaHVlIixicm93c2VyczpbIkU3OSIsIkZGMzIiLCJTOCIsIkM0MSIsIk8yOCJdLGRlc2NyaXB0aW9uOiJDcmVhdGVzIGEgY29sb3Igd2l0aCB0aGUgaHVlIG9mIHRoZSBzb3VyY2UgY29sb3IgYW5kIHRoZSBzYXR1cmF0aW9uIGFuZCBsdW1pbm9zaXR5IG9mIHRoZSBiYWNrZHJvcCBjb2xvci4ifSx7bmFtZToic2F0dXJhdGlvbiIsYnJvd3NlcnM6WyJFNzkiLCJGRjMyIiwiUzgiLCJDNDEiLCJPMjgiXSxkZXNjcmlwdGlvbjoiQ3JlYXRlcyBhIGNvbG9yIHdpdGggdGhlIHNhdHVyYXRpb24gb2YgdGhlIHNvdXJjZSBjb2xvciBhbmQgdGhlIGh1ZSBhbmQgbHVtaW5vc2l0eSBvZiB0aGUgYmFja2Ryb3AgY29sb3IuIn0se25hbWU6ImNvbG9yIixicm93c2VyczpbIkU3OSIsIkZGMzIiLCJTOCIsIkM0MSIsIk8yOCJdLGRlc2NyaXB0aW9uOiJDcmVhdGVzIGEgY29sb3Igd2l0aCB0aGUgaHVlIGFuZCBzYXR1cmF0aW9uIG9mIHRoZSBzb3VyY2UgY29sb3IgYW5kIHRoZSBsdW1pbm9zaXR5IG9mIHRoZSBiYWNrZHJvcCBjb2xvci4ifSx7bmFtZToibHVtaW5vc2l0eSIsYnJvd3NlcnM6WyJFNzkiLCJGRjMyIiwiUzgiLCJDNDEiLCJPMjgiXSxkZXNjcmlwdGlvbjoiQ3JlYXRlcyBhIGNvbG9yIHdpdGggdGhlIGx1bWlub3NpdHkgb2YgdGhlIHNvdXJjZSBjb2xvciBhbmQgdGhlIGh1ZSBhbmQgc2F0dXJhdGlvbiBvZiB0aGUgYmFja2Ryb3AgY29sb3IuIn1dLHN5bnRheDoiPGJsZW5kLW1vZGU+IixyZWxldmFuY2U6NTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21peC1ibGVuZC1tb2RlIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBmb3JtdWxhIHRoYXQgbXVzdCBiZSB1c2VkIHRvIG1peCB0aGUgY29sb3JzIHdpdGggdGhlIGJhY2tkcm9wLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToibW90aW9uIixicm93c2VyczpbIkM0NiIsIk8zMyJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBtb3Rpb24gcGF0aCBnZXRzIGNyZWF0ZWQuIn0se25hbWU6InBhdGgoKSIsZGVzY3JpcHRpb246IkRlZmluZXMgYW4gU1ZHIHBhdGggYXMgYSBzdHJpbmcsIHdpdGggb3B0aW9uYWwgJ2ZpbGwtcnVsZScgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIG9iamVjdCBpcyByb3RhdGVkIGJ5IHRoZSBhbmdsZSBvZiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBtb3Rpb24gcGF0aC4ifSx7bmFtZToicmV2ZXJzZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBvYmplY3QgaXMgcm90YXRlZCBieSB0aGUgYW5nbGUgb2YgdGhlIGRpcmVjdGlvbiBvZiB0aGUgbW90aW9uIHBhdGggcGx1cyAxODAgZGVncmVlcy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgJ21vdGlvbi1wYXRoJywgJ21vdGlvbi1vZmZzZXQnIGFuZCAnbW90aW9uLXJvdGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbInVybCIsImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJhbmdsZSIsInNoYXBlIiwiZ2VvbWV0cnktYm94IiwiZW51bSJdfSx7bmFtZToibW90aW9uLW9mZnNldCIsYnJvd3NlcnM6WyJDNDYiLCJPMzMiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkEgZGlzdGFuY2UgdGhhdCBkZXNjcmliZXMgdGhlIHBvc2l0aW9uIGFsb25nIHRoZSBzcGVjaWZpZWQgbW90aW9uIHBhdGguIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtb3Rpb24tcGF0aCIsYnJvd3NlcnM6WyJDNDYiLCJPMzMiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gbW90aW9uIHBhdGggZ2V0cyBjcmVhdGVkLiJ9LHtuYW1lOiJwYXRoKCkiLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGFuIFNWRyBwYXRoIGFzIGEgc3RyaW5nLCB3aXRoIG9wdGlvbmFsICdmaWxsLXJ1bGUnIGFzIHRoZSBmaXJzdCBhcmd1bWVudC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG1vdGlvbiBwYXRoIHRoZSBlbGVtZW50IGdldHMgcG9zaXRpb25lZCBhdC4iLHJlc3RyaWN0aW9uczpbInVybCIsInNoYXBlIiwiZ2VvbWV0cnktYm94IiwiZW51bSJdfSx7bmFtZToibW90aW9uLXJvdGF0aW9uIixicm93c2VyczpbIkM0NiIsIk8zMyJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgb2JqZWN0IGlzIHJvdGF0ZWQgYnkgdGhlIGFuZ2xlIG9mIHRoZSBkaXJlY3Rpb24gb2YgdGhlIG1vdGlvbiBwYXRoLiJ9LHtuYW1lOiJyZXZlcnNlIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIG9iamVjdCBpcyByb3RhdGVkIGJ5IHRoZSBhbmdsZSBvZiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBtb3Rpb24gcGF0aCBwbHVzIDE4MCBkZWdyZWVzLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIGRpcmVjdGlvbiBvZiB0aGUgZWxlbWVudCB3aGlsZSBwb3NpdGlvbmluZyBhbG9uZyB0aGUgbW90aW9uIHBhdGguIixyZXN0cmljdGlvbnM6WyJhbmdsZSJdfSx7bmFtZToiLW1vei1hbmltYXRpb24iLGJyb3dzZXJzOlsiRkY5Il0sdmFsdWVzOlt7bmFtZToiYWx0ZXJuYXRlIixkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIG9kZCBjb3VudHMgYXJlIHBsYXllZCBpbiB0aGUgbm9ybWFsIGRpcmVjdGlvbiwgYW5kIHRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBldmVuIGNvdW50cyBhcmUgcGxheWVkIGluIGEgcmV2ZXJzZSBkaXJlY3Rpb24uIn0se25hbWU6ImFsdGVybmF0ZS1yZXZlcnNlIixkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIG9kZCBjb3VudHMgYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24sIGFuZCB0aGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgZXZlbiBjb3VudHMgYXJlIHBsYXllZCBpbiBhIG5vcm1hbCBkaXJlY3Rpb24uIn0se25hbWU6ImJhY2t3YXJkcyIsZGVzY3JpcHRpb246IlRoZSBiZWdpbm5pbmcgcHJvcGVydHkgdmFsdWUgKGFzIGRlZmluZWQgaW4gdGhlIGZpcnN0IEBrZXlmcmFtZXMgYXQtcnVsZSkgaXMgYXBwbGllZCBiZWZvcmUgdGhlIGFuaW1hdGlvbiBpcyBkaXNwbGF5ZWQsIGR1cmluZyB0aGUgcGVyaW9kIGRlZmluZWQgYnkgJ2FuaW1hdGlvbi1kZWxheScuIn0se25hbWU6ImJvdGgiLGRlc2NyaXB0aW9uOiJCb3RoIGZvcndhcmRzIGFuZCBiYWNrd2FyZHMgZmlsbCBtb2RlcyBhcmUgYXBwbGllZC4ifSx7bmFtZToiZm9yd2FyZHMiLGRlc2NyaXB0aW9uOiJUaGUgZmluYWwgcHJvcGVydHkgdmFsdWUgKGFzIGRlZmluZWQgaW4gdGhlIGxhc3QgQGtleWZyYW1lcyBhdC1ydWxlKSBpcyBtYWludGFpbmVkIGFmdGVyIHRoZSBhbmltYXRpb24gY29tcGxldGVzLiJ9LHtuYW1lOiJpbmZpbml0ZSIsZGVzY3JpcHRpb246IkNhdXNlcyB0aGUgYW5pbWF0aW9uIHRvIHJlcGVhdCBmb3JldmVyLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gYW5pbWF0aW9uIGlzIHBlcmZvcm1lZCJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJOb3JtYWwgcGxheWJhY2suIn0se25hbWU6InJldmVyc2UiLGRlc2NyaXB0aW9uOiJBbGwgaXRlcmF0aW9ucyBvZiB0aGUgYW5pbWF0aW9uIGFyZSBwbGF5ZWQgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uIGZyb20gdGhlIHdheSB0aGV5IHdlcmUgc3BlY2lmaWVkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBjb21iaW5lcyBzaXggb2YgdGhlIGFuaW1hdGlvbiBwcm9wZXJ0aWVzIGludG8gYSBzaW5nbGUgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJ0aW1lIiwiZW51bSIsInRpbWluZy1mdW5jdGlvbiIsImlkZW50aWZpZXIiLCJudW1iZXIiXX0se25hbWU6Ii1tb3otYW5pbWF0aW9uLWRlbGF5Iixicm93c2VyczpbIkZGOSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGVuIHRoZSBhbmltYXRpb24gd2lsbCBzdGFydC4iLHJlc3RyaWN0aW9uczpbInRpbWUiXX0se25hbWU6Ii1tb3otYW5pbWF0aW9uLWRpcmVjdGlvbiIsYnJvd3NlcnM6WyJGRjkiXSx2YWx1ZXM6W3tuYW1lOiJhbHRlcm5hdGUiLGRlc2NyaXB0aW9uOiJUaGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgb2RkIGNvdW50cyBhcmUgcGxheWVkIGluIHRoZSBub3JtYWwgZGlyZWN0aW9uLCBhbmQgdGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIGV2ZW4gY291bnRzIGFyZSBwbGF5ZWQgaW4gYSByZXZlcnNlIGRpcmVjdGlvbi4ifSx7bmFtZToiYWx0ZXJuYXRlLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJUaGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgb2RkIGNvdW50cyBhcmUgcGxheWVkIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiwgYW5kIHRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBldmVuIGNvdW50cyBhcmUgcGxheWVkIGluIGEgbm9ybWFsIGRpcmVjdGlvbi4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm9ybWFsIHBsYXliYWNrLiJ9LHtuYW1lOiJyZXZlcnNlIixkZXNjcmlwdGlvbjoiQWxsIGl0ZXJhdGlvbnMgb2YgdGhlIGFuaW1hdGlvbiBhcmUgcGxheWVkIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiBmcm9tIHRoZSB3YXkgdGhleSB3ZXJlIHNwZWNpZmllZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZXRoZXIgb3Igbm90IHRoZSBhbmltYXRpb24gc2hvdWxkIHBsYXkgaW4gcmV2ZXJzZSBvbiBhbHRlcm5hdGUgY3ljbGVzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1vei1hbmltYXRpb24tZHVyYXRpb24iLGJyb3dzZXJzOlsiRkY5Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBsZW5ndGggb2YgdGltZSB0aGF0IGFuIGFuaW1hdGlvbiB0YWtlcyB0byBjb21wbGV0ZSBvbmUgY3ljbGUuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiItbW96LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQiLGJyb3dzZXJzOlsiRkY5Il0sdmFsdWVzOlt7bmFtZToiaW5maW5pdGUiLGRlc2NyaXB0aW9uOiJDYXVzZXMgdGhlIGFuaW1hdGlvbiB0byByZXBlYXQgZm9yZXZlci4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBudW1iZXIgb2YgdGltZXMgYW4gYW5pbWF0aW9uIGN5Y2xlIGlzIHBsYXllZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgb25lLCBtZWFuaW5nIHRoZSBhbmltYXRpb24gd2lsbCBwbGF5IGZyb20gYmVnaW5uaW5nIHRvIGVuZCBvbmNlLiIscmVzdHJpY3Rpb25zOlsibnVtYmVyIiwiZW51bSJdfSx7bmFtZToiLW1vei1hbmltYXRpb24tbmFtZSIsYnJvd3NlcnM6WyJGRjkiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gYW5pbWF0aW9uIGlzIHBlcmZvcm1lZCJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgYSBsaXN0IG9mIGFuaW1hdGlvbnMgdGhhdCBhcHBseS4gRWFjaCBuYW1lIGlzIHVzZWQgdG8gc2VsZWN0IHRoZSBrZXlmcmFtZSBhdC1ydWxlIHRoYXQgcHJvdmlkZXMgdGhlIHByb3BlcnR5IHZhbHVlcyBmb3IgdGhlIGFuaW1hdGlvbi4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiLCJlbnVtIl19LHtuYW1lOiItbW96LWFuaW1hdGlvbi1wbGF5LXN0YXRlIixicm93c2VyczpbIkZGOSJdLHZhbHVlczpbe25hbWU6InBhdXNlZCIsZGVzY3JpcHRpb246IkEgcnVubmluZyBhbmltYXRpb24gd2lsbCBiZSBwYXVzZWQuIn0se25hbWU6InJ1bm5pbmciLGRlc2NyaXB0aW9uOiJSZXN1bWUgcGxheWJhY2sgb2YgYSBwYXVzZWQgYW5pbWF0aW9uLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgd2hldGhlciB0aGUgYW5pbWF0aW9uIGlzIHJ1bm5pbmcgb3IgcGF1c2VkLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1vei1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uIixicm93c2VyczpbIkZGOSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIGhvdyB0aGUgYW5pbWF0aW9uIHdpbGwgcHJvZ3Jlc3Mgb3ZlciBvbmUgY3ljbGUgb2YgaXRzIGR1cmF0aW9uLiBTZWUgdGhlICd0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbicuIixyZXN0cmljdGlvbnM6WyJ0aW1pbmctZnVuY3Rpb24iXX0se25hbWU6Ii1tb3otYXBwZWFyYW5jZSIsYnJvd3NlcnM6WyJGRjEiXSx2YWx1ZXM6W3tuYW1lOiJidXR0b24ifSx7bmFtZToiYnV0dG9uLWFycm93LWRvd24ifSx7bmFtZToiYnV0dG9uLWFycm93LW5leHQifSx7bmFtZToiYnV0dG9uLWFycm93LXByZXZpb3VzIn0se25hbWU6ImJ1dHRvbi1hcnJvdy11cCJ9LHtuYW1lOiJidXR0b24tYmV2ZWwifSx7bmFtZToiY2hlY2tib3gifSx7bmFtZToiY2hlY2tib3gtY29udGFpbmVyIn0se25hbWU6ImNoZWNrYm94LWxhYmVsIn0se25hbWU6ImRpYWxvZyJ9LHtuYW1lOiJncm91cGJveCJ9LHtuYW1lOiJsaXN0Ym94In0se25hbWU6Im1lbnVhcnJvdyJ9LHtuYW1lOiJtZW51aW1hZ2UifSx7bmFtZToibWVudWl0ZW0ifSx7bmFtZToibWVudWl0ZW10ZXh0In0se25hbWU6Im1lbnVsaXN0In0se25hbWU6Im1lbnVsaXN0LWJ1dHRvbiJ9LHtuYW1lOiJtZW51bGlzdC10ZXh0In0se25hbWU6Im1lbnVsaXN0LXRleHRmaWVsZCJ9LHtuYW1lOiJtZW51cG9wdXAifSx7bmFtZToibWVudXJhZGlvIn0se25hbWU6Im1lbnVzZXBhcmF0b3IifSx7bmFtZToiLW1vei1tYWMtdW5pZmllZC10b29sYmFyIn0se25hbWU6Ii1tb3otd2luLWJvcmRlcmxlc3MtZ2xhc3MifSx7bmFtZToiLW1vei13aW4tYnJvd3NlcnRhYmJhci10b29sYm94In0se25hbWU6Ii1tb3otd2luLWNvbW11bmljYXRpb25zLXRvb2xib3gifSx7bmFtZToiLW1vei13aW4tZ2xhc3MifSx7bmFtZToiLW1vei13aW4tbWVkaWEtdG9vbGJveCJ9LHtuYW1lOiJub25lIn0se25hbWU6InByb2dyZXNzYmFyIn0se25hbWU6InByb2dyZXNzY2h1bmsifSx7bmFtZToicmFkaW8ifSx7bmFtZToicmFkaW8tY29udGFpbmVyIn0se25hbWU6InJhZGlvLWxhYmVsIn0se25hbWU6InJhZGlvbWVudWl0ZW0ifSx7bmFtZToicmVzaXplciJ9LHtuYW1lOiJyZXNpemVycGFuZWwifSx7bmFtZToic2Nyb2xsYmFyYnV0dG9uLWRvd24ifSx7bmFtZToic2Nyb2xsYmFyYnV0dG9uLWxlZnQifSx7bmFtZToic2Nyb2xsYmFyYnV0dG9uLXJpZ2h0In0se25hbWU6InNjcm9sbGJhcmJ1dHRvbi11cCJ9LHtuYW1lOiJzY3JvbGxiYXItc21hbGwifSx7bmFtZToic2Nyb2xsYmFydHJhY2staG9yaXpvbnRhbCJ9LHtuYW1lOiJzY3JvbGxiYXJ0cmFjay12ZXJ0aWNhbCJ9LHtuYW1lOiJzZXBhcmF0b3IifSx7bmFtZToic3Bpbm5lciJ9LHtuYW1lOiJzcGlubmVyLWRvd25idXR0b24ifSx7bmFtZToic3Bpbm5lci10ZXh0ZmllbGQifSx7bmFtZToic3Bpbm5lci11cGJ1dHRvbiJ9LHtuYW1lOiJzdGF0dXNiYXIifSx7bmFtZToic3RhdHVzYmFycGFuZWwifSx7bmFtZToidGFiIn0se25hbWU6InRhYnBhbmVscyJ9LHtuYW1lOiJ0YWItc2Nyb2xsLWFycm93LWJhY2sifSx7bmFtZToidGFiLXNjcm9sbC1hcnJvdy1mb3J3YXJkIn0se25hbWU6InRleHRmaWVsZCJ9LHtuYW1lOiJ0ZXh0ZmllbGQtbXVsdGlsaW5lIn0se25hbWU6InRvb2xiYXIifSx7bmFtZToidG9vbGJveCJ9LHtuYW1lOiJ0b29sdGlwIn0se25hbWU6InRyZWVoZWFkZXJjZWxsIn0se25hbWU6InRyZWVoZWFkZXJzb3J0YXJyb3cifSx7bmFtZToidHJlZWl0ZW0ifSx7bmFtZToidHJlZXR3aXN0eW9wZW4ifSx7bmFtZToidHJlZXZpZXcifSx7bmFtZToidHJlZXdpc3R5In0se25hbWU6IndpbmRvdyJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Im5vbmUgfCBidXR0b24gfCBidXR0b24tYXJyb3ctZG93biB8IGJ1dHRvbi1hcnJvdy1uZXh0IHwgYnV0dG9uLWFycm93LXByZXZpb3VzIHwgYnV0dG9uLWFycm93LXVwIHwgYnV0dG9uLWJldmVsIHwgYnV0dG9uLWZvY3VzIHwgY2FyZXQgfCBjaGVja2JveCB8IGNoZWNrYm94LWNvbnRhaW5lciB8IGNoZWNrYm94LWxhYmVsIHwgY2hlY2ttZW51aXRlbSB8IGR1YWxidXR0b24gfCBncm91cGJveCB8IGxpc3Rib3ggfCBsaXN0aXRlbSB8IG1lbnVhcnJvdyB8IG1lbnViYXIgfCBtZW51Y2hlY2tib3ggfCBtZW51aW1hZ2UgfCBtZW51aXRlbSB8IG1lbnVpdGVtdGV4dCB8IG1lbnVsaXN0IHwgbWVudWxpc3QtYnV0dG9uIHwgbWVudWxpc3QtdGV4dCB8IG1lbnVsaXN0LXRleHRmaWVsZCB8IG1lbnVwb3B1cCB8IG1lbnVyYWRpbyB8IG1lbnVzZXBhcmF0b3IgfCBtZXRlcmJhciB8IG1ldGVyY2h1bmsgfCBwcm9ncmVzc2JhciB8IHByb2dyZXNzYmFyLXZlcnRpY2FsIHwgcHJvZ3Jlc3NjaHVuayB8IHByb2dyZXNzY2h1bmstdmVydGljYWwgfCByYWRpbyB8IHJhZGlvLWNvbnRhaW5lciB8IHJhZGlvLWxhYmVsIHwgcmFkaW9tZW51aXRlbSB8IHJhbmdlIHwgcmFuZ2UtdGh1bWIgfCByZXNpemVyIHwgcmVzaXplcnBhbmVsIHwgc2NhbGUtaG9yaXpvbnRhbCB8IHNjYWxldGh1bWJlbmQgfCBzY2FsZXRodW1iLWhvcml6b250YWwgfCBzY2FsZXRodW1ic3RhcnQgfCBzY2FsZXRodW1idGljayB8IHNjYWxldGh1bWItdmVydGljYWwgfCBzY2FsZS12ZXJ0aWNhbCB8IHNjcm9sbGJhcmJ1dHRvbi1kb3duIHwgc2Nyb2xsYmFyYnV0dG9uLWxlZnQgfCBzY3JvbGxiYXJidXR0b24tcmlnaHQgfCBzY3JvbGxiYXJidXR0b24tdXAgfCBzY3JvbGxiYXJ0aHVtYi1ob3Jpem9udGFsIHwgc2Nyb2xsYmFydGh1bWItdmVydGljYWwgfCBzY3JvbGxiYXJ0cmFjay1ob3Jpem9udGFsIHwgc2Nyb2xsYmFydHJhY2stdmVydGljYWwgfCBzZWFyY2hmaWVsZCB8IHNlcGFyYXRvciB8IHNoZWV0IHwgc3Bpbm5lciB8IHNwaW5uZXItZG93bmJ1dHRvbiB8IHNwaW5uZXItdGV4dGZpZWxkIHwgc3Bpbm5lci11cGJ1dHRvbiB8IHNwbGl0dGVyIHwgc3RhdHVzYmFyIHwgc3RhdHVzYmFycGFuZWwgfCB0YWIgfCB0YWJwYW5lbCB8IHRhYnBhbmVscyB8IHRhYi1zY3JvbGwtYXJyb3ctYmFjayB8IHRhYi1zY3JvbGwtYXJyb3ctZm9yd2FyZCB8IHRleHRmaWVsZCB8IHRleHRmaWVsZC1tdWx0aWxpbmUgfCB0b29sYmFyIHwgdG9vbGJhcmJ1dHRvbiB8IHRvb2xiYXJidXR0b24tZHJvcGRvd24gfCB0b29sYmFyZ3JpcHBlciB8IHRvb2xib3ggfCB0b29sdGlwIHwgdHJlZWhlYWRlciB8IHRyZWVoZWFkZXJjZWxsIHwgdHJlZWhlYWRlcnNvcnRhcnJvdyB8IHRyZWVpdGVtIHwgdHJlZWxpbmUgfCB0cmVldHdpc3R5IHwgdHJlZXR3aXN0eW9wZW4gfCB0cmVldmlldyB8IC1tb3otbWFjLXVuaWZpZWQtdG9vbGJhciB8IC1tb3otd2luLWJvcmRlcmxlc3MtZ2xhc3MgfCAtbW96LXdpbi1icm93c2VydGFiYmFyLXRvb2xib3ggfCAtbW96LXdpbi1jb21tdW5pY2F0aW9uc3RleHQgfCAtbW96LXdpbi1jb21tdW5pY2F0aW9ucy10b29sYm94IHwgLW1vei13aW4tZXhjbHVkZS1nbGFzcyB8IC1tb3otd2luLWdsYXNzIHwgLW1vei13aW4tbWVkaWF0ZXh0IHwgLW1vei13aW4tbWVkaWEtdG9vbGJveCB8IC1tb3otd2luZG93LWJ1dHRvbi1ib3ggfCAtbW96LXdpbmRvdy1idXR0b24tYm94LW1heGltaXplZCB8IC1tb3otd2luZG93LWJ1dHRvbi1jbG9zZSB8IC1tb3otd2luZG93LWJ1dHRvbi1tYXhpbWl6ZSB8IC1tb3otd2luZG93LWJ1dHRvbi1taW5pbWl6ZSB8IC1tb3otd2luZG93LWJ1dHRvbi1yZXN0b3JlIHwgLW1vei13aW5kb3ctZnJhbWUtYm90dG9tIHwgLW1vei13aW5kb3ctZnJhbWUtbGVmdCB8IC1tb3otd2luZG93LWZyYW1lLXJpZ2h0IHwgLW1vei13aW5kb3ctdGl0bGViYXIgfCAtbW96LXdpbmRvdy10aXRsZWJhci1tYXhpbWl6ZWQiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJVc2VkIGluIEdlY2tvIChGaXJlZm94KSB0byBkaXNwbGF5IGFuIGVsZW1lbnQgdXNpbmcgYSBwbGF0Zm9ybS1uYXRpdmUgc3R5bGluZyBiYXNlZCBvbiB0aGUgb3BlcmF0aW5nIHN5c3RlbSdzIHRoZW1lLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1vei1iYWNrZmFjZS12aXNpYmlsaXR5Iixicm93c2VyczpbIkZGMTAiXSx2YWx1ZXM6W3tuYW1lOiJoaWRkZW4ifSx7bmFtZToidmlzaWJsZSJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRldGVybWluZXMgd2hldGhlciBvciBub3QgdGhlICdiYWNrJyBzaWRlIG9mIGEgdHJhbnNmb3JtZWQgZWxlbWVudCBpcyB2aXNpYmxlIHdoZW4gZmFjaW5nIHRoZSB2aWV3ZXIuIFdpdGggYW4gaWRlbnRpdHkgdHJhbnNmb3JtLCB0aGUgZnJvbnQgc2lkZSBvZiBhbiBlbGVtZW50IGZhY2VzIHRoZSB2aWV3ZXIuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbW96LWJhY2tncm91bmQtY2xpcCIsYnJvd3NlcnM6WyJGRjEtMy42Il0sdmFsdWVzOlt7bmFtZToicGFkZGluZyJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGJhY2tncm91bmQgcGFpbnRpbmcgYXJlYS4iLHJlc3RyaWN0aW9uczpbImJveCIsImVudW0iXX0se25hbWU6Ii1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5Iixicm93c2VyczpbIkZGMSJdLHZhbHVlczpbe25hbWU6ImJvdW5kaW5nLWJveCJ9LHtuYW1lOiJjb250aW51b3VzIn0se25hbWU6ImVhY2gtYm94In1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiSW4gR2Vja28tYmFzZWQgYXBwbGljYXRpb25zIGxpa2UgRmlyZWZveCwgdGhlIC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5IENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgaG93IHRoZSBiYWNrZ3JvdW5kIGltYWdlIG9mIGFuIGlubGluZSBlbGVtZW50IGlzIGRldGVybWluZWQgd2hlbiB0aGUgY29udGVudCBvZiB0aGUgaW5saW5lIGVsZW1lbnQgd3JhcHMgb250byBtdWx0aXBsZSBsaW5lcy4gVGhlIGNob2ljZSBvZiBwb3NpdGlvbiBoYXMgc2lnbmlmaWNhbnQgZWZmZWN0cyBvbiByZXBldGl0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1vei1iYWNrZ3JvdW5kLW9yaWdpbiIsYnJvd3NlcnM6WyJGRjEiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkZvciBlbGVtZW50cyByZW5kZXJlZCBhcyBhIHNpbmdsZSBib3gsIHNwZWNpZmllcyB0aGUgYmFja2dyb3VuZCBwb3NpdGlvbmluZyBhcmVhLiBGb3IgZWxlbWVudHMgcmVuZGVyZWQgYXMgbXVsdGlwbGUgYm94ZXMgKGUuZy4sIGlubGluZSBib3hlcyBvbiBzZXZlcmFsIGxpbmVzLCBib3hlcyBvbiBzZXZlcmFsIHBhZ2VzKSBzcGVjaWZpZXMgd2hpY2ggYm94ZXMgJ2JveC1kZWNvcmF0aW9uLWJyZWFrJyBvcGVyYXRlcyBvbiB0byBkZXRlcm1pbmUgdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYShzKS4iLHJlc3RyaWN0aW9uczpbImJveCJdfSx7bmFtZToiLW1vei1ib3JkZXItYm90dG9tLWNvbG9ycyIsYnJvd3NlcnM6WyJGRjEiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Ijxjb2xvcj4rIHwgbm9uZSIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNldHMgYSBsaXN0IG9mIGNvbG9ycyBmb3IgdGhlIGJvdHRvbSBib3JkZXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiLW1vei1ib3JkZXItaW1hZ2UiLGJyb3dzZXJzOlsiRkYzLjYiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiSWYgJ2F1dG8nIGlzIHNwZWNpZmllZCB0aGVuIHRoZSBib3JkZXIgaW1hZ2Ugd2lkdGggaXMgdGhlIGludHJpbnNpYyB3aWR0aCBvciBoZWlnaHQgKHdoaWNoZXZlciBpcyBhcHBsaWNhYmxlKSBvZiB0aGUgY29ycmVzcG9uZGluZyBpbWFnZSBzbGljZS4gSWYgdGhlIGltYWdlIGRvZXMgbm90IGhhdmUgdGhlIHJlcXVpcmVkIGludHJpbnNpYyBkaW1lbnNpb24gdGhlbiB0aGUgY29ycmVzcG9uZGluZyBib3JkZXItd2lkdGggaXMgdXNlZCBpbnN0ZWFkLiJ9LHtuYW1lOiJmaWxsIixkZXNjcmlwdGlvbjoiQ2F1c2VzIHRoZSBtaWRkbGUgcGFydCBvZiB0aGUgYm9yZGVyLWltYWdlIHRvIGJlIHByZXNlcnZlZC4ifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJyZXBlYXQiLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgdGlsZWQgKHJlcGVhdGVkKSB0byBmaWxsIHRoZSBhcmVhLiJ9LHtuYW1lOiJyb3VuZCIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyB0aWxlZCAocmVwZWF0ZWQpIHRvIGZpbGwgdGhlIGFyZWEuIElmIGl0IGRvZXMgbm90IGZpbGwgdGhlIGFyZWEgd2l0aCBhIHdob2xlIG51bWJlciBvZiB0aWxlcywgdGhlIGltYWdlIGlzIHJlc2NhbGVkIHNvIHRoYXQgaXQgZG9lcy4ifSx7bmFtZToic3BhY2UiLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgdGlsZWQgKHJlcGVhdGVkKSB0byBmaWxsIHRoZSBhcmVhLiBJZiBpdCBkb2VzIG5vdCBmaWxsIHRoZSBhcmVhIHdpdGggYSB3aG9sZSBudW1iZXIgb2YgdGlsZXMsIHRoZSBleHRyYSBzcGFjZSBpcyBkaXN0cmlidXRlZCBhcm91bmQgdGhlIHRpbGVzLiJ9LHtuYW1lOiJzdHJldGNoIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHN0cmV0Y2hlZCB0byBmaWxsIHRoZSBhcmVhLiJ9LHtuYW1lOiJ1cmwoKSJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBmb3Igc2V0dGluZyAnYm9yZGVyLWltYWdlLXNvdXJjZScsICdib3JkZXItaW1hZ2Utc2xpY2UnLCAnYm9yZGVyLWltYWdlLXdpZHRoJywgJ2JvcmRlci1pbWFnZS1vdXRzZXQnIGFuZCAnYm9yZGVyLWltYWdlLXJlcGVhdCcuIE9taXR0ZWQgdmFsdWVzIGFyZSBzZXQgdG8gdGhlaXIgaW5pdGlhbCB2YWx1ZXMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIiwibnVtYmVyIiwidXJsIiwiZW51bSJdfSx7bmFtZToiLW1vei1ib3JkZXItbGVmdC1jb2xvcnMiLGJyb3dzZXJzOlsiRkYxIl0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+KyB8IG5vbmUiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTZXRzIGEgbGlzdCBvZiBjb2xvcnMgZm9yIHRoZSBib3R0b20gYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tb3otYm9yZGVyLXJpZ2h0LWNvbG9ycyIsYnJvd3NlcnM6WyJGRjEiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Ijxjb2xvcj4rIHwgbm9uZSIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNldHMgYSBsaXN0IG9mIGNvbG9ycyBmb3IgdGhlIGJvdHRvbSBib3JkZXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiLW1vei1ib3JkZXItdG9wLWNvbG9ycyIsYnJvd3NlcnM6WyJGRjEiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Ijxjb2xvcj4rIHwgbm9uZSIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNrZSBGaXJlZm94LCAtbW96LWJvcmRlci1ib3R0b20tY29sb3JzIHNldHMgYSBsaXN0IG9mIGNvbG9ycyBmb3IgdGhlIGJvdHRvbSBib3JkZXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiLW1vei1ib3gtYWxpZ24iLGJyb3dzZXJzOlsiRkYxIl0sdmFsdWVzOlt7bmFtZToiYmFzZWxpbmUiLGRlc2NyaXB0aW9uOiJJZiB0aGlzIGJveCBvcmllbnRhdGlvbiBpcyBpbmxpbmUtYXhpcyBvciBob3Jpem9udGFsLCBhbGwgY2hpbGRyZW4gYXJlIHBsYWNlZCB3aXRoIHRoZWlyIGJhc2VsaW5lcyBhbGlnbmVkLCBhbmQgZXh0cmEgc3BhY2UgcGxhY2VkIGJlZm9yZSBvciBhZnRlciBhcyBuZWNlc3NhcnkuIEZvciBibG9jayBmbG93cywgdGhlIGJhc2VsaW5lIG9mIHRoZSBmaXJzdCBub24tZW1wdHkgbGluZSBib3ggbG9jYXRlZCB3aXRoaW4gdGhlIGVsZW1lbnQgaXMgdXNlZC4gRm9yIHRhYmxlcywgdGhlIGJhc2VsaW5lIG9mIHRoZSBmaXJzdCBjZWxsIGlzIHVzZWQuIn0se25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IkFueSBleHRyYSBzcGFjZSBpcyBkaXZpZGVkIGV2ZW5seSwgd2l0aCBoYWxmIHBsYWNlZCBhYm92ZSB0aGUgY2hpbGQgYW5kIHRoZSBvdGhlciBoYWxmIHBsYWNlZCBhZnRlciB0aGUgY2hpbGQuIn0se25hbWU6ImVuZCIsZGVzY3JpcHRpb246IkZvciBub3JtYWwgZGlyZWN0aW9uIGJveGVzLCB0aGUgYm90dG9tIGVkZ2Ugb2YgZWFjaCBjaGlsZCBpcyBwbGFjZWQgYWxvbmcgdGhlIGJvdHRvbSBvZiB0aGUgYm94LiBFeHRyYSBzcGFjZSBpcyBwbGFjZWQgYWJvdmUgdGhlIGVsZW1lbnQuIEZvciByZXZlcnNlIGRpcmVjdGlvbiBib3hlcywgdGhlIHRvcCBlZGdlIG9mIGVhY2ggY2hpbGQgaXMgcGxhY2VkIGFsb25nIHRoZSB0b3Agb2YgdGhlIGJveC4gRXh0cmEgc3BhY2UgaXMgcGxhY2VkIGJlbG93IHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246IkZvciBub3JtYWwgZGlyZWN0aW9uIGJveGVzLCB0aGUgdG9wIGVkZ2Ugb2YgZWFjaCBjaGlsZCBpcyBwbGFjZWQgYWxvbmcgdGhlIHRvcCBvZiB0aGUgYm94LiBFeHRyYSBzcGFjZSBpcyBwbGFjZWQgYmVsb3cgdGhlIGVsZW1lbnQuIEZvciByZXZlcnNlIGRpcmVjdGlvbiBib3hlcywgdGhlIGJvdHRvbSBlZGdlIG9mIGVhY2ggY2hpbGQgaXMgcGxhY2VkIGFsb25nIHRoZSBib3R0b20gb2YgdGhlIGJveC4gRXh0cmEgc3BhY2UgaXMgcGxhY2VkIGFib3ZlIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJzdHJldGNoIixkZXNjcmlwdGlvbjoiVGhlIGhlaWdodCBvZiBlYWNoIGNoaWxkIGlzIGFkanVzdGVkIHRvIHRoYXQgb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2suIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBhIFhVTCBib3ggYWxpZ25zIGl0cyBjb250ZW50cyBhY3Jvc3MgKHBlcnBlbmRpY3VsYXIgdG8pIHRoZSBkaXJlY3Rpb24gb2YgaXRzIGxheW91dC4gVGhlIGVmZmVjdCBvZiB0aGlzIGlzIG9ubHkgdmlzaWJsZSBpZiB0aGVyZSBpcyBleHRyYSBzcGFjZSBpbiB0aGUgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1vei1ib3gtZGlyZWN0aW9uIixicm93c2VyczpbIkZGMSJdLHZhbHVlczpbe25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IkEgYm94IHdpdGggYSBjb21wdXRlZCB2YWx1ZSBvZiBob3Jpem9udGFsIGZvciBib3gtb3JpZW50IGRpc3BsYXlzIGl0cyBjaGlsZHJlbiBmcm9tIGxlZnQgdG8gcmlnaHQuIEEgYm94IHdpdGggYSBjb21wdXRlZCB2YWx1ZSBvZiB2ZXJ0aWNhbCBkaXNwbGF5cyBpdHMgY2hpbGRyZW4gZnJvbSB0b3AgdG8gYm90dG9tLiJ9LHtuYW1lOiJyZXZlcnNlIixkZXNjcmlwdGlvbjoiQSBib3ggd2l0aCBhIGNvbXB1dGVkIHZhbHVlIG9mIGhvcml6b250YWwgZm9yIGJveC1vcmllbnQgZGlzcGxheXMgaXRzIGNoaWxkcmVuIGZyb20gcmlnaHQgdG8gbGVmdC4gQSBib3ggd2l0aCBhIGNvbXB1dGVkIHZhbHVlIG9mIHZlcnRpY2FsIGRpc3BsYXlzIGl0cyBjaGlsZHJlbiBmcm9tIGJvdHRvbSB0byB0b3AuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoZXRoZXIgYSBib3ggbGF5cyBvdXQgaXRzIGNvbnRlbnRzIG5vcm1hbGx5IChmcm9tIHRoZSB0b3Agb3IgbGVmdCBlZGdlKSwgb3IgaW4gcmV2ZXJzZSAoZnJvbSB0aGUgYm90dG9tIG9yIHJpZ2h0IGVkZ2UpLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1vei1ib3gtZmxleCIsYnJvd3NlcnM6WyJGRjEiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgYSBib3ggZ3Jvd3MgdG8gZmlsbCB0aGUgYm94IHRoYXQgY29udGFpbnMgaXQsIGluIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGNvbnRhaW5pbmcgYm94J3MgbGF5b3V0LiIscmVzdHJpY3Rpb25zOlsibnVtYmVyIl19LHtuYW1lOiItbW96LWJveC1mbGV4Z3JvdXAiLGJyb3dzZXJzOlsiRkYxIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJGbGV4aWJsZSBlbGVtZW50cyBjYW4gYmUgYXNzaWduZWQgdG8gZmxleCBncm91cHMgdXNpbmcgdGhlICdib3gtZmxleC1ncm91cCcgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiItbW96LWJveC1vcmRpbmFsLWdyb3VwIixicm93c2VyczpbIkZGMSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoZSBvcmRpbmFsIGdyb3VwIHRoZSBlbGVtZW50IGJlbG9uZ3MgdG8uIEVsZW1lbnRzIHdpdGggYSBsb3dlciBvcmRpbmFsIGdyb3VwIGFyZSBkaXNwbGF5ZWQgYmVmb3JlIHRob3NlIHdpdGggYSBoaWdoZXIgb3JkaW5hbCBncm91cC4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiXX0se25hbWU6Ii1tb3otYm94LW9yaWVudCIsYnJvd3NlcnM6WyJGRjEiXSx2YWx1ZXM6W3tuYW1lOiJibG9jay1heGlzIixkZXNjcmlwdGlvbjoiRWxlbWVudHMgYXJlIG9yaWVudGVkIGFsb25nIHRoZSBib3gncyBheGlzLiJ9LHtuYW1lOiJob3Jpem9udGFsIixkZXNjcmlwdGlvbjoiVGhlIGJveCBkaXNwbGF5cyBpdHMgY2hpbGRyZW4gZnJvbSBsZWZ0IHRvIHJpZ2h0IGluIGEgaG9yaXpvbnRhbCBsaW5lLiJ9LHtuYW1lOiJpbmxpbmUtYXhpcyIsZGVzY3JpcHRpb246IkVsZW1lbnRzIGFyZSBvcmllbnRlZCB2ZXJ0aWNhbGx5LiJ9LHtuYW1lOiJ2ZXJ0aWNhbCIsZGVzY3JpcHRpb246IlRoZSBib3ggZGlzcGxheXMgaXRzIGNoaWxkcmVuIGZyb20gc3RhY2tlZCBmcm9tIHRvcCB0byBib3R0b20gdmVydGljYWxseS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJJbiBNb3ppbGxhIGFwcGxpY2F0aW9ucywgLW1vei1ib3gtb3JpZW50IHNwZWNpZmllcyB3aGV0aGVyIGEgYm94IGxheXMgb3V0IGl0cyBjb250ZW50cyBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otYm94LXBhY2siLGJyb3dzZXJzOlsiRkYxIl0sdmFsdWVzOlt7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiVGhlIGV4dHJhIHNwYWNlIGlzIGRpdmlkZWQgZXZlbmx5LCB3aXRoIGhhbGYgcGxhY2VkIGJlZm9yZSB0aGUgZmlyc3QgY2hpbGQgYW5kIHRoZSBvdGhlciBoYWxmIHBsYWNlZCBhZnRlciB0aGUgbGFzdCBjaGlsZC4ifSx7bmFtZToiZW5kIixkZXNjcmlwdGlvbjoiRm9yIG5vcm1hbCBkaXJlY3Rpb24gYm94ZXMsIHRoZSByaWdodCBlZGdlIG9mIHRoZSBsYXN0IGNoaWxkIGlzIHBsYWNlZCBhdCB0aGUgcmlnaHQgc2lkZSwgd2l0aCBhbGwgZXh0cmEgc3BhY2UgcGxhY2VkIGJlZm9yZSB0aGUgZmlyc3QgY2hpbGQuIEZvciByZXZlcnNlIGRpcmVjdGlvbiBib3hlcywgdGhlIGxlZnQgZWRnZSBvZiB0aGUgZmlyc3QgY2hpbGQgaXMgcGxhY2VkIGF0IHRoZSBsZWZ0IHNpZGUsIHdpdGggYWxsIGV4dHJhIHNwYWNlIHBsYWNlZCBhZnRlciB0aGUgbGFzdCBjaGlsZC4ifSx7bmFtZToianVzdGlmeSIsZGVzY3JpcHRpb246IlRoZSBzcGFjZSBpcyBkaXZpZGVkIGV2ZW5seSBpbi1iZXR3ZWVuIGVhY2ggY2hpbGQsIHdpdGggbm9uZSBvZiB0aGUgZXh0cmEgc3BhY2UgcGxhY2VkIGJlZm9yZSB0aGUgZmlyc3QgY2hpbGQgb3IgYWZ0ZXIgdGhlIGxhc3QgY2hpbGQuIElmIHRoZXJlIGlzIG9ubHkgb25lIGNoaWxkLCB0cmVhdCB0aGUgcGFjayB2YWx1ZSBhcyBpZiBpdCB3ZXJlIHN0YXJ0LiJ9LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246IkZvciBub3JtYWwgZGlyZWN0aW9uIGJveGVzLCB0aGUgbGVmdCBlZGdlIG9mIHRoZSBmaXJzdCBjaGlsZCBpcyBwbGFjZWQgYXQgdGhlIGxlZnQgc2lkZSwgd2l0aCBhbGwgZXh0cmEgc3BhY2UgcGxhY2VkIGFmdGVyIHRoZSBsYXN0IGNoaWxkLiBGb3IgcmV2ZXJzZSBkaXJlY3Rpb24gYm94ZXMsIHRoZSByaWdodCBlZGdlIG9mIHRoZSBsYXN0IGNoaWxkIGlzIHBsYWNlZCBhdCB0aGUgcmlnaHQgc2lkZSwgd2l0aCBhbGwgZXh0cmEgc3BhY2UgcGxhY2VkIGJlZm9yZSB0aGUgZmlyc3QgY2hpbGQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBhIGJveCBwYWNrcyBpdHMgY29udGVudHMgaW4gdGhlIGRpcmVjdGlvbiBvZiBpdHMgbGF5b3V0LiBUaGUgZWZmZWN0IG9mIHRoaXMgaXMgb25seSB2aXNpYmxlIGlmIHRoZXJlIGlzIGV4dHJhIHNwYWNlIGluIHRoZSBib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbW96LWJveC1zaXppbmciLGJyb3dzZXJzOlsiRkYxIl0sdmFsdWVzOlt7bmFtZToiYm9yZGVyLWJveCIsZGVzY3JpcHRpb246IlRoZSBzcGVjaWZpZWQgd2lkdGggYW5kIGhlaWdodCAoYW5kIHJlc3BlY3RpdmUgbWluL21heCBwcm9wZXJ0aWVzKSBvbiB0aGlzIGVsZW1lbnQgZGV0ZXJtaW5lIHRoZSBib3JkZXIgYm94IG9mIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJjb250ZW50LWJveCIsZGVzY3JpcHRpb246IkJlaGF2aW9yIG9mIHdpZHRoIGFuZCBoZWlnaHQgYXMgc3BlY2lmaWVkIGJ5IENTUzIuMS4gVGhlIHNwZWNpZmllZCB3aWR0aCBhbmQgaGVpZ2h0IChhbmQgcmVzcGVjdGl2ZSBtaW4vbWF4IHByb3BlcnRpZXMpIGFwcGx5IHRvIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IHJlc3BlY3RpdmVseSBvZiB0aGUgY29udGVudCBib3ggb2YgdGhlIGVsZW1lbnQuIn0se25hbWU6InBhZGRpbmctYm94IixkZXNjcmlwdGlvbjoiVGhlIHNwZWNpZmllZCB3aWR0aCBhbmQgaGVpZ2h0IChhbmQgcmVzcGVjdGl2ZSBtaW4vbWF4IHByb3BlcnRpZXMpIG9uIHRoaXMgZWxlbWVudCBkZXRlcm1pbmUgdGhlIHBhZGRpbmcgYm94IG9mIHRoZSBlbGVtZW50LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkJveCBNb2RlbCBhZGRpdGlvbiBpbiBDU1MzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1vei1jb2x1bW4tY291bnQiLGJyb3dzZXJzOlsiRkYzLjUiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgYnkgdGhlICdjb2x1bW4td2lkdGgnIHByb3BlcnR5IGFuZCB0aGUgZWxlbWVudCB3aWR0aC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIG9wdGltYWwgbnVtYmVyIG9mIGNvbHVtbnMgaW50byB3aGljaCB0aGUgY29udGVudCBvZiB0aGUgZWxlbWVudCB3aWxsIGJlIGZsb3dlZC4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiXX0se25hbWU6Ii1tb3otY29sdW1uLWdhcCIsYnJvd3NlcnM6WyJGRjMuNSJdLHZhbHVlczpbe25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IlVzZXIgYWdlbnQgc3BlY2lmaWMgYW5kIHR5cGljYWxseSBlcXVpdmFsZW50IHRvIDFlbS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBnYXAgYmV0d2VlbiBjb2x1bW5zLiBJZiB0aGVyZSBpcyBhIGNvbHVtbiBydWxlIGJldHdlZW4gY29sdW1ucywgaXQgd2lsbCBhcHBlYXIgaW4gdGhlIG1pZGRsZSBvZiB0aGUgZ2FwLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiItbW96LWNvbHVtbi1ydWxlIixicm93c2VyczpbIkZGMy41Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgZm9yIHNldHRpbmcgJ2NvbHVtbi1ydWxlLXdpZHRoJywgJ2NvbHVtbi1ydWxlLXN0eWxlJywgYW5kICdjb2x1bW4tcnVsZS1jb2xvcicgYXQgdGhlIHNhbWUgcGxhY2UgaW4gdGhlIHN0eWxlIHNoZWV0LiBPbWl0dGVkIHZhbHVlcyBhcmUgc2V0IHRvIHRoZWlyIGluaXRpYWwgdmFsdWVzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCIsImxpbmUtc3R5bGUiLCJjb2xvciJdfSx7bmFtZToiLW1vei1jb2x1bW4tcnVsZS1jb2xvciIsYnJvd3NlcnM6WyJGRjMuNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgY29sb3Igb2YgdGhlIGNvbHVtbiBydWxlIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiLW1vei1jb2x1bW4tcnVsZS1zdHlsZSIsYnJvd3NlcnM6WyJGRjMuNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgc3R5bGUgb2YgdGhlIHJ1bGUgYmV0d2VlbiBjb2x1bW5zIG9mIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJsaW5lLXN0eWxlIl19LHtuYW1lOiItbW96LWNvbHVtbi1ydWxlLXdpZHRoIixicm93c2VyczpbIkZGMy41Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSB3aWR0aCBvZiB0aGUgcnVsZSBiZXR3ZWVuIGNvbHVtbnMuIE5lZ2F0aXZlIHZhbHVlcyBhcmUgbm90IGFsbG93ZWQuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIl19LHtuYW1lOiItbW96LWNvbHVtbnMiLGJyb3dzZXJzOlsiRkY5Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB3aWR0aCBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2Ygb3RoZXIgcHJvcGVydGllcy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJBIHNob3J0aGFuZCBwcm9wZXJ0eSB3aGljaCBzZXRzIGJvdGggJ2NvbHVtbi13aWR0aCcgYW5kICdjb2x1bW4tY291bnQnLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwiaW50ZWdlciJdfSx7bmFtZToiLW1vei1jb2x1bW4td2lkdGgiLGJyb3dzZXJzOlsiRkYzLjUiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHdpZHRoIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZiBvdGhlciBwcm9wZXJ0aWVzLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoaXMgcHJvcGVydHkgZGVzY3JpYmVzIHRoZSB3aWR0aCBvZiBjb2x1bW5zIGluIG11bHRpY29sIGVsZW1lbnRzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiItbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5ncyIsYnJvd3NlcnM6WyJGRjQiXSx2YWx1ZXM6W3tuYW1lOiciYzJjcyInfSx7bmFtZTonImRsaWciJ30se25hbWU6JyJrZXJuIid9LHtuYW1lOicibGlnYSInfSx7bmFtZTonImxudW0iJ30se25hbWU6JyJvbnVtIid9LHtuYW1lOicic21jcCInfSx7bmFtZTonInN3c2giJ30se25hbWU6JyJ0bnVtIid9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJObyBjaGFuZ2UgaW4gZ2x5cGggc3Vic3RpdHV0aW9uIG9yIHBvc2l0aW9uaW5nIG9jY3Vycy4ifSx7bmFtZToib2ZmIixicm93c2VyczpbIkZGNCJdfSx7bmFtZToib24iLGJyb3dzZXJzOlsiRkY0Il19XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlByb3ZpZGVzIGxvdy1sZXZlbCBjb250cm9sIG92ZXIgT3BlblR5cGUgZm9udCBmZWF0dXJlcy4gSXQgaXMgaW50ZW5kZWQgYXMgYSB3YXkgb2YgcHJvdmlkaW5nIGFjY2VzcyB0byBmb250IGZlYXR1cmVzIHRoYXQgYXJlIG5vdCB3aWRlbHkgdXNlZCBidXQgYXJlIG5lZWRlZCBmb3IgYSBwYXJ0aWN1bGFyIHVzZSBjYXNlLiIscmVzdHJpY3Rpb25zOlsic3RyaW5nIiwiaW50ZWdlciJdfSx7bmFtZToiLW1vei1oeXBoZW5zIixicm93c2VyczpbIkZGOSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJDb25kaXRpb25hbCBoeXBoZW5hdGlvbiBjaGFyYWN0ZXJzIGluc2lkZSBhIHdvcmQsIGlmIHByZXNlbnQsIHRha2UgcHJpb3JpdHkgb3ZlciBhdXRvbWF0aWMgcmVzb3VyY2VzIHdoZW4gZGV0ZXJtaW5pbmcgaHlwaGVuYXRpb24gcG9pbnRzIHdpdGhpbiB0aGUgd29yZC4ifSx7bmFtZToibWFudWFsIixkZXNjcmlwdGlvbjoiV29yZHMgYXJlIG9ubHkgYnJva2VuIGF0IGxpbmUgYnJlYWtzIHdoZXJlIHRoZXJlIGFyZSBjaGFyYWN0ZXJzIGluc2lkZSB0aGUgd29yZCB0aGF0IHN1Z2dlc3QgbGluZSBicmVhayBvcHBvcnR1bml0aWVzIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJXb3JkcyBhcmUgbm90IGJyb2tlbiBhdCBsaW5lIGJyZWFrcywgZXZlbiBpZiBjaGFyYWN0ZXJzIGluc2lkZSB0aGUgd29yZCBzdWdnZXN0IGxpbmUgYnJlYWsgcG9pbnRzLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkNvbnRyb2xzIHdoZXRoZXIgaHlwaGVuYXRpb24gaXMgYWxsb3dlZCB0byBjcmVhdGUgbW9yZSBicmVhayBvcHBvcnR1bml0aWVzIHdpdGhpbiBhIGxpbmUgb2YgdGV4dC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otcGVyc3BlY3RpdmUiLGJyb3dzZXJzOlsiRkYxMCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBwZXJzcGVjdGl2ZSB0cmFuc2Zvcm0gaXMgYXBwbGllZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJBcHBsaWVzIHRoZSBzYW1lIHRyYW5zZm9ybSBhcyB0aGUgcGVyc3BlY3RpdmUoPG51bWJlcj4pIHRyYW5zZm9ybSBmdW5jdGlvbiwgZXhjZXB0IHRoYXQgaXQgYXBwbGllcyBvbmx5IHRvIHRoZSBwb3NpdGlvbmVkIG9yIHRyYW5zZm9ybWVkIGNoaWxkcmVuIG9mIHRoZSBlbGVtZW50LCBub3QgdG8gdGhlIHRyYW5zZm9ybSBvbiB0aGUgZWxlbWVudCBpdHNlbGYuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6Ii1tb3otcGVyc3BlY3RpdmUtb3JpZ2luIixicm93c2VyczpbIkZGMTAiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkVzdGFibGlzaGVzIHRoZSBvcmlnaW4gZm9yIHRoZSBwZXJzcGVjdGl2ZSBwcm9wZXJ0eS4gSXQgZWZmZWN0aXZlbHkgc2V0cyB0aGUgWCBhbmQgWSBwb3NpdGlvbiBhdCB3aGljaCB0aGUgdmlld2VyIGFwcGVhcnMgdG8gYmUgbG9va2luZyBhdCB0aGUgY2hpbGRyZW4gb2YgdGhlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsInBlcmNlbnRhZ2UiLCJsZW5ndGgiXX0se25hbWU6Ii1tb3otdGV4dC1hbGlnbi1sYXN0Iixicm93c2VyczpbIkZGMTIiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIn0se25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IlRoZSBpbmxpbmUgY29udGVudHMgYXJlIGNlbnRlcmVkIHdpdGhpbiB0aGUgbGluZSBib3guIn0se25hbWU6Imp1c3RpZnkiLGRlc2NyaXB0aW9uOiJUaGUgdGV4dCBpcyBqdXN0aWZpZWQgYWNjb3JkaW5nIHRvIHRoZSBtZXRob2Qgc3BlY2lmaWVkIGJ5IHRoZSAndGV4dC1qdXN0aWZ5JyBwcm9wZXJ0eS4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IlRoZSBpbmxpbmUgY29udGVudHMgYXJlIGFsaWduZWQgdG8gdGhlIGxlZnQgZWRnZSBvZiB0aGUgbGluZSBib3guIEluIHZlcnRpY2FsIHRleHQsICdsZWZ0JyBhbGlnbnMgdG8gdGhlIGVkZ2Ugb2YgdGhlIGxpbmUgYm94IHRoYXQgd291bGQgYmUgdGhlIHN0YXJ0IGVkZ2UgZm9yIGxlZnQtdG8tcmlnaHQgdGV4dC4ifSx7bmFtZToicmlnaHQiLGRlc2NyaXB0aW9uOiJUaGUgaW5saW5lIGNvbnRlbnRzIGFyZSBhbGlnbmVkIHRvIHRoZSByaWdodCBlZGdlIG9mIHRoZSBsaW5lIGJveC4gSW4gdmVydGljYWwgdGV4dCwgJ3JpZ2h0JyBhbGlnbnMgdG8gdGhlIGVkZ2Ugb2YgdGhlIGxpbmUgYm94IHRoYXQgd291bGQgYmUgdGhlIGVuZCBlZGdlIGZvciBsZWZ0LXRvLXJpZ2h0IHRleHQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIGhvdyB0aGUgbGFzdCBsaW5lIG9mIGEgYmxvY2sgb3IgYSBsaW5lIHJpZ2h0IGJlZm9yZSBhIGZvcmNlZCBsaW5lIGJyZWFrIGlzIGFsaWduZWQgd2hlbiAndGV4dC1hbGlnbicgaXMgc2V0IHRvICdqdXN0aWZ5Jy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otdGV4dC1kZWNvcmF0aW9uLWNvbG9yIixicm93c2VyczpbIkZGNiJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBjb2xvciBvZiB0ZXh0IGRlY29yYXRpb24gKHVuZGVybGluZXMgb3ZlcmxpbmVzLCBhbmQgbGluZS10aHJvdWdocykgc2V0IG9uIHRoZSBlbGVtZW50IHdpdGggdGV4dC1kZWNvcmF0aW9uLWxpbmUuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiLW1vei10ZXh0LWRlY29yYXRpb24tbGluZSIsYnJvd3NlcnM6WyJGRjYiXSx2YWx1ZXM6W3tuYW1lOiJsaW5lLXRocm91Z2giLGRlc2NyaXB0aW9uOiJFYWNoIGxpbmUgb2YgdGV4dCBoYXMgYSBsaW5lIHRocm91Z2ggdGhlIG1pZGRsZS4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5laXRoZXIgcHJvZHVjZXMgbm9yIGluaGliaXRzIHRleHQgZGVjb3JhdGlvbi4ifSx7bmFtZToib3ZlcmxpbmUiLGRlc2NyaXB0aW9uOiJFYWNoIGxpbmUgb2YgdGV4dCBoYXMgYSBsaW5lIGFib3ZlIGl0LiJ9LHtuYW1lOiJ1bmRlcmxpbmUiLGRlc2NyaXB0aW9uOiJFYWNoIGxpbmUgb2YgdGV4dCBpcyB1bmRlcmxpbmVkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB3aGF0IGxpbmUgZGVjb3JhdGlvbnMsIGlmIGFueSwgYXJlIGFkZGVkIHRvIHRoZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1vei10ZXh0LWRlY29yYXRpb24tc3R5bGUiLGJyb3dzZXJzOlsiRkY2Il0sdmFsdWVzOlt7bmFtZToiZGFzaGVkIixkZXNjcmlwdGlvbjoiUHJvZHVjZXMgYSBkYXNoZWQgbGluZSBzdHlsZS4ifSx7bmFtZToiZG90dGVkIixkZXNjcmlwdGlvbjoiUHJvZHVjZXMgYSBkb3R0ZWQgbGluZS4ifSx7bmFtZToiZG91YmxlIixkZXNjcmlwdGlvbjoiUHJvZHVjZXMgYSBkb3VibGUgbGluZS4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlByb2R1Y2VzIG5vIGxpbmUuIn0se25hbWU6InNvbGlkIixkZXNjcmlwdGlvbjoiUHJvZHVjZXMgYSBzb2xpZCBsaW5lLiJ9LHtuYW1lOiJ3YXZ5IixkZXNjcmlwdGlvbjoiUHJvZHVjZXMgYSB3YXZ5IGxpbmUuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBsaW5lIHN0eWxlIGZvciB1bmRlcmxpbmUsIGxpbmUtdGhyb3VnaCBhbmQgb3ZlcmxpbmUgdGV4dCBkZWNvcmF0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1vei10ZXh0LXNpemUtYWRqdXN0Iixicm93c2VyczpbIkZGIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlJlbmRlcmVycyBtdXN0IHVzZSB0aGUgZGVmYXVsdCBzaXplIGFkanVzdG1lbnQgd2hlbiBkaXNwbGF5aW5nIG9uIGEgc21hbGwgZGV2aWNlLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiUmVuZGVyZXJzIG11c3Qgbm90IGRvIHNpemUgYWRqdXN0bWVudCB3aGVuIGRpc3BsYXlpbmcgb24gYSBzbWFsbCBkZXZpY2UuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2l6ZSBhZGp1c3RtZW50IGZvciBkaXNwbGF5aW5nIHRleHQgY29udGVudCBpbiBtb2JpbGUgYnJvd3NlcnMuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLW1vei10cmFuc2Zvcm0iLGJyb3dzZXJzOlsiRkYzLjUiXSx2YWx1ZXM6W3tuYW1lOiJtYXRyaXgoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHRyYW5zZm9ybWF0aW9uIGluIHRoZSBmb3JtIG9mIGEgdHJhbnNmb3JtYXRpb24gbWF0cml4IG9mIHNpeCB2YWx1ZXMuIG1hdHJpeChhLGIsYyxkLGUsZikgaXMgZXF1aXZhbGVudCB0byBhcHBseWluZyB0aGUgdHJhbnNmb3JtYXRpb24gbWF0cml4IFthIGIgYyBkIGUgZl0ifSx7bmFtZToibWF0cml4M2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDNEIHRyYW5zZm9ybWF0aW9uIGFzIGEgNHg0IGhvbW9nZW5lb3VzIG1hdHJpeCBvZiAxNiB2YWx1ZXMgaW4gY29sdW1uLW1ham9yIG9yZGVyLiJ9LHtuYW1lOiJub25lIn0se25hbWU6InBlcnNwZWN0aXZlIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgcGVyc3BlY3RpdmUgcHJvamVjdGlvbiBtYXRyaXguIn0se25hbWU6InJvdGF0ZSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgMkQgcm90YXRpb24gYnkgdGhlIGFuZ2xlIHNwZWNpZmllZCBpbiB0aGUgcGFyYW1ldGVyIGFib3V0IHRoZSBvcmlnaW4gb2YgdGhlIGVsZW1lbnQsIGFzIGRlZmluZWQgYnkgdGhlIHRyYW5zZm9ybS1vcmlnaW4gcHJvcGVydHkuIn0se25hbWU6InJvdGF0ZTNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbG9ja3dpc2UgM0Qgcm90YXRpb24gYnkgdGhlIGFuZ2xlIHNwZWNpZmllZCBpbiBsYXN0IHBhcmFtZXRlciBhYm91dCB0aGUgW3gseSx6XSBkaXJlY3Rpb24gdmVjdG9yIGRlc2NyaWJlZCBieSB0aGUgZmlyc3QgMyBwYXJhbWV0ZXJzLiJ9LHtuYW1lOiJyb3RhdGVYKCdhbmdsZScpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIHJvdGF0aW9uIGJ5IHRoZSBnaXZlbiBhbmdsZSBhYm91dCB0aGUgWCBheGlzLiJ9LHtuYW1lOiJyb3RhdGVZKCdhbmdsZScpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIHJvdGF0aW9uIGJ5IHRoZSBnaXZlbiBhbmdsZSBhYm91dCB0aGUgWSBheGlzLiJ9LHtuYW1lOiJyb3RhdGVaKCdhbmdsZScpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIHJvdGF0aW9uIGJ5IHRoZSBnaXZlbiBhbmdsZSBhYm91dCB0aGUgWiBheGlzLiJ9LHtuYW1lOiJzY2FsZSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgMkQgc2NhbGUgb3BlcmF0aW9uIGJ5IHRoZSBbc3gsc3ldIHNjYWxpbmcgdmVjdG9yIGRlc2NyaWJlZCBieSB0aGUgMiBwYXJhbWV0ZXJzLiBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciBpcyBub3QgcHJvdmlkZWQsIGl0IGlzIHRha2VzIGEgdmFsdWUgZXF1YWwgdG8gdGhlIGZpcnN0LiJ9LHtuYW1lOiJzY2FsZTNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAzRCBzY2FsZSBvcGVyYXRpb24gYnkgdGhlIFtzeCxzeSxzel0gc2NhbGluZyB2ZWN0b3IgZGVzY3JpYmVkIGJ5IHRoZSAzIHBhcmFtZXRlcnMuIn0se25hbWU6InNjYWxlWCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2NhbGUgb3BlcmF0aW9uIHVzaW5nIHRoZSBbc3gsMV0gc2NhbGluZyB2ZWN0b3IsIHdoZXJlIHN4IGlzIGdpdmVuIGFzIHRoZSBwYXJhbWV0ZXIuIn0se25hbWU6InNjYWxlWSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2NhbGUgb3BlcmF0aW9uIHVzaW5nIHRoZSBbc3ksMV0gc2NhbGluZyB2ZWN0b3IsIHdoZXJlIHN5IGlzIGdpdmVuIGFzIHRoZSBwYXJhbWV0ZXIuIn0se25hbWU6InNjYWxlWigpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2NhbGUgb3BlcmF0aW9uIHVzaW5nIHRoZSBbMSwxLHN6XSBzY2FsaW5nIHZlY3Rvciwgd2hlcmUgc3ogaXMgZ2l2ZW4gYXMgdGhlIHBhcmFtZXRlci4ifSx7bmFtZToic2tldygpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2tldyB0cmFuc2Zvcm1hdGlvbiBhbG9uZyB0aGUgWCBhbmQgWSBheGVzLiBUaGUgZmlyc3QgYW5nbGUgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgc2tldyBvbiB0aGUgWCBheGlzLiBUaGUgc2Vjb25kIGFuZ2xlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHNrZXcgb24gdGhlIFkgYXhpcy4gSWYgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgbm90IGdpdmVuIHRoZW4gYSB2YWx1ZSBvZiAwIGlzIHVzZWQgZm9yIHRoZSBZIGFuZ2xlIChpZTogbm8gc2tldyBvbiB0aGUgWSBheGlzKS4ifSx7bmFtZToic2tld1goKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNrZXcgdHJhbnNmb3JtYXRpb24gYWxvbmcgdGhlIFggYXhpcyBieSB0aGUgZ2l2ZW4gYW5nbGUuIn0se25hbWU6InNrZXdZKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBza2V3IHRyYW5zZm9ybWF0aW9uIGFsb25nIHRoZSBZIGF4aXMgYnkgdGhlIGdpdmVuIGFuZ2xlLiJ9LHtuYW1lOiJ0cmFuc2xhdGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHRyYW5zbGF0aW9uIGJ5IHRoZSB2ZWN0b3IgW3R4LCB0eV0sIHdoZXJlIHR4IGlzIHRoZSBmaXJzdCB0cmFuc2xhdGlvbi12YWx1ZSBwYXJhbWV0ZXIgYW5kIHR5IGlzIHRoZSBvcHRpb25hbCBzZWNvbmQgdHJhbnNsYXRpb24tdmFsdWUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJ0cmFuc2xhdGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgM0QgdHJhbnNsYXRpb24gYnkgdGhlIHZlY3RvciBbdHgsdHksdHpdLCB3aXRoIHR4LCB0eSBhbmQgdHogYmVpbmcgdGhlIGZpcnN0LCBzZWNvbmQgYW5kIHRoaXJkIHRyYW5zbGF0aW9uLXZhbHVlIHBhcmFtZXRlcnMgcmVzcGVjdGl2ZWx5LiJ9LHtuYW1lOiJ0cmFuc2xhdGVYKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSB0cmFuc2xhdGlvbiBieSB0aGUgZ2l2ZW4gYW1vdW50IGluIHRoZSBYIGRpcmVjdGlvbi4ifSx7bmFtZToidHJhbnNsYXRlWSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgdHJhbnNsYXRpb24gYnkgdGhlIGdpdmVuIGFtb3VudCBpbiB0aGUgWSBkaXJlY3Rpb24uIn0se25hbWU6InRyYW5zbGF0ZVooKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHRyYW5zbGF0aW9uIGJ5IHRoZSBnaXZlbiBhbW91bnQgaW4gdGhlIFogZGlyZWN0aW9uLiBOb3RlIHRoYXQgcGVyY2VudGFnZSB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkIGluIHRoZSB0cmFuc2xhdGVaIHRyYW5zbGF0aW9uLXZhbHVlLCBhbmQgaWYgcHJlc2VudCBhcmUgZXZhbHVhdGVkIGFzIDAuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQSB0d28tZGltZW5zaW9uYWwgdHJhbnNmb3JtYXRpb24gaXMgYXBwbGllZCB0byBhbiBlbGVtZW50IHRocm91Z2ggdGhlICd0cmFuc2Zvcm0nIHByb3BlcnR5LiBUaGlzIHByb3BlcnR5IGNvbnRhaW5zIGEgbGlzdCBvZiB0cmFuc2Zvcm0gZnVuY3Rpb25zIHNpbWlsYXIgdG8gdGhvc2UgYWxsb3dlZCBieSBTVkcuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbW96LXRyYW5zZm9ybS1vcmlnaW4iLGJyb3dzZXJzOlsiRkYzLjUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkVzdGFibGlzaGVzIHRoZSBvcmlnaW4gb2YgdHJhbnNmb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1tb3otdHJhbnNpdGlvbiIsYnJvd3NlcnM6WyJGRjQiXSx2YWx1ZXM6W3tuYW1lOiJhbGwiLGRlc2NyaXB0aW9uOiJFdmVyeSBwcm9wZXJ0eSB0aGF0IGlzIGFibGUgdG8gdW5kZXJnbyBhIHRyYW5zaXRpb24gd2lsbCBkbyBzby4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHByb3BlcnR5IHdpbGwgdHJhbnNpdGlvbi4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgY29tYmluZXMgZm91ciBvZiB0aGUgdHJhbnNpdGlvbiBwcm9wZXJ0aWVzIGludG8gYSBzaW5nbGUgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJ0aW1lIiwicHJvcGVydHkiLCJ0aW1pbmctZnVuY3Rpb24iLCJlbnVtIl19LHtuYW1lOiItbW96LXRyYW5zaXRpb24tZGVsYXkiLGJyb3dzZXJzOlsiRkY0Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZW4gdGhlIHRyYW5zaXRpb24gd2lsbCBzdGFydC4gSXQgYWxsb3dzIGEgdHJhbnNpdGlvbiB0byBiZWdpbiBleGVjdXRpb24gc29tZSBwZXJpb2Qgb2YgdGltZSBmcm9tIHdoZW4gaXQgaXMgYXBwbGllZC4iLHJlc3RyaWN0aW9uczpbInRpbWUiXX0se25hbWU6Ii1tb3otdHJhbnNpdGlvbi1kdXJhdGlvbiIsYnJvd3NlcnM6WyJGRjQiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgbG9uZyB0aGUgdHJhbnNpdGlvbiBmcm9tIHRoZSBvbGQgdmFsdWUgdG8gdGhlIG5ldyB2YWx1ZSBzaG91bGQgdGFrZS4iLHJlc3RyaWN0aW9uczpbInRpbWUiXX0se25hbWU6Ii1tb3otdHJhbnNpdGlvbi1wcm9wZXJ0eSIsYnJvd3NlcnM6WyJGRjQiXSx2YWx1ZXM6W3tuYW1lOiJhbGwiLGRlc2NyaXB0aW9uOiJFdmVyeSBwcm9wZXJ0eSB0aGF0IGlzIGFibGUgdG8gdW5kZXJnbyBhIHRyYW5zaXRpb24gd2lsbCBkbyBzby4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHByb3BlcnR5IHdpbGwgdHJhbnNpdGlvbi4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIENTUyBwcm9wZXJ0eSB0byB3aGljaCB0aGUgdHJhbnNpdGlvbiBpcyBhcHBsaWVkLiIscmVzdHJpY3Rpb25zOlsicHJvcGVydHkiXX0se25hbWU6Ii1tb3otdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24iLGJyb3dzZXJzOlsiRkY0Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgaG93IHRoZSBpbnRlcm1lZGlhdGUgdmFsdWVzIHVzZWQgZHVyaW5nIGEgdHJhbnNpdGlvbiB3aWxsIGJlIGNhbGN1bGF0ZWQuIixyZXN0cmljdGlvbnM6WyJ0aW1pbmctZnVuY3Rpb24iXX0se25hbWU6Ii1tb3otdXNlci1mb2N1cyIsYnJvd3NlcnM6WyJGRjEiXSx2YWx1ZXM6W3tuYW1lOiJpZ25vcmUifSx7bmFtZToibm9ybWFsIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiaWdub3JlIHwgbm9ybWFsIHwgc2VsZWN0LWFmdGVyIHwgc2VsZWN0LWJlZm9yZSB8IHNlbGVjdC1tZW51IHwgc2VsZWN0LXNhbWUgfCBzZWxlY3QtYWxsIHwgbm9uZSIscmVsZXZhbmNlOjAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy1tb3otdXNlci1mb2N1cyJ9XSxkZXNjcmlwdGlvbjoiVXNlZCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBlbGVtZW50IGNhbiBoYXZlIGZvY3VzLiJ9LHtuYW1lOiItbW96LXVzZXItc2VsZWN0Iixicm93c2VyczpbIkZGMS41Il0sdmFsdWVzOlt7bmFtZToiYWxsIn0se25hbWU6ImVsZW1lbnQifSx7bmFtZToiZWxlbWVudHMifSx7bmFtZToiLW1vei1hbGwifSx7bmFtZToiLW1vei1ub25lIn0se25hbWU6Im5vbmUifSx7bmFtZToidGV4dCJ9LHtuYW1lOiJ0b2dnbGUifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJDb250cm9scyB0aGUgYXBwZWFyYW5jZSBvZiBzZWxlY3Rpb24uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtYWNjZWxlcmF0b3IiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJmYWxzZSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGRvZXMgbm90IGNvbnRhaW4gYW4gYWNjZWxlcmF0b3Iga2V5IHNlcXVlbmNlLiJ9LHtuYW1lOiJ0cnVlIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgY29udGFpbnMgYW4gYWNjZWxlcmF0b3Iga2V5IHNlcXVlbmNlLiJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6ImZhbHNlIHwgdHJ1ZSIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IklFIG9ubHkuIEhhcyB0aGUgYWJpbGl0eSB0byB0dXJuIG9mZiBpdHMgc3lzdGVtIHVuZGVybGluZXMgZm9yIGFjY2VsZXJhdG9yIGtleXMgdW50aWwgdGhlIEFMVCBrZXkgaXMgcHJlc3NlZCIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWJlaGF2aW9yIixicm93c2VyczpbIklFOCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiSUUgb25seS4gVXNlZCB0byBleHRlbmQgYmVoYXZpb3JzIG9mIHRoZSBicm93c2VyIixyZXN0cmljdGlvbnM6WyJ1cmwiXX0se25hbWU6Ii1tcy1ibG9jay1wcm9ncmVzc2lvbiIsYnJvd3NlcnM6WyJJRTgiXSx2YWx1ZXM6W3tuYW1lOiJidCIsZGVzY3JpcHRpb246IkJvdHRvbS10by10b3AgYmxvY2sgZmxvdy4gTGF5b3V0IGlzIGhvcml6b250YWwuIn0se25hbWU6ImxyIixkZXNjcmlwdGlvbjoiTGVmdC10by1yaWdodCBkaXJlY3Rpb24uIFRoZSBmbG93IG9yaWVudGF0aW9uIGlzIHZlcnRpY2FsLiJ9LHtuYW1lOiJybCIsZGVzY3JpcHRpb246IlJpZ2h0LXRvLWxlZnQgZGlyZWN0aW9uLiBUaGUgZmxvdyBvcmllbnRhdGlvbiBpcyB2ZXJ0aWNhbC4ifSx7bmFtZToidGIiLGRlc2NyaXB0aW9uOiJUb3AtdG8tYm90dG9tIGRpcmVjdGlvbi4gVGhlIGZsb3cgb3JpZW50YXRpb24gaXMgaG9yaXpvbnRhbC4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJ0YiB8IHJsIHwgYnQgfCBsciIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNldHMgdGhlIGJsb2NrLXByb2dyZXNzaW9uIHZhbHVlIGFuZCB0aGUgZmxvdyBvcmllbnRhdGlvbiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWNvbnRlbnQtem9vbS1jaGFpbmluZyIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImNoYWluZWQiLGRlc2NyaXB0aW9uOiJUaGUgbmVhcmVzdCB6b29tYWJsZSBwYXJlbnQgZWxlbWVudCBiZWdpbnMgem9vbWluZyB3aGVuIHRoZSB1c2VyIGhpdHMgYSB6b29tIGxpbWl0IGR1cmluZyBhIG1hbmlwdWxhdGlvbi4gTm8gYm91bmNlIGVmZmVjdCBpcyBzaG93bi4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkEgYm91bmNlIGVmZmVjdCBpcyBzaG93biB3aGVuIHRoZSB1c2VyIGhpdHMgYSB6b29tIGxpbWl0IGR1cmluZyBhIG1hbmlwdWxhdGlvbi4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub25lIHwgY2hhaW5lZCIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgem9vbSBiZWhhdmlvciB0aGF0IG9jY3VycyB3aGVuIGEgdXNlciBoaXRzIHRoZSB6b29tIGxpbWl0IGR1cmluZyBhIG1hbmlwdWxhdGlvbi4ifSx7bmFtZToiLW1zLWNvbnRlbnQtem9vbWluZyIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBpcyBub3Qgem9vbWFibGUuIn0se25hbWU6Inpvb20iLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBpcyB6b29tYWJsZS4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub25lIHwgem9vbSIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB3aGV0aGVyIHpvb21pbmcgaXMgZW5hYmxlZC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1jb250ZW50LXpvb20tbGltaXQiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjwnLW1zLWNvbnRlbnQtem9vbS1saW1pdC1taW4nPiA8Jy1tcy1jb250ZW50LXpvb20tbGltaXQtbWF4Jz4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHRoZSAtbXMtY29udGVudC16b29tLWxpbWl0LW1pbiBhbmQgLW1zLWNvbnRlbnQtem9vbS1saW1pdC1tYXggcHJvcGVydGllcy4iLHJlc3RyaWN0aW9uczpbInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1tcy1jb250ZW50LXpvb20tbGltaXQtbWF4Iixicm93c2VyczpbIkUiLCJJRTEwIl0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8cGVyY2VudGFnZT4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG1heGltdW0gem9vbSBmYWN0b3IuIixyZXN0cmljdGlvbnM6WyJwZXJjZW50YWdlIl19LHtuYW1lOiItbXMtY29udGVudC16b29tLWxpbWl0LW1pbiIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPHBlcmNlbnRhZ2U+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtaW5pbXVtIHpvb20gZmFjdG9yLiIscmVzdHJpY3Rpb25zOlsicGVyY2VudGFnZSJdfSx7bmFtZToiLW1zLWNvbnRlbnQtem9vbS1zbmFwIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToibWFuZGF0b3J5IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIG1vdGlvbiBvZiB0aGUgY29udGVudCBhZnRlciB0aGUgY29udGFjdCBpcyBwaWNrZWQgdXAgaXMgYWx3YXlzIGFkanVzdGVkIHNvIHRoYXQgaXQgbGFuZHMgb24gYSBzbmFwLXBvaW50LiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgem9vbWluZyBpcyB1bmFmZmVjdGVkIGJ5IGFueSBkZWZpbmVkIHNuYXAtcG9pbnRzLiJ9LHtuYW1lOiJwcm94aW1pdHkiLGRlc2NyaXB0aW9uOidJbmRpY2F0ZXMgdGhhdCB0aGUgbW90aW9uIG9mIHRoZSBjb250ZW50IGFmdGVyIHRoZSBjb250YWN0IGlzIHBpY2tlZCB1cCBtYXkgYmUgYWRqdXN0ZWQgaWYgdGhlIGNvbnRlbnQgd291bGQgbm9ybWFsbHkgc3RvcCAiY2xvc2UgZW5vdWdoIiB0byBhIHNuYXAtcG9pbnQuJ30se25hbWU6InNuYXBJbnRlcnZhbCgxMDAlLCAxMDAlKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyB3aGVyZSB0aGUgc25hcC1wb2ludHMgd2lsbCBiZSBwbGFjZWQuIn0se25hbWU6InNuYXBMaXN0KCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHBvc2l0aW9uIG9mIGluZGl2aWR1YWwgc25hcC1wb2ludHMgYXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB6b29tIGZhY3RvcnMuIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPCctbXMtY29udGVudC16b29tLXNuYXAtdHlwZSc+IHx8IDwnLW1zLWNvbnRlbnQtem9vbS1zbmFwLXBvaW50cyc+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciB0aGUgLW1zLWNvbnRlbnQtem9vbS1zbmFwLXR5cGUgYW5kIC1tcy1jb250ZW50LXpvb20tc25hcC1wb2ludHMgcHJvcGVydGllcy4ifSx7bmFtZToiLW1zLWNvbnRlbnQtem9vbS1zbmFwLXBvaW50cyIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6InNuYXBJbnRlcnZhbCgxMDAlLCAxMDAlKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyB3aGVyZSB0aGUgc25hcC1wb2ludHMgd2lsbCBiZSBwbGFjZWQuIn0se25hbWU6InNuYXBMaXN0KCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHBvc2l0aW9uIG9mIGluZGl2aWR1YWwgc25hcC1wb2ludHMgYXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB6b29tIGZhY3RvcnMuIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoic25hcEludGVydmFsKCA8cGVyY2VudGFnZT4sIDxwZXJjZW50YWdlPiApIHwgc25hcExpc3QoIDxwZXJjZW50YWdlPiMgKSIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkRlZmluZXMgd2hlcmUgem9vbSBzbmFwLXBvaW50cyBhcmUgbG9jYXRlZC4ifSx7bmFtZToiLW1zLWNvbnRlbnQtem9vbS1zbmFwLXR5cGUiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJtYW5kYXRvcnkiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgbW90aW9uIG9mIHRoZSBjb250ZW50IGFmdGVyIHRoZSBjb250YWN0IGlzIHBpY2tlZCB1cCBpcyBhbHdheXMgYWRqdXN0ZWQgc28gdGhhdCBpdCBsYW5kcyBvbiBhIHNuYXAtcG9pbnQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB6b29taW5nIGlzIHVuYWZmZWN0ZWQgYnkgYW55IGRlZmluZWQgc25hcC1wb2ludHMuIn0se25hbWU6InByb3hpbWl0eSIsZGVzY3JpcHRpb246J0luZGljYXRlcyB0aGF0IHRoZSBtb3Rpb24gb2YgdGhlIGNvbnRlbnQgYWZ0ZXIgdGhlIGNvbnRhY3QgaXMgcGlja2VkIHVwIG1heSBiZSBhZGp1c3RlZCBpZiB0aGUgY29udGVudCB3b3VsZCBub3JtYWxseSBzdG9wICJjbG9zZSBlbm91Z2giIHRvIGEgc25hcC1wb2ludC4nfV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub25lIHwgcHJveGltaXR5IHwgbWFuZGF0b3J5IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyB6b29taW5nIGlzIGFmZmVjdGVkIGJ5IGRlZmluZWQgc25hcC1wb2ludHMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtZmlsdGVyIixicm93c2VyczpbIklFOC05Il0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8c3RyaW5nPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IklFIG9ubHkuIFVzZWQgdG8gcHJvZHVjZSB2aXN1YWwgZWZmZWN0cy4iLHJlc3RyaWN0aW9uczpbInN0cmluZyJdfSx7bmFtZToiLW1zLWZsZXgiLGJyb3dzZXJzOlsiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJSZXRyaWV2ZXMgdGhlIHZhbHVlIG9mIHRoZSBtYWluIHNpemUgcHJvcGVydHkgYXMgdGhlIHVzZWQgJ2ZsZXgtYmFzaXMnLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiRXhwYW5kcyB0byAnMCAwIGF1dG8nLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246InNwZWNpZmllcyB0aGUgcGFyYW1ldGVycyBvZiBhIGZsZXhpYmxlIGxlbmd0aDogdGhlIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBmbGV4aWJpbGl0eSwgYW5kIHRoZSBwcmVmZXJyZWQgc2l6ZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsIm51bWJlciIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1tcy1mbGV4LWFsaWduIixicm93c2VyczpbIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJiYXNlbGluZSIsZGVzY3JpcHRpb246IklmIHRoZSBmbGV4IGl0ZW3igJlzIGlubGluZSBheGlzIGlzIHRoZSBzYW1lIGFzIHRoZSBjcm9zcyBheGlzLCB0aGlzIHZhbHVlIGlzIGlkZW50aWNhbCB0byAnZmxleC1zdGFydCcuIE90aGVyd2lzZSwgaXQgcGFydGljaXBhdGVzIGluIGJhc2VsaW5lIGFsaWdubWVudC4ifSx7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiVGhlIGZsZXggaXRlbeKAmXMgbWFyZ2luIGJveCBpcyBjZW50ZXJlZCBpbiB0aGUgY3Jvc3MgYXhpcyB3aXRoaW4gdGhlIGxpbmUuIn0se25hbWU6ImVuZCIsZGVzY3JpcHRpb246IlRoZSBjcm9zcy1lbmQgbWFyZ2luIGVkZ2Ugb2YgdGhlIGZsZXggaXRlbSBpcyBwbGFjZWQgZmx1c2ggd2l0aCB0aGUgY3Jvc3MtZW5kIGVkZ2Ugb2YgdGhlIGxpbmUuIn0se25hbWU6InN0YXJ0IixkZXNjcmlwdGlvbjoiVGhlIGNyb3NzLXN0YXJ0IG1hcmdpbiBlZGdlIG9mIHRoZSBmbGV4Ym94IGl0ZW0gaXMgcGxhY2VkIGZsdXNoIHdpdGggdGhlIGNyb3NzLXN0YXJ0IGVkZ2Ugb2YgdGhlIGxpbmUuIn0se25hbWU6InN0cmV0Y2giLGRlc2NyaXB0aW9uOiJJZiB0aGUgY3Jvc3Mgc2l6ZSBwcm9wZXJ0eSBvZiB0aGUgZmxleGJveCBpdGVtIGlzIGFueXRoaW5nIG90aGVyIHRoYW4gJ2F1dG8nLCB0aGlzIHZhbHVlIGlzIGlkZW50aWNhbCB0byAnc3RhcnQnLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkFsaWducyBmbGV4IGl0ZW1zIGFsb25nIHRoZSBjcm9zcyBheGlzIG9mIHRoZSBjdXJyZW50IGxpbmUgb2YgdGhlIGZsZXggY29udGFpbmVyLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWZsZXgtZGlyZWN0aW9uIixicm93c2VyczpbIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJjb2x1bW4iLGRlc2NyaXB0aW9uOiJUaGUgZmxleCBjb250YWluZXLigJlzIG1haW4gYXhpcyBoYXMgdGhlIHNhbWUgb3JpZW50YXRpb24gYXMgdGhlIGJsb2NrIGF4aXMgb2YgdGhlIGN1cnJlbnQgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJjb2x1bW4tcmV2ZXJzZSIsZGVzY3JpcHRpb246IlNhbWUgYXMgJ2NvbHVtbicsIGV4Y2VwdCB0aGUgbWFpbi1zdGFydCBhbmQgbWFpbi1lbmQgZGlyZWN0aW9ucyBhcmUgc3dhcHBlZC4ifSx7bmFtZToicm93IixkZXNjcmlwdGlvbjoiVGhlIGZsZXggY29udGFpbmVy4oCZcyBtYWluIGF4aXMgaGFzIHRoZSBzYW1lIG9yaWVudGF0aW9uIGFzIHRoZSBpbmxpbmUgYXhpcyBvZiB0aGUgY3VycmVudCB3cml0aW5nIG1vZGUuIn0se25hbWU6InJvdy1yZXZlcnNlIixkZXNjcmlwdGlvbjoiU2FtZSBhcyAncm93JywgZXhjZXB0IHRoZSBtYWluLXN0YXJ0IGFuZCBtYWluLWVuZCBkaXJlY3Rpb25zIGFyZSBzd2FwcGVkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgZmxleCBpdGVtcyBhcmUgcGxhY2VkIGluIHRoZSBmbGV4IGNvbnRhaW5lciwgYnkgc2V0dGluZyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBmbGV4IGNvbnRhaW5lcuKAmXMgbWFpbiBheGlzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWZsZXgtZmxvdyIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToiY29sdW1uIixkZXNjcmlwdGlvbjoiVGhlIGZsZXggY29udGFpbmVy4oCZcyBtYWluIGF4aXMgaGFzIHRoZSBzYW1lIG9yaWVudGF0aW9uIGFzIHRoZSBibG9jayBheGlzIG9mIHRoZSBjdXJyZW50IHdyaXRpbmcgbW9kZS4ifSx7bmFtZToiY29sdW1uLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJTYW1lIGFzICdjb2x1bW4nLCBleGNlcHQgdGhlIG1haW4tc3RhcnQgYW5kIG1haW4tZW5kIGRpcmVjdGlvbnMgYXJlIHN3YXBwZWQuIn0se25hbWU6Im5vd3JhcCIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGNvbnRhaW5lciBpcyBzaW5nbGUtbGluZS4ifSx7bmFtZToicm93IixkZXNjcmlwdGlvbjoiVGhlIGZsZXggY29udGFpbmVy4oCZcyBtYWluIGF4aXMgaGFzIHRoZSBzYW1lIG9yaWVudGF0aW9uIGFzIHRoZSBpbmxpbmUgYXhpcyBvZiB0aGUgY3VycmVudCB3cml0aW5nIG1vZGUuIn0se25hbWU6IndyYXAiLGRlc2NyaXB0aW9uOiJUaGUgZmxleGJveCBpcyBtdWx0aS1saW5lLiJ9LHtuYW1lOiJ3cmFwLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJTYW1lIGFzICd3cmFwJywgZXhjZXB0IHRoZSBjcm9zcy1zdGFydCBhbmQgY3Jvc3MtZW5kIGRpcmVjdGlvbnMgYXJlIHN3YXBwZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBmbGV4Ym94IGl0ZW1zIGFyZSBwbGFjZWQgaW4gdGhlIGZsZXhib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtZmxleC1pdGVtLWFsaWduIixicm93c2VyczpbIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQ29tcHV0ZXMgdG8gdGhlIHZhbHVlIG9mICdhbGlnbi1pdGVtcycgb24gdGhlIGVsZW1lbnTigJlzIHBhcmVudCwgb3IgJ3N0cmV0Y2gnIGlmIHRoZSBlbGVtZW50IGhhcyBubyBwYXJlbnQuIE9uIGFic29sdXRlbHkgcG9zaXRpb25lZCBlbGVtZW50cywgaXQgY29tcHV0ZXMgdG8gaXRzZWxmLiJ9LHtuYW1lOiJiYXNlbGluZSIsZGVzY3JpcHRpb246IklmIHRoZSBmbGV4IGl0ZW3igJlzIGlubGluZSBheGlzIGlzIHRoZSBzYW1lIGFzIHRoZSBjcm9zcyBheGlzLCB0aGlzIHZhbHVlIGlzIGlkZW50aWNhbCB0byAnZmxleC1zdGFydCcuIE90aGVyd2lzZSwgaXQgcGFydGljaXBhdGVzIGluIGJhc2VsaW5lIGFsaWdubWVudC4ifSx7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiVGhlIGZsZXggaXRlbeKAmXMgbWFyZ2luIGJveCBpcyBjZW50ZXJlZCBpbiB0aGUgY3Jvc3MgYXhpcyB3aXRoaW4gdGhlIGxpbmUuIn0se25hbWU6ImVuZCIsZGVzY3JpcHRpb246IlRoZSBjcm9zcy1lbmQgbWFyZ2luIGVkZ2Ugb2YgdGhlIGZsZXggaXRlbSBpcyBwbGFjZWQgZmx1c2ggd2l0aCB0aGUgY3Jvc3MtZW5kIGVkZ2Ugb2YgdGhlIGxpbmUuIn0se25hbWU6InN0YXJ0IixkZXNjcmlwdGlvbjoiVGhlIGNyb3NzLXN0YXJ0IG1hcmdpbiBlZGdlIG9mIHRoZSBmbGV4IGl0ZW0gaXMgcGxhY2VkIGZsdXNoIHdpdGggdGhlIGNyb3NzLXN0YXJ0IGVkZ2Ugb2YgdGhlIGxpbmUuIn0se25hbWU6InN0cmV0Y2giLGRlc2NyaXB0aW9uOiJJZiB0aGUgY3Jvc3Mgc2l6ZSBwcm9wZXJ0eSBvZiB0aGUgZmxleCBpdGVtIGNvbXB1dGVzIHRvIGF1dG8sIGFuZCBuZWl0aGVyIG9mIHRoZSBjcm9zcy1heGlzIG1hcmdpbnMgYXJlIGF1dG8sIHRoZSBmbGV4IGl0ZW0gaXMgc3RyZXRjaGVkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkFsbG93cyB0aGUgZGVmYXVsdCBhbGlnbm1lbnQgYWxvbmcgdGhlIGNyb3NzIGF4aXMgdG8gYmUgb3ZlcnJpZGRlbiBmb3IgaW5kaXZpZHVhbCBmbGV4IGl0ZW1zLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWZsZXgtbGluZS1wYWNrIixicm93c2VyczpbIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJMaW5lcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgY2VudGVyIG9mIHRoZSBmbGV4IGNvbnRhaW5lci4ifSx7bmFtZToiZGlzdHJpYnV0ZSIsZGVzY3JpcHRpb246IkxpbmVzIGFyZSBldmVubHkgZGlzdHJpYnV0ZWQgaW4gdGhlIGZsZXggY29udGFpbmVyLCB3aXRoIGhhbGYtc2l6ZSBzcGFjZXMgb24gZWl0aGVyIGVuZC4ifSx7bmFtZToiZW5kIixkZXNjcmlwdGlvbjoiTGluZXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIGVuZCBvZiB0aGUgZmxleCBjb250YWluZXIuIn0se25hbWU6Imp1c3RpZnkiLGRlc2NyaXB0aW9uOiJMaW5lcyBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIGluIHRoZSBmbGV4IGNvbnRhaW5lci4ifSx7bmFtZToic3RhcnQiLGRlc2NyaXB0aW9uOiJMaW5lcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgc3RhcnQgb2YgdGhlIGZsZXggY29udGFpbmVyLiJ9LHtuYW1lOiJzdHJldGNoIixkZXNjcmlwdGlvbjoiTGluZXMgc3RyZXRjaCB0byB0YWtlIHVwIHRoZSByZW1haW5pbmcgc3BhY2UuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQWxpZ25zIGEgZmxleCBjb250YWluZXLigJlzIGxpbmVzIHdpdGhpbiB0aGUgZmxleCBjb250YWluZXIgd2hlbiB0aGVyZSBpcyBleHRyYSBzcGFjZSBpbiB0aGUgY3Jvc3MtYXhpcywgc2ltaWxhciB0byBob3cgJ2p1c3RpZnktY29udGVudCcgYWxpZ25zIGluZGl2aWR1YWwgaXRlbXMgd2l0aGluIHRoZSBtYWluLWF4aXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtZmxleC1vcmRlciIsYnJvd3NlcnM6WyJJRTEwIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJDb250cm9scyB0aGUgb3JkZXIgaW4gd2hpY2ggY2hpbGRyZW4gb2YgYSBmbGV4IGNvbnRhaW5lciBhcHBlYXIgd2l0aGluIHRoZSBmbGV4IGNvbnRhaW5lciwgYnkgYXNzaWduaW5nIHRoZW0gdG8gb3JkaW5hbCBncm91cHMuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiItbXMtZmxleC1wYWNrIixicm93c2VyczpbIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJGbGV4IGl0ZW1zIGFyZSBwYWNrZWQgdG93YXJkIHRoZSBjZW50ZXIgb2YgdGhlIGxpbmUuIn0se25hbWU6ImRpc3RyaWJ1dGUiLGRlc2NyaXB0aW9uOiJGbGV4IGl0ZW1zIGFyZSBldmVubHkgZGlzdHJpYnV0ZWQgaW4gdGhlIGxpbmUsIHdpdGggaGFsZi1zaXplIHNwYWNlcyBvbiBlaXRoZXIgZW5kLiJ9LHtuYW1lOiJlbmQiLGRlc2NyaXB0aW9uOiJGbGV4IGl0ZW1zIGFyZSBwYWNrZWQgdG93YXJkIHRoZSBlbmQgb2YgdGhlIGxpbmUuIn0se25hbWU6Imp1c3RpZnkiLGRlc2NyaXB0aW9uOiJGbGV4IGl0ZW1zIGFyZSBldmVubHkgZGlzdHJpYnV0ZWQgaW4gdGhlIGxpbmUuIn0se25hbWU6InN0YXJ0IixkZXNjcmlwdGlvbjoiRmxleCBpdGVtcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgc3RhcnQgb2YgdGhlIGxpbmUuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQWxpZ25zIGZsZXggaXRlbXMgYWxvbmcgdGhlIG1haW4gYXhpcyBvZiB0aGUgY3VycmVudCBsaW5lIG9mIHRoZSBmbGV4IGNvbnRhaW5lci4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1mbGV4LXdyYXAiLGJyb3dzZXJzOlsiSUUxMCJdLHZhbHVlczpbe25hbWU6Im5vd3JhcCIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGNvbnRhaW5lciBpcyBzaW5nbGUtbGluZS4ifSx7bmFtZToid3JhcCIsZGVzY3JpcHRpb246IlRoZSBmbGV4Ym94IGlzIG11bHRpLWxpbmUuIn0se25hbWU6IndyYXAtcmV2ZXJzZSIsZGVzY3JpcHRpb246IlNhbWUgYXMgJ3dyYXAnLCBleGNlcHQgdGhlIGNyb3NzLXN0YXJ0IGFuZCBjcm9zcy1lbmQgZGlyZWN0aW9ucyBhcmUgc3dhcHBlZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJDb250cm9scyB3aGV0aGVyIHRoZSBmbGV4IGNvbnRhaW5lciBpcyBzaW5nbGUtbGluZSBvciBtdWx0aS1saW5lLCBhbmQgdGhlIGRpcmVjdGlvbiBvZiB0aGUgY3Jvc3MtYXhpcywgd2hpY2ggZGV0ZXJtaW5lcyB0aGUgZGlyZWN0aW9uIG5ldyBsaW5lcyBhcmUgc3RhY2tlZCBpbi4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1mbG93LWZyb20iLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIGJsb2NrIGNvbnRhaW5lciBpcyBub3QgYSBDU1MgUmVnaW9uLiJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Ilsgbm9uZSB8IDxjdXN0b20taWRlbnQ+IF0jIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiTWFrZXMgYSBibG9jayBjb250YWluZXIgYSByZWdpb24gYW5kIGFzc29jaWF0ZXMgaXQgd2l0aCBhIG5hbWVkIGZsb3cuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIl19LHtuYW1lOiItbXMtZmxvdy1pbnRvIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGlzIG5vdCBtb3ZlZCB0byBhIG5hbWVkIGZsb3cgYW5kIG5vcm1hbCBDU1MgcHJvY2Vzc2luZyB0YWtlcyBwbGFjZS4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJbIG5vbmUgfCA8Y3VzdG9tLWlkZW50PiBdIyIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlBsYWNlcyBhbiBlbGVtZW50IG9yIGl0cyBjb250ZW50cyBpbnRvIGEgbmFtZWQgZmxvdy4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiXX0se25hbWU6Ii1tcy1ncmlkLWNvbHVtbiIsYnJvd3NlcnM6WyJFMTIiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJlbmQifSx7bmFtZToic3RhcnQifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJVc2VkIHRvIHBsYWNlIGdyaWQgaXRlbXMgYW5kIGV4cGxpY2l0bHkgZGVmaW5lZCBncmlkIGNlbGxzIGluIHRoZSBHcmlkLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciIsInN0cmluZyIsImVudW0iXX0se25hbWU6Ii1tcy1ncmlkLWNvbHVtbi1hbGlnbiIsYnJvd3NlcnM6WyJFMTIiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiUGxhY2VzIHRoZSBjZW50ZXIgb2YgdGhlIEdyaWQgSXRlbSdzIG1hcmdpbiBib3ggYXQgdGhlIGNlbnRlciBvZiB0aGUgR3JpZCBJdGVtJ3MgY29sdW1uLiJ9LHtuYW1lOiJlbmQiLGRlc2NyaXB0aW9uOiJBbGlnbnMgdGhlIGVuZCBlZGdlIG9mIHRoZSBHcmlkIEl0ZW0ncyBtYXJnaW4gYm94IHRvIHRoZSBlbmQgZWRnZSBvZiB0aGUgR3JpZCBJdGVtJ3MgY29sdW1uLiJ9LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246IkFsaWducyB0aGUgc3RhcnRpbmcgZWRnZSBvZiB0aGUgR3JpZCBJdGVtJ3MgbWFyZ2luIGJveCB0byB0aGUgc3RhcnRpbmcgZWRnZSBvZiB0aGUgR3JpZCBJdGVtJ3MgY29sdW1uLiJ9LHtuYW1lOiJzdHJldGNoIixkZXNjcmlwdGlvbjoiRW5zdXJlcyB0aGF0IHRoZSBHcmlkIEl0ZW0ncyBtYXJnaW4gYm94IGlzIGVxdWFsIHRvIHRoZSBzaXplIG9mIHRoZSBHcmlkIEl0ZW0ncyBjb2x1bW4uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQWxpZ25zIHRoZSBjb2x1bW5zIGluIGEgZ3JpZC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1ncmlkLWNvbHVtbnMiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Im5vbmUgfCA8dHJhY2stbGlzdD4gfCA8YXV0by10cmFjay1saXN0PiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkxheXMgb3V0IHRoZSBjb2x1bW5zIG9mIHRoZSBncmlkLiJ9LHtuYW1lOiItbXMtZ3JpZC1jb2x1bW4tc3BhbiIsYnJvd3NlcnM6WyJFMTIiLCJJRTEwIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjb2x1bW5zIHRvIHNwYW4uIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiItbXMtZ3JpZC1sYXllciIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiR3JpZC1sYXllciBpcyBzaW1pbGFyIGluIGNvbmNlcHQgdG8gei1pbmRleCwgYnV0IGF2b2lkcyBvdmVybG9hZGluZyB0aGUgbWVhbmluZyBvZiB0aGUgei1pbmRleCBwcm9wZXJ0eSwgd2hpY2ggaXMgYXBwbGljYWJsZSBvbmx5IHRvIHBvc2l0aW9uZWQgZWxlbWVudHMuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiItbXMtZ3JpZC1yb3ciLGJyb3dzZXJzOlsiRTEyIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToiZW5kIn0se25hbWU6InN0YXJ0In1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiZ3JpZC1yb3cgaXMgdXNlZCB0byBwbGFjZSBncmlkIGl0ZW1zIGFuZCBleHBsaWNpdGx5IGRlZmluZWQgZ3JpZCBjZWxscyBpbiB0aGUgR3JpZC4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiLCJzdHJpbmciLCJlbnVtIl19LHtuYW1lOiItbXMtZ3JpZC1yb3ctYWxpZ24iLGJyb3dzZXJzOlsiRTEyIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IlBsYWNlcyB0aGUgY2VudGVyIG9mIHRoZSBHcmlkIEl0ZW0ncyBtYXJnaW4gYm94IGF0IHRoZSBjZW50ZXIgb2YgdGhlIEdyaWQgSXRlbSdzIHJvdy4ifSx7bmFtZToiZW5kIixkZXNjcmlwdGlvbjoiQWxpZ25zIHRoZSBlbmQgZWRnZSBvZiB0aGUgR3JpZCBJdGVtJ3MgbWFyZ2luIGJveCB0byB0aGUgZW5kIGVkZ2Ugb2YgdGhlIEdyaWQgSXRlbSdzIHJvdy4ifSx7bmFtZToic3RhcnQiLGRlc2NyaXB0aW9uOiJBbGlnbnMgdGhlIHN0YXJ0aW5nIGVkZ2Ugb2YgdGhlIEdyaWQgSXRlbSdzIG1hcmdpbiBib3ggdG8gdGhlIHN0YXJ0aW5nIGVkZ2Ugb2YgdGhlIEdyaWQgSXRlbSdzIHJvdy4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IkVuc3VyZXMgdGhhdCB0aGUgR3JpZCBJdGVtJ3MgbWFyZ2luIGJveCBpcyBlcXVhbCB0byB0aGUgc2l6ZSBvZiB0aGUgR3JpZCBJdGVtJ3Mgcm93LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkFsaWducyB0aGUgcm93cyBpbiBhIGdyaWQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtZ3JpZC1yb3dzIixicm93c2VyczpbIkUiLCJJRTEwIl0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub25lIHwgPHRyYWNrLWxpc3Q+IHwgPGF1dG8tdHJhY2stbGlzdD4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJMYXlzIG91dCB0aGUgY29sdW1ucyBvZiB0aGUgZ3JpZC4ifSx7bmFtZToiLW1zLWdyaWQtcm93LXNwYW4iLGJyb3dzZXJzOlsiRTEyIiwiSUUxMCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBudW1iZXIgb2Ygcm93cyB0byBzcGFuLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLW1zLWhpZ2gtY29udHJhc3QtYWRqdXN0Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlByb3BlcnRpZXMgd2lsbCBiZSBhZGp1c3RlZCBhcyBhcHBsaWNhYmxlLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gYWRqdXN0bWVudHMgd2lsbCBiZSBhcHBsaWVkLiJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6ImF1dG8gfCBub25lIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGlmIHByb3BlcnRpZXMgc2hvdWxkIGJlIGFkanVzdGVkIGluIGhpZ2ggY29udHJhc3QgbW9kZS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1oeXBoZW5hdGUtbGltaXQtY2hhcnMiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHVzZXIgYWdlbnQgY2hvb3NlcyBhIHZhbHVlIHRoYXQgYWRhcHRzIHRvIHRoZSBjdXJyZW50IGxheW91dC4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJhdXRvIHwgPGludGVnZXI+ezEsM30iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gYSBoeXBoZW5hdGVkIHdvcmQuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiItbXMtaHlwaGVuYXRlLWxpbWl0LWxpbmVzIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToibm8tbGltaXQiLGRlc2NyaXB0aW9uOiJUaGVyZSBpcyBubyBsaW1pdC4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJuby1saW1pdCB8IDxpbnRlZ2VyPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc3VjY2Vzc2l2ZSBoeXBoZW5hdGVkIGxpbmVzIGluIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiItbXMtaHlwaGVuYXRlLWxpbWl0LXpvbmUiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxwZXJjZW50YWdlPiB8IDxsZW5ndGg+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtYXhpbXVtIGFtb3VudCBvZiB1bmZpbGxlZCBzcGFjZSAoYmVmb3JlIGp1c3RpZmljYXRpb24pIHRoYXQgbWF5IGJlIGxlZnQgaW4gdGhlIGxpbmUgYm94IGJlZm9yZSBoeXBoZW5hdGlvbiBpcyB0cmlnZ2VyZWQgdG8gcHVsbCBwYXJ0IG9mIGEgd29yZCBmcm9tIHRoZSBuZXh0IGxpbmUgYmFjayB1cCBpbnRvIHRoZSBjdXJyZW50IGxpbmUuIixyZXN0cmljdGlvbnM6WyJwZXJjZW50YWdlIiwibGVuZ3RoIl19LHtuYW1lOiItbXMtaHlwaGVucyIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJDb25kaXRpb25hbCBoeXBoZW5hdGlvbiBjaGFyYWN0ZXJzIGluc2lkZSBhIHdvcmQsIGlmIHByZXNlbnQsIHRha2UgcHJpb3JpdHkgb3ZlciBhdXRvbWF0aWMgcmVzb3VyY2VzIHdoZW4gZGV0ZXJtaW5pbmcgaHlwaGVuYXRpb24gcG9pbnRzIHdpdGhpbiB0aGUgd29yZC4ifSx7bmFtZToibWFudWFsIixkZXNjcmlwdGlvbjoiV29yZHMgYXJlIG9ubHkgYnJva2VuIGF0IGxpbmUgYnJlYWtzIHdoZXJlIHRoZXJlIGFyZSBjaGFyYWN0ZXJzIGluc2lkZSB0aGUgd29yZCB0aGF0IHN1Z2dlc3QgbGluZSBicmVhayBvcHBvcnR1bml0aWVzIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJXb3JkcyBhcmUgbm90IGJyb2tlbiBhdCBsaW5lIGJyZWFrcywgZXZlbiBpZiBjaGFyYWN0ZXJzIGluc2lkZSB0aGUgd29yZCBzdWdnZXN0IGxpbmUgYnJlYWsgcG9pbnRzLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkNvbnRyb2xzIHdoZXRoZXIgaHlwaGVuYXRpb24gaXMgYWxsb3dlZCB0byBjcmVhdGUgbW9yZSBicmVhayBvcHBvcnR1bml0aWVzIHdpdGhpbiBhIGxpbmUgb2YgdGV4dC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1pbWUtbW9kZSIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYWN0aXZlIixkZXNjcmlwdGlvbjoiVGhlIGlucHV0IG1ldGhvZCBlZGl0b3IgaXMgaW5pdGlhbGx5IGFjdGl2ZTsgdGV4dCBlbnRyeSBpcyBwZXJmb3JtZWQgdXNpbmcgaXQgdW5sZXNzIHRoZSB1c2VyIHNwZWNpZmljYWxseSBkaXNtaXNzZXMgaXQuIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJObyBjaGFuZ2UgaXMgbWFkZSB0byB0aGUgY3VycmVudCBpbnB1dCBtZXRob2QgZWRpdG9yIHN0YXRlLiBUaGlzIGlzIHRoZSBkZWZhdWx0LiJ9LHtuYW1lOiJkaXNhYmxlZCIsZGVzY3JpcHRpb246IlRoZSBpbnB1dCBtZXRob2QgZWRpdG9yIGlzIGRpc2FibGVkIGFuZCBtYXkgbm90IGJlIGFjdGl2YXRlZCBieSB0aGUgdXNlci4ifSx7bmFtZToiaW5hY3RpdmUiLGRlc2NyaXB0aW9uOiJUaGUgaW5wdXQgbWV0aG9kIGVkaXRvciBpcyBpbml0aWFsbHkgaW5hY3RpdmUsIGJ1dCB0aGUgdXNlciBtYXkgYWN0aXZhdGUgaXQgaWYgdGhleSB3aXNoLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJUaGUgSU1FIHN0YXRlIHNob3VsZCBiZSBub3JtYWw7IHRoaXMgdmFsdWUgY2FuIGJlIHVzZWQgaW4gYSB1c2VyIHN0eWxlIHNoZWV0IHRvIG92ZXJyaWRlIHRoZSBwYWdlIHNldHRpbmcuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQ29udHJvbHMgdGhlIHN0YXRlIG9mIHRoZSBpbnB1dCBtZXRob2QgZWRpdG9yIGZvciB0ZXh0IGZpZWxkcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1pbnRlcnBvbGF0aW9uLW1vZGUiLGJyb3dzZXJzOlsiSUU3Il0sdmFsdWVzOlt7bmFtZToiYmljdWJpYyJ9LHtuYW1lOiJuZWFyZXN0LW5laWdoYm9yIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIHRoZSBpbnRlcnBvbGF0aW9uIChyZXNhbXBsaW5nKSBtZXRob2QgdXNlZCB0byBzdHJldGNoIGltYWdlcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1sYXlvdXQtZ3JpZCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImNoYXIiLGRlc2NyaXB0aW9uOiJBbnkgb2YgdGhlIHJhbmdlIG9mIGNoYXJhY3RlciB2YWx1ZXMgYXZhaWxhYmxlIHRvIHRoZSAtbXMtbGF5b3V0LWdyaWQtY2hhciBwcm9wZXJ0eS4ifSx7bmFtZToibGluZSIsZGVzY3JpcHRpb246IkFueSBvZiB0aGUgcmFuZ2Ugb2YgbGluZSB2YWx1ZXMgYXZhaWxhYmxlIHRvIHRoZSAtbXMtbGF5b3V0LWdyaWQtbGluZSBwcm9wZXJ0eS4ifSx7bmFtZToibW9kZSIsZGVzY3JpcHRpb246IkFueSBvZiB0aGUgcmFuZ2Ugb2YgbW9kZSB2YWx1ZXMgYXZhaWxhYmxlIHRvIHRoZSAtbXMtbGF5b3V0LWdyaWQtbW9kZSBwcm9wZXJ0eS4ifSx7bmFtZToidHlwZSIsZGVzY3JpcHRpb246IkFueSBvZiB0aGUgcmFuZ2Ugb2YgdHlwZSB2YWx1ZXMgYXZhaWxhYmxlIHRvIHRoZSAtbXMtbGF5b3V0LWdyaWQtdHlwZSBwcm9wZXJ0eS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTZXRzIG9yIHJldHJpZXZlcyB0aGUgY29tcG9zaXRlIGRvY3VtZW50IGdyaWQgcHJvcGVydGllcyB0aGF0IHNwZWNpZnkgdGhlIGxheW91dCBvZiB0ZXh0IGNoYXJhY3RlcnMuIn0se25hbWU6Ii1tcy1sYXlvdXQtZ3JpZC1jaGFyIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246Ikxhcmdlc3QgY2hhcmFjdGVyIGluIHRoZSBmb250IG9mIHRoZSBlbGVtZW50IGlzIHVzZWQgdG8gc2V0IHRoZSBjaGFyYWN0ZXIgZ3JpZC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkRlZmF1bHQuIE5vIGNoYXJhY3RlciBncmlkIGlzIHNldC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTZXRzIG9yIHJldHJpZXZlcyB0aGUgc2l6ZSBvZiB0aGUgY2hhcmFjdGVyIGdyaWQgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSB0ZXh0IGNvbnRlbnQgb2YgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItbXMtbGF5b3V0LWdyaWQtbGluZSIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJMYXJnZXN0IGNoYXJhY3RlciBpbiB0aGUgZm9udCBvZiB0aGUgZWxlbWVudCBpcyB1c2VkIHRvIHNldCB0aGUgY2hhcmFjdGVyIGdyaWQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJEZWZhdWx0LiBObyBncmlkIGxpbmUgaXMgc2V0LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNldHMgb3IgcmV0cmlldmVzIHRoZSBncmlkbGluZSB2YWx1ZSB1c2VkIGZvciByZW5kZXJpbmcgdGhlIHRleHQgY29udGVudCBvZiBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiItbXMtbGF5b3V0LWdyaWQtbW9kZSIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImJvdGgiLGRlc2NyaXB0aW9uOiJEZWZhdWx0LiBCb3RoIHRoZSBjaGFyIGFuZCBsaW5lIGdyaWQgbW9kZXMgYXJlIGVuYWJsZWQuIFRoaXMgc2V0dGluZyBpcyBuZWNlc3NhcnkgdG8gZnVsbHkgZW5hYmxlIHRoZSBsYXlvdXQgZ3JpZCBvbiBhbiBlbGVtZW50LiJ9LHtuYW1lOiJjaGFyIixkZXNjcmlwdGlvbjoiT25seSBhIGNoYXJhY3RlciBncmlkIGlzIHVzZWQuIFRoaXMgaXMgcmVjb21tZW5kZWQgZm9yIHVzZSB3aXRoIGJsb2NrLWxldmVsIGVsZW1lbnRzLCBzdWNoIGFzIGEgYmxvY2txdW90ZSwgd2hlcmUgdGhlIGxpbmUgZ3JpZCBpcyBpbnRlbmRlZCB0byBiZSBkaXNhYmxlZC4ifSx7bmFtZToibGluZSIsZGVzY3JpcHRpb246Ik9ubHkgYSBsaW5lIGdyaWQgaXMgdXNlZC4gVGhpcyBpcyByZWNvbW1lbmRlZCBmb3IgdXNlIHdpdGggaW5saW5lIGVsZW1lbnRzLCBzdWNoIGFzIGEgc3BhbiwgdG8gZGlzYWJsZSB0aGUgaG9yaXpvbnRhbCBncmlkIG9uIHJ1bnMgb2YgdGV4dCB0aGF0IGFjdCBhcyBhIHNpbmdsZSBlbnRpdHkgaW4gdGhlIGdyaWQgbGF5b3V0LiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gZ3JpZCBpcyB1c2VkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyB3aGV0aGVyIHRoZSB0ZXh0IGxheW91dCBncmlkIHVzZXMgdHdvIGRpbWVuc2lvbnMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtbGF5b3V0LWdyaWQtdHlwZSIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImZpeGVkIixkZXNjcmlwdGlvbjoiR3JpZCB1c2VkIGZvciBtb25vc3BhY2VkIGxheW91dC4gQWxsIG5vbmN1cnNpdmUgY2hhcmFjdGVycyBhcmUgdHJlYXRlZCBhcyBlcXVhbDsgZXZlcnkgY2hhcmFjdGVyIGlzIGNlbnRlcmVkIHdpdGhpbiBhIHNpbmdsZSBncmlkIHNwYWNlIGJ5IGRlZmF1bHQuIn0se25hbWU6Imxvb3NlIixkZXNjcmlwdGlvbjoiRGVmYXVsdC4gR3JpZCB1c2VkIGZvciBKYXBhbmVzZSBhbmQgS29yZWFuIGNoYXJhY3RlcnMuIn0se25hbWU6InN0cmljdCIsZGVzY3JpcHRpb246IkdyaWQgdXNlZCBmb3IgQ2hpbmVzZSwgYXMgd2VsbCBhcyBKYXBhbmVzZSAoR2Vua28pIGFuZCBLb3JlYW4gY2hhcmFjdGVycy4gT25seSB0aGUgaWRlb2dyYXBocywga2FuYXMsIGFuZCB3aWRlIGNoYXJhY3RlcnMgYXJlIHNuYXBwZWQgdG8gdGhlIGdyaWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyBvciByZXRyaWV2ZXMgdGhlIHR5cGUgb2YgZ3JpZCB1c2VkIGZvciByZW5kZXJpbmcgdGhlIHRleHQgY29udGVudCBvZiBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWxpbmUtYnJlYWsiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIFVBIGRldGVybWluZXMgdGhlIHNldCBvZiBsaW5lLWJyZWFraW5nIHJlc3RyaWN0aW9ucyB0byB1c2UgZm9yIENKSyBzY3JpcHRzLCBhbmQgaXQgbWF5IHZhcnkgdGhlIHJlc3RyaWN0aW9ucyBiYXNlZCBvbiB0aGUgbGVuZ3RoIG9mIHRoZSBsaW5lOyBlLmcuLCB1c2UgYSBsZXNzIHJlc3RyaWN0aXZlIHNldCBvZiBsaW5lLWJyZWFrIHJ1bGVzIGZvciBzaG9ydCBsaW5lcy4ifSx7bmFtZToia2VlcC1hbGwiLGRlc2NyaXB0aW9uOiJTZXF1ZW5jZXMgb2YgQ0pLIGNoYXJhY3RlcnMgY2FuIG5vIGxvbmdlciBicmVhayBvbiBpbXBsaWVkIGJyZWFrIHBvaW50cy4gVGhpcyBvcHRpb24gc2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVyZSB0aGUgcHJlc2VuY2Ugb2Ygd29yZCBzZXBhcmF0b3IgY2hhcmFjdGVycyBzdGlsbCBjcmVhdGVzIGxpbmUtYnJlYWtpbmcgb3Bwb3J0dW5pdGllcywgYXMgaW4gS29yZWFuLiJ9LHtuYW1lOiJuZXdzcGFwZXIiLGRlc2NyaXB0aW9uOiJCcmVha3MgQ0pLIHNjcmlwdHMgdXNpbmcgdGhlIGxlYXN0IHJlc3RyaWN0aXZlIHNldCBvZiBsaW5lLWJyZWFraW5nIHJ1bGVzLiBUeXBpY2FsbHkgdXNlZCBmb3Igc2hvcnQgbGluZXMsIHN1Y2ggYXMgaW4gbmV3c3BhcGVycy4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiQnJlYWtzIENKSyBzY3JpcHRzIHVzaW5nIGEgbm9ybWFsIHNldCBvZiBsaW5lLWJyZWFraW5nIHJ1bGVzLiJ9LHtuYW1lOiJzdHJpY3QiLGRlc2NyaXB0aW9uOiJCcmVha3MgQ0pLIHNjcmlwdHMgdXNpbmcgYSBtb3JlIHJlc3RyaWN0aXZlIHNldCBvZiBsaW5lLWJyZWFraW5nIHJ1bGVzIHRoYW4gJ25vcm1hbCcuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoYXQgc2V0IG9mIGxpbmUgYnJlYWtpbmcgcmVzdHJpY3Rpb25zIGFyZSBpbiBlZmZlY3Qgd2l0aGluIHRoZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLW92ZXJmbG93LXN0eWxlIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246Ik5vIHByZWZlcmVuY2UsIFVBIHNob3VsZCB1c2UgdGhlIGZpcnN0IHNjcm9sbGluZyBtZXRob2QgaW4gdGhlIGxpc3QgdGhhdCBpdCBzdXBwb3J0cy4ifSx7bmFtZToiLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoZSBlbGVtZW50IGRpc3BsYXlzIGF1dG8taGlkaW5nIHNjcm9sbGJhcnMgZHVyaW5nIG1vdXNlIGludGVyYWN0aW9ucyBhbmQgcGFubmluZyBpbmRpY2F0b3JzIGR1cmluZyB0b3VjaCBhbmQga2V5Ym9hcmQgaW50ZXJhY3Rpb25zLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoZSBlbGVtZW50IGRvZXMgbm90IGRpc3BsYXkgc2Nyb2xsYmFycyBvciBwYW5uaW5nIGluZGljYXRvcnMsIGV2ZW4gd2hlbiBpdHMgY29udGVudCBvdmVyZmxvd3MuIn0se25hbWU6InNjcm9sbGJhciIsZGVzY3JpcHRpb246J1Njcm9sbGJhcnMgYXJlIHR5cGljYWxseSBuYXJyb3cgc3RyaXBzIGluc2VydGVkIG9uIG9uZSBvciB0d28gZWRnZXMgb2YgYW4gZWxlbWVudCBhbmQgd2hpY2ggb2Z0ZW4gaGF2ZSBhcnJvd3MgdG8gY2xpY2sgb24gYW5kIGEgInRodW1iIiB0byBkcmFnIHVwIGFuZCBkb3duIChvciBsZWZ0IGFuZCByaWdodCkgdG8gbW92ZSB0aGUgY29udGVudHMgb2YgdGhlIGVsZW1lbnQuJ31dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiYXV0byB8IG5vbmUgfCBzY3JvbGxiYXIgfCAtbXMtYXV0b2hpZGluZy1zY3JvbGxiYXIiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTcGVjaWZ5IHdoZXRoZXIgY29udGVudCBpcyBjbGlwcGVkIHdoZW4gaXQgb3ZlcmZsb3dzIHRoZSBlbGVtZW50J3MgY29udGVudCBhcmVhLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXBlcnNwZWN0aXZlIixicm93c2VyczpbIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gcGVyc3BlY3RpdmUgdHJhbnNmb3JtIGlzIGFwcGxpZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQXBwbGllcyB0aGUgc2FtZSB0cmFuc2Zvcm0gYXMgdGhlIHBlcnNwZWN0aXZlKDxudW1iZXI+KSB0cmFuc2Zvcm0gZnVuY3Rpb24sIGV4Y2VwdCB0aGF0IGl0IGFwcGxpZXMgb25seSB0byB0aGUgcG9zaXRpb25lZCBvciB0cmFuc2Zvcm1lZCBjaGlsZHJlbiBvZiB0aGUgZWxlbWVudCwgbm90IHRvIHRoZSB0cmFuc2Zvcm0gb24gdGhlIGVsZW1lbnQgaXRzZWxmLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiItbXMtcGVyc3BlY3RpdmUtb3JpZ2luIixicm93c2VyczpbIklFMTAiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkVzdGFibGlzaGVzIHRoZSBvcmlnaW4gZm9yIHRoZSBwZXJzcGVjdGl2ZSBwcm9wZXJ0eS4gSXQgZWZmZWN0aXZlbHkgc2V0cyB0aGUgWCBhbmQgWSBwb3NpdGlvbiBhdCB3aGljaCB0aGUgdmlld2VyIGFwcGVhcnMgdG8gYmUgbG9va2luZyBhdCB0aGUgY2hpbGRyZW4gb2YgdGhlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsInBlcmNlbnRhZ2UiLCJsZW5ndGgiXX0se25hbWU6Ii1tcy1wZXJzcGVjdGl2ZS1vcmlnaW4teCIsYnJvd3NlcnM6WyJJRTEwIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJFc3RhYmxpc2hlcyB0aGUgb3JpZ2luIGZvciB0aGUgcGVyc3BlY3RpdmUgcHJvcGVydHkuIEl0IGVmZmVjdGl2ZWx5IHNldHMgdGhlIFggIHBvc2l0aW9uIGF0IHdoaWNoIHRoZSB2aWV3ZXIgYXBwZWFycyB0byBiZSBsb29raW5nIGF0IHRoZSBjaGlsZHJlbiBvZiB0aGUgZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbInBvc2l0aW9uIiwicGVyY2VudGFnZSIsImxlbmd0aCJdfSx7bmFtZToiLW1zLXBlcnNwZWN0aXZlLW9yaWdpbi15Iixicm93c2VyczpbIklFMTAiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkVzdGFibGlzaGVzIHRoZSBvcmlnaW4gZm9yIHRoZSBwZXJzcGVjdGl2ZSBwcm9wZXJ0eS4gSXQgZWZmZWN0aXZlbHkgc2V0cyB0aGUgWSBwb3NpdGlvbiBhdCB3aGljaCB0aGUgdmlld2VyIGFwcGVhcnMgdG8gYmUgbG9va2luZyBhdCB0aGUgY2hpbGRyZW4gb2YgdGhlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsInBlcmNlbnRhZ2UiLCJsZW5ndGgiXX0se25hbWU6Ii1tcy1wcm9ncmVzcy1hcHBlYXJhbmNlIixicm93c2VyczpbIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJiYXIifSx7bmFtZToicmluZyJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyBhIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHdoZXRoZXIgYSBwcm9ncmVzcyBjb250cm9sIGRpc3BsYXlzIGFzIGEgYmFyIG9yIGEgcmluZy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1zY3JvbGxiYXItM2RsaWdodC1jb2xvciIsYnJvd3NlcnM6WyJJRTgiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgdG9wIGFuZCBsZWZ0IGVkZ2VzIG9mIHRoZSBzY3JvbGwgYm94IGFuZCBzY3JvbGwgYXJyb3dzIG9mIGEgc2Nyb2xsIGJhci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItbXMtc2Nyb2xsYmFyLWFycm93LWNvbG9yIixicm93c2VyczpbIklFOCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSBhcnJvdyBlbGVtZW50cyBvZiBhIHNjcm9sbCBhcnJvdy4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItbXMtc2Nyb2xsYmFyLWJhc2UtY29sb3IiLGJyb3dzZXJzOlsiSUU4Il0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgY29sb3Igb2YgdGhlIG1haW4gZWxlbWVudHMgb2YgYSBzY3JvbGwgYmFyLCB3aGljaCBpbmNsdWRlIHRoZSBzY3JvbGwgYm94LCB0cmFjaywgYW5kIHNjcm9sbCBhcnJvd3MuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiLW1zLXNjcm9sbGJhci1kYXJrc2hhZG93LWNvbG9yIixicm93c2VyczpbIklFOCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSBndXR0ZXIgb2YgYSBzY3JvbGwgYmFyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tcy1zY3JvbGxiYXItZmFjZS1jb2xvciIsYnJvd3NlcnM6WyJJRTgiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgc2Nyb2xsIGJveCBhbmQgc2Nyb2xsIGFycm93cyBvZiBhIHNjcm9sbCBiYXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiLW1zLXNjcm9sbGJhci1oaWdobGlnaHQtY29sb3IiLGJyb3dzZXJzOlsiSUU4Il0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgY29sb3Igb2YgdGhlIHRvcCBhbmQgbGVmdCBlZGdlcyBvZiB0aGUgc2Nyb2xsIGJveCBhbmQgc2Nyb2xsIGFycm93cyBvZiBhIHNjcm9sbCBiYXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiLW1zLXNjcm9sbGJhci1zaGFkb3ctY29sb3IiLGJyb3dzZXJzOlsiSUU4Il0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgY29sb3Igb2YgdGhlIGJvdHRvbSBhbmQgcmlnaHQgZWRnZXMgb2YgdGhlIHNjcm9sbCBib3ggYW5kIHNjcm9sbCBhcnJvd3Mgb2YgYSBzY3JvbGwgYmFyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tcy1zY3JvbGxiYXItdHJhY2stY29sb3IiLGJyb3dzZXJzOlsiSUU1Il0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLW1zLXNjcm9sbGJhci10cmFjay1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgY29sb3Igb2YgdGhlIHRyYWNrIGVsZW1lbnQgb2YgYSBzY3JvbGwgYmFyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tcy1zY3JvbGwtY2hhaW5pbmciLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJjaGFpbmVkIn0se25hbWU6Im5vbmUifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJjaGFpbmVkIHwgbm9uZSIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyBhIHZhbHVlIHRoYXQgaW5kaWNhdGVzIHRoZSBzY3JvbGxpbmcgYmVoYXZpb3IgdGhhdCBvY2N1cnMgd2hlbiBhIHVzZXIgaGl0cyB0aGUgY29udGVudCBib3VuZGFyeSBkdXJpbmcgYSBtYW5pcHVsYXRpb24uIixyZXN0cmljdGlvbnM6WyJlbnVtIiwibGVuZ3RoIl19LHtuYW1lOiItbXMtc2Nyb2xsLWxpbWl0Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjwnLW1zLXNjcm9sbC1saW1pdC14LW1pbic+IDwnLW1zLXNjcm9sbC1saW1pdC15LW1pbic+IDwnLW1zLXNjcm9sbC1saW1pdC14LW1heCc+IDwnLW1zLXNjcm9sbC1saW1pdC15LW1heCc+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgc2hvcnRoYW5kIHZhbHVlIHRoYXQgc2V0cyB2YWx1ZXMgZm9yIHRoZSAtbXMtc2Nyb2xsLWxpbWl0LXgtbWluLCAtbXMtc2Nyb2xsLWxpbWl0LXktbWluLCAtbXMtc2Nyb2xsLWxpbWl0LXgtbWF4LCBhbmQgLW1zLXNjcm9sbC1saW1pdC15LW1heCBwcm9wZXJ0aWVzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiItbXMtc2Nyb2xsLWxpbWl0LXgtbWF4Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6ImF1dG8gfCA8bGVuZ3RoPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyBhIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHRoZSBtYXhpbXVtIHZhbHVlIGZvciB0aGUgc2Nyb2xsTGVmdCBwcm9wZXJ0eS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToiLW1zLXNjcm9sbC1saW1pdC14LW1pbiIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGxlbmd0aD4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSB2YWx1ZSB0aGF0IHNwZWNpZmllcyB0aGUgbWluaW11bSB2YWx1ZSBmb3IgdGhlIHNjcm9sbExlZnQgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6Ii1tcy1zY3JvbGwtbGltaXQteS1tYXgiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiYXV0byB8IDxsZW5ndGg+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBzcGVjaWZpZXMgdGhlIG1heGltdW0gdmFsdWUgZm9yIHRoZSBzY3JvbGxUb3AgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6Ii1tcy1zY3JvbGwtbGltaXQteS1taW4iLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxsZW5ndGg+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBzcGVjaWZpZXMgdGhlIG1pbmltdW0gdmFsdWUgZm9yIHRoZSBzY3JvbGxUb3AgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6Ii1tcy1zY3JvbGwtcmFpbHMiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJub25lIn0se25hbWU6InJhaWxlZCJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Im5vbmUgfCByYWlsZWQiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSB2YWx1ZSB0aGF0IGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCBzbWFsbCBtb3Rpb25zIHBlcnBlbmRpY3VsYXIgdG8gdGhlIHByaW1hcnkgYXhpcyBvZiBtb3Rpb24gd2lsbCByZXN1bHQgaW4gZWl0aGVyIGNoYW5nZXMgdG8gYm90aCB0aGUgc2Nyb2xsVG9wIGFuZCBzY3JvbGxMZWZ0IHByb3BlcnRpZXMgb3IgYSBjaGFuZ2UgdG8gdGhlIHByaW1hcnkgYXhpcyAoZm9yIGluc3RhbmNlLCBlaXRoZXIgdGhlIHNjcm9sbFRvcCBvciBzY3JvbGxMZWZ0IHByb3BlcnRpZXMgd2lsbCBjaGFuZ2UsIGJ1dCBub3QgYm90aCkuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwibGVuZ3RoIl19LHtuYW1lOiItbXMtc2Nyb2xsLXNuYXAtcG9pbnRzLXgiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJzbmFwSW50ZXJ2YWwoMTAwJSwgMTAwJSkifSx7bmFtZToic25hcExpc3QoKSJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6InNuYXBJbnRlcnZhbCggPGxlbmd0aC1wZXJjZW50YWdlPiwgPGxlbmd0aC1wZXJjZW50YWdlPiApIHwgc25hcExpc3QoIDxsZW5ndGgtcGVyY2VudGFnZT4jICkiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSB2YWx1ZSB0aGF0IGRlZmluZXMgd2hlcmUgc25hcC1wb2ludHMgd2lsbCBiZSBsb2NhdGVkIGFsb25nIHRoZSB4LWF4aXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtc2Nyb2xsLXNuYXAtcG9pbnRzLXkiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJzbmFwSW50ZXJ2YWwoMTAwJSwgMTAwJSkifSx7bmFtZToic25hcExpc3QoKSJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6InNuYXBJbnRlcnZhbCggPGxlbmd0aC1wZXJjZW50YWdlPiwgPGxlbmd0aC1wZXJjZW50YWdlPiApIHwgc25hcExpc3QoIDxsZW5ndGgtcGVyY2VudGFnZT4jICkiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSB2YWx1ZSB0aGF0IGRlZmluZXMgd2hlcmUgc25hcC1wb2ludHMgd2lsbCBiZSBsb2NhdGVkIGFsb25nIHRoZSB5LWF4aXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtc2Nyb2xsLXNuYXAtdHlwZSIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgdmlzdWFsIHZpZXdwb3J0IG9mIHRoaXMgc2Nyb2xsIGNvbnRhaW5lciBtdXN0IGlnbm9yZSBzbmFwIHBvaW50cywgaWYgYW55LCB3aGVuIHNjcm9sbGVkLiJ9LHtuYW1lOiJtYW5kYXRvcnkiLGRlc2NyaXB0aW9uOiJUaGUgdmlzdWFsIHZpZXdwb3J0IG9mIHRoaXMgc2Nyb2xsIGNvbnRhaW5lciBpcyBndWFyYW50ZWVkIHRvIHJlc3Qgb24gYSBzbmFwIHBvaW50IHdoZW4gdGhlcmUgYXJlIG5vIGFjdGl2ZSBzY3JvbGxpbmcgb3BlcmF0aW9ucy4ifSx7bmFtZToicHJveGltaXR5IixkZXNjcmlwdGlvbjoiVGhlIHZpc3VhbCB2aWV3cG9ydCBvZiB0aGlzIHNjcm9sbCBjb250YWluZXIgbWF5IGNvbWUgdG8gcmVzdCBvbiBhIHNuYXAgcG9pbnQgYXQgdGhlIHRlcm1pbmF0aW9uIG9mIGEgc2Nyb2xsIGF0IHRoZSBkaXNjcmV0aW9uIG9mIHRoZSBVQSBnaXZlbiB0aGUgcGFyYW1ldGVycyBvZiB0aGUgc2Nyb2xsLiJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Im5vbmUgfCBwcm94aW1pdHkgfCBtYW5kYXRvcnkiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSB2YWx1ZSB0aGF0IGRlZmluZXMgd2hhdCB0eXBlIG9mIHNuYXAtcG9pbnQgc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBjdXJyZW50IGVsZW1lbnQuIFRoZXJlIGFyZSB0d28gdHlwZSBvZiBzbmFwLXBvaW50cywgd2l0aCB0aGUgcHJpbWFyeSBkaWZmZXJlbmNlIGJlaW5nIHdoZXRoZXIgb3Igbm90IHRoZSB1c2VyIGlzIGd1YXJhbnRlZWQgdG8gYWx3YXlzIHN0b3Agb24gYSBzbmFwLXBvaW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXNjcm9sbC1zbmFwLXgiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJtYW5kYXRvcnkifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJwcm94aW1pdHkifSx7bmFtZToic25hcEludGVydmFsKDEwMCUsIDEwMCUpIn0se25hbWU6InNuYXBMaXN0KCkifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Jy1tcy1zY3JvbGwtc25hcC10eXBlJz4gPCctbXMtc2Nyb2xsLXNuYXAtcG9pbnRzLXgnPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyBhIHNob3J0aGFuZCB2YWx1ZSB0aGF0IHNldHMgdmFsdWVzIGZvciB0aGUgLW1zLXNjcm9sbC1zbmFwLXR5cGUgYW5kIC1tcy1zY3JvbGwtc25hcC1wb2ludHMteCBwcm9wZXJ0aWVzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXNjcm9sbC1zbmFwLXkiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJtYW5kYXRvcnkifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJwcm94aW1pdHkifSx7bmFtZToic25hcEludGVydmFsKDEwMCUsIDEwMCUpIn0se25hbWU6InNuYXBMaXN0KCkifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Jy1tcy1zY3JvbGwtc25hcC10eXBlJz4gPCctbXMtc2Nyb2xsLXNuYXAtcG9pbnRzLXknPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyBhIHNob3J0aGFuZCB2YWx1ZSB0aGF0IHNldHMgdmFsdWVzIGZvciB0aGUgLW1zLXNjcm9sbC1zbmFwLXR5cGUgYW5kIC1tcy1zY3JvbGwtc25hcC1wb2ludHMteSBwcm9wZXJ0aWVzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXNjcm9sbC10cmFuc2xhdGlvbiIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6Im5vbmUifSx7bmFtZToidmVydGljYWwtdG8taG9yaXpvbnRhbCJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Im5vbmUgfCB2ZXJ0aWNhbC10by1ob3Jpem9udGFsIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBzcGVjaWZpZXMgd2hldGhlciB2ZXJ0aWNhbC10by1ob3Jpem9udGFsIHNjcm9sbCB3aGVlbCB0cmFuc2xhdGlvbiBvY2N1cnMgb24gdGhlIHNwZWNpZmllZCBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXRleHQtYWxpZ24tbGFzdCIsYnJvd3NlcnM6WyJFIiwiSUU4Il0sdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJUaGUgaW5saW5lIGNvbnRlbnRzIGFyZSBjZW50ZXJlZCB3aXRoaW4gdGhlIGxpbmUgYm94LiJ9LHtuYW1lOiJqdXN0aWZ5IixkZXNjcmlwdGlvbjoiVGhlIHRleHQgaXMganVzdGlmaWVkIGFjY29yZGluZyB0byB0aGUgbWV0aG9kIHNwZWNpZmllZCBieSB0aGUgJ3RleHQtanVzdGlmeScgcHJvcGVydHkuIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJUaGUgaW5saW5lIGNvbnRlbnRzIGFyZSBhbGlnbmVkIHRvIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIGxpbmUgYm94LiBJbiB2ZXJ0aWNhbCB0ZXh0LCAnbGVmdCcgYWxpZ25zIHRvIHRoZSBlZGdlIG9mIHRoZSBsaW5lIGJveCB0aGF0IHdvdWxkIGJlIHRoZSBzdGFydCBlZGdlIGZvciBsZWZ0LXRvLXJpZ2h0IHRleHQuIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiVGhlIGlubGluZSBjb250ZW50cyBhcmUgYWxpZ25lZCB0byB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgbGluZSBib3guIEluIHZlcnRpY2FsIHRleHQsICdyaWdodCcgYWxpZ25zIHRvIHRoZSBlZGdlIG9mIHRoZSBsaW5lIGJveCB0aGF0IHdvdWxkIGJlIHRoZSBlbmQgZWRnZSBmb3IgbGVmdC10by1yaWdodCB0ZXh0LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyBob3cgdGhlIGxhc3QgbGluZSBvZiBhIGJsb2NrIG9yIGEgbGluZSByaWdodCBiZWZvcmUgYSBmb3JjZWQgbGluZSBicmVhayBpcyBhbGlnbmVkIHdoZW4gJ3RleHQtYWxpZ24nIGlzIHNldCB0byAnanVzdGlmeScuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtdGV4dC1hdXRvc3BhY2UiLGJyb3dzZXJzOlsiRSIsIklFOCJdLHZhbHVlczpbe25hbWU6ImlkZW9ncmFwaC1hbHBoYSIsZGVzY3JpcHRpb246IkNyZWF0ZXMgMS80ZW0gZXh0cmEgc3BhY2luZyBiZXR3ZWVuIHJ1bnMgb2YgaWRlb2dyYXBoaWMgbGV0dGVycyBhbmQgbm9uLWlkZW9ncmFwaGljIGxldHRlcnMsIHN1Y2ggYXMgTGF0aW4tYmFzZWQsIEN5cmlsbGljLCBHcmVlaywgQXJhYmljIG9yIEhlYnJldy4ifSx7bmFtZToiaWRlb2dyYXBoLW51bWVyaWMiLGRlc2NyaXB0aW9uOiJDcmVhdGVzIDEvNGVtIGV4dHJhIHNwYWNpbmcgYmV0d2VlbiBydW5zIG9mIGlkZW9ncmFwaGljIGxldHRlcnMgYW5kIG51bWVyaWMgZ2x5cGhzLiJ9LHtuYW1lOiJpZGVvZ3JhcGgtcGFyZW50aGVzaXMiLGRlc2NyaXB0aW9uOiJDcmVhdGVzIGV4dHJhIHNwYWNpbmcgYmV0d2VlbiBub3JtYWwgKG5vbiB3aWRlKSBwYXJlbnRoZXNpcyBhbmQgaWRlb2dyYXBocy4ifSx7bmFtZToiaWRlb2dyYXBoLXNwYWNlIixkZXNjcmlwdGlvbjoiRXh0ZW5kcyB0aGUgd2lkdGggb2YgdGhlIHNwYWNlIGNoYXJhY3RlciB3aGlsZSBzdXJyb3VuZGVkIGJ5IGlkZW9ncmFwaHMuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBleHRyYSBzcGFjZSBpcyBjcmVhdGVkLiJ9LHtuYW1lOiJwdW5jdHVhdGlvbiIsZGVzY3JpcHRpb246IkNyZWF0ZXMgZXh0cmEgbm9uLWJyZWFraW5nIHNwYWNpbmcgYXJvdW5kIHB1bmN0dWF0aW9uIGFzIHJlcXVpcmVkIGJ5IGxhbmd1YWdlLXNwZWNpZmljIHR5cG9ncmFwaGljIGNvbnZlbnRpb25zLiJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Im5vbmUgfCBpZGVvZ3JhcGgtYWxwaGEgfCBpZGVvZ3JhcGgtbnVtZXJpYyB8IGlkZW9ncmFwaC1wYXJlbnRoZXNpcyB8IGlkZW9ncmFwaC1zcGFjZSIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkRldGVybWluZXMgd2hldGhlciBvciBub3QgYSBmdWxsLXdpZHRoIHB1bmN0dWF0aW9uIG1hcmsgY2hhcmFjdGVyIHNob3VsZCBiZSB0cmltbWVkIGlmIGl0IGFwcGVhcnMgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmUsIHNvIHRoYXQgaXRzICdpbmsnIGxpbmVzIHVwIHdpdGggdGhlIGZpcnN0IGdseXBoIGluIHRoZSBsaW5lIGFib3ZlIGFuZCBiZWxvdy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy10ZXh0LWNvbWJpbmUtaG9yaXpvbnRhbCIsYnJvd3NlcnM6WyJFIiwiSUUxMSJdLHZhbHVlczpbe25hbWU6ImFsbCIsZGVzY3JpcHRpb246IkF0dGVtcHQgdG8gdHlwZXNldCBob3Jpem9udGFsbHkgYWxsIGNvbnNlY3V0aXZlIGNoYXJhY3RlcnMgd2l0aGluIHRoZSBib3ggc3VjaCB0aGF0IHRoZXkgdGFrZSB1cCB0aGUgc3BhY2Ugb2YgYSBzaW5nbGUgY2hhcmFjdGVyIHdpdGhpbiB0aGUgdmVydGljYWwgbGluZSBib3guIn0se25hbWU6ImRpZ2l0cyIsZGVzY3JpcHRpb246IkF0dGVtcHQgdG8gdHlwZXNldCBob3Jpem9udGFsbHkgZWFjaCBtYXhpbWFsIHNlcXVlbmNlIG9mIGNvbnNlY3V0aXZlIEFTQ0lJIGRpZ2l0cyAoVSswMDMw4oCTVSswMDM5KSB0aGF0IGhhcyBhcyBtYW55IG9yIGZld2VyIGNoYXJhY3RlcnMgdGhhbiB0aGUgc3BlY2lmaWVkIGludGVnZXIgc3VjaCB0aGF0IGl0IHRha2VzIHVwIHRoZSBzcGFjZSBvZiBhIHNpbmdsZSBjaGFyYWN0ZXIgd2l0aGluIHRoZSB2ZXJ0aWNhbCBsaW5lIGJveC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHNwZWNpYWwgcHJvY2Vzc2luZy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGlzIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgY29tYmluYXRpb24gb2YgbXVsdGlwbGUgY2hhcmFjdGVycyBpbnRvIHRoZSBzcGFjZSBvZiBhIHNpbmdsZSBjaGFyYWN0ZXIuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwiaW50ZWdlciJdfSx7bmFtZToiLW1zLXRleHQtanVzdGlmeSIsYnJvd3NlcnM6WyJFIiwiSUU4Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBVQSBkZXRlcm1pbmVzIHRoZSBqdXN0aWZpY2F0aW9uIGFsZ29yaXRobSB0byBmb2xsb3csIGJhc2VkIG9uIGEgYmFsYW5jZSBiZXR3ZWVuIHBlcmZvcm1hbmNlIGFuZCBhZGVxdWF0ZSBwcmVzZW50YXRpb24gcXVhbGl0eS4ifSx7bmFtZToiZGlzdHJpYnV0ZSIsZGVzY3JpcHRpb246Ikp1c3RpZmljYXRpb24gcHJpbWFyaWx5IGNoYW5nZXMgc3BhY2luZyBib3RoIGF0IHdvcmQgc2VwYXJhdG9ycyBhbmQgYXQgZ3JhcGhlbWUgY2x1c3RlciBib3VuZGFyaWVzIGluIGFsbCBzY3JpcHRzIGV4Y2VwdCB0aG9zZSBpbiB0aGUgY29ubmVjdGVkIGFuZCBjdXJzaXZlIGdyb3Vwcy4gVGhpcyB2YWx1ZSBpcyBzb21ldGltZXMgdXNlZCBpbiBlLmcuIEphcGFuZXNlLCBvZnRlbiB3aXRoIHRoZSAndGV4dC1hbGlnbi1sYXN0JyBwcm9wZXJ0eS4ifSx7bmFtZToiaW50ZXItY2x1c3RlciIsZGVzY3JpcHRpb246Ikp1c3RpZmljYXRpb24gcHJpbWFyaWx5IGNoYW5nZXMgc3BhY2luZyBhdCB3b3JkIHNlcGFyYXRvcnMgYW5kIGF0IGdyYXBoZW1lIGNsdXN0ZXIgYm91bmRhcmllcyBpbiBjbHVzdGVyZWQgc2NyaXB0cy4gVGhpcyB2YWx1ZSBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgU291dGhlYXN0IEFzaWFuIHNjcmlwdHMgc3VjaCBhcyBUaGFpLiJ9LHtuYW1lOiJpbnRlci1pZGVvZ3JhcGgiLGRlc2NyaXB0aW9uOiJKdXN0aWZpY2F0aW9uIHByaW1hcmlseSBjaGFuZ2VzIHNwYWNpbmcgYXQgd29yZCBzZXBhcmF0b3JzIGFuZCBhdCBpbnRlci1ncmFwaGVtaWMgYm91bmRhcmllcyBpbiBzY3JpcHRzIHRoYXQgdXNlIG5vIHdvcmQgc3BhY2VzLiBUaGlzIHZhbHVlIGlzIHR5cGljYWxseSB1c2VkIGZvciBDSksgbGFuZ3VhZ2VzLiJ9LHtuYW1lOiJpbnRlci13b3JkIixkZXNjcmlwdGlvbjoiSnVzdGlmaWNhdGlvbiBwcmltYXJpbHkgY2hhbmdlcyBzcGFjaW5nIGF0IHdvcmQgc2VwYXJhdG9ycy4gVGhpcyB2YWx1ZSBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgbGFuZ3VhZ2VzIHRoYXQgc2VwYXJhdGUgd29yZHMgdXNpbmcgc3BhY2VzLCBsaWtlIEVuZ2xpc2ggb3IgKHNvbWV0aW1lcykgS29yZWFuLiJ9LHtuYW1lOiJrYXNoaWRhIixkZXNjcmlwdGlvbjoiSnVzdGlmaWNhdGlvbiBwcmltYXJpbHkgc3RyZXRjaGVzIEFyYWJpYyBhbmQgcmVsYXRlZCBzY3JpcHRzIHRocm91Z2ggdGhlIHVzZSBvZiBrYXNoaWRhIG9yIG90aGVyIGNhbGxpZ3JhcGhpYyBlbG9uZ2F0aW9uLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNlbGVjdHMgdGhlIGp1c3RpZmljYXRpb24gYWxnb3JpdGhtIHVzZWQgd2hlbiAndGV4dC1hbGlnbicgaXMgc2V0IHRvICdqdXN0aWZ5Jy4gVGhlIHByb3BlcnR5IGFwcGxpZXMgdG8gYmxvY2sgY29udGFpbmVycywgYnV0IHRoZSBVQSBtYXkgKGJ1dCBpcyBub3QgcmVxdWlyZWQgdG8pIGFsc28gc3VwcG9ydCBpdCBvbiBpbmxpbmUgZWxlbWVudHMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtdGV4dC1rYXNoaWRhLXNwYWNlIixicm93c2VyczpbIkUiLCJJRTEwIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTZXRzIG9yIHJldHJpZXZlcyB0aGUgcmF0aW8gb2Yga2FzaGlkYSBleHBhbnNpb24gdG8gd2hpdGUgc3BhY2UgZXhwYW5zaW9uIHdoZW4ganVzdGlmeWluZyBsaW5lcyBvZiB0ZXh0IGluIHRoZSBvYmplY3QuIixyZXN0cmljdGlvbnM6WyJwZXJjZW50YWdlIl19LHtuYW1lOiItbXMtdGV4dC1vdmVyZmxvdyIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToiY2xpcCIsZGVzY3JpcHRpb246IkNsaXAgaW5saW5lIGNvbnRlbnQgdGhhdCBvdmVyZmxvd3MuIENoYXJhY3RlcnMgbWF5IGJlIG9ubHkgcGFydGlhbGx5IHJlbmRlcmVkLiJ9LHtuYW1lOiJlbGxpcHNpcyIsZGVzY3JpcHRpb246IlJlbmRlciBhbiBlbGxpcHNpcyBjaGFyYWN0ZXIgKFUrMjAyNikgdG8gcmVwcmVzZW50IGNsaXBwZWQgaW5saW5lIGNvbnRlbnQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGV4dCBjYW4gb3ZlcmZsb3cgZm9yIGV4YW1wbGUgd2hlbiBpdCBpcyBwcmV2ZW50ZWQgZnJvbSB3cmFwcGluZyIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXRleHQtc2l6ZS1hZGp1c3QiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiUmVuZGVyZXJzIG11c3QgdXNlIHRoZSBkZWZhdWx0IHNpemUgYWRqdXN0bWVudCB3aGVuIGRpc3BsYXlpbmcgb24gYSBzbWFsbCBkZXZpY2UuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJSZW5kZXJlcnMgbXVzdCBub3QgZG8gc2l6ZSBhZGp1c3RtZW50IHdoZW4gZGlzcGxheWluZyBvbiBhIHNtYWxsIGRldmljZS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBzaXplIGFkanVzdG1lbnQgZm9yIGRpc3BsYXlpbmcgdGV4dCBjb250ZW50IGluIG1vYmlsZSBicm93c2Vycy4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJwZXJjZW50YWdlIl19LHtuYW1lOiItbXMtdGV4dC11bmRlcmxpbmUtcG9zaXRpb24iLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJhbHBoYWJldGljIixkZXNjcmlwdGlvbjoiVGhlIHVuZGVybGluZSBpcyBhbGlnbmVkIHdpdGggdGhlIGFscGhhYmV0aWMgYmFzZWxpbmUuIEluIHRoaXMgY2FzZSB0aGUgdW5kZXJsaW5lIGlzIGxpa2VseSB0byBjcm9zcyBzb21lIGRlc2NlbmRlcnMuIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgdXNlciBhZ2VudCBtYXkgdXNlIGFueSBhbGdvcml0aG0gdG8gZGV0ZXJtaW5lIHRoZSB1bmRlcmxpbmUncyBwb3NpdGlvbi4gSW4gaG9yaXpvbnRhbCBsaW5lIGxheW91dCwgdGhlIHVuZGVybGluZSBzaG91bGQgYmUgYWxpZ25lZCBhcyBmb3IgYWxwaGFiZXRpYy4gSW4gdmVydGljYWwgbGluZSBsYXlvdXQsIGlmIHRoZSBsYW5ndWFnZSBpcyBzZXQgdG8gSmFwYW5lc2Ugb3IgS29yZWFuLCB0aGUgdW5kZXJsaW5lIHNob3VsZCBiZSBhbGlnbmVkIGFzIGZvciBvdmVyLiJ9LHtuYW1lOiJvdmVyIixkZXNjcmlwdGlvbjoiVGhlIHVuZGVybGluZSBpcyBhbGlnbmVkIHdpdGggdGhlICd0b3AnIChyaWdodCBpbiB2ZXJ0aWNhbCB3cml0aW5nKSBlZGdlIG9mIHRoZSBlbGVtZW50J3MgZW0tYm94LiBJbiB0aGlzIG1vZGUsIGFuIG92ZXJsaW5lIGFsc28gc3dpdGNoZXMgc2lkZXMuIn0se25hbWU6InVuZGVyIixkZXNjcmlwdGlvbjoiVGhlIHVuZGVybGluZSBpcyBhbGlnbmVkIHdpdGggdGhlICdib3R0b20nIChsZWZ0IGluIHZlcnRpY2FsIHdyaXRpbmcpIGVkZ2Ugb2YgdGhlIGVsZW1lbnQncyBlbS1ib3guIEluIHRoaXMgY2FzZSB0aGUgdW5kZXJsaW5lIHVzdWFsbHkgZG9lcyBub3QgY3Jvc3MgdGhlIGRlc2NlbmRlcnMuIFRoaXMgaXMgc29tZXRpbWVzIGNhbGxlZCAnYWNjb3VudGluZycgdW5kZXJsaW5lLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNldHMgdGhlIHBvc2l0aW9uIG9mIGFuIHVuZGVybGluZSBzcGVjaWZpZWQgb24gdGhlIHNhbWUgZWxlbWVudDogaXQgZG9lcyBub3QgYWZmZWN0IHVuZGVybGluZXMgc3BlY2lmaWVkIGJ5IGFuY2VzdG9yIGVsZW1lbnRzLlRoaXMgcHJvcGVydHkgaXMgdHlwaWNhbGx5IHVzZWQgaW4gdmVydGljYWwgd3JpdGluZyBjb250ZXh0cyBzdWNoIGFzIGluIEphcGFuZXNlIGRvY3VtZW50cyB3aGVyZSBpdCBvZnRlbiBkZXNpcmVkIHRvIGhhdmUgdGhlIHVuZGVybGluZSBhcHBlYXIgJ292ZXInICh0byB0aGUgcmlnaHQgb2YpIHRoZSBhZmZlY3RlZCBydW4gb2YgdGV4dCIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXRvdWNoLWFjdGlvbiIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGlzIGEgcGFzc2l2ZSBlbGVtZW50LCB3aXRoIHNldmVyYWwgZXhjZXB0aW9ucy4ifSx7bmFtZToiZG91YmxlLXRhcC16b29tIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgd2lsbCB6b29tIG9uIGRvdWJsZS10YXAuIn0se25hbWU6Im1hbmlwdWxhdGlvbiIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGlzIGEgbWFuaXB1bGF0aW9uLWNhdXNpbmcgZWxlbWVudC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGlzIGEgbWFuaXB1bGF0aW9uLWJsb2NraW5nIGVsZW1lbnQuIn0se25hbWU6InBhbi14IixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgcGVybWl0cyB0b3VjaC1kcml2ZW4gcGFubmluZyBvbiB0aGUgaG9yaXpvbnRhbCBheGlzLiBUaGUgdG91Y2ggcGFuIGlzIHBlcmZvcm1lZCBvbiB0aGUgbmVhcmVzdCBhbmNlc3RvciB3aXRoIGhvcml6b250YWxseSBzY3JvbGxhYmxlIGNvbnRlbnQuIn0se25hbWU6InBhbi15IixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgcGVybWl0cyB0b3VjaC1kcml2ZW4gcGFubmluZyBvbiB0aGUgdmVydGljYWwgYXhpcy4gVGhlIHRvdWNoIHBhbiBpcyBwZXJmb3JtZWQgb24gdGhlIG5lYXJlc3QgYW5jZXN0b3Igd2l0aCB2ZXJ0aWNhbGx5IHNjcm9sbGFibGUgY29udGVudC4ifSx7bmFtZToicGluY2gtem9vbSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IHBlcm1pdHMgcGluY2gtem9vbWluZy4gVGhlIHBpbmNoLXpvb20gaXMgcGVyZm9ybWVkIG9uIHRoZSBuZWFyZXN0IGFuY2VzdG9yIHdpdGggem9vbWFibGUgY29udGVudC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSB2YWx1ZSB0aGF0IGluZGljYXRlcyB3aGV0aGVyIGFuZCBob3cgYSBnaXZlbiByZWdpb24gY2FuIGJlIG1hbmlwdWxhdGVkIGJ5IHRoZSB1c2VyLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXRvdWNoLXNlbGVjdCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImdyaXBwZXJzIixkZXNjcmlwdGlvbjoiR3JpcHBlcnMgYXJlIGFsd2F5cyBvbi4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkdyaXBwZXJzIGFyZSBhbHdheXMgb2ZmLiJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6ImdyaXBwZXJzIHwgbm9uZSIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyBhIHZhbHVlIHRoYXQgdG9nZ2xlcyB0aGUgJ2dyaXBwZXInIHZpc3VhbCBlbGVtZW50cyB0aGF0IGVuYWJsZSB0b3VjaCB0ZXh0IHNlbGVjdGlvbi4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy10cmFuc2Zvcm0iLGJyb3dzZXJzOlsiSUU5LTkiXSx2YWx1ZXM6W3tuYW1lOiJtYXRyaXgoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHRyYW5zZm9ybWF0aW9uIGluIHRoZSBmb3JtIG9mIGEgdHJhbnNmb3JtYXRpb24gbWF0cml4IG9mIHNpeCB2YWx1ZXMuIG1hdHJpeChhLGIsYyxkLGUsZikgaXMgZXF1aXZhbGVudCB0byBhcHBseWluZyB0aGUgdHJhbnNmb3JtYXRpb24gbWF0cml4IFthIGIgYyBkIGUgZl0ifSx7bmFtZToibWF0cml4M2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDNEIHRyYW5zZm9ybWF0aW9uIGFzIGEgNHg0IGhvbW9nZW5lb3VzIG1hdHJpeCBvZiAxNiB2YWx1ZXMgaW4gY29sdW1uLW1ham9yIG9yZGVyLiJ9LHtuYW1lOiJub25lIn0se25hbWU6InJvdGF0ZSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgMkQgcm90YXRpb24gYnkgdGhlIGFuZ2xlIHNwZWNpZmllZCBpbiB0aGUgcGFyYW1ldGVyIGFib3V0IHRoZSBvcmlnaW4gb2YgdGhlIGVsZW1lbnQsIGFzIGRlZmluZWQgYnkgdGhlIHRyYW5zZm9ybS1vcmlnaW4gcHJvcGVydHkuIn0se25hbWU6InJvdGF0ZTNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbG9ja3dpc2UgM0Qgcm90YXRpb24gYnkgdGhlIGFuZ2xlIHNwZWNpZmllZCBpbiBsYXN0IHBhcmFtZXRlciBhYm91dCB0aGUgW3gseSx6XSBkaXJlY3Rpb24gdmVjdG9yIGRlc2NyaWJlZCBieSB0aGUgZmlyc3QgMyBwYXJhbWV0ZXJzLiJ9LHtuYW1lOiJyb3RhdGVYKCdhbmdsZScpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIHJvdGF0aW9uIGJ5IHRoZSBnaXZlbiBhbmdsZSBhYm91dCB0aGUgWCBheGlzLiJ9LHtuYW1lOiJyb3RhdGVZKCdhbmdsZScpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIHJvdGF0aW9uIGJ5IHRoZSBnaXZlbiBhbmdsZSBhYm91dCB0aGUgWSBheGlzLiJ9LHtuYW1lOiJyb3RhdGVaKCdhbmdsZScpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIHJvdGF0aW9uIGJ5IHRoZSBnaXZlbiBhbmdsZSBhYm91dCB0aGUgWiBheGlzLiJ9LHtuYW1lOiJzY2FsZSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgMkQgc2NhbGUgb3BlcmF0aW9uIGJ5IHRoZSBbc3gsc3ldIHNjYWxpbmcgdmVjdG9yIGRlc2NyaWJlZCBieSB0aGUgMiBwYXJhbWV0ZXJzLiBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciBpcyBub3QgcHJvdmlkZWQsIGl0IGlzIHRha2VzIGEgdmFsdWUgZXF1YWwgdG8gdGhlIGZpcnN0LiJ9LHtuYW1lOiJzY2FsZTNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAzRCBzY2FsZSBvcGVyYXRpb24gYnkgdGhlIFtzeCxzeSxzel0gc2NhbGluZyB2ZWN0b3IgZGVzY3JpYmVkIGJ5IHRoZSAzIHBhcmFtZXRlcnMuIn0se25hbWU6InNjYWxlWCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2NhbGUgb3BlcmF0aW9uIHVzaW5nIHRoZSBbc3gsMV0gc2NhbGluZyB2ZWN0b3IsIHdoZXJlIHN4IGlzIGdpdmVuIGFzIHRoZSBwYXJhbWV0ZXIuIn0se25hbWU6InNjYWxlWSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2NhbGUgb3BlcmF0aW9uIHVzaW5nIHRoZSBbc3ksMV0gc2NhbGluZyB2ZWN0b3IsIHdoZXJlIHN5IGlzIGdpdmVuIGFzIHRoZSBwYXJhbWV0ZXIuIn0se25hbWU6InNjYWxlWigpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2NhbGUgb3BlcmF0aW9uIHVzaW5nIHRoZSBbMSwxLHN6XSBzY2FsaW5nIHZlY3Rvciwgd2hlcmUgc3ogaXMgZ2l2ZW4gYXMgdGhlIHBhcmFtZXRlci4ifSx7bmFtZToic2tldygpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2tldyB0cmFuc2Zvcm1hdGlvbiBhbG9uZyB0aGUgWCBhbmQgWSBheGVzLiBUaGUgZmlyc3QgYW5nbGUgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgc2tldyBvbiB0aGUgWCBheGlzLiBUaGUgc2Vjb25kIGFuZ2xlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHNrZXcgb24gdGhlIFkgYXhpcy4gSWYgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgbm90IGdpdmVuIHRoZW4gYSB2YWx1ZSBvZiAwIGlzIHVzZWQgZm9yIHRoZSBZIGFuZ2xlIChpZTogbm8gc2tldyBvbiB0aGUgWSBheGlzKS4ifSx7bmFtZToic2tld1goKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNrZXcgdHJhbnNmb3JtYXRpb24gYWxvbmcgdGhlIFggYXhpcyBieSB0aGUgZ2l2ZW4gYW5nbGUuIn0se25hbWU6InNrZXdZKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBza2V3IHRyYW5zZm9ybWF0aW9uIGFsb25nIHRoZSBZIGF4aXMgYnkgdGhlIGdpdmVuIGFuZ2xlLiJ9LHtuYW1lOiJ0cmFuc2xhdGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHRyYW5zbGF0aW9uIGJ5IHRoZSB2ZWN0b3IgW3R4LCB0eV0sIHdoZXJlIHR4IGlzIHRoZSBmaXJzdCB0cmFuc2xhdGlvbi12YWx1ZSBwYXJhbWV0ZXIgYW5kIHR5IGlzIHRoZSBvcHRpb25hbCBzZWNvbmQgdHJhbnNsYXRpb24tdmFsdWUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJ0cmFuc2xhdGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgM0QgdHJhbnNsYXRpb24gYnkgdGhlIHZlY3RvciBbdHgsdHksdHpdLCB3aXRoIHR4LCB0eSBhbmQgdHogYmVpbmcgdGhlIGZpcnN0LCBzZWNvbmQgYW5kIHRoaXJkIHRyYW5zbGF0aW9uLXZhbHVlIHBhcmFtZXRlcnMgcmVzcGVjdGl2ZWx5LiJ9LHtuYW1lOiJ0cmFuc2xhdGVYKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSB0cmFuc2xhdGlvbiBieSB0aGUgZ2l2ZW4gYW1vdW50IGluIHRoZSBYIGRpcmVjdGlvbi4ifSx7bmFtZToidHJhbnNsYXRlWSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgdHJhbnNsYXRpb24gYnkgdGhlIGdpdmVuIGFtb3VudCBpbiB0aGUgWSBkaXJlY3Rpb24uIn0se25hbWU6InRyYW5zbGF0ZVooKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHRyYW5zbGF0aW9uIGJ5IHRoZSBnaXZlbiBhbW91bnQgaW4gdGhlIFogZGlyZWN0aW9uLiBOb3RlIHRoYXQgcGVyY2VudGFnZSB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkIGluIHRoZSB0cmFuc2xhdGVaIHRyYW5zbGF0aW9uLXZhbHVlLCBhbmQgaWYgcHJlc2VudCBhcmUgZXZhbHVhdGVkIGFzIDAuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQSB0d28tZGltZW5zaW9uYWwgdHJhbnNmb3JtYXRpb24gaXMgYXBwbGllZCB0byBhbiBlbGVtZW50IHRocm91Z2ggdGhlICd0cmFuc2Zvcm0nIHByb3BlcnR5LiBUaGlzIHByb3BlcnR5IGNvbnRhaW5zIGEgbGlzdCBvZiB0cmFuc2Zvcm0gZnVuY3Rpb25zIHNpbWlsYXIgdG8gdGhvc2UgYWxsb3dlZCBieSBTVkcuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtdHJhbnNmb3JtLW9yaWdpbiIsYnJvd3NlcnM6WyJJRTktOSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRXN0YWJsaXNoZXMgdGhlIG9yaWdpbiBvZiB0cmFuc2Zvcm1hdGlvbiBmb3IgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbInBvc2l0aW9uIiwibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLW1zLXRyYW5zZm9ybS1vcmlnaW4teCIsYnJvd3NlcnM6WyJJRTEwIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgeCBjb29yZGluYXRlIG9mIHRoZSBvcmlnaW4gZm9yIHRyYW5zZm9ybXMgYXBwbGllZCB0byBhbiBlbGVtZW50IHdpdGggcmVzcGVjdCB0byBpdHMgYm9yZGVyIGJveC4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1tcy10cmFuc2Zvcm0tb3JpZ2luLXkiLGJyb3dzZXJzOlsiSUUxMCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlIHkgY29vcmRpbmF0ZSBvZiB0aGUgb3JpZ2luIGZvciB0cmFuc2Zvcm1zIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB3aXRoIHJlc3BlY3QgdG8gaXRzIGJvcmRlciBib3guIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItbXMtdHJhbnNmb3JtLW9yaWdpbi16Iixicm93c2VyczpbIklFMTAiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSB6IGNvb3JkaW5hdGUgb2YgdGhlIG9yaWdpbiBmb3IgdHJhbnNmb3JtcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgd2l0aCByZXNwZWN0IHRvIGl0cyBib3JkZXIgYm94LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLW1zLXVzZXItc2VsZWN0Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiZWxlbWVudCJ9LHtuYW1lOiJub25lIn0se25hbWU6InRleHQifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub25lIHwgZWxlbWVudCB8IHRleHQiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJDb250cm9scyB0aGUgYXBwZWFyYW5jZSBvZiBzZWxlY3Rpb24uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtd29yZC1icmVhayIsYnJvd3NlcnM6WyJJRTgiXSx2YWx1ZXM6W3tuYW1lOiJicmVhay1hbGwiLGRlc2NyaXB0aW9uOiJMaW5lcyBtYXkgYnJlYWsgYmV0d2VlbiBhbnkgdHdvIGdyYXBoZW1lIGNsdXN0ZXJzIGZvciBub24tQ0pLIHNjcmlwdHMuIn0se25hbWU6ImtlZXAtYWxsIixkZXNjcmlwdGlvbjoiQmxvY2sgY2hhcmFjdGVycyBjYW4gbm8gbG9uZ2VyIGNyZWF0ZSBpbXBsaWVkIGJyZWFrIHBvaW50cy4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiQnJlYWtzIG5vbi1DSksgc2NyaXB0cyBhY2NvcmRpbmcgdG8gdGhlaXIgb3duIHJ1bGVzLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBsaW5lIGJyZWFrIG9wcG9ydHVuaXRpZXMgZm9yIG5vbi1DSksgc2NyaXB0cy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy13b3JkLXdyYXAiLGJyb3dzZXJzOlsiSUU4Il0sdmFsdWVzOlt7bmFtZToiYnJlYWstd29yZCIsZGVzY3JpcHRpb246IkFuIHVuYnJlYWthYmxlICd3b3JkJyBtYXkgYmUgYnJva2VuIGF0IGFuIGFyYml0cmFyeSBwb2ludCBpZiB0aGVyZSBhcmUgbm8gb3RoZXJ3aXNlLWFjY2VwdGFibGUgYnJlYWsgcG9pbnRzIGluIHRoZSBsaW5lLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJMaW5lcyBtYXkgYnJlYWsgb25seSBhdCBhbGxvd2VkIGJyZWFrIHBvaW50cy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hldGhlciB0aGUgVUEgbWF5IGJyZWFrIHdpdGhpbiBhIHdvcmQgdG8gcHJldmVudCBvdmVyZmxvdyB3aGVuIGFuIG90aGVyd2lzZS11bmJyZWFrYWJsZSBzdHJpbmcgaXMgdG9vIGxvbmcgdG8gZml0LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXdyYXAtZmxvdyIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJGb3IgZmxvYXRzIGFuIGV4Y2x1c2lvbiBpcyBjcmVhdGVkLCBmb3IgYWxsIG90aGVyIGVsZW1lbnRzIGFuIGV4Y2x1c2lvbiBpcyBub3QgY3JlYXRlZC4ifSx7bmFtZToiYm90aCIsZGVzY3JpcHRpb246IklubGluZSBmbG93IGNvbnRlbnQgY2FuIGZsb3cgb24gYWxsIHNpZGVzIG9mIHRoZSBleGNsdXNpb24uIn0se25hbWU6ImNsZWFyIixkZXNjcmlwdGlvbjoiSW5saW5lIGZsb3cgY29udGVudCBjYW4gb25seSB3cmFwIG9uIHRvcCBhbmQgYm90dG9tIG9mIHRoZSBleGNsdXNpb24gYW5kIG11c3QgbGVhdmUgdGhlIGFyZWFzIHRvIHRoZSBzdGFydCBhbmQgZW5kIGVkZ2VzIG9mIHRoZSBleGNsdXNpb24gYm94IGVtcHR5LiJ9LHtuYW1lOiJlbmQiLGRlc2NyaXB0aW9uOiJJbmxpbmUgZmxvdyBjb250ZW50IGNhbiB3cmFwIG9uIHRoZSBlbmQgc2lkZSBvZiB0aGUgZXhjbHVzaW9uIGFyZWEgYnV0IG11c3QgbGVhdmUgdGhlIGFyZWEgdG8gdGhlIHN0YXJ0IGVkZ2Ugb2YgdGhlIGV4Y2x1c2lvbiBhcmVhIGVtcHR5LiJ9LHtuYW1lOiJtYXhpbXVtIixkZXNjcmlwdGlvbjoiSW5saW5lIGZsb3cgY29udGVudCBjYW4gd3JhcCBvbiB0aGUgc2lkZSBvZiB0aGUgZXhjbHVzaW9uIHdpdGggdGhlIGxhcmdlc3QgYXZhaWxhYmxlIHNwYWNlIGZvciB0aGUgZ2l2ZW4gbGluZSwgYW5kIG11c3QgbGVhdmUgdGhlIG90aGVyIHNpZGUgb2YgdGhlIGV4Y2x1c2lvbiBlbXB0eS4ifSx7bmFtZToibWluaW11bSIsZGVzY3JpcHRpb246IklubGluZSBmbG93IGNvbnRlbnQgY2FuIGZsb3cgYXJvdW5kIHRoZSBlZGdlIG9mIHRoZSBleGNsdXNpb24gd2l0aCB0aGUgc21hbGxlc3QgYXZhaWxhYmxlIHNwYWNlIHdpdGhpbiB0aGUgZmxvdyBjb250ZW504oCZcyBjb250YWluaW5nIGJsb2NrLCBhbmQgbXVzdCBsZWF2ZSB0aGUgb3RoZXIgZWRnZSBvZiB0aGUgZXhjbHVzaW9uIGVtcHR5LiJ9LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246IklubGluZSBmbG93IGNvbnRlbnQgY2FuIHdyYXAgb24gdGhlIHN0YXJ0IGVkZ2Ugb2YgdGhlIGV4Y2x1c2lvbiBhcmVhIGJ1dCBtdXN0IGxlYXZlIHRoZSBhcmVhIHRvIGVuZCBlZGdlIG9mIHRoZSBleGNsdXNpb24gYXJlYSBlbXB0eS4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJhdXRvIHwgYm90aCB8IHN0YXJ0IHwgZW5kIHwgbWF4aW11bSB8IGNsZWFyIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiQW4gZWxlbWVudCBiZWNvbWVzIGFuIGV4Y2x1c2lvbiB3aGVuIGl0cyAnd3JhcC1mbG93JyBwcm9wZXJ0eSBoYXMgYSBjb21wdXRlZCB2YWx1ZSBvdGhlciB0aGFuICdhdXRvJy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy13cmFwLW1hcmdpbiIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGxlbmd0aD4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSB2YWx1ZSB0aGF0IGlzIHVzZWQgdG8gb2Zmc2V0IHRoZSBpbm5lciB3cmFwIHNoYXBlIGZyb20gb3RoZXIgc2hhcGVzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLW1zLXdyYXAtdGhyb3VnaCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgZXhjbHVzaW9uIGVsZW1lbnQgZG9lcyBub3QgaW5oZXJpdCBpdHMgcGFyZW50IG5vZGUncyB3cmFwcGluZyBjb250ZXh0LiBJdHMgZGVzY2VuZGFudHMgYXJlIG9ubHkgc3ViamVjdCB0byBleGNsdXNpb24gc2hhcGVzIGRlZmluZWQgaW5zaWRlIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJ3cmFwIixkZXNjcmlwdGlvbjoiVGhlIGV4Y2x1c2lvbiBlbGVtZW50IGluaGVyaXRzIGl0cyBwYXJlbnQgbm9kZSdzIHdyYXBwaW5nIGNvbnRleHQuIEl0cyBkZXNjZW5kYW50IGlubGluZSBjb250ZW50IHdyYXBzIGFyb3VuZCBleGNsdXNpb25zIGRlZmluZWQgb3V0c2lkZSB0aGUgZWxlbWVudC4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJ3cmFwIHwgbm9uZSIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBpZiBhbiBlbGVtZW50IGluaGVyaXRzIGl0cyBwYXJlbnQgd3JhcHBpbmcgY29udGV4dC4gSW4gb3RoZXIgd29yZHMgaWYgaXQgaXMgc3ViamVjdCB0byB0aGUgZXhjbHVzaW9ucyBkZWZpbmVkIG91dHNpZGUgdGhlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtd3JpdGluZy1tb2RlIixicm93c2VyczpbIklFOCJdLHZhbHVlczpbe25hbWU6ImJ0LWxyIn0se25hbWU6ImJ0LXJsIn0se25hbWU6ImxyLWJ0In0se25hbWU6ImxyLXRiIn0se25hbWU6InJsLWJ0In0se25hbWU6InJsLXRiIn0se25hbWU6InRiLWxyIn0se25hbWU6InRiLXJsIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciBib3RoICdkaXJlY3Rpb24nIGFuZCAnYmxvY2stcHJvZ3Jlc3Npb24nLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXpvb20iLGJyb3dzZXJzOlsiSUU4Il0sdmFsdWVzOlt7bmFtZToibm9ybWFsIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyBvciByZXRyaWV2ZXMgdGhlIG1hZ25pZmljYXRpb24gc2NhbGUgb2YgdGhlIG9iamVjdC4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJpbnRlZ2VyIiwibnVtYmVyIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLW1zLXpvb20tYW5pbWF0aW9uIixicm93c2VyczpbIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJkZWZhdWx0In0se25hbWU6Im5vbmUifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSB2YWx1ZSB0aGF0IGluZGljYXRlcyB3aGV0aGVyIGFuIGFuaW1hdGlvbiBpcyB1c2VkIHdoZW4gem9vbWluZy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Im5hdi1kb3duIixicm93c2VyczpbIk85LjUiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHVzZXIgYWdlbnQgYXV0b21hdGljYWxseSBkZXRlcm1pbmVzIHdoaWNoIGVsZW1lbnQgdG8gbmF2aWdhdGUgdGhlIGZvY3VzIHRvIGluIHJlc3BvbnNlIHRvIGRpcmVjdGlvbmFsIG5hdmlnYXRpb25hbCBpbnB1dC4ifSx7bmFtZToiY3VycmVudCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGFnZW50IHNob3VsZCB0YXJnZXQgdGhlIGZyYW1lIHRoYXQgdGhlIGVsZW1lbnQgaXMgaW4uIn0se25hbWU6InJvb3QiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBhZ2VudCBzaG91bGQgdGFyZ2V0IHRoZSBmdWxsIHdpbmRvdy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJQcm92aWRlcyBhbiB3YXkgdG8gY29udHJvbCBkaXJlY3Rpb25hbCBmb2N1cyBuYXZpZ2F0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImlkZW50aWZpZXIiLCJzdHJpbmciXX0se25hbWU6Im5hdi1pbmRleCIsYnJvd3NlcnM6WyJPOS41Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50J3Mgc2VxdWVudGlhbCBuYXZpZ2F0aW9uIG9yZGVyIGlzIGFzc2lnbmVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIHVzZXIgYWdlbnQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiUHJvdmlkZXMgYW4gaW5wdXQtbWV0aG9kLW5ldXRyYWwgd2F5IG9mIHNwZWNpZnlpbmcgdGhlIHNlcXVlbnRpYWwgbmF2aWdhdGlvbiBvcmRlciAoYWxzbyBrbm93biBhcyAndGFiYmluZyBvcmRlcicpLiIscmVzdHJpY3Rpb25zOlsibnVtYmVyIl19LHtuYW1lOiJuYXYtbGVmdCIsYnJvd3NlcnM6WyJPOS41Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB1c2VyIGFnZW50IGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lcyB3aGljaCBlbGVtZW50IHRvIG5hdmlnYXRlIHRoZSBmb2N1cyB0byBpbiByZXNwb25zZSB0byBkaXJlY3Rpb25hbCBuYXZpZ2F0aW9uYWwgaW5wdXQuIn0se25hbWU6ImN1cnJlbnQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBhZ2VudCBzaG91bGQgdGFyZ2V0IHRoZSBmcmFtZSB0aGF0IHRoZSBlbGVtZW50IGlzIGluLiJ9LHtuYW1lOiJyb290IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgYWdlbnQgc2hvdWxkIHRhcmdldCB0aGUgZnVsbCB3aW5kb3cuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiUHJvdmlkZXMgYW4gd2F5IHRvIGNvbnRyb2wgZGlyZWN0aW9uYWwgZm9jdXMgbmF2aWdhdGlvbi4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJpZGVudGlmaWVyIiwic3RyaW5nIl19LHtuYW1lOiJuYXYtcmlnaHQiLGJyb3dzZXJzOlsiTzkuNSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgdXNlciBhZ2VudCBhdXRvbWF0aWNhbGx5IGRldGVybWluZXMgd2hpY2ggZWxlbWVudCB0byBuYXZpZ2F0ZSB0aGUgZm9jdXMgdG8gaW4gcmVzcG9uc2UgdG8gZGlyZWN0aW9uYWwgbmF2aWdhdGlvbmFsIGlucHV0LiJ9LHtuYW1lOiJjdXJyZW50IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgYWdlbnQgc2hvdWxkIHRhcmdldCB0aGUgZnJhbWUgdGhhdCB0aGUgZWxlbWVudCBpcyBpbi4ifSx7bmFtZToicm9vdCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGFnZW50IHNob3VsZCB0YXJnZXQgdGhlIGZ1bGwgd2luZG93LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlByb3ZpZGVzIGFuIHdheSB0byBjb250cm9sIGRpcmVjdGlvbmFsIGZvY3VzIG5hdmlnYXRpb24uIixyZXN0cmljdGlvbnM6WyJlbnVtIiwiaWRlbnRpZmllciIsInN0cmluZyJdfSx7bmFtZToibmF2LXVwIixicm93c2VyczpbIk85LjUiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHVzZXIgYWdlbnQgYXV0b21hdGljYWxseSBkZXRlcm1pbmVzIHdoaWNoIGVsZW1lbnQgdG8gbmF2aWdhdGUgdGhlIGZvY3VzIHRvIGluIHJlc3BvbnNlIHRvIGRpcmVjdGlvbmFsIG5hdmlnYXRpb25hbCBpbnB1dC4ifSx7bmFtZToiY3VycmVudCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGFnZW50IHNob3VsZCB0YXJnZXQgdGhlIGZyYW1lIHRoYXQgdGhlIGVsZW1lbnQgaXMgaW4uIn0se25hbWU6InJvb3QiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBhZ2VudCBzaG91bGQgdGFyZ2V0IHRoZSBmdWxsIHdpbmRvdy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJQcm92aWRlcyBhbiB3YXkgdG8gY29udHJvbCBkaXJlY3Rpb25hbCBmb2N1cyBuYXZpZ2F0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImlkZW50aWZpZXIiLCJzdHJpbmciXX0se25hbWU6Im5lZ2F0aXZlIixicm93c2VyczpbIkZGMzMiXSxzeW50YXg6IjxzeW1ib2w+IDxzeW1ib2w+PyIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJAY291bnRlci1zdHlsZSBkZXNjcmlwdG9yLiBEZWZpbmVzIGhvdyB0byBhbHRlciB0aGUgcmVwcmVzZW50YXRpb24gd2hlbiB0aGUgY291bnRlciB2YWx1ZSBpcyBuZWdhdGl2ZS4iLHJlc3RyaWN0aW9uczpbImltYWdlIiwiaWRlbnRpZmllciIsInN0cmluZyJdfSx7bmFtZToiLW8tYW5pbWF0aW9uIixicm93c2VyczpbIk8xMiJdLHZhbHVlczpbe25hbWU6ImFsdGVybmF0ZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIG5vcm1hbCBkaXJlY3Rpb24sIGFuZCB0aGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgZXZlbiBjb3VudHMgYXJlIHBsYXllZCBpbiBhIHJldmVyc2UgZGlyZWN0aW9uLiJ9LHtuYW1lOiJhbHRlcm5hdGUtcmV2ZXJzZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uLCBhbmQgdGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIGV2ZW4gY291bnRzIGFyZSBwbGF5ZWQgaW4gYSBub3JtYWwgZGlyZWN0aW9uLiJ9LHtuYW1lOiJiYWNrd2FyZHMiLGRlc2NyaXB0aW9uOiJUaGUgYmVnaW5uaW5nIHByb3BlcnR5IHZhbHVlIChhcyBkZWZpbmVkIGluIHRoZSBmaXJzdCBAa2V5ZnJhbWVzIGF0LXJ1bGUpIGlzIGFwcGxpZWQgYmVmb3JlIHRoZSBhbmltYXRpb24gaXMgZGlzcGxheWVkLCBkdXJpbmcgdGhlIHBlcmlvZCBkZWZpbmVkIGJ5ICdhbmltYXRpb24tZGVsYXknLiJ9LHtuYW1lOiJib3RoIixkZXNjcmlwdGlvbjoiQm90aCBmb3J3YXJkcyBhbmQgYmFja3dhcmRzIGZpbGwgbW9kZXMgYXJlIGFwcGxpZWQuIn0se25hbWU6ImZvcndhcmRzIixkZXNjcmlwdGlvbjoiVGhlIGZpbmFsIHByb3BlcnR5IHZhbHVlIChhcyBkZWZpbmVkIGluIHRoZSBsYXN0IEBrZXlmcmFtZXMgYXQtcnVsZSkgaXMgbWFpbnRhaW5lZCBhZnRlciB0aGUgYW5pbWF0aW9uIGNvbXBsZXRlcy4ifSx7bmFtZToiaW5maW5pdGUiLGRlc2NyaXB0aW9uOiJDYXVzZXMgdGhlIGFuaW1hdGlvbiB0byByZXBlYXQgZm9yZXZlci4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGFuaW1hdGlvbiBpcyBwZXJmb3JtZWQifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm9ybWFsIHBsYXliYWNrLiJ9LHtuYW1lOiJyZXZlcnNlIixkZXNjcmlwdGlvbjoiQWxsIGl0ZXJhdGlvbnMgb2YgdGhlIGFuaW1hdGlvbiBhcmUgcGxheWVkIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiBmcm9tIHRoZSB3YXkgdGhleSB3ZXJlIHNwZWNpZmllZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgY29tYmluZXMgc2l4IG9mIHRoZSBhbmltYXRpb24gcHJvcGVydGllcyBpbnRvIGEgc2luZ2xlIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsidGltZSIsImVudW0iLCJ0aW1pbmctZnVuY3Rpb24iLCJpZGVudGlmaWVyIiwibnVtYmVyIl19LHtuYW1lOiItby1hbmltYXRpb24tZGVsYXkiLGJyb3dzZXJzOlsiTzEyIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZW4gdGhlIGFuaW1hdGlvbiB3aWxsIHN0YXJ0LiIscmVzdHJpY3Rpb25zOlsidGltZSJdfSx7bmFtZToiLW8tYW5pbWF0aW9uLWRpcmVjdGlvbiIsYnJvd3NlcnM6WyJPMTIiXSx2YWx1ZXM6W3tuYW1lOiJhbHRlcm5hdGUiLGRlc2NyaXB0aW9uOiJUaGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgb2RkIGNvdW50cyBhcmUgcGxheWVkIGluIHRoZSBub3JtYWwgZGlyZWN0aW9uLCBhbmQgdGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIGV2ZW4gY291bnRzIGFyZSBwbGF5ZWQgaW4gYSByZXZlcnNlIGRpcmVjdGlvbi4ifSx7bmFtZToiYWx0ZXJuYXRlLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJUaGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgb2RkIGNvdW50cyBhcmUgcGxheWVkIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiwgYW5kIHRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBldmVuIGNvdW50cyBhcmUgcGxheWVkIGluIGEgbm9ybWFsIGRpcmVjdGlvbi4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm9ybWFsIHBsYXliYWNrLiJ9LHtuYW1lOiJyZXZlcnNlIixkZXNjcmlwdGlvbjoiQWxsIGl0ZXJhdGlvbnMgb2YgdGhlIGFuaW1hdGlvbiBhcmUgcGxheWVkIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiBmcm9tIHRoZSB3YXkgdGhleSB3ZXJlIHNwZWNpZmllZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZXRoZXIgb3Igbm90IHRoZSBhbmltYXRpb24gc2hvdWxkIHBsYXkgaW4gcmV2ZXJzZSBvbiBhbHRlcm5hdGUgY3ljbGVzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW8tYW5pbWF0aW9uLWR1cmF0aW9uIixicm93c2VyczpbIk8xMiJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgbGVuZ3RoIG9mIHRpbWUgdGhhdCBhbiBhbmltYXRpb24gdGFrZXMgdG8gY29tcGxldGUgb25lIGN5Y2xlLiIscmVzdHJpY3Rpb25zOlsidGltZSJdfSx7bmFtZToiLW8tYW5pbWF0aW9uLWZpbGwtbW9kZSIsYnJvd3NlcnM6WyJPMTIiXSx2YWx1ZXM6W3tuYW1lOiJiYWNrd2FyZHMiLGRlc2NyaXB0aW9uOiJUaGUgYmVnaW5uaW5nIHByb3BlcnR5IHZhbHVlIChhcyBkZWZpbmVkIGluIHRoZSBmaXJzdCBAa2V5ZnJhbWVzIGF0LXJ1bGUpIGlzIGFwcGxpZWQgYmVmb3JlIHRoZSBhbmltYXRpb24gaXMgZGlzcGxheWVkLCBkdXJpbmcgdGhlIHBlcmlvZCBkZWZpbmVkIGJ5ICdhbmltYXRpb24tZGVsYXknLiJ9LHtuYW1lOiJib3RoIixkZXNjcmlwdGlvbjoiQm90aCBmb3J3YXJkcyBhbmQgYmFja3dhcmRzIGZpbGwgbW9kZXMgYXJlIGFwcGxpZWQuIn0se25hbWU6ImZvcndhcmRzIixkZXNjcmlwdGlvbjoiVGhlIGZpbmFsIHByb3BlcnR5IHZhbHVlIChhcyBkZWZpbmVkIGluIHRoZSBsYXN0IEBrZXlmcmFtZXMgYXQtcnVsZSkgaXMgbWFpbnRhaW5lZCBhZnRlciB0aGUgYW5pbWF0aW9uIGNvbXBsZXRlcy4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZXJlIGlzIG5vIGNoYW5nZSB0byB0aGUgcHJvcGVydHkgdmFsdWUgYmV0d2VlbiB0aGUgdGltZSB0aGUgYW5pbWF0aW9uIGlzIGFwcGxpZWQgYW5kIHRoZSB0aW1lIHRoZSBhbmltYXRpb24gYmVnaW5zIHBsYXlpbmcgb3IgYWZ0ZXIgdGhlIGFuaW1hdGlvbiBjb21wbGV0ZXMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGF0IHZhbHVlcyBhcmUgYXBwbGllZCBieSB0aGUgYW5pbWF0aW9uIG91dHNpZGUgdGhlIHRpbWUgaXQgaXMgZXhlY3V0aW5nLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW8tYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCIsYnJvd3NlcnM6WyJPMTIiXSx2YWx1ZXM6W3tuYW1lOiJpbmZpbml0ZSIsZGVzY3JpcHRpb246IkNhdXNlcyB0aGUgYW5pbWF0aW9uIHRvIHJlcGVhdCBmb3JldmVyLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIG51bWJlciBvZiB0aW1lcyBhbiBhbmltYXRpb24gY3ljbGUgaXMgcGxheWVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBvbmUsIG1lYW5pbmcgdGhlIGFuaW1hdGlvbiB3aWxsIHBsYXkgZnJvbSBiZWdpbm5pbmcgdG8gZW5kIG9uY2UuIixyZXN0cmljdGlvbnM6WyJudW1iZXIiLCJlbnVtIl19LHtuYW1lOiItby1hbmltYXRpb24tbmFtZSIsYnJvd3NlcnM6WyJPMTIiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gYW5pbWF0aW9uIGlzIHBlcmZvcm1lZCJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgYSBsaXN0IG9mIGFuaW1hdGlvbnMgdGhhdCBhcHBseS4gRWFjaCBuYW1lIGlzIHVzZWQgdG8gc2VsZWN0IHRoZSBrZXlmcmFtZSBhdC1ydWxlIHRoYXQgcHJvdmlkZXMgdGhlIHByb3BlcnR5IHZhbHVlcyBmb3IgdGhlIGFuaW1hdGlvbi4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiLCJlbnVtIl19LHtuYW1lOiItby1hbmltYXRpb24tcGxheS1zdGF0ZSIsYnJvd3NlcnM6WyJPMTIiXSx2YWx1ZXM6W3tuYW1lOiJwYXVzZWQiLGRlc2NyaXB0aW9uOiJBIHJ1bm5pbmcgYW5pbWF0aW9uIHdpbGwgYmUgcGF1c2VkLiJ9LHtuYW1lOiJydW5uaW5nIixkZXNjcmlwdGlvbjoiUmVzdW1lIHBsYXliYWNrIG9mIGEgcGF1c2VkIGFuaW1hdGlvbi4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZXRoZXIgdGhlIGFuaW1hdGlvbiBpcyBydW5uaW5nIG9yIHBhdXNlZC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1vLWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24iLGJyb3dzZXJzOlsiTzEyIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgaG93IHRoZSBhbmltYXRpb24gd2lsbCBwcm9ncmVzcyBvdmVyIG9uZSBjeWNsZSBvZiBpdHMgZHVyYXRpb24uIFNlZSB0aGUgJ3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uJy4iLHJlc3RyaWN0aW9uczpbInRpbWluZy1mdW5jdGlvbiJdfSx7bmFtZToib2JqZWN0LWZpdCIsYnJvd3NlcnM6WyJFNzkiLCJGRjM2IiwiUzEwIiwiQzMyIiwiTzE5Il0sdmFsdWVzOlt7bmFtZToiY29udGFpbiIsZGVzY3JpcHRpb246IlRoZSByZXBsYWNlZCBjb250ZW50IGlzIHNpemVkIHRvIG1haW50YWluIGl0cyBhc3BlY3QgcmF0aW8gd2hpbGUgZml0dGluZyB3aXRoaW4gdGhlIGVsZW1lbnTigJlzIGNvbnRlbnQgYm94OiBpdHMgY29uY3JldGUgb2JqZWN0IHNpemUgaXMgcmVzb2x2ZWQgYXMgYSBjb250YWluIGNvbnN0cmFpbnQgYWdhaW5zdCB0aGUgZWxlbWVudCdzIHVzZWQgd2lkdGggYW5kIGhlaWdodC4ifSx7bmFtZToiY292ZXIiLGRlc2NyaXB0aW9uOiJUaGUgcmVwbGFjZWQgY29udGVudCBpcyBzaXplZCB0byBtYWludGFpbiBpdHMgYXNwZWN0IHJhdGlvIHdoaWxlIGZpbGxpbmcgdGhlIGVsZW1lbnQncyBlbnRpcmUgY29udGVudCBib3g6IGl0cyBjb25jcmV0ZSBvYmplY3Qgc2l6ZSBpcyByZXNvbHZlZCBhcyBhIGNvdmVyIGNvbnN0cmFpbnQgYWdhaW5zdCB0aGUgZWxlbWVudOKAmXMgdXNlZCB3aWR0aCBhbmQgaGVpZ2h0LiJ9LHtuYW1lOiJmaWxsIixkZXNjcmlwdGlvbjoiVGhlIHJlcGxhY2VkIGNvbnRlbnQgaXMgc2l6ZWQgdG8gZmlsbCB0aGUgZWxlbWVudOKAmXMgY29udGVudCBib3g6IHRoZSBvYmplY3QncyBjb25jcmV0ZSBvYmplY3Qgc2l6ZSBpcyB0aGUgZWxlbWVudCdzIHVzZWQgd2lkdGggYW5kIGhlaWdodC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSByZXBsYWNlZCBjb250ZW50IGlzIG5vdCByZXNpemVkIHRvIGZpdCBpbnNpZGUgdGhlIGVsZW1lbnQncyBjb250ZW50IGJveCJ9LHtuYW1lOiJzY2FsZS1kb3duIixkZXNjcmlwdGlvbjoiU2l6ZSB0aGUgY29udGVudCBhcyBpZiDigJhub25l4oCZIG9yIOKAmGNvbnRhaW7igJkgd2VyZSBzcGVjaWZpZWQsIHdoaWNoZXZlciB3b3VsZCByZXN1bHQgaW4gYSBzbWFsbGVyIGNvbmNyZXRlIG9iamVjdCBzaXplLiJ9XSxzeW50YXg6ImZpbGwgfCBjb250YWluIHwgY292ZXIgfCBub25lIHwgc2NhbGUtZG93biIscmVsZXZhbmNlOjY4LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vYmplY3QtZml0In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IHRoZSBjb250ZW50cyBvZiBhIHJlcGxhY2VkIGVsZW1lbnQgc2hvdWxkIGJlIHNjYWxlZCByZWxhdGl2ZSB0byB0aGUgYm94IGVzdGFibGlzaGVkIGJ5IGl0cyB1c2VkIGhlaWdodCBhbmQgd2lkdGguIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJvYmplY3QtcG9zaXRpb24iLGJyb3dzZXJzOlsiRTc5IiwiRkYzNiIsIlMxMCIsIkMzMiIsIk8xOSJdLHN5bnRheDoiPHBvc2l0aW9uPiIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vYmplY3QtcG9zaXRpb24ifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGFsaWdubWVudCBvZiB0aGUgcmVwbGFjZWQgZWxlbWVudCBpbnNpZGUgaXRzIGJveC4iLHJlc3RyaWN0aW9uczpbInBvc2l0aW9uIiwibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLW8tYm9yZGVyLWltYWdlIixicm93c2VyczpbIk8xMS42Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IklmICdhdXRvJyBpcyBzcGVjaWZpZWQgdGhlbiB0aGUgYm9yZGVyIGltYWdlIHdpZHRoIGlzIHRoZSBpbnRyaW5zaWMgd2lkdGggb3IgaGVpZ2h0ICh3aGljaGV2ZXIgaXMgYXBwbGljYWJsZSkgb2YgdGhlIGNvcnJlc3BvbmRpbmcgaW1hZ2Ugc2xpY2UuIElmIHRoZSBpbWFnZSBkb2VzIG5vdCBoYXZlIHRoZSByZXF1aXJlZCBpbnRyaW5zaWMgZGltZW5zaW9uIHRoZW4gdGhlIGNvcnJlc3BvbmRpbmcgYm9yZGVyLXdpZHRoIGlzIHVzZWQgaW5zdGVhZC4ifSx7bmFtZToiZmlsbCIsZGVzY3JpcHRpb246IkNhdXNlcyB0aGUgbWlkZGxlIHBhcnQgb2YgdGhlIGJvcmRlci1pbWFnZSB0byBiZSBwcmVzZXJ2ZWQuIn0se25hbWU6Im5vbmUifSx7bmFtZToicmVwZWF0IixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4ifSx7bmFtZToicm91bmQiLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgdGlsZWQgKHJlcGVhdGVkKSB0byBmaWxsIHRoZSBhcmVhLiBJZiBpdCBkb2VzIG5vdCBmaWxsIHRoZSBhcmVhIHdpdGggYSB3aG9sZSBudW1iZXIgb2YgdGlsZXMsIHRoZSBpbWFnZSBpcyByZXNjYWxlZCBzbyB0aGF0IGl0IGRvZXMuIn0se25hbWU6InNwYWNlIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4gSWYgaXQgZG9lcyBub3QgZmlsbCB0aGUgYXJlYSB3aXRoIGEgd2hvbGUgbnVtYmVyIG9mIHRpbGVzLCB0aGUgZXh0cmEgc3BhY2UgaXMgZGlzdHJpYnV0ZWQgYXJvdW5kIHRoZSB0aWxlcy4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyBzdHJldGNoZWQgdG8gZmlsbCB0aGUgYXJlYS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgJ2JvcmRlci1pbWFnZS1zb3VyY2UnLCAnYm9yZGVyLWltYWdlLXNsaWNlJywgJ2JvcmRlci1pbWFnZS13aWR0aCcsICdib3JkZXItaW1hZ2Utb3V0c2V0JyBhbmQgJ2JvcmRlci1pbWFnZS1yZXBlYXQnLiBPbWl0dGVkIHZhbHVlcyBhcmUgc2V0IHRvIHRoZWlyIGluaXRpYWwgdmFsdWVzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSIsIm51bWJlciIsImltYWdlIiwiZW51bSJdfSx7bmFtZToiLW8tb2JqZWN0LWZpdCIsYnJvd3NlcnM6WyJPMTAuNiJdLHZhbHVlczpbe25hbWU6ImNvbnRhaW4iLGRlc2NyaXB0aW9uOiJUaGUgcmVwbGFjZWQgY29udGVudCBpcyBzaXplZCB0byBtYWludGFpbiBpdHMgYXNwZWN0IHJhdGlvIHdoaWxlIGZpdHRpbmcgd2l0aGluIHRoZSBlbGVtZW504oCZcyBjb250ZW50IGJveDogaXRzIGNvbmNyZXRlIG9iamVjdCBzaXplIGlzIHJlc29sdmVkIGFzIGEgY29udGFpbiBjb25zdHJhaW50IGFnYWluc3QgdGhlIGVsZW1lbnQncyB1c2VkIHdpZHRoIGFuZCBoZWlnaHQuIn0se25hbWU6ImNvdmVyIixkZXNjcmlwdGlvbjoiVGhlIHJlcGxhY2VkIGNvbnRlbnQgaXMgc2l6ZWQgdG8gbWFpbnRhaW4gaXRzIGFzcGVjdCByYXRpbyB3aGlsZSBmaWxsaW5nIHRoZSBlbGVtZW50J3MgZW50aXJlIGNvbnRlbnQgYm94OiBpdHMgY29uY3JldGUgb2JqZWN0IHNpemUgaXMgcmVzb2x2ZWQgYXMgYSBjb3ZlciBjb25zdHJhaW50IGFnYWluc3QgdGhlIGVsZW1lbnTigJlzIHVzZWQgd2lkdGggYW5kIGhlaWdodC4ifSx7bmFtZToiZmlsbCIsZGVzY3JpcHRpb246IlRoZSByZXBsYWNlZCBjb250ZW50IGlzIHNpemVkIHRvIGZpbGwgdGhlIGVsZW1lbnTigJlzIGNvbnRlbnQgYm94OiB0aGUgb2JqZWN0J3MgY29uY3JldGUgb2JqZWN0IHNpemUgaXMgdGhlIGVsZW1lbnQncyB1c2VkIHdpZHRoIGFuZCBoZWlnaHQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgcmVwbGFjZWQgY29udGVudCBpcyBub3QgcmVzaXplZCB0byBmaXQgaW5zaWRlIHRoZSBlbGVtZW50J3MgY29udGVudCBib3gifSx7bmFtZToic2NhbGUtZG93biIsZGVzY3JpcHRpb246IlNpemUgdGhlIGNvbnRlbnQgYXMgaWYg4oCYbm9uZeKAmSBvciDigJhjb250YWlu4oCZIHdlcmUgc3BlY2lmaWVkLCB3aGljaGV2ZXIgd291bGQgcmVzdWx0IGluIGEgc21hbGxlciBjb25jcmV0ZSBvYmplY3Qgc2l6ZS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IHRoZSBjb250ZW50cyBvZiBhIHJlcGxhY2VkIGVsZW1lbnQgc2hvdWxkIGJlIHNjYWxlZCByZWxhdGl2ZSB0byB0aGUgYm94IGVzdGFibGlzaGVkIGJ5IGl0cyB1c2VkIGhlaWdodCBhbmQgd2lkdGguIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItby1vYmplY3QtcG9zaXRpb24iLGJyb3dzZXJzOlsiTzEwLjYiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGFsaWdubWVudCBvZiB0aGUgcmVwbGFjZWQgZWxlbWVudCBpbnNpZGUgaXRzIGJveC4iLHJlc3RyaWN0aW9uczpbInBvc2l0aW9uIiwibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToib3BhY2l0eSIsc3ludGF4OiI8YWxwaGEtdmFsdWU+IixyZWxldmFuY2U6OTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL29wYWNpdHkifV0sZGVzY3JpcHRpb246Ik9wYWNpdHkgb2YgYW4gZWxlbWVudCdzIHRleHQsIHdoZXJlIDEgaXMgb3BhcXVlIGFuZCAwIGlzIGVudGlyZWx5IHRyYW5zcGFyZW50LiIscmVzdHJpY3Rpb25zOlsibnVtYmVyKDAtMSkiXX0se25hbWU6Im9yZGVyIixzeW50YXg6IjxpbnRlZ2VyPiIscmVsZXZhbmNlOjYzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vcmRlciJ9XSxkZXNjcmlwdGlvbjoiQ29udHJvbHMgdGhlIG9yZGVyIGluIHdoaWNoIGNoaWxkcmVuIG9mIGEgZmxleCBjb250YWluZXIgYXBwZWFyIHdpdGhpbiB0aGUgZmxleCBjb250YWluZXIsIGJ5IGFzc2lnbmluZyB0aGVtIHRvIG9yZGluYWwgZ3JvdXBzLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToib3JwaGFucyIsYnJvd3NlcnM6WyJFMTIiLCJTMS4zIiwiQzI1IiwiSUU4IiwiTzkuMiJdLHN5bnRheDoiPGludGVnZXI+IixyZWxldmFuY2U6NTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL29ycGhhbnMifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbWluaW11bSBudW1iZXIgb2YgbGluZSBib3hlcyBpbiBhIGJsb2NrIGNvbnRhaW5lciB0aGF0IG11c3QgYmUgbGVmdCBpbiBhIGZyYWdtZW50IGJlZm9yZSBhIGZyYWdtZW50YXRpb24gYnJlYWsuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiItby10YWJsZS1iYXNlbGluZSIsYnJvd3NlcnM6WyJPOS42Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHdoaWNoIHJvdyBvZiBhIGlubGluZS10YWJsZSBzaG91bGQgYmUgdXNlZCBhcyBiYXNlbGluZSBvZiBpbmxpbmUtdGFibGUuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiItby10YWItc2l6ZSIsYnJvd3NlcnM6WyJPMTAuNiJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhpcyBwcm9wZXJ0eSBkZXRlcm1pbmVzIHRoZSB3aWR0aCBvZiB0aGUgdGFiIGNoYXJhY3RlciAoVSswMDA5KSwgaW4gc3BhY2UgY2hhcmFjdGVycyAoVSswMDIwKSwgd2hlbiByZW5kZXJlZC4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiLCJsZW5ndGgiXX0se25hbWU6Ii1vLXRleHQtb3ZlcmZsb3ciLGJyb3dzZXJzOlsiTzEwIl0sdmFsdWVzOlt7bmFtZToiY2xpcCIsZGVzY3JpcHRpb246IkNsaXAgaW5saW5lIGNvbnRlbnQgdGhhdCBvdmVyZmxvd3MuIENoYXJhY3RlcnMgbWF5IGJlIG9ubHkgcGFydGlhbGx5IHJlbmRlcmVkLiJ9LHtuYW1lOiJlbGxpcHNpcyIsZGVzY3JpcHRpb246IlJlbmRlciBhbiBlbGxpcHNpcyBjaGFyYWN0ZXIgKFUrMjAyNikgdG8gcmVwcmVzZW50IGNsaXBwZWQgaW5saW5lIGNvbnRlbnQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGV4dCBjYW4gb3ZlcmZsb3cgZm9yIGV4YW1wbGUgd2hlbiBpdCBpcyBwcmV2ZW50ZWQgZnJvbSB3cmFwcGluZyIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW8tdHJhbnNmb3JtIixicm93c2VyczpbIk8xMC41Il0sdmFsdWVzOlt7bmFtZToibWF0cml4KCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCB0cmFuc2Zvcm1hdGlvbiBpbiB0aGUgZm9ybSBvZiBhIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBvZiBzaXggdmFsdWVzLiBtYXRyaXgoYSxiLGMsZCxlLGYpIGlzIGVxdWl2YWxlbnQgdG8gYXBwbHlpbmcgdGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBbYSBiIGMgZCBlIGZdIn0se25hbWU6Im1hdHJpeDNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAzRCB0cmFuc2Zvcm1hdGlvbiBhcyBhIDR4NCBob21vZ2VuZW91cyBtYXRyaXggb2YgMTYgdmFsdWVzIGluIGNvbHVtbi1tYWpvciBvcmRlci4ifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJyb3RhdGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHJvdGF0aW9uIGJ5IHRoZSBhbmdsZSBzcGVjaWZpZWQgaW4gdGhlIHBhcmFtZXRlciBhYm91dCB0aGUgb3JpZ2luIG9mIHRoZSBlbGVtZW50LCBhcyBkZWZpbmVkIGJ5IHRoZSB0cmFuc2Zvcm0tb3JpZ2luIHByb3BlcnR5LiJ9LHtuYW1lOiJyb3RhdGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIDNEIHJvdGF0aW9uIGJ5IHRoZSBhbmdsZSBzcGVjaWZpZWQgaW4gbGFzdCBwYXJhbWV0ZXIgYWJvdXQgdGhlIFt4LHksel0gZGlyZWN0aW9uIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIGZpcnN0IDMgcGFyYW1ldGVycy4ifSx7bmFtZToicm90YXRlWCgnYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFggYXhpcy4ifSx7bmFtZToicm90YXRlWSgnYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFkgYXhpcy4ifSx7bmFtZToicm90YXRlWignYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFogYXhpcy4ifSx7bmFtZToic2NhbGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHNjYWxlIG9wZXJhdGlvbiBieSB0aGUgW3N4LHN5XSBzY2FsaW5nIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIDIgcGFyYW1ldGVycy4gSWYgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgbm90IHByb3ZpZGVkLCBpdCBpcyB0YWtlcyBhIHZhbHVlIGVxdWFsIHRvIHRoZSBmaXJzdC4ifSx7bmFtZToic2NhbGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgM0Qgc2NhbGUgb3BlcmF0aW9uIGJ5IHRoZSBbc3gsc3ksc3pdIHNjYWxpbmcgdmVjdG9yIGRlc2NyaWJlZCBieSB0aGUgMyBwYXJhbWV0ZXJzLiJ9LHtuYW1lOiJzY2FsZVgoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgW3N4LDFdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeCBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJzY2FsZVkoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgW3N5LDFdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeSBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJzY2FsZVooKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgWzEsMSxzel0gc2NhbGluZyB2ZWN0b3IsIHdoZXJlIHN6IGlzIGdpdmVuIGFzIHRoZSBwYXJhbWV0ZXIuIn0se25hbWU6InNrZXcoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNrZXcgdHJhbnNmb3JtYXRpb24gYWxvbmcgdGhlIFggYW5kIFkgYXhlcy4gVGhlIGZpcnN0IGFuZ2xlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHNrZXcgb24gdGhlIFggYXhpcy4gVGhlIHNlY29uZCBhbmdsZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBza2V3IG9uIHRoZSBZIGF4aXMuIElmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIG5vdCBnaXZlbiB0aGVuIGEgdmFsdWUgb2YgMCBpcyB1c2VkIGZvciB0aGUgWSBhbmdsZSAoaWU6IG5vIHNrZXcgb24gdGhlIFkgYXhpcykuIn0se25hbWU6InNrZXdYKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBza2V3IHRyYW5zZm9ybWF0aW9uIGFsb25nIHRoZSBYIGF4aXMgYnkgdGhlIGdpdmVuIGFuZ2xlLiJ9LHtuYW1lOiJza2V3WSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2tldyB0cmFuc2Zvcm1hdGlvbiBhbG9uZyB0aGUgWSBheGlzIGJ5IHRoZSBnaXZlbiBhbmdsZS4ifSx7bmFtZToidHJhbnNsYXRlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCB0cmFuc2xhdGlvbiBieSB0aGUgdmVjdG9yIFt0eCwgdHldLCB3aGVyZSB0eCBpcyB0aGUgZmlyc3QgdHJhbnNsYXRpb24tdmFsdWUgcGFyYW1ldGVyIGFuZCB0eSBpcyB0aGUgb3B0aW9uYWwgc2Vjb25kIHRyYW5zbGF0aW9uLXZhbHVlIHBhcmFtZXRlci4ifSx7bmFtZToidHJhbnNsYXRlM2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDNEIHRyYW5zbGF0aW9uIGJ5IHRoZSB2ZWN0b3IgW3R4LHR5LHR6XSwgd2l0aCB0eCwgdHkgYW5kIHR6IGJlaW5nIHRoZSBmaXJzdCwgc2Vjb25kIGFuZCB0aGlyZCB0cmFuc2xhdGlvbi12YWx1ZSBwYXJhbWV0ZXJzIHJlc3BlY3RpdmVseS4ifSx7bmFtZToidHJhbnNsYXRlWCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgdHJhbnNsYXRpb24gYnkgdGhlIGdpdmVuIGFtb3VudCBpbiB0aGUgWCBkaXJlY3Rpb24uIn0se25hbWU6InRyYW5zbGF0ZVkoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHRyYW5zbGF0aW9uIGJ5IHRoZSBnaXZlbiBhbW91bnQgaW4gdGhlIFkgZGlyZWN0aW9uLiJ9LHtuYW1lOiJ0cmFuc2xhdGVaKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSB0cmFuc2xhdGlvbiBieSB0aGUgZ2l2ZW4gYW1vdW50IGluIHRoZSBaIGRpcmVjdGlvbi4gTm90ZSB0aGF0IHBlcmNlbnRhZ2UgdmFsdWVzIGFyZSBub3QgYWxsb3dlZCBpbiB0aGUgdHJhbnNsYXRlWiB0cmFuc2xhdGlvbi12YWx1ZSwgYW5kIGlmIHByZXNlbnQgYXJlIGV2YWx1YXRlZCBhcyAwLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkEgdHdvLWRpbWVuc2lvbmFsIHRyYW5zZm9ybWF0aW9uIGlzIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB0aHJvdWdoIHRoZSAndHJhbnNmb3JtJyBwcm9wZXJ0eS4gVGhpcyBwcm9wZXJ0eSBjb250YWlucyBhIGxpc3Qgb2YgdHJhbnNmb3JtIGZ1bmN0aW9ucyBzaW1pbGFyIHRvIHRob3NlIGFsbG93ZWQgYnkgU1ZHLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW8tdHJhbnNmb3JtLW9yaWdpbiIsYnJvd3NlcnM6WyJPMTAuNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRXN0YWJsaXNoZXMgdGhlIG9yaWdpbiBvZiB0cmFuc2Zvcm1hdGlvbiBmb3IgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbInBvc2l0b24iLCJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItby10cmFuc2l0aW9uIixicm93c2VyczpbIk8xMS41Il0sdmFsdWVzOlt7bmFtZToiYWxsIixkZXNjcmlwdGlvbjoiRXZlcnkgcHJvcGVydHkgdGhhdCBpcyBhYmxlIHRvIHVuZGVyZ28gYSB0cmFuc2l0aW9uIHdpbGwgZG8gc28uIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBwcm9wZXJ0eSB3aWxsIHRyYW5zaXRpb24uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGNvbWJpbmVzIGZvdXIgb2YgdGhlIHRyYW5zaXRpb24gcHJvcGVydGllcyBpbnRvIGEgc2luZ2xlIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsidGltZSIsInByb3BlcnR5IiwidGltaW5nLWZ1bmN0aW9uIiwiZW51bSJdfSx7bmFtZToiLW8tdHJhbnNpdGlvbi1kZWxheSIsYnJvd3NlcnM6WyJPMTEuNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGVuIHRoZSB0cmFuc2l0aW9uIHdpbGwgc3RhcnQuIEl0IGFsbG93cyBhIHRyYW5zaXRpb24gdG8gYmVnaW4gZXhlY3V0aW9uIHNvbWUgcGVyaW9kIG9mIHRpbWUgZnJvbSB3aGVuIGl0IGlzIGFwcGxpZWQuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiItby10cmFuc2l0aW9uLWR1cmF0aW9uIixicm93c2VyczpbIk8xMS41Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGxvbmcgdGhlIHRyYW5zaXRpb24gZnJvbSB0aGUgb2xkIHZhbHVlIHRvIHRoZSBuZXcgdmFsdWUgc2hvdWxkIHRha2UuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiItby10cmFuc2l0aW9uLXByb3BlcnR5Iixicm93c2VyczpbIk8xMS41Il0sdmFsdWVzOlt7bmFtZToiYWxsIixkZXNjcmlwdGlvbjoiRXZlcnkgcHJvcGVydHkgdGhhdCBpcyBhYmxlIHRvIHVuZGVyZ28gYSB0cmFuc2l0aW9uIHdpbGwgZG8gc28uIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBwcm9wZXJ0eSB3aWxsIHRyYW5zaXRpb24uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBDU1MgcHJvcGVydHkgdG8gd2hpY2ggdGhlIHRyYW5zaXRpb24gaXMgYXBwbGllZC4iLHJlc3RyaWN0aW9uczpbInByb3BlcnR5Il19LHtuYW1lOiItby10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiIsYnJvd3NlcnM6WyJPMTEuNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIGhvdyB0aGUgaW50ZXJtZWRpYXRlIHZhbHVlcyB1c2VkIGR1cmluZyBhIHRyYW5zaXRpb24gd2lsbCBiZSBjYWxjdWxhdGVkLiIscmVzdHJpY3Rpb25zOlsidGltaW5nLWZ1bmN0aW9uIl19LHtuYW1lOiJvZmZzZXQtYmxvY2stZW5kIixicm93c2VyczpbIkZGNDEiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRm9yIG5vbi1yZXBsYWNlZCBlbGVtZW50cywgdGhlIGVmZmVjdCBvZiB0aGlzIHZhbHVlIGRlcGVuZHMgb24gd2hpY2ggb2YgcmVsYXRlZCBwcm9wZXJ0aWVzIGhhdmUgdGhlIHZhbHVlICdhdXRvJyBhcyB3ZWxsLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvdHRvbScuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnTigJlzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im9mZnNldC1ibG9jay1zdGFydCIsYnJvd3NlcnM6WyJGRjQxIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkZvciBub24tcmVwbGFjZWQgZWxlbWVudHMsIHRoZSBlZmZlY3Qgb2YgdGhpcyB2YWx1ZSBkZXBlbmRzIG9uIHdoaWNoIG9mIHJlbGF0ZWQgcHJvcGVydGllcyBoYXZlIHRoZSB2YWx1ZSAnYXV0bycgYXMgd2VsbC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJMb2dpY2FsICd0b3AnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJvZmZzZXQtaW5saW5lLWVuZCIsYnJvd3NlcnM6WyJGRjQxIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkZvciBub24tcmVwbGFjZWQgZWxlbWVudHMsIHRoZSBlZmZlY3Qgb2YgdGhpcyB2YWx1ZSBkZXBlbmRzIG9uIHdoaWNoIG9mIHJlbGF0ZWQgcHJvcGVydGllcyBoYXZlIHRoZSB2YWx1ZSAnYXV0bycgYXMgd2VsbC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdyaWdodCcuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnTigJlzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im9mZnNldC1pbmxpbmUtc3RhcnQiLGJyb3dzZXJzOlsiRkY0MSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJGb3Igbm9uLXJlcGxhY2VkIGVsZW1lbnRzLCB0aGUgZWZmZWN0IG9mIHRoaXMgdmFsdWUgZGVwZW5kcyBvbiB3aGljaCBvZiByZWxhdGVkIHByb3BlcnRpZXMgaGF2ZSB0aGUgdmFsdWUgJ2F1dG8nIGFzIHdlbGwuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiTG9naWNhbCAnbGVmdCcuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnTigJlzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im91dGxpbmUiLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJQZXJtaXRzIHRoZSB1c2VyIGFnZW50IHRvIHJlbmRlciBhIGN1c3RvbSBvdXRsaW5lIHN0eWxlLCB0eXBpY2FsbHkgdGhlIGRlZmF1bHQgcGxhdGZvcm0gc3R5bGUuIn0se25hbWU6ImludmVydCIsZGVzY3JpcHRpb246IlBlcmZvcm1zIGEgY29sb3IgaW52ZXJzaW9uIG9uIHRoZSBwaXhlbHMgb24gdGhlIHNjcmVlbi4ifV0sc3ludGF4OiJbIDwnb3V0bGluZS1jb2xvcic+IHx8IDwnb3V0bGluZS1zdHlsZSc+IHx8IDwnb3V0bGluZS13aWR0aCc+IF0iLHJlbGV2YW5jZTo4OCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb3V0bGluZSJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciAnb3V0bGluZS1zdHlsZScsICdvdXRsaW5lLXdpZHRoJywgYW5kICdvdXRsaW5lLWNvbG9yJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiLCJsaW5lLXN0eWxlIiwiY29sb3IiLCJlbnVtIl19LHtuYW1lOiJvdXRsaW5lLWNvbG9yIix2YWx1ZXM6W3tuYW1lOiJpbnZlcnQiLGRlc2NyaXB0aW9uOiJQZXJmb3JtcyBhIGNvbG9yIGludmVyc2lvbiBvbiB0aGUgcGl4ZWxzIG9uIHRoZSBzY3JlZW4uIn1dLHN5bnRheDoiPGNvbG9yPiB8IGludmVydCIscmVsZXZhbmNlOjU1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdXRsaW5lLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJUaGUgY29sb3Igb2YgdGhlIG91dGxpbmUuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwiY29sb3IiXX0se25hbWU6Im91dGxpbmUtb2Zmc2V0Iixicm93c2VyczpbIkUxNSIsIkZGMS41IiwiUzEuMiIsIkMxIiwiTzkuNSJdLHN5bnRheDoiPGxlbmd0aD4iLHJlbGV2YW5jZTo2OSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb3V0bGluZS1vZmZzZXQifV0sZGVzY3JpcHRpb246Ik9mZnNldCB0aGUgb3V0bGluZSBhbmQgZHJhdyBpdCBiZXlvbmQgdGhlIGJvcmRlciBlZGdlLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiJvdXRsaW5lLXN0eWxlIix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiUGVybWl0cyB0aGUgdXNlciBhZ2VudCB0byByZW5kZXIgYSBjdXN0b20gb3V0bGluZSBzdHlsZSwgdHlwaWNhbGx5IHRoZSBkZWZhdWx0IHBsYXRmb3JtIHN0eWxlLiJ9XSxzeW50YXg6ImF1dG8gfCA8J2JvcmRlci1zdHlsZSc+IixyZWxldmFuY2U6NjEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL291dGxpbmUtc3R5bGUifV0sZGVzY3JpcHRpb246IlN0eWxlIG9mIHRoZSBvdXRsaW5lLiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSIsImVudW0iXX0se25hbWU6Im91dGxpbmUtd2lkdGgiLHN5bnRheDoiPGxpbmUtd2lkdGg+IixyZWxldmFuY2U6NjEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL291dGxpbmUtd2lkdGgifV0sZGVzY3JpcHRpb246IldpZHRoIG9mIHRoZSBvdXRsaW5lLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCJdfSx7bmFtZToib3ZlcmZsb3ciLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgYmVoYXZpb3Igb2YgdGhlICdhdXRvJyB2YWx1ZSBpcyBVQS1kZXBlbmRlbnQsIGJ1dCBzaG91bGQgY2F1c2UgYSBzY3JvbGxpbmcgbWVjaGFuaXNtIHRvIGJlIHByb3ZpZGVkIGZvciBvdmVyZmxvd2luZyBib3hlcy4ifSx7bmFtZToiaGlkZGVuIixkZXNjcmlwdGlvbjoiQ29udGVudCBpcyBjbGlwcGVkIGFuZCBubyBzY3JvbGxpbmcgbWVjaGFuaXNtIHNob3VsZCBiZSBwcm92aWRlZCB0byB2aWV3IHRoZSBjb250ZW50IG91dHNpZGUgdGhlIGNsaXBwaW5nIHJlZ2lvbi4ifSx7bmFtZToiLW1vei1oaWRkZW4tdW5zY3JvbGxhYmxlIixkZXNjcmlwdGlvbjoiU2FtZSBhcyB0aGUgc3RhbmRhcmRpemVkICdjbGlwJywgZXhjZXB0IGRvZXNu4oCZdCBlc3RhYmxpc2ggYSBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQuIn0se25hbWU6InNjcm9sbCIsZGVzY3JpcHRpb246IkNvbnRlbnQgaXMgY2xpcHBlZCBhbmQgaWYgdGhlIHVzZXIgYWdlbnQgdXNlcyBhIHNjcm9sbGluZyBtZWNoYW5pc20gdGhhdCBpcyB2aXNpYmxlIG9uIHRoZSBzY3JlZW4gKHN1Y2ggYXMgYSBzY3JvbGwgYmFyIG9yIGEgcGFubmVyKSwgdGhhdCBtZWNoYW5pc20gc2hvdWxkIGJlIGRpc3BsYXllZCBmb3IgYSBib3ggd2hldGhlciBvciBub3QgYW55IG9mIGl0cyBjb250ZW50IGlzIGNsaXBwZWQuIn0se25hbWU6InZpc2libGUiLGRlc2NyaXB0aW9uOiJDb250ZW50IGlzIG5vdCBjbGlwcGVkLCBpLmUuLCBpdCBtYXkgYmUgcmVuZGVyZWQgb3V0c2lkZSB0aGUgY29udGVudCBib3guIn1dLHN5bnRheDoiWyB2aXNpYmxlIHwgaGlkZGVuIHwgY2xpcCB8IHNjcm9sbCB8IGF1dG8gXXsxLDJ9IixyZWxldmFuY2U6OTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL292ZXJmbG93In1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgZm9yIHNldHRpbmcgJ292ZXJmbG93LXgnIGFuZCAnb3ZlcmZsb3cteScuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJvdmVyZmxvdy13cmFwIix2YWx1ZXM6W3tuYW1lOiJicmVhay13b3JkIixkZXNjcmlwdGlvbjoiQW4gb3RoZXJ3aXNlIHVuYnJlYWthYmxlIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgbWF5IGJlIGJyb2tlbiBhdCBhbiBhcmJpdHJhcnkgcG9pbnQgaWYgdGhlcmUgYXJlIG5vIG90aGVyd2lzZS1hY2NlcHRhYmxlIGJyZWFrIHBvaW50cyBpbiB0aGUgbGluZS4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTGluZXMgbWF5IGJyZWFrIG9ubHkgYXQgYWxsb3dlZCBicmVhayBwb2ludHMuIn1dLHN5bnRheDoibm9ybWFsIHwgYnJlYWstd29yZCB8IGFueXdoZXJlIixyZWxldmFuY2U6NjYscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL292ZXJmbG93LXdyYXAifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB3aGV0aGVyIHRoZSBVQSBtYXkgYnJlYWsgd2l0aGluIGEgd29yZCB0byBwcmV2ZW50IG92ZXJmbG93IHdoZW4gYW4gb3RoZXJ3aXNlLXVuYnJlYWthYmxlIHN0cmluZyBpcyB0b28gbG9uZyB0byBmaXQgd2l0aGluIHRoZSBsaW5lIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Im92ZXJmbG93LXgiLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgYmVoYXZpb3Igb2YgdGhlICdhdXRvJyB2YWx1ZSBpcyBVQS1kZXBlbmRlbnQsIGJ1dCBzaG91bGQgY2F1c2UgYSBzY3JvbGxpbmcgbWVjaGFuaXNtIHRvIGJlIHByb3ZpZGVkIGZvciBvdmVyZmxvd2luZyBib3hlcy4ifSx7bmFtZToiaGlkZGVuIixkZXNjcmlwdGlvbjoiQ29udGVudCBpcyBjbGlwcGVkIGFuZCBubyBzY3JvbGxpbmcgbWVjaGFuaXNtIHNob3VsZCBiZSBwcm92aWRlZCB0byB2aWV3IHRoZSBjb250ZW50IG91dHNpZGUgdGhlIGNsaXBwaW5nIHJlZ2lvbi4ifSx7bmFtZToic2Nyb2xsIixkZXNjcmlwdGlvbjoiQ29udGVudCBpcyBjbGlwcGVkIGFuZCBpZiB0aGUgdXNlciBhZ2VudCB1c2VzIGEgc2Nyb2xsaW5nIG1lY2hhbmlzbSB0aGF0IGlzIHZpc2libGUgb24gdGhlIHNjcmVlbiAoc3VjaCBhcyBhIHNjcm9sbCBiYXIgb3IgYSBwYW5uZXIpLCB0aGF0IG1lY2hhbmlzbSBzaG91bGQgYmUgZGlzcGxheWVkIGZvciBhIGJveCB3aGV0aGVyIG9yIG5vdCBhbnkgb2YgaXRzIGNvbnRlbnQgaXMgY2xpcHBlZC4ifSx7bmFtZToidmlzaWJsZSIsZGVzY3JpcHRpb246IkNvbnRlbnQgaXMgbm90IGNsaXBwZWQsIGkuZS4sIGl0IG1heSBiZSByZW5kZXJlZCBvdXRzaWRlIHRoZSBjb250ZW50IGJveC4ifV0sc3ludGF4OiJ2aXNpYmxlIHwgaGlkZGVuIHwgY2xpcCB8IHNjcm9sbCB8IGF1dG8iLHJlbGV2YW5jZTo4MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb3ZlcmZsb3cteCJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBoYW5kbGluZyBvZiBvdmVyZmxvdyBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJvdmVyZmxvdy15Iix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIGJlaGF2aW9yIG9mIHRoZSAnYXV0bycgdmFsdWUgaXMgVUEtZGVwZW5kZW50LCBidXQgc2hvdWxkIGNhdXNlIGEgc2Nyb2xsaW5nIG1lY2hhbmlzbSB0byBiZSBwcm92aWRlZCBmb3Igb3ZlcmZsb3dpbmcgYm94ZXMuIn0se25hbWU6ImhpZGRlbiIsZGVzY3JpcHRpb246IkNvbnRlbnQgaXMgY2xpcHBlZCBhbmQgbm8gc2Nyb2xsaW5nIG1lY2hhbmlzbSBzaG91bGQgYmUgcHJvdmlkZWQgdG8gdmlldyB0aGUgY29udGVudCBvdXRzaWRlIHRoZSBjbGlwcGluZyByZWdpb24uIn0se25hbWU6InNjcm9sbCIsZGVzY3JpcHRpb246IkNvbnRlbnQgaXMgY2xpcHBlZCBhbmQgaWYgdGhlIHVzZXIgYWdlbnQgdXNlcyBhIHNjcm9sbGluZyBtZWNoYW5pc20gdGhhdCBpcyB2aXNpYmxlIG9uIHRoZSBzY3JlZW4gKHN1Y2ggYXMgYSBzY3JvbGwgYmFyIG9yIGEgcGFubmVyKSwgdGhhdCBtZWNoYW5pc20gc2hvdWxkIGJlIGRpc3BsYXllZCBmb3IgYSBib3ggd2hldGhlciBvciBub3QgYW55IG9mIGl0cyBjb250ZW50IGlzIGNsaXBwZWQuIn0se25hbWU6InZpc2libGUiLGRlc2NyaXB0aW9uOiJDb250ZW50IGlzIG5vdCBjbGlwcGVkLCBpLmUuLCBpdCBtYXkgYmUgcmVuZGVyZWQgb3V0c2lkZSB0aGUgY29udGVudCBib3guIn1dLHN5bnRheDoidmlzaWJsZSB8IGhpZGRlbiB8IGNsaXAgfCBzY3JvbGwgfCBhdXRvIixyZWxldmFuY2U6ODMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL292ZXJmbG93LXkifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgaGFuZGxpbmcgb2Ygb3ZlcmZsb3cgaW4gdGhlIHZlcnRpY2FsIGRpcmVjdGlvbi4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InBhZCIsYnJvd3NlcnM6WyJGRjMzIl0sc3ludGF4OiI8aW50ZWdlcj4gJiYgPHN5bWJvbD4iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQGNvdW50ZXItc3R5bGUgZGVzY3JpcHRvci4gU3BlY2lmaWVzIGEg4oCcZml4ZWQtd2lkdGjigJ0gY291bnRlciBzdHlsZSwgd2hlcmUgcmVwcmVzZW50YXRpb25zIHNob3J0ZXIgdGhhbiB0aGUgcGFkIHZhbHVlIGFyZSBwYWRkZWQgd2l0aCBhIHBhcnRpY3VsYXIgPHN5bWJvbD4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiLCJpbWFnZSIsInN0cmluZyIsImlkZW50aWZpZXIiXX0se25hbWU6InBhZGRpbmciLHZhbHVlczpbXSxzeW50YXg6IlsgPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gXXsxLDR9IixyZWxldmFuY2U6OTYscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BhZGRpbmcifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSB0byBzZXQgdmFsdWVzIGZvciB0aGUgdGhpY2tuZXNzIG9mIHRoZSBwYWRkaW5nIGFyZWEuIElmIGxlZnQgaXMgb21pdHRlZCwgaXQgaXMgdGhlIHNhbWUgYXMgcmlnaHQuIElmIGJvdHRvbSBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcCwgaWYgcmlnaHQgaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AuIFRoZSB2YWx1ZSBtYXkgbm90IGJlIG5lZ2F0aXZlLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToicGFkZGluZy1ib3R0b20iLHN5bnRheDoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4iLHJlbGV2YW5jZTo4OSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGFkZGluZy1ib3R0b20ifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSB0byBzZXQgdmFsdWVzIGZvciB0aGUgdGhpY2tuZXNzIG9mIHRoZSBwYWRkaW5nIGFyZWEuIElmIGxlZnQgaXMgb21pdHRlZCwgaXQgaXMgdGhlIHNhbWUgYXMgcmlnaHQuIElmIGJvdHRvbSBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcCwgaWYgcmlnaHQgaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AuIFRoZSB2YWx1ZSBtYXkgbm90IGJlIG5lZ2F0aXZlLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToicGFkZGluZy1ibG9jay1lbmQiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J3BhZGRpbmctbGVmdCc+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BhZGRpbmctYmxvY2stZW5kIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdwYWRkaW5nLWJvdHRvbScuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnTigJlzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6InBhZGRpbmctYmxvY2stc3RhcnQiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J3BhZGRpbmctbGVmdCc+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BhZGRpbmctYmxvY2stc3RhcnQifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ3BhZGRpbmctdG9wJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudOKAmXMgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToicGFkZGluZy1pbmxpbmUtZW5kIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdwYWRkaW5nLWxlZnQnPiIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWRkaW5nLWlubGluZS1lbmQifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ3BhZGRpbmctcmlnaHQnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJwYWRkaW5nLWlubGluZS1zdGFydCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwncGFkZGluZy1sZWZ0Jz4iLHJlbGV2YW5jZTo1MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGFkZGluZy1pbmxpbmUtc3RhcnQifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ3BhZGRpbmctbGVmdCcuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnTigJlzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6InBhZGRpbmctbGVmdCIsc3ludGF4OiI8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiIscmVsZXZhbmNlOjkxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWRkaW5nLWxlZnQifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSB0byBzZXQgdmFsdWVzIGZvciB0aGUgdGhpY2tuZXNzIG9mIHRoZSBwYWRkaW5nIGFyZWEuIElmIGxlZnQgaXMgb21pdHRlZCwgaXQgaXMgdGhlIHNhbWUgYXMgcmlnaHQuIElmIGJvdHRvbSBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcCwgaWYgcmlnaHQgaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AuIFRoZSB2YWx1ZSBtYXkgbm90IGJlIG5lZ2F0aXZlLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToicGFkZGluZy1yaWdodCIsc3ludGF4OiI8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiIscmVsZXZhbmNlOjkwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWRkaW5nLXJpZ2h0In1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgdG8gc2V0IHZhbHVlcyBmb3IgdGhlIHRoaWNrbmVzcyBvZiB0aGUgcGFkZGluZyBhcmVhLiBJZiBsZWZ0IGlzIG9taXR0ZWQsIGl0IGlzIHRoZSBzYW1lIGFzIHJpZ2h0LiBJZiBib3R0b20gaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AsIGlmIHJpZ2h0IGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLiBUaGUgdmFsdWUgbWF5IG5vdCBiZSBuZWdhdGl2ZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6InBhZGRpbmctdG9wIixzeW50YXg6IjxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IixyZWxldmFuY2U6OTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BhZGRpbmctdG9wIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgdG8gc2V0IHZhbHVlcyBmb3IgdGhlIHRoaWNrbmVzcyBvZiB0aGUgcGFkZGluZyBhcmVhLiBJZiBsZWZ0IGlzIG9taXR0ZWQsIGl0IGlzIHRoZSBzYW1lIGFzIHJpZ2h0LiBJZiBib3R0b20gaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AsIGlmIHJpZ2h0IGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLiBUaGUgdmFsdWUgbWF5IG5vdCBiZSBuZWdhdGl2ZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6InBhZ2UtYnJlYWstYWZ0ZXIiLHZhbHVlczpbe25hbWU6ImFsd2F5cyIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIHBhZ2UgYnJlYWsgYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJOZWl0aGVyIGZvcmNlIG5vciBmb3JiaWQgYSBwYWdlIGJyZWFrIGFmdGVyIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBwYWdlIGJyZWFrIGFmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJsZWZ0IixkZXNjcmlwdGlvbjoiRm9yY2Ugb25lIG9yIHR3byBwYWdlIGJyZWFrcyBhZnRlciB0aGUgZ2VuZXJhdGVkIGJveCBzbyB0aGF0IHRoZSBuZXh0IHBhZ2UgaXMgZm9ybWF0dGVkIGFzIGEgbGVmdCBwYWdlLiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3ggc28gdGhhdCB0aGUgbmV4dCBwYWdlIGlzIGZvcm1hdHRlZCBhcyBhIHJpZ2h0IHBhZ2UuIn1dLHN5bnRheDoiYXV0byB8IGFsd2F5cyB8IGF2b2lkIHwgbGVmdCB8IHJpZ2h0IHwgcmVjdG8gfCB2ZXJzbyIscmVsZXZhbmNlOjUyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWdlLWJyZWFrLWFmdGVyIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHJ1bGVzIGZvciBwYWdlIGJyZWFrcyBhZnRlciBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToicGFnZS1icmVhay1iZWZvcmUiLHZhbHVlczpbe25hbWU6ImFsd2F5cyIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIHBhZ2UgYnJlYWsgYmVmb3JlIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiTmVpdGhlciBmb3JjZSBub3IgZm9yYmlkIGEgcGFnZSBicmVhayBiZWZvcmUgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBwYWdlIGJyZWFrIGJlZm9yZSB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYmVmb3JlIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSBsZWZ0IHBhZ2UuIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiRm9yY2Ugb25lIG9yIHR3byBwYWdlIGJyZWFrcyBiZWZvcmUgdGhlIGdlbmVyYXRlZCBib3ggc28gdGhhdCB0aGUgbmV4dCBwYWdlIGlzIGZvcm1hdHRlZCBhcyBhIHJpZ2h0IHBhZ2UuIn1dLHN5bnRheDoiYXV0byB8IGFsd2F5cyB8IGF2b2lkIHwgbGVmdCB8IHJpZ2h0IHwgcmVjdG8gfCB2ZXJzbyIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWdlLWJyZWFrLWJlZm9yZSJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBydWxlcyBmb3IgcGFnZSBicmVha3MgYmVmb3JlIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJwYWdlLWJyZWFrLWluc2lkZSIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246Ik5laXRoZXIgZm9yY2Ugbm9yIGZvcmJpZCBhIHBhZ2UgYnJlYWsgaW5zaWRlIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZCIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZSBicmVhayBpbnNpZGUgdGhlIGdlbmVyYXRlZCBib3guIn1dLHN5bnRheDoiYXV0byB8IGF2b2lkIixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BhZ2UtYnJlYWstaW5zaWRlIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHJ1bGVzIGZvciBwYWdlIGJyZWFrcyBpbnNpZGUgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InBhaW50LW9yZGVyIixicm93c2VyczpbIkUxNyIsIkZGNjAiLCJTOCIsIkMzNSIsIk8yMiJdLHZhbHVlczpbe25hbWU6ImZpbGwifSx7bmFtZToibWFya2VycyJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBpcyBwYWludGVkIHdpdGggdGhlIHN0YW5kYXJkIG9yZGVyIG9mIHBhaW50aW5nIG9wZXJhdGlvbnM6IHRoZSAnZmlsbCcgaXMgcGFpbnRlZCBmaXJzdCwgdGhlbiBpdHMgJ3N0cm9rZScgYW5kIGZpbmFsbHkgaXRzIG1hcmtlcnMuIn0se25hbWU6InN0cm9rZSJ9XSxzeW50YXg6Im5vcm1hbCB8IFsgZmlsbCB8fCBzdHJva2UgfHwgbWFya2VycyBdIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BhaW50LW9yZGVyIn1dLGRlc2NyaXB0aW9uOiJDb250cm9scyB0aGUgb3JkZXIgdGhhdCB0aGUgdGhyZWUgcGFpbnQgb3BlcmF0aW9ucyB0aGF0IHNoYXBlcyBhbmQgdGV4dCBhcmUgcmVuZGVyZWQgd2l0aDogdGhlaXIgZmlsbCwgdGhlaXIgc3Ryb2tlIGFuZCBhbnkgbWFya2VycyB0aGV5IG1pZ2h0IGhhdmUuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJwZXJzcGVjdGl2ZSIsdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHBlcnNwZWN0aXZlIHRyYW5zZm9ybSBpcyBhcHBsaWVkLiJ9XSxzeW50YXg6Im5vbmUgfCA8bGVuZ3RoPiIscmVsZXZhbmNlOjU1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wZXJzcGVjdGl2ZSJ9XSxkZXNjcmlwdGlvbjoiQXBwbGllcyB0aGUgc2FtZSB0cmFuc2Zvcm0gYXMgdGhlIHBlcnNwZWN0aXZlKDxudW1iZXI+KSB0cmFuc2Zvcm0gZnVuY3Rpb24sIGV4Y2VwdCB0aGF0IGl0IGFwcGxpZXMgb25seSB0byB0aGUgcG9zaXRpb25lZCBvciB0cmFuc2Zvcm1lZCBjaGlsZHJlbiBvZiB0aGUgZWxlbWVudCwgbm90IHRvIHRoZSB0cmFuc2Zvcm0gb24gdGhlIGVsZW1lbnQgaXRzZWxmLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwiZW51bSJdfSx7bmFtZToicGVyc3BlY3RpdmUtb3JpZ2luIixzeW50YXg6Ijxwb3NpdGlvbj4iLHJlbGV2YW5jZTo1MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGVyc3BlY3RpdmUtb3JpZ2luIn1dLGRlc2NyaXB0aW9uOiJFc3RhYmxpc2hlcyB0aGUgb3JpZ2luIGZvciB0aGUgcGVyc3BlY3RpdmUgcHJvcGVydHkuIEl0IGVmZmVjdGl2ZWx5IHNldHMgdGhlIFggYW5kIFkgcG9zaXRpb24gYXQgd2hpY2ggdGhlIHZpZXdlciBhcHBlYXJzIHRvIGJlIGxvb2tpbmcgYXQgdGhlIGNoaWxkcmVuIG9mIHRoZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsicG9zaXRpb24iLCJwZXJjZW50YWdlIiwibGVuZ3RoIl19LHtuYW1lOiJwb2ludGVyLWV2ZW50cyIsdmFsdWVzOlt7bmFtZToiYWxsIixkZXNjcmlwdGlvbjoiVGhlIGdpdmVuIGVsZW1lbnQgY2FuIGJlIHRoZSB0YXJnZXQgZWxlbWVudCBmb3IgcG9pbnRlciBldmVudHMgd2hlbmV2ZXIgdGhlIHBvaW50ZXIgaXMgb3ZlciBlaXRoZXIgdGhlIGludGVyaW9yIG9yIHRoZSBwZXJpbWV0ZXIgb2YgdGhlIGVsZW1lbnQuIn0se25hbWU6ImZpbGwiLGRlc2NyaXB0aW9uOiJUaGUgZ2l2ZW4gZWxlbWVudCBjYW4gYmUgdGhlIHRhcmdldCBlbGVtZW50IGZvciBwb2ludGVyIGV2ZW50cyB3aGVuZXZlciB0aGUgcG9pbnRlciBpcyBvdmVyIHRoZSBpbnRlcmlvciBvZiB0aGUgZWxlbWVudC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBnaXZlbiBlbGVtZW50IGRvZXMgbm90IHJlY2VpdmUgcG9pbnRlciBldmVudHMuIn0se25hbWU6InBhaW50ZWQiLGRlc2NyaXB0aW9uOidUaGUgZ2l2ZW4gZWxlbWVudCBjYW4gYmUgdGhlIHRhcmdldCBlbGVtZW50IGZvciBwb2ludGVyIGV2ZW50cyB3aGVuIHRoZSBwb2ludGVyIGlzIG92ZXIgYSAicGFpbnRlZCIgYXJlYS4gJ30se25hbWU6InN0cm9rZSIsZGVzY3JpcHRpb246IlRoZSBnaXZlbiBlbGVtZW50IGNhbiBiZSB0aGUgdGFyZ2V0IGVsZW1lbnQgZm9yIHBvaW50ZXIgZXZlbnRzIHdoZW5ldmVyIHRoZSBwb2ludGVyIGlzIG92ZXIgdGhlIHBlcmltZXRlciBvZiB0aGUgZWxlbWVudC4ifSx7bmFtZToidmlzaWJsZSIsZGVzY3JpcHRpb246IlRoZSBnaXZlbiBlbGVtZW50IGNhbiBiZSB0aGUgdGFyZ2V0IGVsZW1lbnQgZm9yIHBvaW50ZXIgZXZlbnRzIHdoZW4gdGhlIOKAmHZpc2liaWxpdHnigJkgcHJvcGVydHkgaXMgc2V0IHRvIHZpc2libGUgYW5kIHRoZSBwb2ludGVyIGlzIG92ZXIgZWl0aGVyIHRoZSBpbnRlcmlvciBvciB0aGUgcGVyaW1ldGVyIG9mIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJ2aXNpYmxlRmlsbCIsZGVzY3JpcHRpb246IlRoZSBnaXZlbiBlbGVtZW50IGNhbiBiZSB0aGUgdGFyZ2V0IGVsZW1lbnQgZm9yIHBvaW50ZXIgZXZlbnRzIHdoZW4gdGhlIOKAmHZpc2liaWxpdHnigJkgcHJvcGVydHkgaXMgc2V0IHRvIHZpc2libGUgYW5kIHdoZW4gdGhlIHBvaW50ZXIgaXMgb3ZlciB0aGUgaW50ZXJpb3Igb2YgdGhlIGVsZW1lbnQuIn0se25hbWU6InZpc2libGVQYWludGVkIixkZXNjcmlwdGlvbjoiVGhlIGdpdmVuIGVsZW1lbnQgY2FuIGJlIHRoZSB0YXJnZXQgZWxlbWVudCBmb3IgcG9pbnRlciBldmVudHMgd2hlbiB0aGUg4oCYdmlzaWJpbGl0eeKAmSBwcm9wZXJ0eSBpcyBzZXQgdG8gdmlzaWJsZSBhbmQgd2hlbiB0aGUgcG9pbnRlciBpcyBvdmVyIGEg4oCYcGFpbnRlZOKAmSBhcmVhLiJ9LHtuYW1lOiJ2aXNpYmxlU3Ryb2tlIixkZXNjcmlwdGlvbjoiVGhlIGdpdmVuIGVsZW1lbnQgY2FuIGJlIHRoZSB0YXJnZXQgZWxlbWVudCBmb3IgcG9pbnRlciBldmVudHMgd2hlbiB0aGUg4oCYdmlzaWJpbGl0eeKAmSBwcm9wZXJ0eSBpcyBzZXQgdG8gdmlzaWJsZSBhbmQgd2hlbiB0aGUgcG9pbnRlciBpcyBvdmVyIHRoZSBwZXJpbWV0ZXIgb2YgdGhlIGVsZW1lbnQuIn1dLHN5bnRheDoiYXV0byB8IG5vbmUgfCB2aXNpYmxlUGFpbnRlZCB8IHZpc2libGVGaWxsIHwgdmlzaWJsZVN0cm9rZSB8IHZpc2libGUgfCBwYWludGVkIHwgZmlsbCB8IHN0cm9rZSB8IGFsbCB8IGluaGVyaXQiLHJlbGV2YW5jZTo4MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcG9pbnRlci1ldmVudHMifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB1bmRlciB3aGF0IGNpcmN1bXN0YW5jZXMgYSBnaXZlbiBlbGVtZW50IGNhbiBiZSB0aGUgdGFyZ2V0IGVsZW1lbnQgZm9yIGEgcG9pbnRlciBldmVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InBvc2l0aW9uIix2YWx1ZXM6W3tuYW1lOiJhYnNvbHV0ZSIsZGVzY3JpcHRpb246IlRoZSBib3gncyBwb3NpdGlvbiAoYW5kIHBvc3NpYmx5IHNpemUpIGlzIHNwZWNpZmllZCB3aXRoIHRoZSAndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsIGFuZCAnbGVmdCcgcHJvcGVydGllcy4gVGhlc2UgcHJvcGVydGllcyBzcGVjaWZ5IG9mZnNldHMgd2l0aCByZXNwZWN0IHRvIHRoZSBib3gncyAnY29udGFpbmluZyBibG9jaycuIn0se25hbWU6ImZpeGVkIixkZXNjcmlwdGlvbjoiVGhlIGJveCdzIHBvc2l0aW9uIGlzIGNhbGN1bGF0ZWQgYWNjb3JkaW5nIHRvIHRoZSAnYWJzb2x1dGUnIG1vZGVsLCBidXQgaW4gYWRkaXRpb24sIHRoZSBib3ggaXMgZml4ZWQgd2l0aCByZXNwZWN0IHRvIHNvbWUgcmVmZXJlbmNlLiBBcyB3aXRoIHRoZSAnYWJzb2x1dGUnIG1vZGVsLCB0aGUgYm94J3MgbWFyZ2lucyBkbyBub3QgY29sbGFwc2Ugd2l0aCBhbnkgb3RoZXIgbWFyZ2lucy4ifSx7bmFtZToiLW1zLXBhZ2UiLGRlc2NyaXB0aW9uOiJUaGUgYm94J3MgcG9zaXRpb24gaXMgY2FsY3VsYXRlZCBhY2NvcmRpbmcgdG8gdGhlICdhYnNvbHV0ZScgbW9kZWwuIn0se25hbWU6InJlbGF0aXZlIixkZXNjcmlwdGlvbjoiVGhlIGJveCdzIHBvc2l0aW9uIGlzIGNhbGN1bGF0ZWQgYWNjb3JkaW5nIHRvIHRoZSBub3JtYWwgZmxvdyAodGhpcyBpcyBjYWxsZWQgdGhlIHBvc2l0aW9uIGluIG5vcm1hbCBmbG93KS4gVGhlbiB0aGUgYm94IGlzIG9mZnNldCByZWxhdGl2ZSB0byBpdHMgbm9ybWFsIHBvc2l0aW9uLiJ9LHtuYW1lOiJzdGF0aWMiLGRlc2NyaXB0aW9uOiJUaGUgYm94IGlzIGEgbm9ybWFsIGJveCwgbGFpZCBvdXQgYWNjb3JkaW5nIHRvIHRoZSBub3JtYWwgZmxvdy4gVGhlICd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgYW5kICdsZWZ0JyBwcm9wZXJ0aWVzIGRvIG5vdCBhcHBseS4ifSx7bmFtZToic3RpY2t5IixkZXNjcmlwdGlvbjoiVGhlIGJveCdzIHBvc2l0aW9uIGlzIGNhbGN1bGF0ZWQgYWNjb3JkaW5nIHRvIHRoZSBub3JtYWwgZmxvdy4gVGhlbiB0aGUgYm94IGlzIG9mZnNldCByZWxhdGl2ZSB0byBpdHMgZmxvdyByb290IGFuZCBjb250YWluaW5nIGJsb2NrIGFuZCBpbiBhbGwgY2FzZXMsIGluY2x1ZGluZyB0YWJsZSBlbGVtZW50cywgZG9lcyBub3QgYWZmZWN0IHRoZSBwb3NpdGlvbiBvZiBhbnkgZm9sbG93aW5nIGJveGVzLiJ9LHtuYW1lOiItd2Via2l0LXN0aWNreSIsZGVzY3JpcHRpb246IlRoZSBib3gncyBwb3NpdGlvbiBpcyBjYWxjdWxhdGVkIGFjY29yZGluZyB0byB0aGUgbm9ybWFsIGZsb3cuIFRoZW4gdGhlIGJveCBpcyBvZmZzZXQgcmVsYXRpdmUgdG8gaXRzIGZsb3cgcm9vdCBhbmQgY29udGFpbmluZyBibG9jayBhbmQgaW4gYWxsIGNhc2VzLCBpbmNsdWRpbmcgdGFibGUgZWxlbWVudHMsIGRvZXMgbm90IGFmZmVjdCB0aGUgcG9zaXRpb24gb2YgYW55IGZvbGxvd2luZyBib3hlcy4ifV0sc3ludGF4OiJzdGF0aWMgfCByZWxhdGl2ZSB8IGFic29sdXRlIHwgc3RpY2t5IHwgZml4ZWQiLHJlbGV2YW5jZTo5NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcG9zaXRpb24ifV0sZGVzY3JpcHRpb246IlRoZSBwb3NpdGlvbiBDU1MgcHJvcGVydHkgc2V0cyBob3cgYW4gZWxlbWVudCBpcyBwb3NpdGlvbmVkIGluIGEgZG9jdW1lbnQuIFRoZSB0b3AsIHJpZ2h0LCBib3R0b20sIGFuZCBsZWZ0IHByb3BlcnRpZXMgZGV0ZXJtaW5lIHRoZSBmaW5hbCBsb2NhdGlvbiBvZiBwb3NpdGlvbmVkIGVsZW1lbnRzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToicHJlZml4Iixicm93c2VyczpbIkZGMzMiXSxzeW50YXg6IjxzeW1ib2w+IixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkBjb3VudGVyLXN0eWxlIGRlc2NyaXB0b3IuIFNwZWNpZmllcyBhIDxzeW1ib2w+IHRoYXQgaXMgcHJlcGVuZGVkIHRvIHRoZSBtYXJrZXIgcmVwcmVzZW50YXRpb24uIixyZXN0cmljdGlvbnM6WyJpbWFnZSIsInN0cmluZyIsImlkZW50aWZpZXIiXX0se25hbWU6InF1b3RlcyIsdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSAnb3Blbi1xdW90ZScgYW5kICdjbG9zZS1xdW90ZScgdmFsdWVzIG9mIHRoZSAnY29udGVudCcgcHJvcGVydHkgcHJvZHVjZSBubyBxdW90YXRpb25zIG1hcmtzLCBhcyBpZiB0aGV5IHdlcmUgJ25vLW9wZW4tcXVvdGUnIGFuZCAnbm8tY2xvc2UtcXVvdGUnIHJlc3BlY3RpdmVseS4ifV0sc3ludGF4OiJub25lIHwgYXV0byB8IFsgPHN0cmluZz4gPHN0cmluZz4gXSsiLHJlbGV2YW5jZTo1MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcXVvdGVzIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgcXVvdGF0aW9uIG1hcmtzIGZvciBhbnkgbnVtYmVyIG9mIGVtYmVkZGVkIHF1b3RhdGlvbnMuIixyZXN0cmljdGlvbnM6WyJzdHJpbmciXX0se25hbWU6InJhbmdlIixicm93c2VyczpbIkZGMzMiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHJhbmdlIGRlcGVuZHMgb24gdGhlIGNvdW50ZXIgc3lzdGVtLiJ9LHtuYW1lOiJpbmZpbml0ZSIsZGVzY3JpcHRpb246IklmIHVzZWQgYXMgdGhlIGZpcnN0IHZhbHVlIGluIGEgcmFuZ2UsIGl0IHJlcHJlc2VudHMgbmVnYXRpdmUgaW5maW5pdHk7IGlmIHVzZWQgYXMgdGhlIHNlY29uZCB2YWx1ZSwgaXQgcmVwcmVzZW50cyBwb3NpdGl2ZSBpbmZpbml0eS4ifV0sc3ludGF4OiJbIFsgPGludGVnZXI+IHwgaW5maW5pdGUgXXsyfSBdIyB8IGF1dG8iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQGNvdW50ZXItc3R5bGUgZGVzY3JpcHRvci4gRGVmaW5lcyB0aGUgcmFuZ2VzIG92ZXIgd2hpY2ggdGhlIGNvdW50ZXIgc3R5bGUgaXMgZGVmaW5lZC4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiLCJlbnVtIl19LHtuYW1lOiJyZXNpemUiLGJyb3dzZXJzOlsiRTc5IiwiRkY0IiwiUzMiLCJDMSIsIk8xMi4xIl0sdmFsdWVzOlt7bmFtZToiYm90aCIsZGVzY3JpcHRpb246IlRoZSBVQSBwcmVzZW50cyBhIGJpZGlyZWN0aW9uYWwgcmVzaXppbmcgbWVjaGFuaXNtIHRvIGFsbG93IHRoZSB1c2VyIHRvIGFkanVzdCBib3RoIHRoZSBoZWlnaHQgYW5kIHRoZSB3aWR0aCBvZiB0aGUgZWxlbWVudC4ifSx7bmFtZToiaG9yaXpvbnRhbCIsZGVzY3JpcHRpb246IlRoZSBVQSBwcmVzZW50cyBhIHVuaWRpcmVjdGlvbmFsIGhvcml6b250YWwgcmVzaXppbmcgbWVjaGFuaXNtIHRvIGFsbG93IHRoZSB1c2VyIHRvIGFkanVzdCBvbmx5IHRoZSB3aWR0aCBvZiB0aGUgZWxlbWVudC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBVQSBkb2VzIG5vdCBwcmVzZW50IGEgcmVzaXppbmcgbWVjaGFuaXNtIG9uIHRoZSBlbGVtZW50LCBhbmQgdGhlIHVzZXIgaXMgZ2l2ZW4gbm8gZGlyZWN0IG1hbmlwdWxhdGlvbiBtZWNoYW5pc20gdG8gcmVzaXplIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJ2ZXJ0aWNhbCIsZGVzY3JpcHRpb246IlRoZSBVQSBwcmVzZW50cyBhIHVuaWRpcmVjdGlvbmFsIHZlcnRpY2FsIHJlc2l6aW5nIG1lY2hhbmlzbSB0byBhbGxvdyB0aGUgdXNlciB0byBhZGp1c3Qgb25seSB0aGUgaGVpZ2h0IG9mIHRoZSBlbGVtZW50LiJ9XSxzeW50YXg6Im5vbmUgfCBib3RoIHwgaG9yaXpvbnRhbCB8IHZlcnRpY2FsIHwgYmxvY2sgfCBpbmxpbmUiLHJlbGV2YW5jZTo2MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcmVzaXplIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hldGhlciBvciBub3QgYW4gZWxlbWVudCBpcyByZXNpemFibGUgYnkgdGhlIHVzZXIsIGFuZCBpZiBzbywgYWxvbmcgd2hpY2ggYXhpcy9heGVzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToicmlnaHQiLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJGb3Igbm9uLXJlcGxhY2VkIGVsZW1lbnRzLCB0aGUgZWZmZWN0IG9mIHRoaXMgdmFsdWUgZGVwZW5kcyBvbiB3aGljaCBvZiByZWxhdGVkIHByb3BlcnRpZXMgaGF2ZSB0aGUgdmFsdWUgJ2F1dG8nIGFzIHdlbGwifV0sc3ludGF4OiI8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGF1dG8iLHJlbGV2YW5jZTo5MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcmlnaHQifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgZmFyIGFuIGFic29sdXRlbHkgcG9zaXRpb25lZCBib3gncyByaWdodCBtYXJnaW4gZWRnZSBpcyBvZmZzZXQgdG8gdGhlIGxlZnQgb2YgdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIGJveCdzICdjb250YWluaW5nIGJsb2NrJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6InJ1YnktYWxpZ24iLGJyb3dzZXJzOlsiRkYzOCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGJyb3dzZXJzOlsiRkYzOCJdLGRlc2NyaXB0aW9uOiJUaGUgdXNlciBhZ2VudCBkZXRlcm1pbmVzIGhvdyB0aGUgcnVieSBjb250ZW50cyBhcmUgYWxpZ25lZC4gVGhpcyBpcyB0aGUgaW5pdGlhbCB2YWx1ZS4ifSx7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiVGhlIHJ1YnkgY29udGVudCBpcyBjZW50ZXJlZCB3aXRoaW4gaXRzIGJveC4ifSx7bmFtZToiZGlzdHJpYnV0ZS1sZXR0ZXIiLGJyb3dzZXJzOlsiRkYzOCJdLGRlc2NyaXB0aW9uOiJJZiB0aGUgd2lkdGggb2YgdGhlIHJ1YnkgdGV4dCBpcyBzbWFsbGVyIHRoYW4gdGhhdCBvZiB0aGUgYmFzZSwgdGhlbiB0aGUgcnVieSB0ZXh0IGNvbnRlbnRzIGFyZSBldmVubHkgZGlzdHJpYnV0ZWQgYWNyb3NzIHRoZSB3aWR0aCBvZiB0aGUgYmFzZSwgd2l0aCB0aGUgZmlyc3QgYW5kIGxhc3QgcnVieSB0ZXh0IGdseXBocyBsaW5pbmcgdXAgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBmaXJzdCBhbmQgbGFzdCBiYXNlIGdseXBocy4gSWYgdGhlIHdpZHRoIG9mIHRoZSBydWJ5IHRleHQgaXMgYXQgbGVhc3QgdGhlIHdpZHRoIG9mIHRoZSBiYXNlLCB0aGVuIHRoZSBsZXR0ZXJzIG9mIHRoZSBiYXNlIGFyZSBldmVubHkgZGlzdHJpYnV0ZWQgYWNyb3NzIHRoZSB3aWR0aCBvZiB0aGUgcnVieSB0ZXh0LiJ9LHtuYW1lOiJkaXN0cmlidXRlLXNwYWNlIixicm93c2VyczpbIkZGMzgiXSxkZXNjcmlwdGlvbjoiSWYgdGhlIHdpZHRoIG9mIHRoZSBydWJ5IHRleHQgaXMgc21hbGxlciB0aGFuIHRoYXQgb2YgdGhlIGJhc2UsIHRoZW4gdGhlIHJ1YnkgdGV4dCBjb250ZW50cyBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIGFjcm9zcyB0aGUgd2lkdGggb2YgdGhlIGJhc2UsIHdpdGggYSBjZXJ0YWluIGFtb3VudCBvZiB3aGl0ZSBzcGFjZSBwcmVjZWRpbmcgdGhlIGZpcnN0IGFuZCBmb2xsb3dpbmcgdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZSBydWJ5IHRleHQuIFRoYXQgYW1vdW50IG9mIHdoaXRlIHNwYWNlIGlzIG5vcm1hbGx5IGVxdWFsIHRvIGhhbGYgdGhlIGFtb3VudCBvZiBpbnRlci1jaGFyYWN0ZXIgc3BhY2Ugb2YgdGhlIHJ1YnkgdGV4dC4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IlRoZSBydWJ5IHRleHQgY29udGVudCBpcyBhbGlnbmVkIHdpdGggdGhlIHN0YXJ0IGVkZ2Ugb2YgdGhlIGJhc2UuIn0se25hbWU6ImxpbmUtZWRnZSIsYnJvd3NlcnM6WyJGRjM4Il0sZGVzY3JpcHRpb246IklmIHRoZSBydWJ5IHRleHQgaXMgbm90IGFkamFjZW50IHRvIGEgbGluZSBlZGdlLCBpdCBpcyBhbGlnbmVkIGFzIGluICdhdXRvJy4gSWYgaXQgaXMgYWRqYWNlbnQgdG8gYSBsaW5lIGVkZ2UsIHRoZW4gaXQgaXMgc3RpbGwgYWxpZ25lZCBhcyBpbiBhdXRvLCBidXQgdGhlIHNpZGUgb2YgdGhlIHJ1YnkgdGV4dCB0aGF0IHRvdWNoZXMgdGhlIGVuZCBvZiB0aGUgbGluZSBpcyBsaW5lZCB1cCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGVkZ2Ugb2YgdGhlIGJhc2UuIn0se25hbWU6InJpZ2h0Iixicm93c2VyczpbIkZGMzgiXSxkZXNjcmlwdGlvbjoiVGhlIHJ1YnkgdGV4dCBjb250ZW50IGlzIGFsaWduZWQgd2l0aCB0aGUgZW5kIGVkZ2Ugb2YgdGhlIGJhc2UuIn0se25hbWU6InN0YXJ0Iixicm93c2VyczpbIkZGMzgiXSxkZXNjcmlwdGlvbjoiVGhlIHJ1YnkgdGV4dCBjb250ZW50IGlzIGFsaWduZWQgd2l0aCB0aGUgc3RhcnQgZWRnZSBvZiB0aGUgYmFzZS4ifSx7bmFtZToic3BhY2UtYmV0d2VlbiIsYnJvd3NlcnM6WyJGRjM4Il0sZGVzY3JpcHRpb246IlRoZSBydWJ5IGNvbnRlbnQgZXhwYW5kcyBhcyBkZWZpbmVkIGZvciBub3JtYWwgdGV4dCBqdXN0aWZpY2F0aW9uIChhcyBkZWZpbmVkIGJ5ICd0ZXh0LWp1c3RpZnknKSwifSx7bmFtZToic3BhY2UtYXJvdW5kIixicm93c2VyczpbIkZGMzgiXSxkZXNjcmlwdGlvbjoiQXMgZm9yICdzcGFjZS1iZXR3ZWVuJyBleGNlcHQgdGhhdCB0aGVyZSBleGlzdHMgYW4gZXh0cmEganVzdGlmaWNhdGlvbiBvcHBvcnR1bml0aWVzIHdob3NlIHNwYWNlIGlzIGRpc3RyaWJ1dGVkIGhhbGYgYmVmb3JlIGFuZCBoYWxmIGFmdGVyIHRoZSBydWJ5IGNvbnRlbnQuIn1dLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6InN0YXJ0IHwgY2VudGVyIHwgc3BhY2UtYmV0d2VlbiB8IHNwYWNlLWFyb3VuZCIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ydWJ5LWFsaWduIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IHRleHQgaXMgZGlzdHJpYnV0ZWQgd2l0aGluIHRoZSB2YXJpb3VzIHJ1YnkgYm94ZXMgd2hlbiB0aGVpciBjb250ZW50cyBkbyBub3QgZXhhY3RseSBmaWxsIHRoZWlyIHJlc3BlY3RpdmUgYm94ZXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJydWJ5LW92ZXJoYW5nIixicm93c2VyczpbIkZGMTAiLCJJRTUiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHJ1YnkgdGV4dCBjYW4gb3ZlcmhhbmcgdGV4dCBhZGphY2VudCB0byB0aGUgYmFzZSBvbiBlaXRoZXIgc2lkZS4gVGhpcyBpcyB0aGUgaW5pdGlhbCB2YWx1ZS4ifSx7bmFtZToiZW5kIixkZXNjcmlwdGlvbjoiVGhlIHJ1YnkgdGV4dCBjYW4gb3ZlcmhhbmcgdGhlIHRleHQgdGhhdCBmb2xsb3dzIGl0LiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIHJ1YnkgdGV4dCBjYW5ub3Qgb3ZlcmhhbmcgYW55IHRleHQgYWRqYWNlbnQgdG8gaXRzIGJhc2UsIG9ubHkgaXRzIG93biBiYXNlLiJ9LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246IlRoZSBydWJ5IHRleHQgY2FuIG92ZXJoYW5nIHRoZSB0ZXh0IHRoYXQgcHJlY2VkZXMgaXQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB3aGV0aGVyLCBhbmQgb24gd2hpY2ggc2lkZSwgcnVieSB0ZXh0IGlzIGFsbG93ZWQgdG8gcGFydGlhbGx5IG92ZXJoYW5nIGFueSBhZGphY2VudCB0ZXh0IGluIGFkZGl0aW9uIHRvIGl0cyBvd24gYmFzZSwgd2hlbiB0aGUgcnVieSB0ZXh0IGlzIHdpZGVyIHRoYW4gdGhlIHJ1YnkgYmFzZS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InJ1YnktcG9zaXRpb24iLGJyb3dzZXJzOlsiRTg0IiwiRkYzOCIsIlM3IiwiQzg0IiwiTzcwIl0sdmFsdWVzOlt7bmFtZToiYWZ0ZXIiLGRlc2NyaXB0aW9uOiJUaGUgcnVieSB0ZXh0IGFwcGVhcnMgYWZ0ZXIgdGhlIGJhc2UuIFRoaXMgaXMgYSByZWxhdGl2ZWx5IHJhcmUgc2V0dGluZyB1c2VkIGluIGlkZW9ncmFwaGljIEVhc3QgQXNpYW4gd3JpdGluZyBzeXN0ZW1zLCBtb3N0IGVhc2lseSBmb3VuZCBpbiBlZHVjYXRpb25hbCB0ZXh0LiJ9LHtuYW1lOiJiZWZvcmUiLGRlc2NyaXB0aW9uOiJUaGUgcnVieSB0ZXh0IGFwcGVhcnMgYmVmb3JlIHRoZSBiYXNlLiBUaGlzIGlzIHRoZSBtb3N0IGNvbW1vbiBzZXR0aW5nIHVzZWQgaW4gaWRlb2dyYXBoaWMgRWFzdCBBc2lhbiB3cml0aW5nIHN5c3RlbXMuIn0se25hbWU6ImlubGluZSJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IlRoZSBydWJ5IHRleHQgYXBwZWFycyBvbiB0aGUgcmlnaHQgb2YgdGhlIGJhc2UuIFVubGlrZSAnYmVmb3JlJyBhbmQgJ2FmdGVyJywgdGhpcyB2YWx1ZSBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHRleHQgZmxvdyBkaXJlY3Rpb24uIn1dLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6IlsgYWx0ZXJuYXRlIHx8IFsgb3ZlciB8IHVuZGVyIF0gXSB8IGludGVyLWNoYXJhY3RlciIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ydWJ5LXBvc2l0aW9uIn1dLGRlc2NyaXB0aW9uOiJVc2VkIGJ5IHRoZSBwYXJlbnQgb2YgZWxlbWVudHMgd2l0aCBkaXNwbGF5OiBydWJ5LXRleHQgdG8gY29udHJvbCB0aGUgcG9zaXRpb24gb2YgdGhlIHJ1YnkgdGV4dCB3aXRoIHJlc3BlY3QgdG8gaXRzIGJhc2UuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJydWJ5LXNwYW4iLGJyb3dzZXJzOlsiRkYxMCJdLHZhbHVlczpbe25hbWU6ImF0dHIoeCkiLGRlc2NyaXB0aW9uOiJUaGUgdmFsdWUgb2YgYXR0cmlidXRlICd4JyBpcyBhIHN0cmluZyB2YWx1ZS4gVGhlIHN0cmluZyB2YWx1ZSBpcyBldmFsdWF0ZWQgYXMgYSA8bnVtYmVyPiB0byBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiBydWJ5IGJhc2UgZWxlbWVudHMgdG8gYmUgc3Bhbm5lZCBieSB0aGUgYW5ub3RhdGlvbiBlbGVtZW50LiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gc3Bhbm5pbmcuIFRoZSBjb21wdXRlZCB2YWx1ZSBpcyAnMScuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB3aGV0aGVyLCBhbmQgb24gd2hpY2ggc2lkZSwgcnVieSB0ZXh0IGlzIGFsbG93ZWQgdG8gcGFydGlhbGx5IG92ZXJoYW5nIGFueSBhZGphY2VudCB0ZXh0IGluIGFkZGl0aW9uIHRvIGl0cyBvd24gYmFzZSwgd2hlbiB0aGUgcnVieSB0ZXh0IGlzIHdpZGVyIHRoYW4gdGhlIHJ1YnkgYmFzZS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InNjcm9sbGJhci0zZGxpZ2h0LWNvbG9yIixicm93c2VyczpbIklFNSJdLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsYmFyLTNkbGlnaHQtY29sb3IifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSB0b3AgYW5kIGxlZnQgZWRnZXMgb2YgdGhlIHNjcm9sbCBib3ggYW5kIHNjcm9sbCBhcnJvd3Mgb2YgYSBzY3JvbGwgYmFyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6InNjcm9sbGJhci1hcnJvdy1jb2xvciIsYnJvd3NlcnM6WyJJRTUiXSxyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbGJhci1hcnJvdy1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgY29sb3Igb2YgdGhlIGFycm93IGVsZW1lbnRzIG9mIGEgc2Nyb2xsIGFycm93LiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6InNjcm9sbGJhci1iYXNlLWNvbG9yIixicm93c2VyczpbIklFNSJdLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsYmFyLWJhc2UtY29sb3IifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSBtYWluIGVsZW1lbnRzIG9mIGEgc2Nyb2xsIGJhciwgd2hpY2ggaW5jbHVkZSB0aGUgc2Nyb2xsIGJveCwgdHJhY2ssIGFuZCBzY3JvbGwgYXJyb3dzLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6InNjcm9sbGJhci1kYXJrc2hhZG93LWNvbG9yIixicm93c2VyczpbIklFNSJdLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsYmFyLWRhcmtzaGFkb3ctY29sb3IifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSBndXR0ZXIgb2YgYSBzY3JvbGwgYmFyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6InNjcm9sbGJhci1mYWNlLWNvbG9yIixicm93c2VyczpbIklFNSJdLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsYmFyLWZhY2UtY29sb3IifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSBzY3JvbGwgYm94IGFuZCBzY3JvbGwgYXJyb3dzIG9mIGEgc2Nyb2xsIGJhci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJzY3JvbGxiYXItaGlnaGxpZ2h0LWNvbG9yIixicm93c2VyczpbIklFNSJdLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsYmFyLWhpZ2hsaWdodC1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgY29sb3Igb2YgdGhlIHRvcCBhbmQgbGVmdCBlZGdlcyBvZiB0aGUgc2Nyb2xsIGJveCBhbmQgc2Nyb2xsIGFycm93cyBvZiBhIHNjcm9sbCBiYXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToic2Nyb2xsYmFyLXNoYWRvdy1jb2xvciIsYnJvd3NlcnM6WyJJRTUiXSxyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbGJhci1zaGFkb3ctY29sb3IifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSBib3R0b20gYW5kIHJpZ2h0IGVkZ2VzIG9mIHRoZSBzY3JvbGwgYm94IGFuZCBzY3JvbGwgYXJyb3dzIG9mIGEgc2Nyb2xsIGJhci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJzY3JvbGxiYXItdHJhY2stY29sb3IiLGJyb3dzZXJzOlsiSUU2Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgdHJhY2sgZWxlbWVudCBvZiBhIHNjcm9sbCBiYXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToic2Nyb2xsLWJlaGF2aW9yIixicm93c2VyczpbIkU3OSIsIkZGMzYiLCJTMTUuNCIsIkM2MSIsIk80OCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJTY3JvbGxzIGluIGFuIGluc3RhbnQgZmFzaGlvbi4ifSx7bmFtZToic21vb3RoIixkZXNjcmlwdGlvbjoiU2Nyb2xscyBpbiBhIHNtb290aCBmYXNoaW9uIHVzaW5nIGEgdXNlci1hZ2VudC1kZWZpbmVkIHRpbWluZyBmdW5jdGlvbiBhbmQgdGltZSBwZXJpb2QuIn1dLHN5bnRheDoiYXV0byB8IHNtb290aCIscmVsZXZhbmNlOjUyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtYmVoYXZpb3IifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgc2Nyb2xsaW5nIGJlaGF2aW9yIGZvciBhIHNjcm9sbGluZyBib3gsIHdoZW4gc2Nyb2xsaW5nIGhhcHBlbnMgZHVlIHRvIG5hdmlnYXRpb24gb3IgQ1NTT00gc2Nyb2xsaW5nIEFQSXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJzY3JvbGwtc25hcC1jb29yZGluYXRlIixicm93c2VyczpbIkZGMzkiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoYXQgdGhpcyBlbGVtZW50IGRvZXMgbm90IGNvbnRyaWJ1dGUgYSBzbmFwIHBvaW50LiJ9XSxzdGF0dXM6Im9ic29sZXRlIixzeW50YXg6Im5vbmUgfCA8cG9zaXRpb24+IyIscmVsZXZhbmNlOjAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1zbmFwLWNvb3JkaW5hdGUifV0sZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIHggYW5kIHkgY29vcmRpbmF0ZSB3aXRoaW4gdGhlIGVsZW1lbnQgd2hpY2ggd2lsbCBhbGlnbiB3aXRoIHRoZSBuZWFyZXN0IGFuY2VzdG9yIHNjcm9sbCBjb250YWluZXLigJlzIHNuYXAtZGVzdGluYXRpb24gZm9yIHRoZSByZXNwZWN0aXZlIGF4aXMuIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJlbnVtIl19LHtuYW1lOiJzY3JvbGwtc25hcC1kZXN0aW5hdGlvbiIsYnJvd3NlcnM6WyJGRjM5Il0sc3RhdHVzOiJvYnNvbGV0ZSIsc3ludGF4OiI8cG9zaXRpb24+IixyZWxldmFuY2U6MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXNuYXAtZGVzdGluYXRpb24ifV0sZGVzY3JpcHRpb246IkRlZmluZSB0aGUgeCBhbmQgeSBjb29yZGluYXRlIHdpdGhpbiB0aGUgc2Nyb2xsIGNvbnRhaW5lcuKAmXMgdmlzdWFsIHZpZXdwb3J0IHdoaWNoIGVsZW1lbnQgc25hcCBwb2ludHMgd2lsbCBhbGlnbiB3aXRoLiIscmVzdHJpY3Rpb25zOlsicG9zaXRpb24iLCJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJzY3JvbGwtc25hcC1wb2ludHMteCIsYnJvd3NlcnM6WyJGRjM5IiwiUzkiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gc25hcCBwb2ludHMgYXJlIGRlZmluZWQgYnkgdGhpcyBzY3JvbGwgY29udGFpbmVyLiJ9LHtuYW1lOiJyZXBlYXQoKSIsZGVzY3JpcHRpb246IkRlZmluZXMgYW4gaW50ZXJ2YWwgYXQgd2hpY2ggc25hcCBwb2ludHMgYXJlIGRlZmluZWQsIHN0YXJ0aW5nIGZyb20gdGhlIGNvbnRhaW5lcuKAmXMgcmVsZXZhbnQgc3RhcnQgZWRnZS4ifV0sc3RhdHVzOiJvYnNvbGV0ZSIsc3ludGF4OiJub25lIHwgcmVwZWF0KCA8bGVuZ3RoLXBlcmNlbnRhZ2U+ICkiLHJlbGV2YW5jZTowLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtc25hcC1wb2ludHMteCJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgcG9zaXRpb25pbmcgb2Ygc25hcCBwb2ludHMgYWxvbmcgdGhlIHggYXhpcyBvZiB0aGUgc2Nyb2xsIGNvbnRhaW5lciBpdCBpcyBhcHBsaWVkIHRvLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToic2Nyb2xsLXNuYXAtcG9pbnRzLXkiLGJyb3dzZXJzOlsiRkYzOSIsIlM5Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHNuYXAgcG9pbnRzIGFyZSBkZWZpbmVkIGJ5IHRoaXMgc2Nyb2xsIGNvbnRhaW5lci4ifSx7bmFtZToicmVwZWF0KCkiLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGFuIGludGVydmFsIGF0IHdoaWNoIHNuYXAgcG9pbnRzIGFyZSBkZWZpbmVkLCBzdGFydGluZyBmcm9tIHRoZSBjb250YWluZXLigJlzIHJlbGV2YW50IHN0YXJ0IGVkZ2UuIn1dLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoibm9uZSB8IHJlcGVhdCggPGxlbmd0aC1wZXJjZW50YWdlPiApIixyZWxldmFuY2U6MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXNuYXAtcG9pbnRzLXkifV0sZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIHBvc2l0aW9uaW5nIG9mIHNuYXAgcG9pbnRzIGFsb25nIHRoZSB5IGF4aXMgb2YgdGhlIHNjcm9sbCBjb250YWluZXIgaXQgaXMgYXBwbGllZCB0by4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InNjcm9sbC1zbmFwLXR5cGUiLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgdmlzdWFsIHZpZXdwb3J0IG9mIHRoaXMgc2Nyb2xsIGNvbnRhaW5lciBtdXN0IGlnbm9yZSBzbmFwIHBvaW50cywgaWYgYW55LCB3aGVuIHNjcm9sbGVkLiJ9LHtuYW1lOiJtYW5kYXRvcnkiLGRlc2NyaXB0aW9uOiJUaGUgdmlzdWFsIHZpZXdwb3J0IG9mIHRoaXMgc2Nyb2xsIGNvbnRhaW5lciBpcyBndWFyYW50ZWVkIHRvIHJlc3Qgb24gYSBzbmFwIHBvaW50IHdoZW4gdGhlcmUgYXJlIG5vIGFjdGl2ZSBzY3JvbGxpbmcgb3BlcmF0aW9ucy4ifSx7bmFtZToicHJveGltaXR5IixkZXNjcmlwdGlvbjoiVGhlIHZpc3VhbCB2aWV3cG9ydCBvZiB0aGlzIHNjcm9sbCBjb250YWluZXIgbWF5IGNvbWUgdG8gcmVzdCBvbiBhIHNuYXAgcG9pbnQgYXQgdGhlIHRlcm1pbmF0aW9uIG9mIGEgc2Nyb2xsIGF0IHRoZSBkaXNjcmV0aW9uIG9mIHRoZSBVQSBnaXZlbiB0aGUgcGFyYW1ldGVycyBvZiB0aGUgc2Nyb2xsLiJ9XSxzeW50YXg6Im5vbmUgfCBbIHggfCB5IHwgYmxvY2sgfCBpbmxpbmUgfCBib3RoIF0gWyBtYW5kYXRvcnkgfCBwcm94aW1pdHkgXT8iLHJlbGV2YW5jZTo1MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXNuYXAtdHlwZSJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBob3cgc3RyaWN0bHkgc25hcCBwb2ludHMgYXJlIGVuZm9yY2VkIG9uIHRoZSBzY3JvbGwgY29udGFpbmVyLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToic2hhcGUtaW1hZ2UtdGhyZXNob2xkIixicm93c2VyczpbIkU3OSIsIkZGNjIiLCJTMTAuMSIsIkMzNyIsIk8yNCJdLHN5bnRheDoiPGFscGhhLXZhbHVlPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zaGFwZS1pbWFnZS10aHJlc2hvbGQifV0sZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIGFscGhhIGNoYW5uZWwgdGhyZXNob2xkIHVzZWQgdG8gZXh0cmFjdCB0aGUgc2hhcGUgdXNpbmcgYW4gaW1hZ2UuIEEgdmFsdWUgb2YgMC41IG1lYW5zIHRoYXQgdGhlIHNoYXBlIHdpbGwgZW5jbG9zZSBhbGwgdGhlIHBpeGVscyB0aGF0IGFyZSBtb3JlIHRoYW4gNTAlIG9wYXF1ZS4iLHJlc3RyaWN0aW9uczpbIm51bWJlciJdfSx7bmFtZToic2hhcGUtbWFyZ2luIixicm93c2VyczpbIkU3OSIsIkZGNjIiLCJTMTAuMSIsIkMzNyIsIk8yNCJdLHN5bnRheDoiPGxlbmd0aC1wZXJjZW50YWdlPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zaGFwZS1tYXJnaW4ifV0sZGVzY3JpcHRpb246IkFkZHMgYSBtYXJnaW4gdG8gYSAnc2hhcGUtb3V0c2lkZScuIFRoaXMgZGVmaW5lcyBhIG5ldyBzaGFwZSB0aGF0IGlzIHRoZSBzbWFsbGVzdCBjb250b3VyIHRoYXQgaW5jbHVkZXMgYWxsIHRoZSBwb2ludHMgdGhhdCBhcmUgdGhlICdzaGFwZS1tYXJnaW4nIGRpc3RhbmNlIG91dHdhcmQgaW4gdGhlIHBlcnBlbmRpY3VsYXIgZGlyZWN0aW9uIGZyb20gYSBwb2ludCBvbiB0aGUgdW5kZXJseWluZyBzaGFwZS4iLHJlc3RyaWN0aW9uczpbInVybCIsImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6InNoYXBlLW91dHNpZGUiLGJyb3dzZXJzOlsiRTc5IiwiRkY2MiIsIlMxMC4xIiwiQzM3IiwiTzI0Il0sdmFsdWVzOlt7bmFtZToibWFyZ2luLWJveCIsZGVzY3JpcHRpb246IlRoZSBiYWNrZ3JvdW5kIGlzIHBhaW50ZWQgd2l0aGluIChjbGlwcGVkIHRvKSB0aGUgbWFyZ2luIGJveC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBmbG9hdCBhcmVhIGlzIHVuYWZmZWN0ZWQuIn1dLHN5bnRheDoibm9uZSB8IFsgPHNoYXBlLWJveD4gfHwgPGJhc2ljLXNoYXBlPiBdIHwgPGltYWdlPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zaGFwZS1vdXRzaWRlIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYW4gb3J0aG9nb25hbCByb3RhdGlvbiB0byBiZSBhcHBsaWVkIHRvIGFuIGltYWdlIGJlZm9yZSBpdCBpcyBsYWlkIG91dC4iLHJlc3RyaWN0aW9uczpbImltYWdlIiwiYm94Iiwic2hhcGUiLCJlbnVtIl19LHtuYW1lOiJzaGFwZS1yZW5kZXJpbmciLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJTdXBwcmVzc2VzIGF1cmFsIHJlbmRlcmluZy4ifSx7bmFtZToiY3Jpc3BFZGdlcyIsZGVzY3JpcHRpb246IkVtcGhhc2l6ZSB0aGUgY29udHJhc3QgYmV0d2VlbiBjbGVhbiBlZGdlcyBvZiBhcnR3b3JrIG92ZXIgcmVuZGVyaW5nIHNwZWVkIGFuZCBnZW9tZXRyaWMgcHJlY2lzaW9uLiJ9LHtuYW1lOiJnZW9tZXRyaWNQcmVjaXNpb24iLGRlc2NyaXB0aW9uOiJFbXBoYXNpemUgZ2VvbWV0cmljIHByZWNpc2lvbiBvdmVyIHNwZWVkIGFuZCBjcmlzcCBlZGdlcy4ifSx7bmFtZToib3B0aW1pemVTcGVlZCIsZGVzY3JpcHRpb246IkVtcGhhc2l6ZSByZW5kZXJpbmcgc3BlZWQgb3ZlciBnZW9tZXRyaWMgcHJlY2lzaW9uIGFuZCBjcmlzcCBlZGdlcy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJQcm92aWRlcyBoaW50cyBhYm91dCB3aGF0IHRyYWRlb2ZmcyB0byBtYWtlIGFzIGl0IHJlbmRlcnMgdmVjdG9yIGdyYXBoaWNzIGVsZW1lbnRzIHN1Y2ggYXMgPHBhdGg+IGVsZW1lbnRzIGFuZCBiYXNpYyBzaGFwZXMgc3VjaCBhcyBjaXJjbGVzIGFuZCByZWN0YW5nbGVzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToic2l6ZSIsYnJvd3NlcnM6WyJDIiwiTzgiXSxzeW50YXg6IjxsZW5ndGg+ezEsMn0gfCBhdXRvIHwgWyA8cGFnZS1zaXplPiB8fCBbIHBvcnRyYWl0IHwgbGFuZHNjYXBlIF0gXSIscmVsZXZhbmNlOjUzLGRlc2NyaXB0aW9uOiJUaGUgc2l6ZSBDU1MgYXQtcnVsZSBkZXNjcmlwdG9yLCB1c2VkIHdpdGggdGhlIEBwYWdlIGF0LXJ1bGUsIGRlZmluZXMgdGhlIHNpemUgYW5kIG9yaWVudGF0aW9uIG9mIHRoZSBib3ggd2hpY2ggaXMgdXNlZCB0byByZXByZXNlbnQgYSBwYWdlLiBNb3N0IG9mIHRoZSB0aW1lLCB0aGlzIHNpemUgY29ycmVzcG9uZHMgdG8gdGhlIHRhcmdldCBzaXplIG9mIHRoZSBwcmludGVkIHBhZ2UgaWYgYXBwbGljYWJsZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToic3JjIix2YWx1ZXM6W3tuYW1lOiJ1cmwoKSIsZGVzY3JpcHRpb246IlJlZmVyZW5jZSBmb250IGJ5IFVSTCJ9LHtuYW1lOiJmb3JtYXQoKSIsZGVzY3JpcHRpb246Ik9wdGlvbmFsIGhpbnQgZGVzY3JpYmluZyB0aGUgZm9ybWF0IG9mIHRoZSBmb250IHJlc291cmNlLiJ9LHtuYW1lOiJsb2NhbCgpIixkZXNjcmlwdGlvbjoiRm9ybWF0LXNwZWNpZmljIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgYSBsb2NhbGx5IGF2YWlsYWJsZSBjb3B5IG9mIGEgZ2l2ZW4gZm9udC4ifV0sc3ludGF4OiJbIDx1cmw+IFsgZm9ybWF0KCA8c3RyaW5nPiMgKSBdPyB8IGxvY2FsKCA8ZmFtaWx5LW5hbWU+ICkgXSMiLHJlbGV2YW5jZTo4NyxkZXNjcmlwdGlvbjoiQGZvbnQtZmFjZSBkZXNjcmlwdG9yLiBTcGVjaWZpZXMgdGhlIHJlc291cmNlIGNvbnRhaW5pbmcgZm9udCBkYXRhLiBJdCBpcyByZXF1aXJlZCwgd2hldGhlciB0aGUgZm9udCBpcyBkb3dubG9hZGFibGUgb3IgbG9jYWxseSBpbnN0YWxsZWQuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwidXJsIiwiaWRlbnRpZmllciJdfSx7bmFtZToic3RvcC1jb2xvciIscmVsZXZhbmNlOjUxLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgd2hhdCBjb2xvciB0byB1c2UgYXQgdGhhdCBncmFkaWVudCBzdG9wLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6InN0b3Atb3BhY2l0eSIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBvcGFjaXR5IG9mIGEgZ2l2ZW4gZ3JhZGllbnQgc3RvcC4iLHJlc3RyaWN0aW9uczpbIm51bWJlcigwLTEpIl19LHtuYW1lOiJzdHJva2UiLHZhbHVlczpbe25hbWU6InVybCgpIixkZXNjcmlwdGlvbjoiQSBVUkwgcmVmZXJlbmNlIHRvIGEgcGFpbnQgc2VydmVyIGVsZW1lbnQsIHdoaWNoIGlzIGFuIGVsZW1lbnQgdGhhdCBkZWZpbmVzIGEgcGFpbnQgc2VydmVyOiDigJhoYXRjaOKAmSwg4oCYbGluZWFyR3JhZGllbnTigJksIOKAmG1lc2jigJksIOKAmHBhdHRlcm7igJksIOKAmHJhZGlhbEdyYWRpZW504oCZIGFuZCDigJhzb2xpZGNvbG9y4oCZLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gcGFpbnQgaXMgYXBwbGllZCBpbiB0aGlzIGxheWVyLiJ9XSxyZWxldmFuY2U6NjUsZGVzY3JpcHRpb246IlBhaW50cyBhbG9uZyB0aGUgb3V0bGluZSBvZiB0aGUgZ2l2ZW4gZ3JhcGhpY2FsIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJjb2xvciIsImVudW0iLCJ1cmwiXX0se25hbWU6InN0cm9rZS1kYXNoYXJyYXkiLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBubyBkYXNoaW5nIGlzIHVzZWQuIn1dLHJlbGV2YW5jZTo1OCxkZXNjcmlwdGlvbjoiQ29udHJvbHMgdGhlIHBhdHRlcm4gb2YgZGFzaGVzIGFuZCBnYXBzIHVzZWQgdG8gc3Ryb2tlIHBhdGhzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSIsIm51bWJlciIsImVudW0iXX0se25hbWU6InN0cm9rZS1kYXNob2Zmc2V0IixyZWxldmFuY2U6NTksZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgZGlzdGFuY2UgaW50byB0aGUgZGFzaCBwYXR0ZXJuIHRvIHN0YXJ0IHRoZSBkYXNoLiIscmVzdHJpY3Rpb25zOlsicGVyY2VudGFnZSIsImxlbmd0aCJdfSx7bmFtZToic3Ryb2tlLWxpbmVjYXAiLHZhbHVlczpbe25hbWU6ImJ1dHQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgc3Ryb2tlIGZvciBlYWNoIHN1YnBhdGggZG9lcyBub3QgZXh0ZW5kIGJleW9uZCBpdHMgdHdvIGVuZHBvaW50cy4ifSx7bmFtZToicm91bmQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBhdCBlYWNoIGVuZCBvZiBlYWNoIHN1YnBhdGgsIHRoZSBzaGFwZSByZXByZXNlbnRpbmcgdGhlIHN0cm9rZSB3aWxsIGJlIGV4dGVuZGVkIGJ5IGEgaGFsZiBjaXJjbGUgd2l0aCBhIHJhZGl1cyBlcXVhbCB0byB0aGUgc3Ryb2tlIHdpZHRoLiJ9LHtuYW1lOiJzcXVhcmUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBhdCB0aGUgZW5kIG9mIGVhY2ggc3VicGF0aCwgdGhlIHNoYXBlIHJlcHJlc2VudGluZyB0aGUgc3Ryb2tlIHdpbGwgYmUgZXh0ZW5kZWQgYnkgYSByZWN0YW5nbGUgd2l0aCB0aGUgc2FtZSB3aWR0aCBhcyB0aGUgc3Ryb2tlIHdpZHRoIGFuZCB3aG9zZSBsZW5ndGggaXMgaGFsZiBvZiB0aGUgc3Ryb2tlIHdpZHRoLiJ9XSxyZWxldmFuY2U6NTMsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgc2hhcGUgdG8gYmUgdXNlZCBhdCB0aGUgZW5kIG9mIG9wZW4gc3VicGF0aHMgd2hlbiB0aGV5IGFyZSBzdHJva2VkLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToic3Ryb2tlLWxpbmVqb2luIix2YWx1ZXM6W3tuYW1lOiJiZXZlbCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IGEgYmV2ZWxsZWQgY29ybmVyIGlzIHRvIGJlIHVzZWQgdG8gam9pbiBwYXRoIHNlZ21lbnRzLiJ9LHtuYW1lOiJtaXRlciIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IGEgc2hhcnAgY29ybmVyIGlzIHRvIGJlIHVzZWQgdG8gam9pbiBwYXRoIHNlZ21lbnRzLiJ9LHtuYW1lOiJyb3VuZCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IGEgcm91bmQgY29ybmVyIGlzIHRvIGJlIHVzZWQgdG8gam9pbiBwYXRoIHNlZ21lbnRzLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgc2hhcGUgdG8gYmUgdXNlZCBhdCB0aGUgY29ybmVycyBvZiBwYXRocyBvciBiYXNpYyBzaGFwZXMgd2hlbiB0aGV5IGFyZSBzdHJva2VkLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToic3Ryb2tlLW1pdGVybGltaXQiLHJlbGV2YW5jZTo1MSxkZXNjcmlwdGlvbjoiV2hlbiB0d28gbGluZSBzZWdtZW50cyBtZWV0IGF0IGEgc2hhcnAgYW5nbGUgYW5kIG1pdGVyIGpvaW5zIGhhdmUgYmVlbiBzcGVjaWZpZWQgZm9yICdzdHJva2UtbGluZWpvaW4nLCBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlIG1pdGVyIHRvIGV4dGVuZCBmYXIgYmV5b25kIHRoZSB0aGlja25lc3Mgb2YgdGhlIGxpbmUgc3Ryb2tpbmcgdGhlIHBhdGguIixyZXN0cmljdGlvbnM6WyJudW1iZXIiXX0se25hbWU6InN0cm9rZS1vcGFjaXR5IixyZWxldmFuY2U6NTIsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgb3BhY2l0eSBvZiB0aGUgcGFpbnRpbmcgb3BlcmF0aW9uIHVzZWQgdG8gc3Ryb2tlIHRoZSBjdXJyZW50IG9iamVjdC4iLHJlc3RyaWN0aW9uczpbIm51bWJlcigwLTEpIl19LHtuYW1lOiJzdHJva2Utd2lkdGgiLHJlbGV2YW5jZTo2MSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSB3aWR0aCBvZiB0aGUgc3Ryb2tlIG9uIHRoZSBjdXJyZW50IG9iamVjdC4iLHJlc3RyaWN0aW9uczpbInBlcmNlbnRhZ2UiLCJsZW5ndGgiXX0se25hbWU6InN1ZmZpeCIsYnJvd3NlcnM6WyJGRjMzIl0sc3ludGF4OiI8c3ltYm9sPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJAY291bnRlci1zdHlsZSBkZXNjcmlwdG9yLiBTcGVjaWZpZXMgYSA8c3ltYm9sPiB0aGF0IGlzIGFwcGVuZGVkIHRvIHRoZSBtYXJrZXIgcmVwcmVzZW50YXRpb24uIixyZXN0cmljdGlvbnM6WyJpbWFnZSIsInN0cmluZyIsImlkZW50aWZpZXIiXX0se25hbWU6InN5c3RlbSIsYnJvd3NlcnM6WyJGRjMzIl0sdmFsdWVzOlt7bmFtZToiYWRkaXRpdmUiLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIOKAnHNpZ24tdmFsdWXigJ0gbnVtYmVyaW5nIHN5c3RlbXMsIHdoaWNoLCByYXRoZXIgdGhhbiB1c2luZyByZXVzaW5nIGRpZ2l0cyBpbiBkaWZmZXJlbnQgcG9zaXRpb25zIHRvIGNoYW5nZSB0aGVpciB2YWx1ZSwgZGVmaW5lIGFkZGl0aW9uYWwgZGlnaXRzIHdpdGggbXVjaCBsYXJnZXIgdmFsdWVzLCBzbyB0aGF0IHRoZSB2YWx1ZSBvZiB0aGUgbnVtYmVyIGNhbiBiZSBvYnRhaW5lZCBieSBhZGRpbmcgYWxsIHRoZSBkaWdpdHMgdG9nZXRoZXIuIn0se25hbWU6ImFscGhhYmV0aWMiLGRlc2NyaXB0aW9uOidJbnRlcnByZXRzIHRoZSBsaXN0IG9mIGNvdW50ZXIgc3ltYm9scyBhcyBkaWdpdHMgdG8gYW4gYWxwaGFiZXRpYyBudW1iZXJpbmcgc3lzdGVtLCBzaW1pbGFyIHRvIHRoZSBkZWZhdWx0IGxvd2VyLWFscGhhIGNvdW50ZXIgc3R5bGUsIHdoaWNoIHdyYXBzIGZyb20gImEiLCAiYiIsICJjIiwgdG8gImFhIiwgImFiIiwgImFjIi4nfSx7bmFtZToiY3ljbGljIixkZXNjcmlwdGlvbjoiQ3ljbGVzIHJlcGVhdGVkbHkgdGhyb3VnaCBpdHMgcHJvdmlkZWQgc3ltYm9scywgbG9vcGluZyBiYWNrIHRvIHRoZSBiZWdpbm5pbmcgd2hlbiBpdCByZWFjaGVzIHRoZSBlbmQgb2YgdGhlIGxpc3QuIn0se25hbWU6ImV4dGVuZHMiLGRlc2NyaXB0aW9uOiJVc2UgdGhlIGFsZ29yaXRobSBvZiBhbm90aGVyIGNvdW50ZXIgc3R5bGUsIGJ1dCBhbHRlciBvdGhlciBhc3BlY3RzLiJ9LHtuYW1lOiJmaXhlZCIsZGVzY3JpcHRpb246IlJ1bnMgdGhyb3VnaCBpdHMgbGlzdCBvZiBjb3VudGVyIHN5bWJvbHMgb25jZSwgdGhlbiBmYWxscyBiYWNrLiJ9LHtuYW1lOiJudW1lcmljIixkZXNjcmlwdGlvbjoiaW50ZXJwcmV0cyB0aGUgbGlzdCBvZiBjb3VudGVyIHN5bWJvbHMgYXMgZGlnaXRzIHRvIGEgXCJwbGFjZS12YWx1ZVwiIG51bWJlcmluZyBzeXN0ZW0sIHNpbWlsYXIgdG8gdGhlIGRlZmF1bHQgJ2RlY2ltYWwnIGNvdW50ZXIgc3R5bGUuIn0se25hbWU6InN5bWJvbGljIixkZXNjcmlwdGlvbjoiQ3ljbGVzIHJlcGVhdGVkbHkgdGhyb3VnaCBpdHMgcHJvdmlkZWQgc3ltYm9scywgZG91YmxpbmcsIHRyaXBsaW5nLCBldGMuIHRoZSBzeW1ib2xzIG9uIGVhY2ggc3VjY2Vzc2l2ZSBwYXNzIHRocm91Z2ggdGhlIGxpc3QuIn1dLHN5bnRheDoiY3ljbGljIHwgbnVtZXJpYyB8IGFscGhhYmV0aWMgfCBzeW1ib2xpYyB8IGFkZGl0aXZlIHwgWyBmaXhlZCA8aW50ZWdlcj4/IF0gfCBbIGV4dGVuZHMgPGNvdW50ZXItc3R5bGUtbmFtZT4gXSIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJAY291bnRlci1zdHlsZSBkZXNjcmlwdG9yLiBTcGVjaWZpZXMgd2hpY2ggYWxnb3JpdGhtIHdpbGwgYmUgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIGNvdW50ZXLigJlzIHJlcHJlc2VudGF0aW9uIGJhc2VkIG9uIHRoZSBjb3VudGVyIHZhbHVlLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImludGVnZXIiXX0se25hbWU6InN5bWJvbHMiLGJyb3dzZXJzOlsiRkYzMyJdLHN5bnRheDoiPHN5bWJvbD4rIixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkBjb3VudGVyLXN0eWxlIGRlc2NyaXB0b3IuIFNwZWNpZmllcyB0aGUgc3ltYm9scyB1c2VkIGJ5IHRoZSBtYXJrZXItY29uc3RydWN0aW9uIGFsZ29yaXRobSBzcGVjaWZpZWQgYnkgdGhlIHN5c3RlbSBkZXNjcmlwdG9yLiIscmVzdHJpY3Rpb25zOlsiaW1hZ2UiLCJzdHJpbmciLCJpZGVudGlmaWVyIl19LHtuYW1lOiJ0YWJsZS1sYXlvdXQiLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJVc2UgYW55IGF1dG9tYXRpYyB0YWJsZSBsYXlvdXQgYWxnb3JpdGhtLiJ9LHtuYW1lOiJmaXhlZCIsZGVzY3JpcHRpb246IlVzZSB0aGUgZml4ZWQgdGFibGUgbGF5b3V0IGFsZ29yaXRobS4ifV0sc3ludGF4OiJhdXRvIHwgZml4ZWQiLHJlbGV2YW5jZTo2MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGFibGUtbGF5b3V0In1dLGRlc2NyaXB0aW9uOiJDb250cm9scyB0aGUgYWxnb3JpdGhtIHVzZWQgdG8gbGF5IG91dCB0aGUgdGFibGUgY2VsbHMsIHJvd3MsIGFuZCBjb2x1bW5zLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToidGFiLXNpemUiLGJyb3dzZXJzOlsiRTc5IiwiRkY5MSIsIlM3IiwiQzIxIiwiTzE1Il0sc3ludGF4OiI8aW50ZWdlcj4gfCA8bGVuZ3RoPiIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90YWItc2l6ZSJ9XSxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgd2lkdGggb2YgdGhlIHRhYiBjaGFyYWN0ZXIgKFUrMDAwOSksIGluIHNwYWNlIGNoYXJhY3RlcnMgKFUrMDAyMCksIHdoZW4gcmVuZGVyZWQuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIiwibGVuZ3RoIl19LHtuYW1lOiJ0ZXh0LWFsaWduIix2YWx1ZXM6W3tuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJUaGUgaW5saW5lIGNvbnRlbnRzIGFyZSBjZW50ZXJlZCB3aXRoaW4gdGhlIGxpbmUgYm94LiJ9LHtuYW1lOiJlbmQiLGRlc2NyaXB0aW9uOiJUaGUgaW5saW5lIGNvbnRlbnRzIGFyZSBhbGlnbmVkIHRvIHRoZSBlbmQgZWRnZSBvZiB0aGUgbGluZSBib3guIn0se25hbWU6Imp1c3RpZnkiLGRlc2NyaXB0aW9uOiJUaGUgdGV4dCBpcyBqdXN0aWZpZWQgYWNjb3JkaW5nIHRvIHRoZSBtZXRob2Qgc3BlY2lmaWVkIGJ5IHRoZSAndGV4dC1qdXN0aWZ5JyBwcm9wZXJ0eS4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IlRoZSBpbmxpbmUgY29udGVudHMgYXJlIGFsaWduZWQgdG8gdGhlIGxlZnQgZWRnZSBvZiB0aGUgbGluZSBib3guIEluIHZlcnRpY2FsIHRleHQsICdsZWZ0JyBhbGlnbnMgdG8gdGhlIGVkZ2Ugb2YgdGhlIGxpbmUgYm94IHRoYXQgd291bGQgYmUgdGhlIHN0YXJ0IGVkZ2UgZm9yIGxlZnQtdG8tcmlnaHQgdGV4dC4ifSx7bmFtZToicmlnaHQiLGRlc2NyaXB0aW9uOiJUaGUgaW5saW5lIGNvbnRlbnRzIGFyZSBhbGlnbmVkIHRvIHRoZSByaWdodCBlZGdlIG9mIHRoZSBsaW5lIGJveC4gSW4gdmVydGljYWwgdGV4dCwgJ3JpZ2h0JyBhbGlnbnMgdG8gdGhlIGVkZ2Ugb2YgdGhlIGxpbmUgYm94IHRoYXQgd291bGQgYmUgdGhlIGVuZCBlZGdlIGZvciBsZWZ0LXRvLXJpZ2h0IHRleHQuIn0se25hbWU6InN0YXJ0IixkZXNjcmlwdGlvbjoiVGhlIGlubGluZSBjb250ZW50cyBhcmUgYWxpZ25lZCB0byB0aGUgc3RhcnQgZWRnZSBvZiB0aGUgbGluZSBib3guIn1dLHN5bnRheDoic3RhcnQgfCBlbmQgfCBsZWZ0IHwgcmlnaHQgfCBjZW50ZXIgfCBqdXN0aWZ5IHwgbWF0Y2gtcGFyZW50IixyZWxldmFuY2U6OTQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24ifV0sZGVzY3JpcHRpb246IkRlc2NyaWJlcyBob3cgaW5saW5lIGNvbnRlbnRzIG9mIGEgYmxvY2sgYXJlIGhvcml6b250YWxseSBhbGlnbmVkIGlmIHRoZSBjb250ZW50cyBkbyBub3QgY29tcGxldGVseSBmaWxsIHRoZSBsaW5lIGJveC4iLHJlc3RyaWN0aW9uczpbInN0cmluZyJdfSx7bmFtZToidGV4dC1hbGlnbi1sYXN0Iixicm93c2VyczpbIkUxMiIsIkZGNDkiLCJDNDciLCJJRTUuNSIsIk8zNCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJDb250ZW50IG9uIHRoZSBhZmZlY3RlZCBsaW5lIGlzIGFsaWduZWQgcGVyICd0ZXh0LWFsaWduJyB1bmxlc3MgJ3RleHQtYWxpZ24nIGlzIHNldCB0byAnanVzdGlmeScsIGluIHdoaWNoIGNhc2UgaXQgaXMgJ3N0YXJ0LWFsaWduZWQnLiJ9LHtuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJUaGUgaW5saW5lIGNvbnRlbnRzIGFyZSBjZW50ZXJlZCB3aXRoaW4gdGhlIGxpbmUgYm94LiJ9LHtuYW1lOiJqdXN0aWZ5IixkZXNjcmlwdGlvbjoiVGhlIHRleHQgaXMganVzdGlmaWVkIGFjY29yZGluZyB0byB0aGUgbWV0aG9kIHNwZWNpZmllZCBieSB0aGUgJ3RleHQtanVzdGlmeScgcHJvcGVydHkuIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJUaGUgaW5saW5lIGNvbnRlbnRzIGFyZSBhbGlnbmVkIHRvIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIGxpbmUgYm94LiBJbiB2ZXJ0aWNhbCB0ZXh0LCAnbGVmdCcgYWxpZ25zIHRvIHRoZSBlZGdlIG9mIHRoZSBsaW5lIGJveCB0aGF0IHdvdWxkIGJlIHRoZSBzdGFydCBlZGdlIGZvciBsZWZ0LXRvLXJpZ2h0IHRleHQuIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiVGhlIGlubGluZSBjb250ZW50cyBhcmUgYWxpZ25lZCB0byB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgbGluZSBib3guIEluIHZlcnRpY2FsIHRleHQsICdyaWdodCcgYWxpZ25zIHRvIHRoZSBlZGdlIG9mIHRoZSBsaW5lIGJveCB0aGF0IHdvdWxkIGJlIHRoZSBlbmQgZWRnZSBmb3IgbGVmdC10by1yaWdodCB0ZXh0LiJ9XSxzeW50YXg6ImF1dG8gfCBzdGFydCB8IGVuZCB8IGxlZnQgfCByaWdodCB8IGNlbnRlciB8IGp1c3RpZnkiLHJlbGV2YW5jZTo1MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbi1sYXN0In1dLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgaG93IHRoZSBsYXN0IGxpbmUgb2YgYSBibG9jayBvciBhIGxpbmUgcmlnaHQgYmVmb3JlIGEgZm9yY2VkIGxpbmUgYnJlYWsgaXMgYWxpZ25lZCB3aGVuICd0ZXh0LWFsaWduJyBpcyBzZXQgdG8gJ2p1c3RpZnknLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToidGV4dC1hbmNob3IiLHZhbHVlczpbe25hbWU6ImVuZCIsZGVzY3JpcHRpb246IlRoZSByZW5kZXJlZCBjaGFyYWN0ZXJzIGFyZSBhbGlnbmVkIHN1Y2ggdGhhdCB0aGUgZW5kIG9mIHRoZSByZXN1bHRpbmcgcmVuZGVyZWQgdGV4dCBpcyBhdCB0aGUgaW5pdGlhbCBjdXJyZW50IHRleHQgcG9zaXRpb24uIn0se25hbWU6Im1pZGRsZSIsZGVzY3JpcHRpb246IlRoZSByZW5kZXJlZCBjaGFyYWN0ZXJzIGFyZSBhbGlnbmVkIHN1Y2ggdGhhdCB0aGUgZ2VvbWV0cmljIG1pZGRsZSBvZiB0aGUgcmVzdWx0aW5nIHJlbmRlcmVkIHRleHQgaXMgYXQgdGhlIGluaXRpYWwgY3VycmVudCB0ZXh0IHBvc2l0aW9uLiJ9LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246IlRoZSByZW5kZXJlZCBjaGFyYWN0ZXJzIGFyZSBhbGlnbmVkIHN1Y2ggdGhhdCB0aGUgc3RhcnQgb2YgdGhlIHJlc3VsdGluZyByZW5kZXJlZCB0ZXh0IGlzIGF0IHRoZSBpbml0aWFsIGN1cnJlbnQgdGV4dCBwb3NpdGlvbi4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJVc2VkIHRvIGFsaWduIChzdGFydC0sIG1pZGRsZS0gb3IgZW5kLWFsaWdubWVudCkgYSBzdHJpbmcgb2YgdGV4dCByZWxhdGl2ZSB0byBhIGdpdmVuIHBvaW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToidGV4dC1kZWNvcmF0aW9uIix2YWx1ZXM6W3tuYW1lOiJkYXNoZWQiLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBhIGRhc2hlZCBsaW5lIHN0eWxlLiJ9LHtuYW1lOiJkb3R0ZWQiLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBhIGRvdHRlZCBsaW5lLiJ9LHtuYW1lOiJkb3VibGUiLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBhIGRvdWJsZSBsaW5lLiJ9LHtuYW1lOiJsaW5lLXRocm91Z2giLGRlc2NyaXB0aW9uOiJFYWNoIGxpbmUgb2YgdGV4dCBoYXMgYSBsaW5lIHRocm91Z2ggdGhlIG1pZGRsZS4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlByb2R1Y2VzIG5vIGxpbmUuIn0se25hbWU6Im92ZXJsaW5lIixkZXNjcmlwdGlvbjoiRWFjaCBsaW5lIG9mIHRleHQgaGFzIGEgbGluZSBhYm92ZSBpdC4ifSx7bmFtZToic29saWQiLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBhIHNvbGlkIGxpbmUuIn0se25hbWU6InVuZGVybGluZSIsZGVzY3JpcHRpb246IkVhY2ggbGluZSBvZiB0ZXh0IGlzIHVuZGVybGluZWQuIn0se25hbWU6IndhdnkiLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBhIHdhdnkgbGluZS4ifV0sc3ludGF4OiI8J3RleHQtZGVjb3JhdGlvbi1saW5lJz4gfHwgPCd0ZXh0LWRlY29yYXRpb24tc3R5bGUnPiB8fCA8J3RleHQtZGVjb3JhdGlvbi1jb2xvcic+IHx8IDwndGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyc+IixyZWxldmFuY2U6OTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtZGVjb3JhdGlvbiJ9XSxkZXNjcmlwdGlvbjoiRGVjb3JhdGlvbnMgYXBwbGllZCB0byBmb250IHVzZWQgZm9yIGFuIGVsZW1lbnQncyB0ZXh0LiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImNvbG9yIl19LHtuYW1lOiJ0ZXh0LWRlY29yYXRpb24tY29sb3IiLGJyb3dzZXJzOlsiRTc5IiwiRkYzNiIsIlMxMi4xIiwiQzU3IiwiTzQ0Il0sc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6NTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtZGVjb3JhdGlvbi1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBjb2xvciBvZiB0ZXh0IGRlY29yYXRpb24gKHVuZGVybGluZXMgb3ZlcmxpbmVzLCBhbmQgbGluZS10aHJvdWdocykgc2V0IG9uIHRoZSBlbGVtZW50IHdpdGggdGV4dC1kZWNvcmF0aW9uLWxpbmUuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToidGV4dC1kZWNvcmF0aW9uLWxpbmUiLGJyb3dzZXJzOlsiRTc5IiwiRkYzNiIsIlMxMi4xIiwiQzU3IiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToibGluZS10aHJvdWdoIixkZXNjcmlwdGlvbjoiRWFjaCBsaW5lIG9mIHRleHQgaGFzIGEgbGluZSB0aHJvdWdoIHRoZSBtaWRkbGUuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJOZWl0aGVyIHByb2R1Y2VzIG5vciBpbmhpYml0cyB0ZXh0IGRlY29yYXRpb24uIn0se25hbWU6Im92ZXJsaW5lIixkZXNjcmlwdGlvbjoiRWFjaCBsaW5lIG9mIHRleHQgaGFzIGEgbGluZSBhYm92ZSBpdC4ifSx7bmFtZToidW5kZXJsaW5lIixkZXNjcmlwdGlvbjoiRWFjaCBsaW5lIG9mIHRleHQgaXMgdW5kZXJsaW5lZC4ifV0sc3ludGF4OiJub25lIHwgWyB1bmRlcmxpbmUgfHwgb3ZlcmxpbmUgfHwgbGluZS10aHJvdWdoIHx8IGJsaW5rIF0gfCBzcGVsbGluZy1lcnJvciB8IGdyYW1tYXItZXJyb3IiLHJlbGV2YW5jZTo1MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1kZWNvcmF0aW9uLWxpbmUifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB3aGF0IGxpbmUgZGVjb3JhdGlvbnMsIGlmIGFueSwgYXJlIGFkZGVkIHRvIHRoZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToidGV4dC1kZWNvcmF0aW9uLXN0eWxlIixicm93c2VyczpbIkU3OSIsIkZGMzYiLCJTMTIuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6ImRhc2hlZCIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgZGFzaGVkIGxpbmUgc3R5bGUuIn0se25hbWU6ImRvdHRlZCIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgZG90dGVkIGxpbmUuIn0se25hbWU6ImRvdWJsZSIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgZG91YmxlIGxpbmUuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBubyBsaW5lLiJ9LHtuYW1lOiJzb2xpZCIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgc29saWQgbGluZS4ifSx7bmFtZToid2F2eSIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgd2F2eSBsaW5lLiJ9XSxzeW50YXg6InNvbGlkIHwgZG91YmxlIHwgZG90dGVkIHwgZGFzaGVkIHwgd2F2eSIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LWRlY29yYXRpb24tc3R5bGUifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbGluZSBzdHlsZSBmb3IgdW5kZXJsaW5lLCBsaW5lLXRocm91Z2ggYW5kIG92ZXJsaW5lIHRleHQgZGVjb3JhdGlvbi4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InRleHQtaW5kZW50Iix2YWx1ZXM6W10sc3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+ICYmIGhhbmdpbmc/ICYmIGVhY2gtbGluZT8iLHJlbGV2YW5jZTo2OCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1pbmRlbnQifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgaW5kZW50YXRpb24gYXBwbGllZCB0byBsaW5lcyBvZiBpbmxpbmUgY29udGVudCBpbiBhIGJsb2NrLiBUaGUgaW5kZW50YXRpb24gb25seSBhZmZlY3RzIHRoZSBmaXJzdCBsaW5lIG9mIGlubGluZSBjb250ZW50IGluIHRoZSBibG9jayB1bmxlc3MgdGhlICdoYW5naW5nJyBrZXl3b3JkIGlzIHNwZWNpZmllZCwgaW4gd2hpY2ggY2FzZSBpdCBhZmZlY3RzIGFsbCBsaW5lcyBleGNlcHQgdGhlIGZpcnN0LiIscmVzdHJpY3Rpb25zOlsicGVyY2VudGFnZSIsImxlbmd0aCJdfSx7bmFtZToidGV4dC1qdXN0aWZ5Iixicm93c2VyczpbIkUxMiIsIkZGNTUiLCJDMzIiLCJJRTExIiwiTzE5Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBVQSBkZXRlcm1pbmVzIHRoZSBqdXN0aWZpY2F0aW9uIGFsZ29yaXRobSB0byBmb2xsb3csIGJhc2VkIG9uIGEgYmFsYW5jZSBiZXR3ZWVuIHBlcmZvcm1hbmNlIGFuZCBhZGVxdWF0ZSBwcmVzZW50YXRpb24gcXVhbGl0eS4ifSx7bmFtZToiZGlzdHJpYnV0ZSIsZGVzY3JpcHRpb246Ikp1c3RpZmljYXRpb24gcHJpbWFyaWx5IGNoYW5nZXMgc3BhY2luZyBib3RoIGF0IHdvcmQgc2VwYXJhdG9ycyBhbmQgYXQgZ3JhcGhlbWUgY2x1c3RlciBib3VuZGFyaWVzIGluIGFsbCBzY3JpcHRzIGV4Y2VwdCB0aG9zZSBpbiB0aGUgY29ubmVjdGVkIGFuZCBjdXJzaXZlIGdyb3Vwcy4gVGhpcyB2YWx1ZSBpcyBzb21ldGltZXMgdXNlZCBpbiBlLmcuIEphcGFuZXNlLCBvZnRlbiB3aXRoIHRoZSAndGV4dC1hbGlnbi1sYXN0JyBwcm9wZXJ0eS4ifSx7bmFtZToiZGlzdHJpYnV0ZS1hbGwtbGluZXMifSx7bmFtZToiaW50ZXItY2x1c3RlciIsZGVzY3JpcHRpb246Ikp1c3RpZmljYXRpb24gcHJpbWFyaWx5IGNoYW5nZXMgc3BhY2luZyBhdCB3b3JkIHNlcGFyYXRvcnMgYW5kIGF0IGdyYXBoZW1lIGNsdXN0ZXIgYm91bmRhcmllcyBpbiBjbHVzdGVyZWQgc2NyaXB0cy4gVGhpcyB2YWx1ZSBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgU291dGhlYXN0IEFzaWFuIHNjcmlwdHMgc3VjaCBhcyBUaGFpLiJ9LHtuYW1lOiJpbnRlci1pZGVvZ3JhcGgiLGRlc2NyaXB0aW9uOiJKdXN0aWZpY2F0aW9uIHByaW1hcmlseSBjaGFuZ2VzIHNwYWNpbmcgYXQgd29yZCBzZXBhcmF0b3JzIGFuZCBhdCBpbnRlci1ncmFwaGVtaWMgYm91bmRhcmllcyBpbiBzY3JpcHRzIHRoYXQgdXNlIG5vIHdvcmQgc3BhY2VzLiBUaGlzIHZhbHVlIGlzIHR5cGljYWxseSB1c2VkIGZvciBDSksgbGFuZ3VhZ2VzLiJ9LHtuYW1lOiJpbnRlci13b3JkIixkZXNjcmlwdGlvbjoiSnVzdGlmaWNhdGlvbiBwcmltYXJpbHkgY2hhbmdlcyBzcGFjaW5nIGF0IHdvcmQgc2VwYXJhdG9ycy4gVGhpcyB2YWx1ZSBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgbGFuZ3VhZ2VzIHRoYXQgc2VwYXJhdGUgd29yZHMgdXNpbmcgc3BhY2VzLCBsaWtlIEVuZ2xpc2ggb3IgKHNvbWV0aW1lcykgS29yZWFuLiJ9LHtuYW1lOiJrYXNoaWRhIixkZXNjcmlwdGlvbjoiSnVzdGlmaWNhdGlvbiBwcmltYXJpbHkgc3RyZXRjaGVzIEFyYWJpYyBhbmQgcmVsYXRlZCBzY3JpcHRzIHRocm91Z2ggdGhlIHVzZSBvZiBrYXNoaWRhIG9yIG90aGVyIGNhbGxpZ3JhcGhpYyBlbG9uZ2F0aW9uLiJ9LHtuYW1lOiJuZXdzcGFwZXIifV0sc3ludGF4OiJhdXRvIHwgaW50ZXItY2hhcmFjdGVyIHwgaW50ZXItd29yZCB8IG5vbmUiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1qdXN0aWZ5In1dLGRlc2NyaXB0aW9uOiJTZWxlY3RzIHRoZSBqdXN0aWZpY2F0aW9uIGFsZ29yaXRobSB1c2VkIHdoZW4gJ3RleHQtYWxpZ24nIGlzIHNldCB0byAnanVzdGlmeScuIFRoZSBwcm9wZXJ0eSBhcHBsaWVzIHRvIGJsb2NrIGNvbnRhaW5lcnMsIGJ1dCB0aGUgVUEgbWF5IChidXQgaXMgbm90IHJlcXVpcmVkIHRvKSBhbHNvIHN1cHBvcnQgaXQgb24gaW5saW5lIGVsZW1lbnRzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToidGV4dC1vcmllbnRhdGlvbiIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzE0IiwiQzQ4IiwiTzM1Il0sdmFsdWVzOlt7bmFtZToic2lkZXdheXMiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxNCIsIkM0OCIsIk8zNSJdLGRlc2NyaXB0aW9uOiJUaGlzIHZhbHVlIGlzIGVxdWl2YWxlbnQgdG8gJ3NpZGV3YXlzLXJpZ2h0JyBpbiAndmVydGljYWwtcmwnIHdyaXRpbmcgbW9kZSBhbmQgZXF1aXZhbGVudCB0byAnc2lkZXdheXMtbGVmdCcgaW4gJ3ZlcnRpY2FsLWxyJyB3cml0aW5nIG1vZGUuIn0se25hbWU6InNpZGV3YXlzLXJpZ2h0Iixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTQiLCJDNDgiLCJPMzUiXSxkZXNjcmlwdGlvbjoiSW4gdmVydGljYWwgd3JpdGluZyBtb2RlcywgdGhpcyBjYXVzZXMgdGV4dCB0byBiZSBzZXQgYXMgaWYgaW4gYSBob3Jpem9udGFsIGxheW91dCwgYnV0IHJvdGF0ZWQgOTDCsCBjbG9ja3dpc2UuIn0se25hbWU6InVwcmlnaHQiLGRlc2NyaXB0aW9uOiJJbiB2ZXJ0aWNhbCB3cml0aW5nIG1vZGVzLCBjaGFyYWN0ZXJzIGZyb20gaG9yaXpvbnRhbC1vbmx5IHNjcmlwdHMgYXJlIHJlbmRlcmVkIHVwcmlnaHQsIGkuZS4gaW4gdGhlaXIgc3RhbmRhcmQgaG9yaXpvbnRhbCBvcmllbnRhdGlvbi4ifV0sc3ludGF4OiJtaXhlZCB8IHVwcmlnaHQgfCBzaWRld2F5cyIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LW9yaWVudGF0aW9uIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG9yaWVudGF0aW9uIG9mIHRleHQgd2l0aGluIGEgbGluZS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InRleHQtb3ZlcmZsb3ciLHZhbHVlczpbe25hbWU6ImNsaXAiLGRlc2NyaXB0aW9uOiJDbGlwIGlubGluZSBjb250ZW50IHRoYXQgb3ZlcmZsb3dzLiBDaGFyYWN0ZXJzIG1heSBiZSBvbmx5IHBhcnRpYWxseSByZW5kZXJlZC4ifSx7bmFtZToiZWxsaXBzaXMiLGRlc2NyaXB0aW9uOiJSZW5kZXIgYW4gZWxsaXBzaXMgY2hhcmFjdGVyIChVKzIwMjYpIHRvIHJlcHJlc2VudCBjbGlwcGVkIGlubGluZSBjb250ZW50LiJ9XSxzeW50YXg6IlsgY2xpcCB8IGVsbGlwc2lzIHwgPHN0cmluZz4gXXsxLDJ9IixyZWxldmFuY2U6ODIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtb3ZlcmZsb3cifV0sZGVzY3JpcHRpb246IlRleHQgY2FuIG92ZXJmbG93IGZvciBleGFtcGxlIHdoZW4gaXQgaXMgcHJldmVudGVkIGZyb20gd3JhcHBpbmcuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwic3RyaW5nIl19LHtuYW1lOiJ0ZXh0LXJlbmRlcmluZyIsYnJvd3NlcnM6WyJFNzkiLCJGRjEiLCJTNSIsIkM0IiwiTzE1Il0sdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJnZW9tZXRyaWNQcmVjaXNpb24iLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBhZ2VudCBzaGFsbCBlbXBoYXNpemUgZ2VvbWV0cmljIHByZWNpc2lvbiBvdmVyIGxlZ2liaWxpdHkgYW5kIHJlbmRlcmluZyBzcGVlZC4ifSx7bmFtZToib3B0aW1pemVMZWdpYmlsaXR5IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgYWdlbnQgc2hhbGwgZW1waGFzaXplIGxlZ2liaWxpdHkgb3ZlciByZW5kZXJpbmcgc3BlZWQgYW5kIGdlb21ldHJpYyBwcmVjaXNpb24uIn0se25hbWU6Im9wdGltaXplU3BlZWQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBhZ2VudCBzaGFsbCBlbXBoYXNpemUgcmVuZGVyaW5nIHNwZWVkIG92ZXIgbGVnaWJpbGl0eSBhbmQgZ2VvbWV0cmljIHByZWNpc2lvbi4ifV0sc3ludGF4OiJhdXRvIHwgb3B0aW1pemVTcGVlZCB8IG9wdGltaXplTGVnaWJpbGl0eSB8IGdlb21ldHJpY1ByZWNpc2lvbiIscmVsZXZhbmNlOjcwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LXJlbmRlcmluZyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGNyZWF0b3Igb2YgU1ZHIGNvbnRlbnQgbWlnaHQgd2FudCB0byBwcm92aWRlIGEgaGludCB0byB0aGUgaW1wbGVtZW50YXRpb24gYWJvdXQgd2hhdCB0cmFkZW9mZnMgdG8gbWFrZSBhcyBpdCByZW5kZXJzIHRleHQuIFRoZSDigJh0ZXh0LXJlbmRlcmluZ+KAmSBwcm9wZXJ0eSBwcm92aWRlcyB0aGVzZSBoaW50cy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InRleHQtc2hhZG93Iix2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gc2hhZG93LiJ9XSxzeW50YXg6Im5vbmUgfCA8c2hhZG93LXQ+IyIscmVsZXZhbmNlOjc0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LXNoYWRvdyJ9XSxkZXNjcmlwdGlvbjoiRW5hYmxlcyBzaGFkb3cgZWZmZWN0cyB0byBiZSBhcHBsaWVkIHRvIHRoZSB0ZXh0IG9mIHRoZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwiY29sb3IiXX0se25hbWU6InRleHQtdHJhbnNmb3JtIix2YWx1ZXM6W3tuYW1lOiJjYXBpdGFsaXplIixkZXNjcmlwdGlvbjoiUHV0cyB0aGUgZmlyc3QgdHlwb2dyYXBoaWMgbGV0dGVyIHVuaXQgb2YgZWFjaCB3b3JkIGluIHRpdGxlY2FzZS4ifSx7bmFtZToibG93ZXJjYXNlIixkZXNjcmlwdGlvbjoiUHV0cyBhbGwgbGV0dGVycyBpbiBsb3dlcmNhc2UuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBlZmZlY3RzLiJ9LHtuYW1lOiJ1cHBlcmNhc2UiLGRlc2NyaXB0aW9uOiJQdXRzIGFsbCBsZXR0ZXJzIGluIHVwcGVyY2FzZS4ifV0sc3ludGF4OiJub25lIHwgY2FwaXRhbGl6ZSB8IHVwcGVyY2FzZSB8IGxvd2VyY2FzZSB8IGZ1bGwtd2lkdGggfCBmdWxsLXNpemUta2FuYSIscmVsZXZhbmNlOjg2LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LXRyYW5zZm9ybSJ9XSxkZXNjcmlwdGlvbjoiQ29udHJvbHMgY2FwaXRhbGl6YXRpb24gZWZmZWN0cyBvZiBhbiBlbGVtZW504oCZcyB0ZXh0LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToidGV4dC11bmRlcmxpbmUtcG9zaXRpb24iLHZhbHVlczpbe25hbWU6ImFib3ZlIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgdXNlciBhZ2VudCBtYXkgdXNlIGFueSBhbGdvcml0aG0gdG8gZGV0ZXJtaW5lIHRoZSB1bmRlcmxpbmXigJlzIHBvc2l0aW9uLiBJbiBob3Jpem9udGFsIGxpbmUgbGF5b3V0LCB0aGUgdW5kZXJsaW5lIHNob3VsZCBiZSBhbGlnbmVkIGFzIGZvciBhbHBoYWJldGljLiBJbiB2ZXJ0aWNhbCBsaW5lIGxheW91dCwgaWYgdGhlIGxhbmd1YWdlIGlzIHNldCB0byBKYXBhbmVzZSBvciBLb3JlYW4sIHRoZSB1bmRlcmxpbmUgc2hvdWxkIGJlIGFsaWduZWQgYXMgZm9yIG92ZXIuIn0se25hbWU6ImJlbG93IixkZXNjcmlwdGlvbjoiVGhlIHVuZGVybGluZSBpcyBhbGlnbmVkIHdpdGggdGhlIHVuZGVyIGVkZ2Ugb2YgdGhlIGVsZW1lbnTigJlzIGNvbnRlbnQgYm94LiJ9XSxzeW50YXg6ImF1dG8gfCBmcm9tLWZvbnQgfCBbIHVuZGVyIHx8IFsgbGVmdCB8IHJpZ2h0IF0gXSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LXVuZGVybGluZS1wb3NpdGlvbiJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgcG9zaXRpb24gb2YgYW4gdW5kZXJsaW5lIHNwZWNpZmllZCBvbiB0aGUgc2FtZSBlbGVtZW50OiBpdCBkb2VzIG5vdCBhZmZlY3QgdW5kZXJsaW5lcyBzcGVjaWZpZWQgYnkgYW5jZXN0b3IgZWxlbWVudHMuIFRoaXMgcHJvcGVydHkgaXMgdHlwaWNhbGx5IHVzZWQgaW4gdmVydGljYWwgd3JpdGluZyBjb250ZXh0cyBzdWNoIGFzIGluIEphcGFuZXNlIGRvY3VtZW50cyB3aGVyZSBpdCBvZnRlbiBkZXNpcmVkIHRvIGhhdmUgdGhlIHVuZGVybGluZSBhcHBlYXIgJ292ZXInICh0byB0aGUgcmlnaHQgb2YpIHRoZSBhZmZlY3RlZCBydW4gb2YgdGV4dCIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToidG9wIix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRm9yIG5vbi1yZXBsYWNlZCBlbGVtZW50cywgdGhlIGVmZmVjdCBvZiB0aGlzIHZhbHVlIGRlcGVuZHMgb24gd2hpY2ggb2YgcmVsYXRlZCBwcm9wZXJ0aWVzIGhhdmUgdGhlIHZhbHVlICdhdXRvJyBhcyB3ZWxsIn1dLHN5bnRheDoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBhdXRvIixyZWxldmFuY2U6OTUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RvcCJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBmYXIgYW4gYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJveCdzIHRvcCBtYXJnaW4gZWRnZSBpcyBvZmZzZXQgYmVsb3cgdGhlIHRvcCBlZGdlIG9mIHRoZSBib3gncyAnY29udGFpbmluZyBibG9jaycuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJ0b3VjaC1hY3Rpb24iLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgdXNlciBhZ2VudCBtYXkgZGV0ZXJtaW5lIGFueSBwZXJtaXR0ZWQgdG91Y2ggYmVoYXZpb3JzIGZvciB0b3VjaGVzIHRoYXQgYmVnaW4gb24gdGhlIGVsZW1lbnQuIn0se25hbWU6ImNyb3NzLXNsaWRlLXgifSx7bmFtZToiY3Jvc3Mtc2xpZGUteSJ9LHtuYW1lOiJkb3VibGUtdGFwLXpvb20ifSx7bmFtZToibWFuaXB1bGF0aW9uIixkZXNjcmlwdGlvbjoiVGhlIHVzZXIgYWdlbnQgbWF5IGNvbnNpZGVyIHRvdWNoZXMgdGhhdCBiZWdpbiBvbiB0aGUgZWxlbWVudCBvbmx5IGZvciB0aGUgcHVycG9zZXMgb2Ygc2Nyb2xsaW5nIGFuZCBjb250aW51b3VzIHpvb21pbmcuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUb3VjaGVzIHRoYXQgYmVnaW4gb24gdGhlIGVsZW1lbnQgbXVzdCBub3QgdHJpZ2dlciBkZWZhdWx0IHRvdWNoIGJlaGF2aW9ycy4ifSx7bmFtZToicGFuLXgiLGRlc2NyaXB0aW9uOiJUaGUgdXNlciBhZ2VudCBtYXkgY29uc2lkZXIgdG91Y2hlcyB0aGF0IGJlZ2luIG9uIHRoZSBlbGVtZW50IG9ubHkgZm9yIHRoZSBwdXJwb3NlcyBvZiBob3Jpem9udGFsbHkgc2Nyb2xsaW5nIHRoZSBlbGVtZW504oCZcyBuZWFyZXN0IGFuY2VzdG9yIHdpdGggaG9yaXpvbnRhbGx5IHNjcm9sbGFibGUgY29udGVudC4ifSx7bmFtZToicGFuLXkiLGRlc2NyaXB0aW9uOiJUaGUgdXNlciBhZ2VudCBtYXkgY29uc2lkZXIgdG91Y2hlcyB0aGF0IGJlZ2luIG9uIHRoZSBlbGVtZW50IG9ubHkgZm9yIHRoZSBwdXJwb3NlcyBvZiB2ZXJ0aWNhbGx5IHNjcm9sbGluZyB0aGUgZWxlbWVudOKAmXMgbmVhcmVzdCBhbmNlc3RvciB3aXRoIHZlcnRpY2FsbHkgc2Nyb2xsYWJsZSBjb250ZW50LiJ9LHtuYW1lOiJwaW5jaC16b29tIn1dLHN5bnRheDoiYXV0byB8IG5vbmUgfCBbIFsgcGFuLXggfCBwYW4tbGVmdCB8IHBhbi1yaWdodCBdIHx8IFsgcGFuLXkgfCBwYW4tdXAgfCBwYW4tZG93biBdIHx8IHBpbmNoLXpvb20gXSB8IG1hbmlwdWxhdGlvbiIscmVsZXZhbmNlOjY3LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90b3VjaC1hY3Rpb24ifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgd2hldGhlciB0b3VjaCBpbnB1dCBtYXkgdHJpZ2dlciBkZWZhdWx0IGJlaGF2aW9yIHN1cHBsaWVkIGJ5IHVzZXIgYWdlbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ0cmFuc2Zvcm0iLHZhbHVlczpbe25hbWU6Im1hdHJpeCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgMkQgdHJhbnNmb3JtYXRpb24gaW4gdGhlIGZvcm0gb2YgYSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggb2Ygc2l4IHZhbHVlcy4gbWF0cml4KGEsYixjLGQsZSxmKSBpcyBlcXVpdmFsZW50IHRvIGFwcGx5aW5nIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggW2EgYiBjIGQgZSBmXSJ9LHtuYW1lOiJtYXRyaXgzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgM0QgdHJhbnNmb3JtYXRpb24gYXMgYSA0eDQgaG9tb2dlbmVvdXMgbWF0cml4IG9mIDE2IHZhbHVlcyBpbiBjb2x1bW4tbWFqb3Igb3JkZXIuIn0se25hbWU6Im5vbmUifSx7bmFtZToicGVyc3BlY3RpdmUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHBlcnNwZWN0aXZlIHByb2plY3Rpb24gbWF0cml4LiJ9LHtuYW1lOiJyb3RhdGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHJvdGF0aW9uIGJ5IHRoZSBhbmdsZSBzcGVjaWZpZWQgaW4gdGhlIHBhcmFtZXRlciBhYm91dCB0aGUgb3JpZ2luIG9mIHRoZSBlbGVtZW50LCBhcyBkZWZpbmVkIGJ5IHRoZSB0cmFuc2Zvcm0tb3JpZ2luIHByb3BlcnR5LiJ9LHtuYW1lOiJyb3RhdGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIDNEIHJvdGF0aW9uIGJ5IHRoZSBhbmdsZSBzcGVjaWZpZWQgaW4gbGFzdCBwYXJhbWV0ZXIgYWJvdXQgdGhlIFt4LHksel0gZGlyZWN0aW9uIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIGZpcnN0IDMgcGFyYW1ldGVycy4ifSx7bmFtZToicm90YXRlWCgnYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFggYXhpcy4ifSx7bmFtZToicm90YXRlWSgnYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFkgYXhpcy4ifSx7bmFtZToicm90YXRlWignYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFogYXhpcy4ifSx7bmFtZToic2NhbGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHNjYWxlIG9wZXJhdGlvbiBieSB0aGUgW3N4LHN5XSBzY2FsaW5nIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIDIgcGFyYW1ldGVycy4gSWYgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgbm90IHByb3ZpZGVkLCBpdCBpcyB0YWtlcyBhIHZhbHVlIGVxdWFsIHRvIHRoZSBmaXJzdC4ifSx7bmFtZToic2NhbGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgM0Qgc2NhbGUgb3BlcmF0aW9uIGJ5IHRoZSBbc3gsc3ksc3pdIHNjYWxpbmcgdmVjdG9yIGRlc2NyaWJlZCBieSB0aGUgMyBwYXJhbWV0ZXJzLiJ9LHtuYW1lOiJzY2FsZVgoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgW3N4LDFdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeCBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJzY2FsZVkoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgW3N5LDFdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeSBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJzY2FsZVooKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgWzEsMSxzel0gc2NhbGluZyB2ZWN0b3IsIHdoZXJlIHN6IGlzIGdpdmVuIGFzIHRoZSBwYXJhbWV0ZXIuIn0se25hbWU6InNrZXcoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNrZXcgdHJhbnNmb3JtYXRpb24gYWxvbmcgdGhlIFggYW5kIFkgYXhlcy4gVGhlIGZpcnN0IGFuZ2xlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHNrZXcgb24gdGhlIFggYXhpcy4gVGhlIHNlY29uZCBhbmdsZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBza2V3IG9uIHRoZSBZIGF4aXMuIElmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIG5vdCBnaXZlbiB0aGVuIGEgdmFsdWUgb2YgMCBpcyB1c2VkIGZvciB0aGUgWSBhbmdsZSAoaWU6IG5vIHNrZXcgb24gdGhlIFkgYXhpcykuIn0se25hbWU6InNrZXdYKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBza2V3IHRyYW5zZm9ybWF0aW9uIGFsb25nIHRoZSBYIGF4aXMgYnkgdGhlIGdpdmVuIGFuZ2xlLiJ9LHtuYW1lOiJza2V3WSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2tldyB0cmFuc2Zvcm1hdGlvbiBhbG9uZyB0aGUgWSBheGlzIGJ5IHRoZSBnaXZlbiBhbmdsZS4ifSx7bmFtZToidHJhbnNsYXRlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCB0cmFuc2xhdGlvbiBieSB0aGUgdmVjdG9yIFt0eCwgdHldLCB3aGVyZSB0eCBpcyB0aGUgZmlyc3QgdHJhbnNsYXRpb24tdmFsdWUgcGFyYW1ldGVyIGFuZCB0eSBpcyB0aGUgb3B0aW9uYWwgc2Vjb25kIHRyYW5zbGF0aW9uLXZhbHVlIHBhcmFtZXRlci4ifSx7bmFtZToidHJhbnNsYXRlM2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDNEIHRyYW5zbGF0aW9uIGJ5IHRoZSB2ZWN0b3IgW3R4LHR5LHR6XSwgd2l0aCB0eCwgdHkgYW5kIHR6IGJlaW5nIHRoZSBmaXJzdCwgc2Vjb25kIGFuZCB0aGlyZCB0cmFuc2xhdGlvbi12YWx1ZSBwYXJhbWV0ZXJzIHJlc3BlY3RpdmVseS4ifSx7bmFtZToidHJhbnNsYXRlWCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgdHJhbnNsYXRpb24gYnkgdGhlIGdpdmVuIGFtb3VudCBpbiB0aGUgWCBkaXJlY3Rpb24uIn0se25hbWU6InRyYW5zbGF0ZVkoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHRyYW5zbGF0aW9uIGJ5IHRoZSBnaXZlbiBhbW91bnQgaW4gdGhlIFkgZGlyZWN0aW9uLiJ9LHtuYW1lOiJ0cmFuc2xhdGVaKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSB0cmFuc2xhdGlvbiBieSB0aGUgZ2l2ZW4gYW1vdW50IGluIHRoZSBaIGRpcmVjdGlvbi4gTm90ZSB0aGF0IHBlcmNlbnRhZ2UgdmFsdWVzIGFyZSBub3QgYWxsb3dlZCBpbiB0aGUgdHJhbnNsYXRlWiB0cmFuc2xhdGlvbi12YWx1ZSwgYW5kIGlmIHByZXNlbnQgYXJlIGV2YWx1YXRlZCBhcyAwLiJ9XSxzeW50YXg6Im5vbmUgfCA8dHJhbnNmb3JtLWxpc3Q+IixyZWxldmFuY2U6OTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RyYW5zZm9ybSJ9XSxkZXNjcmlwdGlvbjoiQSB0d28tZGltZW5zaW9uYWwgdHJhbnNmb3JtYXRpb24gaXMgYXBwbGllZCB0byBhbiBlbGVtZW50IHRocm91Z2ggdGhlICd0cmFuc2Zvcm0nIHByb3BlcnR5LiBUaGlzIHByb3BlcnR5IGNvbnRhaW5zIGEgbGlzdCBvZiB0cmFuc2Zvcm0gZnVuY3Rpb25zIHNpbWlsYXIgdG8gdGhvc2UgYWxsb3dlZCBieSBTVkcuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ0cmFuc2Zvcm0tb3JpZ2luIixzeW50YXg6IlsgPGxlbmd0aC1wZXJjZW50YWdlPiB8IGxlZnQgfCBjZW50ZXIgfCByaWdodCB8IHRvcCB8IGJvdHRvbSBdIHwgWyBbIDxsZW5ndGgtcGVyY2VudGFnZT4gfCBsZWZ0IHwgY2VudGVyIHwgcmlnaHQgXSAmJiBbIDxsZW5ndGgtcGVyY2VudGFnZT4gfCB0b3AgfCBjZW50ZXIgfCBib3R0b20gXSBdIDxsZW5ndGg+PyIscmVsZXZhbmNlOjc3LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90cmFuc2Zvcm0tb3JpZ2luIn1dLGRlc2NyaXB0aW9uOiJFc3RhYmxpc2hlcyB0aGUgb3JpZ2luIG9mIHRyYW5zZm9ybWF0aW9uIGZvciBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsicG9zaXRpb24iLCJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJ0cmFuc2Zvcm0tc3R5bGUiLGJyb3dzZXJzOlsiRTEyIiwiRkYxNiIsIlM5IiwiQzM2IiwiTzIzIl0sdmFsdWVzOlt7bmFtZToiZmxhdCIsZGVzY3JpcHRpb246IkFsbCBjaGlsZHJlbiBvZiB0aGlzIGVsZW1lbnQgYXJlIHJlbmRlcmVkIGZsYXR0ZW5lZCBpbnRvIHRoZSAyRCBwbGFuZSBvZiB0aGUgZWxlbWVudC4ifSx7bmFtZToicHJlc2VydmUtM2QiLGJyb3dzZXJzOlsiRTEyIiwiRkYxNiIsIlM5IiwiQzM2IiwiTzIzIl0sZGVzY3JpcHRpb246IkZsYXR0ZW5pbmcgaXMgbm90IHBlcmZvcm1lZCwgc28gY2hpbGRyZW4gbWFpbnRhaW4gdGhlaXIgcG9zaXRpb24gaW4gM0Qgc3BhY2UuIn1dLHN5bnRheDoiZmxhdCB8IHByZXNlcnZlLTNkIixyZWxldmFuY2U6NTUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RyYW5zZm9ybS1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBob3cgbmVzdGVkIGVsZW1lbnRzIGFyZSByZW5kZXJlZCBpbiAzRCBzcGFjZS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InRyYW5zaXRpb24iLHZhbHVlczpbe25hbWU6ImFsbCIsZGVzY3JpcHRpb246IkV2ZXJ5IHByb3BlcnR5IHRoYXQgaXMgYWJsZSB0byB1bmRlcmdvIGEgdHJhbnNpdGlvbiB3aWxsIGRvIHNvLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gcHJvcGVydHkgd2lsbCB0cmFuc2l0aW9uLiJ9XSxzeW50YXg6IjxzaW5nbGUtdHJhbnNpdGlvbj4jIixyZWxldmFuY2U6ODgscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RyYW5zaXRpb24ifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBjb21iaW5lcyBmb3VyIG9mIHRoZSB0cmFuc2l0aW9uIHByb3BlcnRpZXMgaW50byBhIHNpbmdsZSBwcm9wZXJ0eS4iLHJlc3RyaWN0aW9uczpbInRpbWUiLCJwcm9wZXJ0eSIsInRpbWluZy1mdW5jdGlvbiIsImVudW0iXX0se25hbWU6InRyYW5zaXRpb24tZGVsYXkiLHN5bnRheDoiPHRpbWU+IyIscmVsZXZhbmNlOjY0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90cmFuc2l0aW9uLWRlbGF5In1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZW4gdGhlIHRyYW5zaXRpb24gd2lsbCBzdGFydC4gSXQgYWxsb3dzIGEgdHJhbnNpdGlvbiB0byBiZWdpbiBleGVjdXRpb24gc29tZSBwZXJpb2Qgb2YgdGltZSBmcm9tIHdoZW4gaXQgaXMgYXBwbGllZC4iLHJlc3RyaWN0aW9uczpbInRpbWUiXX0se25hbWU6InRyYW5zaXRpb24tZHVyYXRpb24iLHN5bnRheDoiPHRpbWU+IyIscmVsZXZhbmNlOjY0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90cmFuc2l0aW9uLWR1cmF0aW9uIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGxvbmcgdGhlIHRyYW5zaXRpb24gZnJvbSB0aGUgb2xkIHZhbHVlIHRvIHRoZSBuZXcgdmFsdWUgc2hvdWxkIHRha2UuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiJ0cmFuc2l0aW9uLXByb3BlcnR5Iix2YWx1ZXM6W3tuYW1lOiJhbGwiLGRlc2NyaXB0aW9uOiJFdmVyeSBwcm9wZXJ0eSB0aGF0IGlzIGFibGUgdG8gdW5kZXJnbyBhIHRyYW5zaXRpb24gd2lsbCBkbyBzby4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHByb3BlcnR5IHdpbGwgdHJhbnNpdGlvbi4ifV0sc3ludGF4OiJub25lIHwgPHNpbmdsZS10cmFuc2l0aW9uLXByb3BlcnR5PiMiLHJlbGV2YW5jZTo2NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdHJhbnNpdGlvbi1wcm9wZXJ0eSJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBDU1MgcHJvcGVydHkgdG8gd2hpY2ggdGhlIHRyYW5zaXRpb24gaXMgYXBwbGllZC4iLHJlc3RyaWN0aW9uczpbInByb3BlcnR5Il19LHtuYW1lOiJ0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiIsc3ludGF4OiI8ZWFzaW5nLWZ1bmN0aW9uPiMiLHJlbGV2YW5jZTo2NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24ifV0sZGVzY3JpcHRpb246IkRlc2NyaWJlcyBob3cgdGhlIGludGVybWVkaWF0ZSB2YWx1ZXMgdXNlZCBkdXJpbmcgYSB0cmFuc2l0aW9uIHdpbGwgYmUgY2FsY3VsYXRlZC4iLHJlc3RyaWN0aW9uczpbInRpbWluZy1mdW5jdGlvbiJdfSx7bmFtZToidW5pY29kZS1iaWRpIix2YWx1ZXM6W3tuYW1lOiJiaWRpLW92ZXJyaWRlIixkZXNjcmlwdGlvbjoiSW5zaWRlIHRoZSBlbGVtZW50LCByZW9yZGVyaW5nIGlzIHN0cmljdGx5IGluIHNlcXVlbmNlIGFjY29yZGluZyB0byB0aGUgJ2RpcmVjdGlvbicgcHJvcGVydHk7IHRoZSBpbXBsaWNpdCBwYXJ0IG9mIHRoZSBiaWRpcmVjdGlvbmFsIGFsZ29yaXRobSBpcyBpZ25vcmVkLiJ9LHtuYW1lOiJlbWJlZCIsZGVzY3JpcHRpb246IklmIHRoZSBlbGVtZW50IGlzIGlubGluZS1sZXZlbCwgdGhpcyB2YWx1ZSBvcGVucyBhbiBhZGRpdGlvbmFsIGxldmVsIG9mIGVtYmVkZGluZyB3aXRoIHJlc3BlY3QgdG8gdGhlIGJpZGlyZWN0aW9uYWwgYWxnb3JpdGhtLiBUaGUgZGlyZWN0aW9uIG9mIHRoaXMgZW1iZWRkaW5nIGxldmVsIGlzIGdpdmVuIGJ5IHRoZSAnZGlyZWN0aW9uJyBwcm9wZXJ0eS4ifSx7bmFtZToiaXNvbGF0ZSIsZGVzY3JpcHRpb246IlRoZSBjb250ZW50cyBvZiB0aGUgZWxlbWVudCBhcmUgY29uc2lkZXJlZCB0byBiZSBpbnNpZGUgYSBzZXBhcmF0ZSwgaW5kZXBlbmRlbnQgcGFyYWdyYXBoLiJ9LHtuYW1lOiJpc29sYXRlLW92ZXJyaWRlIixkZXNjcmlwdGlvbjoiVGhpcyBjb21iaW5lcyB0aGUgaXNvbGF0aW9uIGJlaGF2aW9yIG9mICdpc29sYXRlJyB3aXRoIHRoZSBkaXJlY3Rpb25hbCBvdmVycmlkZSBiZWhhdmlvciBvZiAnYmlkaS1vdmVycmlkZScifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgZG9lcyBub3Qgb3BlbiBhbiBhZGRpdGlvbmFsIGxldmVsIG9mIGVtYmVkZGluZyB3aXRoIHJlc3BlY3QgdG8gdGhlIGJpZGlyZWN0aW9uYWwgYWxnb3JpdGhtLiBGb3IgaW5saW5lLWxldmVsIGVsZW1lbnRzLCBpbXBsaWNpdCByZW9yZGVyaW5nIHdvcmtzIGFjcm9zcyBlbGVtZW50IGJvdW5kYXJpZXMuIn0se25hbWU6InBsYWludGV4dCIsZGVzY3JpcHRpb246IkZvciB0aGUgcHVycG9zZXMgb2YgdGhlIFVuaWNvZGUgYmlkaXJlY3Rpb25hbCBhbGdvcml0aG0sIHRoZSBiYXNlIGRpcmVjdGlvbmFsaXR5IG9mIGVhY2ggYmlkaSBwYXJhZ3JhcGggZm9yIHdoaWNoIHRoZSBlbGVtZW50IGZvcm1zIHRoZSBjb250YWluaW5nIGJsb2NrIGlzIGRldGVybWluZWQgbm90IGJ5IHRoZSBlbGVtZW50J3MgY29tcHV0ZWQgJ2RpcmVjdGlvbicuIn1dLHN5bnRheDoibm9ybWFsIHwgZW1iZWQgfCBpc29sYXRlIHwgYmlkaS1vdmVycmlkZSB8IGlzb2xhdGUtb3ZlcnJpZGUgfCBwbGFpbnRleHQiLHJlbGV2YW5jZTo1NyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdW5pY29kZS1iaWRpIn1dLGRlc2NyaXB0aW9uOiJUaGUgbGV2ZWwgb2YgZW1iZWRkaW5nIHdpdGggcmVzcGVjdCB0byB0aGUgYmlkaXJlY3Rpb25hbCBhbGdvcml0aG0uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ1bmljb2RlLXJhbmdlIix2YWx1ZXM6W3tuYW1lOiJVKzI2IixkZXNjcmlwdGlvbjoiQW1wZXJzYW5kLiJ9LHtuYW1lOiJVKzIwLTI0RiwgVSsyQjAtMkZGLCBVKzM3MC00RkYsIFUrMUUwMC0xRUZGLCBVKzIwMDAtMjBDRiwgVSsyMTAwLTIzRkYsIFUrMjUwMC0yNkZGLCBVK0UwMDAtRjhGRiwgVStGQjAw4oCTRkI0RiIsZGVzY3JpcHRpb246IldHTDQgY2hhcmFjdGVyIHNldCAoUGFuLUV1cm9wZWFuKS4ifSx7bmFtZToiVSsyMC0xN0YsIFUrMkIwLTJGRiwgVSsyMDAwLTIwNkYsIFUrMjBBMC0yMENGLCBVKzIxMDAtMjFGRiwgVSsyNjAwLTI2RkYiLGRlc2NyaXB0aW9uOiJUaGUgTXVsdGlsaW5ndWFsIEV1cm9wZWFuIFN1YnNldCBOby4gMS4gTGF0aW4uIENvdmVycyB+NDQgbGFuZ3VhZ2VzLiJ9LHtuYW1lOiJVKzIwLTJGRiwgVSszNzAtNEZGLCBVKzFFMDAtMjBDRiwgVSsyMTAwLTIzRkYsIFUrMjUwMC0yNkZGLCBVK0ZCMDAtRkI0RiwgVStGRkYwLUZGRkQiLGRlc2NyaXB0aW9uOiJUaGUgTXVsdGlsaW5ndWFsIEV1cm9wZWFuIFN1YnNldCBOby4gMi4gTGF0aW4sIEdyZWVrLCBhbmQgQ3lyaWxsaWMuIENvdmVycyB+MTI4IGxhbmd1YWdlLiJ9LHtuYW1lOiJVKzIwLTRGRiwgVSs1MzAtNThGLCBVKzEwRDAtMTBGRiwgVSsxRTAwLTIzRkYsIFUrMjQ0MC0yNDVGLCBVKzI1MDAtMjZGRiwgVStGQjAwLUZCNEYsIFUrRkUyMC1GRTJGLCBVK0ZGRjAtRkZGRCIsZGVzY3JpcHRpb246IlRoZSBNdWx0aWxpbmd1YWwgRXVyb3BlYW4gU3Vic2V0IE5vLiAzLiBDb3ZlcnMgYWxsIGNoYXJhY3RlcnMgYmVsb25naW5nIHRvIEV1cm9wZWFuIHNjcmlwdHMuIn0se25hbWU6IlUrMDAtN0YiLGRlc2NyaXB0aW9uOiJCYXNpYyBMYXRpbiAoQVNDSUkpLiJ9LHtuYW1lOiJVKzgwLUZGIixkZXNjcmlwdGlvbjoiTGF0aW4tMSBTdXBwbGVtZW50LiBBY2NlbnRlZCBjaGFyYWN0ZXJzIGZvciBXZXN0ZXJuIEV1cm9wZWFuIGxhbmd1YWdlcywgY29tbW9uIHB1bmN0dWF0aW9uIGNoYXJhY3RlcnMsIG11bHRpcGxpY2F0aW9uIGFuZCBkaXZpc2lvbiBzaWducy4ifSx7bmFtZToiVSsxMDAtMTdGIixkZXNjcmlwdGlvbjoiTGF0aW4gRXh0ZW5kZWQtQS4gQWNjZW50ZWQgY2hhcmFjdGVycyBmb3IgZm9yIEN6ZWNoLCBEdXRjaCwgUG9saXNoLCBhbmQgVHVya2lzaC4ifSx7bmFtZToiVSsxODAtMjRGIixkZXNjcmlwdGlvbjoiTGF0aW4gRXh0ZW5kZWQtQi4gQ3JvYXRpYW4sIFNsb3ZlbmlhbiwgUm9tYW5pYW4sIE5vbi1FdXJvcGVhbiBhbmQgaGlzdG9yaWMgbGF0aW4sIEtob2lzYW4sIFBpbnlpbiwgTGl2b25pYW4sIFNpbm9sb2d5LiJ9LHtuYW1lOiJVKzFFMDAtMUVGRiIsZGVzY3JpcHRpb246IkxhdGluIEV4dGVuZGVkIEFkZGl0aW9uYWwuIFZpZXRuYW1lc2UsIEdlcm1hbiBjYXB0aWFsIHNoYXJwIHMsIE1lZGlldmFsaXN0LCBMYXRpbiBnZW5lcmFsIHVzZS4ifSx7bmFtZToiVSsyNTAtMkFGIixkZXNjcmlwdGlvbjoiSW50ZXJuYXRpb25hbCBQaG9uZXRpYyBBbHBoYWJldCBFeHRlbnNpb25zLiJ9LHtuYW1lOiJVKzM3MC0zRkYiLGRlc2NyaXB0aW9uOiJHcmVlayBhbmQgQ29wdGljLiJ9LHtuYW1lOiJVKzFGMDAtMUZGRiIsZGVzY3JpcHRpb246IkdyZWVrIEV4dGVuZGVkLiBBY2NlbnRlZCBjaGFyYWN0ZXJzIGZvciBwb2x5dG9uaWMgR3JlZWsuIn0se25hbWU6IlUrNDAwLTRGRiIsZGVzY3JpcHRpb246IkN5cmlsbGljLiJ9LHtuYW1lOiJVKzUwMC01MkYiLGRlc2NyaXB0aW9uOiJDeXJpbGxpYyBTdXBwbGVtZW50LiBFeHRyYSBsZXR0ZXJzIGZvciBLb21pLCBLaGFudHksIENodWtjaGksIE1vcmR2aW4sIEt1cmRpc2gsIEFsZXV0LCBDaHV2YXNoLCBBYmtoYXosIEF6ZXJiYWlqYW5pLCBhbmQgT3Jvay4ifSx7bmFtZToiVSswMC01MkYsIFUrMUUwMC0xRkZGLCBVKzIyMDDigJMyMkZGIixkZXNjcmlwdGlvbjoiTGF0aW4sIEdyZWVrLCBDeXJpbGxpYywgc29tZSBwdW5jdHVhdGlvbiBhbmQgc3ltYm9scy4ifSx7bmFtZToiVSs1MzDigJM1OEYiLGRlc2NyaXB0aW9uOiJBcm1lbmlhbi4ifSx7bmFtZToiVSs1OTDigJM1RkYiLGRlc2NyaXB0aW9uOiJIZWJyZXcuIn0se25hbWU6IlUrNjAw4oCTNkZGIixkZXNjcmlwdGlvbjoiQXJhYmljLiJ9LHtuYW1lOiJVKzc1MOKAkzc3RiIsZGVzY3JpcHRpb246IkFyYWJpYyBTdXBwbGVtZW50LiBBZGRpdGlvbmFsIGxldHRlcnMgZm9yIEFmcmljYW4gbGFuZ3VhZ2VzLCBLaG93YXIsIFRvcndhbGksIEJ1cnVzaGFza2ksIGFuZCBlYXJseSBQZXJzaWFuLiJ9LHtuYW1lOiJVKzhBMOKAkzhGRiIsZGVzY3JpcHRpb246IkFyYWJpYyBFeHRlbmRlZC1BLiBBZGRpdGlvbmFsIGxldHRlcnMgZm9yIEFmcmljYW4gbGFuZ3VhZ2VzLCBFdXJvcGVhbiBhbmQgQ2VudHJhbCBBc2lhbiBsYW5ndWFnZXMsIFJvaGluZ3lhLCBUYW1hemlnaHQsIEFyd2ksIGFuZCBLb3JhbmljIGFubm90YXRpb24gc2lnbnMuIn0se25hbWU6IlUrNzAw4oCTNzRGIixkZXNjcmlwdGlvbjoiU3lyaWFjLiJ9LHtuYW1lOiJVKzkwMOKAkzk3RiIsZGVzY3JpcHRpb246IkRldmFuYWdhcmkuIn0se25hbWU6IlUrOTgw4oCTOUZGIixkZXNjcmlwdGlvbjoiQmVuZ2FsaS4ifSx7bmFtZToiVStBMDDigJNBN0YiLGRlc2NyaXB0aW9uOiJHdXJtdWtoaS4ifSx7bmFtZToiVStBODDigJNBRkYiLGRlc2NyaXB0aW9uOiJHdWphcmF0aS4ifSx7bmFtZToiVStCMDDigJNCN0YiLGRlc2NyaXB0aW9uOiJPcml5YS4ifSx7bmFtZToiVStCODDigJNCRkYiLGRlc2NyaXB0aW9uOiJUYW1pbC4ifSx7bmFtZToiVStDMDDigJNDN0YiLGRlc2NyaXB0aW9uOiJUZWx1Z3UuIn0se25hbWU6IlUrQzgw4oCTQ0ZGIixkZXNjcmlwdGlvbjoiS2FubmFkYS4ifSx7bmFtZToiVStEMDDigJNEN0YiLGRlc2NyaXB0aW9uOiJNYWxheWFsYW0uIn0se25hbWU6IlUrRDgw4oCTREZGIixkZXNjcmlwdGlvbjoiU2luaGFsYS4ifSx7bmFtZToiVSsxMThBMOKAkzExOEZGIixkZXNjcmlwdGlvbjoiV2FyYW5nIENpdGkuIn0se25hbWU6IlUrRTAw4oCTRTdGIixkZXNjcmlwdGlvbjoiVGhhaS4ifSx7bmFtZToiVSsxQTIw4oCTMUFBRiIsZGVzY3JpcHRpb246IlRhaSBUaGFtLiJ9LHtuYW1lOiJVK0FBODDigJNBQURGIixkZXNjcmlwdGlvbjoiVGFpIFZpZXQuIn0se25hbWU6IlUrRTgw4oCTRUZGIixkZXNjcmlwdGlvbjoiTGFvLiJ9LHtuYW1lOiJVK0YwMOKAk0ZGRiIsZGVzY3JpcHRpb246IlRpYmV0YW4uIn0se25hbWU6IlUrMTAwMOKAkzEwOUYiLGRlc2NyaXB0aW9uOiJNeWFubWFyIChCdXJtZXNlKS4ifSx7bmFtZToiVSsxMEEw4oCTMTBGRiIsZGVzY3JpcHRpb246Ikdlb3JnaWFuLiJ9LHtuYW1lOiJVKzEyMDDigJMxMzdGIixkZXNjcmlwdGlvbjoiRXRoaW9waWMuIn0se25hbWU6IlUrMTM4MOKAkzEzOUYiLGRlc2NyaXB0aW9uOiJFdGhpb3BpYyBTdXBwbGVtZW50LiBFeHRyYSBTeWxsYWJsZXMgZm9yIFNlYmF0YmVpdCwgYW5kIFRvbmFsIG1hcmtzIn0se25hbWU6IlUrMkQ4MOKAkzJEREYiLGRlc2NyaXB0aW9uOiJFdGhpb3BpYyBFeHRlbmRlZC4gRXh0cmEgU3lsbGFibGVzIGZvciBNZSdlbiwgQmxpbiwgYW5kIFNlYmF0YmVpdC4ifSx7bmFtZToiVStBQjAw4oCTQUIyRiIsZGVzY3JpcHRpb246IkV0aGlvcGljIEV4dGVuZGVkLUEuIEV4dHJhIGNoYXJhY3RlcnMgZm9yIEdhbW8tR29mYS1EYXdybywgQmFza2V0bywgYW5kIEd1bXV6LiJ9LHtuYW1lOiJVKzE3ODDigJMxN0ZGIixkZXNjcmlwdGlvbjoiS2htZXIuIn0se25hbWU6IlUrMTgwMOKAkzE4QUYiLGRlc2NyaXB0aW9uOiJNb25nb2xpYW4uIn0se25hbWU6IlUrMUI4MOKAkzFCQkYiLGRlc2NyaXB0aW9uOiJTdW5kYW5lc2UuIn0se25hbWU6IlUrMUNDMOKAkzFDQ0YiLGRlc2NyaXB0aW9uOiJTdW5kYW5lc2UgU3VwcGxlbWVudC4gUHVuY3R1YXRpb24uIn0se25hbWU6IlUrNEUwMOKAkzlGRDUiLGRlc2NyaXB0aW9uOiJDSksgKENoaW5lc2UsIEphcGFuZXNlLCBLb3JlYW4pIFVuaWZpZWQgSWRlb2dyYXBocy4gTW9zdCBjb21tb24gaWRlb2dyYXBocyBmb3IgbW9kZXJuIENoaW5lc2UgYW5kIEphcGFuZXNlLiJ9LHtuYW1lOiJVKzM0MDDigJM0REI1IixkZXNjcmlwdGlvbjoiQ0pLIFVuaWZpZWQgSWRlb2dyYXBocyBFeHRlbnNpb24gQS4gUmFyZSBpZGVvZ3JhcGhzLiJ9LHtuYW1lOiJVKzJGMDDigJMyRkRGIixkZXNjcmlwdGlvbjoiS2FuZ3hpIFJhZGljYWxzLiJ9LHtuYW1lOiJVKzJFODDigJMyRUZGIixkZXNjcmlwdGlvbjoiQ0pLIFJhZGljYWxzIFN1cHBsZW1lbnQuIEFsdGVybmF0aXZlIGZvcm1zIG9mIEthbmd4aSBSYWRpY2Fscy4ifSx7bmFtZToiVSsxMTAw4oCTMTFGRiIsZGVzY3JpcHRpb246Ikhhbmd1bCBKYW1vLiJ9LHtuYW1lOiJVK0FDMDDigJNEN0FGIixkZXNjcmlwdGlvbjoiSGFuZ3VsIFN5bGxhYmxlcy4ifSx7bmFtZToiVSszMDQw4oCTMzA5RiIsZGVzY3JpcHRpb246IkhpcmFnYW5hLiJ9LHtuYW1lOiJVKzMwQTDigJMzMEZGIixkZXNjcmlwdGlvbjoiS2F0YWthbmEuIn0se25hbWU6IlUrQTUsIFUrNEUwMC05RkZGLCBVKzMwPz8sIFUrRkYwMC1GRjlGIixkZXNjcmlwdGlvbjoiSmFwYW5lc2UgS2FuamksIEhpcmFnYW5hIGFuZCBLYXRha2FuYSBjaGFyYWN0ZXJzIHBsdXMgWWVuL1l1YW4gc3ltYm9sLiJ9LHtuYW1lOiJVK0E0RDDigJNBNEZGIixkZXNjcmlwdGlvbjoiTGlzdS4ifSx7bmFtZToiVStBMDAw4oCTQTQ4RiIsZGVzY3JpcHRpb246IllpIFN5bGxhYmxlcy4ifSx7bmFtZToiVStBNDkw4oCTQTRDRiIsZGVzY3JpcHRpb246IllpIFJhZGljYWxzLiJ9LHtuYW1lOiJVKzIwMDAtMjA2RiIsZGVzY3JpcHRpb246IkdlbmVyYWwgUHVuY3R1YXRpb24uIn0se25hbWU6IlUrMzAwMOKAkzMwM0YiLGRlc2NyaXB0aW9uOiJDSksgU3ltYm9scyBhbmQgUHVuY3R1YXRpb24uIn0se25hbWU6IlUrMjA3MOKAkzIwOUYiLGRlc2NyaXB0aW9uOiJTdXBlcnNjcmlwdHMgYW5kIFN1YnNjcmlwdHMuIn0se25hbWU6IlUrMjBBMOKAkzIwQ0YiLGRlc2NyaXB0aW9uOiJDdXJyZW5jeSBTeW1ib2xzLiJ9LHtuYW1lOiJVKzIxMDDigJMyMTRGIixkZXNjcmlwdGlvbjoiTGV0dGVybGlrZSBTeW1ib2xzLiJ9LHtuYW1lOiJVKzIxNTDigJMyMThGIixkZXNjcmlwdGlvbjoiTnVtYmVyIEZvcm1zLiJ9LHtuYW1lOiJVKzIxOTDigJMyMUZGIixkZXNjcmlwdGlvbjoiQXJyb3dzLiJ9LHtuYW1lOiJVKzIyMDDigJMyMkZGIixkZXNjcmlwdGlvbjoiTWF0aGVtYXRpY2FsIE9wZXJhdG9ycy4ifSx7bmFtZToiVSsyMzAw4oCTMjNGRiIsZGVzY3JpcHRpb246Ik1pc2NlbGxhbmVvdXMgVGVjaG5pY2FsLiJ9LHtuYW1lOiJVK0UwMDAtRjhGRiIsZGVzY3JpcHRpb246IlByaXZhdGUgVXNlIEFyZWEuIn0se25hbWU6IlUrRkIwMOKAk0ZCNEYiLGRlc2NyaXB0aW9uOiJBbHBoYWJldGljIFByZXNlbnRhdGlvbiBGb3Jtcy4gTGlnYXR1cmVzIGZvciBsYXRpbiwgQXJtZW5pYW4sIGFuZCBIZWJyZXcuIn0se25hbWU6IlUrRkI1MOKAk0ZERkYiLGRlc2NyaXB0aW9uOiJBcmFiaWMgUHJlc2VudGF0aW9uIEZvcm1zLUEuIENvbnRleHR1YWwgZm9ybXMgLyBsaWdhdHVyZXMgZm9yIFBlcnNpYW4sIFVyZHUsIFNpbmRoaSwgQ2VudHJhbCBBc2lhbiBsYW5ndWFnZXMsIGV0YywgQXJhYmljIHBlZGFnb2dpY2FsIHN5bWJvbHMsIHdvcmQgbGlnYXR1cmVzLiJ9LHtuYW1lOiJVKzFGNjAw4oCTMUY2NEYiLGRlc2NyaXB0aW9uOiJFbW9qaTogRW1vdGljb25zLiJ9LHtuYW1lOiJVKzI2MDDigJMyNkZGIixkZXNjcmlwdGlvbjoiRW1vamk6IE1pc2NlbGxhbmVvdXMgU3ltYm9scy4ifSx7bmFtZToiVSsxRjMwMOKAkzFGNUZGIixkZXNjcmlwdGlvbjoiRW1vamk6IE1pc2NlbGxhbmVvdXMgU3ltYm9scyBhbmQgUGljdG9ncmFwaHMuIn0se25hbWU6IlUrMUY5MDDigJMxRjlGRiIsZGVzY3JpcHRpb246IkVtb2ppOiBTdXBwbGVtZW50YWwgU3ltYm9scyBhbmQgUGljdG9ncmFwaHMuIn0se25hbWU6IlUrMUY2ODDigJMxRjZGRiIsZGVzY3JpcHRpb246IkVtb2ppOiBUcmFuc3BvcnQgYW5kIE1hcCBTeW1ib2xzLiJ9XSxzeW50YXg6Ijx1bmljb2RlLXJhbmdlPiMiLHJlbGV2YW5jZTo3MyxkZXNjcmlwdGlvbjoiQGZvbnQtZmFjZSBkZXNjcmlwdG9yLiBEZWZpbmVzIHRoZSBzZXQgb2YgVW5pY29kZSBjb2RlcG9pbnRzIHRoYXQgbWF5IGJlIHN1cHBvcnRlZCBieSB0aGUgZm9udCBmYWNlIGZvciB3aGljaCBpdCBpcyBkZWNsYXJlZC4iLHJlc3RyaWN0aW9uczpbInVuaWNvZGUtcmFuZ2UiXX0se25hbWU6InVzZXItc2VsZWN0Iix2YWx1ZXM6W3tuYW1lOiJhbGwiLGRlc2NyaXB0aW9uOiJUaGUgY29udGVudCBvZiB0aGUgZWxlbWVudCBtdXN0IGJlIHNlbGVjdGVkIGF0b21pY2FsbHkifSx7bmFtZToiYXV0byJ9LHtuYW1lOiJjb250YWluIixkZXNjcmlwdGlvbjoiVUFzIG11c3Qgbm90IGFsbG93IGEgc2VsZWN0aW9uIHdoaWNoIGlzIHN0YXJ0ZWQgaW4gdGhpcyBlbGVtZW50IHRvIGJlIGV4dGVuZGVkIG91dHNpZGUgb2YgdGhpcyBlbGVtZW50LiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIFVBIG11c3Qgbm90IGFsbG93IHNlbGVjdGlvbnMgdG8gYmUgc3RhcnRlZCBpbiB0aGlzIGVsZW1lbnQuIn0se25hbWU6InRleHQiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBpbXBvc2VzIG5vIGNvbnN0cmFpbnQgb24gdGhlIHNlbGVjdGlvbi4ifV0sc3ludGF4OiJhdXRvIHwgdGV4dCB8IG5vbmUgfCBjb250YWluIHwgYWxsIixyZWxldmFuY2U6NzgscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3VzZXItc2VsZWN0In1dLGRlc2NyaXB0aW9uOiJDb250cm9scyB0aGUgYXBwZWFyYW5jZSBvZiBzZWxlY3Rpb24uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ2ZXJ0aWNhbC1hbGlnbiIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkFsaWduIHRoZSBkb21pbmFudCBiYXNlbGluZSBvZiB0aGUgcGFyZW50IGJveCB3aXRoIHRoZSBlcXVpdmFsZW50LCBvciBoZXVyaXN0aWNhbGx5IHJlY29uc3RydWN0ZWQsIGJhc2VsaW5lIG9mIHRoZSBlbGVtZW50IGlubGluZSBib3guIn0se25hbWU6ImJhc2VsaW5lIixkZXNjcmlwdGlvbjoiQWxpZ24gdGhlICdhbHBoYWJldGljJyBiYXNlbGluZSBvZiB0aGUgZWxlbWVudCB3aXRoIHRoZSAnYWxwaGFiZXRpYycgYmFzZWxpbmUgb2YgdGhlIHBhcmVudCBlbGVtZW50LiJ9LHtuYW1lOiJib3R0b20iLGRlc2NyaXB0aW9uOiJBbGlnbiB0aGUgYWZ0ZXIgZWRnZSBvZiB0aGUgZXh0ZW5kZWQgaW5saW5lIGJveCB3aXRoIHRoZSBhZnRlci1lZGdlIG9mIHRoZSBsaW5lIGJveC4ifSx7bmFtZToibWlkZGxlIixkZXNjcmlwdGlvbjoiQWxpZ24gdGhlICdtaWRkbGUnIGJhc2VsaW5lIG9mIHRoZSBpbmxpbmUgZWxlbWVudCB3aXRoIHRoZSBtaWRkbGUgYmFzZWxpbmUgb2YgdGhlIHBhcmVudC4ifSx7bmFtZToic3ViIixkZXNjcmlwdGlvbjoiTG93ZXIgdGhlIGJhc2VsaW5lIG9mIHRoZSBib3ggdG8gdGhlIHByb3BlciBwb3NpdGlvbiBmb3Igc3Vic2NyaXB0cyBvZiB0aGUgcGFyZW50J3MgYm94LiAoVGhpcyB2YWx1ZSBoYXMgbm8gZWZmZWN0IG9uIHRoZSBmb250IHNpemUgb2YgdGhlIGVsZW1lbnQncyB0ZXh0LikifSx7bmFtZToic3VwZXIiLGRlc2NyaXB0aW9uOiJSYWlzZSB0aGUgYmFzZWxpbmUgb2YgdGhlIGJveCB0byB0aGUgcHJvcGVyIHBvc2l0aW9uIGZvciBzdXBlcnNjcmlwdHMgb2YgdGhlIHBhcmVudCdzIGJveC4gKFRoaXMgdmFsdWUgaGFzIG5vIGVmZmVjdCBvbiB0aGUgZm9udCBzaXplIG9mIHRoZSBlbGVtZW50J3MgdGV4dC4pIn0se25hbWU6InRleHQtYm90dG9tIixkZXNjcmlwdGlvbjoiQWxpZ24gdGhlIGJvdHRvbSBvZiB0aGUgYm94IHdpdGggdGhlIGFmdGVyLWVkZ2Ugb2YgdGhlIHBhcmVudCBlbGVtZW50J3MgZm9udC4ifSx7bmFtZToidGV4dC10b3AiLGRlc2NyaXB0aW9uOiJBbGlnbiB0aGUgdG9wIG9mIHRoZSBib3ggd2l0aCB0aGUgYmVmb3JlLWVkZ2Ugb2YgdGhlIHBhcmVudCBlbGVtZW50J3MgZm9udC4ifSx7bmFtZToidG9wIixkZXNjcmlwdGlvbjoiQWxpZ24gdGhlIGJlZm9yZSBlZGdlIG9mIHRoZSBleHRlbmRlZCBpbmxpbmUgYm94IHdpdGggdGhlIGJlZm9yZS1lZGdlIG9mIHRoZSBsaW5lIGJveC4ifSx7bmFtZToiLXdlYmtpdC1iYXNlbGluZS1taWRkbGUifV0sc3ludGF4OiJiYXNlbGluZSB8IHN1YiB8IHN1cGVyIHwgdGV4dC10b3AgfCB0ZXh0LWJvdHRvbSB8IG1pZGRsZSB8IHRvcCB8IGJvdHRvbSB8IDxwZXJjZW50YWdlPiB8IDxsZW5ndGg+IixyZWxldmFuY2U6OTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3ZlcnRpY2FsLWFsaWduIn1dLGRlc2NyaXB0aW9uOiJBZmZlY3RzIHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbmluZyBvZiB0aGUgaW5saW5lIGJveGVzIGdlbmVyYXRlZCBieSBhbiBpbmxpbmUtbGV2ZWwgZWxlbWVudCBpbnNpZGUgYSBsaW5lIGJveC4iLHJlc3RyaWN0aW9uczpbInBlcmNlbnRhZ2UiLCJsZW5ndGgiXX0se25hbWU6InZpc2liaWxpdHkiLHZhbHVlczpbe25hbWU6ImNvbGxhcHNlIixkZXNjcmlwdGlvbjoiVGFibGUtc3BlY2lmaWMuIElmIHVzZWQgb24gZWxlbWVudHMgb3RoZXIgdGhhbiByb3dzLCByb3cgZ3JvdXBzLCBjb2x1bW5zLCBvciBjb2x1bW4gZ3JvdXBzLCAnY29sbGFwc2UnIGhhcyB0aGUgc2FtZSBtZWFuaW5nIGFzICdoaWRkZW4nLiJ9LHtuYW1lOiJoaWRkZW4iLGRlc2NyaXB0aW9uOiJUaGUgZ2VuZXJhdGVkIGJveCBpcyBpbnZpc2libGUgKGZ1bGx5IHRyYW5zcGFyZW50LCBub3RoaW5nIGlzIGRyYXduKSwgYnV0IHN0aWxsIGFmZmVjdHMgbGF5b3V0LiJ9LHtuYW1lOiJ2aXNpYmxlIixkZXNjcmlwdGlvbjoiVGhlIGdlbmVyYXRlZCBib3ggaXMgdmlzaWJsZS4ifV0sc3ludGF4OiJ2aXNpYmxlIHwgaGlkZGVuIHwgY29sbGFwc2UiLHJlbGV2YW5jZTo4OCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdmlzaWJpbGl0eSJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGJveGVzIGdlbmVyYXRlZCBieSBhbiBlbGVtZW50IGFyZSByZW5kZXJlZC4gSW52aXNpYmxlIGJveGVzIHN0aWxsIGFmZmVjdCBsYXlvdXQgKHNldCB0aGUg4oCYZGlzcGxheeKAmSBwcm9wZXJ0eSB0byDigJhub25l4oCZIHRvIHN1cHByZXNzIGJveCBnZW5lcmF0aW9uIGFsdG9nZXRoZXIpLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1hbmltYXRpb24iLGJyb3dzZXJzOlsiQyIsIlM1Il0sdmFsdWVzOlt7bmFtZToiYWx0ZXJuYXRlIixkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIG9kZCBjb3VudHMgYXJlIHBsYXllZCBpbiB0aGUgbm9ybWFsIGRpcmVjdGlvbiwgYW5kIHRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBldmVuIGNvdW50cyBhcmUgcGxheWVkIGluIGEgcmV2ZXJzZSBkaXJlY3Rpb24uIn0se25hbWU6ImFsdGVybmF0ZS1yZXZlcnNlIixkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIG9kZCBjb3VudHMgYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24sIGFuZCB0aGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgZXZlbiBjb3VudHMgYXJlIHBsYXllZCBpbiBhIG5vcm1hbCBkaXJlY3Rpb24uIn0se25hbWU6ImJhY2t3YXJkcyIsZGVzY3JpcHRpb246IlRoZSBiZWdpbm5pbmcgcHJvcGVydHkgdmFsdWUgKGFzIGRlZmluZWQgaW4gdGhlIGZpcnN0IEBrZXlmcmFtZXMgYXQtcnVsZSkgaXMgYXBwbGllZCBiZWZvcmUgdGhlIGFuaW1hdGlvbiBpcyBkaXNwbGF5ZWQsIGR1cmluZyB0aGUgcGVyaW9kIGRlZmluZWQgYnkgJ2FuaW1hdGlvbi1kZWxheScuIn0se25hbWU6ImJvdGgiLGRlc2NyaXB0aW9uOiJCb3RoIGZvcndhcmRzIGFuZCBiYWNrd2FyZHMgZmlsbCBtb2RlcyBhcmUgYXBwbGllZC4ifSx7bmFtZToiZm9yd2FyZHMiLGRlc2NyaXB0aW9uOiJUaGUgZmluYWwgcHJvcGVydHkgdmFsdWUgKGFzIGRlZmluZWQgaW4gdGhlIGxhc3QgQGtleWZyYW1lcyBhdC1ydWxlKSBpcyBtYWludGFpbmVkIGFmdGVyIHRoZSBhbmltYXRpb24gY29tcGxldGVzLiJ9LHtuYW1lOiJpbmZpbml0ZSIsZGVzY3JpcHRpb246IkNhdXNlcyB0aGUgYW5pbWF0aW9uIHRvIHJlcGVhdCBmb3JldmVyLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gYW5pbWF0aW9uIGlzIHBlcmZvcm1lZCJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJOb3JtYWwgcGxheWJhY2suIn0se25hbWU6InJldmVyc2UiLGRlc2NyaXB0aW9uOiJBbGwgaXRlcmF0aW9ucyBvZiB0aGUgYW5pbWF0aW9uIGFyZSBwbGF5ZWQgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uIGZyb20gdGhlIHdheSB0aGV5IHdlcmUgc3BlY2lmaWVkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBjb21iaW5lcyBzaXggb2YgdGhlIGFuaW1hdGlvbiBwcm9wZXJ0aWVzIGludG8gYSBzaW5nbGUgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJ0aW1lIiwiZW51bSIsInRpbWluZy1mdW5jdGlvbiIsImlkZW50aWZpZXIiLCJudW1iZXIiXX0se25hbWU6Ii13ZWJraXQtYW5pbWF0aW9uLWRlbGF5Iixicm93c2VyczpbIkMiLCJTNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGVuIHRoZSBhbmltYXRpb24gd2lsbCBzdGFydC4iLHJlc3RyaWN0aW9uczpbInRpbWUiXX0se25hbWU6Ii13ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlvbiIsYnJvd3NlcnM6WyJDIiwiUzUiXSx2YWx1ZXM6W3tuYW1lOiJhbHRlcm5hdGUiLGRlc2NyaXB0aW9uOiJUaGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgb2RkIGNvdW50cyBhcmUgcGxheWVkIGluIHRoZSBub3JtYWwgZGlyZWN0aW9uLCBhbmQgdGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIGV2ZW4gY291bnRzIGFyZSBwbGF5ZWQgaW4gYSByZXZlcnNlIGRpcmVjdGlvbi4ifSx7bmFtZToiYWx0ZXJuYXRlLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJUaGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgb2RkIGNvdW50cyBhcmUgcGxheWVkIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiwgYW5kIHRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBldmVuIGNvdW50cyBhcmUgcGxheWVkIGluIGEgbm9ybWFsIGRpcmVjdGlvbi4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm9ybWFsIHBsYXliYWNrLiJ9LHtuYW1lOiJyZXZlcnNlIixkZXNjcmlwdGlvbjoiQWxsIGl0ZXJhdGlvbnMgb2YgdGhlIGFuaW1hdGlvbiBhcmUgcGxheWVkIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiBmcm9tIHRoZSB3YXkgdGhleSB3ZXJlIHNwZWNpZmllZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZXRoZXIgb3Igbm90IHRoZSBhbmltYXRpb24gc2hvdWxkIHBsYXkgaW4gcmV2ZXJzZSBvbiBhbHRlcm5hdGUgY3ljbGVzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb24iLGJyb3dzZXJzOlsiQyIsIlM1Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBsZW5ndGggb2YgdGltZSB0aGF0IGFuIGFuaW1hdGlvbiB0YWtlcyB0byBjb21wbGV0ZSBvbmUgY3ljbGUuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiItd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGUiLGJyb3dzZXJzOlsiQyIsIlM1Il0sdmFsdWVzOlt7bmFtZToiYmFja3dhcmRzIixkZXNjcmlwdGlvbjoiVGhlIGJlZ2lubmluZyBwcm9wZXJ0eSB2YWx1ZSAoYXMgZGVmaW5lZCBpbiB0aGUgZmlyc3QgQGtleWZyYW1lcyBhdC1ydWxlKSBpcyBhcHBsaWVkIGJlZm9yZSB0aGUgYW5pbWF0aW9uIGlzIGRpc3BsYXllZCwgZHVyaW5nIHRoZSBwZXJpb2QgZGVmaW5lZCBieSAnYW5pbWF0aW9uLWRlbGF5Jy4ifSx7bmFtZToiYm90aCIsZGVzY3JpcHRpb246IkJvdGggZm9yd2FyZHMgYW5kIGJhY2t3YXJkcyBmaWxsIG1vZGVzIGFyZSBhcHBsaWVkLiJ9LHtuYW1lOiJmb3J3YXJkcyIsZGVzY3JpcHRpb246IlRoZSBmaW5hbCBwcm9wZXJ0eSB2YWx1ZSAoYXMgZGVmaW5lZCBpbiB0aGUgbGFzdCBAa2V5ZnJhbWVzIGF0LXJ1bGUpIGlzIG1haW50YWluZWQgYWZ0ZXIgdGhlIGFuaW1hdGlvbiBjb21wbGV0ZXMuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGVyZSBpcyBubyBjaGFuZ2UgdG8gdGhlIHByb3BlcnR5IHZhbHVlIGJldHdlZW4gdGhlIHRpbWUgdGhlIGFuaW1hdGlvbiBpcyBhcHBsaWVkIGFuZCB0aGUgdGltZSB0aGUgYW5pbWF0aW9uIGJlZ2lucyBwbGF5aW5nIG9yIGFmdGVyIHRoZSBhbmltYXRpb24gY29tcGxldGVzLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgd2hhdCB2YWx1ZXMgYXJlIGFwcGxpZWQgYnkgdGhlIGFuaW1hdGlvbiBvdXRzaWRlIHRoZSB0aW1lIGl0IGlzIGV4ZWN1dGluZy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCIsYnJvd3NlcnM6WyJDIiwiUzUiXSx2YWx1ZXM6W3tuYW1lOiJpbmZpbml0ZSIsZGVzY3JpcHRpb246IkNhdXNlcyB0aGUgYW5pbWF0aW9uIHRvIHJlcGVhdCBmb3JldmVyLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIG51bWJlciBvZiB0aW1lcyBhbiBhbmltYXRpb24gY3ljbGUgaXMgcGxheWVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBvbmUsIG1lYW5pbmcgdGhlIGFuaW1hdGlvbiB3aWxsIHBsYXkgZnJvbSBiZWdpbm5pbmcgdG8gZW5kIG9uY2UuIixyZXN0cmljdGlvbnM6WyJudW1iZXIiLCJlbnVtIl19LHtuYW1lOiItd2Via2l0LWFuaW1hdGlvbi1uYW1lIixicm93c2VyczpbIkMiLCJTNSJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBhbmltYXRpb24gaXMgcGVyZm9ybWVkIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyBhIGxpc3Qgb2YgYW5pbWF0aW9ucyB0aGF0IGFwcGx5LiBFYWNoIG5hbWUgaXMgdXNlZCB0byBzZWxlY3QgdGhlIGtleWZyYW1lIGF0LXJ1bGUgdGhhdCBwcm92aWRlcyB0aGUgcHJvcGVydHkgdmFsdWVzIGZvciB0aGUgYW5pbWF0aW9uLiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImVudW0iXX0se25hbWU6Ii13ZWJraXQtYW5pbWF0aW9uLXBsYXktc3RhdGUiLGJyb3dzZXJzOlsiQyIsIlM1Il0sdmFsdWVzOlt7bmFtZToicGF1c2VkIixkZXNjcmlwdGlvbjoiQSBydW5uaW5nIGFuaW1hdGlvbiB3aWxsIGJlIHBhdXNlZC4ifSx7bmFtZToicnVubmluZyIsZGVzY3JpcHRpb246IlJlc3VtZSBwbGF5YmFjayBvZiBhIHBhdXNlZCBhbmltYXRpb24uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGV0aGVyIHRoZSBhbmltYXRpb24gaXMgcnVubmluZyBvciBwYXVzZWQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24iLGJyb3dzZXJzOlsiQyIsIlM1Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgaG93IHRoZSBhbmltYXRpb24gd2lsbCBwcm9ncmVzcyBvdmVyIG9uZSBjeWNsZSBvZiBpdHMgZHVyYXRpb24uIFNlZSB0aGUgJ3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uJy4iLHJlc3RyaWN0aW9uczpbInRpbWluZy1mdW5jdGlvbiJdfSx7bmFtZToiLXdlYmtpdC1hcHBlYXJhbmNlIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImJ1dHRvbiJ9LHtuYW1lOiJidXR0b24tYmV2ZWwifSx7bmFtZToiY2Fwcy1sb2NrLWluZGljYXRvciJ9LHtuYW1lOiJjYXJldCJ9LHtuYW1lOiJjaGVja2JveCJ9LHtuYW1lOiJkZWZhdWx0LWJ1dHRvbiJ9LHtuYW1lOiJsaXN0Ym94In0se25hbWU6Imxpc3RpdGVtIn0se25hbWU6Im1lZGlhLWZ1bGxzY3JlZW4tYnV0dG9uIn0se25hbWU6Im1lZGlhLW11dGUtYnV0dG9uIn0se25hbWU6Im1lZGlhLXBsYXktYnV0dG9uIn0se25hbWU6Im1lZGlhLXNlZWstYmFjay1idXR0b24ifSx7bmFtZToibWVkaWEtc2Vlay1mb3J3YXJkLWJ1dHRvbiJ9LHtuYW1lOiJtZWRpYS1zbGlkZXIifSx7bmFtZToibWVkaWEtc2xpZGVydGh1bWIifSx7bmFtZToibWVudWxpc3QifSx7bmFtZToibWVudWxpc3QtYnV0dG9uIn0se25hbWU6Im1lbnVsaXN0LXRleHQifSx7bmFtZToibWVudWxpc3QtdGV4dGZpZWxkIn0se25hbWU6Im5vbmUifSx7bmFtZToicHVzaC1idXR0b24ifSx7bmFtZToicmFkaW8ifSx7bmFtZToic2Nyb2xsYmFyYnV0dG9uLWRvd24ifSx7bmFtZToic2Nyb2xsYmFyYnV0dG9uLWxlZnQifSx7bmFtZToic2Nyb2xsYmFyYnV0dG9uLXJpZ2h0In0se25hbWU6InNjcm9sbGJhcmJ1dHRvbi11cCJ9LHtuYW1lOiJzY3JvbGxiYXJncmlwcGVyLWhvcml6b250YWwifSx7bmFtZToic2Nyb2xsYmFyZ3JpcHBlci12ZXJ0aWNhbCJ9LHtuYW1lOiJzY3JvbGxiYXJ0aHVtYi1ob3Jpem9udGFsIn0se25hbWU6InNjcm9sbGJhcnRodW1iLXZlcnRpY2FsIn0se25hbWU6InNjcm9sbGJhcnRyYWNrLWhvcml6b250YWwifSx7bmFtZToic2Nyb2xsYmFydHJhY2stdmVydGljYWwifSx7bmFtZToic2VhcmNoZmllbGQifSx7bmFtZToic2VhcmNoZmllbGQtY2FuY2VsLWJ1dHRvbiJ9LHtuYW1lOiJzZWFyY2hmaWVsZC1kZWNvcmF0aW9uIn0se25hbWU6InNlYXJjaGZpZWxkLXJlc3VsdHMtYnV0dG9uIn0se25hbWU6InNlYXJjaGZpZWxkLXJlc3VsdHMtZGVjb3JhdGlvbiJ9LHtuYW1lOiJzbGlkZXItaG9yaXpvbnRhbCJ9LHtuYW1lOiJzbGlkZXJ0aHVtYi1ob3Jpem9udGFsIn0se25hbWU6InNsaWRlcnRodW1iLXZlcnRpY2FsIn0se25hbWU6InNsaWRlci12ZXJ0aWNhbCJ9LHtuYW1lOiJzcXVhcmUtYnV0dG9uIn0se25hbWU6InRleHRhcmVhIn0se25hbWU6InRleHRmaWVsZCJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Im5vbmUgfCBidXR0b24gfCBidXR0b24tYmV2ZWwgfCBjYXJldCB8IGNoZWNrYm94IHwgZGVmYXVsdC1idXR0b24gfCBpbm5lci1zcGluLWJ1dHRvbiB8IGxpc3Rib3ggfCBsaXN0aXRlbSB8IG1lZGlhLWNvbnRyb2xzLWJhY2tncm91bmQgfCBtZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJhY2tncm91bmQgfCBtZWRpYS1jdXJyZW50LXRpbWUtZGlzcGxheSB8IG1lZGlhLWVudGVyLWZ1bGxzY3JlZW4tYnV0dG9uIHwgbWVkaWEtZXhpdC1mdWxsc2NyZWVuLWJ1dHRvbiB8IG1lZGlhLWZ1bGxzY3JlZW4tYnV0dG9uIHwgbWVkaWEtbXV0ZS1idXR0b24gfCBtZWRpYS1vdmVybGF5LXBsYXktYnV0dG9uIHwgbWVkaWEtcGxheS1idXR0b24gfCBtZWRpYS1zZWVrLWJhY2stYnV0dG9uIHwgbWVkaWEtc2Vlay1mb3J3YXJkLWJ1dHRvbiB8IG1lZGlhLXNsaWRlciB8IG1lZGlhLXNsaWRlcnRodW1iIHwgbWVkaWEtdGltZS1yZW1haW5pbmctZGlzcGxheSB8IG1lZGlhLXRvZ2dsZS1jbG9zZWQtY2FwdGlvbnMtYnV0dG9uIHwgbWVkaWEtdm9sdW1lLXNsaWRlciB8IG1lZGlhLXZvbHVtZS1zbGlkZXItY29udGFpbmVyIHwgbWVkaWEtdm9sdW1lLXNsaWRlcnRodW1iIHwgbWVudWxpc3QgfCBtZW51bGlzdC1idXR0b24gfCBtZW51bGlzdC10ZXh0IHwgbWVudWxpc3QtdGV4dGZpZWxkIHwgbWV0ZXIgfCBwcm9ncmVzcy1iYXIgfCBwcm9ncmVzcy1iYXItdmFsdWUgfCBwdXNoLWJ1dHRvbiB8IHJhZGlvIHwgc2VhcmNoZmllbGQgfCBzZWFyY2hmaWVsZC1jYW5jZWwtYnV0dG9uIHwgc2VhcmNoZmllbGQtZGVjb3JhdGlvbiB8IHNlYXJjaGZpZWxkLXJlc3VsdHMtYnV0dG9uIHwgc2VhcmNoZmllbGQtcmVzdWx0cy1kZWNvcmF0aW9uIHwgc2xpZGVyLWhvcml6b250YWwgfCBzbGlkZXItdmVydGljYWwgfCBzbGlkZXJ0aHVtYi1ob3Jpem9udGFsIHwgc2xpZGVydGh1bWItdmVydGljYWwgfCBzcXVhcmUtYnV0dG9uIHwgdGV4dGFyZWEgfCB0ZXh0ZmllbGQgfCAtYXBwbGUtcGF5LWJ1dHRvbiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkNoYW5nZXMgdGhlIGFwcGVhcmFuY2Ugb2YgYnV0dG9ucyBhbmQgb3RoZXIgY29udHJvbHMgdG8gcmVzZW1ibGUgbmF0aXZlIGNvbnRyb2xzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXIiLGJyb3dzZXJzOlsiUzkiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gZmlsdGVyIGVmZmVjdHMgYXJlIGFwcGxpZWQuIn0se25hbWU6ImJsdXIoKSIsZGVzY3JpcHRpb246IkFwcGxpZXMgYSBHYXVzc2lhbiBibHVyIHRvIHRoZSBpbnB1dCBpbWFnZS4ifSx7bmFtZToiYnJpZ2h0bmVzcygpIixkZXNjcmlwdGlvbjoiQXBwbGllcyBhIGxpbmVhciBtdWx0aXBsaWVyIHRvIGlucHV0IGltYWdlLCBtYWtpbmcgaXQgYXBwZWFyIG1vcmUgb3IgbGVzcyBicmlnaHQuIn0se25hbWU6ImNvbnRyYXN0KCkiLGRlc2NyaXB0aW9uOiJBZGp1c3RzIHRoZSBjb250cmFzdCBvZiB0aGUgaW5wdXQuIn0se25hbWU6ImRyb3Atc2hhZG93KCkiLGRlc2NyaXB0aW9uOiJBcHBsaWVzIGEgZHJvcCBzaGFkb3cgZWZmZWN0IHRvIHRoZSBpbnB1dCBpbWFnZS4ifSx7bmFtZToiZ3JheXNjYWxlKCkiLGRlc2NyaXB0aW9uOiJDb252ZXJ0cyB0aGUgaW5wdXQgaW1hZ2UgdG8gZ3JheXNjYWxlLiJ9LHtuYW1lOiJodWUtcm90YXRlKCkiLGRlc2NyaXB0aW9uOiJBcHBsaWVzIGEgaHVlIHJvdGF0aW9uIG9uIHRoZSBpbnB1dCBpbWFnZS4gIn0se25hbWU6ImludmVydCgpIixkZXNjcmlwdGlvbjoiSW52ZXJ0cyB0aGUgc2FtcGxlcyBpbiB0aGUgaW5wdXQgaW1hZ2UuIn0se25hbWU6Im9wYWNpdHkoKSIsZGVzY3JpcHRpb246IkFwcGxpZXMgdHJhbnNwYXJlbmN5IHRvIHRoZSBzYW1wbGVzIGluIHRoZSBpbnB1dCBpbWFnZS4ifSx7bmFtZToic2F0dXJhdGUoKSIsZGVzY3JpcHRpb246IlNhdHVyYXRlcyB0aGUgaW5wdXQgaW1hZ2UuIn0se25hbWU6InNlcGlhKCkiLGRlc2NyaXB0aW9uOiJDb252ZXJ0cyB0aGUgaW5wdXQgaW1hZ2UgdG8gc2VwaWEuIn0se25hbWU6InVybCgpIixkZXNjcmlwdGlvbjoiQSBmaWx0ZXIgcmVmZXJlbmNlIHRvIGEgPGZpbHRlcj4gZWxlbWVudC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJBcHBsaWVzIGEgZmlsdGVyIGVmZmVjdCB3aGVyZSB0aGUgZmlyc3QgZmlsdGVyIGluIHRoZSBsaXN0IHRha2VzIHRoZSBlbGVtZW50J3MgYmFja2dyb3VuZCBpbWFnZSBhcyB0aGUgaW5wdXQgaW1hZ2UuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwidXJsIl19LHtuYW1lOiItd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHkiLGJyb3dzZXJzOlsiQyIsIlM1Il0sdmFsdWVzOlt7bmFtZToiaGlkZGVuIn0se25hbWU6InZpc2libGUifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRoZSAnYmFjaycgc2lkZSBvZiBhIHRyYW5zZm9ybWVkIGVsZW1lbnQgaXMgdmlzaWJsZSB3aGVuIGZhY2luZyB0aGUgdmlld2VyLiBXaXRoIGFuIGlkZW50aXR5IHRyYW5zZm9ybSwgdGhlIGZyb250IHNpZGUgb2YgYW4gZWxlbWVudCBmYWNlcyB0aGUgdmlld2VyLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXAiLGJyb3dzZXJzOlsiQyIsIlMzIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBiYWNrZ3JvdW5kIHBhaW50aW5nIGFyZWEuIixyZXN0cmljdGlvbnM6WyJib3giXX0se25hbWU6Ii13ZWJraXQtYmFja2dyb3VuZC1jb21wb3NpdGUiLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiYm9yZGVyIn0se25hbWU6InBhZGRpbmcifV0scmVsZXZhbmNlOjUwLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtYmFja2dyb3VuZC1vcmlnaW4iLGJyb3dzZXJzOlsiQyIsIlMzIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJGb3IgZWxlbWVudHMgcmVuZGVyZWQgYXMgYSBzaW5nbGUgYm94LCBzcGVjaWZpZXMgdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4gRm9yIGVsZW1lbnRzIHJlbmRlcmVkIGFzIG11bHRpcGxlIGJveGVzIChlLmcuLCBpbmxpbmUgYm94ZXMgb24gc2V2ZXJhbCBsaW5lcywgYm94ZXMgb24gc2V2ZXJhbCBwYWdlcykgc3BlY2lmaWVzIHdoaWNoIGJveGVzICdib3gtZGVjb3JhdGlvbi1icmVhaycgb3BlcmF0ZXMgb24gdG8gZGV0ZXJtaW5lIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEocykuIixyZXN0cmljdGlvbnM6WyJib3giXX0se25hbWU6Ii13ZWJraXQtYm9yZGVyLWltYWdlIixicm93c2VyczpbIkMiLCJTNSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJJZiAnYXV0bycgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGJvcmRlciBpbWFnZSB3aWR0aCBpcyB0aGUgaW50cmluc2ljIHdpZHRoIG9yIGhlaWdodCAod2hpY2hldmVyIGlzIGFwcGxpY2FibGUpIG9mIHRoZSBjb3JyZXNwb25kaW5nIGltYWdlIHNsaWNlLiBJZiB0aGUgaW1hZ2UgZG9lcyBub3QgaGF2ZSB0aGUgcmVxdWlyZWQgaW50cmluc2ljIGRpbWVuc2lvbiB0aGVuIHRoZSBjb3JyZXNwb25kaW5nIGJvcmRlci13aWR0aCBpcyB1c2VkIGluc3RlYWQuIn0se25hbWU6ImZpbGwiLGRlc2NyaXB0aW9uOiJDYXVzZXMgdGhlIG1pZGRsZSBwYXJ0IG9mIHRoZSBib3JkZXItaW1hZ2UgdG8gYmUgcHJlc2VydmVkLiJ9LHtuYW1lOiJub25lIn0se25hbWU6InJlcGVhdCIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyB0aWxlZCAocmVwZWF0ZWQpIHRvIGZpbGwgdGhlIGFyZWEuIn0se25hbWU6InJvdW5kIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4gSWYgaXQgZG9lcyBub3QgZmlsbCB0aGUgYXJlYSB3aXRoIGEgd2hvbGUgbnVtYmVyIG9mIHRpbGVzLCB0aGUgaW1hZ2UgaXMgcmVzY2FsZWQgc28gdGhhdCBpdCBkb2VzLiJ9LHtuYW1lOiJzcGFjZSIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyB0aWxlZCAocmVwZWF0ZWQpIHRvIGZpbGwgdGhlIGFyZWEuIElmIGl0IGRvZXMgbm90IGZpbGwgdGhlIGFyZWEgd2l0aCBhIHdob2xlIG51bWJlciBvZiB0aWxlcywgdGhlIGV4dHJhIHNwYWNlIGlzIGRpc3RyaWJ1dGVkIGFyb3VuZCB0aGUgdGlsZXMuIn0se25hbWU6InN0cmV0Y2giLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgc3RyZXRjaGVkIHRvIGZpbGwgdGhlIGFyZWEuIn0se25hbWU6InVybCgpIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nICdib3JkZXItaW1hZ2Utc291cmNlJywgJ2JvcmRlci1pbWFnZS1zbGljZScsICdib3JkZXItaW1hZ2Utd2lkdGgnLCAnYm9yZGVyLWltYWdlLW91dHNldCcgYW5kICdib3JkZXItaW1hZ2UtcmVwZWF0Jy4gT21pdHRlZCB2YWx1ZXMgYXJlIHNldCB0byB0aGVpciBpbml0aWFsIHZhbHVlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJudW1iZXIiLCJ1cmwiLCJlbnVtIl19LHtuYW1lOiItd2Via2l0LWJveC1hbGlnbiIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJiYXNlbGluZSIsZGVzY3JpcHRpb246IklmIHRoaXMgYm94IG9yaWVudGF0aW9uIGlzIGlubGluZS1heGlzIG9yIGhvcml6b250YWwsIGFsbCBjaGlsZHJlbiBhcmUgcGxhY2VkIHdpdGggdGhlaXIgYmFzZWxpbmVzIGFsaWduZWQsIGFuZCBleHRyYSBzcGFjZSBwbGFjZWQgYmVmb3JlIG9yIGFmdGVyIGFzIG5lY2Vzc2FyeS4gRm9yIGJsb2NrIGZsb3dzLCB0aGUgYmFzZWxpbmUgb2YgdGhlIGZpcnN0IG5vbi1lbXB0eSBsaW5lIGJveCBsb2NhdGVkIHdpdGhpbiB0aGUgZWxlbWVudCBpcyB1c2VkLiBGb3IgdGFibGVzLCB0aGUgYmFzZWxpbmUgb2YgdGhlIGZpcnN0IGNlbGwgaXMgdXNlZC4ifSx7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiQW55IGV4dHJhIHNwYWNlIGlzIGRpdmlkZWQgZXZlbmx5LCB3aXRoIGhhbGYgcGxhY2VkIGFib3ZlIHRoZSBjaGlsZCBhbmQgdGhlIG90aGVyIGhhbGYgcGxhY2VkIGFmdGVyIHRoZSBjaGlsZC4ifSx7bmFtZToiZW5kIixkZXNjcmlwdGlvbjoiRm9yIG5vcm1hbCBkaXJlY3Rpb24gYm94ZXMsIHRoZSBib3R0b20gZWRnZSBvZiBlYWNoIGNoaWxkIGlzIHBsYWNlZCBhbG9uZyB0aGUgYm90dG9tIG9mIHRoZSBib3guIEV4dHJhIHNwYWNlIGlzIHBsYWNlZCBhYm92ZSB0aGUgZWxlbWVudC4gRm9yIHJldmVyc2UgZGlyZWN0aW9uIGJveGVzLCB0aGUgdG9wIGVkZ2Ugb2YgZWFjaCBjaGlsZCBpcyBwbGFjZWQgYWxvbmcgdGhlIHRvcCBvZiB0aGUgYm94LiBFeHRyYSBzcGFjZSBpcyBwbGFjZWQgYmVsb3cgdGhlIGVsZW1lbnQuIn0se25hbWU6InN0YXJ0IixkZXNjcmlwdGlvbjoiRm9yIG5vcm1hbCBkaXJlY3Rpb24gYm94ZXMsIHRoZSB0b3AgZWRnZSBvZiBlYWNoIGNoaWxkIGlzIHBsYWNlZCBhbG9uZyB0aGUgdG9wIG9mIHRoZSBib3guIEV4dHJhIHNwYWNlIGlzIHBsYWNlZCBiZWxvdyB0aGUgZWxlbWVudC4gRm9yIHJldmVyc2UgZGlyZWN0aW9uIGJveGVzLCB0aGUgYm90dG9tIGVkZ2Ugb2YgZWFjaCBjaGlsZCBpcyBwbGFjZWQgYWxvbmcgdGhlIGJvdHRvbSBvZiB0aGUgYm94LiBFeHRyYSBzcGFjZSBpcyBwbGFjZWQgYWJvdmUgdGhlIGVsZW1lbnQuIn0se25hbWU6InN0cmV0Y2giLGRlc2NyaXB0aW9uOiJUaGUgaGVpZ2h0IG9mIGVhY2ggY2hpbGQgaXMgYWRqdXN0ZWQgdG8gdGhhdCBvZiB0aGUgY29udGFpbmluZyBibG9jay4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGFsaWdubWVudCBvZiBuZXN0ZWQgZWxlbWVudHMgd2l0aGluIGFuIG91dGVyIGZsZXhpYmxlIGJveCBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1ib3gtZGlyZWN0aW9uIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IkEgYm94IHdpdGggYSBjb21wdXRlZCB2YWx1ZSBvZiBob3Jpem9udGFsIGZvciBib3gtb3JpZW50IGRpc3BsYXlzIGl0cyBjaGlsZHJlbiBmcm9tIGxlZnQgdG8gcmlnaHQuIEEgYm94IHdpdGggYSBjb21wdXRlZCB2YWx1ZSBvZiB2ZXJ0aWNhbCBkaXNwbGF5cyBpdHMgY2hpbGRyZW4gZnJvbSB0b3AgdG8gYm90dG9tLiJ9LHtuYW1lOiJyZXZlcnNlIixkZXNjcmlwdGlvbjoiQSBib3ggd2l0aCBhIGNvbXB1dGVkIHZhbHVlIG9mIGhvcml6b250YWwgZm9yIGJveC1vcmllbnQgZGlzcGxheXMgaXRzIGNoaWxkcmVuIGZyb20gcmlnaHQgdG8gbGVmdC4gQSBib3ggd2l0aCBhIGNvbXB1dGVkIHZhbHVlIG9mIHZlcnRpY2FsIGRpc3BsYXlzIGl0cyBjaGlsZHJlbiBmcm9tIGJvdHRvbSB0byB0b3AuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiSW4gd2Via2l0IGFwcGxpY2F0aW9ucywgLXdlYmtpdC1ib3gtZGlyZWN0aW9uIHNwZWNpZmllcyB3aGV0aGVyIGEgYm94IGxheXMgb3V0IGl0cyBjb250ZW50cyBub3JtYWxseSAoZnJvbSB0aGUgdG9wIG9yIGxlZnQgZWRnZSksIG9yIGluIHJldmVyc2UgKGZyb20gdGhlIGJvdHRvbSBvciByaWdodCBlZGdlKS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtYm94LWZsZXgiLGJyb3dzZXJzOlsiQyIsIlMzIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYW4gZWxlbWVudCdzIGZsZXhpYmlsaXR5LiIscmVzdHJpY3Rpb25zOlsibnVtYmVyIl19LHtuYW1lOiItd2Via2l0LWJveC1mbGV4LWdyb3VwIixicm93c2VyczpbIkMiLCJTMyJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRmxleGlibGUgZWxlbWVudHMgY2FuIGJlIGFzc2lnbmVkIHRvIGZsZXggZ3JvdXBzIHVzaW5nIHRoZSAnYm94LWZsZXgtZ3JvdXAnIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cCIsYnJvd3NlcnM6WyJDIiwiUzMiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGUgb3JkaW5hbCBncm91cCB0aGUgZWxlbWVudCBiZWxvbmdzIHRvLiBFbGVtZW50cyB3aXRoIGEgbG93ZXIgb3JkaW5hbCBncm91cCBhcmUgZGlzcGxheWVkIGJlZm9yZSB0aG9zZSB3aXRoIGEgaGlnaGVyIG9yZGluYWwgZ3JvdXAuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiItd2Via2l0LWJveC1vcmllbnQiLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiYmxvY2stYXhpcyIsZGVzY3JpcHRpb246IkVsZW1lbnRzIGFyZSBvcmllbnRlZCBhbG9uZyB0aGUgYm94J3MgYXhpcy4ifSx7bmFtZToiaG9yaXpvbnRhbCIsZGVzY3JpcHRpb246IlRoZSBib3ggZGlzcGxheXMgaXRzIGNoaWxkcmVuIGZyb20gbGVmdCB0byByaWdodCBpbiBhIGhvcml6b250YWwgbGluZS4ifSx7bmFtZToiaW5saW5lLWF4aXMiLGRlc2NyaXB0aW9uOiJFbGVtZW50cyBhcmUgb3JpZW50ZWQgdmVydGljYWxseS4ifSx7bmFtZToidmVydGljYWwiLGRlc2NyaXB0aW9uOiJUaGUgYm94IGRpc3BsYXlzIGl0cyBjaGlsZHJlbiBmcm9tIHN0YWNrZWQgZnJvbSB0b3AgdG8gYm90dG9tIHZlcnRpY2FsbHkuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiSW4gd2Via2l0IGFwcGxpY2F0aW9ucywgLXdlYmtpdC1ib3gtb3JpZW50IHNwZWNpZmllcyB3aGV0aGVyIGEgYm94IGxheXMgb3V0IGl0cyBjb250ZW50cyBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtYm94LXBhY2siLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiVGhlIGV4dHJhIHNwYWNlIGlzIGRpdmlkZWQgZXZlbmx5LCB3aXRoIGhhbGYgcGxhY2VkIGJlZm9yZSB0aGUgZmlyc3QgY2hpbGQgYW5kIHRoZSBvdGhlciBoYWxmIHBsYWNlZCBhZnRlciB0aGUgbGFzdCBjaGlsZC4ifSx7bmFtZToiZW5kIixkZXNjcmlwdGlvbjoiRm9yIG5vcm1hbCBkaXJlY3Rpb24gYm94ZXMsIHRoZSByaWdodCBlZGdlIG9mIHRoZSBsYXN0IGNoaWxkIGlzIHBsYWNlZCBhdCB0aGUgcmlnaHQgc2lkZSwgd2l0aCBhbGwgZXh0cmEgc3BhY2UgcGxhY2VkIGJlZm9yZSB0aGUgZmlyc3QgY2hpbGQuIEZvciByZXZlcnNlIGRpcmVjdGlvbiBib3hlcywgdGhlIGxlZnQgZWRnZSBvZiB0aGUgZmlyc3QgY2hpbGQgaXMgcGxhY2VkIGF0IHRoZSBsZWZ0IHNpZGUsIHdpdGggYWxsIGV4dHJhIHNwYWNlIHBsYWNlZCBhZnRlciB0aGUgbGFzdCBjaGlsZC4ifSx7bmFtZToianVzdGlmeSIsZGVzY3JpcHRpb246IlRoZSBzcGFjZSBpcyBkaXZpZGVkIGV2ZW5seSBpbi1iZXR3ZWVuIGVhY2ggY2hpbGQsIHdpdGggbm9uZSBvZiB0aGUgZXh0cmEgc3BhY2UgcGxhY2VkIGJlZm9yZSB0aGUgZmlyc3QgY2hpbGQgb3IgYWZ0ZXIgdGhlIGxhc3QgY2hpbGQuIElmIHRoZXJlIGlzIG9ubHkgb25lIGNoaWxkLCB0cmVhdCB0aGUgcGFjayB2YWx1ZSBhcyBpZiBpdCB3ZXJlIHN0YXJ0LiJ9LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246IkZvciBub3JtYWwgZGlyZWN0aW9uIGJveGVzLCB0aGUgbGVmdCBlZGdlIG9mIHRoZSBmaXJzdCBjaGlsZCBpcyBwbGFjZWQgYXQgdGhlIGxlZnQgc2lkZSwgd2l0aCBhbGwgZXh0cmEgc3BhY2UgcGxhY2VkIGFmdGVyIHRoZSBsYXN0IGNoaWxkLiBGb3IgcmV2ZXJzZSBkaXJlY3Rpb24gYm94ZXMsIHRoZSByaWdodCBlZGdlIG9mIHRoZSBsYXN0IGNoaWxkIGlzIHBsYWNlZCBhdCB0aGUgcmlnaHQgc2lkZSwgd2l0aCBhbGwgZXh0cmEgc3BhY2UgcGxhY2VkIGJlZm9yZSB0aGUgZmlyc3QgY2hpbGQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGFsaWdubWVudCBvZiBjaGlsZCBlbGVtZW50cyB3aXRoaW4gdGhlIGN1cnJlbnQgZWxlbWVudCBpbiB0aGUgZGlyZWN0aW9uIG9mIG9yaWVudGF0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1ib3gtcmVmbGVjdCIsYnJvd3NlcnM6WyJFNzkiLCJTNCIsIkM0IiwiTzE1Il0sdmFsdWVzOlt7bmFtZToiYWJvdmUiLGRlc2NyaXB0aW9uOiJUaGUgcmVmbGVjdGlvbiBhcHBlYXJzIGFib3ZlIHRoZSBib3JkZXIgYm94LiJ9LHtuYW1lOiJiZWxvdyIsZGVzY3JpcHRpb246IlRoZSByZWZsZWN0aW9uIGFwcGVhcnMgYmVsb3cgdGhlIGJvcmRlciBib3guIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJUaGUgcmVmbGVjdGlvbiBhcHBlYXJzIHRvIHRoZSBsZWZ0IG9mIHRoZSBib3JkZXIgYm94LiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IlRoZSByZWZsZWN0aW9uIGFwcGVhcnMgdG8gdGhlIHJpZ2h0IG9mIHRoZSBib3JkZXIgYm94LiJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IlsgYWJvdmUgfCBiZWxvdyB8IHJpZ2h0IHwgbGVmdCBdPyA8bGVuZ3RoPj8gPGltYWdlPj8iLHJlbGV2YW5jZTowLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8td2Via2l0LWJveC1yZWZsZWN0In1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGEgcmVmbGVjdGlvbiBvZiBhIGJvcmRlciBib3guIn0se25hbWU6Ii13ZWJraXQtYm94LXNpemluZyIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJib3JkZXItYm94IixkZXNjcmlwdGlvbjoiVGhlIHNwZWNpZmllZCB3aWR0aCBhbmQgaGVpZ2h0IChhbmQgcmVzcGVjdGl2ZSBtaW4vbWF4IHByb3BlcnRpZXMpIG9uIHRoaXMgZWxlbWVudCBkZXRlcm1pbmUgdGhlIGJvcmRlciBib3ggb2YgdGhlIGVsZW1lbnQuIn0se25hbWU6ImNvbnRlbnQtYm94IixkZXNjcmlwdGlvbjoiQmVoYXZpb3Igb2Ygd2lkdGggYW5kIGhlaWdodCBhcyBzcGVjaWZpZWQgYnkgQ1NTMi4xLiBUaGUgc3BlY2lmaWVkIHdpZHRoIGFuZCBoZWlnaHQgKGFuZCByZXNwZWN0aXZlIG1pbi9tYXggcHJvcGVydGllcykgYXBwbHkgdG8gdGhlIHdpZHRoIGFuZCBoZWlnaHQgcmVzcGVjdGl2ZWx5IG9mIHRoZSBjb250ZW50IGJveCBvZiB0aGUgZWxlbWVudC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJCb3ggTW9kZWwgYWRkaXRpb24gaW4gQ1NTMy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtYnJlYWstYWZ0ZXIiLGJyb3dzZXJzOlsiUzciXSx2YWx1ZXM6W3tuYW1lOiJhbHdheXMiLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246Ik5laXRoZXIgZm9yY2Ugbm9yIGZvcmJpZCBhIHBhZ2UvY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UvY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtY29sdW1uIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBjb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1wYWdlIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtcmVnaW9uIn0se25hbWU6ImNvbHVtbiIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIGNvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJGb3JjZSBvbmUgb3IgdHdvIHBhZ2UgYnJlYWtzIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveCBzbyB0aGF0IHRoZSBuZXh0IHBhZ2UgaXMgZm9ybWF0dGVkIGFzIGEgbGVmdCBwYWdlLiJ9LHtuYW1lOiJwYWdlIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6InJlZ2lvbiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSByaWdodCBwYWdlLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgcGFnZS9jb2x1bW4gYnJlYWsgYmVoYXZpb3IgYmVmb3JlIHRoZSBnZW5lcmF0ZWQgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1icmVhay1iZWZvcmUiLGJyb3dzZXJzOlsiUzciXSx2YWx1ZXM6W3tuYW1lOiJhbHdheXMiLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246Ik5laXRoZXIgZm9yY2Ugbm9yIGZvcmJpZCBhIHBhZ2UvY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UvY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtY29sdW1uIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBjb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1wYWdlIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtcmVnaW9uIn0se25hbWU6ImNvbHVtbiIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIGNvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJGb3JjZSBvbmUgb3IgdHdvIHBhZ2UgYnJlYWtzIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveCBzbyB0aGF0IHRoZSBuZXh0IHBhZ2UgaXMgZm9ybWF0dGVkIGFzIGEgbGVmdCBwYWdlLiJ9LHtuYW1lOiJwYWdlIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6InJlZ2lvbiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSByaWdodCBwYWdlLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgcGFnZS9jb2x1bW4gYnJlYWsgYmVoYXZpb3IgYmVmb3JlIHRoZSBnZW5lcmF0ZWQgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1icmVhay1pbnNpZGUiLGJyb3dzZXJzOlsiUzciXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiTmVpdGhlciBmb3JjZSBub3IgZm9yYmlkIGEgcGFnZS9jb2x1bW4gYnJlYWsgaW5zaWRlIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZCIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZS9jb2x1bW4gYnJlYWsgaW5zaWRlIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1jb2x1bW4iLGRlc2NyaXB0aW9uOiJBdm9pZCBhIGNvbHVtbiBicmVhayBpbnNpZGUgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLXBhZ2UiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UgYnJlYWsgaW5zaWRlIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1yZWdpb24ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIHBhZ2UvY29sdW1uIGJyZWFrIGJlaGF2aW9yIGluc2lkZSB0aGUgZ2VuZXJhdGVkIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtY29sdW1uLWJyZWFrLWFmdGVyIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImFsd2F5cyIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiTmVpdGhlciBmb3JjZSBub3IgZm9yYmlkIGEgcGFnZS9jb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZCIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZS9jb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1jb2x1bW4iLGRlc2NyaXB0aW9uOiJBdm9pZCBhIGNvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLXBhZ2UiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1yZWdpb24ifSx7bmFtZToiY29sdW1uIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSBsZWZ0IHBhZ2UuIn0se25hbWU6InBhZ2UiLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToicmVnaW9uIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiRm9yY2Ugb25lIG9yIHR3byBwYWdlIGJyZWFrcyBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3ggc28gdGhhdCB0aGUgbmV4dCBwYWdlIGlzIGZvcm1hdHRlZCBhcyBhIHJpZ2h0IHBhZ2UuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBwYWdlL2NvbHVtbiBicmVhayBiZWhhdmlvciBiZWZvcmUgdGhlIGdlbmVyYXRlZCBib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWNvbHVtbi1icmVhay1iZWZvcmUiLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiYWx3YXlzIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJOZWl0aGVyIGZvcmNlIG5vciBmb3JiaWQgYSBwYWdlL2NvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBwYWdlL2NvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLWNvbHVtbiIsZGVzY3JpcHRpb246IkF2b2lkIGEgY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtcGFnZSIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLXJlZ2lvbiJ9LHtuYW1lOiJjb2x1bW4iLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBjb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJsZWZ0IixkZXNjcmlwdGlvbjoiRm9yY2Ugb25lIG9yIHR3byBwYWdlIGJyZWFrcyBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3ggc28gdGhhdCB0aGUgbmV4dCBwYWdlIGlzIGZvcm1hdHRlZCBhcyBhIGxlZnQgcGFnZS4ifSx7bmFtZToicGFnZSIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJyZWdpb24ifSx7bmFtZToicmlnaHQiLGRlc2NyaXB0aW9uOiJGb3JjZSBvbmUgb3IgdHdvIHBhZ2UgYnJlYWtzIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveCBzbyB0aGF0IHRoZSBuZXh0IHBhZ2UgaXMgZm9ybWF0dGVkIGFzIGEgcmlnaHQgcGFnZS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIHBhZ2UvY29sdW1uIGJyZWFrIGJlaGF2aW9yIGJlZm9yZSB0aGUgZ2VuZXJhdGVkIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtY29sdW1uLWJyZWFrLWluc2lkZSIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiTmVpdGhlciBmb3JjZSBub3IgZm9yYmlkIGEgcGFnZS9jb2x1bW4gYnJlYWsgaW5zaWRlIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZCIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZS9jb2x1bW4gYnJlYWsgaW5zaWRlIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1jb2x1bW4iLGRlc2NyaXB0aW9uOiJBdm9pZCBhIGNvbHVtbiBicmVhayBpbnNpZGUgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLXBhZ2UiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UgYnJlYWsgaW5zaWRlIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1yZWdpb24ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIHBhZ2UvY29sdW1uIGJyZWFrIGJlaGF2aW9yIGluc2lkZSB0aGUgZ2VuZXJhdGVkIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtY29sdW1uLWNvdW50Iixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgY29sdW1ucyBieSB0aGUgJ2NvbHVtbi13aWR0aCcgcHJvcGVydHkgYW5kIHRoZSBlbGVtZW50IHdpZHRoLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgb3B0aW1hbCBudW1iZXIgb2YgY29sdW1ucyBpbnRvIHdoaWNoIHRoZSBjb250ZW50IG9mIHRoZSBlbGVtZW50IHdpbGwgYmUgZmxvd2VkLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLXdlYmtpdC1jb2x1bW4tZ2FwIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IlVzZXIgYWdlbnQgc3BlY2lmaWMgYW5kIHR5cGljYWxseSBlcXVpdmFsZW50IHRvIDFlbS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBnYXAgYmV0d2VlbiBjb2x1bW5zLiBJZiB0aGVyZSBpcyBhIGNvbHVtbiBydWxlIGJldHdlZW4gY29sdW1ucywgaXQgd2lsbCBhcHBlYXIgaW4gdGhlIG1pZGRsZSBvZiB0aGUgZ2FwLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiItd2Via2l0LWNvbHVtbi1ydWxlIixicm93c2VyczpbIkMiLCJTMyJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhpcyBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBmb3Igc2V0dGluZyAnY29sdW1uLXJ1bGUtd2lkdGgnLCAnY29sdW1uLXJ1bGUtc3R5bGUnLCBhbmQgJ2NvbHVtbi1ydWxlLWNvbG9yJyBhdCB0aGUgc2FtZSBwbGFjZSBpbiB0aGUgc3R5bGUgc2hlZXQuIE9taXR0ZWQgdmFsdWVzIGFyZSBzZXQgdG8gdGhlaXIgaW5pdGlhbCB2YWx1ZXMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIiwibGluZS1zdHlsZSIsImNvbG9yIl19LHtuYW1lOiItd2Via2l0LWNvbHVtbi1ydWxlLWNvbG9yIixicm93c2VyczpbIkMiLCJTMyJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgY29sb3Igb2YgdGhlIGNvbHVtbiBydWxlIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiLXdlYmtpdC1jb2x1bW4tcnVsZS1zdHlsZSIsYnJvd3NlcnM6WyJDIiwiUzMiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNldHMgdGhlIHN0eWxlIG9mIHRoZSBydWxlIGJldHdlZW4gY29sdW1ucyBvZiBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSJdfSx7bmFtZToiLXdlYmtpdC1jb2x1bW4tcnVsZS13aWR0aCIsYnJvd3NlcnM6WyJDIiwiUzMiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNldHMgdGhlIHdpZHRoIG9mIHRoZSBydWxlIGJldHdlZW4gY29sdW1ucy4gTmVnYXRpdmUgdmFsdWVzIGFyZSBub3QgYWxsb3dlZC4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiXX0se25hbWU6Ii13ZWJraXQtY29sdW1ucyIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHdpZHRoIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZiBvdGhlciBwcm9wZXJ0aWVzLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkEgc2hvcnRoYW5kIHByb3BlcnR5IHdoaWNoIHNldHMgYm90aCAnY29sdW1uLXdpZHRoJyBhbmQgJ2NvbHVtbi1jb3VudCcuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJpbnRlZ2VyIl19LHtuYW1lOiItd2Via2l0LWNvbHVtbi1zcGFuIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImFsbCIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IHNwYW5zIGFjcm9zcyBhbGwgY29sdW1ucy4gQ29udGVudCBpbiB0aGUgbm9ybWFsIGZsb3cgdGhhdCBhcHBlYXJzIGJlZm9yZSB0aGUgZWxlbWVudCBpcyBhdXRvbWF0aWNhbGx5IGJhbGFuY2VkIGFjcm9zcyBhbGwgY29sdW1ucyBiZWZvcmUgdGhlIGVsZW1lbnQgYXBwZWFyLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgZG9lcyBub3Qgc3BhbiBtdWx0aXBsZSBjb2x1bW5zLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgcGFnZS9jb2x1bW4gYnJlYWsgYmVoYXZpb3IgYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWNvbHVtbi13aWR0aCIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHdpZHRoIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZiBvdGhlciBwcm9wZXJ0aWVzLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoaXMgcHJvcGVydHkgZGVzY3JpYmVzIHRoZSB3aWR0aCBvZiBjb2x1bW5zIGluIG11bHRpY29sIGVsZW1lbnRzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiItd2Via2l0LWZpbHRlciIsYnJvd3NlcnM6WyJDMTgiLCJPMTUiLCJTNiJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBmaWx0ZXIgZWZmZWN0cyBhcmUgYXBwbGllZC4ifSx7bmFtZToiYmx1cigpIixkZXNjcmlwdGlvbjoiQXBwbGllcyBhIEdhdXNzaWFuIGJsdXIgdG8gdGhlIGlucHV0IGltYWdlLiJ9LHtuYW1lOiJicmlnaHRuZXNzKCkiLGRlc2NyaXB0aW9uOiJBcHBsaWVzIGEgbGluZWFyIG11bHRpcGxpZXIgdG8gaW5wdXQgaW1hZ2UsIG1ha2luZyBpdCBhcHBlYXIgbW9yZSBvciBsZXNzIGJyaWdodC4ifSx7bmFtZToiY29udHJhc3QoKSIsZGVzY3JpcHRpb246IkFkanVzdHMgdGhlIGNvbnRyYXN0IG9mIHRoZSBpbnB1dC4ifSx7bmFtZToiZHJvcC1zaGFkb3coKSIsZGVzY3JpcHRpb246IkFwcGxpZXMgYSBkcm9wIHNoYWRvdyBlZmZlY3QgdG8gdGhlIGlucHV0IGltYWdlLiJ9LHtuYW1lOiJncmF5c2NhbGUoKSIsZGVzY3JpcHRpb246IkNvbnZlcnRzIHRoZSBpbnB1dCBpbWFnZSB0byBncmF5c2NhbGUuIn0se25hbWU6Imh1ZS1yb3RhdGUoKSIsZGVzY3JpcHRpb246IkFwcGxpZXMgYSBodWUgcm90YXRpb24gb24gdGhlIGlucHV0IGltYWdlLiAifSx7bmFtZToiaW52ZXJ0KCkiLGRlc2NyaXB0aW9uOiJJbnZlcnRzIHRoZSBzYW1wbGVzIGluIHRoZSBpbnB1dCBpbWFnZS4ifSx7bmFtZToib3BhY2l0eSgpIixkZXNjcmlwdGlvbjoiQXBwbGllcyB0cmFuc3BhcmVuY3kgdG8gdGhlIHNhbXBsZXMgaW4gdGhlIGlucHV0IGltYWdlLiJ9LHtuYW1lOiJzYXR1cmF0ZSgpIixkZXNjcmlwdGlvbjoiU2F0dXJhdGVzIHRoZSBpbnB1dCBpbWFnZS4ifSx7bmFtZToic2VwaWEoKSIsZGVzY3JpcHRpb246IkNvbnZlcnRzIHRoZSBpbnB1dCBpbWFnZSB0byBzZXBpYS4ifSx7bmFtZToidXJsKCkiLGRlc2NyaXB0aW9uOiJBIGZpbHRlciByZWZlcmVuY2UgdG8gYSA8ZmlsdGVyPiBlbGVtZW50LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlByb2Nlc3NlcyBhbiBlbGVtZW504oCZcyByZW5kZXJpbmcgYmVmb3JlIGl0IGlzIGRpc3BsYXllZCBpbiB0aGUgZG9jdW1lbnQsIGJ5IGFwcGx5aW5nIG9uZSBvciBtb3JlIGZpbHRlciBlZmZlY3RzLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsInVybCJdfSx7bmFtZToiLXdlYmtpdC1mbG93LWZyb20iLGJyb3dzZXJzOlsiUzYuMSJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgYmxvY2sgY29udGFpbmVyIGlzIG5vdCBhIENTUyBSZWdpb24uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiTWFrZXMgYSBibG9jayBjb250YWluZXIgYSByZWdpb24gYW5kIGFzc29jaWF0ZXMgaXQgd2l0aCBhIG5hbWVkIGZsb3cuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIl19LHtuYW1lOiItd2Via2l0LWZsb3ctaW50byIsYnJvd3NlcnM6WyJTNi4xIl0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGlzIG5vdCBtb3ZlZCB0byBhIG5hbWVkIGZsb3cgYW5kIG5vcm1hbCBDU1MgcHJvY2Vzc2luZyB0YWtlcyBwbGFjZS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJQbGFjZXMgYW4gZWxlbWVudCBvciBpdHMgY29udGVudHMgaW50byBhIG5hbWVkIGZsb3cuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIl19LHtuYW1lOiItd2Via2l0LWZvbnQtZmVhdHVyZS1zZXR0aW5ncyIsYnJvd3NlcnM6WyJDMTYiXSx2YWx1ZXM6W3tuYW1lOiciYzJjcyInfSx7bmFtZTonImRsaWciJ30se25hbWU6JyJrZXJuIid9LHtuYW1lOicibGlnYSInfSx7bmFtZTonImxudW0iJ30se25hbWU6JyJvbnVtIid9LHtuYW1lOicic21jcCInfSx7bmFtZTonInN3c2giJ30se25hbWU6JyJ0bnVtIid9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJObyBjaGFuZ2UgaW4gZ2x5cGggc3Vic3RpdHV0aW9uIG9yIHBvc2l0aW9uaW5nIG9jY3Vycy4ifSx7bmFtZToib2ZmIn0se25hbWU6Im9uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhpcyBwcm9wZXJ0eSBwcm92aWRlcyBsb3ctbGV2ZWwgY29udHJvbCBvdmVyIE9wZW5UeXBlIGZvbnQgZmVhdHVyZXMuIEl0IGlzIGludGVuZGVkIGFzIGEgd2F5IG9mIHByb3ZpZGluZyBhY2Nlc3MgdG8gZm9udCBmZWF0dXJlcyB0aGF0IGFyZSBub3Qgd2lkZWx5IHVzZWQgYnV0IGFyZSBuZWVkZWQgZm9yIGEgcGFydGljdWxhciB1c2UgY2FzZS4iLHJlc3RyaWN0aW9uczpbInN0cmluZyIsImludGVnZXIiXX0se25hbWU6Ii13ZWJraXQtaHlwaGVucyIsYnJvd3NlcnM6WyJTNS4xIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkNvbmRpdGlvbmFsIGh5cGhlbmF0aW9uIGNoYXJhY3RlcnMgaW5zaWRlIGEgd29yZCwgaWYgcHJlc2VudCwgdGFrZSBwcmlvcml0eSBvdmVyIGF1dG9tYXRpYyByZXNvdXJjZXMgd2hlbiBkZXRlcm1pbmluZyBoeXBoZW5hdGlvbiBwb2ludHMgd2l0aGluIHRoZSB3b3JkLiJ9LHtuYW1lOiJtYW51YWwiLGRlc2NyaXB0aW9uOiJXb3JkcyBhcmUgb25seSBicm9rZW4gYXQgbGluZSBicmVha3Mgd2hlcmUgdGhlcmUgYXJlIGNoYXJhY3RlcnMgaW5zaWRlIHRoZSB3b3JkIHRoYXQgc3VnZ2VzdCBsaW5lIGJyZWFrIG9wcG9ydHVuaXRpZXMifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IldvcmRzIGFyZSBub3QgYnJva2VuIGF0IGxpbmUgYnJlYWtzLCBldmVuIGlmIGNoYXJhY3RlcnMgaW5zaWRlIHRoZSB3b3JkIHN1Z2dlc3QgbGluZSBicmVhayBwb2ludHMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQ29udHJvbHMgd2hldGhlciBoeXBoZW5hdGlvbiBpcyBhbGxvd2VkIHRvIGNyZWF0ZSBtb3JlIGJyZWFrIG9wcG9ydHVuaXRpZXMgd2l0aGluIGEgbGluZSBvZiB0ZXh0LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1saW5lLWJyZWFrIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImFmdGVyLXdoaXRlLXNwYWNlIn0se25hbWU6Im5vcm1hbCJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBsaW5lLWJyZWFraW5nIHJ1bGVzIGZvciBDSksgKENoaW5lc2UsIEphcGFuZXNlLCBhbmQgS29yZWFuKSB0ZXh0LiJ9LHtuYW1lOiItd2Via2l0LW1hcmdpbi1ib3R0b20tY29sbGFwc2UiLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiY29sbGFwc2UifSx7bmFtZToiZGlzY2FyZCJ9LHtuYW1lOiJzZXBhcmF0ZSJ9XSxyZWxldmFuY2U6NTAscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1tYXJnaW4tY29sbGFwc2UiLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiY29sbGFwc2UifSx7bmFtZToiZGlzY2FyZCJ9LHtuYW1lOiJzZXBhcmF0ZSJ9XSxyZWxldmFuY2U6NTAscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1tYXJnaW4tc3RhcnQiLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiYXV0byJ9XSxyZWxldmFuY2U6NTAscmVzdHJpY3Rpb25zOlsicGVyY2VudGFnZSIsImxlbmd0aCJdfSx7bmFtZToiLXdlYmtpdC1tYXJnaW4tdG9wLWNvbGxhcHNlIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImNvbGxhcHNlIn0se25hbWU6ImRpc2NhcmQifSx7bmFtZToic2VwYXJhdGUifV0scmVsZXZhbmNlOjUwLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtbWFzay1jbGlwIixicm93c2VyczpbIkMiLCJPMTUiLCJTNCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiWyA8Ym94PiB8IGJvcmRlciB8IHBhZGRpbmcgfCBjb250ZW50IHwgdGV4dCBdIyIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIG1hc2sgcGFpbnRpbmcgYXJlYSwgd2hpY2ggZGV0ZXJtaW5lcyB0aGUgYXJlYSB0aGF0IGlzIGFmZmVjdGVkIGJ5IHRoZSBtYXNrLiIscmVzdHJpY3Rpb25zOlsiYm94Il19LHtuYW1lOiItd2Via2l0LW1hc2staW1hZ2UiLGJyb3dzZXJzOlsiQyIsIk8xNSIsIlM0Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkNvdW50cyBhcyBhIHRyYW5zcGFyZW50IGJsYWNrIGltYWdlIGxheWVyLiJ9LHtuYW1lOiJ1cmwoKSIsZGVzY3JpcHRpb246IlJlZmVyZW5jZSB0byBhIDxtYXNrIGVsZW1lbnQgb3IgdG8gYSBDU1MgaW1hZ2UuIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPG1hc2stcmVmZXJlbmNlPiMiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBtYXNrIGxheWVyIGltYWdlIG9mIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJ1cmwiLCJpbWFnZSIsImVudW0iXX0se25hbWU6Ii13ZWJraXQtbWFzay1vcmlnaW4iLGJyb3dzZXJzOlsiQyIsIk8xNSIsIlM0Il0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJbIDxib3g+IHwgYm9yZGVyIHwgcGFkZGluZyB8IGNvbnRlbnQgXSMiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG1hc2sgcG9zaXRpb25pbmcgYXJlYS4iLHJlc3RyaWN0aW9uczpbImJveCJdfSx7bmFtZToiLXdlYmtpdC1tYXNrLXJlcGVhdCIsYnJvd3NlcnM6WyJDIiwiTzE1IiwiUzQiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxyZXBlYXQtc3R5bGU+IyIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgbWFzayBsYXllciBpbWFnZXMgYXJlIHRpbGVkIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIHNpemVkIGFuZCBwb3NpdGlvbmVkLiIscmVzdHJpY3Rpb25zOlsicmVwZWF0Il19LHtuYW1lOiItd2Via2l0LW1hc2stc2l6ZSIsYnJvd3NlcnM6WyJDIiwiTzE1IiwiUzQiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiUmVzb2x2ZWQgYnkgdXNpbmcgdGhlIGltYWdl4oCZcyBpbnRyaW5zaWMgcmF0aW8gYW5kIHRoZSBzaXplIG9mIHRoZSBvdGhlciBkaW1lbnNpb24sIG9yIGZhaWxpbmcgdGhhdCwgdXNpbmcgdGhlIGltYWdl4oCZcyBpbnRyaW5zaWMgc2l6ZSwgb3IgZmFpbGluZyB0aGF0LCB0cmVhdGluZyBpdCBhcyAxMDAlLiJ9LHtuYW1lOiJjb250YWluIixkZXNjcmlwdGlvbjoiU2NhbGUgdGhlIGltYWdlLCB3aGlsZSBwcmVzZXJ2aW5nIGl0cyBpbnRyaW5zaWMgYXNwZWN0IHJhdGlvIChpZiBhbnkpLCB0byB0aGUgbGFyZ2VzdCBzaXplIHN1Y2ggdGhhdCBib3RoIGl0cyB3aWR0aCBhbmQgaXRzIGhlaWdodCBjYW4gZml0IGluc2lkZSB0aGUgYmFja2dyb3VuZCBwb3NpdGlvbmluZyBhcmVhLiJ9LHtuYW1lOiJjb3ZlciIsZGVzY3JpcHRpb246IlNjYWxlIHRoZSBpbWFnZSwgd2hpbGUgcHJlc2VydmluZyBpdHMgaW50cmluc2ljIGFzcGVjdCByYXRpbyAoaWYgYW55KSwgdG8gdGhlIHNtYWxsZXN0IHNpemUgc3VjaCB0aGF0IGJvdGggaXRzIHdpZHRoIGFuZCBpdHMgaGVpZ2h0IGNhbiBjb21wbGV0ZWx5IGNvdmVyIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEuIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGJnLXNpemU+IyIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgc2l6ZSBvZiB0aGUgbWFzayBsYXllciBpbWFnZXMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIiwiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1uYnNwLW1vZGUiLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToibm9ybWFsIn0se25hbWU6InNwYWNlIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgYmVoYXZpb3Igb2Ygbm9uYnJlYWtpbmcgc3BhY2VzIHdpdGhpbiB0ZXh0LiJ9LHtuYW1lOiItd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZyIsYnJvd3NlcnM6WyJDIiwiUzUiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIn0se25hbWU6InRvdWNoIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiYXV0byB8IHRvdWNoIixyZWxldmFuY2U6MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmcifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB3aGV0aGVyIHRvIHVzZSBuYXRpdmUtc3R5bGUgc2Nyb2xsaW5nIGluIGFuIG92ZXJmbG93OnNjcm9sbCBlbGVtZW50LiJ9LHtuYW1lOiItd2Via2l0LXBhZGRpbmctc3RhcnQiLGJyb3dzZXJzOlsiQyIsIlMzIl0scmVsZXZhbmNlOjUwLHJlc3RyaWN0aW9uczpbInBlcmNlbnRhZ2UiLCJsZW5ndGgiXX0se25hbWU6Ii13ZWJraXQtcGVyc3BlY3RpdmUiLGJyb3dzZXJzOlsiQyIsIlM0Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHBlcnNwZWN0aXZlIHRyYW5zZm9ybSBpcyBhcHBsaWVkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkFwcGxpZXMgdGhlIHNhbWUgdHJhbnNmb3JtIGFzIHRoZSBwZXJzcGVjdGl2ZSg8bnVtYmVyPikgdHJhbnNmb3JtIGZ1bmN0aW9uLCBleGNlcHQgdGhhdCBpdCBhcHBsaWVzIG9ubHkgdG8gdGhlIHBvc2l0aW9uZWQgb3IgdHJhbnNmb3JtZWQgY2hpbGRyZW4gb2YgdGhlIGVsZW1lbnQsIG5vdCB0byB0aGUgdHJhbnNmb3JtIG9uIHRoZSBlbGVtZW50IGl0c2VsZi4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToiLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW4iLGJyb3dzZXJzOlsiQyIsIlM0Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJFc3RhYmxpc2hlcyB0aGUgb3JpZ2luIGZvciB0aGUgcGVyc3BlY3RpdmUgcHJvcGVydHkuIEl0IGVmZmVjdGl2ZWx5IHNldHMgdGhlIFggYW5kIFkgcG9zaXRpb24gYXQgd2hpY2ggdGhlIHZpZXdlciBhcHBlYXJzIHRvIGJlIGxvb2tpbmcgYXQgdGhlIGNoaWxkcmVuIG9mIHRoZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsicG9zaXRpb24iLCJwZXJjZW50YWdlIiwibGVuZ3RoIl19LHtuYW1lOiItd2Via2l0LXJlZ2lvbi1mcmFnbWVudCIsYnJvd3NlcnM6WyJTNyJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJDb250ZW50IGZsb3dzIGFzIGl0IHdvdWxkIGluIGEgcmVndWxhciBjb250ZW50IGJveC4ifSx7bmFtZToiYnJlYWsiLGRlc2NyaXB0aW9uOiJJZiB0aGUgY29udGVudCBmaXRzIHdpdGhpbiB0aGUgQ1NTIFJlZ2lvbiwgdGhlbiB0aGlzIHByb3BlcnR5IGhhcyBubyBlZmZlY3QuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlICdyZWdpb24tZnJhZ21lbnQnIHByb3BlcnR5IGNvbnRyb2xzIHRoZSBiZWhhdmlvciBvZiB0aGUgbGFzdCByZWdpb24gYXNzb2NpYXRlZCB3aXRoIGEgbmFtZWQgZmxvdy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciIsYnJvd3NlcnM6WyJFMTIiLCJDMTYiLCJPMTUiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTowLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8td2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IifV0scmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii13ZWJraXQtdGV4dC1maWxsLWNvbG9yIixicm93c2VyczpbIkUxMiIsIkZGNDkiLCJTMyIsIkMxIiwiTzE1Il0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC10ZXh0LWZpbGwtY29sb3IifV0scmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdCIsYnJvd3NlcnM6WyJFIiwiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlJlbmRlcmVycyBtdXN0IHVzZSB0aGUgZGVmYXVsdCBzaXplIGFkanVzdG1lbnQgd2hlbiBkaXNwbGF5aW5nIG9uIGEgc21hbGwgZGV2aWNlLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiUmVuZGVyZXJzIG11c3Qgbm90IGRvIHNpemUgYWRqdXN0bWVudCB3aGVuIGRpc3BsYXlpbmcgb24gYSBzbWFsbCBkZXZpY2UuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2l6ZSBhZGp1c3RtZW50IGZvciBkaXNwbGF5aW5nIHRleHQgY29udGVudCBpbiBtb2JpbGUgYnJvd3NlcnMuIixyZXN0cmljdGlvbnM6WyJwZXJjZW50YWdlIl19LHtuYW1lOiItd2Via2l0LXRleHQtc3Ryb2tlIixicm93c2VyczpbIkUxNSIsIkZGNDkiLCJTMyIsIkM0IiwiTzE1Il0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8bGVuZ3RoPiB8fCA8Y29sb3I+IixyZWxldmFuY2U6MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC10ZXh0LXN0cm9rZSJ9XSxyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIiwiY29sb3IiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItd2Via2l0LXRleHQtc3Ryb2tlLWNvbG9yIixicm93c2VyczpbIkUxNSIsIkZGNDkiLCJTMyIsIkMxIiwiTzE1Il0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC10ZXh0LXN0cm9rZS1jb2xvciJ9XSxyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aCIsYnJvd3NlcnM6WyJFMTUiLCJGRjQ5IiwiUzMiLCJDMSIsIk8xNSJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGxlbmd0aD4iLHJlbGV2YW5jZTowLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8td2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoIn1dLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItd2Via2l0LXRvdWNoLWNhbGxvdXQiLGJyb3dzZXJzOlsiUzMiXSx2YWx1ZXM6W3tuYW1lOiJub25lIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiZGVmYXVsdCB8IG5vbmUiLHJlbGV2YW5jZTowLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8td2Via2l0LXRvdWNoLWNhbGxvdXQifV0scmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC10cmFuc2Zvcm0iLGJyb3dzZXJzOlsiQyIsIk8xMiIsIlMzLjEiXSx2YWx1ZXM6W3tuYW1lOiJtYXRyaXgoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHRyYW5zZm9ybWF0aW9uIGluIHRoZSBmb3JtIG9mIGEgdHJhbnNmb3JtYXRpb24gbWF0cml4IG9mIHNpeCB2YWx1ZXMuIG1hdHJpeChhLGIsYyxkLGUsZikgaXMgZXF1aXZhbGVudCB0byBhcHBseWluZyB0aGUgdHJhbnNmb3JtYXRpb24gbWF0cml4IFthIGIgYyBkIGUgZl0ifSx7bmFtZToibWF0cml4M2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDNEIHRyYW5zZm9ybWF0aW9uIGFzIGEgNHg0IGhvbW9nZW5lb3VzIG1hdHJpeCBvZiAxNiB2YWx1ZXMgaW4gY29sdW1uLW1ham9yIG9yZGVyLiJ9LHtuYW1lOiJub25lIn0se25hbWU6InBlcnNwZWN0aXZlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBwZXJzcGVjdGl2ZSBwcm9qZWN0aW9uIG1hdHJpeC4ifSx7bmFtZToicm90YXRlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCByb3RhdGlvbiBieSB0aGUgYW5nbGUgc3BlY2lmaWVkIGluIHRoZSBwYXJhbWV0ZXIgYWJvdXQgdGhlIG9yaWdpbiBvZiB0aGUgZWxlbWVudCwgYXMgZGVmaW5lZCBieSB0aGUgdHJhbnNmb3JtLW9yaWdpbiBwcm9wZXJ0eS4ifSx7bmFtZToicm90YXRlM2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSAzRCByb3RhdGlvbiBieSB0aGUgYW5nbGUgc3BlY2lmaWVkIGluIGxhc3QgcGFyYW1ldGVyIGFib3V0IHRoZSBbeCx5LHpdIGRpcmVjdGlvbiB2ZWN0b3IgZGVzY3JpYmVkIGJ5IHRoZSBmaXJzdCAzIHBhcmFtZXRlcnMuIn0se25hbWU6InJvdGF0ZVgoJ2FuZ2xlJykiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbG9ja3dpc2Ugcm90YXRpb24gYnkgdGhlIGdpdmVuIGFuZ2xlIGFib3V0IHRoZSBYIGF4aXMuIn0se25hbWU6InJvdGF0ZVkoJ2FuZ2xlJykiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbG9ja3dpc2Ugcm90YXRpb24gYnkgdGhlIGdpdmVuIGFuZ2xlIGFib3V0IHRoZSBZIGF4aXMuIn0se25hbWU6InJvdGF0ZVooJ2FuZ2xlJykiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbG9ja3dpc2Ugcm90YXRpb24gYnkgdGhlIGdpdmVuIGFuZ2xlIGFib3V0IHRoZSBaIGF4aXMuIn0se25hbWU6InNjYWxlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCBzY2FsZSBvcGVyYXRpb24gYnkgdGhlIFtzeCxzeV0gc2NhbGluZyB2ZWN0b3IgZGVzY3JpYmVkIGJ5IHRoZSAyIHBhcmFtZXRlcnMuIElmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIG5vdCBwcm92aWRlZCwgaXQgaXMgdGFrZXMgYSB2YWx1ZSBlcXVhbCB0byB0aGUgZmlyc3QuIn0se25hbWU6InNjYWxlM2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDNEIHNjYWxlIG9wZXJhdGlvbiBieSB0aGUgW3N4LHN5LHN6XSBzY2FsaW5nIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIDMgcGFyYW1ldGVycy4ifSx7bmFtZToic2NhbGVYKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBzY2FsZSBvcGVyYXRpb24gdXNpbmcgdGhlIFtzeCwxXSBzY2FsaW5nIHZlY3Rvciwgd2hlcmUgc3ggaXMgZ2l2ZW4gYXMgdGhlIHBhcmFtZXRlci4ifSx7bmFtZToic2NhbGVZKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBzY2FsZSBvcGVyYXRpb24gdXNpbmcgdGhlIFtzeSwxXSBzY2FsaW5nIHZlY3Rvciwgd2hlcmUgc3kgaXMgZ2l2ZW4gYXMgdGhlIHBhcmFtZXRlci4ifSx7bmFtZToic2NhbGVaKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBzY2FsZSBvcGVyYXRpb24gdXNpbmcgdGhlIFsxLDEsc3pdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeiBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJza2V3KCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBza2V3IHRyYW5zZm9ybWF0aW9uIGFsb25nIHRoZSBYIGFuZCBZIGF4ZXMuIFRoZSBmaXJzdCBhbmdsZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBza2V3IG9uIHRoZSBYIGF4aXMuIFRoZSBzZWNvbmQgYW5nbGUgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgc2tldyBvbiB0aGUgWSBheGlzLiBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciBpcyBub3QgZ2l2ZW4gdGhlbiBhIHZhbHVlIG9mIDAgaXMgdXNlZCBmb3IgdGhlIFkgYW5nbGUgKGllOiBubyBza2V3IG9uIHRoZSBZIGF4aXMpLiJ9LHtuYW1lOiJza2V3WCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2tldyB0cmFuc2Zvcm1hdGlvbiBhbG9uZyB0aGUgWCBheGlzIGJ5IHRoZSBnaXZlbiBhbmdsZS4ifSx7bmFtZToic2tld1koKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNrZXcgdHJhbnNmb3JtYXRpb24gYWxvbmcgdGhlIFkgYXhpcyBieSB0aGUgZ2l2ZW4gYW5nbGUuIn0se25hbWU6InRyYW5zbGF0ZSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgMkQgdHJhbnNsYXRpb24gYnkgdGhlIHZlY3RvciBbdHgsIHR5XSwgd2hlcmUgdHggaXMgdGhlIGZpcnN0IHRyYW5zbGF0aW9uLXZhbHVlIHBhcmFtZXRlciBhbmQgdHkgaXMgdGhlIG9wdGlvbmFsIHNlY29uZCB0cmFuc2xhdGlvbi12YWx1ZSBwYXJhbWV0ZXIuIn0se25hbWU6InRyYW5zbGF0ZTNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAzRCB0cmFuc2xhdGlvbiBieSB0aGUgdmVjdG9yIFt0eCx0eSx0el0sIHdpdGggdHgsIHR5IGFuZCB0eiBiZWluZyB0aGUgZmlyc3QsIHNlY29uZCBhbmQgdGhpcmQgdHJhbnNsYXRpb24tdmFsdWUgcGFyYW1ldGVycyByZXNwZWN0aXZlbHkuIn0se25hbWU6InRyYW5zbGF0ZVgoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHRyYW5zbGF0aW9uIGJ5IHRoZSBnaXZlbiBhbW91bnQgaW4gdGhlIFggZGlyZWN0aW9uLiJ9LHtuYW1lOiJ0cmFuc2xhdGVZKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSB0cmFuc2xhdGlvbiBieSB0aGUgZ2l2ZW4gYW1vdW50IGluIHRoZSBZIGRpcmVjdGlvbi4ifSx7bmFtZToidHJhbnNsYXRlWigpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgdHJhbnNsYXRpb24gYnkgdGhlIGdpdmVuIGFtb3VudCBpbiB0aGUgWiBkaXJlY3Rpb24uIE5vdGUgdGhhdCBwZXJjZW50YWdlIHZhbHVlcyBhcmUgbm90IGFsbG93ZWQgaW4gdGhlIHRyYW5zbGF0ZVogdHJhbnNsYXRpb24tdmFsdWUsIGFuZCBpZiBwcmVzZW50IGFyZSBldmFsdWF0ZWQgYXMgMC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJBIHR3by1kaW1lbnNpb25hbCB0cmFuc2Zvcm1hdGlvbiBpcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgdGhyb3VnaCB0aGUgJ3RyYW5zZm9ybScgcHJvcGVydHkuIFRoaXMgcHJvcGVydHkgY29udGFpbnMgYSBsaXN0IG9mIHRyYW5zZm9ybSBmdW5jdGlvbnMgc2ltaWxhciB0byB0aG9zZSBhbGxvd2VkIGJ5IFNWRy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbiIsYnJvd3NlcnM6WyJDIiwiTzE1IiwiUzMuMSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRXN0YWJsaXNoZXMgdGhlIG9yaWdpbiBvZiB0cmFuc2Zvcm1hdGlvbiBmb3IgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbInBvc2l0aW9uIiwibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luLXgiLGJyb3dzZXJzOlsiQyIsIlMzLjEiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSB4IGNvb3JkaW5hdGUgb2YgdGhlIG9yaWdpbiBmb3IgdHJhbnNmb3JtcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgd2l0aCByZXNwZWN0IHRvIGl0cyBib3JkZXIgYm94LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luLXkiLGJyb3dzZXJzOlsiQyIsIlMzLjEiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSB5IGNvb3JkaW5hdGUgb2YgdGhlIG9yaWdpbiBmb3IgdHJhbnNmb3JtcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgd2l0aCByZXNwZWN0IHRvIGl0cyBib3JkZXIgYm94LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luLXoiLGJyb3dzZXJzOlsiQyIsIlM0Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgeiBjb29yZGluYXRlIG9mIHRoZSBvcmlnaW4gZm9yIHRyYW5zZm9ybXMgYXBwbGllZCB0byBhbiBlbGVtZW50IHdpdGggcmVzcGVjdCB0byBpdHMgYm9yZGVyIGJveC4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii13ZWJraXQtdHJhbnNmb3JtLXN0eWxlIixicm93c2VyczpbIkMiLCJTNCJdLHZhbHVlczpbe25hbWU6ImZsYXQiLGRlc2NyaXB0aW9uOiJBbGwgY2hpbGRyZW4gb2YgdGhpcyBlbGVtZW50IGFyZSByZW5kZXJlZCBmbGF0dGVuZWQgaW50byB0aGUgMkQgcGxhbmUgb2YgdGhlIGVsZW1lbnQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyBob3cgbmVzdGVkIGVsZW1lbnRzIGFyZSByZW5kZXJlZCBpbiAzRCBzcGFjZS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtdHJhbnNpdGlvbiIsYnJvd3NlcnM6WyJDIiwiTzEyIiwiUzUiXSx2YWx1ZXM6W3tuYW1lOiJhbGwiLGRlc2NyaXB0aW9uOiJFdmVyeSBwcm9wZXJ0eSB0aGF0IGlzIGFibGUgdG8gdW5kZXJnbyBhIHRyYW5zaXRpb24gd2lsbCBkbyBzby4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHByb3BlcnR5IHdpbGwgdHJhbnNpdGlvbi4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgY29tYmluZXMgZm91ciBvZiB0aGUgdHJhbnNpdGlvbiBwcm9wZXJ0aWVzIGludG8gYSBzaW5nbGUgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJ0aW1lIiwicHJvcGVydHkiLCJ0aW1pbmctZnVuY3Rpb24iLCJlbnVtIl19LHtuYW1lOiItd2Via2l0LXRyYW5zaXRpb24tZGVsYXkiLGJyb3dzZXJzOlsiQyIsIk8xMiIsIlM1Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZW4gdGhlIHRyYW5zaXRpb24gd2lsbCBzdGFydC4gSXQgYWxsb3dzIGEgdHJhbnNpdGlvbiB0byBiZWdpbiBleGVjdXRpb24gc29tZSBwZXJpb2Qgb2YgdGltZSBmcm9tIHdoZW4gaXQgaXMgYXBwbGllZC4iLHJlc3RyaWN0aW9uczpbInRpbWUiXX0se25hbWU6Ii13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbiIsYnJvd3NlcnM6WyJDIiwiTzEyIiwiUzUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgbG9uZyB0aGUgdHJhbnNpdGlvbiBmcm9tIHRoZSBvbGQgdmFsdWUgdG8gdGhlIG5ldyB2YWx1ZSBzaG91bGQgdGFrZS4iLHJlc3RyaWN0aW9uczpbInRpbWUiXX0se25hbWU6Ii13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eSIsYnJvd3NlcnM6WyJDIiwiTzEyIiwiUzUiXSx2YWx1ZXM6W3tuYW1lOiJhbGwiLGRlc2NyaXB0aW9uOiJFdmVyeSBwcm9wZXJ0eSB0aGF0IGlzIGFibGUgdG8gdW5kZXJnbyBhIHRyYW5zaXRpb24gd2lsbCBkbyBzby4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHByb3BlcnR5IHdpbGwgdHJhbnNpdGlvbi4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIENTUyBwcm9wZXJ0eSB0byB3aGljaCB0aGUgdHJhbnNpdGlvbiBpcyBhcHBsaWVkLiIscmVzdHJpY3Rpb25zOlsicHJvcGVydHkiXX0se25hbWU6Ii13ZWJraXQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24iLGJyb3dzZXJzOlsiQyIsIk8xMiIsIlM1Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgaG93IHRoZSBpbnRlcm1lZGlhdGUgdmFsdWVzIHVzZWQgZHVyaW5nIGEgdHJhbnNpdGlvbiB3aWxsIGJlIGNhbGN1bGF0ZWQuIixyZXN0cmljdGlvbnM6WyJ0aW1pbmctZnVuY3Rpb24iXX0se25hbWU6Ii13ZWJraXQtdXNlci1kcmFnIixicm93c2VyczpbIlMzIl0sdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJlbGVtZW50In0se25hbWU6Im5vbmUifV0scmVsZXZhbmNlOjUwLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtdXNlci1tb2RpZnkiLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToicmVhZC1vbmx5In0se25hbWU6InJlYWQtd3JpdGUifSx7bmFtZToicmVhZC13cml0ZS1wbGFpbnRleHQtb25seSJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6InJlYWQtb25seSB8IHJlYWQtd3JpdGUgfCByZWFkLXdyaXRlLXBsYWludGV4dC1vbmx5IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB3aGV0aGVyIGEgdXNlciBjYW4gZWRpdCB0aGUgY29udGVudCBvZiBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC11c2VyLXNlbGVjdCIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIn0se25hbWU6Im5vbmUifSx7bmFtZToidGV4dCJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkNvbnRyb2xzIHRoZSBhcHBlYXJhbmNlIG9mIHNlbGVjdGlvbi4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6IndpZG93cyIsYnJvd3NlcnM6WyJFMTIiLCJTMS4zIiwiQzI1IiwiSUU4IiwiTzkuMiJdLHN5bnRheDoiPGludGVnZXI+IixyZWxldmFuY2U6NTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3dpZG93cyJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBsaW5lIGJveGVzIG9mIGEgYmxvY2sgY29udGFpbmVyIHRoYXQgbXVzdCBiZSBsZWZ0IGluIGEgZnJhZ21lbnQgYWZ0ZXIgYSBicmVhay4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiXX0se25hbWU6IndpZHRoIix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHdpZHRoIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZiBvdGhlciBwcm9wZXJ0aWVzLiJ9LHtuYW1lOiJmaXQtY29udGVudCIsZGVzY3JpcHRpb246IlVzZSB0aGUgZml0LWNvbnRlbnQgaW5saW5lIHNpemUgb3IgZml0LWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifSx7bmFtZToibWF4LWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJVc2UgdGhlIG1heC1jb250ZW50IGlubGluZSBzaXplIG9yIG1heC1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn0se25hbWU6Im1pbi1jb250ZW50IixkZXNjcmlwdGlvbjoiVXNlIHRoZSBtaW4tY29udGVudCBpbmxpbmUgc2l6ZSBvciBtaW4tY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9XSxzeW50YXg6Ijx2aWV3cG9ydC1sZW5ndGg+ezEsMn0iLHJlbGV2YW5jZTo5NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvd2lkdGgifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgd2lkdGggb2YgdGhlIGNvbnRlbnQgYXJlYSwgcGFkZGluZyBhcmVhIG9yIGJvcmRlciBhcmVhIChkZXBlbmRpbmcgb24gJ2JveC1zaXppbmcnKSBvZiBjZXJ0YWluIGJveGVzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToid2lsbC1jaGFuZ2UiLGJyb3dzZXJzOlsiRTc5IiwiRkYzNiIsIlM5LjEiLCJDMzYiLCJPMjQiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRXhwcmVzc2VzIG5vIHBhcnRpY3VsYXIgaW50ZW50LiJ9LHtuYW1lOiJjb250ZW50cyIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBhdXRob3IgZXhwZWN0cyB0byBhbmltYXRlIG9yIGNoYW5nZSBzb21ldGhpbmcgYWJvdXQgdGhlIGVsZW1lbnTigJlzIGNvbnRlbnRzIGluIHRoZSBuZWFyIGZ1dHVyZS4ifSx7bmFtZToic2Nyb2xsLXBvc2l0aW9uIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIGF1dGhvciBleHBlY3RzIHRvIGFuaW1hdGUgb3IgY2hhbmdlIHRoZSBzY3JvbGwgcG9zaXRpb24gb2YgdGhlIGVsZW1lbnQgaW4gdGhlIG5lYXIgZnV0dXJlLiJ9XSxzeW50YXg6ImF1dG8gfCA8YW5pbWF0ZWFibGUtZmVhdHVyZT4jIixyZWxldmFuY2U6NjMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3dpbGwtY2hhbmdlIn1dLGRlc2NyaXB0aW9uOiJQcm92aWRlcyBhIHJlbmRlcmluZyBoaW50IHRvIHRoZSB1c2VyIGFnZW50LCBzdGF0aW5nIHdoYXQga2luZHMgb2YgY2hhbmdlcyB0aGUgYXV0aG9yIGV4cGVjdHMgdG8gcGVyZm9ybSBvbiB0aGUgZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJpZGVudGlmaWVyIl19LHtuYW1lOiJ3b3JkLWJyZWFrIix2YWx1ZXM6W3tuYW1lOiJicmVhay1hbGwiLGRlc2NyaXB0aW9uOiJMaW5lcyBtYXkgYnJlYWsgYmV0d2VlbiBhbnkgdHdvIGdyYXBoZW1lIGNsdXN0ZXJzIGZvciBub24tQ0pLIHNjcmlwdHMuIn0se25hbWU6ImtlZXAtYWxsIixkZXNjcmlwdGlvbjoiQmxvY2sgY2hhcmFjdGVycyBjYW4gbm8gbG9uZ2VyIGNyZWF0ZSBpbXBsaWVkIGJyZWFrIHBvaW50cy4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiQnJlYWtzIG5vbi1DSksgc2NyaXB0cyBhY2NvcmRpbmcgdG8gdGhlaXIgb3duIHJ1bGVzLiJ9XSxzeW50YXg6Im5vcm1hbCB8IGJyZWFrLWFsbCB8IGtlZXAtYWxsIHwgYnJlYWstd29yZCIscmVsZXZhbmNlOjc1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy93b3JkLWJyZWFrIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgbGluZSBicmVhayBvcHBvcnR1bml0aWVzIGZvciBub24tQ0pLIHNjcmlwdHMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ3b3JkLXNwYWNpbmciLHZhbHVlczpbe25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vIGFkZGl0aW9uYWwgc3BhY2luZyBpcyBhcHBsaWVkLiBDb21wdXRlcyB0byB6ZXJvLiJ9XSxzeW50YXg6Im5vcm1hbCB8IDxsZW5ndGg+IixyZWxldmFuY2U6NTcscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3dvcmQtc3BhY2luZyJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGFkZGl0aW9uYWwgc3BhY2luZyBiZXR3ZWVuIOKAnHdvcmRz4oCdLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToid29yZC13cmFwIix2YWx1ZXM6W3tuYW1lOiJicmVhay13b3JkIixkZXNjcmlwdGlvbjoiQW4gb3RoZXJ3aXNlIHVuYnJlYWthYmxlIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgbWF5IGJlIGJyb2tlbiBhdCBhbiBhcmJpdHJhcnkgcG9pbnQgaWYgdGhlcmUgYXJlIG5vIG90aGVyd2lzZS1hY2NlcHRhYmxlIGJyZWFrIHBvaW50cyBpbiB0aGUgbGluZS4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTGluZXMgbWF5IGJyZWFrIG9ubHkgYXQgYWxsb3dlZCBicmVhayBwb2ludHMuIn1dLHN5bnRheDoibm9ybWFsIHwgYnJlYWstd29yZCIscmVsZXZhbmNlOjc4LGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hldGhlciB0aGUgVUEgbWF5IGJyZWFrIHdpdGhpbiBhIHdvcmQgdG8gcHJldmVudCBvdmVyZmxvdyB3aGVuIGFuIG90aGVyd2lzZS11bmJyZWFrYWJsZSBzdHJpbmcgaXMgdG9vIGxvbmcgdG8gZml0LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToid3JpdGluZy1tb2RlIix2YWx1ZXM6W3tuYW1lOiJob3Jpem9udGFsLXRiIixkZXNjcmlwdGlvbjoiVG9wLXRvLWJvdHRvbSBibG9jayBmbG93IGRpcmVjdGlvbi4gVGhlIHdyaXRpbmcgbW9kZSBpcyBob3Jpem9udGFsLiJ9LHtuYW1lOiJzaWRld2F5cy1sciIsZGVzY3JpcHRpb246IkxlZnQtdG8tcmlnaHQgYmxvY2sgZmxvdyBkaXJlY3Rpb24uIFRoZSB3cml0aW5nIG1vZGUgaXMgdmVydGljYWwsIHdoaWxlIHRoZSB0eXBvZ3JhcGhpYyBtb2RlIGlzIGhvcml6b250YWwuIn0se25hbWU6InNpZGV3YXlzLXJsIixkZXNjcmlwdGlvbjoiUmlnaHQtdG8tbGVmdCBibG9jayBmbG93IGRpcmVjdGlvbi4gVGhlIHdyaXRpbmcgbW9kZSBpcyB2ZXJ0aWNhbCwgd2hpbGUgdGhlIHR5cG9ncmFwaGljIG1vZGUgaXMgaG9yaXpvbnRhbC4ifSx7bmFtZToidmVydGljYWwtbHIiLGRlc2NyaXB0aW9uOiJMZWZ0LXRvLXJpZ2h0IGJsb2NrIGZsb3cgZGlyZWN0aW9uLiBUaGUgd3JpdGluZyBtb2RlIGlzIHZlcnRpY2FsLiJ9LHtuYW1lOiJ2ZXJ0aWNhbC1ybCIsZGVzY3JpcHRpb246IlJpZ2h0LXRvLWxlZnQgYmxvY2sgZmxvdyBkaXJlY3Rpb24uIFRoZSB3cml0aW5nIG1vZGUgaXMgdmVydGljYWwuIn1dLHN5bnRheDoiaG9yaXpvbnRhbC10YiB8IHZlcnRpY2FsLXJsIHwgdmVydGljYWwtbHIgfCBzaWRld2F5cy1ybCB8IHNpZGV3YXlzLWxyIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3dyaXRpbmctbW9kZSJ9XSxkZXNjcmlwdGlvbjoiVGhpcyBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSBmb3IgYm90aCAnZGlyZWN0aW9uJyBhbmQgJ2Jsb2NrLXByb2dyZXNzaW9uJy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InotaW5kZXgiLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgc3RhY2sgbGV2ZWwgb2YgdGhlIGdlbmVyYXRlZCBib3ggaW4gdGhlIGN1cnJlbnQgc3RhY2tpbmcgY29udGV4dCBpcyAwLiBUaGUgYm94IGRvZXMgbm90IGVzdGFibGlzaCBhIG5ldyBzdGFja2luZyBjb250ZXh0IHVubGVzcyBpdCBpcyB0aGUgcm9vdCBlbGVtZW50LiJ9XSxzeW50YXg6ImF1dG8gfCA8aW50ZWdlcj4iLHJlbGV2YW5jZTo5MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvei1pbmRleCJ9XSxkZXNjcmlwdGlvbjoiRm9yIGEgcG9zaXRpb25lZCBib3gsIHRoZSAnei1pbmRleCcgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBzdGFjayBsZXZlbCBvZiB0aGUgYm94IGluIHRoZSBjdXJyZW50IHN0YWNraW5nIGNvbnRleHQgYW5kIHdoZXRoZXIgdGhlIGJveCBlc3RhYmxpc2hlcyBhIGxvY2FsIHN0YWNraW5nIGNvbnRleHQuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiJ6b29tIixicm93c2VyczpbIkUxMiIsIlMzLjEiLCJDMSIsIklFNS41IiwiTzE1Il0sdmFsdWVzOlt7bmFtZToibm9ybWFsIn1dLHN5bnRheDoiYXV0byB8IDxudW1iZXI+IHwgPHBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NjcscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3pvb20ifV0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gU3BlY2lmaWVzIHRoZSBtYWduaWZpY2F0aW9uIHNjYWxlIG9mIHRoZSBvYmplY3QuIFNlZSAndHJhbnNmb3JtOiBzY2FsZSgpJyBmb3IgYSBzdGFuZGFyZHMtYmFzZWQgYWx0ZXJuYXRpdmUuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwiaW50ZWdlciIsIm51bWJlciIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1tcy1pbWUtYWxpZ24iLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiYXV0byB8IGFmdGVyIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiQWxpZ25zIHRoZSBJbnB1dCBNZXRob2QgRWRpdG9yIChJTUUpIGNhbmRpZGF0ZSB3aW5kb3cgYm94IHJlbGF0aXZlIHRvIHRoZSBlbGVtZW50IG9uIHdoaWNoIHRoZSBJTUUgY29tcG9zaXRpb24gaXMgYWN0aXZlLiJ9LHtuYW1lOiItbW96LWJpbmRpbmciLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPHVybD4gfCBub25lIixyZWxldmFuY2U6MCxicm93c2VyczpbIkZGMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8tbW96LWJpbmRpbmcifV0sZGVzY3JpcHRpb246IlRoZSAtbW96LWJpbmRpbmcgQ1NTIHByb3BlcnR5IGlzIHVzZWQgYnkgTW96aWxsYS1iYXNlZCBhcHBsaWNhdGlvbnMgdG8gYXR0YWNoIGFuIFhCTCBiaW5kaW5nIHRvIGEgRE9NIGVsZW1lbnQuIn0se25hbWU6Ii1tb3otY29udGV4dC1wcm9wZXJ0aWVzIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Im5vbmUgfCBbIGZpbGwgfCBmaWxsLW9wYWNpdHkgfCBzdHJva2UgfCBzdHJva2Utb3BhY2l0eSBdIyIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJGRjU1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy1tb3otY29udGV4dC1wcm9wZXJ0aWVzIn1dLGRlc2NyaXB0aW9uOiJJZiB5b3UgcmVmZXJlbmNlIGFuIFNWRyBpbWFnZSBpbiBhIHdlYnBhZ2UgKHN1Y2ggYXMgd2l0aCB0aGUgPGltZz4gZWxlbWVudCBvciBhcyBhIGJhY2tncm91bmQgaW1hZ2UpLCB0aGUgU1ZHIGltYWdlIGNhbiBjb29yZGluYXRlIHdpdGggdGhlIGVtYmVkZGluZyBlbGVtZW50IChpdHMgY29udGV4dCkgdG8gaGF2ZSB0aGUgaW1hZ2UgYWRvcHQgcHJvcGVydHkgdmFsdWVzIHNldCBvbiB0aGUgZW1iZWRkaW5nIGVsZW1lbnQuIFRvIGRvIHRoaXMgdGhlIGVtYmVkZGluZyBlbGVtZW50IG5lZWRzIHRvIGxpc3QgdGhlIHByb3BlcnRpZXMgdGhhdCBhcmUgdG8gYmUgbWFkZSBhdmFpbGFibGUgdG8gdGhlIGltYWdlIGJ5IGxpc3RpbmcgdGhlbSBhcyB2YWx1ZXMgb2YgdGhlIC1tb3otY29udGV4dC1wcm9wZXJ0aWVzIHByb3BlcnR5LCBhbmQgdGhlIGltYWdlIG5lZWRzIHRvIG9wdCBpbiB0byB1c2luZyB0aG9zZSBwcm9wZXJ0aWVzIGJ5IHVzaW5nIHZhbHVlcyBzdWNoIGFzIHRoZSBjb250ZXh0LWZpbGwgdmFsdWUuXG5cblRoaXMgZmVhdHVyZSBpcyBhdmFpbGFibGUgc2luY2UgRmlyZWZveCA1NSwgYnV0IGlzIG9ubHkgY3VycmVudGx5IHN1cHBvcnRlZCB3aXRoIFNWRyBpbWFnZXMgbG9hZGVkIHZpYSBjaHJvbWU6Ly8gb3IgcmVzb3VyY2U6Ly8gVVJMcy4gVG8gZXhwZXJpbWVudCB3aXRoIHRoZSBmZWF0dXJlIGluIFNWRyBvbiB0aGUgV2ViIGl0IGlzIG5lY2Vzc2FyeSB0byBzZXQgdGhlIHN2Zy5jb250ZXh0LXByb3BlcnRpZXMuY29udGVudC5lbmFibGVkIHByZWYgdG8gdHJ1ZS4ifSx7bmFtZToiLW1vei1mbG9hdC1lZGdlIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6ImJvcmRlci1ib3ggfCBjb250ZW50LWJveCB8IG1hcmdpbi1ib3ggfCBwYWRkaW5nLWJveCIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJGRjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLW1vei1mbG9hdC1lZGdlIn1dLGRlc2NyaXB0aW9uOiJUaGUgbm9uLXN0YW5kYXJkIC1tb3otZmxvYXQtZWRnZSBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIGhlaWdodCBhbmQgd2lkdGggcHJvcGVydGllcyBvZiB0aGUgZWxlbWVudCBpbmNsdWRlIHRoZSBtYXJnaW4sIGJvcmRlciwgb3IgcGFkZGluZyB0aGlja25lc3MuIn0se25hbWU6Ii1tb3otZm9yY2UtYnJva2VuLWltYWdlLWljb24iLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiMCB8IDEiLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRkYxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy1tb3otZm9yY2UtYnJva2VuLWltYWdlLWljb24ifV0sZGVzY3JpcHRpb246IlRoZSAtbW96LWZvcmNlLWJyb2tlbi1pbWFnZS1pY29uIGV4dGVuZGVkIENTUyBwcm9wZXJ0eSBjYW4gYmUgdXNlZCB0byBmb3JjZSB0aGUgYnJva2VuIGltYWdlIGljb24gdG8gYmUgc2hvd24gZXZlbiB3aGVuIGEgYnJva2VuIGltYWdlIGhhcyBhbiBhbHQgYXR0cmlidXRlLiJ9LHtuYW1lOiItbW96LWltYWdlLXJlZ2lvbiIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8c2hhcGU+IHwgYXV0byIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJGRjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLW1vei1pbWFnZS1yZWdpb24ifV0sZGVzY3JpcHRpb246IkZvciBjZXJ0YWluIFhVTCBlbGVtZW50cyBhbmQgcHNldWRvLWVsZW1lbnRzIHRoYXQgdXNlIGFuIGltYWdlIGZyb20gdGhlIGxpc3Qtc3R5bGUtaW1hZ2UgcHJvcGVydHksIHRoaXMgcHJvcGVydHkgc3BlY2lmaWVzIGEgcmVnaW9uIG9mIHRoZSBpbWFnZSB0aGF0IGlzIHVzZWQgaW4gcGxhY2Ugb2YgdGhlIHdob2xlIGltYWdlLiBUaGlzIGFsbG93cyBlbGVtZW50cyB0byB1c2UgZGlmZmVyZW50IHBpZWNlcyBvZiB0aGUgc2FtZSBpbWFnZSB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLiJ9LHtuYW1lOiItbW96LW9yaWVudCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJpbmxpbmUgfCBibG9jayB8IGhvcml6b250YWwgfCB2ZXJ0aWNhbCIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJGRjYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLW1vei1vcmllbnQifV0sZGVzY3JpcHRpb246IlRoZSAtbW96LW9yaWVudCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBvcmllbnRhdGlvbiBvZiB0aGUgZWxlbWVudCB0byB3aGljaCBpdCdzIGFwcGxpZWQuIn0se25hbWU6Ii1tb3otb3V0bGluZS1yYWRpdXMiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPG91dGxpbmUtcmFkaXVzPnsxLDR9IFsgLyA8b3V0bGluZS1yYWRpdXM+ezEsNH0gXT8iLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRkYxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy1tb3otb3V0bGluZS1yYWRpdXMifV0sZGVzY3JpcHRpb246IkluIE1vemlsbGEgYXBwbGljYXRpb25zIGxpa2UgRmlyZWZveCwgdGhlIC1tb3otb3V0bGluZS1yYWRpdXMgQ1NTIHByb3BlcnR5IGNhbiBiZSB1c2VkIHRvIGdpdmUgYW4gZWxlbWVudCdzIG91dGxpbmUgcm91bmRlZCBjb3JuZXJzLiJ9LHtuYW1lOiItbW96LW91dGxpbmUtcmFkaXVzLWJvdHRvbWxlZnQiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPG91dGxpbmUtcmFkaXVzPiIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJGRjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLW1vei1vdXRsaW5lLXJhZGl1cy1ib3R0b21sZWZ0In1dLGRlc2NyaXB0aW9uOiJJbiBNb3ppbGxhIGFwcGxpY2F0aW9ucywgdGhlIC1tb3otb3V0bGluZS1yYWRpdXMtYm90dG9tbGVmdCBDU1MgcHJvcGVydHkgY2FuIGJlIHVzZWQgdG8gcm91bmQgdGhlIGJvdHRvbS1sZWZ0IGNvcm5lciBvZiBhbiBlbGVtZW50J3Mgb3V0bGluZS4ifSx7bmFtZToiLW1vei1vdXRsaW5lLXJhZGl1cy1ib3R0b21yaWdodCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8b3V0bGluZS1yYWRpdXM+IixyZWxldmFuY2U6MCxicm93c2VyczpbIkZGMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8tbW96LW91dGxpbmUtcmFkaXVzLWJvdHRvbXJpZ2h0In1dLGRlc2NyaXB0aW9uOiJJbiBNb3ppbGxhIGFwcGxpY2F0aW9ucywgdGhlIC1tb3otb3V0bGluZS1yYWRpdXMtYm90dG9tcmlnaHQgQ1NTIHByb3BlcnR5IGNhbiBiZSB1c2VkIHRvIHJvdW5kIHRoZSBib3R0b20tcmlnaHQgY29ybmVyIG9mIGFuIGVsZW1lbnQncyBvdXRsaW5lLiJ9LHtuYW1lOiItbW96LW91dGxpbmUtcmFkaXVzLXRvcGxlZnQiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPG91dGxpbmUtcmFkaXVzPiIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJGRjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLW1vei1vdXRsaW5lLXJhZGl1cy10b3BsZWZ0In1dLGRlc2NyaXB0aW9uOiJJbiBNb3ppbGxhIGFwcGxpY2F0aW9ucywgdGhlIC1tb3otb3V0bGluZS1yYWRpdXMtdG9wbGVmdCBDU1MgcHJvcGVydHkgY2FuIGJlIHVzZWQgdG8gcm91bmQgdGhlIHRvcC1sZWZ0IGNvcm5lciBvZiBhbiBlbGVtZW50J3Mgb3V0bGluZS4ifSx7bmFtZToiLW1vei1vdXRsaW5lLXJhZGl1cy10b3ByaWdodCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8b3V0bGluZS1yYWRpdXM+IixyZWxldmFuY2U6MCxicm93c2VyczpbIkZGMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8tbW96LW91dGxpbmUtcmFkaXVzLXRvcHJpZ2h0In1dLGRlc2NyaXB0aW9uOiJJbiBNb3ppbGxhIGFwcGxpY2F0aW9ucywgdGhlIC1tb3otb3V0bGluZS1yYWRpdXMtdG9wcmlnaHQgQ1NTIHByb3BlcnR5IGNhbiBiZSB1c2VkIHRvIHJvdW5kIHRoZSB0b3AtcmlnaHQgY29ybmVyIG9mIGFuIGVsZW1lbnQncyBvdXRsaW5lLiJ9LHtuYW1lOiItbW96LXN0YWNrLXNpemluZyIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJpZ25vcmUgfCBzdHJldGNoLXRvLWZpdCIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246Ii1tb3otc3RhY2stc2l6aW5nIGlzIGFuIGV4dGVuZGVkIENTUyBwcm9wZXJ0eS4gTm9ybWFsbHksIGEgc3RhY2sgd2lsbCBjaGFuZ2UgaXRzIHNpemUgc28gdGhhdCBhbGwgb2YgaXRzIGNoaWxkIGVsZW1lbnRzIGFyZSBjb21wbGV0ZWx5IHZpc2libGUuIEZvciBleGFtcGxlLCBtb3ZpbmcgYSBjaGlsZCBvZiB0aGUgc3RhY2sgZmFyIHRvIHRoZSByaWdodCB3aWxsIHdpZGVuIHRoZSBzdGFjayBzbyB0aGUgY2hpbGQgcmVtYWlucyB2aXNpYmxlLiJ9LHtuYW1lOiItbW96LXRleHQtYmxpbmsiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoibm9uZSB8IGJsaW5rIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiVGhlIC1tb3otdGV4dC1ibGluayBub24tc3RhbmRhcmQgTW96aWxsYSBDU1MgZXh0ZW5zaW9uIHNwZWNpZmllcyB0aGUgYmxpbmsgbW9kZS4ifSx7bmFtZToiLW1vei11c2VyLWlucHV0IixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6ImF1dG8gfCBub25lIHwgZW5hYmxlZCB8IGRpc2FibGVkIixyZWxldmFuY2U6MCxicm93c2VyczpbIkZGMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8tbW96LXVzZXItaW5wdXQifV0sZGVzY3JpcHRpb246IkluIE1vemlsbGEgYXBwbGljYXRpb25zLCAtbW96LXVzZXItaW5wdXQgZGV0ZXJtaW5lcyBpZiBhbiBlbGVtZW50IHdpbGwgYWNjZXB0IHVzZXIgaW5wdXQuIn0se25hbWU6Ii1tb3otdXNlci1tb2RpZnkiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoicmVhZC1vbmx5IHwgcmVhZC13cml0ZSB8IHdyaXRlLW9ubHkiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJUaGUgLW1vei11c2VyLW1vZGlmeSBwcm9wZXJ0eSBoYXMgbm8gZWZmZWN0LiBJdCB3YXMgb3JpZ2luYWxseSBwbGFubmVkIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0aGUgY29udGVudCBvZiBhbiBlbGVtZW50IGNhbiBiZSBlZGl0ZWQgYnkgYSB1c2VyLiJ9LHtuYW1lOiItbW96LXdpbmRvdy1kcmFnZ2luZyIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJkcmFnIHwgbm8tZHJhZyIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlRoZSAtbW96LXdpbmRvdy1kcmFnZ2luZyBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHdoZXRoZXIgYSB3aW5kb3cgaXMgZHJhZ2dhYmxlIG9yIG5vdC4gSXQgb25seSB3b3JrcyBpbiBDaHJvbWUgY29kZSwgYW5kIG9ubHkgb24gTWFjIE9TIFguIn0se25hbWU6Ii1tb3otd2luZG93LXNoYWRvdyIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJkZWZhdWx0IHwgbWVudSB8IHRvb2x0aXAgfCBzaGVldCB8IG5vbmUiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJUaGUgLW1vei13aW5kb3ctc2hhZG93IENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgd2hldGhlciBhIHdpbmRvdyB3aWxsIGhhdmUgYSBzaGFkb3cuIEl0IG9ubHkgd29ya3Mgb24gTWFjIE9TIFguIn0se25hbWU6Ii13ZWJraXQtYm9yZGVyLWJlZm9yZSIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8J2JvcmRlci13aWR0aCc+IHx8IDwnYm9yZGVyLXN0eWxlJz4gfHwgPGNvbG9yPiIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJFNzkiLCJTNS4xIiwiQzgiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC1ib3JkZXItYmVmb3JlIn1dLGRlc2NyaXB0aW9uOiJUaGUgLXdlYmtpdC1ib3JkZXItYmVmb3JlIENTUyBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSBmb3Igc2V0dGluZyB0aGUgaW5kaXZpZHVhbCBsb2dpY2FsIGJsb2NrIHN0YXJ0IGJvcmRlciBwcm9wZXJ0eSB2YWx1ZXMgaW4gYSBzaW5nbGUgcGxhY2UgaW4gdGhlIHN0eWxlIHNoZWV0LiJ9LHtuYW1lOiItd2Via2l0LWJvcmRlci1iZWZvcmUtY29sb3IiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlRoZSAtd2Via2l0LWJvcmRlci1iZWZvcmUtY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGNvbG9yIG9mIHRoZSBpbmRpdmlkdWFsIGxvZ2ljYWwgYmxvY2sgc3RhcnQgYm9yZGVyIGluIGEgc2luZ2xlIHBsYWNlIGluIHRoZSBzdHlsZSBzaGVldC4ifSx7bmFtZToiLXdlYmtpdC1ib3JkZXItYmVmb3JlLXN0eWxlIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjwnYm9yZGVyLXN0eWxlJz4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJUaGUgLXdlYmtpdC1ib3JkZXItYmVmb3JlLXN0eWxlIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBzdHlsZSBvZiB0aGUgaW5kaXZpZHVhbCBsb2dpY2FsIGJsb2NrIHN0YXJ0IGJvcmRlciBpbiBhIHNpbmdsZSBwbGFjZSBpbiB0aGUgc3R5bGUgc2hlZXQuIn0se25hbWU6Ii13ZWJraXQtYm9yZGVyLWJlZm9yZS13aWR0aCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8J2JvcmRlci13aWR0aCc+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiVGhlIC13ZWJraXQtYm9yZGVyLWJlZm9yZS13aWR0aCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgd2lkdGggb2YgdGhlIGluZGl2aWR1YWwgbG9naWNhbCBibG9jayBzdGFydCBib3JkZXIgaW4gYSBzaW5nbGUgcGxhY2UgaW4gdGhlIHN0eWxlIHNoZWV0LiJ9LHtuYW1lOiItd2Via2l0LWxpbmUtY2xhbXAiLHN5bnRheDoibm9uZSB8IDxpbnRlZ2VyPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTE3IiwiRkY2OCIsIlM1IiwiQzYiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC1saW5lLWNsYW1wIn1dLGRlc2NyaXB0aW9uOiJUaGUgLXdlYmtpdC1saW5lLWNsYW1wIENTUyBwcm9wZXJ0eSBhbGxvd3MgbGltaXRpbmcgb2YgdGhlIGNvbnRlbnRzIG9mIGEgYmxvY2sgY29udGFpbmVyIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGxpbmVzLiJ9LHtuYW1lOiItd2Via2l0LW1hc2siLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiWyA8bWFzay1yZWZlcmVuY2U+IHx8IDxwb3NpdGlvbj4gWyAvIDxiZy1zaXplPiBdPyB8fCA8cmVwZWF0LXN0eWxlPiB8fCBbIDxib3g+IHwgYm9yZGVyIHwgcGFkZGluZyB8IGNvbnRlbnQgfCB0ZXh0IF0gfHwgWyA8Ym94PiB8IGJvcmRlciB8IHBhZGRpbmcgfCBjb250ZW50IF0gXSMiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJUaGUgbWFzayBDU1MgcHJvcGVydHkgYWx0ZXJzIHRoZSB2aXNpYmlsaXR5IG9mIGFuIGVsZW1lbnQgYnkgZWl0aGVyIHBhcnRpYWxseSBvciBmdWxseSBoaWRpbmcgaXQuIFRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5IGVpdGhlciBtYXNraW5nIG9yIGNsaXBwaW5nIHRoZSBpbWFnZSBhdCBzcGVjaWZpYyBwb2ludHMuIn0se25hbWU6Ii13ZWJraXQtbWFzay1hdHRhY2htZW50IixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxhdHRhY2htZW50PiMiLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiUzQiLCJDMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8td2Via2l0LW1hc2stYXR0YWNobWVudCJ9XSxkZXNjcmlwdGlvbjoiSWYgYSAtd2Via2l0LW1hc2staW1hZ2UgaXMgc3BlY2lmaWVkLCAtd2Via2l0LW1hc2stYXR0YWNobWVudCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIG1hc2sgaW1hZ2UncyBwb3NpdGlvbiBpcyBmaXhlZCB3aXRoaW4gdGhlIHZpZXdwb3J0LCBvciBzY3JvbGxzIGFsb25nIHdpdGggaXRzIGNvbnRhaW5pbmcgYmxvY2suIn0se25hbWU6Ii13ZWJraXQtbWFzay1jb21wb3NpdGUiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbXBvc2l0ZS1zdHlsZT4jIixyZWxldmFuY2U6MCxicm93c2VyczpbIkUxOCIsIkZGNTMiLCJTMy4xIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC1tYXNrLWNvbXBvc2l0ZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIC13ZWJraXQtbWFzay1jb21wb3NpdGUgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBtYW5uZXIgaW4gd2hpY2ggbXVsdGlwbGUgbWFzayBpbWFnZXMgYXBwbGllZCB0byB0aGUgc2FtZSBlbGVtZW50IGFyZSBjb21wb3NpdGVkIHdpdGggb25lIGFub3RoZXIuIE1hc2sgaW1hZ2VzIGFyZSBjb21wb3NpdGVkIGluIHRoZSBvcHBvc2l0ZSBvcmRlciB0aGF0IHRoZXkgYXJlIGRlY2xhcmVkIHdpdGggdGhlIC13ZWJraXQtbWFzay1pbWFnZSBwcm9wZXJ0eS4ifSx7bmFtZToiLXdlYmtpdC1tYXNrLXBvc2l0aW9uIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Ijxwb3NpdGlvbj4jIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiVGhlIG1hc2stcG9zaXRpb24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGluaXRpYWwgcG9zaXRpb24sIHJlbGF0aXZlIHRvIHRoZSBtYXNrIHBvc2l0aW9uIGxheWVyIGRlZmluZWQgYnkgbWFzay1vcmlnaW4sIGZvciBlYWNoIGRlZmluZWQgbWFzayBpbWFnZS4ifSx7bmFtZToiLXdlYmtpdC1tYXNrLXBvc2l0aW9uLXgiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiWyA8bGVuZ3RoLXBlcmNlbnRhZ2U+IHwgbGVmdCB8IGNlbnRlciB8IHJpZ2h0IF0jIixyZWxldmFuY2U6MCxicm93c2VyczpbIkUxOCIsIkZGNDkiLCJTMy4xIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC1tYXNrLXBvc2l0aW9uLXgifV0sZGVzY3JpcHRpb246IlRoZSAtd2Via2l0LW1hc2stcG9zaXRpb24teCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaW5pdGlhbCBob3Jpem9udGFsIHBvc2l0aW9uIG9mIGEgbWFzayBpbWFnZS4ifSx7bmFtZToiLXdlYmtpdC1tYXNrLXBvc2l0aW9uLXkiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiWyA8bGVuZ3RoLXBlcmNlbnRhZ2U+IHwgdG9wIHwgY2VudGVyIHwgYm90dG9tIF0jIixyZWxldmFuY2U6MCxicm93c2VyczpbIkUxOCIsIkZGNDkiLCJTMy4xIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC1tYXNrLXBvc2l0aW9uLXkifV0sZGVzY3JpcHRpb246IlRoZSAtd2Via2l0LW1hc2stcG9zaXRpb24teSBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaW5pdGlhbCB2ZXJ0aWNhbCBwb3NpdGlvbiBvZiBhIG1hc2sgaW1hZ2UuIn0se25hbWU6Ii13ZWJraXQtbWFzay1yZXBlYXQteCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJyZXBlYXQgfCBuby1yZXBlYXQgfCBzcGFjZSB8IHJvdW5kIixyZWxldmFuY2U6MCxicm93c2VyczpbIkUxOCIsIlM1IiwiQzMiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC1tYXNrLXJlcGVhdC14In1dLGRlc2NyaXB0aW9uOiJUaGUgLXdlYmtpdC1tYXNrLXJlcGVhdC14IHByb3BlcnR5IHNwZWNpZmllcyB3aGV0aGVyIGFuZCBob3cgYSBtYXNrIGltYWdlIGlzIHJlcGVhdGVkICh0aWxlZCkgaG9yaXpvbnRhbGx5LiJ9LHtuYW1lOiItd2Via2l0LW1hc2stcmVwZWF0LXkiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoicmVwZWF0IHwgbm8tcmVwZWF0IHwgc3BhY2UgfCByb3VuZCIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJFMTgiLCJTNSIsIkMzIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy13ZWJraXQtbWFzay1yZXBlYXQteSJ9XSxkZXNjcmlwdGlvbjoiVGhlIC13ZWJraXQtbWFzay1yZXBlYXQteSBwcm9wZXJ0eSBzcGVjaWZpZXMgd2hldGhlciBhbmQgaG93IGEgbWFzayBpbWFnZSBpcyByZXBlYXRlZCAodGlsZWQpIHZlcnRpY2FsbHkuIn0se25hbWU6ImFjY2VudC1jb2xvciIsc3ludGF4OiJhdXRvIHwgPGNvbG9yPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTkzIiwiRkY5MiIsIlMxNS40IiwiQzkzIiwiTzc5Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FjY2VudC1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgY29sb3Igb2YgdGhlIGVsZW1lbnRzIGFjY2VudCJ9LHtuYW1lOiJhbGlnbi10cmFja3MiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Ilsgbm9ybWFsIHwgPGJhc2VsaW5lLXBvc2l0aW9uPiB8IDxjb250ZW50LWRpc3RyaWJ1dGlvbj4gfCA8b3ZlcmZsb3ctcG9zaXRpb24+PyA8Y29udGVudC1wb3NpdGlvbj4gXSMiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkZGNzciXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYWxpZ24tdHJhY2tzIn1dLGRlc2NyaXB0aW9uOiJUaGUgYWxpZ24tdHJhY2tzIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBhbGlnbm1lbnQgaW4gdGhlIG1hc29ucnkgYXhpcyBmb3IgZ3JpZCBjb250YWluZXJzIHRoYXQgaGF2ZSBtYXNvbnJ5IGluIHRoZWlyIGJsb2NrIGF4aXMuIn0se25hbWU6ImFuaW1hdGlvbi10aW1lbGluZSIsc3ludGF4OiI8c2luZ2xlLWFuaW1hdGlvbi10aW1lbGluZT4jIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJGRjk3Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FuaW1hdGlvbi10aW1lbGluZSJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBuYW1lcyBvZiBvbmUgb3IgbW9yZSBAc2Nyb2xsLXRpbWVsaW5lIGF0LXJ1bGVzIHRvIGRlc2NyaWJlIHRoZSBlbGVtZW50J3Mgc2Nyb2xsIGFuaW1hdGlvbnMuIn0se25hbWU6ImFwcGVhcmFuY2UiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Im5vbmUgfCBhdXRvIHwgdGV4dGZpZWxkIHwgbWVudWxpc3QtYnV0dG9uIHwgPGNvbXBhdC1hdXRvPiIscmVsZXZhbmNlOjYyLGJyb3dzZXJzOlsiRTg0IiwiRkY4MCIsIlMxNS40IiwiQzg0IiwiTzcwIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FwcGVhcmFuY2UifV0sZGVzY3JpcHRpb246IkNoYW5nZXMgdGhlIGFwcGVhcmFuY2Ugb2YgYnV0dG9ucyBhbmQgb3RoZXIgY29udHJvbHMgdG8gcmVzZW1ibGUgbmF0aXZlIGNvbnRyb2xzLiJ9LHtuYW1lOiJhc3BlY3QtcmF0aW8iLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6ImF1dG8gfCA8cmF0aW8+IixyZWxldmFuY2U6NTIsYnJvd3NlcnM6WyJFODgiLCJGRjg5IiwiUzE1IiwiQzg4IiwiTzc0Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FzcGVjdC1yYXRpbyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGFzcGVjdC1yYXRpbyAgIENTUyBwcm9wZXJ0eSBzZXRzIGEgcHJlZmVycmVkIGFzcGVjdCByYXRpbyBmb3IgdGhlIGJveCwgd2hpY2ggd2lsbCBiZSB1c2VkIGluIHRoZSBjYWxjdWxhdGlvbiBvZiBhdXRvIHNpemVzIGFuZCBzb21lIG90aGVyIGxheW91dCBmdW5jdGlvbnMuIn0se25hbWU6ImF6aW11dGgiLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoiPGFuZ2xlPiB8IFsgWyBsZWZ0LXNpZGUgfCBmYXItbGVmdCB8IGxlZnQgfCBjZW50ZXItbGVmdCB8IGNlbnRlciB8IGNlbnRlci1yaWdodCB8IHJpZ2h0IHwgZmFyLXJpZ2h0IHwgcmlnaHQtc2lkZSBdIHx8IGJlaGluZCBdIHwgbGVmdHdhcmRzIHwgcmlnaHR3YXJkcyIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkluIGNvbWJpbmF0aW9uIHdpdGggZWxldmF0aW9uLCB0aGUgYXppbXV0aCBDU1MgcHJvcGVydHkgZW5hYmxlcyBkaWZmZXJlbnQgYXVkaW8gc291cmNlcyB0byBiZSBwb3NpdGlvbmVkIHNwYXRpYWxseSBmb3IgYXVyYWwgcHJlc2VudGF0aW9uLiBUaGlzIGlzIGltcG9ydGFudCBpbiB0aGF0IGl0IHByb3ZpZGVzIGEgbmF0dXJhbCB3YXkgdG8gdGVsbCBzZXZlcmFsIHZvaWNlcyBhcGFydCwgYXMgZWFjaCBjYW4gYmUgcG9zaXRpb25lZCB0byBvcmlnaW5hdGUgYXQgYSBkaWZmZXJlbnQgbG9jYXRpb24gb24gdGhlIHNvdW5kIHN0YWdlLiBTdGVyZW8gb3V0cHV0IHByb2R1Y2UgYSBsYXRlcmFsIHNvdW5kIHN0YWdlLCB3aGlsZSBiaW5hdXJhbCBoZWFkcGhvbmVzIGFuZCBtdWx0aS1zcGVha2VyIHNldHVwcyBhbGxvdyBmb3IgYSBmdWxseSB0aHJlZS1kaW1lbnNpb25hbCBzdGFnZS4ifSx7bmFtZToiYmFja2Ryb3AtZmlsdGVyIixzeW50YXg6Im5vbmUgfCA8ZmlsdGVyLWZ1bmN0aW9uLWxpc3Q+IixyZWxldmFuY2U6NTMsYnJvd3NlcnM6WyJFMTciLCJGRjcwIiwiUzkiLCJDNzYiLCJPNjMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmFja2Ryb3AtZmlsdGVyIn1dLGRlc2NyaXB0aW9uOiJUaGUgYmFja2Ryb3AtZmlsdGVyIENTUyBwcm9wZXJ0eSBsZXRzIHlvdSBhcHBseSBncmFwaGljYWwgZWZmZWN0cyBzdWNoIGFzIGJsdXJyaW5nIG9yIGNvbG9yIHNoaWZ0aW5nIHRvIHRoZSBhcmVhIGJlaGluZCBhbiBlbGVtZW50LiBCZWNhdXNlIGl0IGFwcGxpZXMgdG8gZXZlcnl0aGluZyBiZWhpbmQgdGhlIGVsZW1lbnQsIHRvIHNlZSB0aGUgZWZmZWN0IHlvdSBtdXN0IG1ha2UgdGhlIGVsZW1lbnQgb3IgaXRzIGJhY2tncm91bmQgYXQgbGVhc3QgcGFydGlhbGx5IHRyYW5zcGFyZW50LiJ9LHtuYW1lOiJib3JkZXItYmxvY2siLHN5bnRheDoiPCdib3JkZXItdG9wLXdpZHRoJz4gfHwgPCdib3JkZXItdG9wLXN0eWxlJz4gfHwgPGNvbG9yPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg3IiwiRkY2NiIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ibG9jayJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1ibG9jayBDU1MgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgdGhlIGluZGl2aWR1YWwgbG9naWNhbCBibG9jayBib3JkZXIgcHJvcGVydHkgdmFsdWVzIGluIGEgc2luZ2xlIHBsYWNlIGluIHRoZSBzdHlsZSBzaGVldC4ifSx7bmFtZToiYm9yZGVyLWJsb2NrLWNvbG9yIixzeW50YXg6IjwnYm9yZGVyLXRvcC1jb2xvcic+ezEsMn0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NyIsIkZGNjYiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYmxvY2stY29sb3IifV0sZGVzY3JpcHRpb246IlRoZSBib3JkZXItYmxvY2stY29sb3IgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGNvbG9yIG9mIHRoZSBsb2dpY2FsIGJsb2NrIGJvcmRlcnMgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBhIHBoeXNpY2FsIGJvcmRlciBjb2xvciBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nIG1vZGUsIGRpcmVjdGlvbmFsaXR5LCBhbmQgdGV4dCBvcmllbnRhdGlvbi4gSXQgY29ycmVzcG9uZHMgdG8gdGhlIGJvcmRlci10b3AtY29sb3IgYW5kIGJvcmRlci1ib3R0b20tY29sb3IsIG9yIGJvcmRlci1yaWdodC1jb2xvciBhbmQgYm9yZGVyLWxlZnQtY29sb3IgcHJvcGVydHkgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgZGVmaW5lZCBmb3Igd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJib3JkZXItYmxvY2stc3R5bGUiLHN5bnRheDoiPCdib3JkZXItdG9wLXN0eWxlJz4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NyIsIkZGNjYiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYmxvY2stc3R5bGUifV0sZGVzY3JpcHRpb246IlRoZSBib3JkZXItYmxvY2stc3R5bGUgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIHN0eWxlIG9mIHRoZSBsb2dpY2FsIGJsb2NrIGJvcmRlcnMgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBhIHBoeXNpY2FsIGJvcmRlciBzdHlsZSBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nIG1vZGUsIGRpcmVjdGlvbmFsaXR5LCBhbmQgdGV4dCBvcmllbnRhdGlvbi4gSXQgY29ycmVzcG9uZHMgdG8gdGhlIGJvcmRlci10b3Atc3R5bGUgYW5kIGJvcmRlci1ib3R0b20tc3R5bGUsIG9yIGJvcmRlci1sZWZ0LXN0eWxlIGFuZCBib3JkZXItcmlnaHQtc3R5bGUgcHJvcGVydGllcyBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBkZWZpbmVkIGZvciB3cml0aW5nLW1vZGUsIGRpcmVjdGlvbiwgYW5kIHRleHQtb3JpZW50YXRpb24uIn0se25hbWU6ImJvcmRlci1ibG9jay13aWR0aCIsc3ludGF4OiI8J2JvcmRlci10b3Atd2lkdGgnPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg3IiwiRkY2NiIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ibG9jay13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1ibG9jay13aWR0aCBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgd2lkdGggb2YgdGhlIGxvZ2ljYWwgYmxvY2sgYm9yZGVycyBvZiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIGEgcGh5c2ljYWwgYm9yZGVyIHdpZHRoIGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmcgbW9kZSwgZGlyZWN0aW9uYWxpdHksIGFuZCB0ZXh0IG9yaWVudGF0aW9uLiBJdCBjb3JyZXNwb25kcyB0byB0aGUgYm9yZGVyLXRvcC13aWR0aCBhbmQgYm9yZGVyLWJvdHRvbS13aWR0aCwgb3IgYm9yZGVyLWxlZnQtd2lkdGgsIGFuZCBib3JkZXItcmlnaHQtd2lkdGggcHJvcGVydHkgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgZGVmaW5lZCBmb3Igd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJib3JkZXItZW5kLWVuZC1yYWRpdXMiLHN5bnRheDoiPGxlbmd0aC1wZXJjZW50YWdlPnsxLDJ9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODkiLCJGRjY2IiwiUzE1IiwiQzg5IiwiTzc1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1lbmQtZW5kLXJhZGl1cyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1lbmQtZW5kLXJhZGl1cyBDU1MgcHJvcGVydHkgZGVmaW5lcyBhIGxvZ2ljYWwgYm9yZGVyIHJhZGl1cyBvbiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIGEgcGh5c2ljYWwgYm9yZGVyIHJhZGl1cyB0aGF0IGRlcGVuZHMgb24gb24gdGhlIGVsZW1lbnQncyB3cml0aW5nLW1vZGUsIGRpcmVjdGlvbiwgYW5kIHRleHQtb3JpZW50YXRpb24uIn0se25hbWU6ImJvcmRlci1lbmQtc3RhcnQtcmFkaXVzIixzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT57MSwyfSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg5IiwiRkY2NiIsIlMxNSIsIkM4OSIsIk83NSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItZW5kLXN0YXJ0LXJhZGl1cyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1lbmQtc3RhcnQtcmFkaXVzIENTUyBwcm9wZXJ0eSBkZWZpbmVzIGEgbG9naWNhbCBib3JkZXIgcmFkaXVzIG9uIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBib3JkZXIgcmFkaXVzIGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiYm9yZGVyLWlubGluZSIsc3ludGF4OiI8J2JvcmRlci10b3Atd2lkdGgnPiB8fCA8J2JvcmRlci10b3Atc3R5bGUnPiB8fCA8Y29sb3I+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODciLCJGRjY2IiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWlubGluZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1pbmxpbmUgQ1NTIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nIHRoZSBpbmRpdmlkdWFsIGxvZ2ljYWwgaW5saW5lIGJvcmRlciBwcm9wZXJ0eSB2YWx1ZXMgaW4gYSBzaW5nbGUgcGxhY2UgaW4gdGhlIHN0eWxlIHNoZWV0LiJ9LHtuYW1lOiJib3JkZXItaW5saW5lLWNvbG9yIixzeW50YXg6IjwnYm9yZGVyLXRvcC1jb2xvcic+ezEsMn0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NyIsIkZGNjYiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItaW5saW5lLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJUaGUgYm9yZGVyLWlubGluZS1jb2xvciBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgY29sb3Igb2YgdGhlIGxvZ2ljYWwgaW5saW5lIGJvcmRlcnMgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBhIHBoeXNpY2FsIGJvcmRlciBjb2xvciBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nIG1vZGUsIGRpcmVjdGlvbmFsaXR5LCBhbmQgdGV4dCBvcmllbnRhdGlvbi4gSXQgY29ycmVzcG9uZHMgdG8gdGhlIGJvcmRlci10b3AtY29sb3IgYW5kIGJvcmRlci1ib3R0b20tY29sb3IsIG9yIGJvcmRlci1yaWdodC1jb2xvciBhbmQgYm9yZGVyLWxlZnQtY29sb3IgcHJvcGVydHkgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgZGVmaW5lZCBmb3Igd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJib3JkZXItaW5saW5lLXN0eWxlIixzeW50YXg6IjwnYm9yZGVyLXRvcC1zdHlsZSc+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODciLCJGRjY2IiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWlubGluZS1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1pbmxpbmUtc3R5bGUgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIHN0eWxlIG9mIHRoZSBsb2dpY2FsIGlubGluZSBib3JkZXJzIG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBib3JkZXIgc3R5bGUgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSBib3JkZXItdG9wLXN0eWxlIGFuZCBib3JkZXItYm90dG9tLXN0eWxlLCBvciBib3JkZXItbGVmdC1zdHlsZSBhbmQgYm9yZGVyLXJpZ2h0LXN0eWxlIHByb3BlcnRpZXMgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgZGVmaW5lZCBmb3Igd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJib3JkZXItaW5saW5lLXdpZHRoIixzeW50YXg6IjwnYm9yZGVyLXRvcC13aWR0aCc+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODciLCJGRjY2IiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWlubGluZS13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1pbmxpbmUtd2lkdGggQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIHdpZHRoIG9mIHRoZSBsb2dpY2FsIGlubGluZSBib3JkZXJzIG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBib3JkZXIgd2lkdGggZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSBib3JkZXItdG9wLXdpZHRoIGFuZCBib3JkZXItYm90dG9tLXdpZHRoLCBvciBib3JkZXItbGVmdC13aWR0aCwgYW5kIGJvcmRlci1yaWdodC13aWR0aCBwcm9wZXJ0eSBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBkZWZpbmVkIGZvciB3cml0aW5nLW1vZGUsIGRpcmVjdGlvbiwgYW5kIHRleHQtb3JpZW50YXRpb24uIn0se25hbWU6ImJvcmRlci1zdGFydC1lbmQtcmFkaXVzIixzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT57MSwyfSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg5IiwiRkY2NiIsIlMxNSIsIkM4OSIsIk83NSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItc3RhcnQtZW5kLXJhZGl1cyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1zdGFydC1lbmQtcmFkaXVzIENTUyBwcm9wZXJ0eSBkZWZpbmVzIGEgbG9naWNhbCBib3JkZXIgcmFkaXVzIG9uIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBib3JkZXIgcmFkaXVzIGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiYm9yZGVyLXN0YXJ0LXN0YXJ0LXJhZGl1cyIsc3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+ezEsMn0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4OSIsIkZGNjYiLCJTMTUiLCJDODkiLCJPNzUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXN0YXJ0LXN0YXJ0LXJhZGl1cyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1zdGFydC1zdGFydC1yYWRpdXMgQ1NTIHByb3BlcnR5IGRlZmluZXMgYSBsb2dpY2FsIGJvcmRlciByYWRpdXMgb24gYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBhIHBoeXNpY2FsIGJvcmRlciByYWRpdXMgdGhhdCBkZXBlbmRzIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJib3gtYWxpZ24iLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoic3RhcnQgfCBjZW50ZXIgfCBlbmQgfCBiYXNlbGluZSB8IHN0cmV0Y2giLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzMiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3gtYWxpZ24ifV0sZGVzY3JpcHRpb246IlRoZSBib3gtYWxpZ24gQ1NTIHByb3BlcnR5IHNwZWNpZmllcyBob3cgYW4gZWxlbWVudCBhbGlnbnMgaXRzIGNvbnRlbnRzIGFjcm9zcyBpdHMgbGF5b3V0IGluIGEgcGVycGVuZGljdWxhciBkaXJlY3Rpb24uIFRoZSBlZmZlY3Qgb2YgdGhlIHByb3BlcnR5IGlzIG9ubHkgdmlzaWJsZSBpZiB0aGVyZSBpcyBleHRyYSBzcGFjZSBpbiB0aGUgYm94LiJ9LHtuYW1lOiJib3gtZGlyZWN0aW9uIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Im5vcm1hbCB8IHJldmVyc2UgfCBpbmhlcml0IixyZWxldmFuY2U6MCxicm93c2VyczpbIkUxMiIsIkZGMSIsIlMzIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm94LWRpcmVjdGlvbiJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJveC1kaXJlY3Rpb24gQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB3aGV0aGVyIGEgYm94IGxheXMgb3V0IGl0cyBjb250ZW50cyBub3JtYWxseSAoZnJvbSB0aGUgdG9wIG9yIGxlZnQgZWRnZSksIG9yIGluIHJldmVyc2UgKGZyb20gdGhlIGJvdHRvbSBvciByaWdodCBlZGdlKS4ifSx7bmFtZToiYm94LWZsZXgiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPG51bWJlcj4iLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzMiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3gtZmxleCJ9XSxkZXNjcmlwdGlvbjoiVGhlIC1tb3otYm94LWZsZXggYW5kIC13ZWJraXQtYm94LWZsZXggQ1NTIHByb3BlcnRpZXMgc3BlY2lmeSBob3cgYSAtbW96LWJveCBvciAtd2Via2l0LWJveCBncm93cyB0byBmaWxsIHRoZSBib3ggdGhhdCBjb250YWlucyBpdCwgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgY29udGFpbmluZyBib3gncyBsYXlvdXQuIn0se25hbWU6ImJveC1mbGV4LWdyb3VwIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxpbnRlZ2VyPiIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJTMyIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JveC1mbGV4LWdyb3VwIn1dLGRlc2NyaXB0aW9uOiJUaGUgYm94LWZsZXgtZ3JvdXAgQ1NTIHByb3BlcnR5IGFzc2lnbnMgdGhlIGZsZXhib3gncyBjaGlsZCBlbGVtZW50cyB0byBhIGZsZXggZ3JvdXAuIn0se25hbWU6ImJveC1saW5lcyIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJzaW5nbGUgfCBtdWx0aXBsZSIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJTMyIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JveC1saW5lcyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJveC1saW5lcyBDU1MgcHJvcGVydHkgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBib3ggbWF5IGhhdmUgYSBzaW5nbGUgb3IgbXVsdGlwbGUgbGluZXMgKHJvd3MgZm9yIGhvcml6b250YWxseSBvcmllbnRlZCBib3hlcywgY29sdW1ucyBmb3IgdmVydGljYWxseSBvcmllbnRlZCBib3hlcykuIn0se25hbWU6ImJveC1vcmRpbmFsLWdyb3VwIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxpbnRlZ2VyPiIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMyIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JveC1vcmRpbmFsLWdyb3VwIn1dLGRlc2NyaXB0aW9uOiJUaGUgYm94LW9yZGluYWwtZ3JvdXAgQ1NTIHByb3BlcnR5IGFzc2lnbnMgdGhlIGZsZXhib3gncyBjaGlsZCBlbGVtZW50cyB0byBhbiBvcmRpbmFsIGdyb3VwLiJ9LHtuYW1lOiJib3gtb3JpZW50IixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Imhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGlubGluZS1heGlzIHwgYmxvY2stYXhpcyB8IGluaGVyaXQiLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzMiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3gtb3JpZW50In1dLGRlc2NyaXB0aW9uOiJUaGUgYm94LW9yaWVudCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHdoZXRoZXIgYW4gZWxlbWVudCBsYXlzIG91dCBpdHMgY29udGVudHMgaG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkuIn0se25hbWU6ImJveC1wYWNrIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6InN0YXJ0IHwgY2VudGVyIHwgZW5kIHwganVzdGlmeSIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMyIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JveC1wYWNrIn1dLGRlc2NyaXB0aW9uOiJUaGUgLW1vei1ib3gtcGFjayBhbmQgLXdlYmtpdC1ib3gtcGFjayBDU1MgcHJvcGVydGllcyBzcGVjaWZ5IGhvdyBhIC1tb3otYm94IG9yIC13ZWJraXQtYm94IHBhY2tzIGl0cyBjb250ZW50cyBpbiB0aGUgZGlyZWN0aW9uIG9mIGl0cyBsYXlvdXQuIFRoZSBlZmZlY3Qgb2YgdGhpcyBpcyBvbmx5IHZpc2libGUgaWYgdGhlcmUgaXMgZXh0cmEgc3BhY2UgaW4gdGhlIGJveC4ifSx7bmFtZToicHJpbnQtY29sb3ItYWRqdXN0IixzeW50YXg6ImVjb25vbXkgfCBleGFjdCIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY5NyIsIlMxNS40IiwiQzE3IiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3ByaW50LWNvbG9yLWFkanVzdCJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGF0IG9wdGltaXphdGlvbiB0aGUgdXNlciBhZ2VudCBpcyBhbGxvd2VkIHRvIGRvIHdoZW4gYWRqdXN0aW5nIHRoZSBhcHBlYXJhbmNlIGZvciBhbiBvdXRwdXQgZGV2aWNlLiJ9LHtuYW1lOiJjb2xvci1zY2hlbWUiLHN5bnRheDoibm9ybWFsIHwgWyBsaWdodCB8IGRhcmsgfCA8Y3VzdG9tLWlkZW50PiBdKyAmJiBvbmx5PyIscmVsZXZhbmNlOjUyLGJyb3dzZXJzOlsiRTgxIiwiRkY5NiIsIlMxMyIsIkM4MSIsIk82OCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb2xvci1zY2hlbWUifV0sZGVzY3JpcHRpb246IlRoZSBjb2xvci1zY2hlbWUgQ1NTIHByb3BlcnR5IGFsbG93cyBhbiBlbGVtZW50IHRvIGluZGljYXRlIHdoaWNoIGNvbG9yIHNjaGVtZXMgaXQgY2FuIGNvbWZvcnRhYmx5IGJlIHJlbmRlcmVkIGluLiJ9LHtuYW1lOiJjb250ZW50LXZpc2liaWxpdHkiLHN5bnRheDoidmlzaWJsZSB8IGF1dG8gfCBoaWRkZW4iLHJlbGV2YW5jZTo1MSxicm93c2VyczpbIkU4NSIsIlMxNS40IiwiQzg1IiwiTzcxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvbnRlbnQtdmlzaWJpbGl0eSJ9XSxkZXNjcmlwdGlvbjoiQ29udHJvbHMgd2hldGhlciBvciBub3QgYW4gZWxlbWVudCByZW5kZXJzIGl0cyBjb250ZW50cyBhdCBhbGwsIGFsb25nIHdpdGggZm9yY2luZyBhIHN0cm9uZyBzZXQgb2YgY29udGFpbm1lbnRzLCBhbGxvd2luZyB1c2VyIGFnZW50cyB0byBwb3RlbnRpYWxseSBvbWl0IGxhcmdlIHN3YXRoZXMgb2YgbGF5b3V0IGFuZCByZW5kZXJpbmcgd29yayB1bnRpbCBpdCBiZWNvbWVzIG5lZWRlZC4ifSx7bmFtZToiY291bnRlci1zZXQiLHN5bnRheDoiWyA8Y291bnRlci1uYW1lPiA8aW50ZWdlcj4/IF0rIHwgbm9uZSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg1IiwiRkY2OCIsIkM4NSIsIk83MSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb3VudGVyLXNldCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGNvdW50ZXItc2V0IENTUyBwcm9wZXJ0eSBzZXRzIGEgQ1NTIGNvdW50ZXIgdG8gYSBnaXZlbiB2YWx1ZS4gSXQgbWFuaXB1bGF0ZXMgdGhlIHZhbHVlIG9mIGV4aXN0aW5nIGNvdW50ZXJzLCBhbmQgd2lsbCBvbmx5IGNyZWF0ZSBuZXcgY291bnRlcnMgaWYgdGhlcmUgaXNuJ3QgYWxyZWFkeSBhIGNvdW50ZXIgb2YgdGhlIGdpdmVuIG5hbWUgb24gdGhlIGVsZW1lbnQuIn0se25hbWU6ImZvbnQtb3B0aWNhbC1zaXppbmciLHN5bnRheDoiYXV0byB8IG5vbmUiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxNyIsIkZGNjIiLCJTMTEiLCJDNzkiLCJPNjYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC1vcHRpY2FsLXNpemluZyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGZvbnQtb3B0aWNhbC1zaXppbmcgQ1NTIHByb3BlcnR5IGFsbG93cyBkZXZlbG9wZXJzIHRvIGNvbnRyb2wgd2hldGhlciBicm93c2VycyByZW5kZXIgdGV4dCB3aXRoIHNsaWdodGx5IGRpZmZlcmluZyB2aXN1YWwgcmVwcmVzZW50YXRpb25zIHRvIG9wdGltaXplIHZpZXdpbmcgYXQgZGlmZmVyZW50IHNpemVzLCBvciBub3QuIFRoaXMgb25seSB3b3JrcyBmb3IgZm9udHMgdGhhdCBoYXZlIGFuIG9wdGljYWwgc2l6ZSB2YXJpYXRpb24gYXhpcy4ifSx7bmFtZToiZm9udC12YXJpYXRpb24tc2V0dGluZ3MiLHN5bnRheDoibm9ybWFsIHwgWyA8c3RyaW5nPiA8bnVtYmVyPiBdIyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTE3IiwiRkY2MiIsIlMxMSIsIkM2MiIsIk80OSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXZhcmlhdGlvbi1zZXR0aW5ncyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzIENTUyBwcm9wZXJ0eSBwcm92aWRlcyBsb3ctbGV2ZWwgY29udHJvbCBvdmVyIE9wZW5UeXBlIG9yIFRydWVUeXBlIGZvbnQgdmFyaWF0aW9ucywgYnkgc3BlY2lmeWluZyB0aGUgZm91ciBsZXR0ZXIgYXhpcyBuYW1lcyBvZiB0aGUgZmVhdHVyZXMgeW91IHdhbnQgdG8gdmFyeSwgYWxvbmcgd2l0aCB0aGVpciB2YXJpYXRpb24gdmFsdWVzLiJ9LHtuYW1lOiJmb250LXNtb290aCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJhdXRvIHwgbmV2ZXIgfCBhbHdheXMgfCA8YWJzb2x1dGUtc2l6ZT4gfCA8bGVuZ3RoPiIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJFNzkiLCJGRjI1IiwiUzQiLCJDNSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXNtb290aCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGZvbnQtc21vb3RoIENTUyBwcm9wZXJ0eSBjb250cm9scyB0aGUgYXBwbGljYXRpb24gb2YgYW50aS1hbGlhc2luZyB3aGVuIGZvbnRzIGFyZSByZW5kZXJlZC4ifSx7bmFtZToiZm9yY2VkLWNvbG9yLWFkanVzdCIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoiYXV0byB8IG5vbmUiLHJlbGV2YW5jZTo1Mixicm93c2VyczpbIkU3OSIsIkM4OSIsIklFMTAiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9yY2VkLWNvbG9yLWFkanVzdCJ9XSxkZXNjcmlwdGlvbjoiQWxsb3dzIGF1dGhvcnMgdG8gb3B0IGNlcnRhaW4gZWxlbWVudHMgb3V0IG9mIGZvcmNlZCBjb2xvcnMgbW9kZS4gVGhpcyB0aGVuIHJlc3RvcmVzIHRoZSBjb250cm9sIG9mIHRob3NlIHZhbHVlcyB0byBDU1MifSx7bmFtZToiZ2FwIixzeW50YXg6Ijwncm93LWdhcCc+IDwnY29sdW1uLWdhcCc+PyIscmVsZXZhbmNlOjU1LGJyb3dzZXJzOlsiRTg0IiwiRkY2MyIsIlMxNC4xIiwiQzg0IiwiTzcwIl0sZGVzY3JpcHRpb246IlRoZSBnYXAgQ1NTIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIHByb3BlcnR5IGZvciByb3ctZ2FwIGFuZCBjb2x1bW4tZ2FwIHNwZWNpZnlpbmcgdGhlIGd1dHRlcnMgYmV0d2VlbiBncmlkIHJvd3MgYW5kIGNvbHVtbnMuIn0se25hbWU6ImhhbmdpbmctcHVuY3R1YXRpb24iLHN5bnRheDoibm9uZSB8IFsgZmlyc3QgfHwgWyBmb3JjZS1lbmQgfCBhbGxvdy1lbmQgXSB8fCBsYXN0IF0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIlMxMCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9oYW5naW5nLXB1bmN0dWF0aW9uIn1dLGRlc2NyaXB0aW9uOiJUaGUgaGFuZ2luZy1wdW5jdHVhdGlvbiBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHdoZXRoZXIgYSBwdW5jdHVhdGlvbiBtYXJrIHNob3VsZCBoYW5nIGF0IHRoZSBzdGFydCBvciBlbmQgb2YgYSBsaW5lIG9mIHRleHQuIEhhbmdpbmcgcHVuY3R1YXRpb24gbWF5IGJlIHBsYWNlZCBvdXRzaWRlIHRoZSBsaW5lIGJveC4ifSx7bmFtZToiaHlwaGVuYXRlLWNoYXJhY3RlciIsc3ludGF4OiJhdXRvIHwgPHN0cmluZz4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGOTgiLCJTNS4xIiwiQzYiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaHlwaGVuYXRlLWNoYXJhY3RlciJ9XSxkZXNjcmlwdGlvbjoiQSBoeXBoZW5hdGUgY2hhcmFjdGVyIHVzZWQgYXQgdGhlIGVuZCBvZiBhIGxpbmUuIn0se25hbWU6ImltYWdlLXJlc29sdXRpb24iLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6IlsgZnJvbS1pbWFnZSB8fCA8cmVzb2x1dGlvbj4gXSAmJiBzbmFwPyIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UtcmVzb2x1dGlvbiBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIGludHJpbnNpYyByZXNvbHV0aW9uIG9mIGFsbCByYXN0ZXIgaW1hZ2VzIHVzZWQgaW4gb3Igb24gdGhlIGVsZW1lbnQuIEl0IGFmZmVjdHMgYm90aCBjb250ZW50IGltYWdlcyAoZS5nLiByZXBsYWNlZCBlbGVtZW50cyBhbmQgZ2VuZXJhdGVkIGNvbnRlbnQpIGFuZCBkZWNvcmF0aXZlIGltYWdlcyAoc3VjaCBhcyBiYWNrZ3JvdW5kLWltYWdlKS4gVGhlIGludHJpbnNpYyByZXNvbHV0aW9uIG9mIGFuIGltYWdlIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBpbWFnZeKAmXMgaW50cmluc2ljIGRpbWVuc2lvbnMuIn0se25hbWU6ImluaXRpYWwtbGV0dGVyIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJub3JtYWwgfCBbIDxudW1iZXI+IDxpbnRlZ2VyPj8gXSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiUzkiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaW5pdGlhbC1sZXR0ZXIifV0sZGVzY3JpcHRpb246IlRoZSBpbml0aWFsLWxldHRlciBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHN0eWxpbmcgZm9yIGRyb3BwZWQsIHJhaXNlZCwgYW5kIHN1bmtlbiBpbml0aWFsIGxldHRlcnMuIn0se25hbWU6ImluaXRpYWwtbGV0dGVyLWFsaWduIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJbIGF1dG8gfCBhbHBoYWJldGljIHwgaGFuZ2luZyB8IGlkZW9ncmFwaGljIF0iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaW5pdGlhbC1sZXR0ZXItYWxpZ24ifV0sZGVzY3JpcHRpb246IlRoZSBpbml0aWFsLWxldHRlci1hbGlnbiBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBhbGlnbm1lbnQgb2YgaW5pdGlhbCBsZXR0ZXJzIHdpdGhpbiBhIHBhcmFncmFwaC4ifSx7bmFtZToiaW5wdXQtc2VjdXJpdHkiLHN5bnRheDoiYXV0byB8IG5vbmUiLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgb2JzY3VyaW5nIGEgc2Vuc2l0aXZlIHRlc3QgaW5wdXQuIn0se25hbWU6Imluc2V0IixzeW50YXg6IjwndG9wJz57MSw0fSIscmVsZXZhbmNlOjUxLGJyb3dzZXJzOlsiRTg3IiwiRkY2NiIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2luc2V0In1dLGRlc2NyaXB0aW9uOiJUaGUgaW5zZXQgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGxvZ2ljYWwgYmxvY2sgYW5kIGlubGluZSBzdGFydCBhbmQgZW5kIG9mZnNldHMgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwIHRvIHBoeXNpY2FsIG9mZnNldHMgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSB0b3AgYW5kIGJvdHRvbSwgb3IgcmlnaHQgYW5kIGxlZnQgcHJvcGVydGllcyBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBkZWZpbmVkIGZvciB3cml0aW5nLW1vZGUsIGRpcmVjdGlvbiwgYW5kIHRleHQtb3JpZW50YXRpb24uIn0se25hbWU6Imluc2V0LWJsb2NrIixzeW50YXg6IjwndG9wJz57MSwyfSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg3IiwiRkY2MyIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2luc2V0LWJsb2NrIn1dLGRlc2NyaXB0aW9uOiJUaGUgaW5zZXQtYmxvY2sgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGxvZ2ljYWwgYmxvY2sgc3RhcnQgYW5kIGVuZCBvZmZzZXRzIG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gcGh5c2ljYWwgb2Zmc2V0cyBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nIG1vZGUsIGRpcmVjdGlvbmFsaXR5LCBhbmQgdGV4dCBvcmllbnRhdGlvbi4gSXQgY29ycmVzcG9uZHMgdG8gdGhlIHRvcCBhbmQgYm90dG9tLCBvciByaWdodCBhbmQgbGVmdCBwcm9wZXJ0aWVzIGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIGRlZmluZWQgZm9yIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiaW5zZXQtYmxvY2stZW5kIixzeW50YXg6IjwndG9wJz4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NyIsIkZGNjMiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9pbnNldC1ibG9jay1lbmQifV0sZGVzY3JpcHRpb246IlRoZSBpbnNldC1ibG9jay1lbmQgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGxvZ2ljYWwgYmxvY2sgZW5kIG9mZnNldCBvZiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIGEgcGh5c2ljYWwgb2Zmc2V0IGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmcgbW9kZSwgZGlyZWN0aW9uYWxpdHksIGFuZCB0ZXh0IG9yaWVudGF0aW9uLiBJdCBjb3JyZXNwb25kcyB0byB0aGUgdG9wLCByaWdodCwgYm90dG9tLCBvciBsZWZ0IHByb3BlcnR5IGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIGRlZmluZWQgZm9yIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiaW5zZXQtYmxvY2stc3RhcnQiLHN5bnRheDoiPCd0b3AnPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg3IiwiRkY2MyIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2luc2V0LWJsb2NrLXN0YXJ0In1dLGRlc2NyaXB0aW9uOiJUaGUgaW5zZXQtYmxvY2stc3RhcnQgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGxvZ2ljYWwgYmxvY2sgc3RhcnQgb2Zmc2V0IG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBvZmZzZXQgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSB0b3AsIHJpZ2h0LCBib3R0b20sIG9yIGxlZnQgcHJvcGVydHkgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgZGVmaW5lZCBmb3Igd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJpbnNldC1pbmxpbmUiLHN5bnRheDoiPCd0b3AnPnsxLDJ9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODciLCJGRjYzIiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaW5zZXQtaW5saW5lIn1dLGRlc2NyaXB0aW9uOiJUaGUgaW5zZXQtaW5saW5lIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBsb2dpY2FsIGJsb2NrIHN0YXJ0IGFuZCBlbmQgb2Zmc2V0cyBvZiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIHBoeXNpY2FsIG9mZnNldHMgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSB0b3AgYW5kIGJvdHRvbSwgb3IgcmlnaHQgYW5kIGxlZnQgcHJvcGVydGllcyBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBkZWZpbmVkIGZvciB3cml0aW5nLW1vZGUsIGRpcmVjdGlvbiwgYW5kIHRleHQtb3JpZW50YXRpb24uIn0se25hbWU6Imluc2V0LWlubGluZS1lbmQiLHN5bnRheDoiPCd0b3AnPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg3IiwiRkY2MyIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2luc2V0LWlubGluZS1lbmQifV0sZGVzY3JpcHRpb246IlRoZSBpbnNldC1pbmxpbmUtZW5kIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBsb2dpY2FsIGlubGluZSBlbmQgaW5zZXQgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBhIHBoeXNpY2FsIGluc2V0IGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmcgbW9kZSwgZGlyZWN0aW9uYWxpdHksIGFuZCB0ZXh0IG9yaWVudGF0aW9uLiBJdCBjb3JyZXNwb25kcyB0byB0aGUgdG9wLCByaWdodCwgYm90dG9tLCBvciBsZWZ0IHByb3BlcnR5IGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIGRlZmluZWQgZm9yIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiaW5zZXQtaW5saW5lLXN0YXJ0IixzeW50YXg6IjwndG9wJz4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NyIsIkZGNjMiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9pbnNldC1pbmxpbmUtc3RhcnQifV0sZGVzY3JpcHRpb246IlRoZSBpbnNldC1pbmxpbmUtc3RhcnQgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGxvZ2ljYWwgaW5saW5lIHN0YXJ0IGluc2V0IG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBvZmZzZXQgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSB0b3AsIHJpZ2h0LCBib3R0b20sIG9yIGxlZnQgcHJvcGVydHkgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgZGVmaW5lZCBmb3Igd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJqdXN0aWZ5LXRyYWNrcyIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoiWyBub3JtYWwgfCA8Y29udGVudC1kaXN0cmlidXRpb24+IHwgPG92ZXJmbG93LXBvc2l0aW9uPj8gWyA8Y29udGVudC1wb3NpdGlvbj4gfCBsZWZ0IHwgcmlnaHQgXSBdIyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRkY3NyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9qdXN0aWZ5LXRyYWNrcyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGp1c3RpZnktdHJhY2tzIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBhbGlnbm1lbnQgaW4gdGhlIG1hc29ucnkgYXhpcyBmb3IgZ3JpZCBjb250YWluZXJzIHRoYXQgaGF2ZSBtYXNvbnJ5IGluIHRoZWlyIGlubGluZSBheGlzIn0se25hbWU6ImxpbmUtY2xhbXAiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Im5vbmUgfCA8aW50ZWdlcj4iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlIGxpbmUtY2xhbXAgcHJvcGVydHkgYWxsb3dzIGxpbWl0aW5nIHRoZSBjb250ZW50cyBvZiBhIGJsb2NrIGNvbnRhaW5lciB0byB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBsaW5lczsgcmVtYWluaW5nIGNvbnRlbnQgaXMgZnJhZ21lbnRlZCBhd2F5IGFuZCBuZWl0aGVyIHJlbmRlcmVkIG5vciBtZWFzdXJlZC4gT3B0aW9uYWxseSwgaXQgYWxzbyBhbGxvd3MgaW5zZXJ0aW5nIGNvbnRlbnQgaW50byB0aGUgbGFzdCBsaW5lIGJveCB0byBpbmRpY2F0ZSB0aGUgY29udGludWl0eSBvZiB0cnVuY2F0ZWQvaW50ZXJydXB0ZWQgY29udGVudC4ifSx7bmFtZToibGluZS1oZWlnaHQtc3RlcCIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoiPGxlbmd0aD4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkM2MCIsIk80NyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9saW5lLWhlaWdodC1zdGVwIn1dLGRlc2NyaXB0aW9uOiJUaGUgbGluZS1oZWlnaHQtc3RlcCBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgc3RlcCB1bml0cyBmb3IgbGluZSBib3ggaGVpZ2h0cy4gV2hlbiB0aGUgc3RlcCB1bml0IGlzIHBvc2l0aXZlLCBsaW5lIGJveCBoZWlnaHRzIGFyZSByb3VuZGVkIHVwIHRvIHRoZSBjbG9zZXN0IG11bHRpcGxlIG9mIHRoZSB1bml0LiBOZWdhdGl2ZSB2YWx1ZXMgYXJlIGludmFsaWQuIn0se25hbWU6Im1hcmdpbi1ibG9jayIsc3ludGF4OiI8J21hcmdpbi1sZWZ0Jz57MSwyfSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg3IiwiRkY2NiIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hcmdpbi1ibG9jayJ9XSxkZXNjcmlwdGlvbjoiVGhlIG1hcmdpbi1ibG9jayBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgbG9naWNhbCBibG9jayBzdGFydCBhbmQgZW5kIG1hcmdpbnMgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBwaHlzaWNhbCBtYXJnaW5zIGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmcgbW9kZSwgZGlyZWN0aW9uYWxpdHksIGFuZCB0ZXh0IG9yaWVudGF0aW9uLiJ9LHtuYW1lOiJtYXJnaW4taW5saW5lIixzeW50YXg6IjwnbWFyZ2luLWxlZnQnPnsxLDJ9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODciLCJGRjY2IiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFyZ2luLWlubGluZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIG1hcmdpbi1pbmxpbmUgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGxvZ2ljYWwgaW5saW5lIHN0YXJ0IGFuZCBlbmQgbWFyZ2lucyBvZiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIHBoeXNpY2FsIG1hcmdpbnMgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIn0se25hbWU6Im1hcmdpbi10cmltIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJub25lIHwgaW4tZmxvdyB8IGFsbCIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXJnaW4tdHJpbSJ9XSxkZXNjcmlwdGlvbjoiVGhlIG1hcmdpbi10cmltIHByb3BlcnR5IGFsbG93cyB0aGUgY29udGFpbmVyIHRvIHRyaW0gdGhlIG1hcmdpbnMgb2YgaXRzIGNoaWxkcmVuIHdoZXJlIHRoZXkgYWRqb2luIHRoZSBjb250YWluZXLigJlzIGVkZ2VzLiJ9LHtuYW1lOiJtYXNrIixzeW50YXg6IjxtYXNrLWxheWVyPiMiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGMiIsIlMzLjEiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrIn1dLGRlc2NyaXB0aW9uOiJUaGUgbWFzayBDU1MgcHJvcGVydHkgYWx0ZXJzIHRoZSB2aXNpYmlsaXR5IG9mIGFuIGVsZW1lbnQgYnkgZWl0aGVyIHBhcnRpYWxseSBvciBmdWxseSBoaWRpbmcgaXQuIFRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5IGVpdGhlciBtYXNraW5nIG9yIGNsaXBwaW5nIHRoZSBpbWFnZSBhdCBzcGVjaWZpYyBwb2ludHMuIn0se25hbWU6Im1hc2stYm9yZGVyIixzeW50YXg6IjwnbWFzay1ib3JkZXItc291cmNlJz4gfHwgPCdtYXNrLWJvcmRlci1zbGljZSc+IFsgLyA8J21hc2stYm9yZGVyLXdpZHRoJz4/IFsgLyA8J21hc2stYm9yZGVyLW91dHNldCc+IF0/IF0/IHx8IDwnbWFzay1ib3JkZXItcmVwZWF0Jz4gfHwgPCdtYXNrLWJvcmRlci1tb2RlJz4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIlMzLjEiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLWJvcmRlciJ9XSxkZXNjcmlwdGlvbjoiVGhlIG1hc2stYm9yZGVyIENTUyBwcm9wZXJ0eSBsZXRzIHlvdSBjcmVhdGUgYSBtYXNrIGFsb25nIHRoZSBlZGdlIG9mIGFuIGVsZW1lbnQncyBib3JkZXIuXG5cblRoaXMgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgZm9yIG1hc2stYm9yZGVyLXNvdXJjZSwgbWFzay1ib3JkZXItc2xpY2UsIG1hc2stYm9yZGVyLXdpZHRoLCBtYXNrLWJvcmRlci1vdXRzZXQsIG1hc2stYm9yZGVyLXJlcGVhdCwgYW5kIG1hc2stYm9yZGVyLW1vZGUuIEFzIHdpdGggYWxsIHNob3J0aGFuZCBwcm9wZXJ0aWVzLCBhbnkgb21pdHRlZCBzdWItdmFsdWVzIHdpbGwgYmUgc2V0IHRvIHRoZWlyIGluaXRpYWwgdmFsdWUuIn0se25hbWU6Im1hc2stYm9yZGVyLW1vZGUiLHN5bnRheDoibHVtaW5hbmNlIHwgYWxwaGEiLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlIG1hc2stYm9yZGVyLW1vZGUgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgYmxlbmRpbmcgbW9kZSB1c2VkIGluIGEgbWFzayBib3JkZXIuIn0se25hbWU6Im1hc2stYm9yZGVyLW91dHNldCIsc3ludGF4OiJbIDxsZW5ndGg+IHwgPG51bWJlcj4gXXsxLDR9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJTMy4xIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFzay1ib3JkZXItb3V0c2V0In1dLGRlc2NyaXB0aW9uOiJUaGUgbWFzay1ib3JkZXItb3V0c2V0IENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIGRpc3RhbmNlIGJ5IHdoaWNoIGFuIGVsZW1lbnQncyBtYXNrIGJvcmRlciBpcyBzZXQgb3V0IGZyb20gaXRzIGJvcmRlciBib3guIn0se25hbWU6Im1hc2stYm9yZGVyLXJlcGVhdCIsc3ludGF4OiJbIHN0cmV0Y2ggfCByZXBlYXQgfCByb3VuZCB8IHNwYWNlIF17MSwyfSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiUzMuMSIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hc2stYm9yZGVyLXJlcGVhdCJ9XSxkZXNjcmlwdGlvbjoiVGhlIG1hc2stYm9yZGVyLXJlcGVhdCBDU1MgcHJvcGVydHkgZGVmaW5lcyBob3cgdGhlIGVkZ2UgcmVnaW9ucyBvZiBhIHNvdXJjZSBpbWFnZSBhcmUgYWRqdXN0ZWQgdG8gZml0IHRoZSBkaW1lbnNpb25zIG9mIGFuIGVsZW1lbnQncyBtYXNrIGJvcmRlci4ifSx7bmFtZToibWFzay1ib3JkZXItc2xpY2UiLHN5bnRheDoiPG51bWJlci1wZXJjZW50YWdlPnsxLDR9IGZpbGw/IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJTMy4xIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFzay1ib3JkZXItc2xpY2UifV0sZGVzY3JpcHRpb246IlRoZSBtYXNrLWJvcmRlci1zbGljZSBDU1MgcHJvcGVydHkgZGl2aWRlcyB0aGUgaW1hZ2Ugc3BlY2lmaWVkIGJ5IG1hc2stYm9yZGVyLXNvdXJjZSBpbnRvIHJlZ2lvbnMuIFRoZXNlIHJlZ2lvbnMgYXJlIHVzZWQgdG8gZm9ybSB0aGUgY29tcG9uZW50cyBvZiBhbiBlbGVtZW50J3MgbWFzayBib3JkZXIuIn0se25hbWU6Im1hc2stYm9yZGVyLXNvdXJjZSIsc3ludGF4OiJub25lIHwgPGltYWdlPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiUzMuMSIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hc2stYm9yZGVyLXNvdXJjZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIG1hc2stYm9yZGVyLXNvdXJjZSBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBzb3VyY2UgaW1hZ2UgdXNlZCB0byBjcmVhdGUgYW4gZWxlbWVudCdzIG1hc2sgYm9yZGVyLlxuXG5UaGUgbWFzay1ib3JkZXItc2xpY2UgcHJvcGVydHkgaXMgdXNlZCB0byBkaXZpZGUgdGhlIHNvdXJjZSBpbWFnZSBpbnRvIHJlZ2lvbnMsIHdoaWNoIGFyZSB0aGVuIGR5bmFtaWNhbGx5IGFwcGxpZWQgdG8gdGhlIGZpbmFsIG1hc2sgYm9yZGVyLiJ9LHtuYW1lOiJtYXNrLWJvcmRlci13aWR0aCIsc3ludGF4OiJbIDxsZW5ndGgtcGVyY2VudGFnZT4gfCA8bnVtYmVyPiB8IGF1dG8gXXsxLDR9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJTMy4xIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFzay1ib3JkZXItd2lkdGgifV0sZGVzY3JpcHRpb246IlRoZSBtYXNrLWJvcmRlci13aWR0aCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSB3aWR0aCBvZiBhbiBlbGVtZW50J3MgbWFzayBib3JkZXIuIn0se25hbWU6Im1hc2stY2xpcCIsc3ludGF4OiJbIDxnZW9tZXRyeS1ib3g+IHwgbm8tY2xpcCBdIyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY1MyIsIlMxNS40IiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFzay1jbGlwIn1dLGRlc2NyaXB0aW9uOiJUaGUgbWFzay1jbGlwIENTUyBwcm9wZXJ0eSBkZXRlcm1pbmVzIHRoZSBhcmVhLCB3aGljaCBpcyBhZmZlY3RlZCBieSBhIG1hc2suIFRoZSBwYWludGVkIGNvbnRlbnQgb2YgYW4gZWxlbWVudCBtdXN0IGJlIHJlc3RyaWN0ZWQgdG8gdGhpcyBhcmVhLiJ9LHtuYW1lOiJtYXNrLWNvbXBvc2l0ZSIsc3ludGF4OiI8Y29tcG9zaXRpbmctb3BlcmF0b3I+IyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTE4IiwiRkY1MyIsIlMxNS40Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hc2stY29tcG9zaXRlIn1dLGRlc2NyaXB0aW9uOiJUaGUgbWFzay1jb21wb3NpdGUgQ1NTIHByb3BlcnR5IHJlcHJlc2VudHMgYSBjb21wb3NpdGluZyBvcGVyYXRpb24gdXNlZCBvbiB0aGUgY3VycmVudCBtYXNrIGxheWVyIHdpdGggdGhlIG1hc2sgbGF5ZXJzIGJlbG93IGl0LiJ9LHtuYW1lOiJtYXNvbnJ5LWF1dG8tZmxvdyIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoiWyBwYWNrIHwgbmV4dCBdIHx8IFsgZGVmaW5pdGUtZmlyc3QgfCBvcmRlcmVkIF0iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFzb25yeS1hdXRvLWZsb3cifV0sZGVzY3JpcHRpb246IlRoZSBtYXNvbnJ5LWF1dG8tZmxvdyBDU1MgcHJvcGVydHkgbW9kaWZpZXMgaG93IGl0ZW1zIGFyZSBwbGFjZWQgd2hlbiB1c2luZyBtYXNvbnJ5IGluIENTUyBHcmlkIExheW91dC4ifSx7bmFtZToibWF0aC1zdHlsZSIsc3ludGF4OiJub3JtYWwgfCBjb21wYWN0IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJGRjgzIiwiUzE0LjEiLCJDODMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWF0aC1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIG1hdGgtc3R5bGUgcHJvcGVydHkgaW5kaWNhdGVzIHdoZXRoZXIgTWF0aE1MIGVxdWF0aW9ucyBzaG91bGQgcmVuZGVyIHdpdGggbm9ybWFsIG9yIGNvbXBhY3QgaGVpZ2h0LiJ9LHtuYW1lOiJtYXgtbGluZXMiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Im5vbmUgfCA8aW50ZWdlcj4iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlIG1heC1saWVucyBwcm9wZXJ0eSBmb3JjZXMgYSBicmVhayBhZnRlciBhIHNldCBudW1iZXIgb2YgbGluZXMifSx7bmFtZToib2Zmc2V0IixzeW50YXg6IlsgPCdvZmZzZXQtcG9zaXRpb24nPj8gWyA8J29mZnNldC1wYXRoJz4gWyA8J29mZnNldC1kaXN0YW5jZSc+IHx8IDwnb2Zmc2V0LXJvdGF0ZSc+IF0/IF0/IF0hIFsgLyA8J29mZnNldC1hbmNob3InPiBdPyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY3MiIsIkM1NSIsIk80MiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vZmZzZXQifV0sZGVzY3JpcHRpb246IlRoZSBvZmZzZXQgQ1NTIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIHByb3BlcnR5IGZvciBhbmltYXRpbmcgYW4gZWxlbWVudCBhbG9uZyBhIGRlZmluZWQgcGF0aC4ifSx7bmFtZToib2Zmc2V0LWFuY2hvciIsc3ludGF4OiJhdXRvIHwgPHBvc2l0aW9uPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRkY3MiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vZmZzZXQtYW5jaG9yIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGFuIGFuY2hvciBwb2ludCBvZiB0aGUgYm94IHBvc2l0aW9uZWQgYWxvbmcgdGhlIHBhdGguIFRoZSBhbmNob3IgcG9pbnQgc3BlY2lmaWVzIHRoZSBwb2ludCBvZiB0aGUgYm94IHdoaWNoIGlzIHRvIGJlIGNvbnNpZGVyZWQgYXMgdGhlIHBvaW50IHRoYXQgaXMgbW92ZWQgYWxvbmcgdGhlIHBhdGguIn0se25hbWU6Im9mZnNldC1kaXN0YW5jZSIsc3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjcyIiwiQzU1IiwiTzQyIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL29mZnNldC1kaXN0YW5jZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIG9mZnNldC1kaXN0YW5jZSBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIGEgcG9zaXRpb24gYWxvbmcgYW4gb2Zmc2V0LXBhdGguIn0se25hbWU6Im9mZnNldC1wYXRoIixzeW50YXg6Im5vbmUgfCByYXkoIFsgPGFuZ2xlPiAmJiA8c2l6ZT4gJiYgY29udGFpbj8gXSApIHwgPHBhdGgoKT4gfCA8dXJsPiB8IFsgPGJhc2ljLXNoYXBlPiB8fCA8Z2VvbWV0cnktYm94PiBdIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjcyIiwiQzU1IiwiTzQ1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL29mZnNldC1wYXRoIn1dLGRlc2NyaXB0aW9uOidUaGUgb2Zmc2V0LXBhdGggQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgb2Zmc2V0IHBhdGggd2hlcmUgdGhlIGVsZW1lbnQgZ2V0cyBwb3NpdGlvbmVkLiBUaGUgZXhhY3QgZWxlbWVudOKAmXMgcG9zaXRpb24gb24gdGhlIG9mZnNldCBwYXRoIGlzIGRldGVybWluZWQgYnkgdGhlIG9mZnNldC1kaXN0YW5jZSBwcm9wZXJ0eS4gQW4gb2Zmc2V0IHBhdGggaXMgZWl0aGVyIGEgc3BlY2lmaWVkIHBhdGggd2l0aCBvbmUgb3IgbXVsdGlwbGUgc3ViLXBhdGhzIG9yIHRoZSBnZW9tZXRyeSBvZiBhIG5vdC1zdHlsZWQgYmFzaWMgc2hhcGUuIEVhY2ggc2hhcGUgb3IgcGF0aCBtdXN0IGRlZmluZSBhbiBpbml0aWFsIHBvc2l0aW9uIGZvciB0aGUgY29tcHV0ZWQgdmFsdWUgb2YgIjAiIGZvciBvZmZzZXQtZGlzdGFuY2UgYW5kIGFuIGluaXRpYWwgZGlyZWN0aW9uIHdoaWNoIHNwZWNpZmllcyB0aGUgcm90YXRpb24gb2YgdGhlIG9iamVjdCB0byB0aGUgaW5pdGlhbCBwb3NpdGlvbi5cblxuSW4gdGhpcyBzcGVjaWZpY2F0aW9uLCBhIGRpcmVjdGlvbiAob3Igcm90YXRpb24pIG9mIDAgZGVncmVlcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHBvc2l0aXZlIHgtYXhpcyBpbiB0aGUgb2JqZWN04oCZcyBsb2NhbCBjb29yZGluYXRlIHN5c3RlbS4gSW4gb3RoZXIgd29yZHMsIGEgcm90YXRpb24gb2YgMCBkZWdyZWUgcG9pbnRzIHRvIHRoZSByaWdodCBzaWRlIG9mIHRoZSBVQSBpZiB0aGUgb2JqZWN0IGFuZCBpdHMgYW5jZXN0b3JzIGhhdmUgbm8gdHJhbnNmb3JtYXRpb24gYXBwbGllZC4nfSx7bmFtZToib2Zmc2V0LXBvc2l0aW9uIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJhdXRvIHwgPHBvc2l0aW9uPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vZmZzZXQtcG9zaXRpb24ifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgaW5pdGlhbCBwb3NpdGlvbiBvZiB0aGUgb2Zmc2V0IHBhdGguIElmIHBvc2l0aW9uIGlzIHNwZWNpZmllZCB3aXRoIHN0YXRpYywgb2Zmc2V0LXBvc2l0aW9uIHdvdWxkIGJlIGlnbm9yZWQuIn0se25hbWU6Im9mZnNldC1yb3RhdGUiLHN5bnRheDoiWyBhdXRvIHwgcmV2ZXJzZSBdIHx8IDxhbmdsZT4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNzIiLCJDNTYiLCJPNDMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb2Zmc2V0LXJvdGF0ZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIG9mZnNldC1yb3RhdGUgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGRpcmVjdGlvbiBvZiB0aGUgZWxlbWVudCB3aGlsZSBwb3NpdGlvbmluZyBhbG9uZyB0aGUgb2Zmc2V0IHBhdGguIn0se25hbWU6Im92ZXJmbG93LWFuY2hvciIsc3ludGF4OiJhdXRvIHwgbm9uZSIscmVsZXZhbmNlOjUyLGJyb3dzZXJzOlsiRTc5IiwiRkY2NiIsIkM1NiIsIk80MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdmVyZmxvdy1hbmNob3IifV0sZGVzY3JpcHRpb246IlRoZSBvdmVyZmxvdy1hbmNob3IgQ1NTIHByb3BlcnR5IHByb3ZpZGVzIGEgd2F5IHRvIG9wdCBvdXQgYnJvd3NlciBzY3JvbGwgYW5jaG9yaW5nIGJlaGF2aW9yIHdoaWNoIGFkanVzdHMgc2Nyb2xsIHBvc2l0aW9uIHRvIG1pbmltaXplIGNvbnRlbnQgc2hpZnRzLiJ9LHtuYW1lOiJvdmVyZmxvdy1ibG9jayIsc3ludGF4OiJ2aXNpYmxlIHwgaGlkZGVuIHwgY2xpcCB8IHNjcm9sbCB8IGF1dG8iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkZGNjkiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb3ZlcmZsb3ctYmxvY2sifV0sZGVzY3JpcHRpb246IlRoZSBvdmVyZmxvdy1ibG9jayBDU1MgbWVkaWEgZmVhdHVyZSBjYW4gYmUgdXNlZCB0byB0ZXN0IGhvdyB0aGUgb3V0cHV0IGRldmljZSBoYW5kbGVzIGNvbnRlbnQgdGhhdCBvdmVyZmxvd3MgdGhlIGluaXRpYWwgY29udGFpbmluZyBibG9jayBhbG9uZyB0aGUgYmxvY2sgYXhpcy4ifSx7bmFtZToib3ZlcmZsb3ctY2xpcC1ib3giLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoicGFkZGluZy1ib3ggfCBjb250ZW50LWJveCIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJGRjI5Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9Nb3ppbGxhL0dlY2tvL0Nocm9tZS9DU1Mvb3ZlcmZsb3ctY2xpcC1ib3gifV0sZGVzY3JpcHRpb246IlRoZSBvdmVyZmxvdy1jbGlwLWJveCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHJlbGF0aXZlIHRvIHdoaWNoIGJveCB0aGUgY2xpcHBpbmcgaGFwcGVucyB3aGVuIHRoZXJlIGlzIGFuIG92ZXJmbG93LiBJdCBpcyBzaG9ydCBoYW5kIGZvciB0aGUgb3ZlcmZsb3ctY2xpcC1ib3gtaW5saW5lIGFuZCBvdmVyZmxvdy1jbGlwLWJveC1ibG9jayBwcm9wZXJ0aWVzLiJ9LHtuYW1lOiJvdmVyZmxvdy1jbGlwLW1hcmdpbiIsc3ludGF4OiI8dmlzdWFsLWJveD4gfHwgPGxlbmd0aCBbMCziiJ5dPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTkwIiwiQzkwIiwiTzc2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL292ZXJmbG93LWNsaXAtbWFyZ2luIn1dLGRlc2NyaXB0aW9uOiJUaGUgb3ZlcmZsb3ctY2xpcC1tYXJnaW4gQ1NTIHByb3BlcnR5IGRldGVybWluZXMgaG93IGZhciBvdXRzaWRlIGl0cyBib3VuZHMgYW4gZWxlbWVudCB3aXRoIG92ZXJmbG93OiBjbGlwIG1heSBiZSBwYWludGVkIGJlZm9yZSBiZWluZyBjbGlwcGVkLiJ9LHtuYW1lOiJvdmVyZmxvdy1pbmxpbmUiLHN5bnRheDoidmlzaWJsZSB8IGhpZGRlbiB8IGNsaXAgfCBzY3JvbGwgfCBhdXRvIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJGRjY5Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL292ZXJmbG93LWlubGluZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIG92ZXJmbG93LWlubGluZSBDU1MgbWVkaWEgZmVhdHVyZSBjYW4gYmUgdXNlZCB0byB0ZXN0IGhvdyB0aGUgb3V0cHV0IGRldmljZSBoYW5kbGVzIGNvbnRlbnQgdGhhdCBvdmVyZmxvd3MgdGhlIGluaXRpYWwgY29udGFpbmluZyBibG9jayBhbG9uZyB0aGUgaW5saW5lIGF4aXMuIn0se25hbWU6Im92ZXJzY3JvbGwtYmVoYXZpb3IiLHN5bnRheDoiWyBjb250YWluIHwgbm9uZSB8IGF1dG8gXXsxLDJ9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTgiLCJGRjU5IiwiQzYzIiwiTzUwIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL292ZXJzY3JvbGwtYmVoYXZpb3IifV0sZGVzY3JpcHRpb246IlRoZSBvdmVyc2Nyb2xsLWJlaGF2aW9yIENTUyBwcm9wZXJ0eSBpcyBzaG9ydGhhbmQgZm9yIHRoZSBvdmVyc2Nyb2xsLWJlaGF2aW9yLXggYW5kIG92ZXJzY3JvbGwtYmVoYXZpb3IteSBwcm9wZXJ0aWVzLCB3aGljaCBhbGxvdyB5b3UgdG8gY29udHJvbCB0aGUgYnJvd3NlcidzIHNjcm9sbCBvdmVyZmxvdyBiZWhhdmlvciDigJQgd2hhdCBoYXBwZW5zIHdoZW4gdGhlIGJvdW5kYXJ5IG9mIGEgc2Nyb2xsaW5nIGFyZWEgaXMgcmVhY2hlZC4ifSx7bmFtZToib3ZlcnNjcm9sbC1iZWhhdmlvci1ibG9jayIsc3ludGF4OiJjb250YWluIHwgbm9uZSB8IGF1dG8iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNzMiLCJDNzciLCJPNjQiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb3ZlcnNjcm9sbC1iZWhhdmlvci1ibG9jayJ9XSxkZXNjcmlwdGlvbjoiVGhlIG92ZXJzY3JvbGwtYmVoYXZpb3ItYmxvY2sgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGJyb3dzZXIncyBiZWhhdmlvciB3aGVuIHRoZSBibG9jayBkaXJlY3Rpb24gYm91bmRhcnkgb2YgYSBzY3JvbGxpbmcgYXJlYSBpcyByZWFjaGVkLiJ9LHtuYW1lOiJvdmVyc2Nyb2xsLWJlaGF2aW9yLWlubGluZSIsc3ludGF4OiJjb250YWluIHwgbm9uZSB8IGF1dG8iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNzMiLCJDNzciLCJPNjQiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb3ZlcnNjcm9sbC1iZWhhdmlvci1pbmxpbmUifV0sZGVzY3JpcHRpb246IlRoZSBvdmVyc2Nyb2xsLWJlaGF2aW9yLWlubGluZSBDU1MgcHJvcGVydHkgc2V0cyB0aGUgYnJvd3NlcidzIGJlaGF2aW9yIHdoZW4gdGhlIGlubGluZSBkaXJlY3Rpb24gYm91bmRhcnkgb2YgYSBzY3JvbGxpbmcgYXJlYSBpcyByZWFjaGVkLiJ9LHtuYW1lOiJvdmVyc2Nyb2xsLWJlaGF2aW9yLXgiLHN5bnRheDoiY29udGFpbiB8IG5vbmUgfCBhdXRvIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTgiLCJGRjU5IiwiQzYzIiwiTzUwIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL292ZXJzY3JvbGwtYmVoYXZpb3IteCJ9XSxkZXNjcmlwdGlvbjoiVGhlIG92ZXJzY3JvbGwtYmVoYXZpb3IteCBDU1MgcHJvcGVydHkgaXMgYWxsb3dzIHlvdSB0byBjb250cm9sIHRoZSBicm93c2VyJ3Mgc2Nyb2xsIG92ZXJmbG93IGJlaGF2aW9yIOKAlCB3aGF0IGhhcHBlbnMgd2hlbiB0aGUgYm91bmRhcnkgb2YgYSBzY3JvbGxpbmcgYXJlYSBpcyByZWFjaGVkIOKAlCBpbiB0aGUgeCBheGlzIGRpcmVjdGlvbi4ifSx7bmFtZToib3ZlcnNjcm9sbC1iZWhhdmlvci15IixzeW50YXg6ImNvbnRhaW4gfCBub25lIHwgYXV0byIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTE4IiwiRkY1OSIsIkM2MyIsIk81MCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXkifV0sZGVzY3JpcHRpb246IlRoZSBvdmVyc2Nyb2xsLWJlaGF2aW9yLXkgQ1NTIHByb3BlcnR5IGlzIGFsbG93cyB5b3UgdG8gY29udHJvbCB0aGUgYnJvd3NlcidzIHNjcm9sbCBvdmVyZmxvdyBiZWhhdmlvciDigJQgd2hhdCBoYXBwZW5zIHdoZW4gdGhlIGJvdW5kYXJ5IG9mIGEgc2Nyb2xsaW5nIGFyZWEgaXMgcmVhY2hlZCDigJQgaW4gdGhlIHkgYXhpcyBkaXJlY3Rpb24uIn0se25hbWU6InBhZGRpbmctYmxvY2siLHN5bnRheDoiPCdwYWRkaW5nLWxlZnQnPnsxLDJ9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODciLCJGRjY2IiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGFkZGluZy1ibG9jayJ9XSxkZXNjcmlwdGlvbjoiVGhlIHBhZGRpbmctYmxvY2sgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGxvZ2ljYWwgYmxvY2sgc3RhcnQgYW5kIGVuZCBwYWRkaW5nIG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gcGh5c2ljYWwgcGFkZGluZyBwcm9wZXJ0aWVzIGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmcgbW9kZSwgZGlyZWN0aW9uYWxpdHksIGFuZCB0ZXh0IG9yaWVudGF0aW9uLiJ9LHtuYW1lOiJwYWRkaW5nLWlubGluZSIsc3ludGF4OiI8J3BhZGRpbmctbGVmdCc+ezEsMn0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NyIsIkZGNjYiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWRkaW5nLWlubGluZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIHBhZGRpbmctaW5saW5lIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBsb2dpY2FsIGlubGluZSBzdGFydCBhbmQgZW5kIHBhZGRpbmcgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBwaHlzaWNhbCBwYWRkaW5nIHByb3BlcnRpZXMgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIn0se25hbWU6InBsYWNlLWNvbnRlbnQiLHN5bnRheDoiPCdhbGlnbi1jb250ZW50Jz4gPCdqdXN0aWZ5LWNvbnRlbnQnPj8iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNDUiLCJTOSIsIkM1OSIsIk80NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wbGFjZS1jb250ZW50In1dLGRlc2NyaXB0aW9uOiJUaGUgcGxhY2UtY29udGVudCBDU1Mgc2hvcnRoYW5kIHByb3BlcnR5IHNldHMgYm90aCB0aGUgYWxpZ24tY29udGVudCBhbmQganVzdGlmeS1jb250ZW50IHByb3BlcnRpZXMuIn0se25hbWU6InBsYWNlLWl0ZW1zIixzeW50YXg6IjwnYWxpZ24taXRlbXMnPiA8J2p1c3RpZnktaXRlbXMnPj8iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNDUiLCJTMTEiLCJDNTkiLCJPNDYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGxhY2UtaXRlbXMifV0sZGVzY3JpcHRpb246IlRoZSBDU1MgcGxhY2UtaXRlbXMgc2hvcnRoYW5kIHByb3BlcnR5IHNldHMgYm90aCB0aGUgYWxpZ24taXRlbXMgYW5kIGp1c3RpZnktaXRlbXMgcHJvcGVydGllcy4gVGhlIGZpcnN0IHZhbHVlIGlzIHRoZSBhbGlnbi1pdGVtcyBwcm9wZXJ0eSB2YWx1ZSwgdGhlIHNlY29uZCB0aGUganVzdGlmeS1pdGVtcyBvbmUuIElmIHRoZSBzZWNvbmQgdmFsdWUgaXMgbm90IHByZXNlbnQsIHRoZSBmaXJzdCB2YWx1ZSBpcyBhbHNvIHVzZWQgZm9yIGl0LiJ9LHtuYW1lOiJwbGFjZS1zZWxmIixzeW50YXg6IjwnYWxpZ24tc2VsZic+IDwnanVzdGlmeS1zZWxmJz4/IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjQ1IiwiUzExIiwiQzU5IiwiTzQ2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BsYWNlLXNlbGYifV0sZGVzY3JpcHRpb246IlRoZSBwbGFjZS1zZWxmIENTUyBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSBzZXRzIGJvdGggdGhlIGFsaWduLXNlbGYgYW5kIGp1c3RpZnktc2VsZiBwcm9wZXJ0aWVzLiBUaGUgZmlyc3QgdmFsdWUgaXMgdGhlIGFsaWduLXNlbGYgcHJvcGVydHkgdmFsdWUsIHRoZSBzZWNvbmQgdGhlIGp1c3RpZnktc2VsZiBvbmUuIElmIHRoZSBzZWNvbmQgdmFsdWUgaXMgbm90IHByZXNlbnQsIHRoZSBmaXJzdCB2YWx1ZSBpcyBhbHNvIHVzZWQgZm9yIGl0LiJ9LHtuYW1lOiJyb3RhdGUiLHN5bnRheDoibm9uZSB8IDxhbmdsZT4gfCBbIHggfCB5IHwgeiB8IDxudW1iZXI+ezN9IF0gJiYgPGFuZ2xlPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRkY3MiIsIlMxNC4xIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3JvdGF0ZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIHJvdGF0ZSBDU1MgcHJvcGVydHkgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IHJvdGF0aW9uIHRyYW5zZm9ybXMgaW5kaXZpZHVhbGx5IGFuZCBpbmRlcGVuZGVudGx5IG9mIHRoZSB0cmFuc2Zvcm0gcHJvcGVydHkuIFRoaXMgbWFwcyBiZXR0ZXIgdG8gdHlwaWNhbCB1c2VyIGludGVyZmFjZSB1c2FnZSwgYW5kIHNhdmVzIGhhdmluZyB0byByZW1lbWJlciB0aGUgZXhhY3Qgb3JkZXIgb2YgdHJhbnNmb3JtIGZ1bmN0aW9ucyB0byBzcGVjaWZ5IGluIHRoZSB0cmFuc2Zvcm0gdmFsdWUuIn0se25hbWU6InJvdy1nYXAiLHN5bnRheDoibm9ybWFsIHwgPGxlbmd0aC1wZXJjZW50YWdlPiIscmVsZXZhbmNlOjUxLGJyb3dzZXJzOlsiRTg0IiwiRkY2MyIsIlMxNC4xIiwiQzg0IiwiTzcwIl0sZGVzY3JpcHRpb246IlRoZSByb3ctZ2FwIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIGd1dHRlciBiZXR3ZWVuIGdyaWQgcm93cy4ifSx7bmFtZToicnVieS1tZXJnZSIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoic2VwYXJhdGUgfCBjb2xsYXBzZSB8IGF1dG8iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhpcyBwcm9wZXJ0eSBjb250cm9scyBob3cgcnVieSBhbm5vdGF0aW9uIGJveGVzIHNob3VsZCBiZSByZW5kZXJlZCB3aGVuIHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lIGluIGEgcnVieSBjb250YWluZXIgYm94OiB3aGV0aGVyIGVhY2ggcGFpciBzaG91bGQgYmUga2VwdCBzZXBhcmF0ZSwgdGhlIGFubm90YXRpb25zIHNob3VsZCBiZSBjb2xsYXBzZWQgYW5kIHJlbmRlcmVkIGFzIGEgZ3JvdXAsIG9yIHRoZSBzZXBhcmF0aW9uIHNob3VsZCBiZSBkZXRlcm1pbmVkIGJhc2VkIG9uIHRoZSBzcGFjZSBhdmFpbGFibGUuIn0se25hbWU6InNjYWxlIixzeW50YXg6Im5vbmUgfCA8bnVtYmVyPnsxLDN9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJGRjcyIiwiUzE0LjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2NhbGUifV0sZGVzY3JpcHRpb246IlRoZSBzY2FsZSBDU1MgcHJvcGVydHkgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IHNjYWxlIHRyYW5zZm9ybXMgaW5kaXZpZHVhbGx5IGFuZCBpbmRlcGVuZGVudGx5IG9mIHRoZSB0cmFuc2Zvcm0gcHJvcGVydHkuIFRoaXMgbWFwcyBiZXR0ZXIgdG8gdHlwaWNhbCB1c2VyIGludGVyZmFjZSB1c2FnZSwgYW5kIHNhdmVzIGhhdmluZyB0byByZW1lbWJlciB0aGUgZXhhY3Qgb3JkZXIgb2YgdHJhbnNmb3JtIGZ1bmN0aW9ucyB0byBzcGVjaWZ5IGluIHRoZSB0cmFuc2Zvcm0gdmFsdWUuIn0se25hbWU6InNjcm9sbGJhci1jb2xvciIsc3ludGF4OiJhdXRvIHwgPGNvbG9yPnsyfSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRkY2NCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGxiYXItY29sb3IifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGxiYXItY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGNvbG9yIG9mIHRoZSBzY3JvbGxiYXIgdHJhY2sgYW5kIHRodW1iLiJ9LHtuYW1lOiJzY3JvbGxiYXItZ3V0dGVyIixzeW50YXg6ImF1dG8gfCBzdGFibGUgJiYgYm90aC1lZGdlcz8iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU5NCIsIkZGOTciLCJDOTQiLCJPODAiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsYmFyLWd1dHRlciJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbGJhci1ndXR0ZXIgQ1NTIHByb3BlcnR5IGFsbG93cyBhdXRob3JzIHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBzY3JvbGxiYXIsIHByZXZlbnRpbmcgdW53YW50ZWQgbGF5b3V0IGNoYW5nZXMgYXMgdGhlIGNvbnRlbnQgZ3Jvd3Mgd2hpbGUgYWxzbyBhdm9pZGluZyB1bm5lY2Vzc2FyeSB2aXN1YWxzIHdoZW4gc2Nyb2xsaW5nIGlzbid0IG5lZWRlZC4ifSx7bmFtZToic2Nyb2xsYmFyLXdpZHRoIixzeW50YXg6ImF1dG8gfCB0aGluIHwgbm9uZSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRkY2NCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGxiYXItd2lkdGgifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGxiYXItd2lkdGggcHJvcGVydHkgYWxsb3dzIHRoZSBhdXRob3IgdG8gc2V0IHRoZSBtYXhpbXVtIHRoaWNrbmVzcyBvZiBhbiBlbGVtZW504oCZcyBzY3JvbGxiYXJzIHdoZW4gdGhleSBhcmUgc2hvd24uICJ9LHtuYW1lOiJzY3JvbGwtbWFyZ2luIixzeW50YXg6IjxsZW5ndGg+ezEsNH0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGOTAiLCJTMTQuMSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtbWFyZ2luIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLW1hcmdpbiBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSB3aGljaCBzZXRzIGFsbCBvZiB0aGUgc2Nyb2xsLW1hcmdpbiBsb25naGFuZHMsIGFzc2lnbmluZyB2YWx1ZXMgbXVjaCBsaWtlIHRoZSBtYXJnaW4gcHJvcGVydHkgZG9lcyBmb3IgdGhlIG1hcmdpbi0qIGxvbmdoYW5kcy4ifSx7bmFtZToic2Nyb2xsLW1hcmdpbi1ibG9jayIsc3ludGF4OiI8bGVuZ3RoPnsxLDJ9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE0LjEiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLW1hcmdpbi1ibG9jayJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1tYXJnaW4tYmxvY2sgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgd2hpY2ggc2V0cyB0aGUgc2Nyb2xsLW1hcmdpbiBsb25naGFuZHMgaW4gdGhlIGJsb2NrIGRpbWVuc2lvbi4ifSx7bmFtZToic2Nyb2xsLW1hcmdpbi1ibG9jay1zdGFydCIsc3ludGF4OiI8bGVuZ3RoPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNC4xIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1tYXJnaW4tYmxvY2stc3RhcnQifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtbWFyZ2luLWJsb2NrLXN0YXJ0IHByb3BlcnR5IGRlZmluZXMgdGhlIG1hcmdpbiBvZiB0aGUgc2Nyb2xsIHNuYXAgYXJlYSBhdCB0aGUgc3RhcnQgb2YgdGhlIGJsb2NrIGRpbWVuc2lvbiB0aGF0IGlzIHVzZWQgZm9yIHNuYXBwaW5nIHRoaXMgYm94IHRvIHRoZSBzbmFwcG9ydC4gVGhlIHNjcm9sbCBzbmFwIGFyZWEgaXMgZGV0ZXJtaW5lZCBieSB0YWtpbmcgdGhlIHRyYW5zZm9ybWVkIGJvcmRlciBib3gsIGZpbmRpbmcgaXRzIHJlY3Rhbmd1bGFyIGJvdW5kaW5nIGJveCAoYXhpcy1hbGlnbmVkIGluIHRoZSBzY3JvbGwgY29udGFpbmVy4oCZcyBjb29yZGluYXRlIHNwYWNlKSwgdGhlbiBhZGRpbmcgdGhlIHNwZWNpZmllZCBvdXRzZXRzLiJ9LHtuYW1lOiJzY3JvbGwtbWFyZ2luLWJsb2NrLWVuZCIsc3ludGF4OiI8bGVuZ3RoPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNC4xIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1tYXJnaW4tYmxvY2stZW5kIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLW1hcmdpbi1ibG9jay1lbmQgcHJvcGVydHkgZGVmaW5lcyB0aGUgbWFyZ2luIG9mIHRoZSBzY3JvbGwgc25hcCBhcmVhIGF0IHRoZSBlbmQgb2YgdGhlIGJsb2NrIGRpbWVuc2lvbiB0aGF0IGlzIHVzZWQgZm9yIHNuYXBwaW5nIHRoaXMgYm94IHRvIHRoZSBzbmFwcG9ydC4gVGhlIHNjcm9sbCBzbmFwIGFyZWEgaXMgZGV0ZXJtaW5lZCBieSB0YWtpbmcgdGhlIHRyYW5zZm9ybWVkIGJvcmRlciBib3gsIGZpbmRpbmcgaXRzIHJlY3Rhbmd1bGFyIGJvdW5kaW5nIGJveCAoYXhpcy1hbGlnbmVkIGluIHRoZSBzY3JvbGwgY29udGFpbmVy4oCZcyBjb29yZGluYXRlIHNwYWNlKSwgdGhlbiBhZGRpbmcgdGhlIHNwZWNpZmllZCBvdXRzZXRzLiJ9LHtuYW1lOiJzY3JvbGwtbWFyZ2luLWJvdHRvbSIsc3ludGF4OiI8bGVuZ3RoPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNC4xIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1tYXJnaW4tYm90dG9tIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLW1hcmdpbi1ib3R0b20gcHJvcGVydHkgZGVmaW5lcyB0aGUgYm90dG9tIG1hcmdpbiBvZiB0aGUgc2Nyb2xsIHNuYXAgYXJlYSB0aGF0IGlzIHVzZWQgZm9yIHNuYXBwaW5nIHRoaXMgYm94IHRvIHRoZSBzbmFwcG9ydC4gVGhlIHNjcm9sbCBzbmFwIGFyZWEgaXMgZGV0ZXJtaW5lZCBieSB0YWtpbmcgdGhlIHRyYW5zZm9ybWVkIGJvcmRlciBib3gsIGZpbmRpbmcgaXRzIHJlY3Rhbmd1bGFyIGJvdW5kaW5nIGJveCAoYXhpcy1hbGlnbmVkIGluIHRoZSBzY3JvbGwgY29udGFpbmVy4oCZcyBjb29yZGluYXRlIHNwYWNlKSwgdGhlbiBhZGRpbmcgdGhlIHNwZWNpZmllZCBvdXRzZXRzLiJ9LHtuYW1lOiJzY3JvbGwtbWFyZ2luLWlubGluZSIsc3ludGF4OiI8bGVuZ3RoPnsxLDJ9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE0LjEiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLW1hcmdpbi1pbmxpbmUifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtbWFyZ2luLWlubGluZSBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSB3aGljaCBzZXRzIHRoZSBzY3JvbGwtbWFyZ2luIGxvbmdoYW5kcyBpbiB0aGUgaW5saW5lIGRpbWVuc2lvbi4ifSx7bmFtZToic2Nyb2xsLW1hcmdpbi1pbmxpbmUtc3RhcnQiLHN5bnRheDoiPGxlbmd0aD4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTQuMSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtbWFyZ2luLWlubGluZS1zdGFydCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1tYXJnaW4taW5saW5lLXN0YXJ0IHByb3BlcnR5IGRlZmluZXMgdGhlIG1hcmdpbiBvZiB0aGUgc2Nyb2xsIHNuYXAgYXJlYSBhdCB0aGUgc3RhcnQgb2YgdGhlIGlubGluZSBkaW1lbnNpb24gdGhhdCBpcyB1c2VkIGZvciBzbmFwcGluZyB0aGlzIGJveCB0byB0aGUgc25hcHBvcnQuIFRoZSBzY3JvbGwgc25hcCBhcmVhIGlzIGRldGVybWluZWQgYnkgdGFraW5nIHRoZSB0cmFuc2Zvcm1lZCBib3JkZXIgYm94LCBmaW5kaW5nIGl0cyByZWN0YW5ndWxhciBib3VuZGluZyBib3ggKGF4aXMtYWxpZ25lZCBpbiB0aGUgc2Nyb2xsIGNvbnRhaW5lcuKAmXMgY29vcmRpbmF0ZSBzcGFjZSksIHRoZW4gYWRkaW5nIHRoZSBzcGVjaWZpZWQgb3V0c2V0cy4ifSx7bmFtZToic2Nyb2xsLW1hcmdpbi1pbmxpbmUtZW5kIixzeW50YXg6IjxsZW5ndGg+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE0LjEiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLW1hcmdpbi1pbmxpbmUtZW5kIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLW1hcmdpbi1pbmxpbmUtZW5kIHByb3BlcnR5IGRlZmluZXMgdGhlIG1hcmdpbiBvZiB0aGUgc2Nyb2xsIHNuYXAgYXJlYSBhdCB0aGUgZW5kIG9mIHRoZSBpbmxpbmUgZGltZW5zaW9uIHRoYXQgaXMgdXNlZCBmb3Igc25hcHBpbmcgdGhpcyBib3ggdG8gdGhlIHNuYXBwb3J0LiBUaGUgc2Nyb2xsIHNuYXAgYXJlYSBpcyBkZXRlcm1pbmVkIGJ5IHRha2luZyB0aGUgdHJhbnNmb3JtZWQgYm9yZGVyIGJveCwgZmluZGluZyBpdHMgcmVjdGFuZ3VsYXIgYm91bmRpbmcgYm94IChheGlzLWFsaWduZWQgaW4gdGhlIHNjcm9sbCBjb250YWluZXLigJlzIGNvb3JkaW5hdGUgc3BhY2UpLCB0aGVuIGFkZGluZyB0aGUgc3BlY2lmaWVkIG91dHNldHMuIn0se25hbWU6InNjcm9sbC1tYXJnaW4tbGVmdCIsc3ludGF4OiI8bGVuZ3RoPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNC4xIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1tYXJnaW4tbGVmdCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1tYXJnaW4tbGVmdCBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBsZWZ0IG1hcmdpbiBvZiB0aGUgc2Nyb2xsIHNuYXAgYXJlYSB0aGF0IGlzIHVzZWQgZm9yIHNuYXBwaW5nIHRoaXMgYm94IHRvIHRoZSBzbmFwcG9ydC4gVGhlIHNjcm9sbCBzbmFwIGFyZWEgaXMgZGV0ZXJtaW5lZCBieSB0YWtpbmcgdGhlIHRyYW5zZm9ybWVkIGJvcmRlciBib3gsIGZpbmRpbmcgaXRzIHJlY3Rhbmd1bGFyIGJvdW5kaW5nIGJveCAoYXhpcy1hbGlnbmVkIGluIHRoZSBzY3JvbGwgY29udGFpbmVy4oCZcyBjb29yZGluYXRlIHNwYWNlKSwgdGhlbiBhZGRpbmcgdGhlIHNwZWNpZmllZCBvdXRzZXRzLiJ9LHtuYW1lOiJzY3JvbGwtbWFyZ2luLXJpZ2h0IixzeW50YXg6IjxsZW5ndGg+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE0LjEiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLW1hcmdpbi1yaWdodCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1tYXJnaW4tcmlnaHQgcHJvcGVydHkgZGVmaW5lcyB0aGUgcmlnaHQgbWFyZ2luIG9mIHRoZSBzY3JvbGwgc25hcCBhcmVhIHRoYXQgaXMgdXNlZCBmb3Igc25hcHBpbmcgdGhpcyBib3ggdG8gdGhlIHNuYXBwb3J0LiBUaGUgc2Nyb2xsIHNuYXAgYXJlYSBpcyBkZXRlcm1pbmVkIGJ5IHRha2luZyB0aGUgdHJhbnNmb3JtZWQgYm9yZGVyIGJveCwgZmluZGluZyBpdHMgcmVjdGFuZ3VsYXIgYm91bmRpbmcgYm94IChheGlzLWFsaWduZWQgaW4gdGhlIHNjcm9sbCBjb250YWluZXLigJlzIGNvb3JkaW5hdGUgc3BhY2UpLCB0aGVuIGFkZGluZyB0aGUgc3BlY2lmaWVkIG91dHNldHMuIn0se25hbWU6InNjcm9sbC1tYXJnaW4tdG9wIixzeW50YXg6IjxsZW5ndGg+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE0LjEiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLW1hcmdpbi10b3AifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtbWFyZ2luLXRvcCBwcm9wZXJ0eSBkZWZpbmVzIHRoZSB0b3AgbWFyZ2luIG9mIHRoZSBzY3JvbGwgc25hcCBhcmVhIHRoYXQgaXMgdXNlZCBmb3Igc25hcHBpbmcgdGhpcyBib3ggdG8gdGhlIHNuYXBwb3J0LiBUaGUgc2Nyb2xsIHNuYXAgYXJlYSBpcyBkZXRlcm1pbmVkIGJ5IHRha2luZyB0aGUgdHJhbnNmb3JtZWQgYm9yZGVyIGJveCwgZmluZGluZyBpdHMgcmVjdGFuZ3VsYXIgYm91bmRpbmcgYm94IChheGlzLWFsaWduZWQgaW4gdGhlIHNjcm9sbCBjb250YWluZXLigJlzIGNvb3JkaW5hdGUgc3BhY2UpLCB0aGVuIGFkZGluZyB0aGUgc3BlY2lmaWVkIG91dHNldHMuIn0se25hbWU6InNjcm9sbC1wYWRkaW5nIixzeW50YXg6IlsgYXV0byB8IDxsZW5ndGgtcGVyY2VudGFnZT4gXXsxLDR9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE0LjEiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXBhZGRpbmcifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtcGFkZGluZyBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSB3aGljaCBzZXRzIGFsbCBvZiB0aGUgc2Nyb2xsLXBhZGRpbmcgbG9uZ2hhbmRzLCBhc3NpZ25pbmcgdmFsdWVzIG11Y2ggbGlrZSB0aGUgcGFkZGluZyBwcm9wZXJ0eSBkb2VzIGZvciB0aGUgcGFkZGluZy0qIGxvbmdoYW5kcy4ifSx7bmFtZToic2Nyb2xsLXBhZGRpbmctYmxvY2siLHN5bnRheDoiWyBhdXRvIHwgPGxlbmd0aC1wZXJjZW50YWdlPiBdezEsMn0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTUiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXBhZGRpbmctYmxvY2sifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtcGFkZGluZy1ibG9jayBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSB3aGljaCBzZXRzIHRoZSBzY3JvbGwtcGFkZGluZyBsb25naGFuZHMgZm9yIHRoZSBibG9jayBkaW1lbnNpb24uIn0se25hbWU6InNjcm9sbC1wYWRkaW5nLWJsb2NrLXN0YXJ0IixzeW50YXg6ImF1dG8gfCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE1IiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1wYWRkaW5nLWJsb2NrLXN0YXJ0In1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLXBhZGRpbmctYmxvY2stc3RhcnQgcHJvcGVydHkgZGVmaW5lcyBvZmZzZXRzIGZvciB0aGUgc3RhcnQgZWRnZSBpbiB0aGUgYmxvY2sgZGltZW5zaW9uIG9mIHRoZSBvcHRpbWFsIHZpZXdpbmcgcmVnaW9uIG9mIHRoZSBzY3JvbGxwb3J0OiB0aGUgcmVnaW9uIHVzZWQgYXMgdGhlIHRhcmdldCByZWdpb24gZm9yIHBsYWNpbmcgdGhpbmdzIGluIHZpZXcgb2YgdGhlIHVzZXIuIFRoaXMgYWxsb3dzIHRoZSBhdXRob3IgdG8gZXhjbHVkZSByZWdpb25zIG9mIHRoZSBzY3JvbGxwb3J0IHRoYXQgYXJlIG9ic2N1cmVkIGJ5IG90aGVyIGNvbnRlbnQgKHN1Y2ggYXMgZml4ZWQtcG9zaXRpb25lZCB0b29sYmFycyBvciBzaWRlYmFycykgb3Igc2ltcGx5IHRvIHB1dCBtb3JlIGJyZWF0aGluZyByb29tIGJldHdlZW4gYSB0YXJnZXRlZCBlbGVtZW50IGFuZCB0aGUgZWRnZXMgb2YgdGhlIHNjcm9sbHBvcnQuIn0se25hbWU6InNjcm9sbC1wYWRkaW5nLWJsb2NrLWVuZCIsc3ludGF4OiJhdXRvIHwgPGxlbmd0aC1wZXJjZW50YWdlPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtcGFkZGluZy1ibG9jay1lbmQifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtcGFkZGluZy1ibG9jay1lbmQgcHJvcGVydHkgZGVmaW5lcyBvZmZzZXRzIGZvciB0aGUgZW5kIGVkZ2UgaW4gdGhlIGJsb2NrIGRpbWVuc2lvbiBvZiB0aGUgb3B0aW1hbCB2aWV3aW5nIHJlZ2lvbiBvZiB0aGUgc2Nyb2xscG9ydDogdGhlIHJlZ2lvbiB1c2VkIGFzIHRoZSB0YXJnZXQgcmVnaW9uIGZvciBwbGFjaW5nIHRoaW5ncyBpbiB2aWV3IG9mIHRoZSB1c2VyLiBUaGlzIGFsbG93cyB0aGUgYXV0aG9yIHRvIGV4Y2x1ZGUgcmVnaW9ucyBvZiB0aGUgc2Nyb2xscG9ydCB0aGF0IGFyZSBvYnNjdXJlZCBieSBvdGhlciBjb250ZW50IChzdWNoIGFzIGZpeGVkLXBvc2l0aW9uZWQgdG9vbGJhcnMgb3Igc2lkZWJhcnMpIG9yIHNpbXBseSB0byBwdXQgbW9yZSBicmVhdGhpbmcgcm9vbSBiZXR3ZWVuIGEgdGFyZ2V0ZWQgZWxlbWVudCBhbmQgdGhlIGVkZ2VzIG9mIHRoZSBzY3JvbGxwb3J0LiJ9LHtuYW1lOiJzY3JvbGwtcGFkZGluZy1ib3R0b20iLHN5bnRheDoiYXV0byB8IDxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTQuMSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtcGFkZGluZy1ib3R0b20ifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtcGFkZGluZy1ib3R0b20gcHJvcGVydHkgZGVmaW5lcyBvZmZzZXRzIGZvciB0aGUgYm90dG9tIG9mIHRoZSBvcHRpbWFsIHZpZXdpbmcgcmVnaW9uIG9mIHRoZSBzY3JvbGxwb3J0OiB0aGUgcmVnaW9uIHVzZWQgYXMgdGhlIHRhcmdldCByZWdpb24gZm9yIHBsYWNpbmcgdGhpbmdzIGluIHZpZXcgb2YgdGhlIHVzZXIuIFRoaXMgYWxsb3dzIHRoZSBhdXRob3IgdG8gZXhjbHVkZSByZWdpb25zIG9mIHRoZSBzY3JvbGxwb3J0IHRoYXQgYXJlIG9ic2N1cmVkIGJ5IG90aGVyIGNvbnRlbnQgKHN1Y2ggYXMgZml4ZWQtcG9zaXRpb25lZCB0b29sYmFycyBvciBzaWRlYmFycykgb3Igc2ltcGx5IHRvIHB1dCBtb3JlIGJyZWF0aGluZyByb29tIGJldHdlZW4gYSB0YXJnZXRlZCBlbGVtZW50IGFuZCB0aGUgZWRnZXMgb2YgdGhlIHNjcm9sbHBvcnQuIn0se25hbWU6InNjcm9sbC1wYWRkaW5nLWlubGluZSIsc3ludGF4OiJbIGF1dG8gfCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IF17MSwyfSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtcGFkZGluZy1pbmxpbmUifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtcGFkZGluZy1pbmxpbmUgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgd2hpY2ggc2V0cyB0aGUgc2Nyb2xsLXBhZGRpbmcgbG9uZ2hhbmRzIGZvciB0aGUgaW5saW5lIGRpbWVuc2lvbi4ifSx7bmFtZToic2Nyb2xsLXBhZGRpbmctaW5saW5lLXN0YXJ0IixzeW50YXg6ImF1dG8gfCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE1IiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1wYWRkaW5nLWlubGluZS1zdGFydCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1wYWRkaW5nLWlubGluZS1zdGFydCBwcm9wZXJ0eSBkZWZpbmVzIG9mZnNldHMgZm9yIHRoZSBzdGFydCBlZGdlIGluIHRoZSBpbmxpbmUgZGltZW5zaW9uIG9mIHRoZSBvcHRpbWFsIHZpZXdpbmcgcmVnaW9uIG9mIHRoZSBzY3JvbGxwb3J0OiB0aGUgcmVnaW9uIHVzZWQgYXMgdGhlIHRhcmdldCByZWdpb24gZm9yIHBsYWNpbmcgdGhpbmdzIGluIHZpZXcgb2YgdGhlIHVzZXIuIFRoaXMgYWxsb3dzIHRoZSBhdXRob3IgdG8gZXhjbHVkZSByZWdpb25zIG9mIHRoZSBzY3JvbGxwb3J0IHRoYXQgYXJlIG9ic2N1cmVkIGJ5IG90aGVyIGNvbnRlbnQgKHN1Y2ggYXMgZml4ZWQtcG9zaXRpb25lZCB0b29sYmFycyBvciBzaWRlYmFycykgb3Igc2ltcGx5IHRvIHB1dCBtb3JlIGJyZWF0aGluZyByb29tIGJldHdlZW4gYSB0YXJnZXRlZCBlbGVtZW50IGFuZCB0aGUgZWRnZXMgb2YgdGhlIHNjcm9sbHBvcnQuIn0se25hbWU6InNjcm9sbC1wYWRkaW5nLWlubGluZS1lbmQiLHN5bnRheDoiYXV0byB8IDxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTUiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXBhZGRpbmctaW5saW5lLWVuZCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1wYWRkaW5nLWlubGluZS1lbmQgcHJvcGVydHkgZGVmaW5lcyBvZmZzZXRzIGZvciB0aGUgZW5kIGVkZ2UgaW4gdGhlIGlubGluZSBkaW1lbnNpb24gb2YgdGhlIG9wdGltYWwgdmlld2luZyByZWdpb24gb2YgdGhlIHNjcm9sbHBvcnQ6IHRoZSByZWdpb24gdXNlZCBhcyB0aGUgdGFyZ2V0IHJlZ2lvbiBmb3IgcGxhY2luZyB0aGluZ3MgaW4gdmlldyBvZiB0aGUgdXNlci4gVGhpcyBhbGxvd3MgdGhlIGF1dGhvciB0byBleGNsdWRlIHJlZ2lvbnMgb2YgdGhlIHNjcm9sbHBvcnQgdGhhdCBhcmUgb2JzY3VyZWQgYnkgb3RoZXIgY29udGVudCAoc3VjaCBhcyBmaXhlZC1wb3NpdGlvbmVkIHRvb2xiYXJzIG9yIHNpZGViYXJzKSBvciBzaW1wbHkgdG8gcHV0IG1vcmUgYnJlYXRoaW5nIHJvb20gYmV0d2VlbiBhIHRhcmdldGVkIGVsZW1lbnQgYW5kIHRoZSBlZGdlcyBvZiB0aGUgc2Nyb2xscG9ydC4ifSx7bmFtZToic2Nyb2xsLXBhZGRpbmctbGVmdCIsc3ludGF4OiJhdXRvIHwgPGxlbmd0aC1wZXJjZW50YWdlPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNC4xIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1wYWRkaW5nLWxlZnQifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtcGFkZGluZy1sZWZ0IHByb3BlcnR5IGRlZmluZXMgb2Zmc2V0cyBmb3IgdGhlIGxlZnQgb2YgdGhlIG9wdGltYWwgdmlld2luZyByZWdpb24gb2YgdGhlIHNjcm9sbHBvcnQ6IHRoZSByZWdpb24gdXNlZCBhcyB0aGUgdGFyZ2V0IHJlZ2lvbiBmb3IgcGxhY2luZyB0aGluZ3MgaW4gdmlldyBvZiB0aGUgdXNlci4gVGhpcyBhbGxvd3MgdGhlIGF1dGhvciB0byBleGNsdWRlIHJlZ2lvbnMgb2YgdGhlIHNjcm9sbHBvcnQgdGhhdCBhcmUgb2JzY3VyZWQgYnkgb3RoZXIgY29udGVudCAoc3VjaCBhcyBmaXhlZC1wb3NpdGlvbmVkIHRvb2xiYXJzIG9yIHNpZGViYXJzKSBvciBzaW1wbHkgdG8gcHV0IG1vcmUgYnJlYXRoaW5nIHJvb20gYmV0d2VlbiBhIHRhcmdldGVkIGVsZW1lbnQgYW5kIHRoZSBlZGdlcyBvZiB0aGUgc2Nyb2xscG9ydC4ifSx7bmFtZToic2Nyb2xsLXBhZGRpbmctcmlnaHQiLHN5bnRheDoiYXV0byB8IDxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTQuMSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtcGFkZGluZy1yaWdodCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1wYWRkaW5nLXJpZ2h0IHByb3BlcnR5IGRlZmluZXMgb2Zmc2V0cyBmb3IgdGhlIHJpZ2h0IG9mIHRoZSBvcHRpbWFsIHZpZXdpbmcgcmVnaW9uIG9mIHRoZSBzY3JvbGxwb3J0OiB0aGUgcmVnaW9uIHVzZWQgYXMgdGhlIHRhcmdldCByZWdpb24gZm9yIHBsYWNpbmcgdGhpbmdzIGluIHZpZXcgb2YgdGhlIHVzZXIuIFRoaXMgYWxsb3dzIHRoZSBhdXRob3IgdG8gZXhjbHVkZSByZWdpb25zIG9mIHRoZSBzY3JvbGxwb3J0IHRoYXQgYXJlIG9ic2N1cmVkIGJ5IG90aGVyIGNvbnRlbnQgKHN1Y2ggYXMgZml4ZWQtcG9zaXRpb25lZCB0b29sYmFycyBvciBzaWRlYmFycykgb3Igc2ltcGx5IHRvIHB1dCBtb3JlIGJyZWF0aGluZyByb29tIGJldHdlZW4gYSB0YXJnZXRlZCBlbGVtZW50IGFuZCB0aGUgZWRnZXMgb2YgdGhlIHNjcm9sbHBvcnQuIn0se25hbWU6InNjcm9sbC1wYWRkaW5nLXRvcCIsc3ludGF4OiJhdXRvIHwgPGxlbmd0aC1wZXJjZW50YWdlPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNC4xIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1wYWRkaW5nLXRvcCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1wYWRkaW5nLXRvcCBwcm9wZXJ0eSBkZWZpbmVzIG9mZnNldHMgZm9yIHRoZSB0b3Agb2YgdGhlIG9wdGltYWwgdmlld2luZyByZWdpb24gb2YgdGhlIHNjcm9sbHBvcnQ6IHRoZSByZWdpb24gdXNlZCBhcyB0aGUgdGFyZ2V0IHJlZ2lvbiBmb3IgcGxhY2luZyB0aGluZ3MgaW4gdmlldyBvZiB0aGUgdXNlci4gVGhpcyBhbGxvd3MgdGhlIGF1dGhvciB0byBleGNsdWRlIHJlZ2lvbnMgb2YgdGhlIHNjcm9sbHBvcnQgdGhhdCBhcmUgb2JzY3VyZWQgYnkgb3RoZXIgY29udGVudCAoc3VjaCBhcyBmaXhlZC1wb3NpdGlvbmVkIHRvb2xiYXJzIG9yIHNpZGViYXJzKSBvciBzaW1wbHkgdG8gcHV0IG1vcmUgYnJlYXRoaW5nIHJvb20gYmV0d2VlbiBhIHRhcmdldGVkIGVsZW1lbnQgYW5kIHRoZSBlZGdlcyBvZiB0aGUgc2Nyb2xscG9ydC4ifSx7bmFtZToic2Nyb2xsLXNuYXAtYWxpZ24iLHN5bnRheDoiWyBub25lIHwgc3RhcnQgfCBlbmQgfCBjZW50ZXIgXXsxLDJ9IixyZWxldmFuY2U6NTIsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzExIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1zbmFwLWFsaWduIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLXNuYXAtYWxpZ24gcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBib3jigJlzIHNuYXAgcG9zaXRpb24gYXMgYW4gYWxpZ25tZW50IG9mIGl0cyBzbmFwIGFyZWEgKGFzIHRoZSBhbGlnbm1lbnQgc3ViamVjdCkgd2l0aGluIGl0cyBzbmFwIGNvbnRhaW5lcuKAmXMgc25hcHBvcnQgKGFzIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyKS4gVGhlIHR3byB2YWx1ZXMgc3BlY2lmeSB0aGUgc25hcHBpbmcgYWxpZ25tZW50IGluIHRoZSBibG9jayBheGlzIGFuZCBpbmxpbmUgYXhpcywgcmVzcGVjdGl2ZWx5LiBJZiBvbmx5IG9uZSB2YWx1ZSBpcyBzcGVjaWZpZWQsIHRoZSBzZWNvbmQgdmFsdWUgZGVmYXVsdHMgdG8gdGhlIHNhbWUgdmFsdWUuIn0se25hbWU6InNjcm9sbC1zbmFwLXN0b3AiLHN5bnRheDoibm9ybWFsIHwgYWx3YXlzIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJTMTUiLCJDNzUiLCJPNjIiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXNuYXAtc3RvcCJ9XSxkZXNjcmlwdGlvbjonVGhlIHNjcm9sbC1zbmFwLXN0b3AgQ1NTIHByb3BlcnR5IGRlZmluZXMgd2hldGhlciB0aGUgc2Nyb2xsIGNvbnRhaW5lciBpcyBhbGxvd2VkIHRvICJwYXNzIG92ZXIiIHBvc3NpYmxlIHNuYXAgcG9zaXRpb25zLid9LHtuYW1lOiJzY3JvbGwtc25hcC10eXBlLXgiLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoibm9uZSB8IG1hbmRhdG9yeSB8IHByb3hpbWl0eSIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJGRjM5IiwiUzkiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXNuYXAtdHlwZS14In1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLXNuYXAtdHlwZS14IENTUyBwcm9wZXJ0eSBkZWZpbmVzIGhvdyBzdHJpY3RseSBzbmFwIHBvaW50cyBhcmUgZW5mb3JjZWQgb24gdGhlIGhvcml6b250YWwgYXhpcyBvZiB0aGUgc2Nyb2xsIGNvbnRhaW5lciBpbiBjYXNlIHRoZXJlIGlzIG9uZS5cblxuU3BlY2lmeWluZyBhbnkgcHJlY2lzZSBhbmltYXRpb25zIG9yIHBoeXNpY3MgdXNlZCB0byBlbmZvcmNlIHRob3NlIHNuYXAgcG9pbnRzIGlzIG5vdCBjb3ZlcmVkIGJ5IHRoaXMgcHJvcGVydHkgYnV0IGluc3RlYWQgbGVmdCB1cCB0byB0aGUgdXNlciBhZ2VudC4ifSx7bmFtZToic2Nyb2xsLXNuYXAtdHlwZS15IixzdGF0dXM6Im9ic29sZXRlIixzeW50YXg6Im5vbmUgfCBtYW5kYXRvcnkgfCBwcm94aW1pdHkiLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRkYzOSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtc25hcC10eXBlLXkifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtc25hcC10eXBlLXkgQ1NTIHByb3BlcnR5IGRlZmluZXMgaG93IHN0cmljdGx5IHNuYXAgcG9pbnRzIGFyZSBlbmZvcmNlZCBvbiB0aGUgdmVydGljYWwgYXhpcyBvZiB0aGUgc2Nyb2xsIGNvbnRhaW5lciBpbiBjYXNlIHRoZXJlIGlzIG9uZS5cblxuU3BlY2lmeWluZyBhbnkgcHJlY2lzZSBhbmltYXRpb25zIG9yIHBoeXNpY3MgdXNlZCB0byBlbmZvcmNlIHRob3NlIHNuYXAgcG9pbnRzIGlzIG5vdCBjb3ZlcmVkIGJ5IHRoaXMgcHJvcGVydHkgYnV0IGluc3RlYWQgbGVmdCB1cCB0byB0aGUgdXNlciBhZ2VudC4ifSx7bmFtZToidGV4dC1jb21iaW5lLXVwcmlnaHQiLHN5bnRheDoibm9uZSB8IGFsbCB8IFsgZGlnaXRzIDxpbnRlZ2VyPj8gXSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LWNvbWJpbmUtdXByaWdodCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHRleHQtY29tYmluZS11cHJpZ2h0IENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIGNvbWJpbmF0aW9uIG9mIG11bHRpcGxlIGNoYXJhY3RlcnMgaW50byB0aGUgc3BhY2Ugb2YgYSBzaW5nbGUgY2hhcmFjdGVyLiBJZiB0aGUgY29tYmluZWQgdGV4dCBpcyB3aWRlciB0aGFuIDFlbSwgdGhlIHVzZXIgYWdlbnQgbXVzdCBmaXQgdGhlIGNvbnRlbnRzIHdpdGhpbiAxZW0uIFRoZSByZXN1bHRpbmcgY29tcG9zaXRpb24gaXMgdHJlYXRlZCBhcyBhIHNpbmdsZSB1cHJpZ2h0IGdseXBoIGZvciBsYXlvdXQgYW5kIGRlY29yYXRpb24uIFRoaXMgcHJvcGVydHkgb25seSBoYXMgYW4gZWZmZWN0IGluIHZlcnRpY2FsIHdyaXRpbmcgbW9kZXMuXG5cblRoaXMgaXMgdXNlZCB0byBwcm9kdWNlIGFuIGVmZmVjdCB0aGF0IGlzIGtub3duIGFzIHRhdGUtY2jFqy15b2tvICjnuKbkuK3mqKopIGluIEphcGFuZXNlLCBvciBhcyDnm7Tmm7jmqavlkJEgaW4gQ2hpbmVzZS4ifSx7bmFtZToidGV4dC1kZWNvcmF0aW9uLXNraXAiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Im5vbmUgfCBbIG9iamVjdHMgfHwgWyBzcGFjZXMgfCBbIGxlYWRpbmctc3BhY2VzIHx8IHRyYWlsaW5nLXNwYWNlcyBdIF0gfHwgZWRnZXMgfHwgYm94LWRlY29yYXRpb24gXSIscmVsZXZhbmNlOjUyLGJyb3dzZXJzOlsiUzEyLjEiLCJDNTciLCJPNDQiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1kZWNvcmF0aW9uLXNraXAifV0sZGVzY3JpcHRpb246IlRoZSB0ZXh0LWRlY29yYXRpb24tc2tpcCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHdoYXQgcGFydHMgb2YgdGhlIGVsZW1lbnTigJlzIGNvbnRlbnQgYW55IHRleHQgZGVjb3JhdGlvbiBhZmZlY3RpbmcgdGhlIGVsZW1lbnQgbXVzdCBza2lwIG92ZXIuIEl0IGNvbnRyb2xzIGFsbCB0ZXh0IGRlY29yYXRpb24gbGluZXMgZHJhd24gYnkgdGhlIGVsZW1lbnQgYW5kIGFsc28gYW55IHRleHQgZGVjb3JhdGlvbiBsaW5lcyBkcmF3biBieSBpdHMgYW5jZXN0b3JzLiJ9LHtuYW1lOiJ0ZXh0LWRlY29yYXRpb24tc2tpcC1pbmsiLHN5bnRheDoiYXV0byB8IGFsbCB8IG5vbmUiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNzAiLCJTMTUuNCIsIkM2NCIsIk81MCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LWRlY29yYXRpb24tc2tpcC1pbmsifV0sZGVzY3JpcHRpb246IlRoZSB0ZXh0LWRlY29yYXRpb24tc2tpcC1pbmsgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyBob3cgb3ZlcmxpbmVzIGFuZCB1bmRlcmxpbmVzIGFyZSBkcmF3biB3aGVuIHRoZXkgcGFzcyBvdmVyIGdseXBoIGFzY2VuZGVycyBhbmQgZGVzY2VuZGVycy4ifSx7bmFtZToidGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyIsc3ludGF4OiJhdXRvIHwgZnJvbS1mb250IHwgPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODkiLCJGRjcwIiwiUzEyLjEiLCJDODkiLCJPNzUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyJ9XSxkZXNjcmlwdGlvbjoiVGhlIHRleHQtZGVjb3JhdGlvbi10aGlja25lc3MgQ1NTIHByb3BlcnR5IHNldHMgdGhlIHRoaWNrbmVzcywgb3Igd2lkdGgsIG9mIHRoZSBkZWNvcmF0aW9uIGxpbmUgdGhhdCBpcyB1c2VkIG9uIHRleHQgaW4gYW4gZWxlbWVudCwgc3VjaCBhcyBhIGxpbmUtdGhyb3VnaCwgdW5kZXJsaW5lLCBvciBvdmVybGluZS4ifSx7bmFtZToidGV4dC1lbXBoYXNpcyIsc3ludGF4OiI8J3RleHQtZW1waGFzaXMtc3R5bGUnPiB8fCA8J3RleHQtZW1waGFzaXMtY29sb3InPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY0NiIsIlM3IiwiQzI1IiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtZW1waGFzaXMifV0sZGVzY3JpcHRpb246IlRoZSB0ZXh0LWVtcGhhc2lzIENTUyBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSBmb3Igc2V0dGluZyB0ZXh0LWVtcGhhc2lzLXN0eWxlIGFuZCB0ZXh0LWVtcGhhc2lzLWNvbG9yIGluIG9uZSBkZWNsYXJhdGlvbi4gVGhpcyBwcm9wZXJ0eSB3aWxsIGFwcGx5IHRoZSBzcGVjaWZpZWQgZW1waGFzaXMgbWFyayB0byBlYWNoIGNoYXJhY3RlciBvZiB0aGUgZWxlbWVudCdzIHRleHQsIGV4Y2VwdCBzZXBhcmF0b3IgY2hhcmFjdGVycywgbGlrZSBzcGFjZXMsICBhbmQgY29udHJvbCBjaGFyYWN0ZXJzLiJ9LHtuYW1lOiJ0ZXh0LWVtcGhhc2lzLWNvbG9yIixzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNDYiLCJTNyIsIkMyNSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LWVtcGhhc2lzLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJUaGUgdGV4dC1lbXBoYXNpcy1jb2xvciBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgY29sb3IgdXNlZCB0byBkcmF3IGVtcGhhc2lzIG1hcmtzIG9uIHRleHQgYmVpbmcgcmVuZGVyZWQgaW4gdGhlIEhUTUwgZG9jdW1lbnQuIFRoaXMgdmFsdWUgY2FuIGFsc28gYmUgc2V0IGFuZCByZXNldCB1c2luZyB0aGUgdGV4dC1lbXBoYXNpcyBzaG9ydGhhbmQuIn0se25hbWU6InRleHQtZW1waGFzaXMtcG9zaXRpb24iLHN5bnRheDoiWyBvdmVyIHwgdW5kZXIgXSAmJiBbIHJpZ2h0IHwgbGVmdCBdIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjQ2IiwiUzciLCJDMjUiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1lbXBoYXNpcy1wb3NpdGlvbiJ9XSxkZXNjcmlwdGlvbjoiVGhlIHRleHQtZW1waGFzaXMtcG9zaXRpb24gQ1NTIHByb3BlcnR5IGRlc2NyaWJlcyB3aGVyZSBlbXBoYXNpcyBtYXJrcyBhcmUgZHJhd24gYXQuIFRoZSBlZmZlY3Qgb2YgZW1waGFzaXMgbWFya3Mgb24gdGhlIGxpbmUgaGVpZ2h0IGlzIHRoZSBzYW1lIGFzIGZvciBydWJ5IHRleHQ6IGlmIHRoZXJlIGlzbid0IGVub3VnaCBwbGFjZSwgdGhlIGxpbmUgaGVpZ2h0IGlzIGluY3JlYXNlZC4ifSx7bmFtZToidGV4dC1lbXBoYXNpcy1zdHlsZSIsc3ludGF4OiJub25lIHwgWyBbIGZpbGxlZCB8IG9wZW4gXSB8fCBbIGRvdCB8IGNpcmNsZSB8IGRvdWJsZS1jaXJjbGUgfCB0cmlhbmdsZSB8IHNlc2FtZSBdIF0gfCA8c3RyaW5nPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY0NiIsIlM3IiwiQzI1IiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtZW1waGFzaXMtc3R5bGUifV0sZGVzY3JpcHRpb246IlRoZSB0ZXh0LWVtcGhhc2lzLXN0eWxlIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSB0eXBlIG9mIGVtcGhhc2lzIHVzZWQuIEl0IGNhbiBhbHNvIGJlIHNldCwgYW5kIHJlc2V0LCB1c2luZyB0aGUgdGV4dC1lbXBoYXNpcyBzaG9ydGhhbmQuIn0se25hbWU6InRleHQtc2l6ZS1hZGp1c3QiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Im5vbmUgfCBhdXRvIHwgPHBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTcsYnJvd3NlcnM6WyJFNzkiLCJDNTQiLCJPNDEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1zaXplLWFkanVzdCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHRleHQtc2l6ZS1hZGp1c3QgQ1NTIHByb3BlcnR5IGNvbnRyb2xzIHRoZSB0ZXh0IGluZmxhdGlvbiBhbGdvcml0aG0gdXNlZCBvbiBzb21lIHNtYXJ0cGhvbmVzIGFuZCB0YWJsZXRzLiBPdGhlciBicm93c2VycyB3aWxsIGlnbm9yZSB0aGlzIHByb3BlcnR5LiJ9LHtuYW1lOiJ0ZXh0LXVuZGVybGluZS1vZmZzZXQiLHN5bnRheDoiYXV0byB8IDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+ICIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg3IiwiRkY3MCIsIlMxMi4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtdW5kZXJsaW5lLW9mZnNldCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHRleHQtdW5kZXJsaW5lLW9mZnNldCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgb2Zmc2V0IGRpc3RhbmNlIG9mIGFuIHVuZGVybGluZSB0ZXh0IGRlY29yYXRpb24gbGluZSAoYXBwbGllZCB1c2luZyB0ZXh0LWRlY29yYXRpb24pIGZyb20gaXRzIG9yaWdpbmFsIHBvc2l0aW9uLiJ9LHtuYW1lOiJ0cmFuc2Zvcm0tYm94IixzeW50YXg6ImNvbnRlbnQtYm94IHwgYm9yZGVyLWJveCB8IGZpbGwtYm94IHwgc3Ryb2tlLWJveCB8IHZpZXctYm94IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjU1IiwiUzExIiwiQzY0IiwiTzUxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RyYW5zZm9ybS1ib3gifV0sZGVzY3JpcHRpb246IlRoZSB0cmFuc2Zvcm0tYm94IENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBsYXlvdXQgYm94IHRvIHdoaWNoIHRoZSB0cmFuc2Zvcm0gYW5kIHRyYW5zZm9ybS1vcmlnaW4gcHJvcGVydGllcyByZWxhdGUuIn0se25hbWU6InRyYW5zbGF0ZSIsc3ludGF4OiJub25lIHwgPGxlbmd0aC1wZXJjZW50YWdlPiBbIDxsZW5ndGgtcGVyY2VudGFnZT4gPGxlbmd0aD4/IF0/IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJGRjcyIiwiUzE0LjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdHJhbnNsYXRlIn1dLGRlc2NyaXB0aW9uOiJUaGUgdHJhbnNsYXRlIENTUyBwcm9wZXJ0eSBhbGxvd3MgeW91IHRvIHNwZWNpZnkgdHJhbnNsYXRpb24gdHJhbnNmb3JtcyBpbmRpdmlkdWFsbHkgYW5kIGluZGVwZW5kZW50bHkgb2YgdGhlIHRyYW5zZm9ybSBwcm9wZXJ0eS4gVGhpcyBtYXBzIGJldHRlciB0byB0eXBpY2FsIHVzZXIgaW50ZXJmYWNlIHVzYWdlLCBhbmQgc2F2ZXMgaGF2aW5nIHRvIHJlbWVtYmVyIHRoZSBleGFjdCBvcmRlciBvZiB0cmFuc2Zvcm0gZnVuY3Rpb25zIHRvIHNwZWNpZnkgaW4gdGhlIHRyYW5zZm9ybSB2YWx1ZS4ifSx7bmFtZToid2hpdGUtc3BhY2UiLHN5bnRheDoibm9ybWFsIHwgcHJlIHwgbm93cmFwIHwgcHJlLXdyYXAgfCBwcmUtbGluZSB8IGJyZWFrLXNwYWNlcyIscmVsZXZhbmNlOjkwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy93aGl0ZS1zcGFjZSJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyB3aGl0ZXNwYWNlIGlzIGhhbmRsZWQgaW4gYW4gZWxlbWVudC4ifSx7bmFtZToic3BlYWstYXMiLHN5bnRheDoiYXV0byB8IGJ1bGxldHMgfCBudW1iZXJzIHwgd29yZHMgfCBzcGVsbC1vdXQgfCA8Y291bnRlci1zdHlsZS1uYW1lPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgc3BlYWstYXMgZGVzY3JpcHRvciBzcGVjaWZpZXMgaG93IGEgY291bnRlciBzeW1ib2wgY29uc3RydWN0ZWQgd2l0aCBhIGdpdmVuIEBjb3VudGVyLXN0eWxlIHdpbGwgYmUgcmVwcmVzZW50ZWQgaW4gdGhlIHNwb2tlbiBmb3JtLiBGb3IgZXhhbXBsZSwgYW4gYXV0aG9yIGNhbiBzcGVjaWZ5IGEgY291bnRlciBzeW1ib2wgdG8gYmUgZWl0aGVyIHNwb2tlbiBhcyBpdHMgbnVtZXJpY2FsIHZhbHVlIG9yIGp1c3QgcmVwcmVzZW50ZWQgd2l0aCBhbiBhdWRpbyBjdWUuIn0se25hbWU6ImFzY2VudC1vdmVycmlkZSIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoibm9ybWFsIHwgPHBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgYXNjZW50IG1ldHJpYyBvZiBhIGZvbnQuIn0se25hbWU6ImRlc2NlbnQtb3ZlcnJpZGUiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Im5vcm1hbCB8IDxwZXJjZW50YWdlPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIGRlc2NlbnQgbWV0cmljIG9mIGEgZm9udC4ifSx7bmFtZToiZm9udC1kaXNwbGF5IixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJbIGF1dG8gfCBibG9jayB8IHN3YXAgfCBmYWxsYmFjayB8IG9wdGlvbmFsIF0iLHJlbGV2YW5jZTo3MCxkZXNjcmlwdGlvbjoiVGhlIGZvbnQtZGlzcGxheSBkZXNjcmlwdG9yIGRldGVybWluZXMgaG93IGEgZm9udCBmYWNlIGlzIGRpc3BsYXllZCBiYXNlZCBvbiB3aGV0aGVyIGFuZCB3aGVuIGl0IGlzIGRvd25sb2FkZWQgYW5kIHJlYWR5IHRvIHVzZS4ifSx7bmFtZToibGluZS1nYXAtb3ZlcnJpZGUiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Im5vcm1hbCB8IDxwZXJjZW50YWdlPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIGxpbmUtZ2FwIG1ldHJpYyBvZiBhIGZvbnQuIn0se25hbWU6InNpemUtYWRqdXN0IixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiI8cGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQSBtdWx0aXBsaWVyIGZvciBnbHlwaCBvdXRsaW5lcyBhbmQgbWV0cmljcyBvZiBhIGZvbnQuIn0se25hbWU6ImJsZWVkIixzeW50YXg6ImF1dG8gfCA8bGVuZ3RoPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgYmxlZWQgQ1NTIGF0LXJ1bGUgZGVzY3JpcHRvciwgdXNlZCB3aXRoIHRoZSBAcGFnZSBhdC1ydWxlLCBzcGVjaWZpZXMgdGhlIGV4dGVudCBvZiB0aGUgcGFnZSBibGVlZCBhcmVhIG91dHNpZGUgdGhlIHBhZ2UgYm94LiBUaGlzIHByb3BlcnR5IG9ubHkgaGFzIGVmZmVjdCBpZiBjcm9wIG1hcmtzIGFyZSBlbmFibGVkIHVzaW5nIHRoZSBtYXJrcyBwcm9wZXJ0eS4ifSx7bmFtZToibWFya3MiLHN5bnRheDoibm9uZSB8IFsgY3JvcCB8fCBjcm9zcyBdIixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSBtYXJrcyBDU1MgYXQtcnVsZSBkZXNjcmlwdG9yLCB1c2VkIHdpdGggdGhlIEBwYWdlIGF0LXJ1bGUsIGFkZHMgY3JvcCBhbmQvb3IgY3Jvc3MgbWFya3MgdG8gdGhlIHByZXNlbnRhdGlvbiBvZiB0aGUgZG9jdW1lbnQuIENyb3AgbWFya3MgaW5kaWNhdGUgd2hlcmUgdGhlIHBhZ2Ugc2hvdWxkIGJlIGN1dC4gQ3Jvc3MgbWFya3MgYXJlIHVzZWQgdG8gYWxpZ24gc2hlZXRzLiJ9LHtuYW1lOiJzeW50YXgiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6IjxzdHJpbmc+IixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgc3ludGF4IG9mIHRoZSBjdXN0b20gcHJvcGVydHkgcmVnaXN0cmF0aW9uIHJlcHJlc2VudGVkIGJ5IHRoZSBAcHJvcGVydHkgcnVsZSwgY29udHJvbGxpbmcgaG93IHRoZSBwcm9wZXJ0eeKAmXMgdmFsdWUgaXMgcGFyc2VkIGF0IGNvbXB1dGVkIHZhbHVlIHRpbWUuIn0se25hbWU6ImluaGVyaXRzIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJ0cnVlIHwgZmFsc2UiLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBpbmhlcml0IGZsYWcgb2YgdGhlIGN1c3RvbSBwcm9wZXJ0eSByZWdpc3RyYXRpb24gcmVwcmVzZW50ZWQgYnkgdGhlIEBwcm9wZXJ0eSBydWxlLCBjb250cm9sbGluZyB3aGV0aGVyIG9yIG5vdCB0aGUgcHJvcGVydHkgaW5oZXJpdHMgYnkgZGVmYXVsdC4ifSx7bmFtZToiaW5pdGlhbC12YWx1ZSIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoiPHN0cmluZz4iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBpbml0aWFsIHZhbHVlIG9mIHRoZSBjdXN0b20gcHJvcGVydHkgcmVnaXN0cmF0aW9uIHJlcHJlc2VudGVkIGJ5IHRoZSBAcHJvcGVydHkgcnVsZSwgY29udHJvbGxpbmcgdGhlIHByb3BlcnR54oCZcyBpbml0aWFsIHZhbHVlLiJ9LHtuYW1lOiJtYXgtem9vbSIsc3ludGF4OiJhdXRvIHwgPG51bWJlcj4gfCA8cGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlIG1heC16b29tIENTUyBkZXNjcmlwdG9yIHNldHMgdGhlIG1heGltdW0gem9vbSBmYWN0b3Igb2YgYSBkb2N1bWVudCBkZWZpbmVkIGJ5IHRoZSBAdmlld3BvcnQgYXQtcnVsZS4gVGhlIGJyb3dzZXIgd2lsbCBub3Qgem9vbSBpbiBhbnkgZnVydGhlciB0aGFuIHRoaXMsIHdoZXRoZXIgYXV0b21hdGljYWxseSBvciBhdCB0aGUgdXNlcidzIHJlcXVlc3QuXG5cbkEgem9vbSBmYWN0b3Igb2YgMS4wIG9yIDEwMCUgY29ycmVzcG9uZHMgdG8gbm8gem9vbWluZy4gTGFyZ2VyIHZhbHVlcyBhcmUgem9vbWVkIGluLiBTbWFsbGVyIHZhbHVlcyBhcmUgem9vbWVkIG91dC4ifSx7bmFtZToibWluLXpvb20iLHN5bnRheDoiYXV0byB8IDxudW1iZXI+IHwgPHBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSBtaW4tem9vbSBDU1MgZGVzY3JpcHRvciBzZXRzIHRoZSBtaW5pbXVtIHpvb20gZmFjdG9yIG9mIGEgZG9jdW1lbnQgZGVmaW5lZCBieSB0aGUgQHZpZXdwb3J0IGF0LXJ1bGUuIFRoZSBicm93c2VyIHdpbGwgbm90IHpvb20gb3V0IGFueSBmdXJ0aGVyIHRoYW4gdGhpcywgd2hldGhlciBhdXRvbWF0aWNhbGx5IG9yIGF0IHRoZSB1c2VyJ3MgcmVxdWVzdC5cblxuQSB6b29tIGZhY3RvciBvZiAxLjAgb3IgMTAwJSBjb3JyZXNwb25kcyB0byBubyB6b29taW5nLiBMYXJnZXIgdmFsdWVzIGFyZSB6b29tZWQgaW4uIFNtYWxsZXIgdmFsdWVzIGFyZSB6b29tZWQgb3V0LiJ9LHtuYW1lOiJvcmllbnRhdGlvbiIsc3ludGF4OiJhdXRvIHwgcG9ydHJhaXQgfCBsYW5kc2NhcGUiLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlIG9yaWVudGF0aW9uIENTUyBAbWVkaWEgbWVkaWEgZmVhdHVyZSBjYW4gYmUgdXNlZCB0byBhcHBseSBzdHlsZXMgYmFzZWQgb24gdGhlIG9yaWVudGF0aW9uIG9mIHRoZSB2aWV3cG9ydCAob3IgdGhlIHBhZ2UgYm94LCBmb3IgcGFnZWQgbWVkaWEpLiJ9LHtuYW1lOiJ1c2VyLXpvb20iLHN5bnRheDoiem9vbSB8IGZpeGVkIixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSB1c2VyLXpvb20gQ1NTIGRlc2NyaXB0b3IgY29udHJvbHMgd2hldGhlciBvciBub3QgdGhlIHVzZXIgY2FuIGNoYW5nZSB0aGUgem9vbSBmYWN0b3Igb2YgYSBkb2N1bWVudCBkZWZpbmVkIGJ5IEB2aWV3cG9ydC4ifSx7bmFtZToidmlld3BvcnQtZml0IixzeW50YXg6ImF1dG8gfCBjb250YWluIHwgY292ZXIiLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1ibG9jay1zdHlsZSBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgc3R5bGUgb2YgdGhlIGxvZ2ljYWwgYmxvY2sgYm9yZGVycyBvZiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIGEgcGh5c2ljYWwgYm9yZGVyIHN0eWxlIGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmcgbW9kZSwgZGlyZWN0aW9uYWxpdHksIGFuZCB0ZXh0IG9yaWVudGF0aW9uLiJ9XSxhdERpcmVjdGl2ZXM6W3tuYW1lOiJAY2hhcnNldCIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL0BjaGFyc2V0In1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGNoYXJhY3RlciBzZXQgb2YgdGhlIGRvY3VtZW50LiJ9LHtuYW1lOiJAY291bnRlci1zdHlsZSIsYnJvd3NlcnM6WyJFOTEiLCJGRjMzIiwiQzkxIiwiTzc3Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL0Bjb3VudGVyLXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGEgY3VzdG9tIGNvdW50ZXIgc3R5bGUuIn0se25hbWU6IkBmb250LWZhY2UiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9AZm9udC1mYWNlIn1dLGRlc2NyaXB0aW9uOiJBbGxvd3MgZm9yIGxpbmtpbmcgdG8gZm9udHMgdGhhdCBhcmUgYXV0b21hdGljYWxseSBhY3RpdmF0ZWQgd2hlbiBuZWVkZWQuIFRoaXMgcGVybWl0cyBhdXRob3JzIHRvIHdvcmsgYXJvdW5kIHRoZSBsaW1pdGF0aW9uIG9mICd3ZWItc2FmZScgZm9udHMsIGFsbG93aW5nIGZvciBjb25zaXN0ZW50IHJlbmRlcmluZyBpbmRlcGVuZGVudCBvZiB0aGUgZm9udHMgYXZhaWxhYmxlIGluIGEgZ2l2ZW4gdXNlcidzIGVudmlyb25tZW50LiJ9LHtuYW1lOiJAZm9udC1mZWF0dXJlLXZhbHVlcyIsYnJvd3NlcnM6WyJGRjM0IiwiUzkuMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9AZm9udC1mZWF0dXJlLXZhbHVlcyJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBuYW1lZCB2YWx1ZXMgZm9yIHRoZSBpbmRpY2VzIHVzZWQgdG8gc2VsZWN0IGFsdGVybmF0ZSBnbHlwaHMgZm9yIGEgZ2l2ZW4gZm9udCBmYW1pbHkuIn0se25hbWU6IkBpbXBvcnQiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9AaW1wb3J0In1dLGRlc2NyaXB0aW9uOiJJbmNsdWRlcyBjb250ZW50IG9mIGFub3RoZXIgZmlsZS4ifSx7bmFtZToiQGtleWZyYW1lcyIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL0BrZXlmcmFtZXMifV0sZGVzY3JpcHRpb246IkRlZmluZXMgc2V0IG9mIGFuaW1hdGlvbiBrZXkgZnJhbWVzLiJ9LHtuYW1lOiJAbWVkaWEiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9AbWVkaWEifV0sZGVzY3JpcHRpb246IkRlZmluZXMgYSBzdHlsZXNoZWV0IGZvciBhIHBhcnRpY3VsYXIgbWVkaWEgdHlwZS4ifSx7bmFtZToiQC1tb3otZG9jdW1lbnQiLGJyb3dzZXJzOlsiRkYxLjgiXSxkZXNjcmlwdGlvbjoiR2Vja28tc3BlY2lmaWMgYXQtcnVsZSB0aGF0IHJlc3RyaWN0cyB0aGUgc3R5bGUgcnVsZXMgY29udGFpbmVkIHdpdGhpbiBpdCBiYXNlZCBvbiB0aGUgVVJMIG9mIHRoZSBkb2N1bWVudC4ifSx7bmFtZToiQC1tb3ota2V5ZnJhbWVzIixicm93c2VyczpbIkZGNSJdLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHNldCBvZiBhbmltYXRpb24ga2V5IGZyYW1lcy4ifSx7bmFtZToiQC1tcy12aWV3cG9ydCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHNpemUsIHpvb20gZmFjdG9yLCBhbmQgb3JpZW50YXRpb24gb2YgdGhlIHZpZXdwb3J0LiJ9LHtuYW1lOiJAbmFtZXNwYWNlIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvQG5hbWVzcGFjZSJ9XSxkZXNjcmlwdGlvbjoiRGVjbGFyZXMgYSBwcmVmaXggYW5kIGFzc29jaWF0ZXMgaXQgd2l0aCBhIG5hbWVzcGFjZSBuYW1lLiJ9LHtuYW1lOiJALW8ta2V5ZnJhbWVzIixicm93c2VyczpbIk8xMiJdLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHNldCBvZiBhbmltYXRpb24ga2V5IGZyYW1lcy4ifSx7bmFtZToiQC1vLXZpZXdwb3J0Iixicm93c2VyczpbIk8xMSJdLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHNpemUsIHpvb20gZmFjdG9yLCBhbmQgb3JpZW50YXRpb24gb2YgdGhlIHZpZXdwb3J0LiJ9LHtuYW1lOiJAcGFnZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjE5IiwiQzIiLCJJRTgiLCJPNiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9AcGFnZSJ9XSxkZXNjcmlwdGlvbjoiRGlyZWN0aXZlIGRlZmluZXMgdmFyaW91cyBwYWdlIHBhcmFtZXRlcnMuIn0se25hbWU6IkBzdXBwb3J0cyIsYnJvd3NlcnM6WyJFMTIiLCJGRjIyIiwiUzkiLCJDMjgiLCJPMTIuMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9Ac3VwcG9ydHMifV0sZGVzY3JpcHRpb246IkEgY29uZGl0aW9uYWwgZ3JvdXAgcnVsZSB3aG9zZSBjb25kaXRpb24gdGVzdHMgd2hldGhlciB0aGUgdXNlciBhZ2VudCBzdXBwb3J0cyBDU1MgcHJvcGVydHk6dmFsdWUgcGFpcnMuIn0se25hbWU6IkAtd2Via2l0LWtleWZyYW1lcyIsYnJvd3NlcnM6WyJDIiwiUzQiXSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBzZXQgb2YgYW5pbWF0aW9uIGtleSBmcmFtZXMuIn1dLHBzZXVkb0NsYXNzZXM6W3tuYW1lOiI6YWN0aXZlIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmFjdGl2ZSJ9XSxkZXNjcmlwdGlvbjoiQXBwbGllcyB3aGlsZSBhbiBlbGVtZW50IGlzIGJlaW5nIGFjdGl2YXRlZCBieSB0aGUgdXNlci4gRm9yIGV4YW1wbGUsIGJldHdlZW4gdGhlIHRpbWVzIHRoZSB1c2VyIHByZXNzZXMgdGhlIG1vdXNlIGJ1dHRvbiBhbmQgcmVsZWFzZXMgaXQuIn0se25hbWU6IjphbnktbGluayIsYnJvd3NlcnM6WyJFNzkiLCJGRjUwIiwiUzkiLCJDNjUiLCJPNTIiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmFueS1saW5rIn1dLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBhY3RzIGFzIHRoZSBzb3VyY2UgYW5jaG9yIG9mIGEgaHlwZXJsaW5rLiBBcHBsaWVzIHRvIGJvdGggdmlzaXRlZCBhbmQgdW52aXNpdGVkIGxpbmtzLiJ9LHtuYW1lOiI6Y2hlY2tlZCIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpjaGVja2VkIn1dLGRlc2NyaXB0aW9uOiJSYWRpbyBhbmQgY2hlY2tib3ggZWxlbWVudHMgY2FuIGJlIHRvZ2dsZWQgYnkgdGhlIHVzZXIuIFNvbWUgbWVudSBpdGVtcyBhcmUgJ2NoZWNrZWQnIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyB0aGVtLiBXaGVuIHN1Y2ggZWxlbWVudHMgYXJlIHRvZ2dsZWQgJ29uJyB0aGUgOmNoZWNrZWQgcHNldWRvLWNsYXNzIGFwcGxpZXMuIn0se25hbWU6Ijpjb3JuZXItcHJlc2VudCIsYnJvd3NlcnM6WyJDIiwiUzUiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBJbmRpY2F0ZXMgd2hldGhlciBvciBub3QgYSBzY3JvbGxiYXIgY29ybmVyIGlzIHByZXNlbnQuIn0se25hbWU6IjpkZWNyZW1lbnQiLGJyb3dzZXJzOlsiQyIsIlM1Il0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gQXBwbGllcyB0byBidXR0b25zIGFuZCB0cmFjayBwaWVjZXMuIEluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0aGUgYnV0dG9uIG9yIHRyYWNrIHBpZWNlIHdpbGwgZGVjcmVtZW50IHRoZSB2aWV34oCZcyBwb3NpdGlvbiB3aGVuIHVzZWQuIn0se25hbWU6IjpkZWZhdWx0Iixicm93c2VyczpbIkU3OSIsIkZGNCIsIlM1IiwiQzEwIiwiTzEwIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpkZWZhdWx0In1dLGRlc2NyaXB0aW9uOiJBcHBsaWVzIHRvIHRoZSBvbmUgb3IgbW9yZSBVSSBlbGVtZW50cyB0aGF0IGFyZSB0aGUgZGVmYXVsdCBhbW9uZyBhIHNldCBvZiBzaW1pbGFyIGVsZW1lbnRzLiBUeXBpY2FsbHkgYXBwbGllcyB0byBjb250ZXh0IG1lbnUgaXRlbXMsIGJ1dHRvbnMsIGFuZCBzZWxlY3QgbGlzdHMvbWVudXMuIn0se25hbWU6IjpkaXNhYmxlZCIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpkaXNhYmxlZCJ9XSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB1c2VyIGludGVyZmFjZSBlbGVtZW50cyB0aGF0IGFyZSBpbiBhIGRpc2FibGVkIHN0YXRlOyBzdWNoIGVsZW1lbnRzIGhhdmUgYSBjb3JyZXNwb25kaW5nIGVuYWJsZWQgc3RhdGUuIn0se25hbWU6Ijpkb3VibGUtYnV0dG9uIixicm93c2VyczpbIkMiLCJTNSJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIEFwcGxpZXMgdG8gYnV0dG9ucyBhbmQgdHJhY2sgcGllY2VzLiBBcHBsaWVzIHdoZW4gYm90aCBidXR0b25zIGFyZSBkaXNwbGF5ZWQgdG9nZXRoZXIgYXQgdGhlIHNhbWUgZW5kIG9mIHRoZSBzY3JvbGxiYXIuIn0se25hbWU6IjplbXB0eSIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzplbXB0eSJ9XSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaGFzIG5vIGNoaWxkcmVuIGF0IGFsbC4ifSx7bmFtZToiOmVuYWJsZWQiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86ZW5hYmxlZCJ9XSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB1c2VyIGludGVyZmFjZSBlbGVtZW50cyB0aGF0IGFyZSBpbiBhbiBlbmFibGVkIHN0YXRlOyBzdWNoIGVsZW1lbnRzIGhhdmUgYSBjb3JyZXNwb25kaW5nIGRpc2FibGVkIHN0YXRlLiJ9LHtuYW1lOiI6ZW5kIixicm93c2VyczpbIkMiLCJTNSJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIEFwcGxpZXMgdG8gYnV0dG9ucyBhbmQgdHJhY2sgcGllY2VzLiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgb2JqZWN0IGlzIHBsYWNlZCBhZnRlciB0aGUgdGh1bWIuIn0se25hbWU6IjpmaXJzdCIsYnJvd3NlcnM6WyJFMTIiLCJTNiIsIkMxOCIsIklFOCIsIk85LjIiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmZpcnN0In1dLGRlc2NyaXB0aW9uOiJXaGVuIHByaW50aW5nIGRvdWJsZS1zaWRlZCBkb2N1bWVudHMsIHRoZSBwYWdlIGJveGVzIG9uIGxlZnQgYW5kIHJpZ2h0IHBhZ2VzIG1heSBiZSBkaWZmZXJlbnQuIFRoaXMgY2FuIGJlIGV4cHJlc3NlZCB0aHJvdWdoIENTUyBwc2V1ZG8tY2xhc3NlcyBkZWZpbmVkIGluIHRoZSAgcGFnZSBjb250ZXh0LiJ9LHtuYW1lOiI6Zmlyc3QtY2hpbGQiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Zmlyc3QtY2hpbGQifV0sZGVzY3JpcHRpb246IlNhbWUgYXMgOm50aC1jaGlsZCgxKS4gUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaXMgdGhlIGZpcnN0IGNoaWxkIG9mIHNvbWUgb3RoZXIgZWxlbWVudC4ifSx7bmFtZToiOmZpcnN0LW9mLXR5cGUiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Zmlyc3Qtb2YtdHlwZSJ9XSxkZXNjcmlwdGlvbjoiU2FtZSBhcyA6bnRoLW9mLXR5cGUoMSkuIFJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGlzIHRoZSBmaXJzdCBzaWJsaW5nIG9mIGl0cyB0eXBlIGluIHRoZSBsaXN0IG9mIGNoaWxkcmVuIG9mIGl0cyBwYXJlbnQgZWxlbWVudC4ifSx7bmFtZToiOmZvY3VzIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmZvY3VzIn1dLGRlc2NyaXB0aW9uOiJBcHBsaWVzIHdoaWxlIGFuIGVsZW1lbnQgaGFzIHRoZSBmb2N1cyAoYWNjZXB0cyBrZXlib2FyZCBvciBtb3VzZSBldmVudHMsIG9yIG90aGVyIGZvcm1zIG9mIGlucHV0KS4ifSx7bmFtZToiOmZ1bGxzY3JlZW4iLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86ZnVsbHNjcmVlbiJ9XSxkZXNjcmlwdGlvbjoiTWF0Y2hlcyBhbnkgZWxlbWVudCB0aGF0IGhhcyBpdHMgZnVsbHNjcmVlbiBmbGFnIHNldC4ifSx7bmFtZToiOmZ1dHVyZSIsYnJvd3NlcnM6WyJTNyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86ZnV0dXJlIn1dLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGFueSBlbGVtZW50IHRoYXQgaXMgZGVmaW5lZCB0byBvY2N1ciBlbnRpcmVseSBhZnRlciBhIDpjdXJyZW50IGVsZW1lbnQuIn0se25hbWU6Ijpob3Jpem9udGFsIixicm93c2VyczpbIkMiLCJTNSJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIEFwcGxpZXMgdG8gYW55IHNjcm9sbGJhciBwaWVjZXMgdGhhdCBoYXZlIGEgaG9yaXpvbnRhbCBvcmllbnRhdGlvbi4ifSx7bmFtZToiOmhvc3QiLGJyb3dzZXJzOlsiRTc5IiwiRkY2MyIsIlMxMCIsIkM1NCIsIk80MSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86aG9zdCJ9XSxkZXNjcmlwdGlvbjoiV2hlbiBldmFsdWF0ZWQgaW4gdGhlIGNvbnRleHQgb2YgYSBzaGFkb3cgdHJlZSwgbWF0Y2hlcyB0aGUgc2hhZG93IHRyZWXigJlzIGhvc3QgZWxlbWVudC4ifSx7bmFtZToiOmhvc3QoKSIsYnJvd3NlcnM6WyJDMzUiLCJPMjIiXSxkZXNjcmlwdGlvbjoiV2hlbiBldmFsdWF0ZWQgaW4gdGhlIGNvbnRleHQgb2YgYSBzaGFkb3cgdHJlZSwgaXQgbWF0Y2hlcyB0aGUgc2hhZG93IHRyZWXigJlzIGhvc3QgZWxlbWVudCBpZiB0aGUgaG9zdCBlbGVtZW50LCBpbiBpdHMgbm9ybWFsIGNvbnRleHQsIG1hdGNoZXMgdGhlIHNlbGVjdG9yIGFyZ3VtZW50LiJ9LHtuYW1lOiI6aG9zdC1jb250ZXh0KCkiLGJyb3dzZXJzOlsiQzM1IiwiTzIyIl0sZGVzY3JpcHRpb246IlRlc3RzIHdoZXRoZXIgdGhlcmUgaXMgYW4gYW5jZXN0b3IsIG91dHNpZGUgdGhlIHNoYWRvdyB0cmVlLCB3aGljaCBtYXRjaGVzIGEgcGFydGljdWxhciBzZWxlY3Rvci4ifSx7bmFtZToiOmhvdmVyIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmhvdmVyIn1dLGRlc2NyaXB0aW9uOiJBcHBsaWVzIHdoaWxlIHRoZSB1c2VyIGRlc2lnbmF0ZXMgYW4gZWxlbWVudCB3aXRoIGEgcG9pbnRpbmcgZGV2aWNlLCBidXQgZG9lcyBub3QgbmVjZXNzYXJpbHkgYWN0aXZhdGUgaXQuIEZvciBleGFtcGxlLCBhIHZpc3VhbCB1c2VyIGFnZW50IGNvdWxkIGFwcGx5IHRoaXMgcHNldWRvLWNsYXNzIHdoZW4gdGhlIGN1cnNvciAobW91c2UgcG9pbnRlcikgaG92ZXJzIG92ZXIgYSBib3ggZ2VuZXJhdGVkIGJ5IHRoZSBlbGVtZW50LiJ9LHtuYW1lOiI6aW5jcmVtZW50Iixicm93c2VyczpbIkMiLCJTNSJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIEFwcGxpZXMgdG8gYnV0dG9ucyBhbmQgdHJhY2sgcGllY2VzLiBJbmRpY2F0ZXMgd2hldGhlciBvciBub3QgdGhlIGJ1dHRvbiBvciB0cmFjayBwaWVjZSB3aWxsIGluY3JlbWVudCB0aGUgdmlld+KAmXMgcG9zaXRpb24gd2hlbiB1c2VkLiJ9LHtuYW1lOiI6aW5kZXRlcm1pbmF0ZSIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzppbmRldGVybWluYXRlIn1dLGRlc2NyaXB0aW9uOiJBcHBsaWVzIHRvIFVJIGVsZW1lbnRzIHdob3NlIHZhbHVlIGlzIGluIGFuIGluZGV0ZXJtaW5hdGUgc3RhdGUuIn0se25hbWU6Ijppbi1yYW5nZSIsYnJvd3NlcnM6WyJFMTMiLCJGRjI5IiwiUzUuMSIsIkMxMCIsIk8xMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86aW4tcmFuZ2UifV0sZGVzY3JpcHRpb246IlVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgbWluIGFuZCBtYXggYXR0cmlidXRlcywgd2hldGhlciBvbiBhIHJhbmdlIGlucHV0LCBhIG51bWJlciBmaWVsZCwgb3IgYW55IG90aGVyIHR5cGVzIHRoYXQgYWNjZXB0IHRob3NlIGF0dHJpYnV0ZXMuIn0se25hbWU6IjppbnZhbGlkIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmludmFsaWQifV0sZGVzY3JpcHRpb246IkFuIGVsZW1lbnQgaXMgOnZhbGlkIG9yIDppbnZhbGlkIHdoZW4gaXQgaXMsIHJlc3BlY3RpdmVseSwgdmFsaWQgb3IgaW52YWxpZCB3aXRoIHJlc3BlY3QgdG8gZGF0YSB2YWxpZGl0eSBzZW1hbnRpY3MgZGVmaW5lZCBieSBhIGRpZmZlcmVudCBzcGVjaWZpY2F0aW9uLiJ9LHtuYW1lOiI6bGFuZygpIixicm93c2VyczpbIkUiLCJDIiwiRkYxIiwiSUU4IiwiTzgiLCJTMyJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyBpbiBsYW5ndWFnZSBzcGVjaWZpZWQuIn0se25hbWU6IjpsYXN0LWNoaWxkIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmxhc3QtY2hpbGQifV0sZGVzY3JpcHRpb246IlNhbWUgYXMgOm50aC1sYXN0LWNoaWxkKDEpLiBSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyB0aGUgbGFzdCBjaGlsZCBvZiBzb21lIG90aGVyIGVsZW1lbnQuIn0se25hbWU6IjpsYXN0LW9mLXR5cGUiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86bGFzdC1vZi10eXBlIn1dLGRlc2NyaXB0aW9uOiJTYW1lIGFzIDpudGgtbGFzdC1vZi10eXBlKDEpLiBSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyB0aGUgbGFzdCBzaWJsaW5nIG9mIGl0cyB0eXBlIGluIHRoZSBsaXN0IG9mIGNoaWxkcmVuIG9mIGl0cyBwYXJlbnQgZWxlbWVudC4ifSx7bmFtZToiOmxlZnQiLGJyb3dzZXJzOlsiRTEyIiwiUzUuMSIsIkM2IiwiSUU4IiwiTzkuMiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86bGVmdCJ9XSxkZXNjcmlwdGlvbjoiV2hlbiBwcmludGluZyBkb3VibGUtc2lkZWQgZG9jdW1lbnRzLCB0aGUgcGFnZSBib3hlcyBvbiBsZWZ0IGFuZCByaWdodCBwYWdlcyBtYXkgYmUgZGlmZmVyZW50LiBUaGlzIGNhbiBiZSBleHByZXNzZWQgdGhyb3VnaCBDU1MgcHNldWRvLWNsYXNzZXMgZGVmaW5lZCBpbiB0aGUgIHBhZ2UgY29udGV4dC4ifSx7bmFtZToiOmxpbmsiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86bGluayJ9XSxkZXNjcmlwdGlvbjoiQXBwbGllcyB0byBsaW5rcyB0aGF0IGhhdmUgbm90IHlldCBiZWVuIHZpc2l0ZWQuIn0se25hbWU6IjptYXRjaGVzKCkiLGJyb3dzZXJzOlsiUzkiXSxkZXNjcmlwdGlvbjoiVGFrZXMgYSBzZWxlY3RvciBsaXN0IGFzIGl0cyBhcmd1bWVudC4gSXQgcmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaXMgcmVwcmVzZW50ZWQgYnkgaXRzIGFyZ3VtZW50LiJ9LHtuYW1lOiI6LW1vei1hbnkoKSIsYnJvd3NlcnM6WyJGRjQiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaXMgcmVwcmVzZW50ZWQgYnkgdGhlIHNlbGVjdG9yIGxpc3QgcGFzc2VkIGFzIGl0cyBhcmd1bWVudC4gU3RhbmRhcmRpemVkIGFzIDptYXRjaGVzKCkuIn0se25hbWU6IjotbW96LWFueS1saW5rIixicm93c2VyczpbIkZGMSJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBhY3RzIGFzIHRoZSBzb3VyY2UgYW5jaG9yIG9mIGEgaHlwZXJsaW5rLiBBcHBsaWVzIHRvIGJvdGggdmlzaXRlZCBhbmQgdW52aXNpdGVkIGxpbmtzLiJ9LHtuYW1lOiI6LW1vei1icm9rZW4iLGJyb3dzZXJzOlsiRkYzIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzotbW96LWJyb2tlbiJ9XSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBNYXRjaGVzIGVsZW1lbnRzIHJlcHJlc2VudGluZyBicm9rZW4gaW1hZ2VzLiJ9LHtuYW1lOiI6LW1vei1kcmFnLW92ZXIiLGJyb3dzZXJzOlsiRkYxIl0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gTWF0Y2hlcyBlbGVtZW50cyB3aGVuIGEgZHJhZy1vdmVyIGV2ZW50IGFwcGxpZXMgdG8gaXQuIn0se25hbWU6IjotbW96LWZpcnN0LW5vZGUiLGJyb3dzZXJzOlsiRkYxIl0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaXMgdGhlIGZpcnN0IGNoaWxkIG5vZGUgb2Ygc29tZSBvdGhlciBlbGVtZW50LiJ9LHtuYW1lOiI6LW1vei1mb2N1c3JpbmciLGJyb3dzZXJzOlsiRkY0Il0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gTWF0Y2hlcyBhbiBlbGVtZW50IHRoYXQgaGFzIGZvY3VzIGFuZCBmb2N1cyByaW5nIGRyYXdpbmcgaXMgZW5hYmxlZCBpbiB0aGUgYnJvd3Nlci4ifSx7bmFtZToiOi1tb3otZnVsbC1zY3JlZW4iLGJyb3dzZXJzOlsiRkY5Il0sZGVzY3JpcHRpb246Ik1hdGNoZXMgYW55IGVsZW1lbnQgdGhhdCBoYXMgaXRzIGZ1bGxzY3JlZW4gZmxhZyBzZXQuIFN0YW5kYXJkaXplZCBhcyA6ZnVsbHNjcmVlbi4ifSx7bmFtZToiOi1tb3otbGFzdC1ub2RlIixicm93c2VyczpbIkZGMSJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIFJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGlzIHRoZSBsYXN0IGNoaWxkIG5vZGUgb2Ygc29tZSBvdGhlciBlbGVtZW50LiJ9LHtuYW1lOiI6LW1vei1sb2FkaW5nIixicm93c2VyczpbIkZGMyJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIE1hdGNoZXMgZWxlbWVudHMsIHN1Y2ggYXMgaW1hZ2VzLCB0aGF0IGhhdmVu4oCZdCBzdGFydGVkIGxvYWRpbmcgeWV0LiJ9LHtuYW1lOiI6LW1vei1vbmx5LXdoaXRlc3BhY2UiLGJyb3dzZXJzOlsiRkYxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzotbW96LW9ubHktd2hpdGVzcGFjZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNhbWUgYXMgOmVtcHR5LCBleGNlcHQgdGhhdCBpdCBhZGRpdGlvbmFsbHkgbWF0Y2hlcyBlbGVtZW50cyB0aGF0IG9ubHkgY29udGFpbiBjb2RlIHBvaW50cyBhZmZlY3RlZCBieSB3aGl0ZXNwYWNlIHByb2Nlc3NpbmcuIFN0YW5kYXJkaXplZCBhcyA6YmxhbmsuIn0se25hbWU6IjotbW96LXBsYWNlaG9sZGVyIixicm93c2VyczpbIkZGNCJdLGRlc2NyaXB0aW9uOiJEZXByZWNhdGVkLiBSZXByZXNlbnRzIHBsYWNlaG9sZGVyIHRleHQgaW4gYW4gaW5wdXQgZmllbGQuIFVzZSA6Oi1tb3otcGxhY2Vob2xkZXIgZm9yIEZpcmVmb3ggMTkrLiJ9LHtuYW1lOiI6LW1vei1zdWJtaXQtaW52YWxpZCIsYnJvd3NlcnM6WyJGRjg4Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzotbW96LXN1Ym1pdC1pbnZhbGlkIn1dLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIFJlcHJlc2VudHMgYW55IHN1Ym1pdCBidXR0b24gd2hlbiB0aGUgY29udGVudHMgb2YgdGhlIGFzc29jaWF0ZWQgZm9ybSBhcmUgbm90IHZhbGlkLiJ9LHtuYW1lOiI6LW1vei1zdXBwcmVzc2VkIixicm93c2VyczpbIkZGMyJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIE1hdGNoZXMgZWxlbWVudHMgcmVwcmVzZW50aW5nIGltYWdlcyB0aGF0IGhhdmUgYmVlbiBibG9ja2VkIGZyb20gbG9hZGluZy4ifSx7bmFtZToiOi1tb3otdWktaW52YWxpZCIsYnJvd3NlcnM6WyJGRjQiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBSZXByZXNlbnRzIGFueSB2YWxpZGF0ZWQgZm9ybSBlbGVtZW50IHdob3NlIHZhbHVlIGlzbid0IHZhbGlkICJ9LHtuYW1lOiI6LW1vei11aS12YWxpZCIsYnJvd3NlcnM6WyJGRjQiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBSZXByZXNlbnRzIGFueSB2YWxpZGF0ZWQgZm9ybSBlbGVtZW50IHdob3NlIHZhbHVlIGlzIHZhbGlkICJ9LHtuYW1lOiI6LW1vei11c2VyLWRpc2FibGVkIixicm93c2VyczpbIkZGMyJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIE1hdGNoZXMgZWxlbWVudHMgcmVwcmVzZW50aW5nIGltYWdlcyB0aGF0IGhhdmUgYmVlbiBkaXNhYmxlZCBkdWUgdG8gdGhlIHVzZXLigJlzIHByZWZlcmVuY2VzLiJ9LHtuYW1lOiI6LW1vei13aW5kb3ctaW5hY3RpdmUiLGJyb3dzZXJzOlsiRkY0Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzotbW96LXdpbmRvdy1pbmFjdGl2ZSJ9XSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBNYXRjaGVzIGVsZW1lbnRzIGluIGFuIGluYWN0aXZlIHdpbmRvdy4ifSx7bmFtZToiOi1tcy1mdWxsc2NyZWVuIixicm93c2VyczpbIklFMTEiXSxkZXNjcmlwdGlvbjoiTWF0Y2hlcyBhbnkgZWxlbWVudCB0aGF0IGhhcyBpdHMgZnVsbHNjcmVlbiBmbGFnIHNldC4ifSx7bmFtZToiOi1tcy1pbnB1dC1wbGFjZWhvbGRlciIsYnJvd3NlcnM6WyJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgcGxhY2Vob2xkZXIgdGV4dCBpbiBhbiBpbnB1dCBmaWVsZC4gTm90ZTogZm9yIEVkZ2UgdXNlIHRoZSBwc2V1ZG8tZWxlbWVudCA6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlci4gU3RhbmRhcmRpemVkIGFzIDo6cGxhY2Vob2xkZXIuIn0se25hbWU6IjotbXMta2V5Ym9hcmQtYWN0aXZlIixicm93c2VyczpbIklFMTAiXSxkZXNjcmlwdGlvbjoiV2luZG93cyBTdG9yZSBhcHBzIG9ubHkuIEFwcGxpZXMgb25lIG9yIG1vcmUgc3R5bGVzIHRvIGFuIGVsZW1lbnQgd2hlbiBpdCBoYXMgZm9jdXMgYW5kIHRoZSB1c2VyIHByZXNzZXMgdGhlIHNwYWNlIGJhci4ifSx7bmFtZToiOi1tcy1sYW5nKCkiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaXMgaW4gdGhlIGxhbmd1YWdlIHNwZWNpZmllZC4gQWNjZXB0cyBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGxhbmd1YWdlIHRva2Vucy4ifSx7bmFtZToiOm5vLWJ1dHRvbiIsYnJvd3NlcnM6WyJDIiwiUzUiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBBcHBsaWVzIHRvIHRyYWNrIHBpZWNlcy4gQXBwbGllcyB3aGVuIHRoZXJlIGlzIG5vIGJ1dHRvbiBhdCB0aGF0IGVuZCBvZiB0aGUgdHJhY2suIn0se25hbWU6Ijpub3QoKSIsYnJvd3NlcnM6WyJFIiwiQyIsIkZGMSIsIklFOSIsIk85LjUiLCJTMiJdLGRlc2NyaXB0aW9uOiJUaGUgbmVnYXRpb24gcHNldWRvLWNsYXNzLCA6bm90KFgpLCBpcyBhIGZ1bmN0aW9uYWwgbm90YXRpb24gdGFraW5nIGEgc2ltcGxlIHNlbGVjdG9yIChleGNsdWRpbmcgdGhlIG5lZ2F0aW9uIHBzZXVkby1jbGFzcyBpdHNlbGYpIGFzIGFuIGFyZ3VtZW50LiBJdCByZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyBub3QgcmVwcmVzZW50ZWQgYnkgaXRzIGFyZ3VtZW50LiJ9LHtuYW1lOiI6bnRoLWNoaWxkKCkiLGJyb3dzZXJzOlsiRSIsIkMiLCJGRjMuNSIsIklFOSIsIk85LjUiLCJTMy4xIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGhhcyBhbitiLTEgc2libGluZ3MgYmVmb3JlIGl0IGluIHRoZSBkb2N1bWVudCB0cmVlLCBmb3IgYW55IHBvc2l0aXZlIGludGVnZXIgb3IgemVybyB2YWx1ZSBvZiBuLCBhbmQgaGFzIGEgcGFyZW50IGVsZW1lbnQuIn0se25hbWU6IjpudGgtbGFzdC1jaGlsZCgpIixicm93c2VyczpbIkUiLCJDIiwiRkYzLjUiLCJJRTkiLCJPOS41IiwiUzMuMSJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBoYXMgYW4rYi0xIHNpYmxpbmdzIGFmdGVyIGl0IGluIHRoZSBkb2N1bWVudCB0cmVlLCBmb3IgYW55IHBvc2l0aXZlIGludGVnZXIgb3IgemVybyB2YWx1ZSBvZiBuLCBhbmQgaGFzIGEgcGFyZW50IGVsZW1lbnQuIn0se25hbWU6IjpudGgtbGFzdC1vZi10eXBlKCkiLGJyb3dzZXJzOlsiRSIsIkMiLCJGRjMuNSIsIklFOSIsIk85LjUiLCJTMy4xIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGhhcyBhbitiLTEgc2libGluZ3Mgd2l0aCB0aGUgc2FtZSBleHBhbmRlZCBlbGVtZW50IG5hbWUgYWZ0ZXIgaXQgaW4gdGhlIGRvY3VtZW50IHRyZWUsIGZvciBhbnkgemVybyBvciBwb3NpdGl2ZSBpbnRlZ2VyIHZhbHVlIG9mIG4sIGFuZCBoYXMgYSBwYXJlbnQgZWxlbWVudC4ifSx7bmFtZToiOm50aC1vZi10eXBlKCkiLGJyb3dzZXJzOlsiRSIsIkMiLCJGRjMuNSIsIklFOSIsIk85LjUiLCJTMy4xIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGhhcyBhbitiLTEgc2libGluZ3Mgd2l0aCB0aGUgc2FtZSBleHBhbmRlZCBlbGVtZW50IG5hbWUgYmVmb3JlIGl0IGluIHRoZSBkb2N1bWVudCB0cmVlLCBmb3IgYW55IHplcm8gb3IgcG9zaXRpdmUgaW50ZWdlciB2YWx1ZSBvZiBuLCBhbmQgaGFzIGEgcGFyZW50IGVsZW1lbnQuIn0se25hbWU6Ijpvbmx5LWNoaWxkIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOm9ubHktY2hpbGQifV0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGhhcyBhIHBhcmVudCBlbGVtZW50IGFuZCB3aG9zZSBwYXJlbnQgZWxlbWVudCBoYXMgbm8gb3RoZXIgZWxlbWVudCBjaGlsZHJlbi4gU2FtZSBhcyA6Zmlyc3QtY2hpbGQ6bGFzdC1jaGlsZCBvciA6bnRoLWNoaWxkKDEpOm50aC1sYXN0LWNoaWxkKDEpLCBidXQgd2l0aCBhIGxvd2VyIHNwZWNpZmljaXR5LiJ9LHtuYW1lOiI6b25seS1vZi10eXBlIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOm9ubHktb2YtdHlwZSJ9XSxkZXNjcmlwdGlvbjoiTWF0Y2hlcyBldmVyeSBlbGVtZW50IHRoYXQgaXMgdGhlIG9ubHkgY2hpbGQgb2YgaXRzIHR5cGUsIG9mIGl0cyBwYXJlbnQuIFNhbWUgYXMgOmZpcnN0LW9mLXR5cGU6bGFzdC1vZi10eXBlIG9yIDpudGgtb2YtdHlwZSgxKTpudGgtbGFzdC1vZi10eXBlKDEpLCBidXQgd2l0aCBhIGxvd2VyIHNwZWNpZmljaXR5LiJ9LHtuYW1lOiI6b3B0aW9uYWwiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86b3B0aW9uYWwifV0sZGVzY3JpcHRpb246IkEgZm9ybSBlbGVtZW50IGlzIDpyZXF1aXJlZCBvciA6b3B0aW9uYWwgaWYgYSB2YWx1ZSBmb3IgaXQgaXMsIHJlc3BlY3RpdmVseSwgcmVxdWlyZWQgb3Igb3B0aW9uYWwgYmVmb3JlIHRoZSBmb3JtIGl0IGJlbG9uZ3MgdG8gaXMgc3VibWl0dGVkLiBFbGVtZW50cyB0aGF0IGFyZSBub3QgZm9ybSBlbGVtZW50cyBhcmUgbmVpdGhlciByZXF1aXJlZCBub3Igb3B0aW9uYWwuIn0se25hbWU6IjpvdXQtb2YtcmFuZ2UiLGJyb3dzZXJzOlsiRTEzIiwiRkYyOSIsIlM1LjEiLCJDMTAiLCJPMTEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOm91dC1vZi1yYW5nZSJ9XSxkZXNjcmlwdGlvbjoiVXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBtaW4gYW5kIG1heCBhdHRyaWJ1dGVzLCB3aGV0aGVyIG9uIGEgcmFuZ2UgaW5wdXQsIGEgbnVtYmVyIGZpZWxkLCBvciBhbnkgb3RoZXIgdHlwZXMgdGhhdCBhY2NlcHQgdGhvc2UgYXR0cmlidXRlcy4ifSx7bmFtZToiOnBhc3QiLGJyb3dzZXJzOlsiUzciXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOnBhc3QifV0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW55IGVsZW1lbnQgdGhhdCBpcyBkZWZpbmVkIHRvIG9jY3VyIGVudGlyZWx5IHByaW9yIHRvIGEgOmN1cnJlbnQgZWxlbWVudC4ifSx7bmFtZToiOnJlYWQtb25seSIsYnJvd3NlcnM6WyJFMTMiLCJGRjc4IiwiUzQiLCJDMSIsIk85Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpyZWFkLW9ubHkifV0sZGVzY3JpcHRpb246IkFuIGVsZW1lbnQgd2hvc2UgY29udGVudHMgYXJlIG5vdCB1c2VyLWFsdGVyYWJsZSBpcyA6cmVhZC1vbmx5LiBIb3dldmVyLCBlbGVtZW50cyB3aG9zZSBjb250ZW50cyBhcmUgdXNlci1hbHRlcmFibGUgKHN1Y2ggYXMgdGV4dCBpbnB1dCBmaWVsZHMpIGFyZSBjb25zaWRlcmVkIHRvIGJlIGluIGEgOnJlYWQtd3JpdGUgc3RhdGUuIEluIHR5cGljYWwgZG9jdW1lbnRzLCBtb3N0IGVsZW1lbnRzIGFyZSA6cmVhZC1vbmx5LiJ9LHtuYW1lOiI6cmVhZC13cml0ZSIsYnJvd3NlcnM6WyJFMTMiLCJGRjc4IiwiUzQiLCJDMSIsIk85Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpyZWFkLXdyaXRlIn1dLGRlc2NyaXB0aW9uOiJBbiBlbGVtZW50IHdob3NlIGNvbnRlbnRzIGFyZSBub3QgdXNlci1hbHRlcmFibGUgaXMgOnJlYWQtb25seS4gSG93ZXZlciwgZWxlbWVudHMgd2hvc2UgY29udGVudHMgYXJlIHVzZXItYWx0ZXJhYmxlIChzdWNoIGFzIHRleHQgaW5wdXQgZmllbGRzKSBhcmUgY29uc2lkZXJlZCB0byBiZSBpbiBhIDpyZWFkLXdyaXRlIHN0YXRlLiBJbiB0eXBpY2FsIGRvY3VtZW50cywgbW9zdCBlbGVtZW50cyBhcmUgOnJlYWQtb25seS4ifSx7bmFtZToiOnJlcXVpcmVkIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOnJlcXVpcmVkIn1dLGRlc2NyaXB0aW9uOiJBIGZvcm0gZWxlbWVudCBpcyA6cmVxdWlyZWQgb3IgOm9wdGlvbmFsIGlmIGEgdmFsdWUgZm9yIGl0IGlzLCByZXNwZWN0aXZlbHksIHJlcXVpcmVkIG9yIG9wdGlvbmFsIGJlZm9yZSB0aGUgZm9ybSBpdCBiZWxvbmdzIHRvIGlzIHN1Ym1pdHRlZC4gRWxlbWVudHMgdGhhdCBhcmUgbm90IGZvcm0gZWxlbWVudHMgYXJlIG5laXRoZXIgcmVxdWlyZWQgbm9yIG9wdGlvbmFsLiJ9LHtuYW1lOiI6cmlnaHQiLGJyb3dzZXJzOlsiRTEyIiwiUzUuMSIsIkM2IiwiSUU4IiwiTzkuMiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86cmlnaHQifV0sZGVzY3JpcHRpb246IldoZW4gcHJpbnRpbmcgZG91YmxlLXNpZGVkIGRvY3VtZW50cywgdGhlIHBhZ2UgYm94ZXMgb24gbGVmdCBhbmQgcmlnaHQgcGFnZXMgbWF5IGJlIGRpZmZlcmVudC4gVGhpcyBjYW4gYmUgZXhwcmVzc2VkIHRocm91Z2ggQ1NTIHBzZXVkby1jbGFzc2VzIGRlZmluZWQgaW4gdGhlICBwYWdlIGNvbnRleHQuIn0se25hbWU6Ijpyb290IixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOnJvb3QifV0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGlzIHRoZSByb290IG9mIHRoZSBkb2N1bWVudC4gSW4gSFRNTCA0LCB0aGlzIGlzIGFsd2F5cyB0aGUgSFRNTCBlbGVtZW50LiJ9LHtuYW1lOiI6c2NvcGUiLGJyb3dzZXJzOlsiRTc5IiwiRkYzMiIsIlM3IiwiQzI3IiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpzY29wZSJ9XSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhbnkgZWxlbWVudCB0aGF0IGlzIGluIHRoZSBjb250ZXh0dWFsIHJlZmVyZW5jZSBlbGVtZW50IHNldC4ifSx7bmFtZToiOnNpbmdsZS1idXR0b24iLGJyb3dzZXJzOlsiQyIsIlM1Il0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gQXBwbGllcyB0byBidXR0b25zIGFuZCB0cmFjayBwaWVjZXMuIEFwcGxpZXMgd2hlbiBib3RoIGJ1dHRvbnMgYXJlIGRpc3BsYXllZCBzZXBhcmF0ZWx5IGF0IGVpdGhlciBlbmQgb2YgdGhlIHNjcm9sbGJhci4ifSx7bmFtZToiOnN0YXJ0Iixicm93c2VyczpbIkMiLCJTNSJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIEFwcGxpZXMgdG8gYnV0dG9ucyBhbmQgdHJhY2sgcGllY2VzLiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgb2JqZWN0IGlzIHBsYWNlZCBiZWZvcmUgdGhlIHRodW1iLiJ9LHtuYW1lOiI6dGFyZ2V0IixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOnRhcmdldCJ9XSxkZXNjcmlwdGlvbjoiU29tZSBVUklzIHJlZmVyIHRvIGEgbG9jYXRpb24gd2l0aGluIGEgcmVzb3VyY2UuIFRoaXMga2luZCBvZiBVUkkgZW5kcyB3aXRoIGEgJ251bWJlciBzaWduJyAoIykgZm9sbG93ZWQgYnkgYW4gYW5jaG9yIGlkZW50aWZpZXIgKGNhbGxlZCB0aGUgZnJhZ21lbnQgaWRlbnRpZmllcikuIn0se25hbWU6Ijp2YWxpZCIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzp2YWxpZCJ9XSxkZXNjcmlwdGlvbjoiQW4gZWxlbWVudCBpcyA6dmFsaWQgb3IgOmludmFsaWQgd2hlbiBpdCBpcywgcmVzcGVjdGl2ZWx5LCB2YWxpZCBvciBpbnZhbGlkIHdpdGggcmVzcGVjdCB0byBkYXRhIHZhbGlkaXR5IHNlbWFudGljcyBkZWZpbmVkIGJ5IGEgZGlmZmVyZW50IHNwZWNpZmljYXRpb24uIn0se25hbWU6Ijp2ZXJ0aWNhbCIsYnJvd3NlcnM6WyJDIiwiUzUiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBBcHBsaWVzIHRvIGFueSBzY3JvbGxiYXIgcGllY2VzIHRoYXQgaGF2ZSBhIHZlcnRpY2FsIG9yaWVudGF0aW9uLiJ9LHtuYW1lOiI6dmlzaXRlZCIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzp2aXNpdGVkIn1dLGRlc2NyaXB0aW9uOiJBcHBsaWVzIG9uY2UgdGhlIGxpbmsgaGFzIGJlZW4gdmlzaXRlZCBieSB0aGUgdXNlci4ifSx7bmFtZToiOi13ZWJraXQtYW55KCkiLGJyb3dzZXJzOlsiQyIsIlM1Il0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGlzIHJlcHJlc2VudGVkIGJ5IHRoZSBzZWxlY3RvciBsaXN0IHBhc3NlZCBhcyBpdHMgYXJndW1lbnQuIFN0YW5kYXJkaXplZCBhcyA6bWF0Y2hlcygpLiJ9LHtuYW1lOiI6LXdlYmtpdC1mdWxsLXNjcmVlbiIsYnJvd3NlcnM6WyJDIiwiUzYiXSxkZXNjcmlwdGlvbjoiTWF0Y2hlcyBhbnkgZWxlbWVudCB0aGF0IGhhcyBpdHMgZnVsbHNjcmVlbiBmbGFnIHNldC4gU3RhbmRhcmRpemVkIGFzIDpmdWxsc2NyZWVuLiJ9LHtuYW1lOiI6d2luZG93LWluYWN0aXZlIixicm93c2VyczpbIkMiLCJTMyJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIEFwcGxpZXMgdG8gYWxsIHNjcm9sbGJhciBwaWVjZXMuIEluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0aGUgd2luZG93IGNvbnRhaW5pbmcgdGhlIHNjcm9sbGJhciBpcyBjdXJyZW50bHkgYWN0aXZlLiJ9LHtuYW1lOiI6Y3VycmVudCIsc3RhdHVzOiJleHBlcmltZW50YWwiLGRlc2NyaXB0aW9uOiJUaGUgOmN1cnJlbnQgQ1NTIHBzZXVkby1jbGFzcyBzZWxlY3RvciBpcyBhIHRpbWUtZGltZW5zaW9uYWwgcHNldWRvLWNsYXNzIHRoYXQgcmVwcmVzZW50cyB0aGUgZWxlbWVudCwgb3IgYW4gYW5jZXN0b3Igb2YgdGhlIGVsZW1lbnQsIHRoYXQgaXMgY3VycmVudGx5IGJlaW5nIGRpc3BsYXllZCJ9LHtuYW1lOiI6YmxhbmsiLHN0YXR1czoiZXhwZXJpbWVudGFsIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmJsYW5rIn1dLGRlc2NyaXB0aW9uOiJUaGUgOmJsYW5rIENTUyBwc2V1ZG8tY2xhc3Mgc2VsZWN0cyBlbXB0eSB1c2VyIGlucHV0IGVsZW1lbnRzIChlZy4gPGlucHV0PiBvciA8dGV4dGFyZWE+KS4ifSx7bmFtZToiOmRlZmluZWQiLHN0YXR1czoiZXhwZXJpbWVudGFsIixicm93c2VyczpbIkU3OSIsIkZGNjMiLCJTMTAiLCJDNTQiLCJPNDEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmRlZmluZWQifV0sZGVzY3JpcHRpb246IlRoZSA6ZGVmaW5lZCBDU1MgcHNldWRvLWNsYXNzIHJlcHJlc2VudHMgYW55IGVsZW1lbnQgdGhhdCBoYXMgYmVlbiBkZWZpbmVkLiBUaGlzIGluY2x1ZGVzIGFueSBzdGFuZGFyZCBlbGVtZW50IGJ1aWx0IGluIHRvIHRoZSBicm93c2VyLCBhbmQgY3VzdG9tIGVsZW1lbnRzIHRoYXQgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBkZWZpbmVkIChpLmUuIHdpdGggdGhlIEN1c3RvbUVsZW1lbnRSZWdpc3RyeS5kZWZpbmUoKSBtZXRob2QpLiJ9LHtuYW1lOiI6ZGlyIixicm93c2VyczpbIkZGNDkiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmRpciJ9XSxkZXNjcmlwdGlvbjoiVGhlIDpkaXIoKSBDU1MgcHNldWRvLWNsYXNzIG1hdGNoZXMgZWxlbWVudHMgYmFzZWQgb24gdGhlIGRpcmVjdGlvbmFsaXR5IG9mIHRoZSB0ZXh0IGNvbnRhaW5lZCBpbiB0aGVtLiJ9LHtuYW1lOiI6Zm9jdXMtdmlzaWJsZSIsYnJvd3NlcnM6WyJFODYiLCJGRjg1IiwiUzE1LjQiLCJDODYiLCJPNzIiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmZvY3VzLXZpc2libGUifV0sZGVzY3JpcHRpb246IlRoZSA6Zm9jdXMtdmlzaWJsZSBwc2V1ZG8tY2xhc3MgYXBwbGllcyB3aGlsZSBhbiBlbGVtZW50IG1hdGNoZXMgdGhlIDpmb2N1cyBwc2V1ZG8tY2xhc3MgYW5kIHRoZSBVQSBkZXRlcm1pbmVzIHZpYSBoZXVyaXN0aWNzIHRoYXQgdGhlIGZvY3VzIHNob3VsZCBiZSBtYWRlIGV2aWRlbnQgb24gdGhlIGVsZW1lbnQuIn0se25hbWU6Ijpmb2N1cy13aXRoaW4iLGJyb3dzZXJzOlsiRTc5IiwiRkY1MiIsIlMxMC4xIiwiQzYwIiwiTzQ3Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpmb2N1cy13aXRoaW4ifV0sZGVzY3JpcHRpb246IlRoZSA6Zm9jdXMtd2l0aGluIHBzZXVkby1jbGFzcyBhcHBsaWVzIHRvIGFueSBlbGVtZW50IGZvciB3aGljaCB0aGUgOmZvY3VzIHBzZXVkbyBjbGFzcyBhcHBsaWVzIGFzIHdlbGwgYXMgdG8gYW4gZWxlbWVudCB3aG9zZSBkZXNjZW5kYW50IGluIHRoZSBmbGF0IHRyZWUgKGluY2x1ZGluZyBub24tZWxlbWVudCBub2Rlcywgc3VjaCBhcyB0ZXh0IG5vZGVzKSBtYXRjaGVzIHRoZSBjb25kaXRpb25zIGZvciBtYXRjaGluZyA6Zm9jdXMuIn0se25hbWU6IjpoYXMiLHN0YXR1czoiZXhwZXJpbWVudGFsIixicm93c2VyczpbIlMxNS40Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpoYXMifV0sZGVzY3JpcHRpb246IjpUaGUgOmhhcygpIENTUyBwc2V1ZG8tY2xhc3MgcmVwcmVzZW50cyBhbiBlbGVtZW50IGlmIGFueSBvZiB0aGUgc2VsZWN0b3JzIHBhc3NlZCBhcyBwYXJhbWV0ZXJzIChyZWxhdGl2ZSB0byB0aGUgOnNjb3BlIG9mIHRoZSBnaXZlbiBlbGVtZW50KSwgbWF0Y2ggYXQgbGVhc3Qgb25lIGVsZW1lbnQuIn0se25hbWU6IjppcyIsc3RhdHVzOiJleHBlcmltZW50YWwiLGJyb3dzZXJzOlsiRTg4IiwiRkY3OCIsIlMxNCIsIkM4OCIsIk83NCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86aXMifV0sZGVzY3JpcHRpb246IlRoZSA6aXMoKSBDU1MgcHNldWRvLWNsYXNzIGZ1bmN0aW9uIHRha2VzIGEgc2VsZWN0b3IgbGlzdCBhcyBpdHMgYXJndW1lbnQsIGFuZCBzZWxlY3RzIGFueSBlbGVtZW50IHRoYXQgY2FuIGJlIHNlbGVjdGVkIGJ5IG9uZSBvZiB0aGUgc2VsZWN0b3JzIGluIHRoYXQgbGlzdC4gVGhpcyBpcyB1c2VmdWwgZm9yIHdyaXRpbmcgbGFyZ2Ugc2VsZWN0b3JzIGluIGEgbW9yZSBjb21wYWN0IGZvcm0uIn0se25hbWU6Ijpsb2NhbC1saW5rIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsZGVzY3JpcHRpb246IlRoZSA6bG9jYWwtbGluayBDU1MgcHNldWRvLWNsYXNzIHJlcHJlc2VudHMgYW4gbGluayB0byB0aGUgc2FtZSBkb2N1bWVudCJ9LHtuYW1lOiI6bnRoLWNvbCIsc3RhdHVzOiJleHBlcmltZW50YWwiLGRlc2NyaXB0aW9uOiJUaGUgOm50aC1jb2woKSBDU1MgcHNldWRvLWNsYXNzIGlzIGRlc2lnbmVkIGZvciB0YWJsZXMgYW5kIGdyaWRzLiBJdCBhY2NlcHRzIHRoZSBBbitCIG5vdGF0aW9uIHN1Y2ggYXMgdXNlZCB3aXRoIHRoZSA6bnRoLWNoaWxkIHNlbGVjdG9yLCB1c2luZyB0aGlzIHRvIHRhcmdldCBldmVyeSBudGggY29sdW1uLiAifSx7bmFtZToiOm50aC1sYXN0LWNvbCIsc3RhdHVzOiJleHBlcmltZW50YWwiLGRlc2NyaXB0aW9uOiJUaGUgOm50aC1sYXN0LWNvbCgpIENTUyBwc2V1ZG8tY2xhc3MgaXMgZGVzaWduZWQgZm9yIHRhYmxlcyBhbmQgZ3JpZHMuIEl0IGFjY2VwdHMgdGhlIEFuK0Igbm90YXRpb24gc3VjaCBhcyB1c2VkIHdpdGggdGhlIDpudGgtY2hpbGQgc2VsZWN0b3IsIHVzaW5nIHRoaXMgdG8gdGFyZ2V0IGV2ZXJ5IG50aCBjb2x1bW4gYmVmb3JlIGl0LCB0aGVyZWZvcmUgY291bnRpbmcgYmFjayBmcm9tIHRoZSBlbmQgb2YgdGhlIHNldCBvZiBjb2x1bW5zLiJ9LHtuYW1lOiI6cGF1c2VkIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsZGVzY3JpcHRpb246IlRoZSA6cGF1c2VkIENTUyBwc2V1ZG8tY2xhc3Mgc2VsZWN0b3IgaXMgYSByZXNvdXJjZSBzdGF0ZSBwc2V1ZG8tY2xhc3MgdGhhdCB3aWxsIG1hdGNoIGFuIGF1ZGlvLCB2aWRlbywgb3Igc2ltaWxhciByZXNvdXJjZSB0aGF0IGlzIGNhcGFibGUgb2YgYmVpbmcg4oCccGxheWVk4oCdIG9yIOKAnHBhdXNlZOKAnSwgd2hlbiB0aGF0IGVsZW1lbnQgaXMg4oCccGF1c2Vk4oCdLiJ9LHtuYW1lOiI6cGxhY2Vob2xkZXItc2hvd24iLHN0YXR1czoiZXhwZXJpbWVudGFsIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOnBsYWNlaG9sZGVyLXNob3duIn1dLGRlc2NyaXB0aW9uOiJUaGUgOnBsYWNlaG9sZGVyLXNob3duIENTUyBwc2V1ZG8tY2xhc3MgcmVwcmVzZW50cyBhbnkgPGlucHV0PiBvciA8dGV4dGFyZWE+IGVsZW1lbnQgdGhhdCBpcyBjdXJyZW50bHkgZGlzcGxheWluZyBwbGFjZWhvbGRlciB0ZXh0LiJ9LHtuYW1lOiI6cGxheWluZyIsc3RhdHVzOiJleHBlcmltZW50YWwiLGRlc2NyaXB0aW9uOiJUaGUgOnBsYXlpbmcgQ1NTIHBzZXVkby1jbGFzcyBzZWxlY3RvciBpcyBhIHJlc291cmNlIHN0YXRlIHBzZXVkby1jbGFzcyB0aGF0IHdpbGwgbWF0Y2ggYW4gYXVkaW8sIHZpZGVvLCBvciBzaW1pbGFyIHJlc291cmNlIHRoYXQgaXMgY2FwYWJsZSBvZiBiZWluZyDigJxwbGF5ZWTigJ0gb3Ig4oCccGF1c2Vk4oCdLCB3aGVuIHRoYXQgZWxlbWVudCBpcyDigJxwbGF5aW5n4oCdLiAifSx7bmFtZToiOnRhcmdldC13aXRoaW4iLHN0YXR1czoiZXhwZXJpbWVudGFsIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOnRhcmdldC13aXRoaW4ifV0sZGVzY3JpcHRpb246IlRoZSA6dGFyZ2V0LXdpdGhpbiBDU1MgcHNldWRvLWNsYXNzIHJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGlzIGEgdGFyZ2V0IGVsZW1lbnQgb3IgY29udGFpbnMgYW4gZWxlbWVudCB0aGF0IGlzIGEgdGFyZ2V0LiBBIHRhcmdldCBlbGVtZW50IGlzIGEgdW5pcXVlIGVsZW1lbnQgd2l0aCBhbiBpZCBtYXRjaGluZyB0aGUgVVJMJ3MgZnJhZ21lbnQuIn0se25hbWU6Ijp1c2VyLWludmFsaWQiLHN0YXR1czoiZXhwZXJpbWVudGFsIixicm93c2VyczpbIkZGODgiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOnVzZXItaW52YWxpZCJ9XSxkZXNjcmlwdGlvbjoiVGhlIDp1c2VyLWludmFsaWQgQ1NTIHBzZXVkby1jbGFzcyByZXByZXNlbnRzIGFueSB2YWxpZGF0ZWQgZm9ybSBlbGVtZW50IHdob3NlIHZhbHVlIGlzbid0IHZhbGlkIGJhc2VkIG9uIHRoZWlyIHZhbGlkYXRpb24gY29uc3RyYWludHMsIGFmdGVyIHRoZSB1c2VyIGhhcyBpbnRlcmFjdGVkIHdpdGggaXQuIn0se25hbWU6Ijp1c2VyLXZhbGlkIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsYnJvd3NlcnM6WyJGRjg4Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzp1c2VyLXZhbGlkIn1dLGRlc2NyaXB0aW9uOiJUaGUgOnVzZXItdmFsaWQgQ1NTIHBzZXVkby1jbGFzcyByZXByZXNlbnRzIGFueSB2YWxpZGF0ZWQgZm9ybSBlbGVtZW50IHdob3NlIHZhbHVlIHZhbGlkYXRlcyBjb3JyZWN0bHkgYmFzZWQgb24gaXRzIHZhbGlkYXRpb24gY29uc3RyYWludHMuIEhvd2V2ZXIsIHVubGlrZSA6dmFsaWQgaXQgb25seSBtYXRjaGVzIG9uY2UgdGhlIHVzZXIgaGFzIGludGVyYWN0ZWQgd2l0aCBpdC4ifSx7bmFtZToiOndoZXJlIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsYnJvd3NlcnM6WyJFODgiLCJGRjc4IiwiUzE0IiwiQzg4IiwiTzc0Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzp3aGVyZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIDp3aGVyZSgpIENTUyBwc2V1ZG8tY2xhc3MgZnVuY3Rpb24gdGFrZXMgYSBzZWxlY3RvciBsaXN0IGFzIGl0cyBhcmd1bWVudCwgYW5kIHNlbGVjdHMgYW55IGVsZW1lbnQgdGhhdCBjYW4gYmUgc2VsZWN0ZWQgYnkgb25lIG9mIHRoZSBzZWxlY3RvcnMgaW4gdGhhdCBsaXN0LiJ9LHtuYW1lOiI6cGljdHVyZS1pbi1waWN0dXJlIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsZGVzY3JpcHRpb246IlRoZSA6cGljdHVyZS1pbi1waWN0dXJlIENTUyBwc2V1ZG8tY2xhc3MgbWF0Y2hlcyB0aGUgZWxlbWVudCB3aGljaCBpcyBjdXJyZW50bHkgaW4gcGljdHVyZS1pbi1waWN0dXJlIG1vZGUuIn1dLHBzZXVkb0VsZW1lbnRzOlt7bmFtZToiOjphZnRlciIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6YWZ0ZXIifV0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYSBzdHlsZWFibGUgY2hpbGQgcHNldWRvLWVsZW1lbnQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIG9yaWdpbmF0aW5nIGVsZW1lbnTigJlzIGFjdHVhbCBjb250ZW50LiJ9LHtuYW1lOiI6OmJhY2tkcm9wIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjpiYWNrZHJvcCJ9XSxkZXNjcmlwdGlvbjoiVXNlZCB0byBjcmVhdGUgYSBiYWNrZHJvcCB0aGF0IGhpZGVzIHRoZSB1bmRlcmx5aW5nIGRvY3VtZW50IGZvciBhbiBlbGVtZW50IGluIGEgdG9wIGxheWVyIChzdWNoIGFzIGFuIGVsZW1lbnQgdGhhdCBpcyBkaXNwbGF5ZWQgZnVsbHNjcmVlbikuIn0se25hbWU6Ijo6YmVmb3JlIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjpiZWZvcmUifV0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYSBzdHlsZWFibGUgY2hpbGQgcHNldWRvLWVsZW1lbnQgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBvcmlnaW5hdGluZyBlbGVtZW504oCZcyBhY3R1YWwgY29udGVudC4ifSx7bmFtZToiOjpjb250ZW50Iixicm93c2VyczpbIkMzNSIsIk8yMiJdLGRlc2NyaXB0aW9uOiJEZXByZWNhdGVkLiBNYXRjaGVzIHRoZSBkaXN0cmlidXRpb24gbGlzdCBpdHNlbGYsIG9uIGVsZW1lbnRzIHRoYXQgaGF2ZSBvbmUuIFVzZSA6OnNsb3R0ZWQgZm9yIGZvcndhcmQgY29tcGF0aWJpbGl0eS4ifSx7bmFtZToiOjpjdWUiLGJyb3dzZXJzOlsiRTc5IiwiRkY1NSIsIlM3IiwiQzI2IiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6Y3VlIn1dfSx7bmFtZToiOjpjdWUoKSIsYnJvd3NlcnM6WyJDIiwiTzE2IiwiUzYiXX0se25hbWU6Ijo6Y3VlLXJlZ2lvbiIsYnJvd3NlcnM6WyJDIiwiTzE2IiwiUzYiXX0se25hbWU6Ijo6Y3VlLXJlZ2lvbigpIixicm93c2VyczpbIkMiLCJPMTYiLCJTNiJdfSx7bmFtZToiOjpmaXJzdC1sZXR0ZXIiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86OmZpcnN0LWxldHRlciJ9XSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgZmlyc3QgbGV0dGVyIG9mIGFuIGVsZW1lbnQsIGlmIGl0IGlzIG5vdCBwcmVjZWRlZCBieSBhbnkgb3RoZXIgY29udGVudCAoc3VjaCBhcyBpbWFnZXMgb3IgaW5saW5lIHRhYmxlcykgb24gaXRzIGxpbmUuIn0se25hbWU6Ijo6Zmlyc3QtbGluZSIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6Zmlyc3QtbGluZSJ9XSxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBjb250ZW50cyBvZiB0aGUgZmlyc3QgZm9ybWF0dGVkIGxpbmUgb2YgaXRzIG9yaWdpbmF0aW5nIGVsZW1lbnQuIn0se25hbWU6Ijo6LW1vei1mb2N1cy1pbm5lciIsYnJvd3NlcnM6WyJGRjQiXX0se25hbWU6Ijo6LW1vei1mb2N1cy1vdXRlciIsYnJvd3NlcnM6WyJGRjQiXX0se25hbWU6Ijo6LW1vei1saXN0LWJ1bGxldCIsYnJvd3NlcnM6WyJGRjEiXSxkZXNjcmlwdGlvbjoiVXNlZCB0byBzdHlsZSB0aGUgYnVsbGV0IG9mIGEgbGlzdCBlbGVtZW50LiBTaW1pbGFyIHRvIHRoZSBzdGFuZGFyZGl6ZWQgOjptYXJrZXIuIn0se25hbWU6Ijo6LW1vei1saXN0LW51bWJlciIsYnJvd3NlcnM6WyJGRjEiXSxkZXNjcmlwdGlvbjoiVXNlZCB0byBzdHlsZSB0aGUgbnVtYmVycyBvZiBhIGxpc3QgZWxlbWVudC4gU2ltaWxhciB0byB0aGUgc3RhbmRhcmRpemVkIDo6bWFya2VyLiJ9LHtuYW1lOiI6Oi1tb3otcGxhY2Vob2xkZXIiLGJyb3dzZXJzOlsiRkYxOSJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHBsYWNlaG9sZGVyIHRleHQgaW4gYW4gaW5wdXQgZmllbGQifSx7bmFtZToiOjotbW96LXByb2dyZXNzLWJhciIsYnJvd3NlcnM6WyJGRjkiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgYmFyIHBvcnRpb24gb2YgYSBwcm9ncmVzcyBiYXIuIn0se25hbWU6Ijo6LW1vei1zZWxlY3Rpb24iLGJyb3dzZXJzOlsiRkYxIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIHBvcnRpb24gb2YgYSBkb2N1bWVudCB0aGF0IGhhcyBiZWVuIGhpZ2hsaWdodGVkIGJ5IHRoZSB1c2VyLiJ9LHtuYW1lOiI6Oi1tcy1iYWNrZHJvcCIsYnJvd3NlcnM6WyJJRTExIl0sZGVzY3JpcHRpb246IlVzZWQgdG8gY3JlYXRlIGEgYmFja2Ryb3AgdGhhdCBoaWRlcyB0aGUgdW5kZXJseWluZyBkb2N1bWVudCBmb3IgYW4gZWxlbWVudCBpbiBhIHRvcCBsYXllciAoc3VjaCBhcyBhbiBlbGVtZW50IHRoYXQgaXMgZGlzcGxheWVkIGZ1bGxzY3JlZW4pLiJ9LHtuYW1lOiI6Oi1tcy1icm93c2UiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgYnJvd3NlIGJ1dHRvbiBvZiBhbiBpbnB1dCB0eXBlPWZpbGUgY29udHJvbC4ifSx7bmFtZToiOjotbXMtY2hlY2siLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgY2hlY2sgb2YgYSBjaGVja2JveCBvciByYWRpbyBidXR0b24gaW5wdXQgY29udHJvbC4ifSx7bmFtZToiOjotbXMtY2xlYXIiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgY2xlYXIgYnV0dG9uIG9mIGEgdGV4dCBpbnB1dCBjb250cm9sIn0se25hbWU6Ijo6LW1zLWV4cGFuZCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBkcm9wLWRvd24gYnV0dG9uIG9mIGEgc2VsZWN0IGNvbnRyb2wuIn0se25hbWU6Ijo6LW1zLWZpbGwiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgYmFyIHBvcnRpb24gb2YgYSBwcm9ncmVzcyBiYXIuIn0se25hbWU6Ijo6LW1zLWZpbGwtbG93ZXIiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgcG9ydGlvbiBvZiB0aGUgc2xpZGVyIHRyYWNrIGZyb20gaXRzIHNtYWxsZXN0IHZhbHVlIHVwIHRvIHRoZSB2YWx1ZSBjdXJyZW50bHkgc2VsZWN0ZWQgYnkgdGhlIHRodW1iLiBJbiBhIGxlZnQtdG8tcmlnaHQgbGF5b3V0LCB0aGlzIGlzIHRoZSBwb3J0aW9uIG9mIHRoZSBzbGlkZXIgdHJhY2sgdG8gdGhlIGxlZnQgb2YgdGhlIHRodW1iLiJ9LHtuYW1lOiI6Oi1tcy1maWxsLXVwcGVyIixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIHBvcnRpb24gb2YgdGhlIHNsaWRlciB0cmFjayBmcm9tIHRoZSB2YWx1ZSBjdXJyZW50bHkgc2VsZWN0ZWQgYnkgdGhlIHRodW1iIHVwIHRvIHRoZSBzbGlkZXIncyBsYXJnZXN0IHZhbHVlLiBJbiBhIGxlZnQtdG8tcmlnaHQgbGF5b3V0LCB0aGlzIGlzIHRoZSBwb3J0aW9uIG9mIHRoZSBzbGlkZXIgdHJhY2sgdG8gdGhlIHJpZ2h0IG9mIHRoZSB0aHVtYi4ifSx7bmFtZToiOjotbXMtcmV2ZWFsIixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIHBhc3N3b3JkIHJldmVhbCBidXR0b24gb2YgYW4gaW5wdXQgdHlwZT1wYXNzd29yZCBjb250cm9sLiJ9LHtuYW1lOiI6Oi1tcy10aHVtYiIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBwb3J0aW9uIG9mIHJhbmdlIGlucHV0IGNvbnRyb2wgKGFsc28ga25vd24gYXMgYSBzbGlkZXIgY29udHJvbCkgdGhhdCB0aGUgdXNlciBkcmFncy4ifSx7bmFtZToiOjotbXMtdGlja3MtYWZ0ZXIiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgdGljayBtYXJrcyBvZiBhIHNsaWRlciB0aGF0IGJlZ2luIGp1c3QgYWZ0ZXIgdGhlIHRodW1iIGFuZCBjb250aW51ZSB1cCB0byB0aGUgc2xpZGVyJ3MgbGFyZ2VzdCB2YWx1ZS4gSW4gYSBsZWZ0LXRvLXJpZ2h0IGxheW91dCwgdGhlc2UgYXJlIHRoZSB0aWNrcyB0byB0aGUgcmlnaHQgb2YgdGhlIHRodW1iLiJ9LHtuYW1lOiI6Oi1tcy10aWNrcy1iZWZvcmUiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgdGljayBtYXJrcyBvZiBhIHNsaWRlciB0aGF0IHJlcHJlc2VudCBpdHMgc21hbGxlc3QgdmFsdWVzIHVwIHRvIHRoZSB2YWx1ZSBjdXJyZW50bHkgc2VsZWN0ZWQgYnkgdGhlIHRodW1iLiBJbiBhIGxlZnQtdG8tcmlnaHQgbGF5b3V0LCB0aGVzZSBhcmUgdGhlIHRpY2tzIHRvIHRoZSBsZWZ0IG9mIHRoZSB0aHVtYi4ifSx7bmFtZToiOjotbXMtdG9vbHRpcCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSB0b29sdGlwIG9mIGEgc2xpZGVyIChpbnB1dCB0eXBlPXJhbmdlKS4ifSx7bmFtZToiOjotbXMtdHJhY2siLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgdHJhY2sgb2YgYSBzbGlkZXIuIn0se25hbWU6Ijo6LW1zLXZhbHVlIixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGNvbnRlbnQgb2YgYSB0ZXh0IG9yIHBhc3N3b3JkIGlucHV0IGNvbnRyb2wsIG9yIGEgc2VsZWN0IGNvbnRyb2wuIn0se25hbWU6Ijo6c2VsZWN0aW9uIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjpzZWxlY3Rpb24ifV0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIHBvcnRpb24gb2YgYSBkb2N1bWVudCB0aGF0IGhhcyBiZWVuIGhpZ2hsaWdodGVkIGJ5IHRoZSB1c2VyLiJ9LHtuYW1lOiI6OnNoYWRvdyIsYnJvd3NlcnM6WyJDMzUiLCJPMjIiXSxkZXNjcmlwdGlvbjoiTWF0Y2hlcyB0aGUgc2hhZG93IHJvb3QgaWYgYW4gZWxlbWVudCBoYXMgYSBzaGFkb3cgdHJlZS4ifSx7bmFtZToiOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiIsYnJvd3NlcnM6WyJDIiwiTyIsIlM2Il19LHtuYW1lOiI6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24iLGJyb3dzZXJzOlsiRTc5IiwiUzUiLCJDNiIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24ifV19LHtuYW1lOiI6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIiLGJyb3dzZXJzOlsiQyIsIlM0Il19LHtuYW1lOiI6Oi13ZWJraXQta2V5Z2VuLXNlbGVjdCIsYnJvd3NlcnM6WyJDIiwiTyIsIlM2Il19LHtuYW1lOiI6Oi13ZWJraXQtbWV0ZXItYmFyIixicm93c2VyczpbIkU3OSIsIlM1LjEiLCJDMTIiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LW1ldGVyLWJhciJ9XX0se25hbWU6Ijo6LXdlYmtpdC1tZXRlci1ldmVuLWxlc3MtZ29vZC12YWx1ZSIsYnJvd3NlcnM6WyJFNzkiLCJTNS4xIiwiQzEyIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1tZXRlci1ldmVuLWxlc3MtZ29vZC12YWx1ZSJ9XX0se25hbWU6Ijo6LXdlYmtpdC1tZXRlci1vcHRpbXVtLXZhbHVlIixicm93c2VyczpbIkU3OSIsIlM1LjEiLCJDMTIiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LW1ldGVyLW9wdGltdW0tdmFsdWUifV19LHtuYW1lOiI6Oi13ZWJraXQtbWV0ZXItc3Vib3B0aW11bS12YWx1ZSIsYnJvd3NlcnM6WyJFNzkiLCJTNS4xIiwiQzEyIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1tZXRlci1zdWJvcHRpbXVtLXZhbHVlIn1dfSx7bmFtZToiOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIixicm93c2VyczpbIlM1IiwiQzYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIn1dfSx7bmFtZToiOjotd2Via2l0LXByb2dyZXNzLWJhciIsYnJvd3NlcnM6WyJFNzkiLCJTNyIsIkMyNSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtcHJvZ3Jlc3MtYmFyIn1dfSx7bmFtZToiOjotd2Via2l0LXByb2dyZXNzLWlubmVyLWVsZW1lbnQiLGJyb3dzZXJzOlsiRTc5IiwiUzciLCJDMjMiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LXByb2dyZXNzLWlubmVyLWVsZW1lbnQifV19LHtuYW1lOiI6Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWUiLGJyb3dzZXJzOlsiRTc5IiwiUzciLCJDMjUiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LXByb2dyZXNzLXZhbHVlIn1dfSx7bmFtZToiOjotd2Via2l0LXJlc2l6ZXIiLGJyb3dzZXJzOlsiRTc5IiwiUzQiLCJDMiIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtc2Nyb2xsYmFyIn1dfSx7bmFtZToiOjotd2Via2l0LXNjcm9sbGJhciIsYnJvd3NlcnM6WyJFNzkiLCJTNCIsIkMyIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1zY3JvbGxiYXIifV19LHtuYW1lOiI6Oi13ZWJraXQtc2Nyb2xsYmFyLWJ1dHRvbiIsYnJvd3NlcnM6WyJFNzkiLCJTNCIsIkMyIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1zY3JvbGxiYXIifV19LHtuYW1lOiI6Oi13ZWJraXQtc2Nyb2xsYmFyLWNvcm5lciIsYnJvd3NlcnM6WyJFNzkiLCJTNCIsIkMyIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1zY3JvbGxiYXIifV19LHtuYW1lOiI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIixicm93c2VyczpbIkU3OSIsIlM0IiwiQzIiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LXNjcm9sbGJhciJ9XX0se25hbWU6Ijo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2siLGJyb3dzZXJzOlsiRTc5IiwiUzQiLCJDMiIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtc2Nyb2xsYmFyIn1dfSx7bmFtZToiOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZSIsYnJvd3NlcnM6WyJFNzkiLCJTNCIsIkMyIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1zY3JvbGxiYXIifV19LHtuYW1lOiI6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24iLGJyb3dzZXJzOlsiRTc5IiwiUzMiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24ifV19LHtuYW1lOiI6Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24iLGJyb3dzZXJzOlsiQyIsIlM0Il19LHtuYW1lOiI6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uIixicm93c2VyczpbIkU3OSIsIlMzIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1dHRvbiJ9XX0se25hbWU6Ijo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1kZWNvcmF0aW9uIixicm93c2VyczpbIkMiLCJTNCJdfSx7bmFtZToiOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayIsYnJvd3NlcnM6WyJDIiwiTyIsIlM2Il19LHtuYW1lOiI6Oi13ZWJraXQtc2xpZGVyLXRodW1iIixicm93c2VyczpbIkMiLCJPIiwiUzYiXX0se25hbWU6Ijo6LXdlYmtpdC10ZXh0ZmllbGQtZGVjb3JhdGlvbi1jb250YWluZXIiLGJyb3dzZXJzOlsiQyIsIk8iLCJTNiJdfSx7bmFtZToiOjotd2Via2l0LXZhbGlkYXRpb24tYnViYmxlIixicm93c2VyczpbIkMiLCJPIiwiUzYiXX0se25hbWU6Ijo6LXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1hcnJvdyIsYnJvd3NlcnM6WyJDIiwiTyIsIlM2Il19LHtuYW1lOiI6Oi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtYXJyb3ctY2xpcHBlciIsYnJvd3NlcnM6WyJDIiwiTyIsIlM2Il19LHtuYW1lOiI6Oi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtaGVhZGluZyIsYnJvd3NlcnM6WyJDIiwiTyIsIlM2Il19LHtuYW1lOiI6Oi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtbWVzc2FnZSIsYnJvd3NlcnM6WyJDIiwiTyIsIlM2Il19LHtuYW1lOiI6Oi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtdGV4dC1ibG9jayIsYnJvd3NlcnM6WyJDIiwiTyIsIlM2Il19LHtuYW1lOiI6OnRhcmdldC10ZXh0IixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsYnJvd3NlcnM6WyJFODkiLCJDODkiLCJPNzUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjp0YXJnZXQtdGV4dCJ9XSxkZXNjcmlwdGlvbjoiVGhlIDo6dGFyZ2V0LXRleHQgQ1NTIHBzZXVkby1lbGVtZW50IHJlcHJlc2VudHMgdGhlIHRleHQgdGhhdCBoYXMgYmVlbiBzY3JvbGxlZCB0byBpZiB0aGUgYnJvd3NlciBzdXBwb3J0cyBzY3JvbGwtdG8tdGV4dCBmcmFnbWVudHMuIEl0IGFsbG93cyBhdXRob3JzIHRvIGNob29zZSBob3cgdG8gaGlnaGxpZ2h0IHRoYXQgc2VjdGlvbiBvZiB0ZXh0LiJ9LHtuYW1lOiI6Oi1tb3otcmFuZ2UtcHJvZ3Jlc3MiLHN0YXR1czoibm9uc3RhbmRhcmQiLGJyb3dzZXJzOlsiRkYyMiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi1tb3otcmFuZ2UtcHJvZ3Jlc3MifV0sZGVzY3JpcHRpb246J1RoZSA6Oi1tb3otcmFuZ2UtcHJvZ3Jlc3MgQ1NTIHBzZXVkby1lbGVtZW50IGlzIGEgTW96aWxsYSBleHRlbnNpb24gdGhhdCByZXByZXNlbnRzIHRoZSBsb3dlciBwb3J0aW9uIG9mIHRoZSB0cmFjayAoaS5lLiwgZ3Jvb3ZlKSBpbiB3aGljaCB0aGUgaW5kaWNhdG9yIHNsaWRlcyBpbiBhbiA8aW5wdXQ+IG9mIHR5cGU9InJhbmdlIi4gVGhpcyBwb3J0aW9uIGNvcnJlc3BvbmRzIHRvIHZhbHVlcyBsb3dlciB0aGFuIHRoZSB2YWx1ZSBjdXJyZW50bHkgc2VsZWN0ZWQgYnkgdGhlIHRodW1iIChpLmUuLCB2aXJ0dWFsIGtub2IpLid9LHtuYW1lOiI6Oi1tb3otcmFuZ2UtdGh1bWIiLHN0YXR1czoibm9uc3RhbmRhcmQiLGJyb3dzZXJzOlsiRkYyMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi1tb3otcmFuZ2UtdGh1bWIifV0sZGVzY3JpcHRpb246J1RoZSA6Oi1tb3otcmFuZ2UtdGh1bWIgQ1NTIHBzZXVkby1lbGVtZW50IGlzIGEgTW96aWxsYSBleHRlbnNpb24gdGhhdCByZXByZXNlbnRzIHRoZSB0aHVtYiAoaS5lLiwgdmlydHVhbCBrbm9iKSBvZiBhbiA8aW5wdXQ+IG9mIHR5cGU9InJhbmdlIi4gVGhlIHVzZXIgY2FuIG1vdmUgdGhlIHRodW1iIGFsb25nIHRoZSBpbnB1dFwncyB0cmFjayB0byBhbHRlciBpdHMgbnVtZXJpY2FsIHZhbHVlLid9LHtuYW1lOiI6Oi1tb3otcmFuZ2UtdHJhY2siLHN0YXR1czoibm9uc3RhbmRhcmQiLGJyb3dzZXJzOlsiRkYyMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi1tb3otcmFuZ2UtdHJhY2sifV0sZGVzY3JpcHRpb246J1RoZSA6Oi1tb3otcmFuZ2UtdHJhY2sgQ1NTIHBzZXVkby1lbGVtZW50IGlzIGEgTW96aWxsYSBleHRlbnNpb24gdGhhdCByZXByZXNlbnRzIHRoZSB0cmFjayAoaS5lLiwgZ3Jvb3ZlKSBpbiB3aGljaCB0aGUgaW5kaWNhdG9yIHNsaWRlcyBpbiBhbiA8aW5wdXQ+IG9mIHR5cGU9InJhbmdlIi4nfSx7bmFtZToiOjotd2Via2l0LXByb2dyZXNzLWlubmVyLXZhbHVlIixzdGF0dXM6Im5vbnN0YW5kYXJkIixkZXNjcmlwdGlvbjoiVGhlIDo6LXdlYmtpdC1wcm9ncmVzcy12YWx1ZSBDU1MgcHNldWRvLWVsZW1lbnQgcmVwcmVzZW50cyB0aGUgZmlsbGVkLWluIHBvcnRpb24gb2YgdGhlIGJhciBvZiBhIDxwcm9ncmVzcz4gZWxlbWVudC4gSXQgaXMgYSBjaGlsZCBvZiB0aGUgOjotd2Via2l0LXByb2dyZXNzLWJhciBwc2V1ZG8tZWxlbWVudC5cblxuSW4gb3JkZXIgdG8gbGV0IDo6LXdlYmtpdC1wcm9ncmVzcy12YWx1ZSB0YWtlIGVmZmVjdCwgLXdlYmtpdC1hcHBlYXJhbmNlIG5lZWRzIHRvIGJlIHNldCB0byBub25lIG9uIHRoZSA8cHJvZ3Jlc3M+IGVsZW1lbnQuIn0se25hbWU6Ijo6Z3JhbW1hci1lcnJvciIsc3RhdHVzOiJleHBlcmltZW50YWwiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86OmdyYW1tYXItZXJyb3IifV0sZGVzY3JpcHRpb246IlRoZSA6OmdyYW1tYXItZXJyb3IgQ1NTIHBzZXVkby1lbGVtZW50IHJlcHJlc2VudHMgYSB0ZXh0IHNlZ21lbnQgd2hpY2ggdGhlIHVzZXIgYWdlbnQgaGFzIGZsYWdnZWQgYXMgZ3JhbW1hdGljYWxseSBpbmNvcnJlY3QuIn0se25hbWU6Ijo6bWFya2VyIixicm93c2VyczpbIkU4NiIsIkZGNjgiLCJTMTEuMSIsIkM4NiIsIk83MiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Om1hcmtlciJ9XSxkZXNjcmlwdGlvbjoiVGhlIDo6bWFya2VyIENTUyBwc2V1ZG8tZWxlbWVudCBzZWxlY3RzIHRoZSBtYXJrZXIgYm94IG9mIGEgbGlzdCBpdGVtLCB3aGljaCB0eXBpY2FsbHkgY29udGFpbnMgYSBidWxsZXQgb3IgbnVtYmVyLiBJdCB3b3JrcyBvbiBhbnkgZWxlbWVudCBvciBwc2V1ZG8tZWxlbWVudCBzZXQgdG8gZGlzcGxheTogbGlzdC1pdGVtLCBzdWNoIGFzIHRoZSA8bGk+IGFuZCA8c3VtbWFyeT4gZWxlbWVudHMuIn0se25hbWU6Ijo6cGFydCIsc3RhdHVzOiJleHBlcmltZW50YWwiLGJyb3dzZXJzOlsiRTc5IiwiRkY3MiIsIlMxMy4xIiwiQzczIiwiTzYwIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6cGFydCJ9XSxkZXNjcmlwdGlvbjoiVGhlIDo6cGFydCBDU1MgcHNldWRvLWVsZW1lbnQgcmVwcmVzZW50cyBhbnkgZWxlbWVudCB3aXRoaW4gYSBzaGFkb3cgdHJlZSB0aGF0IGhhcyBhIG1hdGNoaW5nIHBhcnQgYXR0cmlidXRlLiJ9LHtuYW1lOiI6OnBsYWNlaG9sZGVyIixicm93c2VyczpbIkU3OSIsIkZGNTEiLCJTMTAuMSIsIkM1NyIsIk80NCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86OnBsYWNlaG9sZGVyIn1dLGRlc2NyaXB0aW9uOiJUaGUgOjpwbGFjZWhvbGRlciBDU1MgcHNldWRvLWVsZW1lbnQgcmVwcmVzZW50cyB0aGUgcGxhY2Vob2xkZXIgdGV4dCBvZiBhIGZvcm0gZWxlbWVudC4ifSx7bmFtZToiOjpzbG90dGVkIixicm93c2VyczpbIkU3OSIsIkZGNjMiLCJTMTAiLCJDNTAiLCJPMzciXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjpzbG90dGVkIn1dLGRlc2NyaXB0aW9uOiJUaGUgOnNsb3R0ZWQoKSBDU1MgcHNldWRvLWVsZW1lbnQgcmVwcmVzZW50cyBhbnkgZWxlbWVudCB0aGF0IGhhcyBiZWVuIHBsYWNlZCBpbnRvIGEgc2xvdCBpbnNpZGUgYW4gSFRNTCB0ZW1wbGF0ZS4ifSx7bmFtZToiOjpzcGVsbGluZy1lcnJvciIsc3RhdHVzOiJleHBlcmltZW50YWwiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86OnNwZWxsaW5nLWVycm9yIn1dLGRlc2NyaXB0aW9uOiJUaGUgOjpzcGVsbGluZy1lcnJvciBDU1MgcHNldWRvLWVsZW1lbnQgcmVwcmVzZW50cyBhIHRleHQgc2VnbWVudCB3aGljaCB0aGUgdXNlciBhZ2VudCBoYXMgZmxhZ2dlZCBhcyBpbmNvcnJlY3RseSBzcGVsbGVkLiJ9XX0sbmQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuX3Byb3BlcnRpZXM9W10sdGhpcy5fYXREaXJlY3RpdmVzPVtdLHRoaXMuX3BzZXVkb0NsYXNzZXM9W10sdGhpcy5fcHNldWRvRWxlbWVudHM9W10sdGhpcy5hZGREYXRhKGUpfXJldHVybiBlLnByb3RvdHlwZS5wcm92aWRlUHJvcGVydGllcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wcm9wZXJ0aWVzfSxlLnByb3RvdHlwZS5wcm92aWRlQXREaXJlY3RpdmVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2F0RGlyZWN0aXZlc30sZS5wcm90b3R5cGUucHJvdmlkZVBzZXVkb0NsYXNzZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHNldWRvQ2xhc3Nlc30sZS5wcm90b3R5cGUucHJvdmlkZVBzZXVkb0VsZW1lbnRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BzZXVkb0VsZW1lbnRzfSxlLnByb3RvdHlwZS5hZGREYXRhPWZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZS5wcm9wZXJ0aWVzKSlmb3IodmFyIHQ9MCxuPWUucHJvcGVydGllczt0PG4ubGVuZ3RoO3QrKyl7dmFyIHI9blt0XTsic3RyaW5nIj09dHlwZW9mIHIubmFtZSYmdGhpcy5fcHJvcGVydGllcy5wdXNoKHIpfWlmKEFycmF5LmlzQXJyYXkoZS5hdERpcmVjdGl2ZXMpKWZvcih2YXIgaT0wLG89ZS5hdERpcmVjdGl2ZXM7aTxvLmxlbmd0aDtpKyspe3JkKHI9b1tpXSkmJnRoaXMuX2F0RGlyZWN0aXZlcy5wdXNoKHIpfWlmKEFycmF5LmlzQXJyYXkoZS5wc2V1ZG9DbGFzc2VzKSlmb3IodmFyIHM9MCxhPWUucHNldWRvQ2xhc3NlcztzPGEubGVuZ3RoO3MrKyl7aWQocj1hW3NdKSYmdGhpcy5fcHNldWRvQ2xhc3Nlcy5wdXNoKHIpfWlmKEFycmF5LmlzQXJyYXkoZS5wc2V1ZG9FbGVtZW50cykpZm9yKHZhciBsPTAsYz1lLnBzZXVkb0VsZW1lbnRzO2w8Yy5sZW5ndGg7bCsrKXtvZChyPWNbbF0pJiZ0aGlzLl9wc2V1ZG9FbGVtZW50cy5wdXNoKHIpfX0sZX0oKTtmdW5jdGlvbiByZChlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGUubmFtZX1mdW5jdGlvbiBpZChlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGUubmFtZX1mdW5jdGlvbiBvZChlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGUubmFtZX12YXIgc2Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuZGF0YVByb3ZpZGVycz1bXSx0aGlzLl9wcm9wZXJ0eVNldD17fSx0aGlzLl9hdERpcmVjdGl2ZVNldD17fSx0aGlzLl9wc2V1ZG9DbGFzc1NldD17fSx0aGlzLl9wc2V1ZG9FbGVtZW50U2V0PXt9LHRoaXMuX3Byb3BlcnRpZXM9W10sdGhpcy5fYXREaXJlY3RpdmVzPVtdLHRoaXMuX3BzZXVkb0NsYXNzZXM9W10sdGhpcy5fcHNldWRvRWxlbWVudHM9W10sdGhpcy5zZXREYXRhUHJvdmlkZXJzKCExIT09KG51bGw9PWU/dm9pZCAwOmUudXNlRGVmYXVsdERhdGFQcm92aWRlciksKG51bGw9PWU/dm9pZCAwOmUuY3VzdG9tRGF0YVByb3ZpZGVycyl8fFtdKX1yZXR1cm4gZS5wcm90b3R5cGUuc2V0RGF0YVByb3ZpZGVycz1mdW5jdGlvbihlLHQpe3ZhciBuO3RoaXMuZGF0YVByb3ZpZGVycz1bXSxlJiZ0aGlzLmRhdGFQcm92aWRlcnMucHVzaChuZXcgbmQodGQpKSwobj10aGlzLmRhdGFQcm92aWRlcnMpLnB1c2guYXBwbHkobix0KSx0aGlzLmNvbGxlY3REYXRhKCl9LGUucHJvdG90eXBlLmNvbGxlY3REYXRhPWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLl9wcm9wZXJ0eVNldD17fSx0aGlzLl9hdERpcmVjdGl2ZVNldD17fSx0aGlzLl9wc2V1ZG9DbGFzc1NldD17fSx0aGlzLl9wc2V1ZG9FbGVtZW50U2V0PXt9LHRoaXMuZGF0YVByb3ZpZGVycy5mb3JFYWNoKChmdW5jdGlvbih0KXt0LnByb3ZpZGVQcm9wZXJ0aWVzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZS5fcHJvcGVydHlTZXRbdC5uYW1lXXx8KGUuX3Byb3BlcnR5U2V0W3QubmFtZV09dCl9KSksdC5wcm92aWRlQXREaXJlY3RpdmVzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZS5fYXREaXJlY3RpdmVTZXRbdC5uYW1lXXx8KGUuX2F0RGlyZWN0aXZlU2V0W3QubmFtZV09dCl9KSksdC5wcm92aWRlUHNldWRvQ2xhc3NlcygpLmZvckVhY2goKGZ1bmN0aW9uKHQpe2UuX3BzZXVkb0NsYXNzU2V0W3QubmFtZV18fChlLl9wc2V1ZG9DbGFzc1NldFt0Lm5hbWVdPXQpfSkpLHQucHJvdmlkZVBzZXVkb0VsZW1lbnRzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZS5fcHNldWRvRWxlbWVudFNldFt0Lm5hbWVdfHwoZS5fcHNldWRvRWxlbWVudFNldFt0Lm5hbWVdPXQpfSkpfSkpLHRoaXMuX3Byb3BlcnRpZXM9Z2wodGhpcy5fcHJvcGVydHlTZXQpLHRoaXMuX2F0RGlyZWN0aXZlcz1nbCh0aGlzLl9hdERpcmVjdGl2ZVNldCksdGhpcy5fcHNldWRvQ2xhc3Nlcz1nbCh0aGlzLl9wc2V1ZG9DbGFzc1NldCksdGhpcy5fcHNldWRvRWxlbWVudHM9Z2wodGhpcy5fcHNldWRvRWxlbWVudFNldCl9LGUucHJvdG90eXBlLmdldFByb3BlcnR5PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9wcm9wZXJ0eVNldFtlXX0sZS5wcm90b3R5cGUuZ2V0QXREaXJlY3RpdmU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2F0RGlyZWN0aXZlU2V0W2VdfSxlLnByb3RvdHlwZS5nZXRQc2V1ZG9DbGFzcz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fcHNldWRvQ2xhc3NTZXRbZV19LGUucHJvdG90eXBlLmdldFBzZXVkb0VsZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3BzZXVkb0VsZW1lbnRTZXRbZV19LGUucHJvdG90eXBlLmdldFByb3BlcnRpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJvcGVydGllc30sZS5wcm90b3R5cGUuZ2V0QXREaXJlY3RpdmVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2F0RGlyZWN0aXZlc30sZS5wcm90b3R5cGUuZ2V0UHNldWRvQ2xhc3Nlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wc2V1ZG9DbGFzc2VzfSxlLnByb3RvdHlwZS5nZXRQc2V1ZG9FbGVtZW50cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wc2V1ZG9FbGVtZW50c30sZS5wcm90b3R5cGUuaXNLbm93blByb3BlcnR5PWZ1bmN0aW9uKGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKClpbiB0aGlzLl9wcm9wZXJ0eVNldH0sZS5wcm90b3R5cGUuaXNTdGFuZGFyZFByb3BlcnR5PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmlzS25vd25Qcm9wZXJ0eShlKSYmKCF0aGlzLl9wcm9wZXJ0eVNldFtlLnRvTG93ZXJDYXNlKCldLnN0YXR1c3x8InN0YW5kYXJkIj09PXRoaXMuX3Byb3BlcnR5U2V0W2UudG9Mb3dlckNhc2UoKV0uc3RhdHVzKX0sZX0oKTtmdW5jdGlvbiBhZChlLHQsbil7cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtmb3IodmFyIHI9ZnVuY3Rpb24odCl7dmFyIHI9ZS5vZmZzZXRBdCh0KSxpPW4uZmluZENoaWxkQXRPZmZzZXQociwhMCk7aWYoIWkpcmV0dXJuW107dmFyIG89W107Zm9yKDtpOylpLnBhcmVudCYmaS5vZmZzZXQ9PT1pLnBhcmVudC5vZmZzZXQmJmkuZW5kPT09aS5wYXJlbnQuZW5kfHwoaS50eXBlPT09WnIuRGVjbGFyYXRpb25zJiZyPmkub2Zmc2V0JiZyPGkuZW5kJiZvLnB1c2goW2kub2Zmc2V0KzEsaS5lbmQtMV0pLG8ucHVzaChbaS5vZmZzZXQsaS5lbmRdKSksaT1pLnBhcmVudDtyZXR1cm4gb30odCksaT12b2lkIDAsbz1yLmxlbmd0aC0xO28+PTA7by0tKWk9eWEuY3JlYXRlKEFvLmNyZWF0ZShlLnBvc2l0aW9uQXQocltvXVswXSksZS5wb3NpdGlvbkF0KHJbb11bMV0pKSxpKTtyZXR1cm4gaXx8KGk9eWEuY3JlYXRlKEFvLmNyZWF0ZSh0LHQpKSksaX0pKX12YXIgbGQ9ZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbih0LG4pe3JldHVybihlPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKX0pKHQsbil9O3JldHVybiBmdW5jdGlvbih0LG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuJiZudWxsIT09bil0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKG4pKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPXR9ZSh0LG4pLHQucHJvdG90eXBlPW51bGw9PT1uP09iamVjdC5jcmVhdGUobik6KHIucHJvdG90eXBlPW4ucHJvdG90eXBlLG5ldyByKX19KCksY2Q9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoKGZ1bmN0aW9uKGksbyl7ZnVuY3Rpb24gcyhlKXt0cnl7bChyLm5leHQoZSkpfWNhdGNoKGUpe28oZSl9fWZ1bmN0aW9uIGEoZSl7dHJ5e2woci50aHJvdyhlKSl9Y2F0Y2goZSl7byhlKX19ZnVuY3Rpb24gbChlKXt2YXIgdDtlLmRvbmU/aShlLnZhbHVlKToodD1lLnZhbHVlLHQgaW5zdGFuY2VvZiBuP3Q6bmV3IG4oKGZ1bmN0aW9uKGUpe2UodCl9KSkpLnRoZW4ocyxhKX1sKChyPXIuYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KSl9LGhkPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8scz17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZpWzBdKXRocm93IGlbMV07cmV0dXJuIGlbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gbz17bmV4dDphKDApLHRocm93OmEoMSkscmV0dXJuOmEoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihvW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLG87ZnVuY3Rpb24gYShvKXtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKG8pe2lmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7czspdHJ5e2lmKG49MSxyJiYoaT0yJm9bMF0/ci5yZXR1cm46b1swXT9yLnRocm93fHwoKGk9ci5yZXR1cm4pJiZpLmNhbGwociksMCk6ci5uZXh0KSYmIShpPWkuY2FsbChyLG9bMV0pKS5kb25lKXJldHVybiBpO3N3aXRjaChyPTAsaSYmKG89WzImb1swXSxpLnZhbHVlXSksb1swXSl7Y2FzZSAwOmNhc2UgMTppPW87YnJlYWs7Y2FzZSA0OnJldHVybiBzLmxhYmVsKysse3ZhbHVlOm9bMV0sZG9uZTohMX07Y2FzZSA1OnMubGFiZWwrKyxyPW9bMV0sbz1bMF07Y29udGludWU7Y2FzZSA3Om89cy5vcHMucG9wKCkscy50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShpPXMudHJ5cywoaT1pLmxlbmd0aD4wJiZpW2kubGVuZ3RoLTFdKXx8NiE9PW9bMF0mJjIhPT1vWzBdKSl7cz0wO2NvbnRpbnVlfWlmKDM9PT1vWzBdJiYoIWl8fG9bMV0+aVswXSYmb1sxXTxpWzNdKSl7cy5sYWJlbD1vWzFdO2JyZWFrfWlmKDY9PT1vWzBdJiZzLmxhYmVsPGlbMV0pe3MubGFiZWw9aVsxXSxpPW87YnJlYWt9aWYoaSYmcy5sYWJlbDxpWzJdKXtzLmxhYmVsPWlbMl0scy5vcHMucHVzaChvKTticmVha31pWzJdJiZzLm9wcy5wb3AoKSxzLnRyeXMucG9wKCk7Y29udGludWV9bz10LmNhbGwoZSxzKX1jYXRjaChlKXtvPVs2LGVdLHI9MH1maW5hbGx5e249aT0wfWlmKDUmb1swXSl0aHJvdyBvWzFdO3JldHVybnt2YWx1ZTpvWzBdP29bMV06dm9pZCAwLGRvbmU6ITB9fShbbyxhXSl9fX0sZGQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0KXtyZXR1cm4gZS5jYWxsKHRoaXMsdCwhMCl8fHRoaXN9cmV0dXJuIGxkKHQsZSksdC5wcm90b3R5cGUuaXNSYXdTdHJpbmdEb2N1bWVudExpbmtOb2RlPWZ1bmN0aW9uKHQpe3JldHVybiBlLnByb3RvdHlwZS5pc1Jhd1N0cmluZ0RvY3VtZW50TGlua05vZGUuY2FsbCh0aGlzLHQpfHx0LnR5cGU9PT1aci5Vc2V8fHQudHlwZT09PVpyLkZvcndhcmR9LHQucHJvdG90eXBlLnJlc29sdmVSZWxhdGl2ZVJlZmVyZW5jZT1mdW5jdGlvbih0LG4scixpKXtyZXR1cm4gY2QodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciBvLHMsYSxsO3JldHVybiBoZCh0aGlzLChmdW5jdGlvbihjKXtzd2l0Y2goYy5sYWJlbCl7Y2FzZSAwOnJldHVybiBIcih0LCJzYXNzOiIpP1syLHZvaWQgMF06WzQsZS5wcm90b3R5cGUucmVzb2x2ZVJlbGF0aXZlUmVmZXJlbmNlLmNhbGwodGhpcyx0LG4scixpKV07Y2FzZSAxOmlmKG89Yy5zZW50KCksISh0aGlzLmZpbGVTeXN0ZW1Qcm92aWRlciYmbyYmaSkpcmV0dXJuWzMsOF07cz1EbC5wYXJzZShvKSxjLmxhYmVsPTI7Y2FzZSAyOmlmKGMudHJ5cy5wdXNoKFsyLDcsLDhdKSwhKGE9ZnVuY3Rpb24oZSl7aWYoIiIhPT1lLnBhdGgmJiFlLnBhdGguZW5kc1dpdGgoIi5zY3NzIikmJiFlLnBhdGguZW5kc1dpdGgoIi5jc3MiKSl7aWYoZS5wYXRoLmVuZHNXaXRoKCIvIikpcmV0dXJuW2Uud2l0aCh7cGF0aDplLnBhdGgrImluZGV4LnNjc3MifSkudG9TdHJpbmcoKSxlLndpdGgoe3BhdGg6ZS5wYXRoKyJfaW5kZXguc2NzcyJ9KS50b1N0cmluZygpXTt2YXIgdD1lLnBhdGguc3BsaXQoIi8iKSxuPXRbdC5sZW5ndGgtMV0scj1lLnBhdGguc2xpY2UoMCwtbi5sZW5ndGgpO2lmKG4uc3RhcnRzV2l0aCgiXyIpKXJldHVybiBlLnBhdGguZW5kc1dpdGgoIi5zY3NzIik/dm9pZCAwOltlLndpdGgoe3BhdGg6ZS5wYXRoKyIuc2NzcyJ9KS50b1N0cmluZygpXTt2YXIgaT1uKyIuc2NzcyIsbz1mdW5jdGlvbih0KXtyZXR1cm4gZS53aXRoKHtwYXRoOnIrdH0pLnRvU3RyaW5nKCl9O3JldHVybltvKGkpLG8oIl8iK2kpLG8oaS5zbGljZSgwLC01KSsiL2luZGV4LnNjc3MiKSxvKGkuc2xpY2UoMCwtNSkrIi9faW5kZXguc2NzcyIpLG8oaS5zbGljZSgwLC01KSsiLmNzcyIpXX19KHMpKSlyZXR1cm5bMyw2XTtsPTAsYy5sYWJlbD0zO2Nhc2UgMzpyZXR1cm4gbDxhLmxlbmd0aD9bNCx0aGlzLmZpbGVFeGlzdHMoYVtsXSldOlszLDZdO2Nhc2UgNDppZihjLnNlbnQoKSlyZXR1cm5bMixhW2xdXTtjLmxhYmVsPTU7Y2FzZSA1OnJldHVybiBsKyssWzMsM107Y2FzZSA2OnJldHVyblszLDhdO2Nhc2UgNzpyZXR1cm4gYy5zZW50KCksWzMsOF07Y2FzZSA4OnJldHVyblsyLG9dfX0pKX0pKX0sdH0oeGMpO2Z1bmN0aW9uIHBkKGUpe3JldHVybiBuZXcgbmQoZSl9ZnVuY3Rpb24gdWQoZSx0LG4scixpLG8scyl7cmV0dXJue2NvbmZpZ3VyZTpmdW5jdGlvbihlKXtvLmNvbmZpZ3VyZShlKSx0LmNvbmZpZ3VyZShudWxsPT1lP3ZvaWQgMDplLmNvbXBsZXRpb24pLG4uY29uZmlndXJlKG51bGw9PWU/dm9pZCAwOmUuaG92ZXIpfSxzZXREYXRhUHJvdmlkZXJzOnMuc2V0RGF0YVByb3ZpZGVycy5iaW5kKHMpLGRvVmFsaWRhdGlvbjpvLmRvVmFsaWRhdGlvbi5iaW5kKG8pLHBhcnNlU3R5bGVzaGVldDplLnBhcnNlU3R5bGVzaGVldC5iaW5kKGUpLGRvQ29tcGxldGU6dC5kb0NvbXBsZXRlLmJpbmQodCksZG9Db21wbGV0ZTI6dC5kb0NvbXBsZXRlMi5iaW5kKHQpLHNldENvbXBsZXRpb25QYXJ0aWNpcGFudHM6dC5zZXRDb21wbGV0aW9uUGFydGljaXBhbnRzLmJpbmQodCksZG9Ib3ZlcjpuLmRvSG92ZXIuYmluZChuKSxmb3JtYXQ6R2gsZmluZERlZmluaXRpb246ci5maW5kRGVmaW5pdGlvbi5iaW5kKHIpLGZpbmRSZWZlcmVuY2VzOnIuZmluZFJlZmVyZW5jZXMuYmluZChyKSxmaW5kRG9jdW1lbnRIaWdobGlnaHRzOnIuZmluZERvY3VtZW50SGlnaGxpZ2h0cy5iaW5kKHIpLGZpbmREb2N1bWVudExpbmtzOnIuZmluZERvY3VtZW50TGlua3MuYmluZChyKSxmaW5kRG9jdW1lbnRMaW5rczI6ci5maW5kRG9jdW1lbnRMaW5rczIuYmluZChyKSxmaW5kRG9jdW1lbnRTeW1ib2xzOnIuZmluZERvY3VtZW50U3ltYm9scy5iaW5kKHIpLGRvQ29kZUFjdGlvbnM6aS5kb0NvZGVBY3Rpb25zLmJpbmQoaSksZG9Db2RlQWN0aW9uczI6aS5kb0NvZGVBY3Rpb25zMi5iaW5kKGkpLGZpbmREb2N1bWVudENvbG9yczpyLmZpbmREb2N1bWVudENvbG9ycy5iaW5kKHIpLGdldENvbG9yUHJlc2VudGF0aW9uczpyLmdldENvbG9yUHJlc2VudGF0aW9ucy5iaW5kKHIpLGRvUmVuYW1lOnIuZG9SZW5hbWUuYmluZChyKSxnZXRGb2xkaW5nUmFuZ2VzOnFoLGdldFNlbGVjdGlvblJhbmdlczphZH19dmFyIG1kPXt9O3NlbGYub25tZXNzYWdlPSgpPT57WW4oKChlLHQpPT5uZXcgY2xhc3N7X2N0eDtfbGFuZ3VhZ2VTZXJ2aWNlO19sYW5ndWFnZVNldHRpbmdzO19sYW5ndWFnZUlkO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5fY3R4PWUsdGhpcy5fbGFuZ3VhZ2VTZXR0aW5ncz10Lm9wdGlvbnMsdGhpcy5fbGFuZ3VhZ2VJZD10Lmxhbmd1YWdlSWQ7Y29uc3Qgbj10Lm9wdGlvbnMuZGF0YSxyPW4/LnVzZURlZmF1bHREYXRhUHJvdmlkZXIsaT1bXTtpZihuPy5kYXRhUHJvdmlkZXJzKWZvcihjb25zdCBlIGluIG4uZGF0YVByb3ZpZGVycylpLnB1c2gocGQobi5kYXRhUHJvdmlkZXJzW2VdKSk7Y29uc3Qgbz17Y3VzdG9tRGF0YVByb3ZpZGVyczppLHVzZURlZmF1bHREYXRhUHJvdmlkZXI6cn07c3dpdGNoKHRoaXMuX2xhbmd1YWdlSWQpe2Nhc2UiY3NzIjp0aGlzLl9sYW5ndWFnZVNlcnZpY2U9ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9bWQpO3ZhciB0PW5ldyBzZChlKTtyZXR1cm4gdWQobmV3IHZsLG5ldyBKbChudWxsLGUsdCksbmV3IGZjKGUmJmUuY2xpZW50Q2FwYWJpbGl0aWVzLHQpLG5ldyB4YyhlJiZlLmZpbGVTeXN0ZW1Qcm92aWRlciwhMSksbmV3IE1jKHQpLG5ldyBKYyh0KSx0KX0obyk7YnJlYWs7Y2FzZSJsZXNzIjp0aGlzLl9sYW5ndWFnZVNlcnZpY2U9ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9bWQpO3ZhciB0PW5ldyBzZChlKTtyZXR1cm4gdWQobmV3IFVoLG5ldyBqaChlLHQpLG5ldyBmYyhlJiZlLmNsaWVudENhcGFiaWxpdGllcyx0KSxuZXcgeGMoZSYmZS5maWxlU3lzdGVtUHJvdmlkZXIsITApLG5ldyBNYyh0KSxuZXcgSmModCksdCl9KG8pO2JyZWFrO2Nhc2Uic2NzcyI6dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlPWZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPW1kKTt2YXIgdD1uZXcgc2QoZSk7cmV0dXJuIHVkKG5ldyBTaCxuZXcgX2goZSx0KSxuZXcgZmMoZSYmZS5jbGllbnRDYXBhYmlsaXRpZXMsdCksbmV3IGRkKGUmJmUuZmlsZVN5c3RlbVByb3ZpZGVyKSxuZXcgTWModCksbmV3IEpjKHQpLHQpfShvKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsYW5ndWFnZSBpZDogIit0aGlzLl9sYW5ndWFnZUlkKX10aGlzLl9sYW5ndWFnZVNlcnZpY2UuY29uZmlndXJlKHRoaXMuX2xhbmd1YWdlU2V0dGluZ3MpfWFzeW5jIGRvVmFsaWRhdGlvbihlKXtjb25zdCB0PXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZih0KXtjb25zdCBlPXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZVN0eWxlc2hlZXQodCksbj10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZG9WYWxpZGF0aW9uKHQsZSk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShuKX1yZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKX1hc3luYyBkb0NvbXBsZXRlKGUsdCl7Y29uc3Qgbj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIW4pcmV0dXJuIG51bGw7Y29uc3Qgcj10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VTdHlsZXNoZWV0KG4pLGk9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmRvQ29tcGxldGUobix0LHIpO3JldHVybiBQcm9taXNlLnJlc29sdmUoaSl9YXN5bmMgZG9Ib3ZlcihlLHQpe2NvbnN0IG49dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFuKXJldHVybiBudWxsO2NvbnN0IHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlU3R5bGVzaGVldChuKSxpPXRoaXMuX2xhbmd1YWdlU2VydmljZS5kb0hvdmVyKG4sdCxyKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGkpfWFzeW5jIGZpbmREZWZpbml0aW9uKGUsdCl7Y29uc3Qgbj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIW4pcmV0dXJuIG51bGw7Y29uc3Qgcj10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VTdHlsZXNoZWV0KG4pLGk9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmZpbmREZWZpbml0aW9uKG4sdCxyKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGkpfWFzeW5jIGZpbmRSZWZlcmVuY2VzKGUsdCl7Y29uc3Qgbj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIW4pcmV0dXJuW107Y29uc3Qgcj10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VTdHlsZXNoZWV0KG4pLGk9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmZpbmRSZWZlcmVuY2VzKG4sdCxyKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGkpfWFzeW5jIGZpbmREb2N1bWVudEhpZ2hsaWdodHMoZSx0KXtjb25zdCBuPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighbilyZXR1cm5bXTtjb25zdCByPXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZVN0eWxlc2hlZXQobiksaT10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZmluZERvY3VtZW50SGlnaGxpZ2h0cyhuLHQscik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShpKX1hc3luYyBmaW5kRG9jdW1lbnRTeW1ib2xzKGUpe2NvbnN0IHQ9dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCF0KXJldHVybltdO2NvbnN0IG49dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlU3R5bGVzaGVldCh0KSxyPXRoaXMuX2xhbmd1YWdlU2VydmljZS5maW5kRG9jdW1lbnRTeW1ib2xzKHQsbik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShyKX1hc3luYyBkb0NvZGVBY3Rpb25zKGUsdCxuKXtjb25zdCByPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighcilyZXR1cm5bXTtjb25zdCBpPXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZVN0eWxlc2hlZXQociksbz10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZG9Db2RlQWN0aW9ucyhyLHQsbixpKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG8pfWFzeW5jIGZpbmREb2N1bWVudENvbG9ycyhlKXtjb25zdCB0PXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighdClyZXR1cm5bXTtjb25zdCBuPXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZVN0eWxlc2hlZXQodCkscj10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZmluZERvY3VtZW50Q29sb3JzKHQsbik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShyKX1hc3luYyBnZXRDb2xvclByZXNlbnRhdGlvbnMoZSx0LG4pe2NvbnN0IHI9dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFyKXJldHVybltdO2NvbnN0IGk9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlU3R5bGVzaGVldChyKSxvPXRoaXMuX2xhbmd1YWdlU2VydmljZS5nZXRDb2xvclByZXNlbnRhdGlvbnMocixpLHQsbik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShvKX1hc3luYyBnZXRGb2xkaW5nUmFuZ2VzKGUsdCl7Y29uc3Qgbj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIW4pcmV0dXJuW107Y29uc3Qgcj10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZ2V0Rm9sZGluZ1JhbmdlcyhuLHQpO3JldHVybiBQcm9taXNlLnJlc29sdmUocil9YXN5bmMgZ2V0U2VsZWN0aW9uUmFuZ2VzKGUsdCl7Y29uc3Qgbj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIW4pcmV0dXJuW107Y29uc3Qgcj10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VTdHlsZXNoZWV0KG4pLGk9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmdldFNlbGVjdGlvblJhbmdlcyhuLHQscik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShpKX1hc3luYyBkb1JlbmFtZShlLHQsbil7Y29uc3Qgcj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIXIpcmV0dXJuIG51bGw7Y29uc3QgaT10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VTdHlsZXNoZWV0KHIpLG89dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmRvUmVuYW1lKHIsdCxuLGkpO3JldHVybiBQcm9taXNlLnJlc29sdmUobyl9YXN5bmMgZm9ybWF0KGUsdCxuKXtjb25zdCByPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighcilyZXR1cm5bXTtjb25zdCBpPXsuLi50aGlzLl9sYW5ndWFnZVNldHRpbmdzLmZvcm1hdCwuLi5ufSxvPXRoaXMuX2xhbmd1YWdlU2VydmljZS5mb3JtYXQocix0LGkpO3JldHVybiBQcm9taXNlLnJlc29sdmUobyl9X2dldFRleHREb2N1bWVudChlKXtjb25zdCB0PXRoaXMuX2N0eC5nZXRNaXJyb3JNb2RlbHMoKTtmb3IoY29uc3QgbiBvZiB0KWlmKG4udXJpLnRvU3RyaW5nKCk9PT1lKXJldHVybiBGYS5jcmVhdGUoZSx0aGlzLl9sYW5ndWFnZUlkLG4udmVyc2lvbixuLmdldFZhbHVlKCkpO3JldHVybiBudWxsfX0oZSx0KSkpfX0oKTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y3NzLndvcmtlci5qcy5tYXAKCg==', null, false);
|
|
4
|
+
/* eslint-enable */
|
|
5
|
+
|
|
6
|
+
export { WorkerFactory as default };
|