From 38705580c834b6a4a27a87516801f15b1c9e9e18 Mon Sep 17 00:00:00 2001 From: Gustavo Tandeciarz Date: Tue, 30 Jun 2015 14:48:02 -0400 Subject: [PATCH 01/17] Update web.config MVC bindings Updated from 5.2.0.0 to 5.2.3 --- src/Orchard.Azure/Orchard.Azure.Web/Web.config | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Orchard.Azure/Orchard.Azure.Web/Web.config b/src/Orchard.Azure/Orchard.Azure.Web/Web.config index 214fc6e72..1ba2fdcbd 100644 --- a/src/Orchard.Azure/Orchard.Azure.Web/Web.config +++ b/src/Orchard.Azure/Orchard.Azure.Web/Web.config @@ -18,7 +18,7 @@ - + @@ -60,7 +60,7 @@ - + @@ -147,7 +147,7 @@ - + From 0318db4c53854f925563a2d031f8d731691c2319 Mon Sep 17 00:00:00 2001 From: Gustavo Tandeciarz Date: Tue, 30 Jun 2015 17:53:13 -0400 Subject: [PATCH 02/17] Web.Config: Updating MVC reference to 5.2.3 web.config was still referencing 5.1.0.0 --- src/Orchard.Web/Modules/Orchard.Layouts/Web.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Web.config b/src/Orchard.Web/Modules/Orchard.Layouts/Web.config index fef614527..6ddbb3ba6 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Web.config +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Web.config @@ -9,7 +9,7 @@ - + @@ -29,7 +29,7 @@ - + From 993e6a1e439ec82193ddc856cb781b41f9738d0a Mon Sep 17 00:00:00 2001 From: Gustavo Tandeciarz Date: Tue, 30 Jun 2015 17:54:18 -0400 Subject: [PATCH 03/17] Web.config: MVC reference updated to 5.2.3 Was still referencing 5.1.0.0 --- src/Orchard.Web/Modules/Orchard.DynamicForms/Web.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Web.config b/src/Orchard.Web/Modules/Orchard.DynamicForms/Web.config index 15060b574..7bba20ca5 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Web.config +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Web.config @@ -9,7 +9,7 @@ - + @@ -29,7 +29,7 @@ - + From e021218b3c4489ea60e2adff5c04fdbf83deb5b5 Mon Sep 17 00:00:00 2001 From: Gustavo Tandeciarz Date: Tue, 30 Jun 2015 19:48:05 -0400 Subject: [PATCH 04/17] Updated bindings in azure cloud service web.config Updated bindings for system.web.http and system.net.http.formatting to 5.2.3 --- src/Orchard.Azure/Orchard.Azure.Web/Web.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Orchard.Azure/Orchard.Azure.Web/Web.config b/src/Orchard.Azure/Orchard.Azure.Web/Web.config index 1ba2fdcbd..81778984e 100644 --- a/src/Orchard.Azure/Orchard.Azure.Web/Web.config +++ b/src/Orchard.Azure/Orchard.Azure.Web/Web.config @@ -171,11 +171,11 @@ - + - + From eebe29fec3a1470be505dbb83bce34f056335953 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Thu, 2 Jul 2015 13:01:49 +0300 Subject: [PATCH 05/17] #5467: Fixes the issue where the "Set as homepage" setting is not retained when saving, The issue was that when you save a content item (without publishing it) while checking the "Set as homepage" checkbox, it would lose its checked status after save. With this change, the checkbox is again rendered but in a checked status, so that when you do publish, it will become the homepage. Fixes #5467 --- .../Orchard.Autoroute/Drivers/AutoroutePartDriver.cs | 5 ++--- .../ViewModels/AutoroutePartEditViewModel.cs | 1 + .../Views/EditorTemplates/Parts.Autoroute.Edit.cshtml | 10 +++++----- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Autoroute/Drivers/AutoroutePartDriver.cs b/src/Orchard.Web/Modules/Orchard.Autoroute/Drivers/AutoroutePartDriver.cs index ca4bb47b3..cc31f3cae 100644 --- a/src/Orchard.Web/Modules/Orchard.Autoroute/Drivers/AutoroutePartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Autoroute/Drivers/AutoroutePartDriver.cs @@ -67,9 +67,8 @@ namespace Orchard.Autoroute.Drivers { var homepage = _aliasService.Get(string.Empty); var displayRouteValues = _contentManager.GetItemMetadata(part).DisplayRouteValues; - if(homepage.Match(displayRouteValues)) { - viewModel.PromoteToHomePage = true; - } + viewModel.IsHomePage = homepage.Match(displayRouteValues); + viewModel.PromoteToHomePage = viewModel.IsHomePage || part.DisplayAlias == "/"; if (settings.PerItemConfiguration) { // if enabled, the list of all available patterns is displayed, and the user can diff --git a/src/Orchard.Web/Modules/Orchard.Autoroute/ViewModels/AutoroutePartEditViewModel.cs b/src/Orchard.Web/Modules/Orchard.Autoroute/ViewModels/AutoroutePartEditViewModel.cs index 456f70bd4..def63928a 100644 --- a/src/Orchard.Web/Modules/Orchard.Autoroute/ViewModels/AutoroutePartEditViewModel.cs +++ b/src/Orchard.Web/Modules/Orchard.Autoroute/ViewModels/AutoroutePartEditViewModel.cs @@ -4,6 +4,7 @@ namespace Orchard.Autoroute.ViewModels { public class AutoroutePartEditViewModel { public AutorouteSettings Settings { get; set; } + public bool IsHomePage { get; set; } public bool PromoteToHomePage { get; set; } public string CurrentUrl { get; set; } public string CustomPattern { get; set; } diff --git a/src/Orchard.Web/Modules/Orchard.Autoroute/Views/EditorTemplates/Parts.Autoroute.Edit.cshtml b/src/Orchard.Web/Modules/Orchard.Autoroute/Views/EditorTemplates/Parts.Autoroute.Edit.cshtml index e8b8a01ae..1fc939797 100644 --- a/src/Orchard.Web/Modules/Orchard.Autoroute/Views/EditorTemplates/Parts.Autoroute.Edit.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Autoroute/Views/EditorTemplates/Parts.Autoroute.Edit.cshtml @@ -16,7 +16,7 @@ } } -@if (!Model.PromoteToHomePage) { +@if (!Model.IsHomePage) { } } else { - @T("This content is the current home page") + @T("This content is the current home page.") } From 2873eb89913e8ab4ed6814c28303879489a00f27 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Thu, 2 Jul 2015 13:37:20 +0300 Subject: [PATCH 06/17] #5337: Fixed homepage becoming lost after publishing layout template being used by the homepage. Work Item: 5337 --- .../Handlers/LayoutPartHandler.cs | 32 +++++++++++++++++-- .../Orchard.Layouts/Orchard.Layouts.csproj | 8 +++++ 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Handlers/LayoutPartHandler.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Handlers/LayoutPartHandler.cs index 04648fb23..78f9a595b 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Handlers/LayoutPartHandler.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Handlers/LayoutPartHandler.cs @@ -1,9 +1,13 @@ -using Orchard.ContentManagement; +using System; +using Orchard.Alias; +using Orchard.Autoroute.Models; +using Orchard.ContentManagement; using Orchard.ContentManagement.Handlers; using Orchard.Data; using Orchard.DisplayManagement; using Orchard.Layouts.Models; using Orchard.Layouts.Services; +using Orchard.Utility.Extensions; namespace Orchard.Layouts.Handlers { public class LayoutPartHandler : ContentHandler { @@ -13,6 +17,7 @@ namespace Orchard.Layouts.Handlers { private readonly IShapeDisplay _shapeDisplay; private readonly ILayoutSerializer _serializer; private readonly IStaticHttpContextScopeFactory _staticHttpContextScopeFactory; + private readonly IAliasService _aliasService; public LayoutPartHandler( IRepository repository, @@ -21,7 +26,8 @@ namespace Orchard.Layouts.Handlers { IContentPartDisplay contentPartDisplay, IShapeDisplay shapeDisplay, ILayoutSerializer serializer, - IStaticHttpContextScopeFactory staticHttpContextScopeFactory) { + IStaticHttpContextScopeFactory staticHttpContextScopeFactory, + IAliasService aliasService) { _layoutManager = layoutManager; _contentManager = contentManager; @@ -29,6 +35,7 @@ namespace Orchard.Layouts.Handlers { _shapeDisplay = shapeDisplay; _serializer = serializer; _staticHttpContextScopeFactory = staticHttpContextScopeFactory; + _aliasService = aliasService; Filters.Add(StorageFilter.For(repository)); OnPublished(UpdateTemplateClients); @@ -77,6 +84,12 @@ namespace Orchard.Layouts.Handlers { draft.LayoutData = _serializer.Serialize(updatedLayout); if (isPublished) { + // If the content being published is currently the homepage, we need to change the DisplayAlias from "" to "/" + // so that the autoroute part handler will not regenerate the alias and causes the homepage to become "lost". + if (IsHomePage(layout)) { + PromoteToHomePage(draft); + } + // We don't have to recurse here, since invoking Publish on a Layout will cause this handler to execute again. _contentManager.Publish(draft.ContentItem); } @@ -85,5 +98,20 @@ namespace Orchard.Layouts.Handlers { } } } + + private bool IsHomePage(IContent content) { + var homepage = _aliasService.Get(String.Empty); + var displayRouteValues = _contentManager.GetItemMetadata(content).DisplayRouteValues; + return homepage.Match(displayRouteValues); + } + + private void PromoteToHomePage(IContent content) { + var autoroutePart = content.As(); + + if (autoroutePart == null) + return; + + autoroutePart.DisplayAlias = "/"; + } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj b/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj index c89069046..df50eea91 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj @@ -287,6 +287,14 @@ {3158c928-888c-4a84-8bc1-4a8257489538} Markdown + + {475b6c45-b27c-438b-8966-908b9d6d1077} + Orchard.Alias + + + {66fccd76-2761-47e3-8d11-b45d0001ddaa} + Orchard.Autoroute + {642a49d7-8752-4177-80d6-bfbbcfad3de0} Orchard.Forms From b580995e4b9fbbe98a01da4ab75d92560efe8958 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Thu, 2 Jul 2015 15:30:20 +0300 Subject: [PATCH 07/17] Added "TypeName" to element data serialization black list. Having the "TypeName" as part of the element's data field is redundant. --- .../Modules/Orchard.Layouts/Helpers/ElementDataHelper.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Helpers/ElementDataHelper.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Helpers/ElementDataHelper.cs index 326d7845c..5fe9d8c36 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Helpers/ElementDataHelper.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Helpers/ElementDataHelper.cs @@ -12,7 +12,7 @@ using Orchard.Utility; namespace Orchard.Layouts.Helpers { public static class ElementDataHelper { - private static readonly string[] _elementDataBlackList = { "ElementData", "__RequestVerificationToken" }; + private static readonly string[] _elementDataBlackList = { "ElementData", "__RequestVerificationToken", "TypeName" }; public static string Get(this ElementDataDictionary data, string key, string defaultValue = null) { return data != null ? data.ContainsKey(key) ? data[key] : defaultValue : defaultValue; From 3c7fffc3200d55979a83869beb088ac34002cf14 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Thu, 2 Jul 2015 15:34:08 +0300 Subject: [PATCH 08/17] Fixed that default layout data would not be applied. This fixes the issue where the default layout data string would not be applied when creating new content items of a content type with the LayoutPart attached. For example, creating new Form content items would start out with an empty canvas instead of with a default Form element and a submit button. --- .../Modules/Orchard.Layouts/Drivers/LayoutPartDriver.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/LayoutPartDriver.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/LayoutPartDriver.cs index d58f4c13c..64706a49a 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/LayoutPartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/LayoutPartDriver.cs @@ -11,6 +11,7 @@ using Orchard.Layouts.Framework.Elements; using Orchard.Layouts.Helpers; using Orchard.Layouts.Models; using Orchard.Layouts.Services; +using Orchard.Layouts.Settings; using Orchard.Layouts.ViewModels; using Orchard.Logging; @@ -89,6 +90,11 @@ namespace Orchard.Layouts.Drivers { protected override DriverResult Editor(LayoutPart part, IUpdateModel updater, dynamic shapeHelper) { return ContentShape("Parts_Layout_Edit", () => { + if (part.Id == 0) { + var settings = part.TypePartDefinition.Settings.GetModel(); + part.LayoutData = settings.DefaultLayoutData; + } + var viewModel = new LayoutPartViewModel { LayoutEditor = _layoutEditorFactory.Create(part) }; From b05dcf9a56308274caaa7ff5086470065d2dc384 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Thu, 2 Jul 2015 15:40:54 +0300 Subject: [PATCH 09/17] Fixed default layout data for Form. --- .../Orchard.DynamicForms/Migrations.cs | 43 ++++++++++--------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Migrations.cs b/src/Orchard.Web/Modules/Orchard.DynamicForms/Migrations.cs index 7a061022d..3aa00e1f9 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Migrations.cs +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Migrations.cs @@ -5,6 +5,27 @@ using Orchard.Data.Migration; namespace Orchard.DynamicForms { public class Migrations : DataMigrationImpl { + private const string DefaultFormLayoutData = +@"{ + ""elements"": [ + { + ""typeName"": ""Orchard.Layouts.Elements.Canvas"", + ""elements"": [ + { + ""typeName"": ""Orchard.DynamicForms.Elements.Form"", + ""data"": ""FormName=Untitled&FormAction=&FormMethod=POST&FormBindingContentType=&Publication=Draft&Notification=&RedirectUrl="", + ""elements"": [ + { + ""typeName"": ""Orchard.DynamicForms.Elements.Button"", + ""data"": ""InputName=&FormBindingContentType=&Text=Submit"" + } + ] + } + ] + } + ] +}"; + public int Create() { SchemaBuilder.CreateTable("Submission", table => table .Column("Id", c => c.PrimaryKey().Identity()) @@ -23,16 +44,7 @@ namespace Orchard.DynamicForms { .WithSetting("AutorouteSettings.PatternDefinitions", "[{\"Name\":\"Title\",\"Pattern\":\"{Content.Slug}\",\"Description\":\"my-form\"}]") .WithSetting("AutorouteSettings.DefaultPatternIndex", "0")) .WithPart("LayoutPart", p => p - .WithSetting("LayoutTypePartSettings.DefaultLayoutData", - "{" + - "\"elements\": [{" + - "\"typeName\": \"Orchard.DynamicForms.Elements.Form\"," + - "\"elements\": [{" + - "\"typeName\": \"Orchard.DynamicForms.Elements.Button\"," + - "\"state\": \"ButtonText=Submit\"" + - "}]" + - "}]" + - "}")) + .WithSetting("LayoutTypePartSettings.DefaultLayoutData", DefaultFormLayoutData)) .DisplayedAs("Form") .Listable() .Creatable() @@ -44,16 +56,7 @@ namespace Orchard.DynamicForms { .WithSetting("DateEditorSettings.ShowDateEditor", "false")) .WithPart("WidgetPart") .WithPart("LayoutPart", p => p - .WithSetting("LayoutTypePartSettings.DefaultLayoutData", - "{" + - "\"elements\": [{" + - "\"typeName\": \"Orchard.DynamicForms.Elements.Form\"," + - "\"elements\": [{" + - "\"typeName\": \"Orchard.DynamicForms.Elements.Button\"," + - "\"state\": \"ButtonText=Submit\"" + - "}]" + - "}]" + - "}")) + .WithSetting("LayoutTypePartSettings.DefaultLayoutData", DefaultFormLayoutData)) .WithSetting("Stereotype", "Widget") .DisplayedAs("Form Widget")); return 1; From b18f153e6a3e421947e896a3260eaa9449f7bb62 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Sat, 4 Jul 2015 00:37:14 +0200 Subject: [PATCH 10/17] #5445: Fixed form field binding issues. This fixes two issues: 1. Adding a Form element (and selecting the content type to create using the submitted values) and then adding a form element would not cause the Bindings tab to appear. 2. Adding nested containers (such as Grid, Row and Column) to a Form element would prevent the Bindings tab from appearing when adding a form field element such as TextField to a nested container. Work Item: #5445 --- .../Scripts/LayoutEditor.js | 33 ++++++++++++------- .../Scripts/LayoutEditor.min.js | 2 +- .../LayoutEditor/Directives/Fieldset.js | 7 ++-- .../Scripts/LayoutEditor/Directives/Form.js | 9 ++--- .../Scripts/LayoutEditor/Models/Fieldset.js | 4 +++ .../Scripts/LayoutEditor/Models/Form.js | 10 ++++-- .../Orchard.Layouts/Scripts/LayoutEditor.js | 6 ++-- .../Scripts/LayoutEditor.min.js | 2 +- .../Services/ScopeConfigurator.js | 4 ++- .../Modules/Orchard.Layouts/Scripts/Models.js | 21 ++++++++---- .../Orchard.Layouts/Scripts/Models.min.js | 2 +- .../Scripts/Models/Container.js | 9 +++-- .../Orchard.Layouts/Scripts/Models/Element.js | 10 ++++-- 13 files changed, 80 insertions(+), 39 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor.js b/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor.js index 59cd5f8c4..13fabe29a 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor.js +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor.js @@ -37,6 +37,10 @@ var LayoutEditor; }); }; + this.applyElementEditorModel = function(model) { + this.legend = model.legend; + }; + this.setChildren(children); }; @@ -98,12 +102,11 @@ var LayoutEditor; this.setChildren = function (children) { this.children = children; _(this.children).each(function (child) { - child.parent = self; - self.linkChild(child); + child.setParent(self); }); }; - this.linkChild = function(element) { + this.onDescendantAdded = function(element) { var getEditorObject = element.getEditorObject; element.getEditorObject = function () { var dto = getEditorObject(); @@ -113,6 +116,11 @@ var LayoutEditor; }; }; + this.applyElementEditorModel = function(model) { + this.name = model.name; + this.formBindingContentType = model.formBindingContentType; + }; + this.setChildren(children); }; @@ -151,9 +159,10 @@ angular $scope.$root.editElement($scope.element).then(function (args) { if (args.cancel) return; - $scope.element.data = decodeURIComponent(args.element.data); - $scope.element.legend = args.elementEditorModel.legend; - $scope.$apply(); + $scope.$apply(function() { + $scope.element.data = decodeURIComponent(args.element.data); + $scope.element.applyElementEditorModel(args.elementEditorModel); + }); }); }; } @@ -179,10 +188,11 @@ angular $scope.$root.editElement($scope.element).then(function (args) { if (args.cancel) return; - $scope.element.data = decodeURIComponent(args.element.data); - $scope.element.name = args.elementEditorModel.name; - $scope.element.formBindingContentType = args.elementEditorModel.formBindingContentType; - $scope.$apply(); + + $scope.apply(function() { + $scope.element.data = decodeURIComponent(args.element.data); + $scope.element.applyElementEditorModel(args.elementEditorModel); + }); }); }; } @@ -191,5 +201,4 @@ angular replace: true }; } - ]); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZpZWxkc2V0LmpzIiwiRm9ybS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FDN0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBRDFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQzNCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IkxheW91dEVkaXRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbImFuZ3VsYXJcclxuICAgIC5tb2R1bGUoXCJMYXlvdXRFZGl0b3JcIilcclxuICAgIC5kaXJlY3RpdmUoXCJvcmNMYXlvdXRGaWVsZHNldFwiLCBbXCIkY29tcGlsZVwiLCBcInNjb3BlQ29uZmlndXJhdG9yXCIsIFwiZW52aXJvbm1lbnRcIixcclxuICAgICAgICBmdW5jdGlvbiAoJGNvbXBpbGUsIHNjb3BlQ29uZmlndXJhdG9yLCBlbnZpcm9ubWVudCkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgcmVzdHJpY3Q6IFwiRVwiLFxyXG4gICAgICAgICAgICAgICAgc2NvcGU6IHsgZWxlbWVudDogXCI9XCIgfSxcclxuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6IFtcIiRzY29wZVwiLCBcIiRlbGVtZW50XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCRzY29wZSwgJGVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGVDb25maWd1cmF0b3IuY29uZmlndXJlRm9yRWxlbWVudCgkc2NvcGUsICRlbGVtZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGVDb25maWd1cmF0b3IuY29uZmlndXJlRm9yQ29udGFpbmVyKCRzY29wZSwgJGVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc29ydGFibGVPcHRpb25zW1wiYXhpc1wiXSA9IFwieVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZWRpdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS4kcm9vdC5lZGl0RWxlbWVudCgkc2NvcGUuZWxlbWVudCkudGhlbihmdW5jdGlvbiAoYXJncykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmdzLmNhbmNlbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5lbGVtZW50LmRhdGEgPSBkZWNvZGVVUklDb21wb25lbnQoYXJncy5lbGVtZW50LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5lbGVtZW50LmxlZ2VuZCA9IGFyZ3MuZWxlbWVudEVkaXRvck1vZGVsLmxlZ2VuZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJGFwcGx5KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6IGVudmlyb25tZW50LnRlbXBsYXRlVXJsKFwiRmllbGRzZXRcIiksXHJcbiAgICAgICAgICAgICAgICByZXBsYWNlOiB0cnVlXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgXSk7IiwiYW5ndWxhclxuICAgIC5tb2R1bGUoXCJMYXlvdXRFZGl0b3JcIilcbiAgICAuZGlyZWN0aXZlKFwib3JjTGF5b3V0Rm9ybVwiLCBbXCIkY29tcGlsZVwiLCBcInNjb3BlQ29uZmlndXJhdG9yXCIsIFwiZW52aXJvbm1lbnRcIixcbiAgICAgICAgZnVuY3Rpb24gKCRjb21waWxlLCBzY29wZUNvbmZpZ3VyYXRvciwgZW52aXJvbm1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcmVzdHJpY3Q6IFwiRVwiLFxuICAgICAgICAgICAgICAgIHNjb3BlOiB7IGVsZW1lbnQ6IFwiPVwiIH0sXG4gICAgICAgICAgICAgICAgY29udHJvbGxlcjogW1wiJHNjb3BlXCIsIFwiJGVsZW1lbnRcIixcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCRzY29wZSwgJGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlQ29uZmlndXJhdG9yLmNvbmZpZ3VyZUZvckVsZW1lbnQoJHNjb3BlLCAkZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZUNvbmZpZ3VyYXRvci5jb25maWd1cmVGb3JDb250YWluZXIoJHNjb3BlLCAkZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc29ydGFibGVPcHRpb25zW1wiYXhpc1wiXSA9IFwieVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmVkaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLiRyb290LmVkaXRFbGVtZW50KCRzY29wZS5lbGVtZW50KS50aGVuKGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmdzLmNhbmNlbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmVsZW1lbnQuZGF0YSA9IGRlY29kZVVSSUNvbXBvbmVudChhcmdzLmVsZW1lbnQuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5lbGVtZW50Lm5hbWUgPSBhcmdzLmVsZW1lbnRFZGl0b3JNb2RlbC5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZWxlbWVudC5mb3JtQmluZGluZ0NvbnRlbnRUeXBlID0gYXJncy5lbGVtZW50RWRpdG9yTW9kZWwuZm9ybUJpbmRpbmdDb250ZW50VHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLiRhcHBseSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6IGVudmlyb25tZW50LnRlbXBsYXRlVXJsKFwiRm9ybVwiKSxcbiAgICAgICAgICAgICAgICByZXBsYWNlOiB0cnVlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgXSk7Il0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 \ No newline at end of file + ]); \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor.min.js b/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor.min.js index 3b594800c..2564bccce 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor.min.js +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor.min.js @@ -1 +1 @@ -var LayoutEditor;!function(e,t){t.Fieldset=function(n,i,o,r,l,a,c,d,s,m,h){t.Element.call(this,"Fieldset",n,i,o,r,l),t.Container.call(this,["Grid","Content"],h);var u=this;this.isContainable=!0,this.dropTargetClass="layout-common-holder",this.contentType=c,this.contentTypeLabel=d,this.contentTypeClass=s,this.legend=a||"",this.hasEditor=m,this.toObject=function(){var e=this.elementToObject();return e.legend=this.legend,e.children=this.childrenToObject(),e};var p=this.getEditorObject;this.getEditorObject=function(){var t=p();return e.extend(t,{Legend:this.legend})},this.setChildren=function(e){this.children=e,_(this.children).each(function(e){e.parent=u})},this.setChildren(h)},t.Fieldset.from=function(e){return new t.Fieldset(e.data,e.htmlId,e.htmlClass,e.htmlStyle,e.isTemplated,e.legend,e.contentType,e.contentTypeLabel,e.contentTypeClass,e.hasEditor,t.childrenFrom(e.children))},t.registerFactory("Fieldset",function(e){return t.Fieldset.from(e)})}(jQuery,LayoutEditor||(LayoutEditor={}));var LayoutEditor;!function(e,t){t.Form=function(n,i,o,r,l,a,c,d,s,m,h,u){t.Element.call(this,"Form",n,i,o,r,l),t.Container.call(this,["Grid","Content"],u);var p=this;this.isContainable=!0,this.dropTargetClass="layout-common-holder",this.contentType=d,this.contentTypeLabel=s,this.contentTypeClass=m,this.name=a||"Untitled",this.formBindingContentType=c,this.hasEditor=h,this.toObject=function(){var e=this.elementToObject();return e.name=this.name,e.formBindingContentType=this.formBindingContentType,e.children=this.childrenToObject(),e};var f=this.getEditorObject;this.getEditorObject=function(){var t=f();return e.extend(t,{FormName:this.name,FormBindingContentType:this.formBindingContentType})},this.setChildren=function(e){this.children=e,_(this.children).each(function(e){e.parent=p,p.linkChild(e)})},this.linkChild=function(t){var n=t.getEditorObject;t.getEditorObject=function(){var t=n();return e.extend(t,{FormBindingContentType:p.formBindingContentType})}},this.setChildren(u)},t.Form.from=function(e){return new t.Form(e.data,e.htmlId,e.htmlClass,e.htmlStyle,e.isTemplated,e.name,e.formBindingContentType,e.contentType,e.contentTypeLabel,e.contentTypeClass,e.hasEditor,t.childrenFrom(e.children))},t.registerFactory("Form",function(e){return t.Form.from(e)})}(jQuery,LayoutEditor||(LayoutEditor={})),angular.module("LayoutEditor").directive("orcLayoutFieldset",["$compile","scopeConfigurator","environment",function(e,t,n){return{restrict:"E",scope:{element:"="},controller:["$scope","$element",function(e,n){t.configureForElement(e,n),t.configureForContainer(e,n),e.sortableOptions.axis="y",e.edit=function(){e.$root.editElement(e.element).then(function(t){t.cancel||(e.element.data=decodeURIComponent(t.element.data),e.element.legend=t.elementEditorModel.legend,e.$apply())})}}],templateUrl:n.templateUrl("Fieldset"),replace:!0}}]),angular.module("LayoutEditor").directive("orcLayoutForm",["$compile","scopeConfigurator","environment",function(e,t,n){return{restrict:"E",scope:{element:"="},controller:["$scope","$element",function(e,n){t.configureForElement(e,n),t.configureForContainer(e,n),e.sortableOptions.axis="y",e.edit=function(){e.$root.editElement(e.element).then(function(t){t.cancel||(e.element.data=decodeURIComponent(t.element.data),e.element.name=t.elementEditorModel.name,e.element.formBindingContentType=t.elementEditorModel.formBindingContentType,e.$apply())})}}],templateUrl:n.templateUrl("Form"),replace:!0}}]); \ No newline at end of file +var LayoutEditor;!function(e,t){t.Fieldset=function(n,i,o,r,l,d,a,c,s,h,m){t.Element.call(this,"Fieldset",n,i,o,r,l),t.Container.call(this,["Grid","Content"],m);var u=this;this.isContainable=!0,this.dropTargetClass="layout-common-holder",this.contentType=a,this.contentTypeLabel=c,this.contentTypeClass=s,this.legend=d||"",this.hasEditor=h,this.toObject=function(){var e=this.elementToObject();return e.legend=this.legend,e.children=this.childrenToObject(),e};var p=this.getEditorObject;this.getEditorObject=function(){var t=p();return e.extend(t,{Legend:this.legend})},this.setChildren=function(e){this.children=e,_(this.children).each(function(e){e.parent=u})},this.applyElementEditorModel=function(e){this.legend=e.legend},this.setChildren(m)},t.Fieldset.from=function(e){return new t.Fieldset(e.data,e.htmlId,e.htmlClass,e.htmlStyle,e.isTemplated,e.legend,e.contentType,e.contentTypeLabel,e.contentTypeClass,e.hasEditor,t.childrenFrom(e.children))},t.registerFactory("Fieldset",function(e){return t.Fieldset.from(e)})}(jQuery,LayoutEditor||(LayoutEditor={}));var LayoutEditor;!function(e,t){t.Form=function(n,i,o,r,l,d,a,c,s,h,m,u){t.Element.call(this,"Form",n,i,o,r,l),t.Container.call(this,["Grid","Content"],u);var p=this;this.isContainable=!0,this.dropTargetClass="layout-common-holder",this.contentType=c,this.contentTypeLabel=s,this.contentTypeClass=h,this.name=d||"Untitled",this.formBindingContentType=a,this.hasEditor=m,this.toObject=function(){var e=this.elementToObject();return e.name=this.name,e.formBindingContentType=this.formBindingContentType,e.children=this.childrenToObject(),e};var f=this.getEditorObject;this.getEditorObject=function(){var t=f();return e.extend(t,{FormName:this.name,FormBindingContentType:this.formBindingContentType})},this.setChildren=function(e){this.children=e,_(this.children).each(function(e){e.setParent(p)})},this.onDescendantAdded=function(t){var n=t.getEditorObject;t.getEditorObject=function(){var t=n();return e.extend(t,{FormBindingContentType:p.formBindingContentType})}},this.applyElementEditorModel=function(e){this.name=e.name,this.formBindingContentType=e.formBindingContentType},this.setChildren(u)},t.Form.from=function(e){return new t.Form(e.data,e.htmlId,e.htmlClass,e.htmlStyle,e.isTemplated,e.name,e.formBindingContentType,e.contentType,e.contentTypeLabel,e.contentTypeClass,e.hasEditor,t.childrenFrom(e.children))},t.registerFactory("Form",function(e){return t.Form.from(e)})}(jQuery,LayoutEditor||(LayoutEditor={})),angular.module("LayoutEditor").directive("orcLayoutFieldset",["$compile","scopeConfigurator","environment",function(e,t,n){return{restrict:"E",scope:{element:"="},controller:["$scope","$element",function(e,n){t.configureForElement(e,n),t.configureForContainer(e,n),e.sortableOptions.axis="y",e.edit=function(){e.$root.editElement(e.element).then(function(t){t.cancel||e.$apply(function(){e.element.data=decodeURIComponent(t.element.data),e.element.applyElementEditorModel(t.elementEditorModel)})})}}],templateUrl:n.templateUrl("Fieldset"),replace:!0}}]),angular.module("LayoutEditor").directive("orcLayoutForm",["$compile","scopeConfigurator","environment",function(e,t,n){return{restrict:"E",scope:{element:"="},controller:["$scope","$element",function(e,n){t.configureForElement(e,n),t.configureForContainer(e,n),e.sortableOptions.axis="y",e.edit=function(){e.$root.editElement(e.element).then(function(t){t.cancel||e.apply(function(){e.element.data=decodeURIComponent(t.element.data),e.element.applyElementEditorModel(t.elementEditorModel)})})}}],templateUrl:n.templateUrl("Form"),replace:!0}}]); \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor/Directives/Fieldset.js b/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor/Directives/Fieldset.js index 7e45c0208..8139fb2f7 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor/Directives/Fieldset.js +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor/Directives/Fieldset.js @@ -14,9 +14,10 @@ $scope.$root.editElement($scope.element).then(function (args) { if (args.cancel) return; - $scope.element.data = decodeURIComponent(args.element.data); - $scope.element.legend = args.elementEditorModel.legend; - $scope.$apply(); + $scope.$apply(function() { + $scope.element.data = decodeURIComponent(args.element.data); + $scope.element.applyElementEditorModel(args.elementEditorModel); + }); }); }; } diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor/Directives/Form.js b/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor/Directives/Form.js index 3e4ad89f9..c8bee01ce 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor/Directives/Form.js +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor/Directives/Form.js @@ -14,10 +14,11 @@ $scope.$root.editElement($scope.element).then(function (args) { if (args.cancel) return; - $scope.element.data = decodeURIComponent(args.element.data); - $scope.element.name = args.elementEditorModel.name; - $scope.element.formBindingContentType = args.elementEditorModel.formBindingContentType; - $scope.$apply(); + + $scope.apply(function() { + $scope.element.data = decodeURIComponent(args.element.data); + $scope.element.applyElementEditorModel(args.elementEditorModel); + }); }); }; } diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor/Models/Fieldset.js b/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor/Models/Fieldset.js index abe9e83f1..8d4776f45 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor/Models/Fieldset.js +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor/Models/Fieldset.js @@ -37,6 +37,10 @@ }); }; + this.applyElementEditorModel = function(model) { + this.legend = model.legend; + }; + this.setChildren(children); }; diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor/Models/Form.js b/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor/Models/Form.js index 999dcf900..36737ee48 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor/Models/Form.js +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor/Models/Form.js @@ -36,12 +36,11 @@ this.setChildren = function (children) { this.children = children; _(this.children).each(function (child) { - child.parent = self; - self.linkChild(child); + child.setParent(self); }); }; - this.linkChild = function(element) { + this.onDescendantAdded = function(element) { var getEditorObject = element.getEditorObject; element.getEditorObject = function () { var dto = getEditorObject(); @@ -51,6 +50,11 @@ }; }; + this.applyElementEditorModel = function(model) { + this.name = model.name; + this.formBindingContentType = model.formBindingContentType; + }; + this.setChildren(children); }; diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/LayoutEditor.js b/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/LayoutEditor.js index 2aba5de27..577152cb4 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/LayoutEditor.js +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/LayoutEditor.js @@ -283,12 +283,14 @@ angular // Because of this, we need to invoke "setParent" so that specific container types can perform element speficic initialization. receivedElement.setEditor(element.editor); receivedElement.setParent(element); + if (!!receivedElement.hasEditor) { $scope.$root.editElement(receivedElement).then(function (args) { if (!args.cancel) { receivedElement.data = args.element.data; + receivedElement.applyElementEditorModel(args.elementEditorModel); - if (receivedElement.setHtml) + if (!!receivedElement.setHtml) receivedElement.setHtml(args.element.html); } $timeout(function () { @@ -1036,4 +1038,4 @@ angular }; } ]); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1vZHVsZS5qcyIsIkNsaXBib2FyZC5qcyIsIlNjb3BlQ29uZmlndXJhdG9yLmpzIiwiRWRpdG9yLmpzIiwiQ2FudmFzLmpzIiwiQ2hpbGQuanMiLCJDb2x1bW4uanMiLCJDb250ZW50LmpzIiwiSHRtbC5qcyIsIkdyaWQuanMiLCJSb3cuanMiLCJQb3B1cC5qcyIsIlRvb2xib3guanMiLCJUb29sYm94R3JvdXAuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQzdDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FDL1RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUMzTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUNsQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FDZEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQ25FQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUNuQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FDL0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FDbEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUNuQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUN2Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQ2pNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiTGF5b3V0RWRpdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiYW5ndWxhci5tb2R1bGUoXCJMYXlvdXRFZGl0b3JcIiwgW1wibmdTYW5pdGl6ZVwiLCBcIm5nUmVzb3VyY2VcIiwgXCJ1aS5zb3J0YWJsZVwiXSk7IiwidmFyIExheW91dEVkaXRvcjtcbihmdW5jdGlvbihMYXlvdXRFZGl0b3IpIHtcblxuICAgIHZhciBDbGlwYm9hcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgICAgdGhpcy5fY2xpcGJvYXJkRGF0YSA9IHt9O1xuICAgICAgICB0aGlzLl9pc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3dhc0ludm9rZWQgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLnNldERhdGEgPSBmdW5jdGlvbihjb250ZW50VHlwZSwgZGF0YSkge1xuICAgICAgICAgICAgc2VsZi5fY2xpcGJvYXJkRGF0YVtjb250ZW50VHlwZV0gPSBkYXRhO1xuICAgICAgICAgICAgc2VsZi5fd2FzSW52b2tlZCA9IHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZ2V0RGF0YSA9IGZ1bmN0aW9uIChjb250ZW50VHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NsaXBib2FyZERhdGFbY29udGVudFR5cGVdO1xuICAgICAgICAgICAgc2VsZi5fd2FzSW52b2tlZCA9IHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZGlzYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgc2VsZi5faXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICBzZWxmLl93YXNJbnZva2VkID0gZmFsc2U7XG4gICAgICAgICAgICBzZWxmLl9jbGlwYm9hcmREYXRhID0ge307XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2lzRGlzYWJsZWQ7XHJcbiAgICAgICAgfVxuICAgICAgICB0aGlzLndhc0ludm9rZWQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBzZWxmLl93YXNJbnZva2VkO1xyXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBMYXlvdXRFZGl0b3IuQ2xpcGJvYXJkID0gbmV3IENsaXBib2FyZCgpO1xuXG4gICAgYW5ndWxhclxuICAgICAgICAubW9kdWxlKFwiTGF5b3V0RWRpdG9yXCIpXG4gICAgICAgIC5mYWN0b3J5KFwiY2xpcGJvYXJkXCIsIFtcbiAgICAgICAgICAgIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHNldERhdGE6IExheW91dEVkaXRvci5DbGlwYm9hcmQuc2V0RGF0YSxcbiAgICAgICAgICAgICAgICAgICAgZ2V0RGF0YTogTGF5b3V0RWRpdG9yLkNsaXBib2FyZC5nZXREYXRhLFxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlOiBMYXlvdXRFZGl0b3IuQ2xpcGJvYXJkLmRpc2FibGUsXG4gICAgICAgICAgICAgICAgICAgIGlzRGlzYWJsZWQ6IExheW91dEVkaXRvci5DbGlwYm9hcmQuaXNEaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgd2FzSW52b2tlZDogTGF5b3V0RWRpdG9yLkNsaXBib2FyZC53YXNJbnZva2VkXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSk7XG59KShMYXlvdXRFZGl0b3IgfHwgKExheW91dEVkaXRvciA9IHt9KSk7IiwiYW5ndWxhclxuICAgIC5tb2R1bGUoXCJMYXlvdXRFZGl0b3JcIilcbiAgICAuZmFjdG9yeShcInNjb3BlQ29uZmlndXJhdG9yXCIsIFtcIiR0aW1lb3V0XCIsIFwiY2xpcGJvYXJkXCIsXG4gICAgICAgIGZ1bmN0aW9uICgkdGltZW91dCwgY2xpcGJvYXJkKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuXG4gICAgICAgICAgICAgICAgY29uZmlndXJlRm9yRWxlbWVudDogZnVuY3Rpb24gKCRzY29wZSwgJGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnQuZmluZChcIi5sYXlvdXQtcGFuZWxcIikuY2xpY2soZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICRlbGVtZW50LnBhcmVudCgpLmtleWRvd24oZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoYW5kbGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzZXRGb2N1cyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSAkc2NvcGUuZWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5lZGl0b3IuaXNEcmFnZ2luZyB8fCBlbGVtZW50LmVkaXRvci5pbmxpbmVFZGl0aW5nSXNBY3RpdmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBuYXRpdmUgY2xpcGJvYXJkIHN1cHBvcnQgZXhpc3RzLCB0aGUgcHNldWRvLWNsaXBib2FyZCB3aWxsIGhhdmUgYmVlbiBkaXNhYmxlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2xpcGJvYXJkLmlzRGlzYWJsZWQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmb2N1c2VkRWxlbWVudCA9IGVsZW1lbnQuZWRpdG9yLmZvY3VzZWRFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIWZvY3VzZWRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBzZXVkbyBjbGlwYm9hcmQgaGFuZGxpbmcgZm9yIGJyb3dzZXJzIG5vdCBhbGxvd2luZyByZWFsIGNsaXBib2FyZCBvcGVyYXRpb25zLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5jdHJsS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGUud2hpY2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjc6IC8vIENcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2VkRWxlbWVudC5jb3B5KGNsaXBib2FyZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg4OiAvLyBYXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNlZEVsZW1lbnQuY3V0KGNsaXBib2FyZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg2OiAvLyBWXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNlZEVsZW1lbnQucGFzdGUoY2xpcGJvYXJkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlLmN0cmxLZXkgJiYgIWUuc2hpZnRLZXkgJiYgIWUuYWx0S2V5ICYmIGUud2hpY2ggPT0gNDYpIHsgLy8gRGVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRlbGV0ZShlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWUuY3RybEtleSAmJiAhZS5zaGlmdEtleSAmJiAhZS5hbHRLZXkgJiYgKGUud2hpY2ggPT0gMzIgfHwgZS53aGljaCA9PSAyNykpIHsgLy8gU3BhY2Ugb3IgRXNjXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnQuZmluZChcIi5sYXlvdXQtcGFuZWwtYWN0aW9uLXByb3BlcnRpZXNcIikuZmlyc3QoKS5jbGljaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC50eXBlID09IFwiQ29udGVudFwiKSB7IC8vIFRoaXMgaXMgYSBjb250ZW50IGVsZW1lbnQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlLmN0cmxLZXkgJiYgIWUuc2hpZnRLZXkgJiYgIWUuYWx0S2V5ICYmIGUud2hpY2ggPT0gMTMpIHsgLy8gRW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnQuZmluZChcIi5sYXlvdXQtcGFuZWwtYWN0aW9uLWVkaXRcIikuZmlyc3QoKS5jbGljaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIWVsZW1lbnQuY2hpbGRyZW4pIHsgLy8gVGhpcyBpcyBhIGNvbnRhaW5lci5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUuY3RybEtleSAmJiAhZS5zaGlmdEtleSAmJiBlLmFsdEtleSAmJiBlLndoaWNoID09IDQwKSB7IC8vIEFsdCtEb3duXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA+IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmNoaWxkcmVuWzBdLnNldElzRm9jdXNlZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC50eXBlID09IFwiQ29sdW1uXCIpIHsgLy8gVGhpcyBpcyBhIGNvbHVtbi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbm5lY3RBZGphY2VudCA9ICFlLmN0cmxLZXk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLndoaWNoID09IDM3KSB7IC8vIExlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmFsdEtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmV4cGFuZExlZnQoY29ubmVjdEFkamFjZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLnNoaWZ0S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuY29udHJhY3RSaWdodChjb25uZWN0QWRqYWNlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZS53aGljaCA9PSAzOSkgeyAvLyBSaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuYWx0S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuY29udHJhY3RMZWZ0KGNvbm5lY3RBZGphY2VudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5zaGlmdEtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmV4cGFuZFJpZ2h0KGNvbm5lY3RBZGphY2VudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhZWxlbWVudC5wYXJlbnQpIHsgLy8gVGhpcyBpcyBhIGNoaWxkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmFsdEtleSAmJiBlLndoaWNoID09IDM4KSB7IC8vIEFsdCtVcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnBhcmVudC5zZXRJc0ZvY3VzZWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQucGFyZW50LnR5cGUgPT0gXCJSb3dcIikgeyAvLyBQYXJlbnQgaXMgYSBob3Jpem9udGFsIGNvbnRhaW5lci5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlLmN0cmxLZXkgJiYgIWUuc2hpZnRLZXkgJiYgIWUuYWx0S2V5ICYmIGUud2hpY2ggPT0gMzcpIHsgLy8gTGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5wYXJlbnQubW92ZUZvY3VzUHJldkNoaWxkKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWUuY3RybEtleSAmJiAhZS5zaGlmdEtleSAmJiAhZS5hbHRLZXkgJiYgZS53aGljaCA9PSAzOSkgeyAvLyBSaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5wYXJlbnQubW92ZUZvY3VzTmV4dENoaWxkKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZS5jdHJsS2V5ICYmICFlLnNoaWZ0S2V5ICYmICFlLmFsdEtleSAmJiBlLndoaWNoID09IDM3KSB7IC8vIEN0cmwrTGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5tb3ZlVXAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0Rm9jdXMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZS5jdHJsS2V5ICYmICFlLnNoaWZ0S2V5ICYmICFlLmFsdEtleSAmJiBlLndoaWNoID09IDM5KSB7IC8vIEN0cmwrUmlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQubW92ZURvd24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeyAvLyBQYXJlbnQgaXMgYSB2ZXJ0aWNhbCBjb250YWluZXIuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZS5jdHJsS2V5ICYmICFlLnNoaWZ0S2V5ICYmICFlLmFsdEtleSAmJiBlLndoaWNoID09IDM4KSB7IC8vIFVwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnBhcmVudC5tb3ZlRm9jdXNQcmV2Q2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghZS5jdHJsS2V5ICYmICFlLnNoaWZ0S2V5ICYmICFlLmFsdEtleSAmJiBlLndoaWNoID09IDQwKSB7IC8vIERvd25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQucGFyZW50Lm1vdmVGb2N1c05leHRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGUuY3RybEtleSAmJiAhZS5zaGlmdEtleSAmJiAhZS5hbHRLZXkgJiYgZS53aGljaCA9PSAzOCkgeyAvLyBDdHJsK1VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50Lm1vdmVVcCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRGb2N1cyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChlLmN0cmxLZXkgJiYgIWUuc2hpZnRLZXkgJiYgIWUuYWx0S2V5ICYmIGUud2hpY2ggPT0gNDApIHsgLy8gQ3RybCtEb3duXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50Lm1vdmVEb3duKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhbmRsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS4kYXBwbHkoKTsgLy8gRXZlbnQgaXMgbm90IHRyaWdnZXJlZCBieSBBbmd1bGFyIGRpcmVjdGl2ZSBidXQgcmF3IGV2ZW50IGhhbmRsZXIgb24gZWxlbWVudC5cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSEFDSzogV29ya2Fyb3VuZCBiZWNhdXNlIG9mIGhvdyBBbmd1bGFyIHRyZWF0cyB0aGUgRE9NIHdoZW4gZWxlbWVudHMgYXJlIHNoaWZ0ZWQgYXJvdW5kIC0gaW5wdXQgZm9jdXMgaXMgc29tZXRpbWVzIGxvc3QuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzZXRGb2N1cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLiRhcHBseShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmVkaXRvci5mb2N1c2VkRWxlbWVudC5zZXRJc0ZvY3VzZWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmVsZW1lbnQuc2V0SXNGb2N1c2VkRXZlbnRIYW5kbGVycy5wdXNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRlbGVtZW50LnBhcmVudCgpLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5kZWxldGUgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5kZWxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBjb25maWd1cmVGb3JDb250YWluZXI6IGZ1bmN0aW9uICgkc2NvcGUsICRlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlbGVtZW50ID0gJHNjb3BlLmVsZW1lbnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUuaXNSZWNlaXZpbmcgPSBmYWxzZTsgLy8gVHJ1ZSB3aGVuIGNvbnRhaW5lciBpcyByZWNlaXZpbmcgYW4gZXh0ZXJuYWwgZWxlbWVudCB2aWEgZHJhZy9kcm9wLlxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ2V0U2hvd0NoaWxkcmVuUGxhY2Vob2xkZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHNjb3BlLmVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID09PSAwICYmICEkc2NvcGUuZWxlbWVudC5nZXRJc0Ryb3BUYXJnZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc29ydGFibGVPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBcIm1vdmVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5OiAxNTAsXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZWxlbWVudC5nZXRJc1NlYWxlZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U6IDUsXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2hhbmRsZTogZWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPCAyID8gXCIuaW1hZ2luYXJ5LWNsYXNzXCIgOiBmYWxzZSwgLy8gRm9yIHNvbWUgcmVhc29uIGRvZXNuJ3QgZ2V0IHJlLWV2YWx1YXRlZCBhZnRlciBhZGRpbmcgbW9yZSBjaGlsZHJlbi5cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbiAoZSwgdWkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJGFwcGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zZXRJc0Ryb3BUYXJnZXQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZWRpdG9yLmlzRHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1ha2UgdGhlIGRyb3AgdGFyZ2V0IHBsYWNlaG9sZGVyIGFzIGhpZ2ggYXMgdGhlIGl0ZW0gYmVpbmcgZHJhZ2dlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aS5wbGFjZWhvbGRlci5oZWlnaHQodWkuaXRlbS5oZWlnaHQoKSAtIDQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpLnBsYWNlaG9sZGVyLmNzcyhcIm1pbi1oZWlnaHRcIiwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcDogZnVuY3Rpb24gKGUsIHVpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLiRhcHBseShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZWRpdG9yLmlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zZXRJc0Ryb3BUYXJnZXQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXI6IGZ1bmN0aW9uIChlLCB1aSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIXVpLnNlbmRlciAmJiAhIXVpLnNlbmRlclswXS5pc1Rvb2xib3gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhdWkuc2VuZGVyWzBdLmRyb3BUYXJnZXRUaW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dC5jYW5jZWwodWkuc2VuZGVyWzBdLmRyb3BUYXJnZXRUaW1lb3V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpLnNlbmRlclswXS5kcm9wVGFyZ2V0VGltZW91dCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PSBcIlJvd1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgd2FzIGEgcHJldmlvdXMgZHJvcCB0YXJnZXQgYW5kIGl0IHdhcyBhIHJvdywgcm9sbCBiYWNrIGFueSBwZW5kaW5nIGNvbHVtbiBhZGRzIHRvIGl0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcmV2aW91c0Ryb3BUYXJnZXQgPSBlbGVtZW50LmVkaXRvci5kcm9wVGFyZ2V0RWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFwcmV2aW91c0Ryb3BUYXJnZXQgJiYgcHJldmlvdXNEcm9wVGFyZ2V0LnR5cGUgPT0gXCJSb3dcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNEcm9wVGFyZ2V0LnJvbGxiYWNrQWRkQ29sdW1uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnNldElzRHJvcFRhcmdldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aS5zZW5kZXJbMF0uZHJvcFRhcmdldFRpbWVvdXQgPSAkdGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC50eXBlID09IFwiUm93XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVjZWl2ZWRDb2x1bW4gPSB1aS5pdGVtLnNvcnRhYmxlLm1vZGVsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWNlaXZlZENvbHVtbldpZHRoID0gTWF0aC5mbG9vcigxMiAvIChlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCArIDEpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlZENvbHVtbi53aWR0aCA9IHJlY2VpdmVkQ29sdW1uV2lkdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWRDb2x1bW4ub2Zmc2V0ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmJlZ2luQWRkQ29sdW1uKHJlY2VpdmVkQ29sdW1uV2lkdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1ha2UgdGhlIGRyb3AgdGFyZ2V0IHBsYWNlaG9sZGVyIHRoZSBjb3JyZWN0IHdpZHRoIGFuZCBhcyBoaWdoIGFzIHRoZSBoaWdoZXN0IGV4aXN0aW5nIGNvbHVtbiBpbiB0aGUgcm93LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtYXhIZWlnaHQgPSBfLm1heChfKCRlbGVtZW50LmZpbmQoXCI+IC5sYXlvdXQtY2hpbGRyZW4gPiAubGF5b3V0LWNvbHVtbjpub3QoLnVpLXNvcnRhYmxlLXBsYWNlaG9sZGVyKVwiKSkubWFwKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKGUpLmhlaWdodCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDw9IDEyOyBpKyspXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpLnBsYWNlaG9sZGVyLnJlbW92ZUNsYXNzKFwiY29sLXhzLVwiICsgaSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWkucGxhY2Vob2xkZXIuYWRkQ2xhc3MoXCJjb2wteHMtXCIgKyByZWNlaXZlZENvbHVtbi53aWR0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1heEhlaWdodCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWkucGxhY2Vob2xkZXIuaGVpZ2h0KG1heEhlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpLnBsYWNlaG9sZGVyLmNzcyhcIm1pbi1oZWlnaHRcIiwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aS5wbGFjZWhvbGRlci5oZWlnaHQoMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpLnBsYWNlaG9sZGVyLmNzcyhcIm1pbi1oZWlnaHRcIiwgXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zZXRJc0Ryb3BUYXJnZXQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDE1MCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmU6IGZ1bmN0aW9uIChlLCB1aSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIXVpLnNlbmRlciAmJiAhIXVpLnNlbmRlclswXS5pc1Rvb2xib3gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLiRhcHBseShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVjZWl2ZWRFbGVtZW50ID0gdWkuaXRlbS5zb3J0YWJsZS5tb2RlbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIXJlY2VpdmVkRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT0gXCJSb3dcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5jb21taXRBZGRDb2x1bW4oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTaG91bGQgaWRlYWxseSBjYWxsIExheW91dEVkaXRvci5Db250YWluZXIuYWRkQ2hpbGQoKSBpbnN0ZWFkLCBidXQgc2luY2UgdGhpcyBoYW5kbGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgcnVuICpiZWZvcmUqIHRoZSB1aS1zb3J0YWJsZSBkaXJlY3RpdmUncyBoYW5kbGVyLCBpZiB3ZSB0cnkgdG8gYWRkIHRoZSBjaGlsZCB0byB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcnJheSB0aGF0IGhhbmRsZXIgd2lsbCBnZXQgYW4gZXhjZXB0aW9uIHdoZW4gdHJ5aW5nIHRvIGRvIHRoZSBzYW1lLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJlY2F1c2Ugb2YgdGhpcywgd2UgbmVlZCB0byBpbnZva2UgXCJzZXRQYXJlbnRcIiBzbyB0aGF0IHNwZWNpZmljIGNvbnRhaW5lciB0eXBlcyBjYW4gcGVyZm9ybSBlbGVtZW50IHNwZWZpY2ljIGluaXRpYWxpemF0aW9uLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVkRWxlbWVudC5zZXRFZGl0b3IoZWxlbWVudC5lZGl0b3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVkRWxlbWVudC5zZXRQYXJlbnQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhcmVjZWl2ZWRFbGVtZW50Lmhhc0VkaXRvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJHJvb3QuZWRpdEVsZW1lbnQocmVjZWl2ZWRFbGVtZW50KS50aGVuKGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWRFbGVtZW50LmRhdGEgPSBhcmdzLmVsZW1lbnQuZGF0YTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWNlaXZlZEVsZW1lbnQuc2V0SHRtbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWRFbGVtZW50LnNldEh0bWwoYXJncy5lbGVtZW50Lmh0bWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIWFyZ3MuY2FuY2VsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlZEVsZW1lbnQuZGVsZXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlZEVsZW1lbnQuc2V0SXNGb2N1c2VkKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUuaXNSZWNlaXZpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnNldElzRHJvcFRhcmdldChmYWxzZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUuaXNSZWNlaXZpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnNldElzRHJvcFRhcmdldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhcmVjZWl2ZWRFbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlZEVsZW1lbnQuc2V0SXNGb2N1c2VkKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5jbGljayA9IGZ1bmN0aW9uIChjaGlsZCwgZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGlsZC5lZGl0b3IuaXNEcmFnZ2luZylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC5zZXRJc0ZvY3VzZWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdldENsYXNzZXMgPSBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBbXCJsYXlvdXQtZWxlbWVudFwiXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhY2hpbGQuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChcImxheW91dC1jb250YWluZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLmdldElzU2VhbGVkKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFwibGF5b3V0LWNvbnRhaW5lci1zZWFsZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFwibGF5b3V0LVwiICsgY2hpbGQudHlwZS50b0xvd2VyQ2FzZSgpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhY2hpbGQuZHJvcFRhcmdldENsYXNzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNoaWxkLmRyb3BUYXJnZXRDbGFzcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IE1vdmUgdGhlc2UgdG8gZWl0aGVyIHRoZSBDb2x1bW4gZGlyZWN0aXZlIG9yIHRoZSBDb2x1bW4gbW9kZWwgY2xhc3MuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQudHlwZSA9PSBcIlJvd1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goXCJyb3dcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGlsZC5jYW5BZGRDb2x1bW4oKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goXCJsYXlvdXQtcm93LWZ1bGxcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQudHlwZSA9PSBcIkNvbHVtblwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goXCJjb2wteHMtXCIgKyBjaGlsZC53aWR0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goXCJjb2wteHMtb2Zmc2V0LVwiICsgY2hpbGQub2Zmc2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC50eXBlID09IFwiQ29udGVudFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFwibGF5b3V0LWNvbnRlbnQtXCIgKyBjaGlsZC5jb250ZW50VHlwZUNsYXNzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLmdldElzQWN0aXZlKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goXCJsYXlvdXQtZWxlbWVudC1hY3RpdmVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQuZ2V0SXNGb2N1c2VkKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goXCJsYXlvdXQtZWxlbWVudC1mb2N1c2VkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLmdldElzU2VsZWN0ZWQoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChcImxheW91dC1lbGVtZW50LXNlbGVjdGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLmdldElzRHJvcFRhcmdldCgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFwibGF5b3V0LWVsZW1lbnQtZHJvcHRhcmdldFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC5pc1RlbXBsYXRlZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChcImxheW91dC1lbGVtZW50LXRlbXBsYXRlZFwiKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgXSk7IiwiYW5ndWxhclxuICAgIC5tb2R1bGUoXCJMYXlvdXRFZGl0b3JcIilcbiAgICAuZGlyZWN0aXZlKFwib3JjTGF5b3V0RWRpdG9yXCIsIFtcImVudmlyb25tZW50XCIsXG4gICAgICAgIGZ1bmN0aW9uIChlbnZpcm9ubWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByZXN0cmljdDogXCJFXCIsXG4gICAgICAgICAgICAgICAgc2NvcGU6IHt9LFxuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6IFtcIiRzY29wZVwiLCBcIiRlbGVtZW50XCIsIFwiJGF0dHJzXCIsIFwiJGNvbXBpbGVcIiwgXCJjbGlwYm9hcmRcIixcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCRzY29wZSwgJGVsZW1lbnQsICRhdHRycywgJGNvbXBpbGUsIGNsaXBib2FyZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhJGF0dHJzLm1vZGVsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5lbGVtZW50ID0gZXZhbCgkYXR0cnMubW9kZWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSAnbW9kZWwnIGF0dHJpYnV0ZSBtdXN0IGV2YWx1YXRlIHRvIGEgTGF5b3V0RWRpdG9yLkVkaXRvciBvYmplY3QuXCIpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY2xpY2sgPSBmdW5jdGlvbiAoY2FudmFzLCBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjYW52YXMuZWRpdG9yLmlzRHJhZ2dpbmcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5zZXRJc0ZvY3VzZWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdldENsYXNzZXMgPSBmdW5jdGlvbiAoY2FudmFzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFtcImxheW91dC1lbGVtZW50XCIsIFwibGF5b3V0LWNvbnRhaW5lclwiLCBcImxheW91dC1jYW52YXNcIl07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzLmdldElzQWN0aXZlKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFwibGF5b3V0LWVsZW1lbnQtYWN0aXZlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW52YXMuZ2V0SXNGb2N1c2VkKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFwibGF5b3V0LWVsZW1lbnQtZm9jdXNlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzLmdldElzU2VsZWN0ZWQoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goXCJsYXlvdXQtZWxlbWVudC1zZWxlY3RlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzLmdldElzRHJvcFRhcmdldCgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChcImxheW91dC1lbGVtZW50LWRyb3B0YXJnZXRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbnZhcy5pc1RlbXBsYXRlZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goXCJsYXlvdXQtZWxlbWVudC10ZW1wbGF0ZWRcIik7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQW4gdW5mb3J0dW5hdGUgc2lkZS1lZmZlY3Qgb2YgdGhlIG5leHQgaGFjayBvbiBsaW5lIDU0IGlzIHRoYXQgdGhlIGNyZWF0ZWQgZWxlbWVudHMgYXJlbid0IGFkZGVkIHRvIHRoZSBET00geWV0LCBzbyB3ZSBjYW4ndCB1c2UgaXQgdG8gZ2V0IHRvIHRoZSBwYXJlbnQgXCIubGF5b3V0LWRlc2lnZXJcIiBlbGVtZW50LlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gV29yayBhcm91bmQ6IGFjY2VzcyB0aGF0IGVsZW1lbnQgZGlyZWN0bHkgKHdoaWNoIGVmZWN0aXZlbHkgdHVybnMgbXVsdGlwbGUgbGF5b3V0IGVkaXRvcnMgb24gYSBzaW5nbGUgcGFnZSBpbXBvc3NpYmxlKS4gXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAvL3ZhciBsYXlvdXREZXNpZ25lckhvc3QgPSAkZWxlbWVudC5jbG9zZXN0KFwiLmxheW91dC1kZXNpZ25lclwiKS5kYXRhKFwibGF5b3V0LWRlc2lnbmVyLWhvc3RcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGF5b3V0RGVzaWduZXJIb3N0ID0gJChcIi5sYXlvdXQtZGVzaWduZXJcIikuZGF0YShcImxheW91dC1kZXNpZ25lci1ob3N0XCIpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJHJvb3QubGF5b3V0RGVzaWduZXJIb3N0ID0gbGF5b3V0RGVzaWduZXJIb3N0O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXREZXNpZ25lckhvc3QuZWxlbWVudC5vbihcInJlcGxhY2VjYW52YXNcIiwgZnVuY3Rpb24gKGUsIGFyZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZWRpdG9yID0gJHNjb3BlLmVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNhbnZhc0RhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGFyZ3MuY2FudmFzLmRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWxJZDogYXJncy5jYW52YXMuaHRtbElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sQ2xhc3M6IGFyZ3MuY2FudmFzLmh0bWxDbGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbFN0eWxlOiBhcmdzLmNhbnZhcy5odG1sU3R5bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVGVtcGxhdGVkOiBhcmdzLmNhbnZhcy5pc1RlbXBsYXRlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IGFyZ3MuY2FudmFzLmNoaWxkcmVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhBQ0s6IEluc3RlYWQgb2Ygc2ltcGx5IHVwZGF0aW5nIHRoZSAkc2NvcGUuZWxlbWVudCB3aXRoIGEgbmV3IGluc3RhbmNlLCB3ZSBuZWVkIHRvIHJlcGxhY2UgdGhlIGVudGlyZSBvcmMtbGF5b3V0LWVkaXRvciBtYXJrdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbiBvcmRlciBmb3IgYW5ndWxhciB0byByZWJpbmQgc3RhcnRpbmcgd2l0aCB0aGUgQ2FudmFzIGVsZW1lbnQuIE90aGVyd2lzZSwgZm9yIHNvbWUgcmVhc29uLCBpdCB3aWxsIHJlYmluZCBzdGFydGluZyB3aXRoIHRoZSBmaXJzdCBjaGlsZCBvZiBDYW52YXMuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWW91IGNhbiBzZWUgdGhpcyBoYXBwZW5pbmcgd2hlbiBzZXR0aW5nIGEgYnJlYWtwb2ludCBpbiBTY29wZUNvbmZpZ3VyYXRvciB3aGVyZSBjb250YWluZXJzIGFyZSBpbml0aWFsaXplZCB3aXRoIGRyYWcgJiBkcm9wOiBvbiBwYWdlIGxvYWQsIHRoZSBmaXJzdCBlbGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgYSBDYW52YXMgKGdvb2QpLCBidXQgYWZ0ZXIgaGF2aW5nIHNlbGVjdGVkIGFub3RoZXIgdGVtcGxhdGUsIHRoZSBmaXJzdCBlbGVtZW50IGlzICh0eXBpY2FsbHkpIGEgR3JpZCAoYmFkKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTaW1wbHkgcmVjb21waWxpbmcgdGhlIG9yYy1sYXlvdXQtZWRpdG9yIGRpcmVjdGl2ZSB3aWxsIGNhdXNlIHRoZSBlbnRpcmUgdGhpbmcgdG8gYmUgZ2VuZXJhdGVkLCB3aGljaCB3b3JrcyBqdXN0IGZpbmUgYXMgd2VsbCAoZXZlbiB0aG91Z2ggbm90IGlzIG5pY2UgYXMgc2ltcGx5IGxldmVyYWdpbmcgbW9kZWwgYmluZGluZykuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0RGVzaWduZXJIb3N0LmVkaXRvciA9IHdpbmRvdy5sYXlvdXRFZGl0b3IgPSBuZXcgTGF5b3V0RWRpdG9yLkVkaXRvcihlZGl0b3IuY29uZmlnLCBjYW52YXNEYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGVtcGxhdGUgPSBcIjxvcmMtbGF5b3V0LWVkaXRvclwiICsgXCIgbW9kZWw9J3dpbmRvdy5sYXlvdXRFZGl0b3InIC8+XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGh0bWwgPSAkY29tcGlsZSh0ZW1wbGF0ZSkoJHNjb3BlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiLmxheW91dC1lZGl0b3ItaG9sZGVyXCIpLmh0bWwoaHRtbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLiRyb290LmVkaXRFbGVtZW50ID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaG9zdCA9ICRzY29wZS4kcm9vdC5sYXlvdXREZXNpZ25lckhvc3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhvc3QuZWRpdEVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJHJvb3QuYWRkRWxlbWVudCA9IGZ1bmN0aW9uIChjb250ZW50VHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBob3N0ID0gJHNjb3BlLiRyb290LmxheW91dERlc2lnbmVySG9zdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaG9zdC5hZGRFbGVtZW50KGNvbnRlbnRUeXBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50b2dnbGVJbmxpbmVFZGl0aW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJHNjb3BlLmVsZW1lbnQuaW5saW5lRWRpdGluZ0lzQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5lbGVtZW50LmlubGluZUVkaXRpbmdJc0FjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRlbGVtZW50LmZpbmQoXCIubGF5b3V0LXRvb2xiYXItY29udGFpbmVyXCIpLnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNlbGVjdG9yID0gXCIjbGF5b3V0LWVkaXRvci1cIiArICRzY29wZS4kaWQgKyBcIiAubGF5b3V0LWh0bWwgLmxheW91dC1jb250ZW50LW1hcmt1cFtkYXRhLXRlbXBsYXRlZD1mYWxzZV1cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZpcnN0Q29udGVudEVkaXRvcklkID0gJChzZWxlY3RvcikuZmlyc3QoKS5hdHRyKFwiaWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbnltY2UuaW5pdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvcjogc2VsZWN0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVtZTogXCJtb2Rlcm5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtYTogXCJodG1sNVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2luczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWR2bGlzdCBhdXRvbGluayBsaXN0cyBsaW5rIGltYWdlIGNoYXJtYXAgcHJpbnQgcHJldmlldyBociBhbmNob3IgcGFnZWJyZWFrXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJzZWFyY2hyZXBsYWNlIHdvcmRjb3VudCB2aXN1YWxibG9ja3MgdmlzdWFsY2hhcnMgY29kZSBmdWxsc2NyZWVuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnNlcnRkYXRldGltZSBtZWRpYSBub25icmVha2luZyB0YWJsZSBjb250ZXh0bWVudSBkaXJlY3Rpb25hbGl0eVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZW1vdGljb25zIHRlbXBsYXRlIHBhc3RlIHRleHRjb2xvciBjb2xvcnBpY2tlciB0ZXh0cGF0dGVyblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZnVsbHNjcmVlbiBhdXRvcmVzaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYmFyOiBcInVuZG8gcmVkbyBjdXQgY29weSBwYXN0ZSB8IGJvbGQgaXRhbGljIHwgYnVsbGlzdCBudW1saXN0IG91dGRlbnQgaW5kZW50IGZvcm1hdHNlbGVjdCB8IGFsaWdubGVmdCBhbGlnbmNlbnRlciBhbGlnbnJpZ2h0IGFsaWduanVzdGlmeSBsdHIgcnRsIHwgbGluayB1bmxpbmsgY2hhcm1hcCB8IGNvZGUgZnVsbHNjcmVlbiBjbG9zZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydF91cmxzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2VsZW1lbnRzOiBcIipbKl1cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNob3VsZG4ndCBiZSBuZWVkZWQgZHVlIHRvIHRoZSB2YWxpZF9lbGVtZW50cyBzZXR0aW5nLCBidXQgVGlueU1DRSB3b3VsZCBzdHJpcCBzY3JpcHQuc3JjIHdpdGhvdXQgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbmRlZF92YWxpZF9lbGVtZW50czogXCJzY3JpcHRbdHlwZXxkZWZlcnxzcmN8bGFuZ3VhZ2VdXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNiYXI6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpbjogXCJvcmNoYXJkbGlnaHRncmF5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhlZF90b29sYmFyX2NvbnRhaW5lcjogXCIjbGF5b3V0LWVkaXRvci1cIiArICRzY29wZS4kaWQgKyBcIiAubGF5b3V0LXRvb2xiYXItY29udGFpbmVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0X2luc3RhbmNlX2NhbGxiYWNrOiBmdW5jdGlvbiAoZWRpdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkaXRvci5pZCA9PSBmaXJzdENvbnRlbnRFZGl0b3JJZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlueW1jZS5leGVjQ29tbWFuZChcIm1jZUZvY3VzXCIsIGZhbHNlLCBlZGl0b3IuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbnltY2UucmVtb3ZlKFwiI2xheW91dC1lZGl0b3ItXCIgKyAkc2NvcGUuJGlkICsgXCIgLmxheW91dC1jb250ZW50LW1hcmt1cFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnQuZmluZChcIi5sYXlvdXQtdG9vbGJhci1jb250YWluZXJcIikuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZWxlbWVudC5pbmxpbmVFZGl0aW5nSXNBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5vbihcImN1dCBjb3B5IHBhc3RlXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHBzZXVkbyBjbGlwYm9hcmQgd2FzIGFscmVhZHkgaW52b2tlZCAod2hpY2ggaGFwcGVucyBvbiB0aGUgZmlyc3QgY2xpcGJvYXJkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3BlcmF0aW9uIGFmdGVyIHBhZ2UgbG9hZCBldmVuIGlmIG5hdGl2ZSBjbGlwYm9hcmQgc3VwcG9ydCBleGlzdHMpIHRoZW4gc2l0IHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbmUgb3BlcmF0aW9uIG91dCwgYnV0IG1ha2Ugc3VyZSB3aGF0ZXZlciBpcyBvbiB0aGUgcHNldWRvIGNsaXBib2FyZCBnZXRzIG1pZ3JhdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gdGhlIG5hdGl2ZSBjbGlwYm9hcmQgZm9yIHN1YnNlcXVlbnQgb3BlcmF0aW9ucy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2xpcGJvYXJkLndhc0ludm9rZWQoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUub3JpZ2luYWxFdmVudC5jbGlwYm9hcmREYXRhLnNldERhdGEoXCJ0ZXh0L3BsYWluXCIsIGNsaXBib2FyZC5nZXREYXRhKFwidGV4dC9wbGFpblwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5vcmlnaW5hbEV2ZW50LmNsaXBib2FyZERhdGEuc2V0RGF0YShcInRleHQvanNvblwiLCBjbGlwYm9hcmQuZ2V0RGF0YShcInRleHQvanNvblwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZvY3VzZWRFbGVtZW50ID0gJHNjb3BlLmVsZW1lbnQuZm9jdXNlZEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIWZvY3VzZWRFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS4kYXBwbHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlLnR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY29weVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNlZEVsZW1lbnQuY29weShlLm9yaWdpbmFsRXZlbnQuY2xpcGJvYXJkRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImN1dFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNlZEVsZW1lbnQuY3V0KGUub3JpZ2luYWxFdmVudC5jbGlwYm9hcmREYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwicGFzdGVcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzZWRFbGVtZW50LnBhc3RlKGUub3JpZ2luYWxFdmVudC5jbGlwYm9hcmREYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSEFDSzogV29ya2Fyb3VuZCBiZWNhdXNlIG9mIGhvdyBBbmd1bGFyIHRyZWF0cyB0aGUgRE9NIHdoZW4gZWxlbWVudHMgYXJlIHNoaWZ0ZWQgYXJvdW5kIC0gaW5wdXQgZm9jdXMgaXMgc29tZXRpbWVzIGxvc3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJGFwcGx5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISEkc2NvcGUuZWxlbWVudC5mb2N1c2VkRWxlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5lbGVtZW50LmZvY3VzZWRFbGVtZW50LnNldElzRm9jdXNlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDEwMCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOYXRpdmUgY2xpcGJvYXJkIHN1cHBvcnQgb2J2aW91c2x5IGV4aXN0cywgc28gZGlzYWJsZSB0aGUgcGV1ZG8gY2xpcGJvYXJkIGZyb20gbm93IG9uLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXBib2FyZC5kaXNhYmxlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogZW52aXJvbm1lbnQudGVtcGxhdGVVcmwoXCJFZGl0b3JcIiksXG4gICAgICAgICAgICAgICAgcmVwbGFjZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTm8gY2xpY2tzIHNob3VsZCBwcm9wYWdhdGUgZnJvbSB0aGUgVGlueU1DRSB0b29sYmFycy5cbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5maW5kKFwiLmxheW91dC10b29sYmFyLWNvbnRhaW5lclwiKS5jbGljayhmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIEludGVyY2VwdCBtb3VzZWRvd24gb24gZWRpdG9yIHdoaWxlIGluIGlubGluZSBlZGl0aW5nIG1vZGUgdG8gXG4gICAgICAgICAgICAgICAgICAgIC8vIHByZXZlbnQgY3VycmVudCBlZGl0b3IgZnJvbSBsb3NpbmcgZm9jdXMuXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQubW91c2Vkb3duKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZWxlbWVudC5pbmxpbmVFZGl0aW5nSXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLy8gVW5mb2N1cyBhbmQgdW5zZWxlY3QgZXZlcnl0aGluZyBvbiBjbGljayBvdXRzaWRlIG9mIGNhbnZhcy5cbiAgICAgICAgICAgICAgICAgICAgJCh3aW5kb3cpLmNsaWNrKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBFeGNlcHQgd2hlbiBpbiBpbmxpbmUgZWRpdGluZyBtb2RlLlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzY29wZS5lbGVtZW50LmlubGluZUVkaXRpbmdJc0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLiRhcHBseShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmVsZW1lbnQuYWN0aXZlRWxlbWVudCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmVsZW1lbnQuZm9jdXNlZEVsZW1lbnQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgXSk7IiwiYW5ndWxhclxuICAgIC5tb2R1bGUoXCJMYXlvdXRFZGl0b3JcIilcbiAgICAuZGlyZWN0aXZlKFwib3JjTGF5b3V0Q2FudmFzXCIsIFtcInNjb3BlQ29uZmlndXJhdG9yXCIsIFwiZW52aXJvbm1lbnRcIixcbiAgICAgICAgZnVuY3Rpb24gKHNjb3BlQ29uZmlndXJhdG9yLCBlbnZpcm9ubWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByZXN0cmljdDogXCJFXCIsXG4gICAgICAgICAgICAgICAgc2NvcGU6IHsgZWxlbWVudDogXCI9XCIgfSxcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyOiBbXCIkc2NvcGVcIiwgXCIkZWxlbWVudFwiLCBcIiRhdHRyc1wiLFxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoJHNjb3BlLCAkZWxlbWVudCwgJGF0dHJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZUNvbmZpZ3VyYXRvci5jb25maWd1cmVGb3JFbGVtZW50KCRzY29wZSwgJGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGVDb25maWd1cmF0b3IuY29uZmlndXJlRm9yQ29udGFpbmVyKCRzY29wZSwgJGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNvcnRhYmxlT3B0aW9uc1tcImF4aXNcIl0gPSBcInlcIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6IGVudmlyb25tZW50LnRlbXBsYXRlVXJsKFwiQ2FudmFzXCIpLFxuICAgICAgICAgICAgICAgIHJlcGxhY2U6IHRydWVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICBdKTsiLCJhbmd1bGFyXG4gICAgLm1vZHVsZShcIkxheW91dEVkaXRvclwiKVxuICAgIC5kaXJlY3RpdmUoXCJvcmNMYXlvdXRDaGlsZFwiLCBbXCIkY29tcGlsZVwiLFxuICAgICAgICBmdW5jdGlvbiAoJGNvbXBpbGUpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcmVzdHJpY3Q6IFwiRVwiLFxuICAgICAgICAgICAgICAgIHNjb3BlOiB7IGVsZW1lbnQ6IFwiPVwiIH0sXG4gICAgICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0ZW1wbGF0ZSA9IFwiPG9yYy1sYXlvdXQtXCIgKyBzY29wZS5lbGVtZW50LnR5cGUudG9Mb3dlckNhc2UoKSArIFwiIGVsZW1lbnQ9J2VsZW1lbnQnIC8+XCI7XG4gICAgICAgICAgICAgICAgICAgIHZhciBodG1sID0gJGNvbXBpbGUodGVtcGxhdGUpKHNjb3BlKTtcbiAgICAgICAgICAgICAgICAgICAgJChlbGVtZW50KS5yZXBsYWNlV2l0aChodG1sKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgXSk7IiwiYW5ndWxhclxuICAgIC5tb2R1bGUoXCJMYXlvdXRFZGl0b3JcIilcbiAgICAuZGlyZWN0aXZlKFwib3JjTGF5b3V0Q29sdW1uXCIsIFtcIiRjb21waWxlXCIsIFwic2NvcGVDb25maWd1cmF0b3JcIiwgXCJlbnZpcm9ubWVudFwiLFxuICAgICAgICBmdW5jdGlvbiAoJGNvbXBpbGUsIHNjb3BlQ29uZmlndXJhdG9yLCBlbnZpcm9ubWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByZXN0cmljdDogXCJFXCIsXG4gICAgICAgICAgICAgICAgc2NvcGU6IHsgZWxlbWVudDogXCI9XCIgfSxcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyOiBbXCIkc2NvcGVcIiwgXCIkZWxlbWVudFwiLFxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoJHNjb3BlLCAkZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGVDb25maWd1cmF0b3IuY29uZmlndXJlRm9yRWxlbWVudCgkc2NvcGUsICRlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlQ29uZmlndXJhdG9yLmNvbmZpZ3VyZUZvckNvbnRhaW5lcigkc2NvcGUsICRlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zb3J0YWJsZU9wdGlvbnNbXCJheGlzXCJdID0gXCJ5XCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiBlbnZpcm9ubWVudC50ZW1wbGF0ZVVybChcIkNvbHVtblwiKSxcbiAgICAgICAgICAgICAgICByZXBsYWNlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbWVudCwgYXR0cnMpIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5maW5kKFwiLmxheW91dC1jb2x1bW4tcmVzaXplLWJhclwiKS5kcmFnZ2FibGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYXhpczogXCJ4XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwZXI6IFwiY2xvbmVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldmVydDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbiAoZSwgdWkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS4kYXBwbHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5lbGVtZW50LmVkaXRvci5pc1Jlc2l6aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBkcmFnOiBmdW5jdGlvbiAoZSwgdWkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29sdW1uRWxlbWVudCA9IGVsZW1lbnQucGFyZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbHVtblNpemUgPSBjb2x1bW5FbGVtZW50LndpZHRoKCkgLyBzY29wZS5lbGVtZW50LndpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb25uZWN0QWRqYWNlbnQgPSAhZS5jdHJsS2V5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkKGUudGFyZ2V0KS5oYXNDbGFzcyhcImxheW91dC1jb2x1bW4tcmVzaXplLWJhci1sZWZ0XCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkZWx0YSA9IHVpLm9mZnNldC5sZWZ0IC0gY29sdW1uRWxlbWVudC5vZmZzZXQoKS5sZWZ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVsdGEgPCAtY29sdW1uU2l6ZSAmJiBzY29wZS5lbGVtZW50LmNhbkV4cGFuZExlZnQoY29ubmVjdEFkamFjZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuJGFwcGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5lbGVtZW50LmV4cGFuZExlZnQoY29ubmVjdEFkamFjZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRlbHRhID4gY29sdW1uU2l6ZSAmJiBzY29wZS5lbGVtZW50LmNhbkNvbnRyYWN0TGVmdChjb25uZWN0QWRqYWNlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS4kYXBwbHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmVsZW1lbnQuY29udHJhY3RMZWZ0KGNvbm5lY3RBZGphY2VudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkKGUudGFyZ2V0KS5oYXNDbGFzcyhcImxheW91dC1jb2x1bW4tcmVzaXplLWJhci1yaWdodFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGVsdGEgPSB1aS5vZmZzZXQubGVmdCAtIGNvbHVtbkVsZW1lbnQud2lkdGgoKSAtIGNvbHVtbkVsZW1lbnQub2Zmc2V0KCkubGVmdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlbHRhID4gY29sdW1uU2l6ZSAmJiBzY29wZS5lbGVtZW50LmNhbkV4cGFuZFJpZ2h0KGNvbm5lY3RBZGphY2VudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLiRhcHBseShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZWxlbWVudC5leHBhbmRSaWdodChjb25uZWN0QWRqYWNlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGVsdGEgPCAtY29sdW1uU2l6ZSAmJiBzY29wZS5lbGVtZW50LmNhbkNvbnRyYWN0UmlnaHQoY29ubmVjdEFkamFjZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuJGFwcGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5lbGVtZW50LmNvbnRyYWN0UmlnaHQoY29ubmVjdEFkamFjZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcDogZnVuY3Rpb24gKGUsIHVpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuJGFwcGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmVsZW1lbnQuZWRpdG9yLmlzUmVzaXppbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIF0pOyIsImFuZ3VsYXJcbiAgICAubW9kdWxlKFwiTGF5b3V0RWRpdG9yXCIpXG4gICAgLmRpcmVjdGl2ZShcIm9yY0xheW91dENvbnRlbnRcIiwgW1wiJHNjZVwiLCBcInNjb3BlQ29uZmlndXJhdG9yXCIsIFwiZW52aXJvbm1lbnRcIixcbiAgICAgICAgZnVuY3Rpb24gKCRzY2UsIHNjb3BlQ29uZmlndXJhdG9yLCBlbnZpcm9ubWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByZXN0cmljdDogXCJFXCIsXG4gICAgICAgICAgICAgICAgc2NvcGU6IHsgZWxlbWVudDogXCI9XCIgfSxcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyOiBbXCIkc2NvcGVcIiwgXCIkZWxlbWVudFwiLFxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoJHNjb3BlLCAkZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGVDb25maWd1cmF0b3IuY29uZmlndXJlRm9yRWxlbWVudCgkc2NvcGUsICRlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5lZGl0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS4kcm9vdC5lZGl0RWxlbWVudCgkc2NvcGUuZWxlbWVudCkudGhlbihmdW5jdGlvbiAoYXJncykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJGFwcGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmdzLmNhbmNlbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5lbGVtZW50LmRhdGEgPSBhcmdzLmVsZW1lbnQuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5lbGVtZW50LnNldEh0bWwoYXJncy5lbGVtZW50Lmh0bWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE92ZXJ3cml0ZSB0aGUgc2V0SHRtbCBmdW5jdGlvbiBzbyB0aGF0IHdlIGNhbiB1c2UgdGhlICRzY2Ugc2VydmljZSB0byB0cnVzdCB0aGUgaHRtbCAoYW5kIG5vdCBoYXZlIHRoZSBodG1sIGJpbmRpbmcgc3RyaXAgY2VydGFpbiB0YWdzKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5lbGVtZW50LnNldEh0bWwgPSBmdW5jdGlvbiAoaHRtbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5lbGVtZW50Lmh0bWwgPSBodG1sO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5lbGVtZW50Lmh0bWxVbnNhZmUgPSAkc2NlLnRydXN0QXNIdG1sKGh0bWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmVsZW1lbnQuc2V0SHRtbCgkc2NvcGUuZWxlbWVudC5odG1sKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6IGVudmlyb25tZW50LnRlbXBsYXRlVXJsKFwiQ29udGVudFwiKSxcbiAgICAgICAgICAgICAgICByZXBsYWNlOiB0cnVlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgXSk7IiwiYW5ndWxhclxuICAgIC5tb2R1bGUoXCJMYXlvdXRFZGl0b3JcIilcbiAgICAuZGlyZWN0aXZlKFwib3JjTGF5b3V0SHRtbFwiLCBbXCIkc2NlXCIsIFwic2NvcGVDb25maWd1cmF0b3JcIiwgXCJlbnZpcm9ubWVudFwiLFxuICAgICAgICBmdW5jdGlvbiAoJHNjZSwgc2NvcGVDb25maWd1cmF0b3IsIGVudmlyb25tZW50KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlc3RyaWN0OiBcIkVcIixcbiAgICAgICAgICAgICAgICBzY29wZTogeyBlbGVtZW50OiBcIj1cIiB9LFxuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6IFtcIiRzY29wZVwiLCBcIiRlbGVtZW50XCIsXG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgkc2NvcGUsICRlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZUNvbmZpZ3VyYXRvci5jb25maWd1cmVGb3JFbGVtZW50KCRzY29wZSwgJGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmVkaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLiRyb290LmVkaXRFbGVtZW50KCRzY29wZS5lbGVtZW50KS50aGVuKGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS4kYXBwbHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3MuY2FuY2VsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmVsZW1lbnQuZGF0YSA9IGFyZ3MuZWxlbWVudC5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmVsZW1lbnQuc2V0SHRtbChhcmdzLmVsZW1lbnQuaHRtbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS51cGRhdGVDb250ZW50ID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZWxlbWVudC5zZXRIdG1sKGUudGFyZ2V0LmlubmVySFRNTCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBPdmVyd3JpdGUgdGhlIHNldEh0bWwgZnVuY3Rpb24gc28gdGhhdCB3ZSBjYW4gdXNlIHRoZSAkc2NlIHNlcnZpY2UgdG8gdHJ1c3QgdGhlIGh0bWwgKGFuZCBub3QgaGF2ZSB0aGUgaHRtbCBiaW5kaW5nIHN0cmlwIGNlcnRhaW4gdGFncykuXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZWxlbWVudC5zZXRIdG1sID0gZnVuY3Rpb24gKGh0bWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZWxlbWVudC5odG1sID0gaHRtbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZWxlbWVudC5odG1sVW5zYWZlID0gJHNjZS50cnVzdEFzSHRtbChodG1sKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5lbGVtZW50LnNldEh0bWwoJHNjb3BlLmVsZW1lbnQuaHRtbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiBlbnZpcm9ubWVudC50ZW1wbGF0ZVVybChcIkh0bWxcIiksXG4gICAgICAgICAgICAgICAgcmVwbGFjZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTW91c2UgZG93biBldmVudHMgbXVzdCBub3QgYmUgaW50ZXJjZXB0ZWQgYnkgZHJhZyBhbmQgZHJvcCB3aGlsZSBpbmxpbmUgZWRpdGluZyBpcyBhY3RpdmUsXG4gICAgICAgICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBjbGlja3MgaW4gaW5saW5lIGVkaXRvcnMgd2lsbCBoYXZlIG5vIGVmZmVjdC5cbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5maW5kKFwiLmxheW91dC1jb250ZW50LW1hcmt1cFwiKS5tb3VzZWRvd24oZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5lbGVtZW50LmVkaXRvci5pbmxpbmVFZGl0aW5nSXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgXSk7IiwiYW5ndWxhclxuICAgIC5tb2R1bGUoXCJMYXlvdXRFZGl0b3JcIilcbiAgICAuZGlyZWN0aXZlKFwib3JjTGF5b3V0R3JpZFwiLCBbXCIkY29tcGlsZVwiLCBcInNjb3BlQ29uZmlndXJhdG9yXCIsIFwiZW52aXJvbm1lbnRcIixcbiAgICAgICAgZnVuY3Rpb24gKCRjb21waWxlLCBzY29wZUNvbmZpZ3VyYXRvciwgZW52aXJvbm1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcmVzdHJpY3Q6IFwiRVwiLFxuICAgICAgICAgICAgICAgIHNjb3BlOiB7IGVsZW1lbnQ6IFwiPVwiIH0sXG4gICAgICAgICAgICAgICAgY29udHJvbGxlcjogW1wiJHNjb3BlXCIsIFwiJGVsZW1lbnRcIixcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCRzY29wZSwgJGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlQ29uZmlndXJhdG9yLmNvbmZpZ3VyZUZvckVsZW1lbnQoJHNjb3BlLCAkZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZUNvbmZpZ3VyYXRvci5jb25maWd1cmVGb3JDb250YWluZXIoJHNjb3BlLCAkZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc29ydGFibGVPcHRpb25zW1wiYXhpc1wiXSA9IFwieVwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogZW52aXJvbm1lbnQudGVtcGxhdGVVcmwoXCJHcmlkXCIpLFxuICAgICAgICAgICAgICAgIHJlcGxhY2U6IHRydWVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICBdKTsiLCJhbmd1bGFyXG4gICAgLm1vZHVsZShcIkxheW91dEVkaXRvclwiKVxuICAgIC5kaXJlY3RpdmUoXCJvcmNMYXlvdXRSb3dcIiwgW1wiJGNvbXBpbGVcIiwgXCJzY29wZUNvbmZpZ3VyYXRvclwiLCBcImVudmlyb25tZW50XCIsXG4gICAgICAgIGZ1bmN0aW9uICgkY29tcGlsZSwgc2NvcGVDb25maWd1cmF0b3IsIGVudmlyb25tZW50KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlc3RyaWN0OiBcIkVcIixcbiAgICAgICAgICAgICAgICBzY29wZTogeyBlbGVtZW50OiBcIj1cIiB9LFxuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6IFtcIiRzY29wZVwiLCBcIiRlbGVtZW50XCIsXG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgkc2NvcGUsICRlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZUNvbmZpZ3VyYXRvci5jb25maWd1cmVGb3JFbGVtZW50KCRzY29wZSwgJGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGVDb25maWd1cmF0b3IuY29uZmlndXJlRm9yQ29udGFpbmVyKCRzY29wZSwgJGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNvcnRhYmxlT3B0aW9uc1tcImF4aXNcIl0gPSBcInhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zb3J0YWJsZU9wdGlvbnNbXCJ1aS1mbG9hdGluZ1wiXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiBlbnZpcm9ubWVudC50ZW1wbGF0ZVVybChcIlJvd1wiKSxcbiAgICAgICAgICAgICAgICByZXBsYWNlOiB0cnVlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgXSk7IiwiYW5ndWxhclxyXG4gICAgLm1vZHVsZShcIkxheW91dEVkaXRvclwiKVxyXG4gICAgLmRpcmVjdGl2ZShcIm9yY0xheW91dFBvcHVwXCIsIFtcclxuICAgICAgICBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICByZXN0cmljdDogXCJBXCIsXHJcbiAgICAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW1lbnQsIGF0dHJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvcHVwID0gJChlbGVtZW50KTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdHJpZ2dlciA9IHBvcHVwLmNsb3Nlc3QoXCIubGF5b3V0LXBvcHVwLXRyaWdnZXJcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBhcmVudEVsZW1lbnQgPSBwb3B1cC5jbG9zZXN0KFwiLmxheW91dC1lbGVtZW50XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIuY2xpY2soZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3B1cC50b2dnbGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvcHVwLmlzKFwiOnZpc2libGVcIikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVwLnBvc2l0aW9uKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteTogYXR0cnMub3JjTGF5b3V0UG9wdXBNeSB8fCBcImxlZnQgdG9wXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXQ6IGF0dHJzLm9yY0xheW91dFBvcHVwQXQgfHwgXCJsZWZ0IGJvdHRvbSs0cHhcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZjogdHJpZ2dlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3B1cC5maW5kKFwiaW5wdXRcIikuZmlyc3QoKS5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wdXAuY2xpY2soZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBwYXJlbnRFbGVtZW50LmNsaWNrKGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVwLmhpZGUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBwb3B1cC5rZXlkb3duKGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZS5jdHJsS2V5ICYmICFlLnNoaWZ0S2V5ICYmICFlLmFsdEtleSAmJiBlLndoaWNoID09IDI3KSAvLyBFc2NcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVwLmhpZGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBwb3B1cC5vbihcImN1dCBjb3B5IHBhc3RlXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBbGxvdyBjbGlwYm9hcmQgb3BlcmF0aW9ucyBpbiBwb3B1cCB3aXRob3V0IGludm9raW5nIGNsaXBib2FyZCBldmVudCBoYW5kbGVycyBvbiBwYXJlbnQgZWxlbWVudC5cbiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgXSk7IiwiYW5ndWxhclxyXG4gICAgLm1vZHVsZShcIkxheW91dEVkaXRvclwiKVxyXG4gICAgLmRpcmVjdGl2ZShcIm9yY0xheW91dFRvb2xib3hcIiwgW1wiJGNvbXBpbGVcIiwgXCJlbnZpcm9ubWVudFwiLFxyXG4gICAgICAgIGZ1bmN0aW9uICgkY29tcGlsZSwgZW52aXJvbm1lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHJlc3RyaWN0OiBcIkVcIixcclxuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6IFtcIiRzY29wZVwiLCBcIiRlbGVtZW50XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCRzY29wZSwgJGVsZW1lbnQpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNldEVsZW1lbnRzID0gZnVuY3Rpb24gKCkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5ncmlkRWxlbWVudHMgPSBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0RWRpdG9yLkdyaWQuZnJvbSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xib3hJY29uOiBcIlxcdWYwMGFcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJveExhYmVsOiBcIkdyaWRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJveERlc2NyaXB0aW9uOiBcIkVtcHR5IGdyaWQuXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yb3dFbGVtZW50cyA9IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRFZGl0b3IuUm93LmZyb20oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYm94SWNvbjogXCJcXHVmMGM5XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xib3hMYWJlbDogXCJSb3cgKDEgY29sdW1uKVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYm94RGVzY3JpcHRpb246IFwiUm93IHdpdGggMSBjb2x1bW4uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBMYXlvdXRFZGl0b3IuQ29sdW1uLnRpbWVzKDEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0RWRpdG9yLlJvdy5mcm9tKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJveEljb246IFwiXFx1ZjBjOVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYm94TGFiZWw6IFwiUm93ICgyIGNvbHVtbnMpXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xib3hEZXNjcmlwdGlvbjogXCJSb3cgd2l0aCAyIGNvbHVtbnMuXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBMYXlvdXRFZGl0b3IuQ29sdW1uLnRpbWVzKDIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0RWRpdG9yLlJvdy5mcm9tKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJveEljb246IFwiXFx1ZjBjOVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYm94TGFiZWw6IFwiUm93ICgzIGNvbHVtbnMpXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xib3hEZXNjcmlwdGlvbjogXCJSb3cgd2l0aCAzIGNvbHVtbnMuXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBMYXlvdXRFZGl0b3IuQ29sdW1uLnRpbWVzKDMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0RWRpdG9yLlJvdy5mcm9tKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJveEljb246IFwiXFx1ZjBjOVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYm94TGFiZWw6IFwiUm93ICg0IGNvbHVtbnMpXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xib3hEZXNjcmlwdGlvbjogXCJSb3cgd2l0aCA0IGNvbHVtbnMuXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBMYXlvdXRFZGl0b3IuQ29sdW1uLnRpbWVzKDQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0RWRpdG9yLlJvdy5mcm9tKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJveEljb246IFwiXFx1ZjBjOVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYm94TGFiZWw6IFwiUm93ICg2IGNvbHVtbnMpXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xib3hEZXNjcmlwdGlvbjogXCJSb3cgd2l0aCA2IGNvbHVtbnMuXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBMYXlvdXRFZGl0b3IuQ29sdW1uLnRpbWVzKDYpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0RWRpdG9yLlJvdy5mcm9tKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJveEljb246IFwiXFx1ZjBjOVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYm94TGFiZWw6IFwiUm93ICgxMiBjb2x1bW5zKVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYm94RGVzY3JpcHRpb246IFwiUm93IHdpdGggMTIgY29sdW1ucy5cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IExheW91dEVkaXRvci5Db2x1bW4udGltZXMoMTIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIExheW91dEVkaXRvci5Sb3cuZnJvbSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xib3hJY29uOiBcIlxcdWYwYzlcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJveExhYmVsOiBcIlJvdyAoZW1wdHkpXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xib3hEZXNjcmlwdGlvbjogXCJFbXB0eSByb3cuXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jb2x1bW5FbGVtZW50cyA9IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRFZGl0b3IuQ29sdW1uLmZyb20oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYm94SWNvbjogXCJcXHVmMGRiXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xib3hMYWJlbDogXCJDb2x1bW5cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJveERlc2NyaXB0aW9uOiBcIkVtcHR5IGNvbHVtbi5cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmNvbnRlbnRFbGVtZW50Q2F0ZWdvcmllcyA9IF8oJHNjb3BlLmVsZW1lbnQuY29uZmlnLmNhdGVnb3JpZXMpLm1hcChmdW5jdGlvbiAoY2F0ZWdvcnkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBjYXRlZ29yeS5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50czogXyhjYXRlZ29yeS5jb250ZW50VHlwZXMpLm1hcChmdW5jdGlvbiAoY29udGVudFR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0gY29udGVudFR5cGUudHlwZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmYWN0b3J5ID0gTGF5b3V0RWRpdG9yLmZhY3Rvcmllc1t0eXBlXSB8fCBMYXlvdXRFZGl0b3IuZmFjdG9yaWVzW1wiQ29udGVudFwiXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpdGVtID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVGVtcGxhdGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50VHlwZTogY29udGVudFR5cGUuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFR5cGVMYWJlbDogY29udGVudFR5cGUubGFiZWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFR5cGVDbGFzczogY29udGVudFR5cGUudHlwZUNsYXNzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzRWRpdG9yOiBjb250ZW50VHlwZS5oYXNFZGl0b3IsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbDogY29udGVudFR5cGUuaHRtbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZmFjdG9yeShpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQudG9vbGJveEljb24gPSBjb250ZW50VHlwZS5pY29uIHx8IFwiXFx1ZjFjOVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC50b29sYm94TGFiZWwgPSBjb250ZW50VHlwZS5sYWJlbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQudG9vbGJveERlc2NyaXB0aW9uID0gY29udGVudFR5cGUuZGVzY3JpcHRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc2V0RWxlbWVudHMoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nZXRTb3J0YWJsZU9wdGlvbnMgPSBmdW5jdGlvbiAodHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVkaXRvcklkID0gJGVsZW1lbnQuY2xvc2VzdChcIi5sYXlvdXQtZWRpdG9yXCIpLmF0dHIoXCJpZFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYXJlbnRDbGFzc2VzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBsYWNlaG9sZGVyQ2xhc3NlcztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmbG9hdGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJHcmlkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudENsYXNzZXMgPSBbXCIubGF5b3V0LWNhbnZhc1wiLCBcIi5sYXlvdXQtY29sdW1uXCIsIFwiLmxheW91dC1jb21tb24taG9sZGVyXCJdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlckNsYXNzZXMgPSBcImxheW91dC1lbGVtZW50IGxheW91dC1jb250YWluZXIgbGF5b3V0LWdyaWQgdWktc29ydGFibGUtcGxhY2Vob2xkZXJcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIlJvd1wiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRDbGFzc2VzID0gW1wiLmxheW91dC1ncmlkXCJdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlckNsYXNzZXMgPSBcImxheW91dC1lbGVtZW50IGxheW91dC1jb250YWluZXIgbGF5b3V0LXJvdyByb3cgdWktc29ydGFibGUtcGxhY2Vob2xkZXJcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIkNvbHVtblwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRDbGFzc2VzID0gW1wiLmxheW91dC1yb3c6bm90KC5sYXlvdXQtcm93LWZ1bGwpXCJdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlckNsYXNzZXMgPSBcImxheW91dC1lbGVtZW50IGxheW91dC1jb250YWluZXIgbGF5b3V0LWNvbHVtbiB1aS1zb3J0YWJsZS1wbGFjZWhvbGRlclwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdGluZyA9IHRydWU7IC8vIFRvIGVuc3VyZSBhIHNtb290aCBob3Jpem9udGFsLWxpc3QgcmVvcmRlcmluZy4gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXItdWkvdWktc29ydGFibGUjZmxvYXRpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIkNvbnRlbnRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Q2xhc3NlcyA9IFtcIi5sYXlvdXQtY2FudmFzXCIsIFwiLmxheW91dC1jb2x1bW5cIiwgXCIubGF5b3V0LWNvbW1vbi1ob2xkZXJcIl07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyQ2xhc3NlcyA9IFwibGF5b3V0LWVsZW1lbnQgbGF5b3V0LWNvbnRlbnQgdWktc29ydGFibGUtcGxhY2Vob2xkZXJcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IFwibW92ZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3RXaXRoOiBfKHBhcmVudENsYXNzZXMpLm1hcChmdW5jdGlvbiAoZSkgeyByZXR1cm4gXCIjXCIgKyBlZGl0b3JJZCArIFwiIFwiICsgZSArIFwiOm5vdCgubGF5b3V0LWNvbnRhaW5lci1zZWFsZWQpID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgPiAubGF5b3V0LWNoaWxkcmVuXCI7IH0pLmpvaW4oXCIsIFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXJDbGFzc2VzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidWktZmxvYXRpbmdcIjogZmxvYXRpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlOiBmdW5jdGlvbiAoZSwgdWkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS50YXJnZXQuaXNUb29sYm94ID0gdHJ1ZTsgLy8gV2lsbCBpbmRpY2F0ZSB0byBjb25uZWN0ZWQgc29ydGFibGVzIHRoYXQgZHJvcHBlZCBpdGVtcyB3ZXJlIHNlbnQgZnJvbSB0b29sYm94LlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uIChlLCB1aSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJGFwcGx5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5lbGVtZW50LmlzRHJhZ2dpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3A6IGZ1bmN0aW9uIChlLCB1aSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJGFwcGx5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5lbGVtZW50LmlzRHJhZ2dpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNldEVsZW1lbnRzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcjogZnVuY3Rpb24gKGUsIHVpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS4kYXBwbHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmVsZW1lbnQuY2FudmFzLnNldElzRHJvcFRhcmdldChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGF5b3V0SXNDb2xsYXBzZWRDb29raWVOYW1lID0gXCJsYXlvdXRUb29sYm94Q2F0ZWdvcnlfTGF5b3V0X0lzQ29sbGFwc2VkXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sYXlvdXRJc0NvbGxhcHNlZCA9ICQuY29va2llKGxheW91dElzQ29sbGFwc2VkQ29va2llTmFtZSkgPT09IFwidHJ1ZVwiO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRvZ2dsZUxheW91dElzQ29sbGFwc2VkID0gZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sYXlvdXRJc0NvbGxhcHNlZCA9ICEkc2NvcGUubGF5b3V0SXNDb2xsYXBzZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLmNvb2tpZShsYXlvdXRJc0NvbGxhcHNlZENvb2tpZU5hbWUsICRzY29wZS5sYXlvdXRJc0NvbGxhcHNlZCwgeyBleHBpcmVzOiAzNjUgfSk7IC8vIFJlbWVtYmVyIGNvbGxhcHNlZCBzdGF0ZSBmb3IgYSB5ZWFyLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6IGVudmlyb25tZW50LnRlbXBsYXRlVXJsKFwiVG9vbGJveFwiKSxcclxuICAgICAgICAgICAgICAgIHJlcGxhY2U6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdG9vbGJveCA9IGVsZW1lbnQuZmluZChcIi5sYXlvdXQtdG9vbGJveFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAkKHdpbmRvdykub24oXCJyZXNpemUgc2Nyb2xsXCIsIGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjYW52YXMgPSBlbGVtZW50LnBhcmVudCgpLmZpbmQoXCIubGF5b3V0LWNhbnZhc1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGNhbnZhcyBpcyB0YWxsZXIgdGhhbiB0aGUgdG9vbGJveCwgbWFrZSB0aGUgdG9vbGJveCBzdGlja3ktcG9zaXRpb25lZCB3aXRoaW4gdGhlIGVkaXRvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBoZWxwIHRoZSB1c2VyIGF2b2lkIGV4Y2Vzc2l2ZSB2ZXJ0aWNhbCBzY3JvbGxpbmcuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjYW52YXNJc1RhbGxlciA9ICEhY2FudmFzICYmIGNhbnZhcy5oZWlnaHQoKSA+IHRvb2xib3guaGVpZ2h0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB3aW5kb3dQb3MgPSAkKHdpbmRvdykuc2Nyb2xsVG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW52YXNJc1RhbGxlciAmJiB3aW5kb3dQb3MgPiBlbGVtZW50Lm9mZnNldCgpLnRvcCArIGVsZW1lbnQuaGVpZ2h0KCkgLSB0b29sYm94LmhlaWdodCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYm94LmFkZENsYXNzKFwic3RpY2t5LWJvdHRvbVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xib3gucmVtb3ZlQ2xhc3MoXCJzdGlja3ktdG9wXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNhbnZhc0lzVGFsbGVyICYmIHdpbmRvd1BvcyA+IGVsZW1lbnQub2Zmc2V0KCkudG9wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYm94LmFkZENsYXNzKFwic3RpY2t5LXRvcFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xib3gucmVtb3ZlQ2xhc3MoXCJzdGlja3ktYm90dG9tXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJveC5yZW1vdmVDbGFzcyhcInN0aWNreS10b3BcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYm94LnJlbW92ZUNsYXNzKFwic3RpY2t5LWJvdHRvbVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIF0pOyIsImFuZ3VsYXJcbiAgICAubW9kdWxlKFwiTGF5b3V0RWRpdG9yXCIpXG4gICAgLmRpcmVjdGl2ZShcIm9yY0xheW91dFRvb2xib3hHcm91cFwiLCBbXCIkY29tcGlsZVwiLCBcImVudmlyb25tZW50XCIsXG4gICAgICAgIGZ1bmN0aW9uICgkY29tcGlsZSwgZW52aXJvbm1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcmVzdHJpY3Q6IFwiRVwiLFxuICAgICAgICAgICAgICAgIHNjb3BlOiB7IGNhdGVnb3J5OiBcIj1cIiB9LFxuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6IFtcIiRzY29wZVwiLCBcIiRlbGVtZW50XCIsXG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgkc2NvcGUsICRlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXNDb2xsYXBzZWRDb29raWVOYW1lID0gXCJsYXlvdXRUb29sYm94Q2F0ZWdvcnlfXCIgKyAkc2NvcGUuY2F0ZWdvcnkubmFtZSArIFwiX0lzQ29sbGFwc2VkXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuaXNDb2xsYXBzZWQgPSAkLmNvb2tpZShpc0NvbGxhcHNlZENvb2tpZU5hbWUpID09PSBcInRydWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50b2dnbGVJc0NvbGxhcHNlZCA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmlzQ29sbGFwc2VkID0gISRzY29wZS5pc0NvbGxhcHNlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLmNvb2tpZShpc0NvbGxhcHNlZENvb2tpZU5hbWUsICRzY29wZS5pc0NvbGxhcHNlZCwgeyBleHBpcmVzOiAzNjUgfSk7IC8vIFJlbWVtYmVyIGNvbGxhcHNlZCBzdGF0ZSBmb3IgYSB5ZWFyLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6IGVudmlyb25tZW50LnRlbXBsYXRlVXJsKFwiVG9vbGJveEdyb3VwXCIpLFxuICAgICAgICAgICAgICAgIHJlcGxhY2U6IHRydWVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICBdKTsiXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1vZHVsZS5qcyIsIkNsaXBib2FyZC5qcyIsIlNjb3BlQ29uZmlndXJhdG9yLmpzIiwiRWRpdG9yLmpzIiwiQ2FudmFzLmpzIiwiQ2hpbGQuanMiLCJDb2x1bW4uanMiLCJDb250ZW50LmpzIiwiSHRtbC5qcyIsIkdyaWQuanMiLCJSb3cuanMiLCJQb3B1cC5qcyIsIlRvb2xib3guanMiLCJUb29sYm94R3JvdXAuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQzdDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQ2pVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FDM0xBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FDbEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQ2RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUNuRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FDbkNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQy9DQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQ2xCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FDbkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FDdkNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUNqTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IkxheW91dEVkaXRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbImFuZ3VsYXIubW9kdWxlKFwiTGF5b3V0RWRpdG9yXCIsIFtcIm5nU2FuaXRpemVcIiwgXCJuZ1Jlc291cmNlXCIsIFwidWkuc29ydGFibGVcIl0pOyIsInZhciBMYXlvdXRFZGl0b3I7XHJcbihmdW5jdGlvbihMYXlvdXRFZGl0b3IpIHtcclxuXHJcbiAgICB2YXIgQ2xpcGJvYXJkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICB0aGlzLl9jbGlwYm9hcmREYXRhID0ge307XHJcbiAgICAgICAgdGhpcy5faXNEaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX3dhc0ludm9rZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXREYXRhID0gZnVuY3Rpb24oY29udGVudFR5cGUsIGRhdGEpIHtcclxuICAgICAgICAgICAgc2VsZi5fY2xpcGJvYXJkRGF0YVtjb250ZW50VHlwZV0gPSBkYXRhO1xyXG4gICAgICAgICAgICBzZWxmLl93YXNJbnZva2VkID0gdHJ1ZTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuZ2V0RGF0YSA9IGZ1bmN0aW9uIChjb250ZW50VHlwZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gc2VsZi5fY2xpcGJvYXJkRGF0YVtjb250ZW50VHlwZV07XHJcbiAgICAgICAgICAgIHNlbGYuX3dhc0ludm9rZWQgPSB0cnVlO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgIHNlbGYuX2lzRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICBzZWxmLl93YXNJbnZva2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHNlbGYuX2NsaXBib2FyZERhdGEgPSB7fTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2lzRGlzYWJsZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMud2FzSW52b2tlZCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3dhc0ludm9rZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIExheW91dEVkaXRvci5DbGlwYm9hcmQgPSBuZXcgQ2xpcGJvYXJkKCk7XHJcblxyXG4gICAgYW5ndWxhclxyXG4gICAgICAgIC5tb2R1bGUoXCJMYXlvdXRFZGl0b3JcIilcclxuICAgICAgICAuZmFjdG9yeShcImNsaXBib2FyZFwiLCBbXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICBzZXREYXRhOiBMYXlvdXRFZGl0b3IuQ2xpcGJvYXJkLnNldERhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0RGF0YTogTGF5b3V0RWRpdG9yLkNsaXBib2FyZC5nZXREYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGU6IExheW91dEVkaXRvci5DbGlwYm9hcmQuZGlzYWJsZSxcclxuICAgICAgICAgICAgICAgICAgICBpc0Rpc2FibGVkOiBMYXlvdXRFZGl0b3IuQ2xpcGJvYXJkLmlzRGlzYWJsZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgd2FzSW52b2tlZDogTGF5b3V0RWRpdG9yLkNsaXBib2FyZC53YXNJbnZva2VkXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgXSk7XHJcbn0pKExheW91dEVkaXRvciB8fCAoTGF5b3V0RWRpdG9yID0ge30pKTsiLCJhbmd1bGFyXHJcbiAgICAubW9kdWxlKFwiTGF5b3V0RWRpdG9yXCIpXHJcbiAgICAuZmFjdG9yeShcInNjb3BlQ29uZmlndXJhdG9yXCIsIFtcIiR0aW1lb3V0XCIsIFwiY2xpcGJvYXJkXCIsXHJcbiAgICAgICAgZnVuY3Rpb24gKCR0aW1lb3V0LCBjbGlwYm9hcmQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25maWd1cmVGb3JFbGVtZW50OiBmdW5jdGlvbiAoJHNjb3BlLCAkZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnQuZmluZChcIi5sYXlvdXQtcGFuZWxcIikuY2xpY2soZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnQucGFyZW50KCkua2V5ZG93bihmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGFuZGxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzZXRGb2N1cyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbWVudCA9ICRzY29wZS5lbGVtZW50O1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5lZGl0b3IuaXNEcmFnZ2luZyB8fCBlbGVtZW50LmVkaXRvci5pbmxpbmVFZGl0aW5nSXNBY3RpdmUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBuYXRpdmUgY2xpcGJvYXJkIHN1cHBvcnQgZXhpc3RzLCB0aGUgcHNldWRvLWNsaXBib2FyZCB3aWxsIGhhdmUgYmVlbiBkaXNhYmxlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjbGlwYm9hcmQuaXNEaXNhYmxlZCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZm9jdXNlZEVsZW1lbnQgPSBlbGVtZW50LmVkaXRvci5mb2N1c2VkRWxlbWVudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIWZvY3VzZWRFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUHNldWRvIGNsaXBib2FyZCBoYW5kbGluZyBmb3IgYnJvd3NlcnMgbm90IGFsbG93aW5nIHJlYWwgY2xpcGJvYXJkIG9wZXJhdGlvbnMuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuY3RybEtleSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGUud2hpY2gpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2NzogLy8gQ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNlZEVsZW1lbnQuY29weShjbGlwYm9hcmQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODg6IC8vIFhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzZWRFbGVtZW50LmN1dChjbGlwYm9hcmQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODY6IC8vIFZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzZWRFbGVtZW50LnBhc3RlKGNsaXBib2FyZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlLmN0cmxLZXkgJiYgIWUuc2hpZnRLZXkgJiYgIWUuYWx0S2V5ICYmIGUud2hpY2ggPT0gNDYpIHsgLy8gRGVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGVsZXRlKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWUuY3RybEtleSAmJiAhZS5zaGlmdEtleSAmJiAhZS5hbHRLZXkgJiYgKGUud2hpY2ggPT0gMzIgfHwgZS53aGljaCA9PSAyNykpIHsgLy8gU3BhY2Ugb3IgRXNjXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZWxlbWVudC5maW5kKFwiLmxheW91dC1wYW5lbC1hY3Rpb24tcHJvcGVydGllc1wiKS5maXJzdCgpLmNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PSBcIkNvbnRlbnRcIikgeyAvLyBUaGlzIGlzIGEgY29udGVudCBlbGVtZW50LlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlLmN0cmxLZXkgJiYgIWUuc2hpZnRLZXkgJiYgIWUuYWx0S2V5ICYmIGUud2hpY2ggPT0gMTMpIHsgLy8gRW50ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZWxlbWVudC5maW5kKFwiLmxheW91dC1wYW5lbC1hY3Rpb24tZWRpdFwiKS5maXJzdCgpLmNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIWVsZW1lbnQuY2hpbGRyZW4pIHsgLy8gVGhpcyBpcyBhIGNvbnRhaW5lci5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZS5jdHJsS2V5ICYmICFlLnNoaWZ0S2V5ICYmIGUuYWx0S2V5ICYmIGUud2hpY2ggPT0gNDApIHsgLy8gQWx0K0Rvd25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmNoaWxkcmVuWzBdLnNldElzRm9jdXNlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT0gXCJDb2x1bW5cIikgeyAvLyBUaGlzIGlzIGEgY29sdW1uLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb25uZWN0QWRqYWNlbnQgPSAhZS5jdHJsS2V5O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLndoaWNoID09IDM3KSB7IC8vIExlZnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuYWx0S2V5KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5leHBhbmRMZWZ0KGNvbm5lY3RBZGphY2VudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLnNoaWZ0S2V5KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5jb250cmFjdFJpZ2h0KGNvbm5lY3RBZGphY2VudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZS53aGljaCA9PSAzOSkgeyAvLyBSaWdodFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5hbHRLZXkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmNvbnRyYWN0TGVmdChjb25uZWN0QWRqYWNlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5zaGlmdEtleSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZXhwYW5kUmlnaHQoY29ubmVjdEFkamFjZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFlbGVtZW50LnBhcmVudCkgeyAvLyBUaGlzIGlzIGEgY2hpbGQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5hbHRLZXkgJiYgZS53aGljaCA9PSAzOCkgeyAvLyBBbHQrVXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnBhcmVudC5zZXRJc0ZvY3VzZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5wYXJlbnQudHlwZSA9PSBcIlJvd1wiKSB7IC8vIFBhcmVudCBpcyBhIGhvcml6b250YWwgY29udGFpbmVyLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZS5jdHJsS2V5ICYmICFlLnNoaWZ0S2V5ICYmICFlLmFsdEtleSAmJiBlLndoaWNoID09IDM3KSB7IC8vIExlZnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5wYXJlbnQubW92ZUZvY3VzUHJldkNoaWxkKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWUuY3RybEtleSAmJiAhZS5zaGlmdEtleSAmJiAhZS5hbHRLZXkgJiYgZS53aGljaCA9PSAzOSkgeyAvLyBSaWdodFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnBhcmVudC5tb3ZlRm9jdXNOZXh0Q2hpbGQoZWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChlLmN0cmxLZXkgJiYgIWUuc2hpZnRLZXkgJiYgIWUuYWx0S2V5ICYmIGUud2hpY2ggPT0gMzcpIHsgLy8gQ3RybCtMZWZ0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQubW92ZVVwKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0Rm9jdXMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZS5jdHJsS2V5ICYmICFlLnNoaWZ0S2V5ICYmICFlLmFsdEtleSAmJiBlLndoaWNoID09IDM5KSB7IC8vIEN0cmwrUmlnaHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5tb3ZlRG93bigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsgLy8gUGFyZW50IGlzIGEgdmVydGljYWwgY29udGFpbmVyLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZS5jdHJsS2V5ICYmICFlLnNoaWZ0S2V5ICYmICFlLmFsdEtleSAmJiBlLndoaWNoID09IDM4KSB7IC8vIFVwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQucGFyZW50Lm1vdmVGb2N1c1ByZXZDaGlsZChlbGVtZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFlLmN0cmxLZXkgJiYgIWUuc2hpZnRLZXkgJiYgIWUuYWx0S2V5ICYmIGUud2hpY2ggPT0gNDApIHsgLy8gRG93blxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnBhcmVudC5tb3ZlRm9jdXNOZXh0Q2hpbGQoZWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChlLmN0cmxLZXkgJiYgIWUuc2hpZnRLZXkgJiYgIWUuYWx0S2V5ICYmIGUud2hpY2ggPT0gMzgpIHsgLy8gQ3RybCtVcFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50Lm1vdmVVcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldEZvY3VzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGUuY3RybEtleSAmJiAhZS5zaGlmdEtleSAmJiAhZS5hbHRLZXkgJiYgZS53aGljaCA9PSA0MCkgeyAvLyBDdHJsK0Rvd25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5tb3ZlRG93bigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYW5kbGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJGFwcGx5KCk7IC8vIEV2ZW50IGlzIG5vdCB0cmlnZ2VyZWQgYnkgQW5ndWxhciBkaXJlY3RpdmUgYnV0IHJhdyBldmVudCBoYW5kbGVyIG9uIGVsZW1lbnQuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBIQUNLOiBXb3JrYXJvdW5kIGJlY2F1c2Ugb2YgaG93IEFuZ3VsYXIgdHJlYXRzIHRoZSBET00gd2hlbiBlbGVtZW50cyBhcmUgc2hpZnRlZCBhcm91bmQgLSBpbnB1dCBmb2N1cyBpcyBzb21ldGltZXMgbG9zdC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc2V0Rm9jdXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJGFwcGx5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5lZGl0b3IuZm9jdXNlZEVsZW1lbnQuc2V0SXNGb2N1c2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5lbGVtZW50LnNldElzRm9jdXNlZEV2ZW50SGFuZGxlcnMucHVzaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRlbGVtZW50LnBhcmVudCgpLmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5kZWxldGUgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmRlbGV0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgY29uZmlndXJlRm9yQ29udGFpbmVyOiBmdW5jdGlvbiAoJHNjb3BlLCAkZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBlbGVtZW50ID0gJHNjb3BlLmVsZW1lbnQ7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLmlzUmVjZWl2aW5nID0gZmFsc2U7IC8vIFRydWUgd2hlbiBjb250YWluZXIgaXMgcmVjZWl2aW5nIGFuIGV4dGVybmFsIGVsZW1lbnQgdmlhIGRyYWcvZHJvcC5cclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ2V0U2hvd0NoaWxkcmVuUGxhY2Vob2xkZXIgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkc2NvcGUuZWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPT09IDAgJiYgISRzY29wZS5lbGVtZW50LmdldElzRHJvcFRhcmdldCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5zb3J0YWJsZU9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogXCJtb3ZlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5OiAxNTAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBlbGVtZW50LmdldElzU2VhbGVkKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlOiA1LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2hhbmRsZTogZWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPCAyID8gXCIuaW1hZ2luYXJ5LWNsYXNzXCIgOiBmYWxzZSwgLy8gRm9yIHNvbWUgcmVhc29uIGRvZXNuJ3QgZ2V0IHJlLWV2YWx1YXRlZCBhZnRlciBhZGRpbmcgbW9yZSBjaGlsZHJlbi5cclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uIChlLCB1aSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLiRhcHBseShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zZXRJc0Ryb3BUYXJnZXQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5lZGl0b3IuaXNEcmFnZ2luZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1ha2UgdGhlIGRyb3AgdGFyZ2V0IHBsYWNlaG9sZGVyIGFzIGhpZ2ggYXMgdGhlIGl0ZW0gYmVpbmcgZHJhZ2dlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpLnBsYWNlaG9sZGVyLmhlaWdodCh1aS5pdGVtLmhlaWdodCgpIC0gNCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aS5wbGFjZWhvbGRlci5jc3MoXCJtaW4taGVpZ2h0XCIsIDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9wOiBmdW5jdGlvbiAoZSwgdWkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS4kYXBwbHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZWRpdG9yLmlzRHJhZ2dpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnNldElzRHJvcFRhcmdldChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcjogZnVuY3Rpb24gKGUsIHVpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISF1aS5zZW5kZXIgJiYgISF1aS5zZW5kZXJbMF0uaXNUb29sYm94KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhdWkuc2VuZGVyWzBdLmRyb3BUYXJnZXRUaW1lb3V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0LmNhbmNlbCh1aS5zZW5kZXJbMF0uZHJvcFRhcmdldFRpbWVvdXQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aS5zZW5kZXJbMF0uZHJvcFRhcmdldFRpbWVvdXQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT0gXCJSb3dcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgd2FzIGEgcHJldmlvdXMgZHJvcCB0YXJnZXQgYW5kIGl0IHdhcyBhIHJvdywgcm9sbCBiYWNrIGFueSBwZW5kaW5nIGNvbHVtbiBhZGRzIHRvIGl0LlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHByZXZpb3VzRHJvcFRhcmdldCA9IGVsZW1lbnQuZWRpdG9yLmRyb3BUYXJnZXRFbGVtZW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhcHJldmlvdXNEcm9wVGFyZ2V0ICYmIHByZXZpb3VzRHJvcFRhcmdldC50eXBlID09IFwiUm93XCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNEcm9wVGFyZ2V0LnJvbGxiYWNrQWRkQ29sdW1uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zZXRJc0Ryb3BUYXJnZXQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpLnNlbmRlclswXS5kcm9wVGFyZ2V0VGltZW91dCA9ICR0aW1lb3V0KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PSBcIlJvd1wiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVjZWl2ZWRDb2x1bW4gPSB1aS5pdGVtLnNvcnRhYmxlLm1vZGVsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlY2VpdmVkQ29sdW1uV2lkdGggPSBNYXRoLmZsb29yKDEyIC8gKGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoICsgMSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWRDb2x1bW4ud2lkdGggPSByZWNlaXZlZENvbHVtbldpZHRoO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWRDb2x1bW4ub2Zmc2V0ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYmVnaW5BZGRDb2x1bW4ocmVjZWl2ZWRDb2x1bW5XaWR0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNYWtlIHRoZSBkcm9wIHRhcmdldCBwbGFjZWhvbGRlciB0aGUgY29ycmVjdCB3aWR0aCBhbmQgYXMgaGlnaCBhcyB0aGUgaGlnaGVzdCBleGlzdGluZyBjb2x1bW4gaW4gdGhlIHJvdy5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtYXhIZWlnaHQgPSBfLm1heChfKCRlbGVtZW50LmZpbmQoXCI+IC5sYXlvdXQtY2hpbGRyZW4gPiAubGF5b3V0LWNvbHVtbjpub3QoLnVpLXNvcnRhYmxlLXBsYWNlaG9sZGVyKVwiKSkubWFwKGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoZSkuaGVpZ2h0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDw9IDEyOyBpKyspXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWkucGxhY2Vob2xkZXIucmVtb3ZlQ2xhc3MoXCJjb2wteHMtXCIgKyBpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpLnBsYWNlaG9sZGVyLmFkZENsYXNzKFwiY29sLXhzLVwiICsgcmVjZWl2ZWRDb2x1bW4ud2lkdGgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1heEhlaWdodCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aS5wbGFjZWhvbGRlci5oZWlnaHQobWF4SGVpZ2h0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aS5wbGFjZWhvbGRlci5jc3MoXCJtaW4taGVpZ2h0XCIsIDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWkucGxhY2Vob2xkZXIuaGVpZ2h0KDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpLnBsYWNlaG9sZGVyLmNzcyhcIm1pbi1oZWlnaHRcIiwgXCJcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zZXRJc0Ryb3BUYXJnZXQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTUwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZTogZnVuY3Rpb24gKGUsIHVpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISF1aS5zZW5kZXIgJiYgISF1aS5zZW5kZXJbMF0uaXNUb29sYm94KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLiRhcHBseShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWNlaXZlZEVsZW1lbnQgPSB1aS5pdGVtLnNvcnRhYmxlLm1vZGVsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFyZWNlaXZlZEVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT0gXCJSb3dcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmNvbW1pdEFkZENvbHVtbigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2hvdWxkIGlkZWFsbHkgY2FsbCBMYXlvdXRFZGl0b3IuQ29udGFpbmVyLmFkZENoaWxkKCkgaW5zdGVhZCwgYnV0IHNpbmNlIHRoaXMgaGFuZGxlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgcnVuICpiZWZvcmUqIHRoZSB1aS1zb3J0YWJsZSBkaXJlY3RpdmUncyBoYW5kbGVyLCBpZiB3ZSB0cnkgdG8gYWRkIHRoZSBjaGlsZCB0byB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFycmF5IHRoYXQgaGFuZGxlciB3aWxsIGdldCBhbiBleGNlcHRpb24gd2hlbiB0cnlpbmcgdG8gZG8gdGhlIHNhbWUuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCZWNhdXNlIG9mIHRoaXMsIHdlIG5lZWQgdG8gaW52b2tlIFwic2V0UGFyZW50XCIgc28gdGhhdCBzcGVjaWZpYyBjb250YWluZXIgdHlwZXMgY2FuIHBlcmZvcm0gZWxlbWVudCBzcGVmaWNpYyBpbml0aWFsaXphdGlvbi5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVkRWxlbWVudC5zZXRFZGl0b3IoZWxlbWVudC5lZGl0b3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWRFbGVtZW50LnNldFBhcmVudChlbGVtZW50KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFyZWNlaXZlZEVsZW1lbnQuaGFzRWRpdG9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLiRyb290LmVkaXRFbGVtZW50KHJlY2VpdmVkRWxlbWVudCkudGhlbihmdW5jdGlvbiAoYXJncykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWFyZ3MuY2FuY2VsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlZEVsZW1lbnQuZGF0YSA9IGFyZ3MuZWxlbWVudC5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWRFbGVtZW50LmFwcGx5RWxlbWVudEVkaXRvck1vZGVsKGFyZ3MuZWxlbWVudEVkaXRvck1vZGVsKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFyZWNlaXZlZEVsZW1lbnQuc2V0SHRtbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlZEVsZW1lbnQuc2V0SHRtbChhcmdzLmVsZW1lbnQuaHRtbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhYXJncy5jYW5jZWwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWRFbGVtZW50LmRlbGV0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVkRWxlbWVudC5zZXRJc0ZvY3VzZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLmlzUmVjZWl2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnNldElzRHJvcFRhcmdldChmYWxzZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLmlzUmVjZWl2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnNldElzRHJvcFRhcmdldChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFyZWNlaXZlZEVsZW1lbnQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWRFbGVtZW50LnNldElzRm9jdXNlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5jbGljayA9IGZ1bmN0aW9uIChjaGlsZCwgZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNoaWxkLmVkaXRvci5pc0RyYWdnaW5nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQuc2V0SXNGb2N1c2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdldENsYXNzZXMgPSBmdW5jdGlvbiAoY2hpbGQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFtcImxheW91dC1lbGVtZW50XCJdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhY2hpbGQuY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFwibGF5b3V0LWNvbnRhaW5lclwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC5nZXRJc1NlYWxlZCgpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFwibGF5b3V0LWNvbnRhaW5lci1zZWFsZWRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFwibGF5b3V0LVwiICsgY2hpbGQudHlwZS50b0xvd2VyQ2FzZSgpKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIWNoaWxkLmRyb3BUYXJnZXRDbGFzcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNoaWxkLmRyb3BUYXJnZXRDbGFzcyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBNb3ZlIHRoZXNlIHRvIGVpdGhlciB0aGUgQ29sdW1uIGRpcmVjdGl2ZSBvciB0aGUgQ29sdW1uIG1vZGVsIGNsYXNzLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQudHlwZSA9PSBcIlJvd1wiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChcInJvd1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2hpbGQuY2FuQWRkQ29sdW1uKCkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goXCJsYXlvdXQtcm93LWZ1bGxcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT0gXCJDb2x1bW5cIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goXCJjb2wteHMtXCIgKyBjaGlsZC53aWR0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChcImNvbC14cy1vZmZzZXQtXCIgKyBjaGlsZC5vZmZzZXQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC50eXBlID09IFwiQ29udGVudFwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goXCJsYXlvdXQtY29udGVudC1cIiArIGNoaWxkLmNvbnRlbnRUeXBlQ2xhc3MpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLmdldElzQWN0aXZlKCkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChcImxheW91dC1lbGVtZW50LWFjdGl2ZVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLmdldElzRm9jdXNlZCgpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goXCJsYXlvdXQtZWxlbWVudC1mb2N1c2VkXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQuZ2V0SXNTZWxlY3RlZCgpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goXCJsYXlvdXQtZWxlbWVudC1zZWxlY3RlZFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLmdldElzRHJvcFRhcmdldCgpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goXCJsYXlvdXQtZWxlbWVudC1kcm9wdGFyZ2V0XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQuaXNUZW1wbGF0ZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChcImxheW91dC1lbGVtZW50LXRlbXBsYXRlZFwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICBdKTsiLCJhbmd1bGFyXHJcbiAgICAubW9kdWxlKFwiTGF5b3V0RWRpdG9yXCIpXHJcbiAgICAuZGlyZWN0aXZlKFwib3JjTGF5b3V0RWRpdG9yXCIsIFtcImVudmlyb25tZW50XCIsXHJcbiAgICAgICAgZnVuY3Rpb24gKGVudmlyb25tZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICByZXN0cmljdDogXCJFXCIsXHJcbiAgICAgICAgICAgICAgICBzY29wZToge30sXHJcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyOiBbXCIkc2NvcGVcIiwgXCIkZWxlbWVudFwiLCBcIiRhdHRyc1wiLCBcIiRjb21waWxlXCIsIFwiY2xpcGJvYXJkXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCRzY29wZSwgJGVsZW1lbnQsICRhdHRycywgJGNvbXBpbGUsIGNsaXBib2FyZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoISEkYXR0cnMubW9kZWwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZWxlbWVudCA9IGV2YWwoJGF0dHJzLm1vZGVsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhlICdtb2RlbCcgYXR0cmlidXRlIG11c3QgZXZhbHVhdGUgdG8gYSBMYXlvdXRFZGl0b3IuRWRpdG9yIG9iamVjdC5cIik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY2xpY2sgPSBmdW5jdGlvbiAoY2FudmFzLCBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNhbnZhcy5lZGl0b3IuaXNEcmFnZ2luZylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuc2V0SXNGb2N1c2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdldENsYXNzZXMgPSBmdW5jdGlvbiAoY2FudmFzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gW1wibGF5b3V0LWVsZW1lbnRcIiwgXCJsYXlvdXQtY29udGFpbmVyXCIsIFwibGF5b3V0LWNhbnZhc1wiXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzLmdldElzQWN0aXZlKCkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goXCJsYXlvdXQtZWxlbWVudC1hY3RpdmVcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzLmdldElzRm9jdXNlZCgpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFwibGF5b3V0LWVsZW1lbnQtZm9jdXNlZFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW52YXMuZ2V0SXNTZWxlY3RlZCgpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFwibGF5b3V0LWVsZW1lbnQtc2VsZWN0ZWRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzLmdldElzRHJvcFRhcmdldCgpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFwibGF5b3V0LWVsZW1lbnQtZHJvcHRhcmdldFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW52YXMuaXNUZW1wbGF0ZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goXCJsYXlvdXQtZWxlbWVudC10ZW1wbGF0ZWRcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFuIHVuZm9ydHVuYXRlIHNpZGUtZWZmZWN0IG9mIHRoZSBuZXh0IGhhY2sgb24gbGluZSA1NCBpcyB0aGF0IHRoZSBjcmVhdGVkIGVsZW1lbnRzIGFyZW4ndCBhZGRlZCB0byB0aGUgRE9NIHlldCwgc28gd2UgY2FuJ3QgdXNlIGl0IHRvIGdldCB0byB0aGUgcGFyZW50IFwiLmxheW91dC1kZXNpZ2VyXCIgZWxlbWVudC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gV29yayBhcm91bmQ6IGFjY2VzcyB0aGF0IGVsZW1lbnQgZGlyZWN0bHkgKHdoaWNoIGVmZWN0aXZlbHkgdHVybnMgbXVsdGlwbGUgbGF5b3V0IGVkaXRvcnMgb24gYSBzaW5nbGUgcGFnZSBpbXBvc3NpYmxlKS4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIC8vdmFyIGxheW91dERlc2lnbmVySG9zdCA9ICRlbGVtZW50LmNsb3Nlc3QoXCIubGF5b3V0LWRlc2lnbmVyXCIpLmRhdGEoXCJsYXlvdXQtZGVzaWduZXItaG9zdFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxheW91dERlc2lnbmVySG9zdCA9ICQoXCIubGF5b3V0LWRlc2lnbmVyXCIpLmRhdGEoXCJsYXlvdXQtZGVzaWduZXItaG9zdFwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS4kcm9vdC5sYXlvdXREZXNpZ25lckhvc3QgPSBsYXlvdXREZXNpZ25lckhvc3Q7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXREZXNpZ25lckhvc3QuZWxlbWVudC5vbihcInJlcGxhY2VjYW52YXNcIiwgZnVuY3Rpb24gKGUsIGFyZ3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlZGl0b3IgPSAkc2NvcGUuZWxlbWVudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjYW52YXNEYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGFyZ3MuY2FudmFzLmRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbElkOiBhcmdzLmNhbnZhcy5odG1sSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbENsYXNzOiBhcmdzLmNhbnZhcy5odG1sQ2xhc3MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbFN0eWxlOiBhcmdzLmNhbnZhcy5odG1sU3R5bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNUZW1wbGF0ZWQ6IGFyZ3MuY2FudmFzLmlzVGVtcGxhdGVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBhcmdzLmNhbnZhcy5jaGlsZHJlblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBIQUNLOiBJbnN0ZWFkIG9mIHNpbXBseSB1cGRhdGluZyB0aGUgJHNjb3BlLmVsZW1lbnQgd2l0aCBhIG5ldyBpbnN0YW5jZSwgd2UgbmVlZCB0byByZXBsYWNlIHRoZSBlbnRpcmUgb3JjLWxheW91dC1lZGl0b3IgbWFya3VwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbiBvcmRlciBmb3IgYW5ndWxhciB0byByZWJpbmQgc3RhcnRpbmcgd2l0aCB0aGUgQ2FudmFzIGVsZW1lbnQuIE90aGVyd2lzZSwgZm9yIHNvbWUgcmVhc29uLCBpdCB3aWxsIHJlYmluZCBzdGFydGluZyB3aXRoIHRoZSBmaXJzdCBjaGlsZCBvZiBDYW52YXMuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBZb3UgY2FuIHNlZSB0aGlzIGhhcHBlbmluZyB3aGVuIHNldHRpbmcgYSBicmVha3BvaW50IGluIFNjb3BlQ29uZmlndXJhdG9yIHdoZXJlIGNvbnRhaW5lcnMgYXJlIGluaXRpYWxpemVkIHdpdGggZHJhZyAmIGRyb3A6IG9uIHBhZ2UgbG9hZCwgdGhlIGZpcnN0IGVsZW1lbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGEgQ2FudmFzIChnb29kKSwgYnV0IGFmdGVyIGhhdmluZyBzZWxlY3RlZCBhbm90aGVyIHRlbXBsYXRlLCB0aGUgZmlyc3QgZWxlbWVudCBpcyAodHlwaWNhbGx5KSBhIEdyaWQgKGJhZCkuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTaW1wbHkgcmVjb21waWxpbmcgdGhlIG9yYy1sYXlvdXQtZWRpdG9yIGRpcmVjdGl2ZSB3aWxsIGNhdXNlIHRoZSBlbnRpcmUgdGhpbmcgdG8gYmUgZ2VuZXJhdGVkLCB3aGljaCB3b3JrcyBqdXN0IGZpbmUgYXMgd2VsbCAoZXZlbiB0aG91Z2ggbm90IGlzIG5pY2UgYXMgc2ltcGx5IGxldmVyYWdpbmcgbW9kZWwgYmluZGluZykuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXREZXNpZ25lckhvc3QuZWRpdG9yID0gd2luZG93LmxheW91dEVkaXRvciA9IG5ldyBMYXlvdXRFZGl0b3IuRWRpdG9yKGVkaXRvci5jb25maWcsIGNhbnZhc0RhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXBsYXRlID0gXCI8b3JjLWxheW91dC1lZGl0b3JcIiArIFwiIG1vZGVsPSd3aW5kb3cubGF5b3V0RWRpdG9yJyAvPlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGh0bWwgPSAkY29tcGlsZSh0ZW1wbGF0ZSkoJHNjb3BlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCIubGF5b3V0LWVkaXRvci1ob2xkZXJcIikuaHRtbChodG1sKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJHJvb3QuZWRpdEVsZW1lbnQgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhvc3QgPSAkc2NvcGUuJHJvb3QubGF5b3V0RGVzaWduZXJIb3N0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhvc3QuZWRpdEVsZW1lbnQoZWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJHJvb3QuYWRkRWxlbWVudCA9IGZ1bmN0aW9uIChjb250ZW50VHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhvc3QgPSAkc2NvcGUuJHJvb3QubGF5b3V0RGVzaWduZXJIb3N0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhvc3QuYWRkRWxlbWVudChjb250ZW50VHlwZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudG9nZ2xlSW5saW5lRWRpdGluZyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJHNjb3BlLmVsZW1lbnQuaW5saW5lRWRpdGluZ0lzQWN0aXZlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmVsZW1lbnQuaW5saW5lRWRpdGluZ0lzQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZWxlbWVudC5maW5kKFwiLmxheW91dC10b29sYmFyLWNvbnRhaW5lclwiKS5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNlbGVjdG9yID0gXCIjbGF5b3V0LWVkaXRvci1cIiArICRzY29wZS4kaWQgKyBcIiAubGF5b3V0LWh0bWwgLmxheW91dC1jb250ZW50LW1hcmt1cFtkYXRhLXRlbXBsYXRlZD1mYWxzZV1cIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmlyc3RDb250ZW50RWRpdG9ySWQgPSAkKHNlbGVjdG9yKS5maXJzdCgpLmF0dHIoXCJpZFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW55bWNlLmluaXQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvcjogc2VsZWN0b3IsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW1lOiBcIm1vZGVyblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2hlbWE6IFwiaHRtbDVcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2luczogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJhZHZsaXN0IGF1dG9saW5rIGxpc3RzIGxpbmsgaW1hZ2UgY2hhcm1hcCBwcmludCBwcmV2aWV3IGhyIGFuY2hvciBwYWdlYnJlYWtcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwic2VhcmNocmVwbGFjZSB3b3JkY291bnQgdmlzdWFsYmxvY2tzIHZpc3VhbGNoYXJzIGNvZGUgZnVsbHNjcmVlblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnNlcnRkYXRldGltZSBtZWRpYSBub25icmVha2luZyB0YWJsZSBjb250ZXh0bWVudSBkaXJlY3Rpb25hbGl0eVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlbW90aWNvbnMgdGVtcGxhdGUgcGFzdGUgdGV4dGNvbG9yIGNvbG9ycGlja2VyIHRleHRwYXR0ZXJuXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImZ1bGxzY3JlZW4gYXV0b3Jlc2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXI6IFwidW5kbyByZWRvIGN1dCBjb3B5IHBhc3RlIHwgYm9sZCBpdGFsaWMgfCBidWxsaXN0IG51bWxpc3Qgb3V0ZGVudCBpbmRlbnQgZm9ybWF0c2VsZWN0IHwgYWxpZ25sZWZ0IGFsaWduY2VudGVyIGFsaWducmlnaHQgYWxpZ25qdXN0aWZ5IGx0ciBydGwgfCBsaW5rIHVubGluayBjaGFybWFwIHwgY29kZSBmdWxsc2NyZWVuIGNsb3NlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRfdXJsczogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2VsZW1lbnRzOiBcIipbKl1cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2hvdWxkbid0IGJlIG5lZWRlZCBkdWUgdG8gdGhlIHZhbGlkX2VsZW1lbnRzIHNldHRpbmcsIGJ1dCBUaW55TUNFIHdvdWxkIHN0cmlwIHNjcmlwdC5zcmMgd2l0aG91dCBpdC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5kZWRfdmFsaWRfZWxlbWVudHM6IFwic2NyaXB0W3R5cGV8ZGVmZXJ8c3JjfGxhbmd1YWdlXVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNiYXI6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2luOiBcIm9yY2hhcmRsaWdodGdyYXlcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhlZF90b29sYmFyX2NvbnRhaW5lcjogXCIjbGF5b3V0LWVkaXRvci1cIiArICRzY29wZS4kaWQgKyBcIiAubGF5b3V0LXRvb2xiYXItY29udGFpbmVyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRfaW5zdGFuY2VfY2FsbGJhY2s6IGZ1bmN0aW9uIChlZGl0b3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGl0b3IuaWQgPT0gZmlyc3RDb250ZW50RWRpdG9ySWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlueW1jZS5leGVjQ29tbWFuZChcIm1jZUZvY3VzXCIsIGZhbHNlLCBlZGl0b3IuaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW55bWNlLnJlbW92ZShcIiNsYXlvdXQtZWRpdG9yLVwiICsgJHNjb3BlLiRpZCArIFwiIC5sYXlvdXQtY29udGVudC1tYXJrdXBcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnQuZmluZChcIi5sYXlvdXQtdG9vbGJhci1jb250YWluZXJcIikuaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5lbGVtZW50LmlubGluZUVkaXRpbmdJc0FjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkub24oXCJjdXQgY29weSBwYXN0ZVwiLCBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHBzZXVkbyBjbGlwYm9hcmQgd2FzIGFscmVhZHkgaW52b2tlZCAod2hpY2ggaGFwcGVucyBvbiB0aGUgZmlyc3QgY2xpcGJvYXJkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVyYXRpb24gYWZ0ZXIgcGFnZSBsb2FkIGV2ZW4gaWYgbmF0aXZlIGNsaXBib2FyZCBzdXBwb3J0IGV4aXN0cykgdGhlbiBzaXQgdGhpc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25lIG9wZXJhdGlvbiBvdXQsIGJ1dCBtYWtlIHN1cmUgd2hhdGV2ZXIgaXMgb24gdGhlIHBzZXVkbyBjbGlwYm9hcmQgZ2V0cyBtaWdyYXRlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gdGhlIG5hdGl2ZSBjbGlwYm9hcmQgZm9yIHN1YnNlcXVlbnQgb3BlcmF0aW9ucy5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjbGlwYm9hcmQud2FzSW52b2tlZCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5vcmlnaW5hbEV2ZW50LmNsaXBib2FyZERhdGEuc2V0RGF0YShcInRleHQvcGxhaW5cIiwgY2xpcGJvYXJkLmdldERhdGEoXCJ0ZXh0L3BsYWluXCIpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm9yaWdpbmFsRXZlbnQuY2xpcGJvYXJkRGF0YS5zZXREYXRhKFwidGV4dC9qc29uXCIsIGNsaXBib2FyZC5nZXREYXRhKFwidGV4dC9qc29uXCIpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZm9jdXNlZEVsZW1lbnQgPSAkc2NvcGUuZWxlbWVudC5mb2N1c2VkRWxlbWVudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFmb2N1c2VkRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJGFwcGx5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZS50eXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImNvcHlcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNlZEVsZW1lbnQuY29weShlLm9yaWdpbmFsRXZlbnQuY2xpcGJvYXJkRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjdXRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNlZEVsZW1lbnQuY3V0KGUub3JpZ2luYWxFdmVudC5jbGlwYm9hcmREYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcInBhc3RlXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzZWRFbGVtZW50LnBhc3RlKGUub3JpZ2luYWxFdmVudC5jbGlwYm9hcmREYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSEFDSzogV29ya2Fyb3VuZCBiZWNhdXNlIG9mIGhvdyBBbmd1bGFyIHRyZWF0cyB0aGUgRE9NIHdoZW4gZWxlbWVudHMgYXJlIHNoaWZ0ZWQgYXJvdW5kIC0gaW5wdXQgZm9jdXMgaXMgc29tZXRpbWVzIGxvc3QuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS4kYXBwbHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghISRzY29wZS5lbGVtZW50LmZvY3VzZWRFbGVtZW50KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZWxlbWVudC5mb2N1c2VkRWxlbWVudC5zZXRJc0ZvY3VzZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOYXRpdmUgY2xpcGJvYXJkIHN1cHBvcnQgb2J2aW91c2x5IGV4aXN0cywgc28gZGlzYWJsZSB0aGUgcGV1ZG8gY2xpcGJvYXJkIGZyb20gbm93IG9uLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpcGJvYXJkLmRpc2FibGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiBlbnZpcm9ubWVudC50ZW1wbGF0ZVVybChcIkVkaXRvclwiKSxcclxuICAgICAgICAgICAgICAgIHJlcGxhY2U6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBObyBjbGlja3Mgc2hvdWxkIHByb3BhZ2F0ZSBmcm9tIHRoZSBUaW55TUNFIHRvb2xiYXJzLlxyXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZmluZChcIi5sYXlvdXQtdG9vbGJhci1jb250YWluZXJcIikuY2xpY2soZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBJbnRlcmNlcHQgbW91c2Vkb3duIG9uIGVkaXRvciB3aGlsZSBpbiBpbmxpbmUgZWRpdGluZyBtb2RlIHRvIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHByZXZlbnQgY3VycmVudCBlZGl0b3IgZnJvbSBsb3NpbmcgZm9jdXMuXHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5tb3VzZWRvd24oZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmVsZW1lbnQuaW5saW5lRWRpdGluZ0lzQWN0aXZlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAvLyBVbmZvY3VzIGFuZCB1bnNlbGVjdCBldmVyeXRoaW5nIG9uIGNsaWNrIG91dHNpZGUgb2YgY2FudmFzLlxyXG4gICAgICAgICAgICAgICAgICAgICQod2luZG93KS5jbGljayhmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBFeGNlcHQgd2hlbiBpbiBpbmxpbmUgZWRpdGluZyBtb2RlLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNjb3BlLmVsZW1lbnQuaW5saW5lRWRpdGluZ0lzQWN0aXZlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS4kYXBwbHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmVsZW1lbnQuYWN0aXZlRWxlbWVudCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZWxlbWVudC5mb2N1c2VkRWxlbWVudCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIF0pOyIsImFuZ3VsYXJcclxuICAgIC5tb2R1bGUoXCJMYXlvdXRFZGl0b3JcIilcclxuICAgIC5kaXJlY3RpdmUoXCJvcmNMYXlvdXRDYW52YXNcIiwgW1wic2NvcGVDb25maWd1cmF0b3JcIiwgXCJlbnZpcm9ubWVudFwiLFxyXG4gICAgICAgIGZ1bmN0aW9uIChzY29wZUNvbmZpZ3VyYXRvciwgZW52aXJvbm1lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHJlc3RyaWN0OiBcIkVcIixcclxuICAgICAgICAgICAgICAgIHNjb3BlOiB7IGVsZW1lbnQ6IFwiPVwiIH0sXHJcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyOiBbXCIkc2NvcGVcIiwgXCIkZWxlbWVudFwiLCBcIiRhdHRyc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgkc2NvcGUsICRlbGVtZW50LCAkYXR0cnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGVDb25maWd1cmF0b3IuY29uZmlndXJlRm9yRWxlbWVudCgkc2NvcGUsICRlbGVtZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGVDb25maWd1cmF0b3IuY29uZmlndXJlRm9yQ29udGFpbmVyKCRzY29wZSwgJGVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc29ydGFibGVPcHRpb25zW1wiYXhpc1wiXSA9IFwieVwiO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogZW52aXJvbm1lbnQudGVtcGxhdGVVcmwoXCJDYW52YXNcIiksXHJcbiAgICAgICAgICAgICAgICByZXBsYWNlOiB0cnVlXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgXSk7IiwiYW5ndWxhclxyXG4gICAgLm1vZHVsZShcIkxheW91dEVkaXRvclwiKVxyXG4gICAgLmRpcmVjdGl2ZShcIm9yY0xheW91dENoaWxkXCIsIFtcIiRjb21waWxlXCIsXHJcbiAgICAgICAgZnVuY3Rpb24gKCRjb21waWxlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICByZXN0cmljdDogXCJFXCIsXHJcbiAgICAgICAgICAgICAgICBzY29wZTogeyBlbGVtZW50OiBcIj1cIiB9LFxyXG4gICAgICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXBsYXRlID0gXCI8b3JjLWxheW91dC1cIiArIHNjb3BlLmVsZW1lbnQudHlwZS50b0xvd2VyQ2FzZSgpICsgXCIgZWxlbWVudD0nZWxlbWVudCcgLz5cIjtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgaHRtbCA9ICRjb21waWxlKHRlbXBsYXRlKShzY29wZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgJChlbGVtZW50KS5yZXBsYWNlV2l0aChodG1sKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICBdKTsiLCJhbmd1bGFyXHJcbiAgICAubW9kdWxlKFwiTGF5b3V0RWRpdG9yXCIpXHJcbiAgICAuZGlyZWN0aXZlKFwib3JjTGF5b3V0Q29sdW1uXCIsIFtcIiRjb21waWxlXCIsIFwic2NvcGVDb25maWd1cmF0b3JcIiwgXCJlbnZpcm9ubWVudFwiLFxyXG4gICAgICAgIGZ1bmN0aW9uICgkY29tcGlsZSwgc2NvcGVDb25maWd1cmF0b3IsIGVudmlyb25tZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICByZXN0cmljdDogXCJFXCIsXHJcbiAgICAgICAgICAgICAgICBzY29wZTogeyBlbGVtZW50OiBcIj1cIiB9LFxyXG4gICAgICAgICAgICAgICAgY29udHJvbGxlcjogW1wiJHNjb3BlXCIsIFwiJGVsZW1lbnRcIixcclxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoJHNjb3BlLCAkZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZUNvbmZpZ3VyYXRvci5jb25maWd1cmVGb3JFbGVtZW50KCRzY29wZSwgJGVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZUNvbmZpZ3VyYXRvci5jb25maWd1cmVGb3JDb250YWluZXIoJHNjb3BlLCAkZWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zb3J0YWJsZU9wdGlvbnNbXCJheGlzXCJdID0gXCJ5XCI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiBlbnZpcm9ubWVudC50ZW1wbGF0ZVVybChcIkNvbHVtblwiKSxcclxuICAgICAgICAgICAgICAgIHJlcGxhY2U6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW1lbnQsIGF0dHJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5maW5kKFwiLmxheW91dC1jb2x1bW4tcmVzaXplLWJhclwiKS5kcmFnZ2FibGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBheGlzOiBcInhcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscGVyOiBcImNsb25lXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldmVydDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uIChlLCB1aSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuJGFwcGx5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5lbGVtZW50LmVkaXRvci5pc1Jlc2l6aW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkcmFnOiBmdW5jdGlvbiAoZSwgdWkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb2x1bW5FbGVtZW50ID0gZWxlbWVudC5wYXJlbnQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb2x1bW5TaXplID0gY29sdW1uRWxlbWVudC53aWR0aCgpIC8gc2NvcGUuZWxlbWVudC53aWR0aDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb25uZWN0QWRqYWNlbnQgPSAhZS5jdHJsS2V5O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQoZS50YXJnZXQpLmhhc0NsYXNzKFwibGF5b3V0LWNvbHVtbi1yZXNpemUtYmFyLWxlZnRcIikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGVsdGEgPSB1aS5vZmZzZXQubGVmdCAtIGNvbHVtbkVsZW1lbnQub2Zmc2V0KCkubGVmdDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVsdGEgPCAtY29sdW1uU2l6ZSAmJiBzY29wZS5lbGVtZW50LmNhbkV4cGFuZExlZnQoY29ubmVjdEFkamFjZW50KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS4kYXBwbHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZWxlbWVudC5leHBhbmRMZWZ0KGNvbm5lY3RBZGphY2VudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChkZWx0YSA+IGNvbHVtblNpemUgJiYgc2NvcGUuZWxlbWVudC5jYW5Db250cmFjdExlZnQoY29ubmVjdEFkamFjZW50KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS4kYXBwbHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZWxlbWVudC5jb250cmFjdExlZnQoY29ubmVjdEFkamFjZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJChlLnRhcmdldCkuaGFzQ2xhc3MoXCJsYXlvdXQtY29sdW1uLXJlc2l6ZS1iYXItcmlnaHRcIikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGVsdGEgPSB1aS5vZmZzZXQubGVmdCAtIGNvbHVtbkVsZW1lbnQud2lkdGgoKSAtIGNvbHVtbkVsZW1lbnQub2Zmc2V0KCkubGVmdDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVsdGEgPiBjb2x1bW5TaXplICYmIHNjb3BlLmVsZW1lbnQuY2FuRXhwYW5kUmlnaHQoY29ubmVjdEFkamFjZW50KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS4kYXBwbHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZWxlbWVudC5leHBhbmRSaWdodChjb25uZWN0QWRqYWNlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGVsdGEgPCAtY29sdW1uU2l6ZSAmJiBzY29wZS5lbGVtZW50LmNhbkNvbnRyYWN0UmlnaHQoY29ubmVjdEFkamFjZW50KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS4kYXBwbHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZWxlbWVudC5jb250cmFjdFJpZ2h0KGNvbm5lY3RBZGphY2VudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3A6IGZ1bmN0aW9uIChlLCB1aSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuJGFwcGx5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZWxlbWVudC5lZGl0b3IuaXNSZXNpemluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICBdKTsiLCJhbmd1bGFyXHJcbiAgICAubW9kdWxlKFwiTGF5b3V0RWRpdG9yXCIpXHJcbiAgICAuZGlyZWN0aXZlKFwib3JjTGF5b3V0Q29udGVudFwiLCBbXCIkc2NlXCIsIFwic2NvcGVDb25maWd1cmF0b3JcIiwgXCJlbnZpcm9ubWVudFwiLFxyXG4gICAgICAgIGZ1bmN0aW9uICgkc2NlLCBzY29wZUNvbmZpZ3VyYXRvciwgZW52aXJvbm1lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHJlc3RyaWN0OiBcIkVcIixcclxuICAgICAgICAgICAgICAgIHNjb3BlOiB7IGVsZW1lbnQ6IFwiPVwiIH0sXHJcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyOiBbXCIkc2NvcGVcIiwgXCIkZWxlbWVudFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgkc2NvcGUsICRlbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlQ29uZmlndXJhdG9yLmNvbmZpZ3VyZUZvckVsZW1lbnQoJHNjb3BlLCAkZWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5lZGl0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLiRyb290LmVkaXRFbGVtZW50KCRzY29wZS5lbGVtZW50KS50aGVuKGZ1bmN0aW9uIChhcmdzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLiRhcHBseShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmdzLmNhbmNlbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5lbGVtZW50LmRhdGEgPSBhcmdzLmVsZW1lbnQuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmVsZW1lbnQuc2V0SHRtbChhcmdzLmVsZW1lbnQuaHRtbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE92ZXJ3cml0ZSB0aGUgc2V0SHRtbCBmdW5jdGlvbiBzbyB0aGF0IHdlIGNhbiB1c2UgdGhlICRzY2Ugc2VydmljZSB0byB0cnVzdCB0aGUgaHRtbCAoYW5kIG5vdCBoYXZlIHRoZSBodG1sIGJpbmRpbmcgc3RyaXAgY2VydGFpbiB0YWdzKS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmVsZW1lbnQuc2V0SHRtbCA9IGZ1bmN0aW9uIChodG1sKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZWxlbWVudC5odG1sID0gaHRtbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5lbGVtZW50Lmh0bWxVbnNhZmUgPSAkc2NlLnRydXN0QXNIdG1sKGh0bWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmVsZW1lbnQuc2V0SHRtbCgkc2NvcGUuZWxlbWVudC5odG1sKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6IGVudmlyb25tZW50LnRlbXBsYXRlVXJsKFwiQ29udGVudFwiKSxcclxuICAgICAgICAgICAgICAgIHJlcGxhY2U6IHRydWVcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICBdKTsiLCJhbmd1bGFyXHJcbiAgICAubW9kdWxlKFwiTGF5b3V0RWRpdG9yXCIpXHJcbiAgICAuZGlyZWN0aXZlKFwib3JjTGF5b3V0SHRtbFwiLCBbXCIkc2NlXCIsIFwic2NvcGVDb25maWd1cmF0b3JcIiwgXCJlbnZpcm9ubWVudFwiLFxyXG4gICAgICAgIGZ1bmN0aW9uICgkc2NlLCBzY29wZUNvbmZpZ3VyYXRvciwgZW52aXJvbm1lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHJlc3RyaWN0OiBcIkVcIixcclxuICAgICAgICAgICAgICAgIHNjb3BlOiB7IGVsZW1lbnQ6IFwiPVwiIH0sXHJcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyOiBbXCIkc2NvcGVcIiwgXCIkZWxlbWVudFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgkc2NvcGUsICRlbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlQ29uZmlndXJhdG9yLmNvbmZpZ3VyZUZvckVsZW1lbnQoJHNjb3BlLCAkZWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5lZGl0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLiRyb290LmVkaXRFbGVtZW50KCRzY29wZS5lbGVtZW50KS50aGVuKGZ1bmN0aW9uIChhcmdzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLiRhcHBseShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmdzLmNhbmNlbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5lbGVtZW50LmRhdGEgPSBhcmdzLmVsZW1lbnQuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmVsZW1lbnQuc2V0SHRtbChhcmdzLmVsZW1lbnQuaHRtbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnVwZGF0ZUNvbnRlbnQgPSBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmVsZW1lbnQuc2V0SHRtbChlLnRhcmdldC5pbm5lckhUTUwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3ZlcndyaXRlIHRoZSBzZXRIdG1sIGZ1bmN0aW9uIHNvIHRoYXQgd2UgY2FuIHVzZSB0aGUgJHNjZSBzZXJ2aWNlIHRvIHRydXN0IHRoZSBodG1sIChhbmQgbm90IGhhdmUgdGhlIGh0bWwgYmluZGluZyBzdHJpcCBjZXJ0YWluIHRhZ3MpLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZWxlbWVudC5zZXRIdG1sID0gZnVuY3Rpb24gKGh0bWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5lbGVtZW50Lmh0bWwgPSBodG1sO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmVsZW1lbnQuaHRtbFVuc2FmZSA9ICRzY2UudHJ1c3RBc0h0bWwoaHRtbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZWxlbWVudC5zZXRIdG1sKCRzY29wZS5lbGVtZW50Lmh0bWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogZW52aXJvbm1lbnQudGVtcGxhdGVVcmwoXCJIdG1sXCIpLFxyXG4gICAgICAgICAgICAgICAgcmVwbGFjZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIE1vdXNlIGRvd24gZXZlbnRzIG11c3Qgbm90IGJlIGludGVyY2VwdGVkIGJ5IGRyYWcgYW5kIGRyb3Agd2hpbGUgaW5saW5lIGVkaXRpbmcgaXMgYWN0aXZlLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBjbGlja3MgaW4gaW5saW5lIGVkaXRvcnMgd2lsbCBoYXZlIG5vIGVmZmVjdC5cclxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbmQoXCIubGF5b3V0LWNvbnRlbnQtbWFya3VwXCIpLm1vdXNlZG93bihmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZWxlbWVudC5lZGl0b3IuaW5saW5lRWRpdGluZ0lzQWN0aXZlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgXSk7IiwiYW5ndWxhclxyXG4gICAgLm1vZHVsZShcIkxheW91dEVkaXRvclwiKVxyXG4gICAgLmRpcmVjdGl2ZShcIm9yY0xheW91dEdyaWRcIiwgW1wiJGNvbXBpbGVcIiwgXCJzY29wZUNvbmZpZ3VyYXRvclwiLCBcImVudmlyb25tZW50XCIsXHJcbiAgICAgICAgZnVuY3Rpb24gKCRjb21waWxlLCBzY29wZUNvbmZpZ3VyYXRvciwgZW52aXJvbm1lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHJlc3RyaWN0OiBcIkVcIixcclxuICAgICAgICAgICAgICAgIHNjb3BlOiB7IGVsZW1lbnQ6IFwiPVwiIH0sXHJcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyOiBbXCIkc2NvcGVcIiwgXCIkZWxlbWVudFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgkc2NvcGUsICRlbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlQ29uZmlndXJhdG9yLmNvbmZpZ3VyZUZvckVsZW1lbnQoJHNjb3BlLCAkZWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlQ29uZmlndXJhdG9yLmNvbmZpZ3VyZUZvckNvbnRhaW5lcigkc2NvcGUsICRlbGVtZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNvcnRhYmxlT3B0aW9uc1tcImF4aXNcIl0gPSBcInlcIjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6IGVudmlyb25tZW50LnRlbXBsYXRlVXJsKFwiR3JpZFwiKSxcclxuICAgICAgICAgICAgICAgIHJlcGxhY2U6IHRydWVcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICBdKTsiLCJhbmd1bGFyXHJcbiAgICAubW9kdWxlKFwiTGF5b3V0RWRpdG9yXCIpXHJcbiAgICAuZGlyZWN0aXZlKFwib3JjTGF5b3V0Um93XCIsIFtcIiRjb21waWxlXCIsIFwic2NvcGVDb25maWd1cmF0b3JcIiwgXCJlbnZpcm9ubWVudFwiLFxyXG4gICAgICAgIGZ1bmN0aW9uICgkY29tcGlsZSwgc2NvcGVDb25maWd1cmF0b3IsIGVudmlyb25tZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICByZXN0cmljdDogXCJFXCIsXHJcbiAgICAgICAgICAgICAgICBzY29wZTogeyBlbGVtZW50OiBcIj1cIiB9LFxyXG4gICAgICAgICAgICAgICAgY29udHJvbGxlcjogW1wiJHNjb3BlXCIsIFwiJGVsZW1lbnRcIixcclxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoJHNjb3BlLCAkZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZUNvbmZpZ3VyYXRvci5jb25maWd1cmVGb3JFbGVtZW50KCRzY29wZSwgJGVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZUNvbmZpZ3VyYXRvci5jb25maWd1cmVGb3JDb250YWluZXIoJHNjb3BlLCAkZWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zb3J0YWJsZU9wdGlvbnNbXCJheGlzXCJdID0gXCJ4XCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zb3J0YWJsZU9wdGlvbnNbXCJ1aS1mbG9hdGluZ1wiXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiBlbnZpcm9ubWVudC50ZW1wbGF0ZVVybChcIlJvd1wiKSxcclxuICAgICAgICAgICAgICAgIHJlcGxhY2U6IHRydWVcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICBdKTsiLCJhbmd1bGFyXHJcbiAgICAubW9kdWxlKFwiTGF5b3V0RWRpdG9yXCIpXHJcbiAgICAuZGlyZWN0aXZlKFwib3JjTGF5b3V0UG9wdXBcIiwgW1xyXG4gICAgICAgIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHJlc3RyaWN0OiBcIkFcIixcclxuICAgICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbWVudCwgYXR0cnMpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcG9wdXAgPSAkKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB0cmlnZ2VyID0gcG9wdXAuY2xvc2VzdChcIi5sYXlvdXQtcG9wdXAtdHJpZ2dlclwiKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcGFyZW50RWxlbWVudCA9IHBvcHVwLmNsb3Nlc3QoXCIubGF5b3V0LWVsZW1lbnRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlci5jbGljayhmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVwLnRvZ2dsZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9wdXAuaXMoXCI6dmlzaWJsZVwiKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9wdXAucG9zaXRpb24oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15OiBhdHRycy5vcmNMYXlvdXRQb3B1cE15IHx8IFwibGVmdCB0b3BcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdDogYXR0cnMub3JjTGF5b3V0UG9wdXBBdCB8fCBcImxlZnQgYm90dG9tKzRweFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mOiB0cmlnZ2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVwLmZpbmQoXCJpbnB1dFwiKS5maXJzdCgpLmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBwb3B1cC5jbGljayhmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQuY2xpY2soZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcG9wdXAuaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcHVwLmtleWRvd24oZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlLmN0cmxLZXkgJiYgIWUuc2hpZnRLZXkgJiYgIWUuYWx0S2V5ICYmIGUud2hpY2ggPT0gMjcpIC8vIEVzY1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9wdXAuaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcHVwLm9uKFwiY3V0IGNvcHkgcGFzdGVcIiwgZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWxsb3cgY2xpcGJvYXJkIG9wZXJhdGlvbnMgaW4gcG9wdXAgd2l0aG91dCBpbnZva2luZyBjbGlwYm9hcmQgZXZlbnQgaGFuZGxlcnMgb24gcGFyZW50IGVsZW1lbnQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgXSk7IiwiYW5ndWxhclxyXG4gICAgLm1vZHVsZShcIkxheW91dEVkaXRvclwiKVxyXG4gICAgLmRpcmVjdGl2ZShcIm9yY0xheW91dFRvb2xib3hcIiwgW1wiJGNvbXBpbGVcIiwgXCJlbnZpcm9ubWVudFwiLFxyXG4gICAgICAgIGZ1bmN0aW9uICgkY29tcGlsZSwgZW52aXJvbm1lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHJlc3RyaWN0OiBcIkVcIixcclxuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6IFtcIiRzY29wZVwiLCBcIiRlbGVtZW50XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCRzY29wZSwgJGVsZW1lbnQpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNldEVsZW1lbnRzID0gZnVuY3Rpb24gKCkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5ncmlkRWxlbWVudHMgPSBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0RWRpdG9yLkdyaWQuZnJvbSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xib3hJY29uOiBcIlxcdWYwMGFcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJveExhYmVsOiBcIkdyaWRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJveERlc2NyaXB0aW9uOiBcIkVtcHR5IGdyaWQuXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yb3dFbGVtZW50cyA9IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRFZGl0b3IuUm93LmZyb20oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYm94SWNvbjogXCJcXHVmMGM5XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xib3hMYWJlbDogXCJSb3cgKDEgY29sdW1uKVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYm94RGVzY3JpcHRpb246IFwiUm93IHdpdGggMSBjb2x1bW4uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBMYXlvdXRFZGl0b3IuQ29sdW1uLnRpbWVzKDEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0RWRpdG9yLlJvdy5mcm9tKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJveEljb246IFwiXFx1ZjBjOVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYm94TGFiZWw6IFwiUm93ICgyIGNvbHVtbnMpXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xib3hEZXNjcmlwdGlvbjogXCJSb3cgd2l0aCAyIGNvbHVtbnMuXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBMYXlvdXRFZGl0b3IuQ29sdW1uLnRpbWVzKDIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0RWRpdG9yLlJvdy5mcm9tKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJveEljb246IFwiXFx1ZjBjOVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYm94TGFiZWw6IFwiUm93ICgzIGNvbHVtbnMpXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xib3hEZXNjcmlwdGlvbjogXCJSb3cgd2l0aCAzIGNvbHVtbnMuXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBMYXlvdXRFZGl0b3IuQ29sdW1uLnRpbWVzKDMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0RWRpdG9yLlJvdy5mcm9tKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJveEljb246IFwiXFx1ZjBjOVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYm94TGFiZWw6IFwiUm93ICg0IGNvbHVtbnMpXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xib3hEZXNjcmlwdGlvbjogXCJSb3cgd2l0aCA0IGNvbHVtbnMuXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBMYXlvdXRFZGl0b3IuQ29sdW1uLnRpbWVzKDQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0RWRpdG9yLlJvdy5mcm9tKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJveEljb246IFwiXFx1ZjBjOVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYm94TGFiZWw6IFwiUm93ICg2IGNvbHVtbnMpXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xib3hEZXNjcmlwdGlvbjogXCJSb3cgd2l0aCA2IGNvbHVtbnMuXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBMYXlvdXRFZGl0b3IuQ29sdW1uLnRpbWVzKDYpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0RWRpdG9yLlJvdy5mcm9tKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJveEljb246IFwiXFx1ZjBjOVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYm94TGFiZWw6IFwiUm93ICgxMiBjb2x1bW5zKVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYm94RGVzY3JpcHRpb246IFwiUm93IHdpdGggMTIgY29sdW1ucy5cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IExheW91dEVkaXRvci5Db2x1bW4udGltZXMoMTIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIExheW91dEVkaXRvci5Sb3cuZnJvbSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xib3hJY29uOiBcIlxcdWYwYzlcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJveExhYmVsOiBcIlJvdyAoZW1wdHkpXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xib3hEZXNjcmlwdGlvbjogXCJFbXB0eSByb3cuXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jb2x1bW5FbGVtZW50cyA9IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRFZGl0b3IuQ29sdW1uLmZyb20oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYm94SWNvbjogXCJcXHVmMGRiXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xib3hMYWJlbDogXCJDb2x1bW5cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJveERlc2NyaXB0aW9uOiBcIkVtcHR5IGNvbHVtbi5cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmNvbnRlbnRFbGVtZW50Q2F0ZWdvcmllcyA9IF8oJHNjb3BlLmVsZW1lbnQuY29uZmlnLmNhdGVnb3JpZXMpLm1hcChmdW5jdGlvbiAoY2F0ZWdvcnkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBjYXRlZ29yeS5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50czogXyhjYXRlZ29yeS5jb250ZW50VHlwZXMpLm1hcChmdW5jdGlvbiAoY29udGVudFR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0gY29udGVudFR5cGUudHlwZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmYWN0b3J5ID0gTGF5b3V0RWRpdG9yLmZhY3Rvcmllc1t0eXBlXSB8fCBMYXlvdXRFZGl0b3IuZmFjdG9yaWVzW1wiQ29udGVudFwiXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpdGVtID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVGVtcGxhdGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50VHlwZTogY29udGVudFR5cGUuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFR5cGVMYWJlbDogY29udGVudFR5cGUubGFiZWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFR5cGVDbGFzczogY29udGVudFR5cGUudHlwZUNsYXNzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzRWRpdG9yOiBjb250ZW50VHlwZS5oYXNFZGl0b3IsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbDogY29udGVudFR5cGUuaHRtbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZmFjdG9yeShpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQudG9vbGJveEljb24gPSBjb250ZW50VHlwZS5pY29uIHx8IFwiXFx1ZjFjOVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC50b29sYm94TGFiZWwgPSBjb250ZW50VHlwZS5sYWJlbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQudG9vbGJveERlc2NyaXB0aW9uID0gY29udGVudFR5cGUuZGVzY3JpcHRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc2V0RWxlbWVudHMoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nZXRTb3J0YWJsZU9wdGlvbnMgPSBmdW5jdGlvbiAodHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVkaXRvcklkID0gJGVsZW1lbnQuY2xvc2VzdChcIi5sYXlvdXQtZWRpdG9yXCIpLmF0dHIoXCJpZFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYXJlbnRDbGFzc2VzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBsYWNlaG9sZGVyQ2xhc3NlcztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmbG9hdGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJHcmlkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudENsYXNzZXMgPSBbXCIubGF5b3V0LWNhbnZhc1wiLCBcIi5sYXlvdXQtY29sdW1uXCIsIFwiLmxheW91dC1jb21tb24taG9sZGVyXCJdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlckNsYXNzZXMgPSBcImxheW91dC1lbGVtZW50IGxheW91dC1jb250YWluZXIgbGF5b3V0LWdyaWQgdWktc29ydGFibGUtcGxhY2Vob2xkZXJcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIlJvd1wiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRDbGFzc2VzID0gW1wiLmxheW91dC1ncmlkXCJdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlckNsYXNzZXMgPSBcImxheW91dC1lbGVtZW50IGxheW91dC1jb250YWluZXIgbGF5b3V0LXJvdyByb3cgdWktc29ydGFibGUtcGxhY2Vob2xkZXJcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIkNvbHVtblwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRDbGFzc2VzID0gW1wiLmxheW91dC1yb3c6bm90KC5sYXlvdXQtcm93LWZ1bGwpXCJdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlckNsYXNzZXMgPSBcImxheW91dC1lbGVtZW50IGxheW91dC1jb250YWluZXIgbGF5b3V0LWNvbHVtbiB1aS1zb3J0YWJsZS1wbGFjZWhvbGRlclwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdGluZyA9IHRydWU7IC8vIFRvIGVuc3VyZSBhIHNtb290aCBob3Jpem9udGFsLWxpc3QgcmVvcmRlcmluZy4gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXItdWkvdWktc29ydGFibGUjZmxvYXRpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIkNvbnRlbnRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Q2xhc3NlcyA9IFtcIi5sYXlvdXQtY2FudmFzXCIsIFwiLmxheW91dC1jb2x1bW5cIiwgXCIubGF5b3V0LWNvbW1vbi1ob2xkZXJcIl07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyQ2xhc3NlcyA9IFwibGF5b3V0LWVsZW1lbnQgbGF5b3V0LWNvbnRlbnQgdWktc29ydGFibGUtcGxhY2Vob2xkZXJcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IFwibW92ZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3RXaXRoOiBfKHBhcmVudENsYXNzZXMpLm1hcChmdW5jdGlvbiAoZSkgeyByZXR1cm4gXCIjXCIgKyBlZGl0b3JJZCArIFwiIFwiICsgZSArIFwiOm5vdCgubGF5b3V0LWNvbnRhaW5lci1zZWFsZWQpID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgPiAubGF5b3V0LWNoaWxkcmVuXCI7IH0pLmpvaW4oXCIsIFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXJDbGFzc2VzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidWktZmxvYXRpbmdcIjogZmxvYXRpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlOiBmdW5jdGlvbiAoZSwgdWkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS50YXJnZXQuaXNUb29sYm94ID0gdHJ1ZTsgLy8gV2lsbCBpbmRpY2F0ZSB0byBjb25uZWN0ZWQgc29ydGFibGVzIHRoYXQgZHJvcHBlZCBpdGVtcyB3ZXJlIHNlbnQgZnJvbSB0b29sYm94LlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uIChlLCB1aSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJGFwcGx5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5lbGVtZW50LmlzRHJhZ2dpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3A6IGZ1bmN0aW9uIChlLCB1aSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJGFwcGx5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5lbGVtZW50LmlzRHJhZ2dpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNldEVsZW1lbnRzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcjogZnVuY3Rpb24gKGUsIHVpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS4kYXBwbHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmVsZW1lbnQuY2FudmFzLnNldElzRHJvcFRhcmdldChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGF5b3V0SXNDb2xsYXBzZWRDb29raWVOYW1lID0gXCJsYXlvdXRUb29sYm94Q2F0ZWdvcnlfTGF5b3V0X0lzQ29sbGFwc2VkXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sYXlvdXRJc0NvbGxhcHNlZCA9ICQuY29va2llKGxheW91dElzQ29sbGFwc2VkQ29va2llTmFtZSkgPT09IFwidHJ1ZVwiO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRvZ2dsZUxheW91dElzQ29sbGFwc2VkID0gZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sYXlvdXRJc0NvbGxhcHNlZCA9ICEkc2NvcGUubGF5b3V0SXNDb2xsYXBzZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLmNvb2tpZShsYXlvdXRJc0NvbGxhcHNlZENvb2tpZU5hbWUsICRzY29wZS5sYXlvdXRJc0NvbGxhcHNlZCwgeyBleHBpcmVzOiAzNjUgfSk7IC8vIFJlbWVtYmVyIGNvbGxhcHNlZCBzdGF0ZSBmb3IgYSB5ZWFyLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6IGVudmlyb25tZW50LnRlbXBsYXRlVXJsKFwiVG9vbGJveFwiKSxcclxuICAgICAgICAgICAgICAgIHJlcGxhY2U6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdG9vbGJveCA9IGVsZW1lbnQuZmluZChcIi5sYXlvdXQtdG9vbGJveFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAkKHdpbmRvdykub24oXCJyZXNpemUgc2Nyb2xsXCIsIGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjYW52YXMgPSBlbGVtZW50LnBhcmVudCgpLmZpbmQoXCIubGF5b3V0LWNhbnZhc1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGNhbnZhcyBpcyB0YWxsZXIgdGhhbiB0aGUgdG9vbGJveCwgbWFrZSB0aGUgdG9vbGJveCBzdGlja3ktcG9zaXRpb25lZCB3aXRoaW4gdGhlIGVkaXRvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBoZWxwIHRoZSB1c2VyIGF2b2lkIGV4Y2Vzc2l2ZSB2ZXJ0aWNhbCBzY3JvbGxpbmcuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjYW52YXNJc1RhbGxlciA9ICEhY2FudmFzICYmIGNhbnZhcy5oZWlnaHQoKSA+IHRvb2xib3guaGVpZ2h0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB3aW5kb3dQb3MgPSAkKHdpbmRvdykuc2Nyb2xsVG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW52YXNJc1RhbGxlciAmJiB3aW5kb3dQb3MgPiBlbGVtZW50Lm9mZnNldCgpLnRvcCArIGVsZW1lbnQuaGVpZ2h0KCkgLSB0b29sYm94LmhlaWdodCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYm94LmFkZENsYXNzKFwic3RpY2t5LWJvdHRvbVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xib3gucmVtb3ZlQ2xhc3MoXCJzdGlja3ktdG9wXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNhbnZhc0lzVGFsbGVyICYmIHdpbmRvd1BvcyA+IGVsZW1lbnQub2Zmc2V0KCkudG9wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYm94LmFkZENsYXNzKFwic3RpY2t5LXRvcFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xib3gucmVtb3ZlQ2xhc3MoXCJzdGlja3ktYm90dG9tXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJveC5yZW1vdmVDbGFzcyhcInN0aWNreS10b3BcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYm94LnJlbW92ZUNsYXNzKFwic3RpY2t5LWJvdHRvbVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIF0pOyIsImFuZ3VsYXJcclxuICAgIC5tb2R1bGUoXCJMYXlvdXRFZGl0b3JcIilcclxuICAgIC5kaXJlY3RpdmUoXCJvcmNMYXlvdXRUb29sYm94R3JvdXBcIiwgW1wiJGNvbXBpbGVcIiwgXCJlbnZpcm9ubWVudFwiLFxyXG4gICAgICAgIGZ1bmN0aW9uICgkY29tcGlsZSwgZW52aXJvbm1lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHJlc3RyaWN0OiBcIkVcIixcclxuICAgICAgICAgICAgICAgIHNjb3BlOiB7IGNhdGVnb3J5OiBcIj1cIiB9LFxyXG4gICAgICAgICAgICAgICAgY29udHJvbGxlcjogW1wiJHNjb3BlXCIsIFwiJGVsZW1lbnRcIixcclxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoJHNjb3BlLCAkZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXNDb2xsYXBzZWRDb29raWVOYW1lID0gXCJsYXlvdXRUb29sYm94Q2F0ZWdvcnlfXCIgKyAkc2NvcGUuY2F0ZWdvcnkubmFtZSArIFwiX0lzQ29sbGFwc2VkXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5pc0NvbGxhcHNlZCA9ICQuY29va2llKGlzQ29sbGFwc2VkQ29va2llTmFtZSkgPT09IFwidHJ1ZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudG9nZ2xlSXNDb2xsYXBzZWQgPSBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmlzQ29sbGFwc2VkID0gISRzY29wZS5pc0NvbGxhcHNlZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuY29va2llKGlzQ29sbGFwc2VkQ29va2llTmFtZSwgJHNjb3BlLmlzQ29sbGFwc2VkLCB7IGV4cGlyZXM6IDM2NSB9KTsgLy8gUmVtZW1iZXIgY29sbGFwc2VkIHN0YXRlIGZvciBhIHllYXIuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogZW52aXJvbm1lbnQudGVtcGxhdGVVcmwoXCJUb29sYm94R3JvdXBcIiksXHJcbiAgICAgICAgICAgICAgICByZXBsYWNlOiB0cnVlXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgXSk7Il0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/LayoutEditor.min.js b/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/LayoutEditor.min.js index dad14fc95..ae01b421d 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/LayoutEditor.min.js +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/LayoutEditor.min.js @@ -1 +1 @@ -angular.module("LayoutEditor",["ngSanitize","ngResource","ui.sortable"]);var LayoutEditor;!function(e){var t=function(){var e=this;this._clipboardData={},this._isDisabled=!1,this._wasInvoked=!1,this.setData=function(t,o){e._clipboardData[t]=o,e._wasInvoked=!0},this.getData=function(t){return e._clipboardData[t]},this.disable=function(){e._isDisabled=!0,e._wasInvoked=!1,e._clipboardData={}},this.isDisabled=function(){return e._isDisabled},this.wasInvoked=function(){return e._wasInvoked}};e.Clipboard=new t,angular.module("LayoutEditor").factory("clipboard",[function(){return{setData:e.Clipboard.setData,getData:e.Clipboard.getData,disable:e.Clipboard.disable,isDisabled:e.Clipboard.isDisabled,wasInvoked:e.Clipboard.wasInvoked}}])}(LayoutEditor||(LayoutEditor={})),angular.module("LayoutEditor").factory("scopeConfigurator",["$timeout","clipboard",function(e,t){return{configureForElement:function(e,o){o.find(".layout-panel").click(function(e){e.stopPropagation()}),o.parent().keydown(function(n){var l=!1,i=!1,a=e.element;if(!a.editor.isDragging&&!a.editor.inlineEditingIsActive){if(!t.isDisabled()){var r=a.editor.focusedElement;if(r&&n.ctrlKey)switch(n.which){case 67:r.copy(t);break;case 88:r.cut(t);break;case 86:r.paste(t)}}if(n.ctrlKey||n.shiftKey||n.altKey||46!=n.which?n.ctrlKey||n.shiftKey||n.altKey||32!=n.which&&27!=n.which||(o.find(".layout-panel-action-properties").first().click(),l=!0):(e["delete"](a),l=!0),"Content"==a.type&&(n.ctrlKey||n.shiftKey||n.altKey||13!=n.which||(o.find(".layout-panel-action-edit").first().click(),l=!0)),a.children&&(n.ctrlKey||n.shiftKey||!n.altKey||40!=n.which||(a.children.length>0&&a.children[0].setIsFocused(),l=!0),"Column"==a.type)){var c=!n.ctrlKey;37==n.which?(n.altKey&&a.expandLeft(c),n.shiftKey&&a.contractRight(c),l=!0):39==n.which&&(n.altKey&&a.contractLeft(c),n.shiftKey&&a.expandRight(c),l=!0)}a.parent&&(n.altKey&&38==n.which&&(a.parent.setIsFocused(),l=!0),"Row"==a.parent.type?n.ctrlKey||n.shiftKey||n.altKey||37!=n.which?n.ctrlKey||n.shiftKey||n.altKey||39!=n.which?!n.ctrlKey||n.shiftKey||n.altKey||37!=n.which?!n.ctrlKey||n.shiftKey||n.altKey||39!=n.which||(a.moveDown(),l=!0):(a.moveUp(),i=!0,l=!0):(a.parent.moveFocusNextChild(a),l=!0):(a.parent.moveFocusPrevChild(a),l=!0):n.ctrlKey||n.shiftKey||n.altKey||38!=n.which?n.ctrlKey||n.shiftKey||n.altKey||40!=n.which?!n.ctrlKey||n.shiftKey||n.altKey||38!=n.which?!n.ctrlKey||n.shiftKey||n.altKey||40!=n.which||(a.moveDown(),l=!0):(a.moveUp(),i=!0,l=!0):(a.parent.moveFocusNextChild(a),l=!0):(a.parent.moveFocusPrevChild(a),l=!0)),l&&n.preventDefault(),n.stopPropagation(),e.$apply(),i&&window.setTimeout(function(){e.$apply(function(){a.editor.focusedElement.setIsFocused()})},100)}}),e.element.setIsFocusedEventHandlers.push(function(){o.parent().focus()}),e["delete"]=function(e){e["delete"]()}},configureForContainer:function(t,o){var n=t.element;t.getShowChildrenPlaceholder=function(){return 0===t.element.children.length&&!t.element.getIsDropTarget()},t.sortableOptions={cursor:"move",delay:150,disabled:n.getIsSealed(),distance:5,start:function(e,o){t.$apply(function(){n.setIsDropTarget(!0),n.editor.isDragging=!0}),o.placeholder.height(o.item.height()-4),o.placeholder.css("min-height",0)},stop:function(e,o){t.$apply(function(){n.editor.isDragging=!1,n.setIsDropTarget(!1)})},over:function(t,l){l.sender&&l.sender[0].isToolbox&&(l.sender[0].dropTargetTimeout&&(e.cancel(l.sender[0].dropTargetTimeout),l.sender[0].dropTargetTimeout=null),e(function(){if("Row"==n.type){var e=n.editor.dropTargetElement;e&&"Row"==e.type&&e.rollbackAddColumn()}n.setIsDropTarget(!1)}),l.sender[0].dropTargetTimeout=e(function(){if("Row"==n.type){var e=l.item.sortable.model,t=Math.floor(12/(n.children.length+1));e.width=t,e.offset=0,n.beginAddColumn(t);var a=_.max(_(o.find("> .layout-children > .layout-column:not(.ui-sortable-placeholder)")).map(function(e){return $(e).height()}));for(i=1;i<=12;i++)l.placeholder.removeClass("col-xs-"+i);l.placeholder.addClass("col-xs-"+e.width),a>0?(l.placeholder.height(a),l.placeholder.css("min-height",0)):(l.placeholder.height(0),l.placeholder.css("min-height",""))}n.setIsDropTarget(!0)},150))},receive:function(o,l){l.sender&&l.sender[0].isToolbox&&t.$apply(function(){var o=l.item.sortable.model;o&&("Row"==n.type&&n.commitAddColumn(),o.setEditor(n.editor),o.setParent(n),o.hasEditor&&t.$root.editElement(o).then(function(t){t.cancel||(o.data=t.element.data,o.setHtml&&o.setHtml(t.element.html)),e(function(){t.cancel?o["delete"]():o.setIsFocused(),n.setIsDropTarget(!1)})})),e(function(){n.setIsDropTarget(!1),o&&o.setIsFocused()})})}},t.click=function(e,t){e.editor.isDragging||e.setIsFocused(),t.stopPropagation()},t.getClasses=function(e){var t=["layout-element"];return e.children&&(t.push("layout-container"),e.getIsSealed()&&t.push("layout-container-sealed")),t.push("layout-"+e.type.toLowerCase()),e.dropTargetClass&&t.push(e.dropTargetClass),"Row"==e.type&&(t.push("row"),e.canAddColumn()||t.push("layout-row-full")),"Column"==e.type&&(t.push("col-xs-"+e.width),t.push("col-xs-offset-"+e.offset)),"Content"==e.type&&t.push("layout-content-"+e.contentTypeClass),e.getIsActive()&&t.push("layout-element-active"),e.getIsFocused()&&t.push("layout-element-focused"),e.getIsSelected()&&t.push("layout-element-selected"),e.getIsDropTarget()&&t.push("layout-element-droptarget"),e.isTemplated&&t.push("layout-element-templated"),t}}}}]),angular.module("LayoutEditor").directive("orcLayoutEditor",["environment",function(environment){return{restrict:"E",scope:{},controller:["$scope","$element","$attrs","$compile","clipboard",function($scope,$element,$attrs,$compile,clipboard){if(!$attrs.model)throw new Error("The 'model' attribute must evaluate to a LayoutEditor.Editor object.");$scope.element=eval($attrs.model),$scope.click=function(e,t){e.editor.isDragging||e.setIsFocused(),t.stopPropagation()},$scope.getClasses=function(e){var t=["layout-element","layout-container","layout-canvas"];return e.getIsActive()&&t.push("layout-element-active"),e.getIsFocused()&&t.push("layout-element-focused"),e.getIsSelected()&&t.push("layout-element-selected"),e.getIsDropTarget()&&t.push("layout-element-droptarget"),e.isTemplated&&t.push("layout-element-templated"),t};var layoutDesignerHost=$(".layout-designer").data("layout-designer-host");$scope.$root.layoutDesignerHost=layoutDesignerHost,layoutDesignerHost.element.on("replacecanvas",function(e,t){var o=$scope.element,n={data:t.canvas.data,htmlId:t.canvas.htmlId,htmlClass:t.canvas.htmlClass,htmlStyle:t.canvas.htmlStyle,isTemplated:t.canvas.isTemplated,children:t.canvas.children};layoutDesignerHost.editor=window.layoutEditor=new LayoutEditor.Editor(o.config,n);var l="",i=$compile(l)($scope);$(".layout-editor-holder").html(i)}),$scope.$root.editElement=function(e){var t=$scope.$root.layoutDesignerHost;return t.editElement(e)},$scope.$root.addElement=function(e){var t=$scope.$root.layoutDesignerHost;return t.addElement(e)},$scope.toggleInlineEditing=function(){if($scope.element.inlineEditingIsActive)tinymce.remove("#layout-editor-"+$scope.$id+" .layout-content-markup"),$element.find(".layout-toolbar-container").hide(),$scope.element.inlineEditingIsActive=!1;else{$scope.element.inlineEditingIsActive=!0,$element.find(".layout-toolbar-container").show();var e="#layout-editor-"+$scope.$id+" .layout-html .layout-content-markup[data-templated=false]",t=$(e).first().attr("id");tinymce.init({selector:e,theme:"modern",schema:"html5",plugins:["advlist autolink lists link image charmap print preview hr anchor pagebreak","searchreplace wordcount visualblocks visualchars code fullscreen","insertdatetime media nonbreaking table contextmenu directionality","emoticons template paste textcolor colorpicker textpattern","fullscreen autoresize"],toolbar:"undo redo cut copy paste | bold italic | bullist numlist outdent indent formatselect | alignleft aligncenter alignright alignjustify ltr rtl | link unlink charmap | code fullscreen close",convert_urls:!1,valid_elements:"*[*]",extended_valid_elements:"script[type|defer|src|language]",statusbar:!1,skin:"orchardlightgray",inline:!0,fixed_toolbar_container:"#layout-editor-"+$scope.$id+" .layout-toolbar-container",init_instance_callback:function(e){e.id==t&&tinymce.execCommand("mceFocus",!1,e.id)}})}},$(document).on("cut copy paste",function(e){if(clipboard.wasInvoked())e.originalEvent.clipboardData.setData("text/plain",clipboard.getData("text/plain")),e.originalEvent.clipboardData.setData("text/json",clipboard.getData("text/json")),e.preventDefault();else{var t=$scope.element.focusedElement;t&&($scope.$apply(function(){switch(e.type){case"copy":t.copy(e.originalEvent.clipboardData);break;case"cut":t.cut(e.originalEvent.clipboardData);break;case"paste":t.paste(e.originalEvent.clipboardData)}}),window.setTimeout(function(){$scope.$apply(function(){$scope.element.focusedElement&&$scope.element.focusedElement.setIsFocused()})},100),e.preventDefault())}clipboard.disable()})}],templateUrl:environment.templateUrl("Editor"),replace:!0,link:function(e,t){t.find(".layout-toolbar-container").click(function(e){e.stopPropagation()}),t.mousedown(function(t){e.element.inlineEditingIsActive&&(t.preventDefault(),t.stopPropagation())}),$(window).click(function(t){e.element.inlineEditingIsActive||e.$apply(function(){e.element.activeElement=null,e.element.focusedElement=null})})}}}]),angular.module("LayoutEditor").directive("orcLayoutCanvas",["scopeConfigurator","environment",function(e,t){return{restrict:"E",scope:{element:"="},controller:["$scope","$element","$attrs",function(t,o,n){e.configureForElement(t,o),e.configureForContainer(t,o),t.sortableOptions.axis="y"}],templateUrl:t.templateUrl("Canvas"),replace:!0}}]),angular.module("LayoutEditor").directive("orcLayoutChild",["$compile",function(e){return{restrict:"E",scope:{element:"="},link:function(t,o){var n="",l=e(n)(t);$(o).replaceWith(l)}}}]),angular.module("LayoutEditor").directive("orcLayoutColumn",["$compile","scopeConfigurator","environment",function(e,t,o){return{restrict:"E",scope:{element:"="},controller:["$scope","$element",function(e,o){t.configureForElement(e,o),t.configureForContainer(e,o),e.sortableOptions.axis="y"}],templateUrl:o.templateUrl("Column"),replace:!0,link:function(e,t,o){t.find(".layout-column-resize-bar").draggable({axis:"x",helper:"clone",revert:!0,start:function(t,o){e.$apply(function(){e.element.editor.isResizing=!0})},drag:function(o,n){var l=t.parent(),i=l.width()/e.element.width,a=!o.ctrlKey;if($(o.target).hasClass("layout-column-resize-bar-left")){var r=n.offset.left-l.offset().left;-i>r&&e.element.canExpandLeft(a)?e.$apply(function(){e.element.expandLeft(a)}):r>i&&e.element.canContractLeft(a)&&e.$apply(function(){e.element.contractLeft(a)})}else if($(o.target).hasClass("layout-column-resize-bar-right")){var r=n.offset.left-l.width()-l.offset().left;r>i&&e.element.canExpandRight(a)?e.$apply(function(){e.element.expandRight(a)}):-i>r&&e.element.canContractRight(a)&&e.$apply(function(){e.element.contractRight(a)})}},stop:function(t,o){e.$apply(function(){e.element.editor.isResizing=!1})}})}}}]),angular.module("LayoutEditor").directive("orcLayoutContent",["$sce","scopeConfigurator","environment",function(e,t,o){return{restrict:"E",scope:{element:"="},controller:["$scope","$element",function(o,n){t.configureForElement(o,n),o.edit=function(){o.$root.editElement(o.element).then(function(e){o.$apply(function(){e.cancel||(o.element.data=e.element.data,o.element.setHtml(e.element.html))})})},o.element.setHtml=function(t){o.element.html=t,o.element.htmlUnsafe=e.trustAsHtml(t)},o.element.setHtml(o.element.html)}],templateUrl:o.templateUrl("Content"),replace:!0}}]),angular.module("LayoutEditor").directive("orcLayoutHtml",["$sce","scopeConfigurator","environment",function(e,t,o){return{restrict:"E",scope:{element:"="},controller:["$scope","$element",function(o,n){t.configureForElement(o,n),o.edit=function(){o.$root.editElement(o.element).then(function(e){o.$apply(function(){e.cancel||(o.element.data=e.element.data,o.element.setHtml(e.element.html))})})},o.updateContent=function(e){o.element.setHtml(e.target.innerHTML)},o.element.setHtml=function(t){o.element.html=t,o.element.htmlUnsafe=e.trustAsHtml(t)},o.element.setHtml(o.element.html)}],templateUrl:o.templateUrl("Html"),replace:!0,link:function(e,t){t.find(".layout-content-markup").mousedown(function(t){e.element.editor.inlineEditingIsActive&&t.stopPropagation()})}}}]),angular.module("LayoutEditor").directive("orcLayoutGrid",["$compile","scopeConfigurator","environment",function(e,t,o){return{restrict:"E",scope:{element:"="},controller:["$scope","$element",function(e,o){t.configureForElement(e,o),t.configureForContainer(e,o),e.sortableOptions.axis="y"}],templateUrl:o.templateUrl("Grid"),replace:!0}}]),angular.module("LayoutEditor").directive("orcLayoutRow",["$compile","scopeConfigurator","environment",function(e,t,o){return{restrict:"E",scope:{element:"="},controller:["$scope","$element",function(e,o){t.configureForElement(e,o),t.configureForContainer(e,o),e.sortableOptions.axis="x",e.sortableOptions["ui-floating"]=!0}],templateUrl:o.templateUrl("Row"),replace:!0}}]),angular.module("LayoutEditor").directive("orcLayoutPopup",[function(){return{restrict:"A",link:function(e,t,o){var n=$(t),l=n.closest(".layout-popup-trigger"),i=n.closest(".layout-element");l.click(function(){n.toggle(),n.is(":visible")&&(n.position({my:o.orcLayoutPopupMy||"left top",at:o.orcLayoutPopupAt||"left bottom+4px",of:l}),n.find("input").first().focus())}),n.click(function(e){e.stopPropagation()}),i.click(function(e){n.hide()}),n.keydown(function(e){e.ctrlKey||e.shiftKey||e.altKey||27!=e.which||n.hide(),e.stopPropagation()}),n.on("cut copy paste",function(e){e.stopPropagation()})}}}]),angular.module("LayoutEditor").directive("orcLayoutToolbox",["$compile","environment",function(e,t){return{restrict:"E",controller:["$scope","$element",function(e,t){e.resetElements=function(){e.gridElements=[LayoutEditor.Grid.from({toolboxIcon:"",toolboxLabel:"Grid",toolboxDescription:"Empty grid.",children:[]})],e.rowElements=[LayoutEditor.Row.from({toolboxIcon:"",toolboxLabel:"Row (1 column)",toolboxDescription:"Row with 1 column.",children:LayoutEditor.Column.times(1)}),LayoutEditor.Row.from({toolboxIcon:"",toolboxLabel:"Row (2 columns)",toolboxDescription:"Row with 2 columns.",children:LayoutEditor.Column.times(2)}),LayoutEditor.Row.from({toolboxIcon:"",toolboxLabel:"Row (3 columns)",toolboxDescription:"Row with 3 columns.",children:LayoutEditor.Column.times(3)}),LayoutEditor.Row.from({toolboxIcon:"",toolboxLabel:"Row (4 columns)",toolboxDescription:"Row with 4 columns.",children:LayoutEditor.Column.times(4)}),LayoutEditor.Row.from({toolboxIcon:"",toolboxLabel:"Row (6 columns)",toolboxDescription:"Row with 6 columns.",children:LayoutEditor.Column.times(6)}),LayoutEditor.Row.from({toolboxIcon:"",toolboxLabel:"Row (12 columns)",toolboxDescription:"Row with 12 columns.",children:LayoutEditor.Column.times(12)}),LayoutEditor.Row.from({toolboxIcon:"",toolboxLabel:"Row (empty)",toolboxDescription:"Empty row.",children:[]})],e.columnElements=[LayoutEditor.Column.from({toolboxIcon:"",toolboxLabel:"Column",toolboxDescription:"Empty column.",width:1,offset:0,children:[]})],e.contentElementCategories=_(e.element.config.categories).map(function(e){return{name:e.name,elements:_(e.contentTypes).map(function(e){var t=e.type,o=LayoutEditor.factories[t]||LayoutEditor.factories.Content,n={isTemplated:!1,contentType:e.id,contentTypeLabel:e.label,contentTypeClass:e.typeClass,data:null,hasEditor:e.hasEditor,html:e.html},l=o(n);return l.toolboxIcon=e.icon||"",l.toolboxLabel=e.label,l.toolboxDescription=e.description,l})}})},e.resetElements(),e.getSortableOptions=function(o){var n,l,i=t.closest(".layout-editor").attr("id"),a=!1;switch(o){case"Grid":n=[".layout-canvas",".layout-column",".layout-common-holder"],l="layout-element layout-container layout-grid ui-sortable-placeholder";break;case"Row":n=[".layout-grid"],l="layout-element layout-container layout-row row ui-sortable-placeholder";break;case"Column":n=[".layout-row:not(.layout-row-full)"],l="layout-element layout-container layout-column ui-sortable-placeholder",a=!0;break;case"Content":n=[".layout-canvas",".layout-column",".layout-common-holder"],l="layout-element layout-content ui-sortable-placeholder"}return{cursor:"move",connectWith:_(n).map(function(e){return"#"+i+" "+e+":not(.layout-container-sealed) > .layout-element-wrapper > .layout-children"}).join(", "),placeholder:l,"ui-floating":a,create:function(e,t){e.target.isToolbox=!0},start:function(t,o){e.$apply(function(){e.element.isDragging=!0})},stop:function(t,o){e.$apply(function(){e.element.isDragging=!1,e.resetElements()})},over:function(t,o){e.$apply(function(){e.element.canvas.setIsDropTarget(!1)})}}};var o="layoutToolboxCategory_Layout_IsCollapsed";e.layoutIsCollapsed="true"===$.cookie(o),e.toggleLayoutIsCollapsed=function(t){e.layoutIsCollapsed=!e.layoutIsCollapsed,$.cookie(o,e.layoutIsCollapsed,{expires:365}),t.preventDefault(),t.stopPropagation()}}],templateUrl:t.templateUrl("Toolbox"),replace:!0,link:function(e,t){var o=t.find(".layout-toolbox");$(window).on("resize scroll",function(e){var n=t.parent().find(".layout-canvas"),l=!!n&&n.height()>o.height(),i=$(window).scrollTop();l&&i>t.offset().top+t.height()-o.height()?(o.addClass("sticky-bottom"),o.removeClass("sticky-top")):l&&i>t.offset().top?(o.addClass("sticky-top"),o.removeClass("sticky-bottom")):(o.removeClass("sticky-top"),o.removeClass("sticky-bottom"))})}}}]),angular.module("LayoutEditor").directive("orcLayoutToolboxGroup",["$compile","environment",function(e,t){return{restrict:"E",scope:{category:"="},controller:["$scope","$element",function(e,t){var o="layoutToolboxCategory_"+e.category.name+"_IsCollapsed";e.isCollapsed="true"===$.cookie(o),e.toggleIsCollapsed=function(t){e.isCollapsed=!e.isCollapsed,$.cookie(o,e.isCollapsed,{expires:365}),t.preventDefault(),t.stopPropagation()}}],templateUrl:t.templateUrl("ToolboxGroup"),replace:!0}}]); \ No newline at end of file +angular.module("LayoutEditor",["ngSanitize","ngResource","ui.sortable"]);var LayoutEditor;!function(e){var t=function(){var e=this;this._clipboardData={},this._isDisabled=!1,this._wasInvoked=!1,this.setData=function(t,o){e._clipboardData[t]=o,e._wasInvoked=!0},this.getData=function(t){return e._clipboardData[t]},this.disable=function(){e._isDisabled=!0,e._wasInvoked=!1,e._clipboardData={}},this.isDisabled=function(){return e._isDisabled},this.wasInvoked=function(){return e._wasInvoked}};e.Clipboard=new t,angular.module("LayoutEditor").factory("clipboard",[function(){return{setData:e.Clipboard.setData,getData:e.Clipboard.getData,disable:e.Clipboard.disable,isDisabled:e.Clipboard.isDisabled,wasInvoked:e.Clipboard.wasInvoked}}])}(LayoutEditor||(LayoutEditor={})),angular.module("LayoutEditor").factory("scopeConfigurator",["$timeout","clipboard",function(e,t){return{configureForElement:function(e,o){o.find(".layout-panel").click(function(e){e.stopPropagation()}),o.parent().keydown(function(n){var l=!1,i=!1,a=e.element;if(!a.editor.isDragging&&!a.editor.inlineEditingIsActive){if(!t.isDisabled()){var r=a.editor.focusedElement;if(r&&n.ctrlKey)switch(n.which){case 67:r.copy(t);break;case 88:r.cut(t);break;case 86:r.paste(t)}}if(n.ctrlKey||n.shiftKey||n.altKey||46!=n.which?n.ctrlKey||n.shiftKey||n.altKey||32!=n.which&&27!=n.which||(o.find(".layout-panel-action-properties").first().click(),l=!0):(e["delete"](a),l=!0),"Content"==a.type&&(n.ctrlKey||n.shiftKey||n.altKey||13!=n.which||(o.find(".layout-panel-action-edit").first().click(),l=!0)),a.children&&(n.ctrlKey||n.shiftKey||!n.altKey||40!=n.which||(a.children.length>0&&a.children[0].setIsFocused(),l=!0),"Column"==a.type)){var c=!n.ctrlKey;37==n.which?(n.altKey&&a.expandLeft(c),n.shiftKey&&a.contractRight(c),l=!0):39==n.which&&(n.altKey&&a.contractLeft(c),n.shiftKey&&a.expandRight(c),l=!0)}a.parent&&(n.altKey&&38==n.which&&(a.parent.setIsFocused(),l=!0),"Row"==a.parent.type?n.ctrlKey||n.shiftKey||n.altKey||37!=n.which?n.ctrlKey||n.shiftKey||n.altKey||39!=n.which?!n.ctrlKey||n.shiftKey||n.altKey||37!=n.which?!n.ctrlKey||n.shiftKey||n.altKey||39!=n.which||(a.moveDown(),l=!0):(a.moveUp(),i=!0,l=!0):(a.parent.moveFocusNextChild(a),l=!0):(a.parent.moveFocusPrevChild(a),l=!0):n.ctrlKey||n.shiftKey||n.altKey||38!=n.which?n.ctrlKey||n.shiftKey||n.altKey||40!=n.which?!n.ctrlKey||n.shiftKey||n.altKey||38!=n.which?!n.ctrlKey||n.shiftKey||n.altKey||40!=n.which||(a.moveDown(),l=!0):(a.moveUp(),i=!0,l=!0):(a.parent.moveFocusNextChild(a),l=!0):(a.parent.moveFocusPrevChild(a),l=!0)),l&&n.preventDefault(),n.stopPropagation(),e.$apply(),i&&window.setTimeout(function(){e.$apply(function(){a.editor.focusedElement.setIsFocused()})},100)}}),e.element.setIsFocusedEventHandlers.push(function(){o.parent().focus()}),e["delete"]=function(e){e["delete"]()}},configureForContainer:function(t,o){var n=t.element;t.getShowChildrenPlaceholder=function(){return 0===t.element.children.length&&!t.element.getIsDropTarget()},t.sortableOptions={cursor:"move",delay:150,disabled:n.getIsSealed(),distance:5,start:function(e,o){t.$apply(function(){n.setIsDropTarget(!0),n.editor.isDragging=!0}),o.placeholder.height(o.item.height()-4),o.placeholder.css("min-height",0)},stop:function(e,o){t.$apply(function(){n.editor.isDragging=!1,n.setIsDropTarget(!1)})},over:function(t,l){l.sender&&l.sender[0].isToolbox&&(l.sender[0].dropTargetTimeout&&(e.cancel(l.sender[0].dropTargetTimeout),l.sender[0].dropTargetTimeout=null),e(function(){if("Row"==n.type){var e=n.editor.dropTargetElement;e&&"Row"==e.type&&e.rollbackAddColumn()}n.setIsDropTarget(!1)}),l.sender[0].dropTargetTimeout=e(function(){if("Row"==n.type){var e=l.item.sortable.model,t=Math.floor(12/(n.children.length+1));e.width=t,e.offset=0,n.beginAddColumn(t);var a=_.max(_(o.find("> .layout-children > .layout-column:not(.ui-sortable-placeholder)")).map(function(e){return $(e).height()}));for(i=1;i<=12;i++)l.placeholder.removeClass("col-xs-"+i);l.placeholder.addClass("col-xs-"+e.width),a>0?(l.placeholder.height(a),l.placeholder.css("min-height",0)):(l.placeholder.height(0),l.placeholder.css("min-height",""))}n.setIsDropTarget(!0)},150))},receive:function(o,l){l.sender&&l.sender[0].isToolbox&&t.$apply(function(){var o=l.item.sortable.model;o&&("Row"==n.type&&n.commitAddColumn(),o.setEditor(n.editor),o.setParent(n),o.hasEditor&&t.$root.editElement(o).then(function(t){t.cancel||(o.data=t.element.data,o.applyElementEditorModel(t.elementEditorModel),o.setHtml&&o.setHtml(t.element.html)),e(function(){t.cancel?o["delete"]():o.setIsFocused(),n.setIsDropTarget(!1)})})),e(function(){n.setIsDropTarget(!1),o&&o.setIsFocused()})})}},t.click=function(e,t){e.editor.isDragging||e.setIsFocused(),t.stopPropagation()},t.getClasses=function(e){var t=["layout-element"];return e.children&&(t.push("layout-container"),e.getIsSealed()&&t.push("layout-container-sealed")),t.push("layout-"+e.type.toLowerCase()),e.dropTargetClass&&t.push(e.dropTargetClass),"Row"==e.type&&(t.push("row"),e.canAddColumn()||t.push("layout-row-full")),"Column"==e.type&&(t.push("col-xs-"+e.width),t.push("col-xs-offset-"+e.offset)),"Content"==e.type&&t.push("layout-content-"+e.contentTypeClass),e.getIsActive()&&t.push("layout-element-active"),e.getIsFocused()&&t.push("layout-element-focused"),e.getIsSelected()&&t.push("layout-element-selected"),e.getIsDropTarget()&&t.push("layout-element-droptarget"),e.isTemplated&&t.push("layout-element-templated"),t}}}}]),angular.module("LayoutEditor").directive("orcLayoutEditor",["environment",function(environment){return{restrict:"E",scope:{},controller:["$scope","$element","$attrs","$compile","clipboard",function($scope,$element,$attrs,$compile,clipboard){if(!$attrs.model)throw new Error("The 'model' attribute must evaluate to a LayoutEditor.Editor object.");$scope.element=eval($attrs.model),$scope.click=function(e,t){e.editor.isDragging||e.setIsFocused(),t.stopPropagation()},$scope.getClasses=function(e){var t=["layout-element","layout-container","layout-canvas"];return e.getIsActive()&&t.push("layout-element-active"),e.getIsFocused()&&t.push("layout-element-focused"),e.getIsSelected()&&t.push("layout-element-selected"),e.getIsDropTarget()&&t.push("layout-element-droptarget"),e.isTemplated&&t.push("layout-element-templated"),t};var layoutDesignerHost=$(".layout-designer").data("layout-designer-host");$scope.$root.layoutDesignerHost=layoutDesignerHost,layoutDesignerHost.element.on("replacecanvas",function(e,t){var o=$scope.element,n={data:t.canvas.data,htmlId:t.canvas.htmlId,htmlClass:t.canvas.htmlClass,htmlStyle:t.canvas.htmlStyle,isTemplated:t.canvas.isTemplated,children:t.canvas.children};layoutDesignerHost.editor=window.layoutEditor=new LayoutEditor.Editor(o.config,n);var l="",i=$compile(l)($scope);$(".layout-editor-holder").html(i)}),$scope.$root.editElement=function(e){var t=$scope.$root.layoutDesignerHost;return t.editElement(e)},$scope.$root.addElement=function(e){var t=$scope.$root.layoutDesignerHost;return t.addElement(e)},$scope.toggleInlineEditing=function(){if($scope.element.inlineEditingIsActive)tinymce.remove("#layout-editor-"+$scope.$id+" .layout-content-markup"),$element.find(".layout-toolbar-container").hide(),$scope.element.inlineEditingIsActive=!1;else{$scope.element.inlineEditingIsActive=!0,$element.find(".layout-toolbar-container").show();var e="#layout-editor-"+$scope.$id+" .layout-html .layout-content-markup[data-templated=false]",t=$(e).first().attr("id");tinymce.init({selector:e,theme:"modern",schema:"html5",plugins:["advlist autolink lists link image charmap print preview hr anchor pagebreak","searchreplace wordcount visualblocks visualchars code fullscreen","insertdatetime media nonbreaking table contextmenu directionality","emoticons template paste textcolor colorpicker textpattern","fullscreen autoresize"],toolbar:"undo redo cut copy paste | bold italic | bullist numlist outdent indent formatselect | alignleft aligncenter alignright alignjustify ltr rtl | link unlink charmap | code fullscreen close",convert_urls:!1,valid_elements:"*[*]",extended_valid_elements:"script[type|defer|src|language]",statusbar:!1,skin:"orchardlightgray",inline:!0,fixed_toolbar_container:"#layout-editor-"+$scope.$id+" .layout-toolbar-container",init_instance_callback:function(e){e.id==t&&tinymce.execCommand("mceFocus",!1,e.id)}})}},$(document).on("cut copy paste",function(e){if(clipboard.wasInvoked())e.originalEvent.clipboardData.setData("text/plain",clipboard.getData("text/plain")),e.originalEvent.clipboardData.setData("text/json",clipboard.getData("text/json")),e.preventDefault();else{var t=$scope.element.focusedElement;t&&($scope.$apply(function(){switch(e.type){case"copy":t.copy(e.originalEvent.clipboardData);break;case"cut":t.cut(e.originalEvent.clipboardData);break;case"paste":t.paste(e.originalEvent.clipboardData)}}),window.setTimeout(function(){$scope.$apply(function(){$scope.element.focusedElement&&$scope.element.focusedElement.setIsFocused()})},100),e.preventDefault())}clipboard.disable()})}],templateUrl:environment.templateUrl("Editor"),replace:!0,link:function(e,t){t.find(".layout-toolbar-container").click(function(e){e.stopPropagation()}),t.mousedown(function(t){e.element.inlineEditingIsActive&&(t.preventDefault(),t.stopPropagation())}),$(window).click(function(t){e.element.inlineEditingIsActive||e.$apply(function(){e.element.activeElement=null,e.element.focusedElement=null})})}}}]),angular.module("LayoutEditor").directive("orcLayoutCanvas",["scopeConfigurator","environment",function(e,t){return{restrict:"E",scope:{element:"="},controller:["$scope","$element","$attrs",function(t,o,n){e.configureForElement(t,o),e.configureForContainer(t,o),t.sortableOptions.axis="y"}],templateUrl:t.templateUrl("Canvas"),replace:!0}}]),angular.module("LayoutEditor").directive("orcLayoutChild",["$compile",function(e){return{restrict:"E",scope:{element:"="},link:function(t,o){var n="",l=e(n)(t);$(o).replaceWith(l)}}}]),angular.module("LayoutEditor").directive("orcLayoutColumn",["$compile","scopeConfigurator","environment",function(e,t,o){return{restrict:"E",scope:{element:"="},controller:["$scope","$element",function(e,o){t.configureForElement(e,o),t.configureForContainer(e,o),e.sortableOptions.axis="y"}],templateUrl:o.templateUrl("Column"),replace:!0,link:function(e,t,o){t.find(".layout-column-resize-bar").draggable({axis:"x",helper:"clone",revert:!0,start:function(t,o){e.$apply(function(){e.element.editor.isResizing=!0})},drag:function(o,n){var l=t.parent(),i=l.width()/e.element.width,a=!o.ctrlKey;if($(o.target).hasClass("layout-column-resize-bar-left")){var r=n.offset.left-l.offset().left;-i>r&&e.element.canExpandLeft(a)?e.$apply(function(){e.element.expandLeft(a)}):r>i&&e.element.canContractLeft(a)&&e.$apply(function(){e.element.contractLeft(a)})}else if($(o.target).hasClass("layout-column-resize-bar-right")){var r=n.offset.left-l.width()-l.offset().left;r>i&&e.element.canExpandRight(a)?e.$apply(function(){e.element.expandRight(a)}):-i>r&&e.element.canContractRight(a)&&e.$apply(function(){e.element.contractRight(a)})}},stop:function(t,o){e.$apply(function(){e.element.editor.isResizing=!1})}})}}}]),angular.module("LayoutEditor").directive("orcLayoutContent",["$sce","scopeConfigurator","environment",function(e,t,o){return{restrict:"E",scope:{element:"="},controller:["$scope","$element",function(o,n){t.configureForElement(o,n),o.edit=function(){o.$root.editElement(o.element).then(function(e){o.$apply(function(){e.cancel||(o.element.data=e.element.data,o.element.setHtml(e.element.html))})})},o.element.setHtml=function(t){o.element.html=t,o.element.htmlUnsafe=e.trustAsHtml(t)},o.element.setHtml(o.element.html)}],templateUrl:o.templateUrl("Content"),replace:!0}}]),angular.module("LayoutEditor").directive("orcLayoutHtml",["$sce","scopeConfigurator","environment",function(e,t,o){return{restrict:"E",scope:{element:"="},controller:["$scope","$element",function(o,n){t.configureForElement(o,n),o.edit=function(){o.$root.editElement(o.element).then(function(e){o.$apply(function(){e.cancel||(o.element.data=e.element.data,o.element.setHtml(e.element.html))})})},o.updateContent=function(e){o.element.setHtml(e.target.innerHTML)},o.element.setHtml=function(t){o.element.html=t,o.element.htmlUnsafe=e.trustAsHtml(t)},o.element.setHtml(o.element.html)}],templateUrl:o.templateUrl("Html"),replace:!0,link:function(e,t){t.find(".layout-content-markup").mousedown(function(t){e.element.editor.inlineEditingIsActive&&t.stopPropagation()})}}}]),angular.module("LayoutEditor").directive("orcLayoutGrid",["$compile","scopeConfigurator","environment",function(e,t,o){return{restrict:"E",scope:{element:"="},controller:["$scope","$element",function(e,o){t.configureForElement(e,o),t.configureForContainer(e,o),e.sortableOptions.axis="y"}],templateUrl:o.templateUrl("Grid"),replace:!0}}]),angular.module("LayoutEditor").directive("orcLayoutRow",["$compile","scopeConfigurator","environment",function(e,t,o){return{restrict:"E",scope:{element:"="},controller:["$scope","$element",function(e,o){t.configureForElement(e,o),t.configureForContainer(e,o),e.sortableOptions.axis="x",e.sortableOptions["ui-floating"]=!0}],templateUrl:o.templateUrl("Row"),replace:!0}}]),angular.module("LayoutEditor").directive("orcLayoutPopup",[function(){return{restrict:"A",link:function(e,t,o){var n=$(t),l=n.closest(".layout-popup-trigger"),i=n.closest(".layout-element");l.click(function(){n.toggle(),n.is(":visible")&&(n.position({my:o.orcLayoutPopupMy||"left top",at:o.orcLayoutPopupAt||"left bottom+4px",of:l}),n.find("input").first().focus())}),n.click(function(e){e.stopPropagation()}),i.click(function(e){n.hide()}),n.keydown(function(e){e.ctrlKey||e.shiftKey||e.altKey||27!=e.which||n.hide(),e.stopPropagation()}),n.on("cut copy paste",function(e){e.stopPropagation()})}}}]),angular.module("LayoutEditor").directive("orcLayoutToolbox",["$compile","environment",function(e,t){return{restrict:"E",controller:["$scope","$element",function(e,t){e.resetElements=function(){e.gridElements=[LayoutEditor.Grid.from({toolboxIcon:"",toolboxLabel:"Grid",toolboxDescription:"Empty grid.",children:[]})],e.rowElements=[LayoutEditor.Row.from({toolboxIcon:"",toolboxLabel:"Row (1 column)",toolboxDescription:"Row with 1 column.",children:LayoutEditor.Column.times(1)}),LayoutEditor.Row.from({toolboxIcon:"",toolboxLabel:"Row (2 columns)",toolboxDescription:"Row with 2 columns.",children:LayoutEditor.Column.times(2)}),LayoutEditor.Row.from({toolboxIcon:"",toolboxLabel:"Row (3 columns)",toolboxDescription:"Row with 3 columns.",children:LayoutEditor.Column.times(3)}),LayoutEditor.Row.from({toolboxIcon:"",toolboxLabel:"Row (4 columns)",toolboxDescription:"Row with 4 columns.",children:LayoutEditor.Column.times(4)}),LayoutEditor.Row.from({toolboxIcon:"",toolboxLabel:"Row (6 columns)",toolboxDescription:"Row with 6 columns.",children:LayoutEditor.Column.times(6)}),LayoutEditor.Row.from({toolboxIcon:"",toolboxLabel:"Row (12 columns)",toolboxDescription:"Row with 12 columns.",children:LayoutEditor.Column.times(12)}),LayoutEditor.Row.from({toolboxIcon:"",toolboxLabel:"Row (empty)",toolboxDescription:"Empty row.",children:[]})],e.columnElements=[LayoutEditor.Column.from({toolboxIcon:"",toolboxLabel:"Column",toolboxDescription:"Empty column.",width:1,offset:0,children:[]})],e.contentElementCategories=_(e.element.config.categories).map(function(e){return{name:e.name,elements:_(e.contentTypes).map(function(e){var t=e.type,o=LayoutEditor.factories[t]||LayoutEditor.factories.Content,n={isTemplated:!1,contentType:e.id,contentTypeLabel:e.label,contentTypeClass:e.typeClass,data:null,hasEditor:e.hasEditor,html:e.html},l=o(n);return l.toolboxIcon=e.icon||"",l.toolboxLabel=e.label,l.toolboxDescription=e.description,l})}})},e.resetElements(),e.getSortableOptions=function(o){var n,l,i=t.closest(".layout-editor").attr("id"),a=!1;switch(o){case"Grid":n=[".layout-canvas",".layout-column",".layout-common-holder"],l="layout-element layout-container layout-grid ui-sortable-placeholder";break;case"Row":n=[".layout-grid"],l="layout-element layout-container layout-row row ui-sortable-placeholder";break;case"Column":n=[".layout-row:not(.layout-row-full)"],l="layout-element layout-container layout-column ui-sortable-placeholder",a=!0;break;case"Content":n=[".layout-canvas",".layout-column",".layout-common-holder"],l="layout-element layout-content ui-sortable-placeholder"}return{cursor:"move",connectWith:_(n).map(function(e){return"#"+i+" "+e+":not(.layout-container-sealed) > .layout-element-wrapper > .layout-children"}).join(", "),placeholder:l,"ui-floating":a,create:function(e,t){e.target.isToolbox=!0},start:function(t,o){e.$apply(function(){e.element.isDragging=!0})},stop:function(t,o){e.$apply(function(){e.element.isDragging=!1,e.resetElements()})},over:function(t,o){e.$apply(function(){e.element.canvas.setIsDropTarget(!1)})}}};var o="layoutToolboxCategory_Layout_IsCollapsed";e.layoutIsCollapsed="true"===$.cookie(o),e.toggleLayoutIsCollapsed=function(t){e.layoutIsCollapsed=!e.layoutIsCollapsed,$.cookie(o,e.layoutIsCollapsed,{expires:365}),t.preventDefault(),t.stopPropagation()}}],templateUrl:t.templateUrl("Toolbox"),replace:!0,link:function(e,t){var o=t.find(".layout-toolbox");$(window).on("resize scroll",function(e){var n=t.parent().find(".layout-canvas"),l=!!n&&n.height()>o.height(),i=$(window).scrollTop();l&&i>t.offset().top+t.height()-o.height()?(o.addClass("sticky-bottom"),o.removeClass("sticky-top")):l&&i>t.offset().top?(o.addClass("sticky-top"),o.removeClass("sticky-bottom")):(o.removeClass("sticky-top"),o.removeClass("sticky-bottom"))})}}}]),angular.module("LayoutEditor").directive("orcLayoutToolboxGroup",["$compile","environment",function(e,t){return{restrict:"E",scope:{category:"="},controller:["$scope","$element",function(e,t){var o="layoutToolboxCategory_"+e.category.name+"_IsCollapsed";e.isCollapsed="true"===$.cookie(o),e.toggleIsCollapsed=function(t){e.isCollapsed=!e.isCollapsed,$.cookie(o,e.isCollapsed,{expires:365}),t.preventDefault(),t.stopPropagation()}}],templateUrl:t.templateUrl("ToolboxGroup"),replace:!0}}]); \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/LayoutEditor/Services/ScopeConfigurator.js b/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/LayoutEditor/Services/ScopeConfigurator.js index d7da1feb8..988fdde43 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/LayoutEditor/Services/ScopeConfigurator.js +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/LayoutEditor/Services/ScopeConfigurator.js @@ -236,12 +236,14 @@ // Because of this, we need to invoke "setParent" so that specific container types can perform element speficic initialization. receivedElement.setEditor(element.editor); receivedElement.setParent(element); + if (!!receivedElement.hasEditor) { $scope.$root.editElement(receivedElement).then(function (args) { if (!args.cancel) { receivedElement.data = args.element.data; + receivedElement.applyElementEditorModel(args.elementEditorModel); - if (receivedElement.setHtml) + if (!!receivedElement.setHtml) receivedElement.setHtml(args.element.html); } $timeout(function () { diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/Models.js b/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/Models.js index 205f708ad..ddeeaba76 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/Models.js +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/Models.js @@ -102,9 +102,13 @@ var LayoutEditor; this.setParent = function(parentElement) { this.parent = parentElement; + this.parent.onChildAdded(this); - if (!!this.parent.linkChild) - this.parent.linkChild(this); + var currentAncestor = parentElement; + while (!!currentAncestor) { + currentAncestor.onDescendantAdded(this, parentElement); + currentAncestor = currentAncestor.parent; + } }; this.setIsTemplated = function (value) { @@ -116,6 +120,8 @@ var LayoutEditor; } }; + this.applyElementEditorModel = function() { /* Virtual */ }; + this.getIsActive = function () { if (!this.editor) return false; @@ -259,12 +265,15 @@ var LayoutEditor; this.children = children; this.isContainer = true; - var _self = this; + var self = this; + + this.onChildAdded = function (element) { /* Virtual */ }; + this.onDescendantAdded = function (element, parentElement) { /* Virtual */ }; this.setChildren = function (children) { this.children = children; _(this.children).each(function (child) { - child.parent = _self; + child.setParent(self); }); }; @@ -281,7 +290,7 @@ var LayoutEditor; this.children.push(child); child.setEditor(this.editor); child.setIsTemplated(false); - child.parent = this; + child.setParent(this); }; this.deleteChild = function (child) { @@ -986,4 +995,4 @@ var LayoutEditor; LayoutEditor.registerFactory("Html", function(value) { return LayoutEditor.Html.from(value); }); })(jQuery, LayoutEditor || (LayoutEditor = {})); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkhlbHBlcnMuanMiLCJFZGl0b3IuanMiLCJFbGVtZW50LmpzIiwiQ29udGFpbmVyLmpzIiwiQ2FudmFzLmpzIiwiR3JpZC5qcyIsIlJvdy5qcyIsIkNvbHVtbi5qcyIsIkNvbnRlbnQuanMiLCJIdG1sLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQ3pDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUNoQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FDaExBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FDcElBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUN6QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQzVCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUM1UkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUN2SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUN6REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ik1vZGVscy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBMYXlvdXRFZGl0b3I7XG4oZnVuY3Rpb24gKExheW91dEVkaXRvcikge1xuXG4gICAgQXJyYXkucHJvdG90eXBlLm1vdmUgPSBmdW5jdGlvbiAoZnJvbSwgdG8pIHtcbiAgICAgICAgdGhpcy5zcGxpY2UodG8sIDAsIHRoaXMuc3BsaWNlKGZyb20sIDEpWzBdKTtcbiAgICB9O1xuXG4gICAgTGF5b3V0RWRpdG9yLmNoaWxkcmVuRnJvbSA9IGZ1bmN0aW9uKHZhbHVlcykge1xuICAgICAgICByZXR1cm4gXyh2YWx1ZXMpLm1hcChmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIExheW91dEVkaXRvci5lbGVtZW50RnJvbSh2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICB2YXIgcmVnaXN0ZXJGYWN0b3J5ID0gTGF5b3V0RWRpdG9yLnJlZ2lzdGVyRmFjdG9yeSA9IGZ1bmN0aW9uKHR5cGUsIGZhY3RvcnkpIHtcbiAgICAgICAgdmFyIGZhY3RvcmllcyA9IExheW91dEVkaXRvci5mYWN0b3JpZXMgPSBMYXlvdXRFZGl0b3IuZmFjdG9yaWVzIHx8IHt9O1xuICAgICAgICBmYWN0b3JpZXNbdHlwZV0gPSBmYWN0b3J5O1xuICAgIH07XG5cbiAgICByZWdpc3RlckZhY3RvcnkoXCJHcmlkXCIsIGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiBMYXlvdXRFZGl0b3IuR3JpZC5mcm9tKHZhbHVlKTsgfSk7XG4gICAgcmVnaXN0ZXJGYWN0b3J5KFwiUm93XCIsIGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiBMYXlvdXRFZGl0b3IuUm93LmZyb20odmFsdWUpOyB9KTtcbiAgICByZWdpc3RlckZhY3RvcnkoXCJDb2x1bW5cIiwgZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIExheW91dEVkaXRvci5Db2x1bW4uZnJvbSh2YWx1ZSk7IH0pO1xuICAgIHJlZ2lzdGVyRmFjdG9yeShcIkNvbnRlbnRcIiwgZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIExheW91dEVkaXRvci5Db250ZW50LmZyb20odmFsdWUpOyB9KTtcblxuICAgIExheW91dEVkaXRvci5lbGVtZW50RnJvbSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgZmFjdG9yeSA9IExheW91dEVkaXRvci5mYWN0b3JpZXNbdmFsdWUudHlwZV07XG5cbiAgICAgICAgaWYgKCFmYWN0b3J5KVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gZWxlbWVudCB3aXRoIHR5cGUgXFxcIlwiICsgdmFsdWUudHlwZSArIFwiXFxcIiB3YXMgZm91bmQuXCIpO1xuXG4gICAgICAgIHZhciBlbGVtZW50ID0gZmFjdG9yeSh2YWx1ZSk7XG4gICAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH07XG5cbiAgICBMYXlvdXRFZGl0b3Iuc2V0TW9kZWwgPSBmdW5jdGlvbiAoZWxlbWVudFNlbGVjdG9yLCBtb2RlbCkge1xuICAgICAgICAkKGVsZW1lbnRTZWxlY3Rvcikuc2NvcGUoKS5lbGVtZW50ID0gbW9kZWw7XG4gICAgfTtcblxuICAgIExheW91dEVkaXRvci5nZXRNb2RlbCA9IGZ1bmN0aW9uIChlbGVtZW50U2VsZWN0b3IpIHtcbiAgICAgICAgcmV0dXJuICQoZWxlbWVudFNlbGVjdG9yKS5zY29wZSgpLmVsZW1lbnQ7XG4gICAgfTtcblxufSkoTGF5b3V0RWRpdG9yIHx8IChMYXlvdXRFZGl0b3IgPSB7fSkpOyIsInZhciBMYXlvdXRFZGl0b3I7XG4oZnVuY3Rpb24gKExheW91dEVkaXRvcikge1xuXG4gICAgTGF5b3V0RWRpdG9yLkVkaXRvciA9IGZ1bmN0aW9uIChjb25maWcsIGNhbnZhc0RhdGEpIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgICAgIHRoaXMuY2FudmFzID0gTGF5b3V0RWRpdG9yLkNhbnZhcy5mcm9tKGNhbnZhc0RhdGEpO1xuICAgICAgICB0aGlzLmluaXRpYWxTdGF0ZSA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY2FudmFzLnRvT2JqZWN0KCkpO1xuICAgICAgICB0aGlzLmFjdGl2ZUVsZW1lbnQgPSBudWxsO1xuICAgICAgICB0aGlzLmZvY3VzZWRFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgdGhpcy5kcm9wVGFyZ2V0RWxlbWVudCA9IG51bGw7XG4gICAgICAgIHRoaXMuaXNEcmFnZ2luZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlubGluZUVkaXRpbmdJc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzUmVzaXppbmcgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLnJlc2V0VG9vbGJveEVsZW1lbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy50b29sYm94RWxlbWVudHMgPSBbXG4gICAgICAgICAgICAgICAgTGF5b3V0RWRpdG9yLlJvdy5mcm9tKHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtdXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF07XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5pc0RpcnR5ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgY3VycmVudFN0YXRlID0gSlNPTi5zdHJpbmdpZnkodGhpcy5jYW52YXMudG9PYmplY3QoKSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pbml0aWFsU3RhdGUgIT0gY3VycmVudFN0YXRlO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMucmVzZXRUb29sYm94RWxlbWVudHMoKTtcbiAgICAgICAgdGhpcy5jYW52YXMuc2V0RWRpdG9yKHRoaXMpO1xuICAgIH07XG5cbn0pKExheW91dEVkaXRvciB8fCAoTGF5b3V0RWRpdG9yID0ge30pKTtcbiIsInZhciBMYXlvdXRFZGl0b3I7XG4oZnVuY3Rpb24gKExheW91dEVkaXRvcikge1xuXG4gICAgTGF5b3V0RWRpdG9yLkVsZW1lbnQgPSBmdW5jdGlvbiAodHlwZSwgZGF0YSwgaHRtbElkLCBodG1sQ2xhc3MsIGh0bWxTdHlsZSwgaXNUZW1wbGF0ZWQpIHtcbiAgICAgICAgaWYgKCF0eXBlKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGFyYW1ldGVyICd0eXBlJyBpcyByZXF1aXJlZC5cIik7XG5cbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICAgICAgdGhpcy5odG1sSWQgPSBodG1sSWQ7XG4gICAgICAgIHRoaXMuaHRtbENsYXNzID0gaHRtbENsYXNzO1xuICAgICAgICB0aGlzLmh0bWxTdHlsZSA9IGh0bWxTdHlsZTtcbiAgICAgICAgdGhpcy5pc1RlbXBsYXRlZCA9IGlzVGVtcGxhdGVkO1xuXG4gICAgICAgIHRoaXMuZWRpdG9yID0gbnVsbDtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBudWxsO1xuICAgICAgICB0aGlzLnNldElzRm9jdXNlZEV2ZW50SGFuZGxlcnMgPSBbXTtcblxuICAgICAgICB0aGlzLnNldEVkaXRvciA9IGZ1bmN0aW9uIChlZGl0b3IpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yID0gZWRpdG9yO1xuICAgICAgICAgICAgaWYgKCEhdGhpcy5jaGlsZHJlbiAmJiBfLmlzQXJyYXkodGhpcy5jaGlsZHJlbikpIHtcbiAgICAgICAgICAgICAgICBfKHRoaXMuY2hpbGRyZW4pLmVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLnNldEVkaXRvcihlZGl0b3IpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuc2V0UGFyZW50ID0gZnVuY3Rpb24ocGFyZW50RWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnRFbGVtZW50O1xuXG4gICAgICAgICAgICBpZiAoISF0aGlzLnBhcmVudC5saW5rQ2hpbGQpXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQubGlua0NoaWxkKHRoaXMpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuc2V0SXNUZW1wbGF0ZWQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuaXNUZW1wbGF0ZWQgPSB2YWx1ZTtcbiAgICAgICAgICAgIGlmICghIXRoaXMuY2hpbGRyZW4gJiYgXy5pc0FycmF5KHRoaXMuY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgXyh0aGlzLmNoaWxkcmVuKS5lYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZC5zZXRJc1RlbXBsYXRlZCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5nZXRJc0FjdGl2ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5lZGl0b3IpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yLmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMgJiYgIXRoaXMuZ2V0SXNGb2N1c2VkKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5zZXRJc0FjdGl2ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmVkaXRvcilcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBpZiAodGhpcy5lZGl0b3IuaXNEcmFnZ2luZyB8fCB0aGlzLmVkaXRvci5pbmxpbmVFZGl0aW5nSXNBY3RpdmUgfHwgdGhpcy5lZGl0b3IuaXNSZXNpemluZylcbiAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSlcbiAgICAgICAgICAgICAgICB0aGlzLmVkaXRvci5hY3RpdmVFbGVtZW50ID0gdGhpcztcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0aGlzLmVkaXRvci5hY3RpdmVFbGVtZW50ID0gdGhpcy5wYXJlbnQ7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5nZXRJc0ZvY3VzZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZWRpdG9yKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVkaXRvci5mb2N1c2VkRWxlbWVudCA9PT0gdGhpcztcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnNldElzRm9jdXNlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5lZGl0b3IpXG4gICAgICAgICAgICBcdHJldHVybjtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzVGVtcGxhdGVkKVxuICAgICAgICAgICAgXHRyZXR1cm47XG4gICAgICAgICAgICBpZiAodGhpcy5lZGl0b3IuaXNEcmFnZ2luZyB8fCB0aGlzLmVkaXRvci5pbmxpbmVFZGl0aW5nSXNBY3RpdmUgfHwgdGhpcy5lZGl0b3IuaXNSZXNpemluZylcbiAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgIHRoaXMuZWRpdG9yLmZvY3VzZWRFbGVtZW50ID0gdGhpcztcbiAgICAgICAgICAgIF8odGhpcy5zZXRJc0ZvY3VzZWRFdmVudEhhbmRsZXJzKS5lYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlLlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZ2V0SXNTZWxlY3RlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldElzRm9jdXNlZCgpKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgICAgICAgICBpZiAoISF0aGlzLmNoaWxkcmVuICYmIF8uaXNBcnJheSh0aGlzLmNoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfKHRoaXMuY2hpbGRyZW4pLmFueShmdW5jdGlvbihjaGlsZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0SXNTZWxlY3RlZCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5nZXRJc0Ryb3BUYXJnZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZWRpdG9yKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVkaXRvci5kcm9wVGFyZ2V0RWxlbWVudCA9PT0gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0SXNEcm9wVGFyZ2V0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZWRpdG9yKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGlmICh2YWx1ZSlcbiAgICAgICAgICAgICAgICB0aGlzLmVkaXRvci5kcm9wVGFyZ2V0RWxlbWVudCA9IHRoaXM7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0b3IuZHJvcFRhcmdldEVsZW1lbnQgPSBudWxsO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZGVsZXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKCEhdGhpcy5wYXJlbnQpXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuZGVsZXRlQ2hpbGQodGhpcyk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5jYW5Nb3ZlVXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMucGFyZW50KVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudC5jYW5Nb3ZlQ2hpbGRVcCh0aGlzKTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLm1vdmVVcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICghIXRoaXMucGFyZW50KVxuICAgICAgICAgICAgICAgIHRoaXMucGFyZW50Lm1vdmVDaGlsZFVwKHRoaXMpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuY2FuTW92ZURvd24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMucGFyZW50KVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudC5jYW5Nb3ZlQ2hpbGREb3duKHRoaXMpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMubW92ZURvd24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoISF0aGlzLnBhcmVudClcbiAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5tb3ZlQ2hpbGREb3duKHRoaXMpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZWxlbWVudFRvT2JqZWN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgICAgICAgICAgZGF0YTogdGhpcy5kYXRhLFxuICAgICAgICAgICAgICAgIGh0bWxJZDogdGhpcy5odG1sSWQsXG4gICAgICAgICAgICAgICAgaHRtbENsYXNzOiB0aGlzLmh0bWxDbGFzcyxcbiAgICAgICAgICAgICAgICBodG1sU3R5bGU6IHRoaXMuaHRtbFN0eWxlLFxuICAgICAgICAgICAgICAgIGlzVGVtcGxhdGVkOiB0aGlzLmlzVGVtcGxhdGVkXG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZ2V0RWRpdG9yT2JqZWN0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5jb3B5ID0gZnVuY3Rpb24gKGNsaXBib2FyZERhdGEpIHtcbiAgICAgICAgICAgIHZhciB0ZXh0ID0gdGhpcy5nZXRJbm5lclRleHQoKTtcbiAgICAgICAgICAgIGNsaXBib2FyZERhdGEuc2V0RGF0YShcInRleHQvcGxhaW5cIiwgdGV4dCk7XG5cbiAgICAgICAgICAgIHZhciBkYXRhID0gdGhpcy50b09iamVjdCgpO1xuICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCBcIlxcdFwiKTtcbiAgICAgICAgICAgIGNsaXBib2FyZERhdGEuc2V0RGF0YShcInRleHQvanNvblwiLCBqc29uKTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmN1dCA9IGZ1bmN0aW9uIChjbGlwYm9hcmREYXRhKSB7XG4gICAgICAgICAgICB0aGlzLmNvcHkoY2xpcGJvYXJkRGF0YSk7XG4gICAgICAgICAgICB0aGlzLmRlbGV0ZSgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMucGFzdGUgPSBmdW5jdGlvbiAoY2xpcGJvYXJkRGF0YSkge1xuICAgICAgICAgICAgaWYgKCEhdGhpcy5wYXJlbnQpXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQucGFzdGUoY2xpcGJvYXJkRGF0YSk7XG4gICAgICAgIH07XG4gICAgfTtcblxufSkoTGF5b3V0RWRpdG9yIHx8IChMYXlvdXRFZGl0b3IgPSB7fSkpOyIsInZhciBMYXlvdXRFZGl0b3I7XG4oZnVuY3Rpb24gKExheW91dEVkaXRvcikge1xuXG4gICAgTGF5b3V0RWRpdG9yLkNvbnRhaW5lciA9IGZ1bmN0aW9uIChhbGxvd2VkQ2hpbGRUeXBlcywgY2hpbGRyZW4pIHtcblxuICAgICAgICB0aGlzLmFsbG93ZWRDaGlsZFR5cGVzID0gYWxsb3dlZENoaWxkVHlwZXM7XG4gICAgICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICAgICAgdGhpcy5pc0NvbnRhaW5lciA9IHRydWU7XG5cbiAgICAgICAgdmFyIF9zZWxmID0gdGhpcztcblxuICAgICAgICB0aGlzLnNldENoaWxkcmVuID0gZnVuY3Rpb24gKGNoaWxkcmVuKSB7XG4gICAgICAgICAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgICAgICAgICBfKHRoaXMuY2hpbGRyZW4pLmVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgICAgICAgY2hpbGQucGFyZW50ID0gX3NlbGY7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnNldENoaWxkcmVuKGNoaWxkcmVuKTtcblxuICAgICAgICB0aGlzLmdldElzU2VhbGVkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF8odGhpcy5jaGlsZHJlbikuYW55KGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZC5pc1RlbXBsYXRlZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuYWRkQ2hpbGQgPSBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAgIGlmICghXyh0aGlzLmNoaWxkcmVuKS5jb250YWlucyhjaGlsZCkgJiYgKF8odGhpcy5hbGxvd2VkQ2hpbGRUeXBlcykuY29udGFpbnMoY2hpbGQudHlwZSkgfHwgY2hpbGQuaXNDb250YWluYWJsZSkpXG4gICAgICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgIGNoaWxkLnNldEVkaXRvcih0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICBjaGlsZC5zZXRJc1RlbXBsYXRlZChmYWxzZSk7XG4gICAgICAgICAgICBjaGlsZC5wYXJlbnQgPSB0aGlzO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZGVsZXRlQ2hpbGQgPSBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAgIHZhciBpbmRleCA9IF8odGhpcy5jaGlsZHJlbikuaW5kZXhPZihjaGlsZCk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4uc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGQuZ2V0SXNBY3RpdmUoKSlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lZGl0b3IuYWN0aXZlRWxlbWVudCA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkLmdldElzRm9jdXNlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBkZWxldGVkIGNoaWxkIHdhcyBmb2N1c2VkLCB0cnkgdG8gc2V0IG5ldyBmb2N1cyB0byB0aGUgbW9zdCBhcHByb3ByaWF0ZSBzaWJsaW5nIG9yIHBhcmVudC5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoID4gaW5kZXgpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoaWxkcmVuW2luZGV4XS5zZXRJc0ZvY3VzZWQoKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaW5kZXggPiAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGlsZHJlbltpbmRleCAtIDFdLnNldElzRm9jdXNlZCgpO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldElzRm9jdXNlZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLm1vdmVGb2N1c1ByZXZDaGlsZCA9IGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoIDwgMilcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB2YXIgaW5kZXggPSBfKHRoaXMuY2hpbGRyZW4pLmluZGV4T2YoY2hpbGQpO1xuICAgICAgICAgICAgaWYgKGluZGV4ID4gMClcbiAgICAgICAgICAgICAgICB0aGlzLmNoaWxkcmVuW2luZGV4IC0gMV0uc2V0SXNGb2N1c2VkKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5tb3ZlRm9jdXNOZXh0Q2hpbGQgPSBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNoaWxkcmVuLmxlbmd0aCA8IDIpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgdmFyIGluZGV4ID0gXyh0aGlzLmNoaWxkcmVuKS5pbmRleE9mKGNoaWxkKTtcbiAgICAgICAgICAgIGlmIChpbmRleCA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoIC0gMSlcbiAgICAgICAgICAgICAgICB0aGlzLmNoaWxkcmVuW2luZGV4ICsgMV0uc2V0SXNGb2N1c2VkKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5pbnNlcnRDaGlsZCA9IGZ1bmN0aW9uIChjaGlsZCwgYWZ0ZXJDaGlsZCkge1xuICAgICAgICAgICAgaWYgKCFfKHRoaXMuY2hpbGRyZW4pLmNvbnRhaW5zKGNoaWxkKSkge1xuICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IE1hdGgubWF4KF8odGhpcy5jaGlsZHJlbikuaW5kZXhPZihhZnRlckNoaWxkKSwgMCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5zcGxpY2UoaW5kZXggKyAxLCAwLCBjaGlsZCk7XG4gICAgICAgICAgICAgICAgY2hpbGQuc2V0RWRpdG9yKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgICAgICAgICBjaGlsZC5wYXJlbnQgPSB0aGlzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMubW92ZUNoaWxkVXAgPSBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5jYW5Nb3ZlQ2hpbGRVcChjaGlsZCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgdmFyIGluZGV4ID0gXyh0aGlzLmNoaWxkcmVuKS5pbmRleE9mKGNoaWxkKTtcbiAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4ubW92ZShpbmRleCwgaW5kZXggLSAxKTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLm1vdmVDaGlsZERvd24gPSBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5jYW5Nb3ZlQ2hpbGREb3duKGNoaWxkKSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB2YXIgaW5kZXggPSBfKHRoaXMuY2hpbGRyZW4pLmluZGV4T2YoY2hpbGQpO1xuICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5tb3ZlKGluZGV4LCBpbmRleCArIDEpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuY2FuTW92ZUNoaWxkVXAgPSBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAgIHZhciBpbmRleCA9IF8odGhpcy5jaGlsZHJlbikuaW5kZXhPZihjaGlsZCk7XG4gICAgICAgICAgICByZXR1cm4gaW5kZXggPiAwO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuY2FuTW92ZUNoaWxkRG93biA9IGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgICAgdmFyIGluZGV4ID0gXyh0aGlzLmNoaWxkcmVuKS5pbmRleE9mKGNoaWxkKTtcbiAgICAgICAgICAgIHJldHVybiBpbmRleCA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoIC0gMTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmNoaWxkcmVuVG9PYmplY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gXyh0aGlzLmNoaWxkcmVuKS5tYXAoZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkLnRvT2JqZWN0KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmdldElubmVyVGV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfKHRoaXMuY2hpbGRyZW4pLnJlZHVjZShmdW5jdGlvbiAobWVtbywgY2hpbGQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWVtbyArIFwiXFxuXCIgKyBjaGlsZC5nZXRJbm5lclRleHQoKTtcbiAgICAgICAgICAgIH0sIFwiXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wYXN0ZSA9IGZ1bmN0aW9uIChjbGlwYm9hcmREYXRhKSB7XG4gICAgICAgICAgICB2YXIganNvbiA9IGNsaXBib2FyZERhdGEuZ2V0RGF0YShcInRleHQvanNvblwiKTtcbiAgICAgICAgICAgIGlmICghIWpzb24pIHtcbiAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UoanNvbik7XG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkID0gTGF5b3V0RWRpdG9yLmVsZW1lbnRGcm9tKGRhdGEpO1xuICAgICAgICAgICAgICAgIHRoaXMucGFzdGVDaGlsZChjaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5wYXN0ZUNoaWxkID0gZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgICBpZiAoXyh0aGlzLmFsbG93ZWRDaGlsZFR5cGVzKS5jb250YWlucyhjaGlsZC50eXBlKSB8fCBjaGlsZC5pc0NvbnRhaW5hYmxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRDaGlsZChjaGlsZCk7XG4gICAgICAgICAgICAgICAgY2hpbGQuc2V0SXNGb2N1c2VkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICghIXRoaXMucGFyZW50KVxuICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnBhc3RlQ2hpbGQoY2hpbGQpO1xuICAgICAgICB9XG4gICAgfTtcblxufSkoTGF5b3V0RWRpdG9yIHx8IChMYXlvdXRFZGl0b3IgPSB7fSkpOyIsInZhciBMYXlvdXRFZGl0b3I7XG4oZnVuY3Rpb24gKExheW91dEVkaXRvcikge1xuXG4gICAgTGF5b3V0RWRpdG9yLkNhbnZhcyA9IGZ1bmN0aW9uIChkYXRhLCBodG1sSWQsIGh0bWxDbGFzcywgaHRtbFN0eWxlLCBpc1RlbXBsYXRlZCwgY2hpbGRyZW4pIHtcbiAgICAgICAgTGF5b3V0RWRpdG9yLkVsZW1lbnQuY2FsbCh0aGlzLCBcIkNhbnZhc1wiLCBkYXRhLCBodG1sSWQsIGh0bWxDbGFzcywgaHRtbFN0eWxlLCBpc1RlbXBsYXRlZCk7XG4gICAgICAgIExheW91dEVkaXRvci5Db250YWluZXIuY2FsbCh0aGlzLCBbXCJHcmlkXCIsIFwiQ29udGVudFwiXSwgY2hpbGRyZW4pO1xuXG4gICAgICAgIHRoaXMudG9PYmplY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5lbGVtZW50VG9PYmplY3QoKTtcbiAgICAgICAgICAgIHJlc3VsdC5jaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW5Ub09iamVjdCgpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgTGF5b3V0RWRpdG9yLkNhbnZhcy5mcm9tID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBuZXcgTGF5b3V0RWRpdG9yLkNhbnZhcyhcbiAgICAgICAgICAgIHZhbHVlLmRhdGEsXG4gICAgICAgICAgICB2YWx1ZS5odG1sSWQsXG4gICAgICAgICAgICB2YWx1ZS5odG1sQ2xhc3MsXG4gICAgICAgICAgICB2YWx1ZS5odG1sU3R5bGUsXG4gICAgICAgICAgICB2YWx1ZS5pc1RlbXBsYXRlZCxcbiAgICAgICAgICAgIExheW91dEVkaXRvci5jaGlsZHJlbkZyb20odmFsdWUuY2hpbGRyZW4pKTtcbiAgICB9O1xuXG59KShMYXlvdXRFZGl0b3IgfHwgKExheW91dEVkaXRvciA9IHt9KSk7XG4iLCJ2YXIgTGF5b3V0RWRpdG9yO1xuKGZ1bmN0aW9uIChMYXlvdXRFZGl0b3IpIHtcblxuICAgIExheW91dEVkaXRvci5HcmlkID0gZnVuY3Rpb24gKGRhdGEsIGh0bWxJZCwgaHRtbENsYXNzLCBodG1sU3R5bGUsIGlzVGVtcGxhdGVkLCBjaGlsZHJlbikge1xuICAgICAgICBMYXlvdXRFZGl0b3IuRWxlbWVudC5jYWxsKHRoaXMsIFwiR3JpZFwiLCBkYXRhLCBodG1sSWQsIGh0bWxDbGFzcywgaHRtbFN0eWxlLCBpc1RlbXBsYXRlZCk7XG4gICAgICAgIExheW91dEVkaXRvci5Db250YWluZXIuY2FsbCh0aGlzLCBbXCJSb3dcIl0sIGNoaWxkcmVuKTtcblxuICAgICAgICB0aGlzLnRvT2JqZWN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuZWxlbWVudFRvT2JqZWN0KCk7XG4gICAgICAgICAgICByZXN1bHQuY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuVG9PYmplY3QoKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIExheW91dEVkaXRvci5HcmlkLmZyb20gPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBMYXlvdXRFZGl0b3IuR3JpZChcbiAgICAgICAgICAgIHZhbHVlLmRhdGEsXG4gICAgICAgICAgICB2YWx1ZS5odG1sSWQsXG4gICAgICAgICAgICB2YWx1ZS5odG1sQ2xhc3MsXG4gICAgICAgICAgICB2YWx1ZS5odG1sU3R5bGUsXG4gICAgICAgICAgICB2YWx1ZS5pc1RlbXBsYXRlZCxcbiAgICAgICAgICAgIExheW91dEVkaXRvci5jaGlsZHJlbkZyb20odmFsdWUuY2hpbGRyZW4pKTtcbiAgICAgICAgcmVzdWx0LnRvb2xib3hJY29uID0gdmFsdWUudG9vbGJveEljb247XG4gICAgICAgIHJlc3VsdC50b29sYm94TGFiZWwgPSB2YWx1ZS50b29sYm94TGFiZWw7XG4gICAgICAgIHJlc3VsdC50b29sYm94RGVzY3JpcHRpb24gPSB2YWx1ZS50b29sYm94RGVzY3JpcHRpb247XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxufSkoTGF5b3V0RWRpdG9yIHx8IChMYXlvdXRFZGl0b3IgPSB7fSkpOyIsInZhciBMYXlvdXRFZGl0b3I7XG4oZnVuY3Rpb24gKExheW91dEVkaXRvcikge1xuXG4gICAgTGF5b3V0RWRpdG9yLlJvdyA9IGZ1bmN0aW9uIChkYXRhLCBodG1sSWQsIGh0bWxDbGFzcywgaHRtbFN0eWxlLCBpc1RlbXBsYXRlZCwgY2hpbGRyZW4pIHtcbiAgICAgICAgTGF5b3V0RWRpdG9yLkVsZW1lbnQuY2FsbCh0aGlzLCBcIlJvd1wiLCBkYXRhLCBodG1sSWQsIGh0bWxDbGFzcywgaHRtbFN0eWxlLCBpc1RlbXBsYXRlZCk7XG4gICAgICAgIExheW91dEVkaXRvci5Db250YWluZXIuY2FsbCh0aGlzLCBbXCJDb2x1bW5cIl0sIGNoaWxkcmVuKTtcblxuICAgICAgICB2YXIgX3NlbGYgPSB0aGlzO1xuXG4gICAgICAgIGZ1bmN0aW9uIF9nZXRUb3RhbENvbHVtbnNXaWR0aCgpIHtcbiAgICAgICAgICAgIHJldHVybiBfKF9zZWxmLmNoaWxkcmVuKS5yZWR1Y2UoZnVuY3Rpb24gKG1lbW8sIGNoaWxkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1lbW8gKyBjaGlsZC5vZmZzZXQgKyBjaGlsZC53aWR0aDtcbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW1wbGVtZW50cyBhIHNpbXBsZSBhbGdvcml0aG0gdG8gZGlzdHJpYnV0ZSBzcGFjZSAoZWl0aGVyIHBvc2l0aXZlIG9yIG5lZ2F0aXZlKVxuICAgICAgICAvLyBiZXR3ZWVuIHRoZSBjaGlsZCBjb2x1bW5zIG9mIHRoZSByb3cuIE5lZ2F0aXZlIHNwYWNlIGlzIGRpc3RyaWJ1dGVkIHdoZW4gbWFraW5nXG4gICAgICAgIC8vIHJvb20gZm9yIGEgbmV3IGNvbHVtbiAoZS5jLiBjbGlwYm9hcmQgcGFzdGUgb3IgZHJvcHBpbmcgZnJvbSB0aGUgdG9vbGJveCkgd2hpbGVcbiAgICAgICAgLy8gcG9zaXRpdmUgc3BhY2UgaXMgZGlzdHJpYnV0ZWQgd2hlbiBmaWxsaW5nIHRoZSBncmFwIG9mIGEgcmVtb3ZlZCBjb2x1bW4uXG4gICAgICAgIGZ1bmN0aW9uIF9kaXN0cmlidXRlU3BhY2Uoc3BhY2UpIHtcbiAgICAgICAgICAgIGlmIChzcGFjZSA9PSAwKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgIFxuICAgICAgICAgICAgdmFyIHVuZGlzdHJpYnV0ZWRTcGFjZSA9IHNwYWNlO1xuXG4gICAgICAgICAgICBpZiAodW5kaXN0cmlidXRlZFNwYWNlIDwgMCkge1xuICAgICAgICAgICAgICAgIHZhciB2YWNhbnRTcGFjZSA9IDEyIC0gX2dldFRvdGFsQ29sdW1uc1dpZHRoKCk7XG4gICAgICAgICAgICAgICAgdW5kaXN0cmlidXRlZFNwYWNlICs9IHZhY2FudFNwYWNlO1xuICAgICAgICAgICAgICAgIGlmICh1bmRpc3RyaWJ1dGVkU3BhY2UgPiAwKVxuICAgICAgICAgICAgICAgICAgICB1bmRpc3RyaWJ1dGVkU3BhY2UgPSAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBJZiBzcGFjZSBpcyBuZWdhdGl2ZSwgdHJ5IHRvIGRlY3JlYXNlIG9mZnNldHMgZmlyc3QuXG4gICAgICAgICAgICB3aGlsZSAodW5kaXN0cmlidXRlZFNwYWNlIDwgMCAmJiBfKF9zZWxmLmNoaWxkcmVuKS5hbnkoZnVuY3Rpb24gKGNvbHVtbikgeyByZXR1cm4gY29sdW1uLm9mZnNldCA+IDA7IH0pKSB7IC8vIFdoaWxlIHRoZXJlIGlzIHN0aWxsIG9mZnNldCBsZWZ0IHRvIHJlbW92ZS5cbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgX3NlbGYuY2hpbGRyZW4ubGVuZ3RoICYmIHVuZGlzdHJpYnV0ZWRTcGFjZSA8IDA7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgY29sdW1uID0gX3NlbGYuY2hpbGRyZW5baV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW4ub2Zmc2V0ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uLm9mZnNldC0tO1xuICAgICAgICAgICAgICAgICAgICAgICAgdW5kaXN0cmlidXRlZFNwYWNlKys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIGhhc1dpZHRoKGNvbHVtbikge1xuICAgICAgICAgICAgICAgIGlmICh1bmRpc3RyaWJ1dGVkU3BhY2UgPiAwKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29sdW1uLndpZHRoIDwgMTI7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodW5kaXN0cmlidXRlZFNwYWNlIDwgMClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbHVtbi53aWR0aCA+IDE7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBUcnkgdG8gZGlzdHJpYnV0ZSByZW1haW5pbmcgc3BhY2UgKGNvdWxkIGJlIG5lZ2F0aXZlIG9yIHBvc2l0aXZlKSB1c2luZyB3aWR0aHMuXG4gICAgICAgICAgICB3aGlsZSAodW5kaXN0cmlidXRlZFNwYWNlICE9IDApIHtcbiAgICAgICAgICAgICAgICAvLyBBbnkgbW9yZSBjb2x1bW4gd2lkdGggYXZhaWxhYmxlIGZvciBkaXN0cmlidXRpb24/XG4gICAgICAgICAgICAgICAgaWYgKCFfKF9zZWxmLmNoaWxkcmVuKS5hbnkoaGFzV2lkdGgpKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgX3NlbGYuY2hpbGRyZW4ubGVuZ3RoICYmIHVuZGlzdHJpYnV0ZWRTcGFjZSAhPSAwOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbHVtbiA9IF9zZWxmLmNoaWxkcmVuW2kgJSBfc2VsZi5jaGlsZHJlbi5sZW5ndGhdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzV2lkdGgoY29sdW1uKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRlbHRhID0gdW5kaXN0cmlidXRlZFNwYWNlIC8gTWF0aC5hYnModW5kaXN0cmlidXRlZFNwYWNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi53aWR0aCArPSBkZWx0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGlzdHJpYnV0ZWRTcGFjZSAtPSBkZWx0YTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB1bmRpc3RyaWJ1dGVkU3BhY2UgPT0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBfaXNBZGRpbmdDb2x1bW4gPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmNhbkFkZENvbHVtbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNoaWxkcmVuLmxlbmd0aCA8IDEyO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuYmVnaW5BZGRDb2x1bW4gPSBmdW5jdGlvbiAobmV3Q29sdW1uV2lkdGgpIHtcbiAgICAgICAgICAgIGlmICghIV9pc0FkZGluZ0NvbHVtbilcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb2x1bW4gYWRkIG9wZXJhdGlvbiBpcyBhbHJlYWR5IGluIHByb2dyZXNzLlwiKVxuICAgICAgICAgICAgXyh0aGlzLmNoaWxkcmVuKS5lYWNoKGZ1bmN0aW9uIChjb2x1bW4pIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4uYmVnaW5DaGFuZ2UoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKF9kaXN0cmlidXRlU3BhY2UoLW5ld0NvbHVtbldpZHRoKSkge1xuICAgICAgICAgICAgICAgIF9pc0FkZGluZ0NvbHVtbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBfKHRoaXMuY2hpbGRyZW4pLmVhY2goZnVuY3Rpb24gKGNvbHVtbikge1xuICAgICAgICAgICAgICAgIGNvbHVtbi5yb2xsYmFja0NoYW5nZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5jb21taXRBZGRDb2x1bW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoIV9pc0FkZGluZ0NvbHVtbilcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBjb2x1bW4gYWRkIG9wZXJhdGlvbiBpbiBwcm9ncmVzcy5cIilcbiAgICAgICAgICAgIF8odGhpcy5jaGlsZHJlbikuZWFjaChmdW5jdGlvbiAoY29sdW1uKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uLmNvbW1pdENoYW5nZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBfaXNBZGRpbmdDb2x1bW4gPSBmYWxzZTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnJvbGxiYWNrQWRkQ29sdW1uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKCFfaXNBZGRpbmdDb2x1bW4pXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gY29sdW1uIGFkZCBvcGVyYXRpb24gaW4gcHJvZ3Jlc3MuXCIpXG4gICAgICAgICAgICBfKHRoaXMuY2hpbGRyZW4pLmVhY2goZnVuY3Rpb24gKGNvbHVtbikge1xuICAgICAgICAgICAgICAgIGNvbHVtbi5yb2xsYmFja0NoYW5nZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBfaXNBZGRpbmdDb2x1bW4gPSBmYWxzZTtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgX2Jhc2VEZWxldGVDaGlsZCA9IHRoaXMuZGVsZXRlQ2hpbGQ7XG4gICAgICAgIHRoaXMuZGVsZXRlQ2hpbGQgPSBmdW5jdGlvbiAoY29sdW1uKSB7IFxuICAgICAgICAgICAgdmFyIHdpZHRoID0gY29sdW1uLndpZHRoO1xuICAgICAgICAgICAgX2Jhc2VEZWxldGVDaGlsZC5jYWxsKHRoaXMsIGNvbHVtbik7XG4gICAgICAgICAgICBfZGlzdHJpYnV0ZVNwYWNlKHdpZHRoKTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmNhbkNvbnRyYWN0Q29sdW1uUmlnaHQgPSBmdW5jdGlvbiAoY29sdW1uLCBjb25uZWN0QWRqYWNlbnQpIHtcbiAgICAgICAgICAgIHZhciBpbmRleCA9IF8odGhpcy5jaGlsZHJlbikuaW5kZXhPZihjb2x1bW4pO1xuICAgICAgICAgICAgaWYgKGluZGV4ID49IDApXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbHVtbi53aWR0aCA+IDE7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5jb250cmFjdENvbHVtblJpZ2h0ID0gZnVuY3Rpb24gKGNvbHVtbiwgY29ubmVjdEFkamFjZW50KSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuY2FuQ29udHJhY3RDb2x1bW5SaWdodChjb2x1bW4sIGNvbm5lY3RBZGphY2VudCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgICAgICB2YXIgaW5kZXggPSBfKHRoaXMuY2hpbGRyZW4pLmluZGV4T2YoY29sdW1uKTtcbiAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbHVtbi53aWR0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLndpZHRoLS07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNoaWxkcmVuLmxlbmd0aCA+IGluZGV4ICsgMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5leHRDb2x1bW4gPSB0aGlzLmNoaWxkcmVuW2luZGV4ICsgMV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29ubmVjdEFkamFjZW50ICYmIG5leHRDb2x1bW4ub2Zmc2V0ID09IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dENvbHVtbi53aWR0aCsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRDb2x1bW4ub2Zmc2V0Kys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5jYW5FeHBhbmRDb2x1bW5SaWdodCA9IGZ1bmN0aW9uIChjb2x1bW4sIGNvbm5lY3RBZGphY2VudCkge1xuICAgICAgICAgICAgdmFyIGluZGV4ID0gXyh0aGlzLmNoaWxkcmVuKS5pbmRleE9mKGNvbHVtbik7XG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIGlmIChjb2x1bW4ud2lkdGggPj0gMTIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGggPiBpbmRleCArIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5leHRDb2x1bW4gPSB0aGlzLmNoaWxkcmVuW2luZGV4ICsgMV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25uZWN0QWRqYWNlbnQgJiYgbmV4dENvbHVtbi5vZmZzZXQgPT0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXh0Q29sdW1uLndpZHRoID4gMTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5leHRDb2x1bW4ub2Zmc2V0ID4gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9nZXRUb3RhbENvbHVtbnNXaWR0aCgpIDwgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5leHBhbmRDb2x1bW5SaWdodCA9IGZ1bmN0aW9uIChjb2x1bW4sIGNvbm5lY3RBZGphY2VudCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNhbkV4cGFuZENvbHVtblJpZ2h0KGNvbHVtbiwgY29ubmVjdEFkamFjZW50KSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgIHZhciBpbmRleCA9IF8odGhpcy5jaGlsZHJlbikuaW5kZXhPZihjb2x1bW4pO1xuICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGggPiBpbmRleCArIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5leHRDb2x1bW4gPSB0aGlzLmNoaWxkcmVuW2luZGV4ICsgMV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25uZWN0QWRqYWNlbnQgJiYgbmV4dENvbHVtbi5vZmZzZXQgPT0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRDb2x1bW4ud2lkdGgtLTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dENvbHVtbi5vZmZzZXQtLTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29sdW1uLndpZHRoKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5jYW5FeHBhbmRDb2x1bW5MZWZ0ID0gZnVuY3Rpb24gKGNvbHVtbiwgY29ubmVjdEFkamFjZW50KSB7XG4gICAgICAgICAgICB2YXIgaW5kZXggPSBfKHRoaXMuY2hpbGRyZW4pLmluZGV4T2YoY29sdW1uKTtcbiAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbHVtbi53aWR0aCA+PSAxMilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHByZXZDb2x1bW4gPSB0aGlzLmNoaWxkcmVuW2luZGV4IC0gMV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25uZWN0QWRqYWNlbnQgJiYgY29sdW1uLm9mZnNldCA9PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZXZDb2x1bW4ud2lkdGggPiAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gY29sdW1uLm9mZnNldCA+IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5leHBhbmRDb2x1bW5MZWZ0ID0gZnVuY3Rpb24gKGNvbHVtbiwgY29ubmVjdEFkamFjZW50KSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuY2FuRXhwYW5kQ29sdW1uTGVmdChjb2x1bW4sIGNvbm5lY3RBZGphY2VudCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgICAgICB2YXIgaW5kZXggPSBfKHRoaXMuY2hpbGRyZW4pLmluZGV4T2YoY29sdW1uKTtcbiAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcHJldkNvbHVtbiA9IHRoaXMuY2hpbGRyZW5baW5kZXggLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbm5lY3RBZGphY2VudCAmJiBjb2x1bW4ub2Zmc2V0ID09IDApXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2Q29sdW1uLndpZHRoLS07XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5vZmZzZXQtLTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4ub2Zmc2V0LS07XG4gICAgICAgICAgICAgICAgY29sdW1uLndpZHRoKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5jYW5Db250cmFjdENvbHVtbkxlZnQgPSBmdW5jdGlvbiAoY29sdW1uLCBjb25uZWN0QWRqYWNlbnQpIHtcbiAgICAgICAgICAgIHZhciBpbmRleCA9IF8odGhpcy5jaGlsZHJlbikuaW5kZXhPZihjb2x1bW4pO1xuICAgICAgICAgICAgaWYgKGluZGV4ID49IDApXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbHVtbi53aWR0aCA+IDE7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5jb250cmFjdENvbHVtbkxlZnQgPSBmdW5jdGlvbiAoY29sdW1uLCBjb25uZWN0QWRqYWNlbnQpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5jYW5Db250cmFjdENvbHVtbkxlZnQoY29sdW1uLCBjb25uZWN0QWRqYWNlbnQpKVxuICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgdmFyIGluZGV4ID0gXyh0aGlzLmNoaWxkcmVuKS5pbmRleE9mKGNvbHVtbik7XG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHByZXZDb2x1bW4gPSB0aGlzLmNoaWxkcmVuW2luZGV4IC0gMV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25uZWN0QWRqYWNlbnQgJiYgY29sdW1uLm9mZnNldCA9PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldkNvbHVtbi53aWR0aCsrO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4ub2Zmc2V0Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLm9mZnNldCsrO1xuICAgICAgICAgICAgICAgIGNvbHVtbi53aWR0aC0tO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZXZlbkNvbHVtbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGggPT0gMClcbiAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgIHZhciBldmVuV2lkdGggPSBNYXRoLmZsb29yKDEyIC8gdGhpcy5jaGlsZHJlbi5sZW5ndGgpO1xuICAgICAgICAgICAgXyh0aGlzLmNoaWxkcmVuKS5lYWNoKGZ1bmN0aW9uIChjb2x1bW4pIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4ud2lkdGggPSBldmVuV2lkdGg7XG4gICAgICAgICAgICAgICAgY29sdW1uLm9mZnNldCA9IDA7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdmFyIHJlc3QgPSAxMiAlIHRoaXMuY2hpbGRyZW4ubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKHJlc3QgPiAwKVxuICAgICAgICAgICAgICAgIF9kaXN0cmlidXRlU3BhY2UocmVzdCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIF9iYXNlUGFzdGVDaGlsZCA9IHRoaXMucGFzdGVDaGlsZDtcbiAgICAgICAgdGhpcy5wYXN0ZUNoaWxkID0gZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgICBpZiAoY2hpbGQudHlwZSA9PSBcIkNvbHVtblwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYmVnaW5BZGRDb2x1bW4oY2hpbGQud2lkdGgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbWl0QWRkQ29sdW1uKCk7XG4gICAgICAgICAgICAgICAgICAgIF9iYXNlUGFzdGVDaGlsZC5jYWxsKHRoaXMsIGNoaWxkKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCEhdGhpcy5wYXJlbnQpXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQucGFzdGVDaGlsZChjaGlsZCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRvT2JqZWN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuZWxlbWVudFRvT2JqZWN0KCk7XG4gICAgICAgICAgICByZXN1bHQuY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuVG9PYmplY3QoKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIExheW91dEVkaXRvci5Sb3cuZnJvbSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IExheW91dEVkaXRvci5Sb3coXG4gICAgICAgICAgICB2YWx1ZS5kYXRhLFxuICAgICAgICAgICAgdmFsdWUuaHRtbElkLFxuICAgICAgICAgICAgdmFsdWUuaHRtbENsYXNzLFxuICAgICAgICAgICAgdmFsdWUuaHRtbFN0eWxlLFxuICAgICAgICAgICAgdmFsdWUuaXNUZW1wbGF0ZWQsXG4gICAgICAgICAgICBMYXlvdXRFZGl0b3IuY2hpbGRyZW5Gcm9tKHZhbHVlLmNoaWxkcmVuKSk7XG4gICAgICAgIHJlc3VsdC50b29sYm94SWNvbiA9IHZhbHVlLnRvb2xib3hJY29uO1xuICAgICAgICByZXN1bHQudG9vbGJveExhYmVsID0gdmFsdWUudG9vbGJveExhYmVsO1xuICAgICAgICByZXN1bHQudG9vbGJveERlc2NyaXB0aW9uID0gdmFsdWUudG9vbGJveERlc2NyaXB0aW9uO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbn0pKExheW91dEVkaXRvciB8fCAoTGF5b3V0RWRpdG9yID0ge30pKTsiLCJ2YXIgTGF5b3V0RWRpdG9yO1xuKGZ1bmN0aW9uIChMYXlvdXRFZGl0b3IpIHtcblxuICAgIExheW91dEVkaXRvci5Db2x1bW4gPSBmdW5jdGlvbiAoZGF0YSwgaHRtbElkLCBodG1sQ2xhc3MsIGh0bWxTdHlsZSwgaXNUZW1wbGF0ZWQsIHdpZHRoLCBvZmZzZXQsIGNoaWxkcmVuKSB7XG4gICAgICAgIExheW91dEVkaXRvci5FbGVtZW50LmNhbGwodGhpcywgXCJDb2x1bW5cIiwgZGF0YSwgaHRtbElkLCBodG1sQ2xhc3MsIGh0bWxTdHlsZSwgaXNUZW1wbGF0ZWQpO1xuICAgICAgICBMYXlvdXRFZGl0b3IuQ29udGFpbmVyLmNhbGwodGhpcywgW1wiR3JpZFwiLCBcIkNvbnRlbnRcIl0sIGNoaWxkcmVuKTtcblxuICAgICAgICB0aGlzLndpZHRoID0gd2lkdGg7XG4gICAgICAgIHRoaXMub2Zmc2V0ID0gb2Zmc2V0O1xuXG4gICAgICAgIHZhciBfaGFzUGVuZGluZ0NoYW5nZSA9IGZhbHNlO1xuICAgICAgICB2YXIgX29yaWdXaWR0aCA9IDA7XG4gICAgICAgIHZhciBfb3JpZ09mZnNldCA9IDA7XG5cbiAgICAgICAgdGhpcy5iZWdpbkNoYW5nZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICghIV9oYXNQZW5kaW5nQ2hhbmdlKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbHVtbiBhbHJlYWR5IGhhcyBhIHBlbmRpbmcgY2hhbmdlLlwiKVxuICAgICAgICAgICAgX2hhc1BlbmRpbmdDaGFuZ2UgPSB0cnVlO1xuICAgICAgICAgICAgX29yaWdXaWR0aCA9IHRoaXMud2lkdGg7XG4gICAgICAgICAgICBfb3JpZ09mZnNldCA9IHRoaXMub2Zmc2V0O1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuY29tbWl0Q2hhbmdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKCFfaGFzUGVuZGluZ0NoYW5nZSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb2x1bW4gaGFzIG5vIHBlbmRpbmcgY2hhbmdlLlwiKVxuICAgICAgICAgICAgX29yaWdXaWR0aCA9IDA7XG4gICAgICAgICAgICBfb3JpZ09mZnNldCA9IDA7XG4gICAgICAgICAgICBfaGFzUGVuZGluZ0NoYW5nZSA9IGZhbHNlO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMucm9sbGJhY2tDaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoIV9oYXNQZW5kaW5nQ2hhbmdlKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbHVtbiBoYXMgbm8gcGVuZGluZyBjaGFuZ2UuXCIpXG4gICAgICAgICAgICB0aGlzLndpZHRoID0gX29yaWdXaWR0aDtcbiAgICAgICAgICAgIHRoaXMub2Zmc2V0ID0gX29yaWdPZmZzZXQ7XG4gICAgICAgICAgICBfb3JpZ1dpZHRoID0gMDtcbiAgICAgICAgICAgIF9vcmlnT2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIF9oYXNQZW5kaW5nQ2hhbmdlID0gZmFsc2U7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5jYW5TcGxpdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLndpZHRoID4gMTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnNwbGl0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNhblNwbGl0KCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgICAgICB2YXIgbmV3Q29sdW1uV2lkdGggPSBNYXRoLmZsb29yKHRoaXMud2lkdGggLyAyKTtcbiAgICAgICAgICAgIHZhciBuZXdDb2x1bW4gPSBMYXlvdXRFZGl0b3IuQ29sdW1uLmZyb20oe1xuICAgICAgICAgICAgICAgIGRhdGE6IG51bGwsXG4gICAgICAgICAgICAgICAgaHRtbElkOiBudWxsLFxuICAgICAgICAgICAgICAgIGh0bWxDbGFzczogbnVsbCxcbiAgICAgICAgICAgICAgICBodG1sU3R5bGU6IG51bGwsXG4gICAgICAgICAgICAgICAgd2lkdGg6IG5ld0NvbHVtbldpZHRoLFxuICAgICAgICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogW11cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICB0aGlzLndpZHRoID0gdGhpcy53aWR0aCAtIG5ld0NvbHVtbldpZHRoO1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQuaW5zZXJ0Q2hpbGQobmV3Q29sdW1uLCB0aGlzKTtcbiAgICAgICAgICAgIG5ld0NvbHVtbi5zZXRJc0ZvY3VzZWQoKTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmNhbkNvbnRyYWN0UmlnaHQgPSBmdW5jdGlvbiAoY29ubmVjdEFkamFjZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQuY2FuQ29udHJhY3RDb2x1bW5SaWdodCh0aGlzLCBjb25uZWN0QWRqYWNlbnQpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuY29udHJhY3RSaWdodCA9IGZ1bmN0aW9uIChjb25uZWN0QWRqYWNlbnQpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50LmNvbnRyYWN0Q29sdW1uUmlnaHQodGhpcywgY29ubmVjdEFkamFjZW50KTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmNhbkV4cGFuZFJpZ2h0ID0gZnVuY3Rpb24gKGNvbm5lY3RBZGphY2VudCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50LmNhbkV4cGFuZENvbHVtblJpZ2h0KHRoaXMsIGNvbm5lY3RBZGphY2VudCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5leHBhbmRSaWdodCA9IGZ1bmN0aW9uIChjb25uZWN0QWRqYWNlbnQpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50LmV4cGFuZENvbHVtblJpZ2h0KHRoaXMsIGNvbm5lY3RBZGphY2VudCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5jYW5FeHBhbmRMZWZ0ID0gZnVuY3Rpb24gKGNvbm5lY3RBZGphY2VudCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50LmNhbkV4cGFuZENvbHVtbkxlZnQodGhpcywgY29ubmVjdEFkamFjZW50KTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmV4cGFuZExlZnQgPSBmdW5jdGlvbiAoY29ubmVjdEFkamFjZW50KSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudC5leHBhbmRDb2x1bW5MZWZ0KHRoaXMsIGNvbm5lY3RBZGphY2VudCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5jYW5Db250cmFjdExlZnQgPSBmdW5jdGlvbiAoY29ubmVjdEFkamFjZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQuY2FuQ29udHJhY3RDb2x1bW5MZWZ0KHRoaXMsIGNvbm5lY3RBZGphY2VudCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5jb250cmFjdExlZnQgPSBmdW5jdGlvbiAoY29ubmVjdEFkamFjZW50KSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudC5jb250cmFjdENvbHVtbkxlZnQodGhpcywgY29ubmVjdEFkamFjZW50KTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnRvT2JqZWN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuZWxlbWVudFRvT2JqZWN0KCk7XG4gICAgICAgICAgICByZXN1bHQud2lkdGggPSB0aGlzLndpZHRoO1xuICAgICAgICAgICAgcmVzdWx0Lm9mZnNldCA9IHRoaXMub2Zmc2V0O1xuICAgICAgICAgICAgcmVzdWx0LmNoaWxkcmVuID0gdGhpcy5jaGlsZHJlblRvT2JqZWN0KCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBMYXlvdXRFZGl0b3IuQ29sdW1uLmZyb20gPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBMYXlvdXRFZGl0b3IuQ29sdW1uKFxuICAgICAgICAgICAgdmFsdWUuZGF0YSxcbiAgICAgICAgICAgIHZhbHVlLmh0bWxJZCxcbiAgICAgICAgICAgIHZhbHVlLmh0bWxDbGFzcyxcbiAgICAgICAgICAgIHZhbHVlLmh0bWxTdHlsZSxcbiAgICAgICAgICAgIHZhbHVlLmlzVGVtcGxhdGVkLFxuICAgICAgICAgICAgdmFsdWUud2lkdGgsXG4gICAgICAgICAgICB2YWx1ZS5vZmZzZXQsXG4gICAgICAgICAgICBMYXlvdXRFZGl0b3IuY2hpbGRyZW5Gcm9tKHZhbHVlLmNoaWxkcmVuKSk7XG4gICAgICAgIHJlc3VsdC50b29sYm94SWNvbiA9IHZhbHVlLnRvb2xib3hJY29uO1xuICAgICAgICByZXN1bHQudG9vbGJveExhYmVsID0gdmFsdWUudG9vbGJveExhYmVsO1xuICAgICAgICByZXN1bHQudG9vbGJveERlc2NyaXB0aW9uID0gdmFsdWUudG9vbGJveERlc2NyaXB0aW9uO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICBMYXlvdXRFZGl0b3IuQ29sdW1uLnRpbWVzID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBfLnRpbWVzKHZhbHVlLCBmdW5jdGlvbiAobikge1xuICAgICAgICAgICAgcmV0dXJuIExheW91dEVkaXRvci5Db2x1bW4uZnJvbSh7XG4gICAgICAgICAgICAgICAgZGF0YTogbnVsbCxcbiAgICAgICAgICAgICAgICBodG1sSWQ6IG51bGwsXG4gICAgICAgICAgICAgICAgaHRtbENsYXNzOiBudWxsLFxuICAgICAgICAgICAgICAgIGlzVGVtcGxhdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogMTIgLyB2YWx1ZSxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IFtdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxufSkoTGF5b3V0RWRpdG9yIHx8IChMYXlvdXRFZGl0b3IgPSB7fSkpOyIsInZhciBMYXlvdXRFZGl0b3I7XG4oZnVuY3Rpb24gKExheW91dEVkaXRvcikge1xuXG4gICAgTGF5b3V0RWRpdG9yLkNvbnRlbnQgPSBmdW5jdGlvbiAoZGF0YSwgaHRtbElkLCBodG1sQ2xhc3MsIGh0bWxTdHlsZSwgaXNUZW1wbGF0ZWQsIGNvbnRlbnRUeXBlLCBjb250ZW50VHlwZUxhYmVsLCBjb250ZW50VHlwZUNsYXNzLCBodG1sLCBoYXNFZGl0b3IpIHtcbiAgICAgICAgTGF5b3V0RWRpdG9yLkVsZW1lbnQuY2FsbCh0aGlzLCBcIkNvbnRlbnRcIiwgZGF0YSwgaHRtbElkLCBodG1sQ2xhc3MsIGh0bWxTdHlsZSwgaXNUZW1wbGF0ZWQpO1xuXG4gICAgICAgIHRoaXMuY29udGVudFR5cGUgPSBjb250ZW50VHlwZTtcbiAgICAgICAgdGhpcy5jb250ZW50VHlwZUxhYmVsID0gY29udGVudFR5cGVMYWJlbDtcbiAgICAgICAgdGhpcy5jb250ZW50VHlwZUNsYXNzID0gY29udGVudFR5cGVDbGFzcztcbiAgICAgICAgdGhpcy5odG1sID0gaHRtbDtcbiAgICAgICAgdGhpcy5oYXNFZGl0b3IgPSBoYXNFZGl0b3I7XG5cbiAgICAgICAgdGhpcy5nZXRJbm5lclRleHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gJCgkLnBhcnNlSFRNTChcIjxkaXY+XCIgKyB0aGlzLmh0bWwgKyBcIjwvZGl2PlwiKSkudGV4dCgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBvdmVyd3JpdHRlbiBieSB0aGUgQ29udGVudCBkaXJlY3RpdmUuXG4gICAgICAgIHRoaXMuc2V0SHRtbCA9IGZ1bmN0aW9uIChodG1sKSB7XG4gICAgICAgICAgICB0aGlzLmh0bWwgPSBodG1sO1xuICAgICAgICAgICAgdGhpcy5odG1sVW5zYWZlID0gaHRtbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudG9PYmplY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcIkNvbnRlbnRcIlxuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnRvT2JqZWN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuZWxlbWVudFRvT2JqZWN0KCk7XG4gICAgICAgICAgICByZXN1bHQuY29udGVudFR5cGUgPSB0aGlzLmNvbnRlbnRUeXBlO1xuICAgICAgICAgICAgcmVzdWx0LmNvbnRlbnRUeXBlTGFiZWwgPSB0aGlzLmNvbnRlbnRUeXBlTGFiZWw7XG4gICAgICAgICAgICByZXN1bHQuY29udGVudFR5cGVDbGFzcyA9IHRoaXMuY29udGVudFR5cGVDbGFzcztcbiAgICAgICAgICAgIHJlc3VsdC5odG1sID0gdGhpcy5odG1sO1xuICAgICAgICAgICAgcmVzdWx0Lmhhc0VkaXRvciA9IGhhc0VkaXRvcjtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5zZXRIdG1sKGh0bWwpO1xuICAgIH07XG5cbiAgICBMYXlvdXRFZGl0b3IuQ29udGVudC5mcm9tID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgTGF5b3V0RWRpdG9yLkNvbnRlbnQoXG4gICAgICAgICAgICB2YWx1ZS5kYXRhLFxuICAgICAgICAgICAgdmFsdWUuaHRtbElkLFxuICAgICAgICAgICAgdmFsdWUuaHRtbENsYXNzLFxuICAgICAgICAgICAgdmFsdWUuaHRtbFN0eWxlLFxuICAgICAgICAgICAgdmFsdWUuaXNUZW1wbGF0ZWQsXG4gICAgICAgICAgICB2YWx1ZS5jb250ZW50VHlwZSxcbiAgICAgICAgICAgIHZhbHVlLmNvbnRlbnRUeXBlTGFiZWwsXG4gICAgICAgICAgICB2YWx1ZS5jb250ZW50VHlwZUNsYXNzLFxuICAgICAgICAgICAgdmFsdWUuaHRtbCxcbiAgICAgICAgICAgIHZhbHVlLmhhc0VkaXRvcik7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG59KShMYXlvdXRFZGl0b3IgfHwgKExheW91dEVkaXRvciA9IHt9KSk7IiwidmFyIExheW91dEVkaXRvcjtcbihmdW5jdGlvbiAoJCwgTGF5b3V0RWRpdG9yKSB7XG5cbiAgICBMYXlvdXRFZGl0b3IuSHRtbCA9IGZ1bmN0aW9uIChkYXRhLCBodG1sSWQsIGh0bWxDbGFzcywgaHRtbFN0eWxlLCBpc1RlbXBsYXRlZCwgY29udGVudFR5cGUsIGNvbnRlbnRUeXBlTGFiZWwsIGNvbnRlbnRUeXBlQ2xhc3MsIGh0bWwsIGhhc0VkaXRvcikge1xuICAgICAgICBMYXlvdXRFZGl0b3IuRWxlbWVudC5jYWxsKHRoaXMsIFwiSHRtbFwiLCBkYXRhLCBodG1sSWQsIGh0bWxDbGFzcywgaHRtbFN0eWxlLCBpc1RlbXBsYXRlZCk7XG5cbiAgICAgICAgdGhpcy5jb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlO1xuICAgICAgICB0aGlzLmNvbnRlbnRUeXBlTGFiZWwgPSBjb250ZW50VHlwZUxhYmVsO1xuICAgICAgICB0aGlzLmNvbnRlbnRUeXBlQ2xhc3MgPSBjb250ZW50VHlwZUNsYXNzO1xuICAgICAgICB0aGlzLmh0bWwgPSBodG1sO1xuICAgICAgICB0aGlzLmhhc0VkaXRvciA9IGhhc0VkaXRvcjtcbiAgICAgICAgdGhpcy5pc0NvbnRhaW5hYmxlID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLmdldElubmVyVGV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiAkKCQucGFyc2VIVE1MKFwiPGRpdj5cIiArIHRoaXMuaHRtbCArIFwiPC9kaXY+XCIpKS50ZXh0KCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIG92ZXJ3cml0dGVuIGJ5IHRoZSBDb250ZW50IGRpcmVjdGl2ZS5cbiAgICAgICAgdGhpcy5zZXRIdG1sID0gZnVuY3Rpb24gKGh0bWwpIHtcbiAgICAgICAgICAgIHRoaXMuaHRtbCA9IGh0bWw7XG4gICAgICAgICAgICB0aGlzLmh0bWxVbnNhZmUgPSBodG1sO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50b09iamVjdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiSHRtbFwiXG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMudG9PYmplY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5lbGVtZW50VG9PYmplY3QoKTtcbiAgICAgICAgICAgIHJlc3VsdC5jb250ZW50VHlwZSA9IHRoaXMuY29udGVudFR5cGU7XG4gICAgICAgICAgICByZXN1bHQuY29udGVudFR5cGVMYWJlbCA9IHRoaXMuY29udGVudFR5cGVMYWJlbDtcbiAgICAgICAgICAgIHJlc3VsdC5jb250ZW50VHlwZUNsYXNzID0gdGhpcy5jb250ZW50VHlwZUNsYXNzO1xuICAgICAgICAgICAgcmVzdWx0Lmh0bWwgPSB0aGlzLmh0bWw7XG4gICAgICAgICAgICByZXN1bHQuaGFzRWRpdG9yID0gaGFzRWRpdG9yO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgZ2V0RWRpdG9yT2JqZWN0ID0gdGhpcy5nZXRFZGl0b3JPYmplY3Q7XG4gICAgICAgIHRoaXMuZ2V0RWRpdG9yT2JqZWN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGR0byA9IGdldEVkaXRvck9iamVjdCgpO1xuICAgICAgICAgICAgcmV0dXJuICQuZXh0ZW5kKGR0bywge1xuICAgICAgICAgICAgICAgIENvbnRlbnQ6IHRoaXMuaHRtbFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldEh0bWwoaHRtbCk7XG4gICAgfTtcblxuICAgIExheW91dEVkaXRvci5IdG1sLmZyb20gPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBMYXlvdXRFZGl0b3IuSHRtbChcbiAgICAgICAgICAgIHZhbHVlLmRhdGEsXG4gICAgICAgICAgICB2YWx1ZS5odG1sSWQsXG4gICAgICAgICAgICB2YWx1ZS5odG1sQ2xhc3MsXG4gICAgICAgICAgICB2YWx1ZS5odG1sU3R5bGUsXG4gICAgICAgICAgICB2YWx1ZS5pc1RlbXBsYXRlZCxcbiAgICAgICAgICAgIHZhbHVlLmNvbnRlbnRUeXBlLFxuICAgICAgICAgICAgdmFsdWUuY29udGVudFR5cGVMYWJlbCxcbiAgICAgICAgICAgIHZhbHVlLmNvbnRlbnRUeXBlQ2xhc3MsXG4gICAgICAgICAgICB2YWx1ZS5odG1sLFxuICAgICAgICAgICAgdmFsdWUuaGFzRWRpdG9yKTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICBMYXlvdXRFZGl0b3IucmVnaXN0ZXJGYWN0b3J5KFwiSHRtbFwiLCBmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gTGF5b3V0RWRpdG9yLkh0bWwuZnJvbSh2YWx1ZSk7IH0pO1xuXG59KShqUXVlcnksIExheW91dEVkaXRvciB8fCAoTGF5b3V0RWRpdG9yID0ge30pKTsiXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkhlbHBlcnMuanMiLCJFZGl0b3IuanMiLCJFbGVtZW50LmpzIiwiQ29udGFpbmVyLmpzIiwiQ2FudmFzLmpzIiwiR3JpZC5qcyIsIlJvdy5qcyIsIkNvbHVtbi5qcyIsIkNvbnRlbnQuanMiLCJIdG1sLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQ3pDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUNoQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FDdExBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FDdklBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUN6QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQzVCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUM1UkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUN2SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUN6REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ik1vZGVscy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBMYXlvdXRFZGl0b3I7XHJcbihmdW5jdGlvbiAoTGF5b3V0RWRpdG9yKSB7XHJcblxyXG4gICAgQXJyYXkucHJvdG90eXBlLm1vdmUgPSBmdW5jdGlvbiAoZnJvbSwgdG8pIHtcclxuICAgICAgICB0aGlzLnNwbGljZSh0bywgMCwgdGhpcy5zcGxpY2UoZnJvbSwgMSlbMF0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBMYXlvdXRFZGl0b3IuY2hpbGRyZW5Gcm9tID0gZnVuY3Rpb24odmFsdWVzKSB7XHJcbiAgICAgICAgcmV0dXJuIF8odmFsdWVzKS5tYXAoZnVuY3Rpb24odmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIExheW91dEVkaXRvci5lbGVtZW50RnJvbSh2YWx1ZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHZhciByZWdpc3RlckZhY3RvcnkgPSBMYXlvdXRFZGl0b3IucmVnaXN0ZXJGYWN0b3J5ID0gZnVuY3Rpb24odHlwZSwgZmFjdG9yeSkge1xyXG4gICAgICAgIHZhciBmYWN0b3JpZXMgPSBMYXlvdXRFZGl0b3IuZmFjdG9yaWVzID0gTGF5b3V0RWRpdG9yLmZhY3RvcmllcyB8fCB7fTtcclxuICAgICAgICBmYWN0b3JpZXNbdHlwZV0gPSBmYWN0b3J5O1xyXG4gICAgfTtcclxuXHJcbiAgICByZWdpc3RlckZhY3RvcnkoXCJHcmlkXCIsIGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiBMYXlvdXRFZGl0b3IuR3JpZC5mcm9tKHZhbHVlKTsgfSk7XHJcbiAgICByZWdpc3RlckZhY3RvcnkoXCJSb3dcIiwgZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIExheW91dEVkaXRvci5Sb3cuZnJvbSh2YWx1ZSk7IH0pO1xyXG4gICAgcmVnaXN0ZXJGYWN0b3J5KFwiQ29sdW1uXCIsIGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiBMYXlvdXRFZGl0b3IuQ29sdW1uLmZyb20odmFsdWUpOyB9KTtcclxuICAgIHJlZ2lzdGVyRmFjdG9yeShcIkNvbnRlbnRcIiwgZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIExheW91dEVkaXRvci5Db250ZW50LmZyb20odmFsdWUpOyB9KTtcclxuXHJcbiAgICBMYXlvdXRFZGl0b3IuZWxlbWVudEZyb20gPSBmdW5jdGlvbiAodmFsdWUpIHtcclxuICAgICAgICB2YXIgZmFjdG9yeSA9IExheW91dEVkaXRvci5mYWN0b3JpZXNbdmFsdWUudHlwZV07XHJcblxyXG4gICAgICAgIGlmICghZmFjdG9yeSlcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gZWxlbWVudCB3aXRoIHR5cGUgXFxcIlwiICsgdmFsdWUudHlwZSArIFwiXFxcIiB3YXMgZm91bmQuXCIpO1xyXG5cclxuICAgICAgICB2YXIgZWxlbWVudCA9IGZhY3RvcnkodmFsdWUpO1xyXG4gICAgICAgIHJldHVybiBlbGVtZW50O1xyXG4gICAgfTtcclxuXHJcbiAgICBMYXlvdXRFZGl0b3Iuc2V0TW9kZWwgPSBmdW5jdGlvbiAoZWxlbWVudFNlbGVjdG9yLCBtb2RlbCkge1xyXG4gICAgICAgICQoZWxlbWVudFNlbGVjdG9yKS5zY29wZSgpLmVsZW1lbnQgPSBtb2RlbDtcclxuICAgIH07XHJcblxyXG4gICAgTGF5b3V0RWRpdG9yLmdldE1vZGVsID0gZnVuY3Rpb24gKGVsZW1lbnRTZWxlY3Rvcikge1xyXG4gICAgICAgIHJldHVybiAkKGVsZW1lbnRTZWxlY3Rvcikuc2NvcGUoKS5lbGVtZW50O1xyXG4gICAgfTtcclxuXHJcbn0pKExheW91dEVkaXRvciB8fCAoTGF5b3V0RWRpdG9yID0ge30pKTsiLCJ2YXIgTGF5b3V0RWRpdG9yO1xyXG4oZnVuY3Rpb24gKExheW91dEVkaXRvcikge1xyXG5cclxuICAgIExheW91dEVkaXRvci5FZGl0b3IgPSBmdW5jdGlvbiAoY29uZmlnLCBjYW52YXNEYXRhKSB7XHJcbiAgICAgICAgdGhpcy5jb25maWcgPSBjb25maWc7XHJcbiAgICAgICAgdGhpcy5jYW52YXMgPSBMYXlvdXRFZGl0b3IuQ2FudmFzLmZyb20oY2FudmFzRGF0YSk7XHJcbiAgICAgICAgdGhpcy5pbml0aWFsU3RhdGUgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmNhbnZhcy50b09iamVjdCgpKTtcclxuICAgICAgICB0aGlzLmFjdGl2ZUVsZW1lbnQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuZm9jdXNlZEVsZW1lbnQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuZHJvcFRhcmdldEVsZW1lbnQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuaXNEcmFnZ2luZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaW5saW5lRWRpdGluZ0lzQWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1Jlc2l6aW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMucmVzZXRUb29sYm94RWxlbWVudHMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9vbGJveEVsZW1lbnRzID0gW1xyXG4gICAgICAgICAgICAgICAgTGF5b3V0RWRpdG9yLlJvdy5mcm9tKHtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogW11cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5pc0RpcnR5ID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgIHZhciBjdXJyZW50U3RhdGUgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmNhbnZhcy50b09iamVjdCgpKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5pdGlhbFN0YXRlICE9IGN1cnJlbnRTdGF0ZTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLnJlc2V0VG9vbGJveEVsZW1lbnRzKCk7XHJcbiAgICAgICAgdGhpcy5jYW52YXMuc2V0RWRpdG9yKHRoaXMpO1xyXG4gICAgfTtcclxuXHJcbn0pKExheW91dEVkaXRvciB8fCAoTGF5b3V0RWRpdG9yID0ge30pKTtcclxuIiwidmFyIExheW91dEVkaXRvcjtcclxuKGZ1bmN0aW9uIChMYXlvdXRFZGl0b3IpIHtcclxuXHJcbiAgICBMYXlvdXRFZGl0b3IuRWxlbWVudCA9IGZ1bmN0aW9uICh0eXBlLCBkYXRhLCBodG1sSWQsIGh0bWxDbGFzcywgaHRtbFN0eWxlLCBpc1RlbXBsYXRlZCkge1xyXG4gICAgICAgIGlmICghdHlwZSlcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGFyYW1ldGVyICd0eXBlJyBpcyByZXF1aXJlZC5cIik7XHJcblxyXG4gICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcclxuICAgICAgICB0aGlzLmh0bWxJZCA9IGh0bWxJZDtcclxuICAgICAgICB0aGlzLmh0bWxDbGFzcyA9IGh0bWxDbGFzcztcclxuICAgICAgICB0aGlzLmh0bWxTdHlsZSA9IGh0bWxTdHlsZTtcclxuICAgICAgICB0aGlzLmlzVGVtcGxhdGVkID0gaXNUZW1wbGF0ZWQ7XHJcblxyXG4gICAgICAgIHRoaXMuZWRpdG9yID0gbnVsbDtcclxuICAgICAgICB0aGlzLnBhcmVudCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5zZXRJc0ZvY3VzZWRFdmVudEhhbmRsZXJzID0gW107XHJcblxyXG4gICAgICAgIHRoaXMuc2V0RWRpdG9yID0gZnVuY3Rpb24gKGVkaXRvcikge1xyXG4gICAgICAgICAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcclxuICAgICAgICAgICAgaWYgKCEhdGhpcy5jaGlsZHJlbiAmJiBfLmlzQXJyYXkodGhpcy5jaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgICAgIF8odGhpcy5jaGlsZHJlbikuZWFjaChmdW5jdGlvbiAoY2hpbGQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZC5zZXRFZGl0b3IoZWRpdG9yKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXRQYXJlbnQgPSBmdW5jdGlvbihwYXJlbnRFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFyZW50ID0gcGFyZW50RWxlbWVudDtcclxuICAgICAgICAgICAgdGhpcy5wYXJlbnQub25DaGlsZEFkZGVkKHRoaXMpO1xyXG5cclxuICAgICAgICAgICAgdmFyIGN1cnJlbnRBbmNlc3RvciA9IHBhcmVudEVsZW1lbnQ7XHJcbiAgICAgICAgICAgIHdoaWxlICghIWN1cnJlbnRBbmNlc3Rvcikge1xyXG4gICAgICAgICAgICAgICAgY3VycmVudEFuY2VzdG9yLm9uRGVzY2VuZGFudEFkZGVkKHRoaXMsIHBhcmVudEVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgY3VycmVudEFuY2VzdG9yID0gY3VycmVudEFuY2VzdG9yLnBhcmVudDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuc2V0SXNUZW1wbGF0ZWQgPSBmdW5jdGlvbiAodmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5pc1RlbXBsYXRlZCA9IHZhbHVlO1xyXG4gICAgICAgICAgICBpZiAoISF0aGlzLmNoaWxkcmVuICYmIF8uaXNBcnJheSh0aGlzLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICAgICAgXyh0aGlzLmNoaWxkcmVuKS5lYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLnNldElzVGVtcGxhdGVkKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5hcHBseUVsZW1lbnRFZGl0b3JNb2RlbCA9IGZ1bmN0aW9uKCkgeyAvKiBWaXJ0dWFsICovIH07XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0SXNBY3RpdmUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5lZGl0b3IpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVkaXRvci5hY3RpdmVFbGVtZW50ID09PSB0aGlzICYmICF0aGlzLmdldElzRm9jdXNlZCgpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuc2V0SXNBY3RpdmUgPSBmdW5jdGlvbiAodmFsdWUpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmVkaXRvcilcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZWRpdG9yLmlzRHJhZ2dpbmcgfHwgdGhpcy5lZGl0b3IuaW5saW5lRWRpdGluZ0lzQWN0aXZlIHx8IHRoaXMuZWRpdG9yLmlzUmVzaXppbmcpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgICAgICBpZiAodmFsdWUpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVkaXRvci5hY3RpdmVFbGVtZW50ID0gdGhpcztcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0b3IuYWN0aXZlRWxlbWVudCA9IHRoaXMucGFyZW50O1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0SXNGb2N1c2VkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuZWRpdG9yKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5lZGl0b3IuZm9jdXNlZEVsZW1lbnQgPT09IHRoaXM7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXRJc0ZvY3VzZWQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5lZGl0b3IpXHJcbiAgICAgICAgICAgIFx0cmV0dXJuO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc1RlbXBsYXRlZClcclxuICAgICAgICAgICAgXHRyZXR1cm47XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmVkaXRvci5pc0RyYWdnaW5nIHx8IHRoaXMuZWRpdG9yLmlubGluZUVkaXRpbmdJc0FjdGl2ZSB8fCB0aGlzLmVkaXRvci5pc1Jlc2l6aW5nKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5lZGl0b3IuZm9jdXNlZEVsZW1lbnQgPSB0aGlzO1xyXG4gICAgICAgICAgICBfKHRoaXMuc2V0SXNGb2N1c2VkRXZlbnRIYW5kbGVycykuZWFjaChmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYXRjaCAoZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmUuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0SXNTZWxlY3RlZCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0SXNGb2N1c2VkKCkpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIGlmICghIXRoaXMuY2hpbGRyZW4gJiYgXy5pc0FycmF5KHRoaXMuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXyh0aGlzLmNoaWxkcmVuKS5hbnkoZnVuY3Rpb24oY2hpbGQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0SXNTZWxlY3RlZCgpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmdldElzRHJvcFRhcmdldCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmVkaXRvcilcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yLmRyb3BUYXJnZXRFbGVtZW50ID09PSB0aGlzO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZXRJc0Ryb3BUYXJnZXQgPSBmdW5jdGlvbiAodmFsdWUpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmVkaXRvcilcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgaWYgKHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0b3IuZHJvcFRhcmdldEVsZW1lbnQgPSB0aGlzO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVkaXRvci5kcm9wVGFyZ2V0RWxlbWVudCA9IG51bGw7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5kZWxldGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmICghIXRoaXMucGFyZW50KVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuZGVsZXRlQ2hpbGQodGhpcyk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5jYW5Nb3ZlVXAgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5wYXJlbnQpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudC5jYW5Nb3ZlQ2hpbGRVcCh0aGlzKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLm1vdmVVcCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKCEhdGhpcy5wYXJlbnQpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5tb3ZlQ2hpbGRVcCh0aGlzKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmNhbk1vdmVEb3duID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMucGFyZW50KVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQuY2FuTW92ZUNoaWxkRG93bih0aGlzKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLm1vdmVEb3duID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAoISF0aGlzLnBhcmVudClcclxuICAgICAgICAgICAgICAgIHRoaXMucGFyZW50Lm1vdmVDaGlsZERvd24odGhpcyk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5lbGVtZW50VG9PYmplY3QgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiB0aGlzLmRhdGEsXHJcbiAgICAgICAgICAgICAgICBodG1sSWQ6IHRoaXMuaHRtbElkLFxyXG4gICAgICAgICAgICAgICAgaHRtbENsYXNzOiB0aGlzLmh0bWxDbGFzcyxcclxuICAgICAgICAgICAgICAgIGh0bWxTdHlsZTogdGhpcy5odG1sU3R5bGUsXHJcbiAgICAgICAgICAgICAgICBpc1RlbXBsYXRlZDogdGhpcy5pc1RlbXBsYXRlZFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0RWRpdG9yT2JqZWN0ID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7fTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmNvcHkgPSBmdW5jdGlvbiAoY2xpcGJvYXJkRGF0YSkge1xyXG4gICAgICAgICAgICB2YXIgdGV4dCA9IHRoaXMuZ2V0SW5uZXJUZXh0KCk7XHJcbiAgICAgICAgICAgIGNsaXBib2FyZERhdGEuc2V0RGF0YShcInRleHQvcGxhaW5cIiwgdGV4dCk7XHJcblxyXG4gICAgICAgICAgICB2YXIgZGF0YSA9IHRoaXMudG9PYmplY3QoKTtcclxuICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCBcIlxcdFwiKTtcclxuICAgICAgICAgICAgY2xpcGJvYXJkRGF0YS5zZXREYXRhKFwidGV4dC9qc29uXCIsIGpzb24pO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuY3V0ID0gZnVuY3Rpb24gKGNsaXBib2FyZERhdGEpIHtcclxuICAgICAgICAgICAgdGhpcy5jb3B5KGNsaXBib2FyZERhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmRlbGV0ZSgpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMucGFzdGUgPSBmdW5jdGlvbiAoY2xpcGJvYXJkRGF0YSkge1xyXG4gICAgICAgICAgICBpZiAoISF0aGlzLnBhcmVudClcclxuICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnBhc3RlKGNsaXBib2FyZERhdGEpO1xyXG4gICAgICAgIH07XHJcbiAgICB9O1xyXG5cclxufSkoTGF5b3V0RWRpdG9yIHx8IChMYXlvdXRFZGl0b3IgPSB7fSkpOyIsInZhciBMYXlvdXRFZGl0b3I7XHJcbihmdW5jdGlvbiAoTGF5b3V0RWRpdG9yKSB7XHJcblxyXG4gICAgTGF5b3V0RWRpdG9yLkNvbnRhaW5lciA9IGZ1bmN0aW9uIChhbGxvd2VkQ2hpbGRUeXBlcywgY2hpbGRyZW4pIHtcclxuXHJcbiAgICAgICAgdGhpcy5hbGxvd2VkQ2hpbGRUeXBlcyA9IGFsbG93ZWRDaGlsZFR5cGVzO1xyXG4gICAgICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcclxuICAgICAgICB0aGlzLmlzQ29udGFpbmVyID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgICAgICB0aGlzLm9uQ2hpbGRBZGRlZCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7IC8qIFZpcnR1YWwgKi8gfTtcclxuICAgICAgICB0aGlzLm9uRGVzY2VuZGFudEFkZGVkID0gZnVuY3Rpb24gKGVsZW1lbnQsIHBhcmVudEVsZW1lbnQpIHsgLyogVmlydHVhbCAqLyB9O1xyXG5cclxuICAgICAgICB0aGlzLnNldENoaWxkcmVuID0gZnVuY3Rpb24gKGNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcclxuICAgICAgICAgICAgXyh0aGlzLmNoaWxkcmVuKS5lYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xyXG4gICAgICAgICAgICAgICAgY2hpbGQuc2V0UGFyZW50KHNlbGYpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLnNldENoaWxkcmVuKGNoaWxkcmVuKTtcclxuXHJcbiAgICAgICAgdGhpcy5nZXRJc1NlYWxlZCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIF8odGhpcy5jaGlsZHJlbikuYW55KGZ1bmN0aW9uIChjaGlsZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmlzVGVtcGxhdGVkO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmFkZENoaWxkID0gZnVuY3Rpb24gKGNoaWxkKSB7XHJcbiAgICAgICAgICAgIGlmICghXyh0aGlzLmNoaWxkcmVuKS5jb250YWlucyhjaGlsZCkgJiYgKF8odGhpcy5hbGxvd2VkQ2hpbGRUeXBlcykuY29udGFpbnMoY2hpbGQudHlwZSkgfHwgY2hpbGQuaXNDb250YWluYWJsZSkpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoaWxkcmVuLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICBjaGlsZC5zZXRFZGl0b3IodGhpcy5lZGl0b3IpO1xyXG4gICAgICAgICAgICBjaGlsZC5zZXRJc1RlbXBsYXRlZChmYWxzZSk7XHJcbiAgICAgICAgICAgIGNoaWxkLnNldFBhcmVudCh0aGlzKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmRlbGV0ZUNoaWxkID0gZnVuY3Rpb24gKGNoaWxkKSB7XHJcbiAgICAgICAgICAgIHZhciBpbmRleCA9IF8odGhpcy5jaGlsZHJlbikuaW5kZXhPZihjaGlsZCk7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoaWxkcmVuLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGQuZ2V0SXNBY3RpdmUoKSlcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXRvci5hY3RpdmVFbGVtZW50ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIGlmIChjaGlsZC5nZXRJc0ZvY3VzZWQoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBkZWxldGVkIGNoaWxkIHdhcyBmb2N1c2VkLCB0cnkgdG8gc2V0IG5ldyBmb2N1cyB0byB0aGUgbW9zdCBhcHByb3ByaWF0ZSBzaWJsaW5nIG9yIHBhcmVudC5cclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGggPiBpbmRleClcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGlsZHJlbltpbmRleF0uc2V0SXNGb2N1c2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaW5kZXggPiAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoaWxkcmVuW2luZGV4IC0gMV0uc2V0SXNGb2N1c2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldElzRm9jdXNlZCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5tb3ZlRm9jdXNQcmV2Q2hpbGQgPSBmdW5jdGlvbiAoY2hpbGQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoIDwgMilcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgdmFyIGluZGV4ID0gXyh0aGlzLmNoaWxkcmVuKS5pbmRleE9mKGNoaWxkKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4ID4gMClcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hpbGRyZW5baW5kZXggLSAxXS5zZXRJc0ZvY3VzZWQoKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLm1vdmVGb2N1c05leHRDaGlsZCA9IGZ1bmN0aW9uIChjaGlsZCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGggPCAyKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB2YXIgaW5kZXggPSBfKHRoaXMuY2hpbGRyZW4pLmluZGV4T2YoY2hpbGQpO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPCB0aGlzLmNoaWxkcmVuLmxlbmd0aCAtIDEpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoaWxkcmVuW2luZGV4ICsgMV0uc2V0SXNGb2N1c2VkKCk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5pbnNlcnRDaGlsZCA9IGZ1bmN0aW9uIChjaGlsZCwgYWZ0ZXJDaGlsZCkge1xyXG4gICAgICAgICAgICBpZiAoIV8odGhpcy5jaGlsZHJlbikuY29udGFpbnMoY2hpbGQpKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBNYXRoLm1heChfKHRoaXMuY2hpbGRyZW4pLmluZGV4T2YoYWZ0ZXJDaGlsZCksIDApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5zcGxpY2UoaW5kZXggKyAxLCAwLCBjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICBjaGlsZC5zZXRFZGl0b3IodGhpcy5lZGl0b3IpO1xyXG4gICAgICAgICAgICAgICAgY2hpbGQucGFyZW50ID0gdGhpcztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMubW92ZUNoaWxkVXAgPSBmdW5jdGlvbiAoY2hpbGQpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNhbk1vdmVDaGlsZFVwKGNoaWxkKSlcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgdmFyIGluZGV4ID0gXyh0aGlzLmNoaWxkcmVuKS5pbmRleE9mKGNoaWxkKTtcclxuICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5tb3ZlKGluZGV4LCBpbmRleCAtIDEpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMubW92ZUNoaWxkRG93biA9IGZ1bmN0aW9uIChjaGlsZCkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY2FuTW92ZUNoaWxkRG93bihjaGlsZCkpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIHZhciBpbmRleCA9IF8odGhpcy5jaGlsZHJlbikuaW5kZXhPZihjaGlsZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4ubW92ZShpbmRleCwgaW5kZXggKyAxKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmNhbk1vdmVDaGlsZFVwID0gZnVuY3Rpb24gKGNoaWxkKSB7XHJcbiAgICAgICAgICAgIHZhciBpbmRleCA9IF8odGhpcy5jaGlsZHJlbikuaW5kZXhPZihjaGlsZCk7XHJcbiAgICAgICAgICAgIHJldHVybiBpbmRleCA+IDA7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5jYW5Nb3ZlQ2hpbGREb3duID0gZnVuY3Rpb24gKGNoaWxkKSB7XHJcbiAgICAgICAgICAgIHZhciBpbmRleCA9IF8odGhpcy5jaGlsZHJlbikuaW5kZXhPZihjaGlsZCk7XHJcbiAgICAgICAgICAgIHJldHVybiBpbmRleCA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoIC0gMTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmNoaWxkcmVuVG9PYmplY3QgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBfKHRoaXMuY2hpbGRyZW4pLm1hcChmdW5jdGlvbiAoY2hpbGQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZC50b09iamVjdCgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmdldElubmVyVGV4dCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIF8odGhpcy5jaGlsZHJlbikucmVkdWNlKGZ1bmN0aW9uIChtZW1vLCBjaGlsZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1lbW8gKyBcIlxcblwiICsgY2hpbGQuZ2V0SW5uZXJUZXh0KCk7XHJcbiAgICAgICAgICAgIH0sIFwiXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5wYXN0ZSA9IGZ1bmN0aW9uIChjbGlwYm9hcmREYXRhKSB7XHJcbiAgICAgICAgICAgIHZhciBqc29uID0gY2xpcGJvYXJkRGF0YS5nZXREYXRhKFwidGV4dC9qc29uXCIpO1xyXG4gICAgICAgICAgICBpZiAoISFqc29uKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UoanNvbik7XHJcbiAgICAgICAgICAgICAgICB2YXIgY2hpbGQgPSBMYXlvdXRFZGl0b3IuZWxlbWVudEZyb20oZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhc3RlQ2hpbGQoY2hpbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5wYXN0ZUNoaWxkID0gZnVuY3Rpb24gKGNoaWxkKSB7XHJcbiAgICAgICAgICAgIGlmIChfKHRoaXMuYWxsb3dlZENoaWxkVHlwZXMpLmNvbnRhaW5zKGNoaWxkLnR5cGUpIHx8IGNoaWxkLmlzQ29udGFpbmFibGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkQ2hpbGQoY2hpbGQpO1xyXG4gICAgICAgICAgICAgICAgY2hpbGQuc2V0SXNGb2N1c2VkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoISF0aGlzLnBhcmVudClcclxuICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnBhc3RlQ2hpbGQoY2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG59KShMYXlvdXRFZGl0b3IgfHwgKExheW91dEVkaXRvciA9IHt9KSk7IiwidmFyIExheW91dEVkaXRvcjtcclxuKGZ1bmN0aW9uIChMYXlvdXRFZGl0b3IpIHtcclxuXHJcbiAgICBMYXlvdXRFZGl0b3IuQ2FudmFzID0gZnVuY3Rpb24gKGRhdGEsIGh0bWxJZCwgaHRtbENsYXNzLCBodG1sU3R5bGUsIGlzVGVtcGxhdGVkLCBjaGlsZHJlbikge1xyXG4gICAgICAgIExheW91dEVkaXRvci5FbGVtZW50LmNhbGwodGhpcywgXCJDYW52YXNcIiwgZGF0YSwgaHRtbElkLCBodG1sQ2xhc3MsIGh0bWxTdHlsZSwgaXNUZW1wbGF0ZWQpO1xyXG4gICAgICAgIExheW91dEVkaXRvci5Db250YWluZXIuY2FsbCh0aGlzLCBbXCJHcmlkXCIsIFwiQ29udGVudFwiXSwgY2hpbGRyZW4pO1xyXG5cclxuICAgICAgICB0aGlzLnRvT2JqZWN0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5lbGVtZW50VG9PYmplY3QoKTtcclxuICAgICAgICAgICAgcmVzdWx0LmNoaWxkcmVuID0gdGhpcy5jaGlsZHJlblRvT2JqZWN0KCk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfTtcclxuICAgIH07XHJcblxyXG4gICAgTGF5b3V0RWRpdG9yLkNhbnZhcy5mcm9tID0gZnVuY3Rpb24gKHZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBMYXlvdXRFZGl0b3IuQ2FudmFzKFxyXG4gICAgICAgICAgICB2YWx1ZS5kYXRhLFxyXG4gICAgICAgICAgICB2YWx1ZS5odG1sSWQsXHJcbiAgICAgICAgICAgIHZhbHVlLmh0bWxDbGFzcyxcclxuICAgICAgICAgICAgdmFsdWUuaHRtbFN0eWxlLFxyXG4gICAgICAgICAgICB2YWx1ZS5pc1RlbXBsYXRlZCxcclxuICAgICAgICAgICAgTGF5b3V0RWRpdG9yLmNoaWxkcmVuRnJvbSh2YWx1ZS5jaGlsZHJlbikpO1xyXG4gICAgfTtcclxuXHJcbn0pKExheW91dEVkaXRvciB8fCAoTGF5b3V0RWRpdG9yID0ge30pKTtcclxuIiwidmFyIExheW91dEVkaXRvcjtcclxuKGZ1bmN0aW9uIChMYXlvdXRFZGl0b3IpIHtcclxuXHJcbiAgICBMYXlvdXRFZGl0b3IuR3JpZCA9IGZ1bmN0aW9uIChkYXRhLCBodG1sSWQsIGh0bWxDbGFzcywgaHRtbFN0eWxlLCBpc1RlbXBsYXRlZCwgY2hpbGRyZW4pIHtcclxuICAgICAgICBMYXlvdXRFZGl0b3IuRWxlbWVudC5jYWxsKHRoaXMsIFwiR3JpZFwiLCBkYXRhLCBodG1sSWQsIGh0bWxDbGFzcywgaHRtbFN0eWxlLCBpc1RlbXBsYXRlZCk7XHJcbiAgICAgICAgTGF5b3V0RWRpdG9yLkNvbnRhaW5lci5jYWxsKHRoaXMsIFtcIlJvd1wiXSwgY2hpbGRyZW4pO1xyXG5cclxuICAgICAgICB0aGlzLnRvT2JqZWN0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5lbGVtZW50VG9PYmplY3QoKTtcclxuICAgICAgICAgICAgcmVzdWx0LmNoaWxkcmVuID0gdGhpcy5jaGlsZHJlblRvT2JqZWN0KCk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfTtcclxuICAgIH07XHJcblxyXG4gICAgTGF5b3V0RWRpdG9yLkdyaWQuZnJvbSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgTGF5b3V0RWRpdG9yLkdyaWQoXHJcbiAgICAgICAgICAgIHZhbHVlLmRhdGEsXHJcbiAgICAgICAgICAgIHZhbHVlLmh0bWxJZCxcclxuICAgICAgICAgICAgdmFsdWUuaHRtbENsYXNzLFxyXG4gICAgICAgICAgICB2YWx1ZS5odG1sU3R5bGUsXHJcbiAgICAgICAgICAgIHZhbHVlLmlzVGVtcGxhdGVkLFxyXG4gICAgICAgICAgICBMYXlvdXRFZGl0b3IuY2hpbGRyZW5Gcm9tKHZhbHVlLmNoaWxkcmVuKSk7XHJcbiAgICAgICAgcmVzdWx0LnRvb2xib3hJY29uID0gdmFsdWUudG9vbGJveEljb247XHJcbiAgICAgICAgcmVzdWx0LnRvb2xib3hMYWJlbCA9IHZhbHVlLnRvb2xib3hMYWJlbDtcclxuICAgICAgICByZXN1bHQudG9vbGJveERlc2NyaXB0aW9uID0gdmFsdWUudG9vbGJveERlc2NyaXB0aW9uO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9O1xyXG5cclxufSkoTGF5b3V0RWRpdG9yIHx8IChMYXlvdXRFZGl0b3IgPSB7fSkpOyIsInZhciBMYXlvdXRFZGl0b3I7XHJcbihmdW5jdGlvbiAoTGF5b3V0RWRpdG9yKSB7XHJcblxyXG4gICAgTGF5b3V0RWRpdG9yLlJvdyA9IGZ1bmN0aW9uIChkYXRhLCBodG1sSWQsIGh0bWxDbGFzcywgaHRtbFN0eWxlLCBpc1RlbXBsYXRlZCwgY2hpbGRyZW4pIHtcclxuICAgICAgICBMYXlvdXRFZGl0b3IuRWxlbWVudC5jYWxsKHRoaXMsIFwiUm93XCIsIGRhdGEsIGh0bWxJZCwgaHRtbENsYXNzLCBodG1sU3R5bGUsIGlzVGVtcGxhdGVkKTtcclxuICAgICAgICBMYXlvdXRFZGl0b3IuQ29udGFpbmVyLmNhbGwodGhpcywgW1wiQ29sdW1uXCJdLCBjaGlsZHJlbik7XHJcblxyXG4gICAgICAgIHZhciBfc2VsZiA9IHRoaXM7XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIF9nZXRUb3RhbENvbHVtbnNXaWR0aCgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIF8oX3NlbGYuY2hpbGRyZW4pLnJlZHVjZShmdW5jdGlvbiAobWVtbywgY2hpbGQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBtZW1vICsgY2hpbGQub2Zmc2V0ICsgY2hpbGQud2lkdGg7XHJcbiAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gSW1wbGVtZW50cyBhIHNpbXBsZSBhbGdvcml0aG0gdG8gZGlzdHJpYnV0ZSBzcGFjZSAoZWl0aGVyIHBvc2l0aXZlIG9yIG5lZ2F0aXZlKVxyXG4gICAgICAgIC8vIGJldHdlZW4gdGhlIGNoaWxkIGNvbHVtbnMgb2YgdGhlIHJvdy4gTmVnYXRpdmUgc3BhY2UgaXMgZGlzdHJpYnV0ZWQgd2hlbiBtYWtpbmdcclxuICAgICAgICAvLyByb29tIGZvciBhIG5ldyBjb2x1bW4gKGUuYy4gY2xpcGJvYXJkIHBhc3RlIG9yIGRyb3BwaW5nIGZyb20gdGhlIHRvb2xib3gpIHdoaWxlXHJcbiAgICAgICAgLy8gcG9zaXRpdmUgc3BhY2UgaXMgZGlzdHJpYnV0ZWQgd2hlbiBmaWxsaW5nIHRoZSBncmFwIG9mIGEgcmVtb3ZlZCBjb2x1bW4uXHJcbiAgICAgICAgZnVuY3Rpb24gX2Rpc3RyaWJ1dGVTcGFjZShzcGFjZSkge1xyXG4gICAgICAgICAgICBpZiAoc3BhY2UgPT0gMClcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHZhciB1bmRpc3RyaWJ1dGVkU3BhY2UgPSBzcGFjZTtcclxuXHJcbiAgICAgICAgICAgIGlmICh1bmRpc3RyaWJ1dGVkU3BhY2UgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgdmFjYW50U3BhY2UgPSAxMiAtIF9nZXRUb3RhbENvbHVtbnNXaWR0aCgpO1xyXG4gICAgICAgICAgICAgICAgdW5kaXN0cmlidXRlZFNwYWNlICs9IHZhY2FudFNwYWNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKHVuZGlzdHJpYnV0ZWRTcGFjZSA+IDApXHJcbiAgICAgICAgICAgICAgICAgICAgdW5kaXN0cmlidXRlZFNwYWNlID0gMDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gSWYgc3BhY2UgaXMgbmVnYXRpdmUsIHRyeSB0byBkZWNyZWFzZSBvZmZzZXRzIGZpcnN0LlxyXG4gICAgICAgICAgICB3aGlsZSAodW5kaXN0cmlidXRlZFNwYWNlIDwgMCAmJiBfKF9zZWxmLmNoaWxkcmVuKS5hbnkoZnVuY3Rpb24gKGNvbHVtbikgeyByZXR1cm4gY29sdW1uLm9mZnNldCA+IDA7IH0pKSB7IC8vIFdoaWxlIHRoZXJlIGlzIHN0aWxsIG9mZnNldCBsZWZ0IHRvIHJlbW92ZS5cclxuICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBfc2VsZi5jaGlsZHJlbi5sZW5ndGggJiYgdW5kaXN0cmlidXRlZFNwYWNlIDwgMDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbHVtbiA9IF9zZWxmLmNoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW4ub2Zmc2V0ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4ub2Zmc2V0LS07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGlzdHJpYnV0ZWRTcGFjZSsrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZnVuY3Rpb24gaGFzV2lkdGgoY29sdW1uKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodW5kaXN0cmlidXRlZFNwYWNlID4gMClcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29sdW1uLndpZHRoIDwgMTI7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh1bmRpc3RyaWJ1dGVkU3BhY2UgPCAwKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb2x1bW4ud2lkdGggPiAxO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBUcnkgdG8gZGlzdHJpYnV0ZSByZW1haW5pbmcgc3BhY2UgKGNvdWxkIGJlIG5lZ2F0aXZlIG9yIHBvc2l0aXZlKSB1c2luZyB3aWR0aHMuXHJcbiAgICAgICAgICAgIHdoaWxlICh1bmRpc3RyaWJ1dGVkU3BhY2UgIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgLy8gQW55IG1vcmUgY29sdW1uIHdpZHRoIGF2YWlsYWJsZSBmb3IgZGlzdHJpYnV0aW9uP1xyXG4gICAgICAgICAgICAgICAgaWYgKCFfKF9zZWxmLmNoaWxkcmVuKS5hbnkoaGFzV2lkdGgpKVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IF9zZWxmLmNoaWxkcmVuLmxlbmd0aCAmJiB1bmRpc3RyaWJ1dGVkU3BhY2UgIT0gMDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbHVtbiA9IF9zZWxmLmNoaWxkcmVuW2kgJSBfc2VsZi5jaGlsZHJlbi5sZW5ndGhdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXNXaWR0aChjb2x1bW4pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkZWx0YSA9IHVuZGlzdHJpYnV0ZWRTcGFjZSAvIE1hdGguYWJzKHVuZGlzdHJpYnV0ZWRTcGFjZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi53aWR0aCArPSBkZWx0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kaXN0cmlidXRlZFNwYWNlIC09IGRlbHRhO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiB1bmRpc3RyaWJ1dGVkU3BhY2UgPT0gMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBfaXNBZGRpbmdDb2x1bW4gPSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy5jYW5BZGRDb2x1bW4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNoaWxkcmVuLmxlbmd0aCA8IDEyO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuYmVnaW5BZGRDb2x1bW4gPSBmdW5jdGlvbiAobmV3Q29sdW1uV2lkdGgpIHtcclxuICAgICAgICAgICAgaWYgKCEhX2lzQWRkaW5nQ29sdW1uKVxyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ29sdW1uIGFkZCBvcGVyYXRpb24gaXMgYWxyZWFkeSBpbiBwcm9ncmVzcy5cIilcclxuICAgICAgICAgICAgXyh0aGlzLmNoaWxkcmVuKS5lYWNoKGZ1bmN0aW9uIChjb2x1bW4pIHtcclxuICAgICAgICAgICAgICAgIGNvbHVtbi5iZWdpbkNoYW5nZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKF9kaXN0cmlidXRlU3BhY2UoLW5ld0NvbHVtbldpZHRoKSkge1xyXG4gICAgICAgICAgICAgICAgX2lzQWRkaW5nQ29sdW1uID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF8odGhpcy5jaGlsZHJlbikuZWFjaChmdW5jdGlvbiAoY29sdW1uKSB7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4ucm9sbGJhY2tDaGFuZ2UoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmNvbW1pdEFkZENvbHVtbiA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKCFfaXNBZGRpbmdDb2x1bW4pXHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBjb2x1bW4gYWRkIG9wZXJhdGlvbiBpbiBwcm9ncmVzcy5cIilcclxuICAgICAgICAgICAgXyh0aGlzLmNoaWxkcmVuKS5lYWNoKGZ1bmN0aW9uIChjb2x1bW4pIHtcclxuICAgICAgICAgICAgICAgIGNvbHVtbi5jb21taXRDaGFuZ2UoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIF9pc0FkZGluZ0NvbHVtbiA9IGZhbHNlO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMucm9sbGJhY2tBZGRDb2x1bW4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmICghX2lzQWRkaW5nQ29sdW1uKVxyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gY29sdW1uIGFkZCBvcGVyYXRpb24gaW4gcHJvZ3Jlc3MuXCIpXHJcbiAgICAgICAgICAgIF8odGhpcy5jaGlsZHJlbikuZWFjaChmdW5jdGlvbiAoY29sdW1uKSB7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4ucm9sbGJhY2tDaGFuZ2UoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIF9pc0FkZGluZ0NvbHVtbiA9IGZhbHNlO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHZhciBfYmFzZURlbGV0ZUNoaWxkID0gdGhpcy5kZWxldGVDaGlsZDtcclxuICAgICAgICB0aGlzLmRlbGV0ZUNoaWxkID0gZnVuY3Rpb24gKGNvbHVtbikgeyBcclxuICAgICAgICAgICAgdmFyIHdpZHRoID0gY29sdW1uLndpZHRoO1xyXG4gICAgICAgICAgICBfYmFzZURlbGV0ZUNoaWxkLmNhbGwodGhpcywgY29sdW1uKTtcclxuICAgICAgICAgICAgX2Rpc3RyaWJ1dGVTcGFjZSh3aWR0aCk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5jYW5Db250cmFjdENvbHVtblJpZ2h0ID0gZnVuY3Rpb24gKGNvbHVtbiwgY29ubmVjdEFkamFjZW50KSB7XHJcbiAgICAgICAgICAgIHZhciBpbmRleCA9IF8odGhpcy5jaGlsZHJlbikuaW5kZXhPZihjb2x1bW4pO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMClcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb2x1bW4ud2lkdGggPiAxO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5jb250cmFjdENvbHVtblJpZ2h0ID0gZnVuY3Rpb24gKGNvbHVtbiwgY29ubmVjdEFkamFjZW50KSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jYW5Db250cmFjdENvbHVtblJpZ2h0KGNvbHVtbiwgY29ubmVjdEFkamFjZW50KSlcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgIHZhciBpbmRleCA9IF8odGhpcy5jaGlsZHJlbikuaW5kZXhPZihjb2x1bW4pO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbHVtbi53aWR0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4ud2lkdGgtLTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGggPiBpbmRleCArIDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5leHRDb2x1bW4gPSB0aGlzLmNoaWxkcmVuW2luZGV4ICsgMV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25uZWN0QWRqYWNlbnQgJiYgbmV4dENvbHVtbi5vZmZzZXQgPT0gMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRDb2x1bW4ud2lkdGgrKztcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dENvbHVtbi5vZmZzZXQrKztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmNhbkV4cGFuZENvbHVtblJpZ2h0ID0gZnVuY3Rpb24gKGNvbHVtbiwgY29ubmVjdEFkamFjZW50KSB7XHJcbiAgICAgICAgICAgIHZhciBpbmRleCA9IF8odGhpcy5jaGlsZHJlbikuaW5kZXhPZihjb2x1bW4pO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbHVtbi53aWR0aCA+PSAxMilcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGggPiBpbmRleCArIDEpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dENvbHVtbiA9IHRoaXMuY2hpbGRyZW5baW5kZXggKyAxXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29ubmVjdEFkamFjZW50ICYmIG5leHRDb2x1bW4ub2Zmc2V0ID09IDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXh0Q29sdW1uLndpZHRoID4gMTtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXh0Q29sdW1uLm9mZnNldCA+IDA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gX2dldFRvdGFsQ29sdW1uc1dpZHRoKCkgPCAxMjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5leHBhbmRDb2x1bW5SaWdodCA9IGZ1bmN0aW9uIChjb2x1bW4sIGNvbm5lY3RBZGphY2VudCkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY2FuRXhwYW5kQ29sdW1uUmlnaHQoY29sdW1uLCBjb25uZWN0QWRqYWNlbnQpKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgdmFyIGluZGV4ID0gXyh0aGlzLmNoaWxkcmVuKS5pbmRleE9mKGNvbHVtbik7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGggPiBpbmRleCArIDEpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dENvbHVtbiA9IHRoaXMuY2hpbGRyZW5baW5kZXggKyAxXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29ubmVjdEFkamFjZW50ICYmIG5leHRDb2x1bW4ub2Zmc2V0ID09IDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRDb2x1bW4ud2lkdGgtLTtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRDb2x1bW4ub2Zmc2V0LS07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4ud2lkdGgrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuY2FuRXhwYW5kQ29sdW1uTGVmdCA9IGZ1bmN0aW9uIChjb2x1bW4sIGNvbm5lY3RBZGphY2VudCkge1xyXG4gICAgICAgICAgICB2YXIgaW5kZXggPSBfKHRoaXMuY2hpbGRyZW4pLmluZGV4T2YoY29sdW1uKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcclxuICAgICAgICAgICAgICAgIGlmIChjb2x1bW4ud2lkdGggPj0gMTIpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBwcmV2Q29sdW1uID0gdGhpcy5jaGlsZHJlbltpbmRleCAtIDFdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25uZWN0QWRqYWNlbnQgJiYgY29sdW1uLm9mZnNldCA9PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJldkNvbHVtbi53aWR0aCA+IDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY29sdW1uLm9mZnNldCA+IDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuZXhwYW5kQ29sdW1uTGVmdCA9IGZ1bmN0aW9uIChjb2x1bW4sIGNvbm5lY3RBZGphY2VudCkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY2FuRXhwYW5kQ29sdW1uTGVmdChjb2x1bW4sIGNvbm5lY3RBZGphY2VudCkpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgICAgICB2YXIgaW5kZXggPSBfKHRoaXMuY2hpbGRyZW4pLmluZGV4T2YoY29sdW1uKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcclxuICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcHJldkNvbHVtbiA9IHRoaXMuY2hpbGRyZW5baW5kZXggLSAxXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29ubmVjdEFkamFjZW50ICYmIGNvbHVtbi5vZmZzZXQgPT0gMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldkNvbHVtbi53aWR0aC0tO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uLm9mZnNldC0tO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5vZmZzZXQtLTtcclxuICAgICAgICAgICAgICAgIGNvbHVtbi53aWR0aCsrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5jYW5Db250cmFjdENvbHVtbkxlZnQgPSBmdW5jdGlvbiAoY29sdW1uLCBjb25uZWN0QWRqYWNlbnQpIHtcclxuICAgICAgICAgICAgdmFyIGluZGV4ID0gXyh0aGlzLmNoaWxkcmVuKS5pbmRleE9mKGNvbHVtbik7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbHVtbi53aWR0aCA+IDE7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmNvbnRyYWN0Q29sdW1uTGVmdCA9IGZ1bmN0aW9uIChjb2x1bW4sIGNvbm5lY3RBZGphY2VudCkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY2FuQ29udHJhY3RDb2x1bW5MZWZ0KGNvbHVtbiwgY29ubmVjdEFkamFjZW50KSlcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgIHZhciBpbmRleCA9IF8odGhpcy5jaGlsZHJlbikuaW5kZXhPZihjb2x1bW4pO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBwcmV2Q29sdW1uID0gdGhpcy5jaGlsZHJlbltpbmRleCAtIDFdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25uZWN0QWRqYWNlbnQgJiYgY29sdW1uLm9mZnNldCA9PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2Q29sdW1uLndpZHRoKys7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4ub2Zmc2V0Kys7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLm9mZnNldCsrO1xyXG4gICAgICAgICAgICAgICAgY29sdW1uLndpZHRoLS07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmV2ZW5Db2x1bW5zID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGggPT0gMClcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgIHZhciBldmVuV2lkdGggPSBNYXRoLmZsb29yKDEyIC8gdGhpcy5jaGlsZHJlbi5sZW5ndGgpO1xyXG4gICAgICAgICAgICBfKHRoaXMuY2hpbGRyZW4pLmVhY2goZnVuY3Rpb24gKGNvbHVtbikge1xyXG4gICAgICAgICAgICAgICAgY29sdW1uLndpZHRoID0gZXZlbldpZHRoO1xyXG4gICAgICAgICAgICAgICAgY29sdW1uLm9mZnNldCA9IDA7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgdmFyIHJlc3QgPSAxMiAlIHRoaXMuY2hpbGRyZW4ubGVuZ3RoO1xyXG4gICAgICAgICAgICBpZiAocmVzdCA+IDApXHJcbiAgICAgICAgICAgICAgICBfZGlzdHJpYnV0ZVNwYWNlKHJlc3QpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHZhciBfYmFzZVBhc3RlQ2hpbGQgPSB0aGlzLnBhc3RlQ2hpbGQ7XHJcbiAgICAgICAgdGhpcy5wYXN0ZUNoaWxkID0gZnVuY3Rpb24gKGNoaWxkKSB7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZC50eXBlID09IFwiQ29sdW1uXCIpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmJlZ2luQWRkQ29sdW1uKGNoaWxkLndpZHRoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbWl0QWRkQ29sdW1uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgX2Jhc2VQYXN0ZUNoaWxkLmNhbGwodGhpcywgY2hpbGQpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoISF0aGlzLnBhcmVudClcclxuICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnBhc3RlQ2hpbGQoY2hpbGQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy50b09iamVjdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuZWxlbWVudFRvT2JqZWN0KCk7XHJcbiAgICAgICAgICAgIHJlc3VsdC5jaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW5Ub09iamVjdCgpO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH07XHJcbiAgICB9O1xyXG5cclxuICAgIExheW91dEVkaXRvci5Sb3cuZnJvbSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgTGF5b3V0RWRpdG9yLlJvdyhcclxuICAgICAgICAgICAgdmFsdWUuZGF0YSxcclxuICAgICAgICAgICAgdmFsdWUuaHRtbElkLFxyXG4gICAgICAgICAgICB2YWx1ZS5odG1sQ2xhc3MsXHJcbiAgICAgICAgICAgIHZhbHVlLmh0bWxTdHlsZSxcclxuICAgICAgICAgICAgdmFsdWUuaXNUZW1wbGF0ZWQsXHJcbiAgICAgICAgICAgIExheW91dEVkaXRvci5jaGlsZHJlbkZyb20odmFsdWUuY2hpbGRyZW4pKTtcclxuICAgICAgICByZXN1bHQudG9vbGJveEljb24gPSB2YWx1ZS50b29sYm94SWNvbjtcclxuICAgICAgICByZXN1bHQudG9vbGJveExhYmVsID0gdmFsdWUudG9vbGJveExhYmVsO1xyXG4gICAgICAgIHJlc3VsdC50b29sYm94RGVzY3JpcHRpb24gPSB2YWx1ZS50b29sYm94RGVzY3JpcHRpb247XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH07XHJcblxyXG59KShMYXlvdXRFZGl0b3IgfHwgKExheW91dEVkaXRvciA9IHt9KSk7IiwidmFyIExheW91dEVkaXRvcjtcclxuKGZ1bmN0aW9uIChMYXlvdXRFZGl0b3IpIHtcclxuXHJcbiAgICBMYXlvdXRFZGl0b3IuQ29sdW1uID0gZnVuY3Rpb24gKGRhdGEsIGh0bWxJZCwgaHRtbENsYXNzLCBodG1sU3R5bGUsIGlzVGVtcGxhdGVkLCB3aWR0aCwgb2Zmc2V0LCBjaGlsZHJlbikge1xyXG4gICAgICAgIExheW91dEVkaXRvci5FbGVtZW50LmNhbGwodGhpcywgXCJDb2x1bW5cIiwgZGF0YSwgaHRtbElkLCBodG1sQ2xhc3MsIGh0bWxTdHlsZSwgaXNUZW1wbGF0ZWQpO1xyXG4gICAgICAgIExheW91dEVkaXRvci5Db250YWluZXIuY2FsbCh0aGlzLCBbXCJHcmlkXCIsIFwiQ29udGVudFwiXSwgY2hpbGRyZW4pO1xyXG5cclxuICAgICAgICB0aGlzLndpZHRoID0gd2lkdGg7XHJcbiAgICAgICAgdGhpcy5vZmZzZXQgPSBvZmZzZXQ7XHJcblxyXG4gICAgICAgIHZhciBfaGFzUGVuZGluZ0NoYW5nZSA9IGZhbHNlO1xyXG4gICAgICAgIHZhciBfb3JpZ1dpZHRoID0gMDtcclxuICAgICAgICB2YXIgX29yaWdPZmZzZXQgPSAwO1xyXG5cclxuICAgICAgICB0aGlzLmJlZ2luQ2hhbmdlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAoISFfaGFzUGVuZGluZ0NoYW5nZSlcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbHVtbiBhbHJlYWR5IGhhcyBhIHBlbmRpbmcgY2hhbmdlLlwiKVxyXG4gICAgICAgICAgICBfaGFzUGVuZGluZ0NoYW5nZSA9IHRydWU7XHJcbiAgICAgICAgICAgIF9vcmlnV2lkdGggPSB0aGlzLndpZHRoO1xyXG4gICAgICAgICAgICBfb3JpZ09mZnNldCA9IHRoaXMub2Zmc2V0O1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuY29tbWl0Q2hhbmdlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAoIV9oYXNQZW5kaW5nQ2hhbmdlKVxyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ29sdW1uIGhhcyBubyBwZW5kaW5nIGNoYW5nZS5cIilcclxuICAgICAgICAgICAgX29yaWdXaWR0aCA9IDA7XHJcbiAgICAgICAgICAgIF9vcmlnT2Zmc2V0ID0gMDtcclxuICAgICAgICAgICAgX2hhc1BlbmRpbmdDaGFuZ2UgPSBmYWxzZTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLnJvbGxiYWNrQ2hhbmdlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAoIV9oYXNQZW5kaW5nQ2hhbmdlKVxyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ29sdW1uIGhhcyBubyBwZW5kaW5nIGNoYW5nZS5cIilcclxuICAgICAgICAgICAgdGhpcy53aWR0aCA9IF9vcmlnV2lkdGg7XHJcbiAgICAgICAgICAgIHRoaXMub2Zmc2V0ID0gX29yaWdPZmZzZXQ7XHJcbiAgICAgICAgICAgIF9vcmlnV2lkdGggPSAwO1xyXG4gICAgICAgICAgICBfb3JpZ09mZnNldCA9IDA7XHJcbiAgICAgICAgICAgIF9oYXNQZW5kaW5nQ2hhbmdlID0gZmFsc2U7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5jYW5TcGxpdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2lkdGggPiAxO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuc3BsaXQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jYW5TcGxpdCgpKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgdmFyIG5ld0NvbHVtbldpZHRoID0gTWF0aC5mbG9vcih0aGlzLndpZHRoIC8gMik7XHJcbiAgICAgICAgICAgIHZhciBuZXdDb2x1bW4gPSBMYXlvdXRFZGl0b3IuQ29sdW1uLmZyb20oe1xyXG4gICAgICAgICAgICAgICAgZGF0YTogbnVsbCxcclxuICAgICAgICAgICAgICAgIGh0bWxJZDogbnVsbCxcclxuICAgICAgICAgICAgICAgIGh0bWxDbGFzczogbnVsbCxcclxuICAgICAgICAgICAgICAgIGh0bWxTdHlsZTogbnVsbCxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiBuZXdDb2x1bW5XaWR0aCxcclxuICAgICAgICAgICAgICAgIG9mZnNldDogMCxcclxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMud2lkdGggPSB0aGlzLndpZHRoIC0gbmV3Q29sdW1uV2lkdGg7XHJcbiAgICAgICAgICAgIHRoaXMucGFyZW50Lmluc2VydENoaWxkKG5ld0NvbHVtbiwgdGhpcyk7XHJcbiAgICAgICAgICAgIG5ld0NvbHVtbi5zZXRJc0ZvY3VzZWQoKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmNhbkNvbnRyYWN0UmlnaHQgPSBmdW5jdGlvbiAoY29ubmVjdEFkamFjZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudC5jYW5Db250cmFjdENvbHVtblJpZ2h0KHRoaXMsIGNvbm5lY3RBZGphY2VudCk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5jb250cmFjdFJpZ2h0ID0gZnVuY3Rpb24gKGNvbm5lY3RBZGphY2VudCkge1xyXG4gICAgICAgICAgICB0aGlzLnBhcmVudC5jb250cmFjdENvbHVtblJpZ2h0KHRoaXMsIGNvbm5lY3RBZGphY2VudCk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5jYW5FeHBhbmRSaWdodCA9IGZ1bmN0aW9uIChjb25uZWN0QWRqYWNlbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50LmNhbkV4cGFuZENvbHVtblJpZ2h0KHRoaXMsIGNvbm5lY3RBZGphY2VudCk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5leHBhbmRSaWdodCA9IGZ1bmN0aW9uIChjb25uZWN0QWRqYWNlbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5wYXJlbnQuZXhwYW5kQ29sdW1uUmlnaHQodGhpcywgY29ubmVjdEFkamFjZW50KTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmNhbkV4cGFuZExlZnQgPSBmdW5jdGlvbiAoY29ubmVjdEFkamFjZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudC5jYW5FeHBhbmRDb2x1bW5MZWZ0KHRoaXMsIGNvbm5lY3RBZGphY2VudCk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5leHBhbmRMZWZ0ID0gZnVuY3Rpb24gKGNvbm5lY3RBZGphY2VudCkge1xyXG4gICAgICAgICAgICB0aGlzLnBhcmVudC5leHBhbmRDb2x1bW5MZWZ0KHRoaXMsIGNvbm5lY3RBZGphY2VudCk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5jYW5Db250cmFjdExlZnQgPSBmdW5jdGlvbiAoY29ubmVjdEFkamFjZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudC5jYW5Db250cmFjdENvbHVtbkxlZnQodGhpcywgY29ubmVjdEFkamFjZW50KTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmNvbnRyYWN0TGVmdCA9IGZ1bmN0aW9uIChjb25uZWN0QWRqYWNlbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5wYXJlbnQuY29udHJhY3RDb2x1bW5MZWZ0KHRoaXMsIGNvbm5lY3RBZGphY2VudCk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy50b09iamVjdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuZWxlbWVudFRvT2JqZWN0KCk7XHJcbiAgICAgICAgICAgIHJlc3VsdC53aWR0aCA9IHRoaXMud2lkdGg7XHJcbiAgICAgICAgICAgIHJlc3VsdC5vZmZzZXQgPSB0aGlzLm9mZnNldDtcclxuICAgICAgICAgICAgcmVzdWx0LmNoaWxkcmVuID0gdGhpcy5jaGlsZHJlblRvT2JqZWN0KCk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfTtcclxuICAgIH07XHJcblxyXG4gICAgTGF5b3V0RWRpdG9yLkNvbHVtbi5mcm9tID0gZnVuY3Rpb24gKHZhbHVlKSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBMYXlvdXRFZGl0b3IuQ29sdW1uKFxyXG4gICAgICAgICAgICB2YWx1ZS5kYXRhLFxyXG4gICAgICAgICAgICB2YWx1ZS5odG1sSWQsXHJcbiAgICAgICAgICAgIHZhbHVlLmh0bWxDbGFzcyxcclxuICAgICAgICAgICAgdmFsdWUuaHRtbFN0eWxlLFxyXG4gICAgICAgICAgICB2YWx1ZS5pc1RlbXBsYXRlZCxcclxuICAgICAgICAgICAgdmFsdWUud2lkdGgsXHJcbiAgICAgICAgICAgIHZhbHVlLm9mZnNldCxcclxuICAgICAgICAgICAgTGF5b3V0RWRpdG9yLmNoaWxkcmVuRnJvbSh2YWx1ZS5jaGlsZHJlbikpO1xyXG4gICAgICAgIHJlc3VsdC50b29sYm94SWNvbiA9IHZhbHVlLnRvb2xib3hJY29uO1xyXG4gICAgICAgIHJlc3VsdC50b29sYm94TGFiZWwgPSB2YWx1ZS50b29sYm94TGFiZWw7XHJcbiAgICAgICAgcmVzdWx0LnRvb2xib3hEZXNjcmlwdGlvbiA9IHZhbHVlLnRvb2xib3hEZXNjcmlwdGlvbjtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfTtcclxuXHJcbiAgICBMYXlvdXRFZGl0b3IuQ29sdW1uLnRpbWVzID0gZnVuY3Rpb24gKHZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIF8udGltZXModmFsdWUsIGZ1bmN0aW9uIChuKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBMYXlvdXRFZGl0b3IuQ29sdW1uLmZyb20oe1xyXG4gICAgICAgICAgICAgICAgZGF0YTogbnVsbCxcclxuICAgICAgICAgICAgICAgIGh0bWxJZDogbnVsbCxcclxuICAgICAgICAgICAgICAgIGh0bWxDbGFzczogbnVsbCxcclxuICAgICAgICAgICAgICAgIGlzVGVtcGxhdGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAxMiAvIHZhbHVlLFxyXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiAwLFxyXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IFtdXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcbn0pKExheW91dEVkaXRvciB8fCAoTGF5b3V0RWRpdG9yID0ge30pKTsiLCJ2YXIgTGF5b3V0RWRpdG9yO1xyXG4oZnVuY3Rpb24gKExheW91dEVkaXRvcikge1xyXG5cclxuICAgIExheW91dEVkaXRvci5Db250ZW50ID0gZnVuY3Rpb24gKGRhdGEsIGh0bWxJZCwgaHRtbENsYXNzLCBodG1sU3R5bGUsIGlzVGVtcGxhdGVkLCBjb250ZW50VHlwZSwgY29udGVudFR5cGVMYWJlbCwgY29udGVudFR5cGVDbGFzcywgaHRtbCwgaGFzRWRpdG9yKSB7XHJcbiAgICAgICAgTGF5b3V0RWRpdG9yLkVsZW1lbnQuY2FsbCh0aGlzLCBcIkNvbnRlbnRcIiwgZGF0YSwgaHRtbElkLCBodG1sQ2xhc3MsIGh0bWxTdHlsZSwgaXNUZW1wbGF0ZWQpO1xyXG5cclxuICAgICAgICB0aGlzLmNvbnRlbnRUeXBlID0gY29udGVudFR5cGU7XHJcbiAgICAgICAgdGhpcy5jb250ZW50VHlwZUxhYmVsID0gY29udGVudFR5cGVMYWJlbDtcclxuICAgICAgICB0aGlzLmNvbnRlbnRUeXBlQ2xhc3MgPSBjb250ZW50VHlwZUNsYXNzO1xyXG4gICAgICAgIHRoaXMuaHRtbCA9IGh0bWw7XHJcbiAgICAgICAgdGhpcy5oYXNFZGl0b3IgPSBoYXNFZGl0b3I7XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0SW5uZXJUZXh0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gJCgkLnBhcnNlSFRNTChcIjxkaXY+XCIgKyB0aGlzLmh0bWwgKyBcIjwvZGl2PlwiKSkudGV4dCgpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBvdmVyd3JpdHRlbiBieSB0aGUgQ29udGVudCBkaXJlY3RpdmUuXHJcbiAgICAgICAgdGhpcy5zZXRIdG1sID0gZnVuY3Rpb24gKGh0bWwpIHtcclxuICAgICAgICAgICAgdGhpcy5odG1sID0gaHRtbDtcclxuICAgICAgICAgICAgdGhpcy5odG1sVW5zYWZlID0gaHRtbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMudG9PYmplY3QgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJDb250ZW50XCJcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLnRvT2JqZWN0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5lbGVtZW50VG9PYmplY3QoKTtcclxuICAgICAgICAgICAgcmVzdWx0LmNvbnRlbnRUeXBlID0gdGhpcy5jb250ZW50VHlwZTtcclxuICAgICAgICAgICAgcmVzdWx0LmNvbnRlbnRUeXBlTGFiZWwgPSB0aGlzLmNvbnRlbnRUeXBlTGFiZWw7XHJcbiAgICAgICAgICAgIHJlc3VsdC5jb250ZW50VHlwZUNsYXNzID0gdGhpcy5jb250ZW50VHlwZUNsYXNzO1xyXG4gICAgICAgICAgICByZXN1bHQuaHRtbCA9IHRoaXMuaHRtbDtcclxuICAgICAgICAgICAgcmVzdWx0Lmhhc0VkaXRvciA9IGhhc0VkaXRvcjtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLnNldEh0bWwoaHRtbCk7XHJcbiAgICB9O1xyXG5cclxuICAgIExheW91dEVkaXRvci5Db250ZW50LmZyb20gPSBmdW5jdGlvbiAodmFsdWUpIHtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IExheW91dEVkaXRvci5Db250ZW50KFxyXG4gICAgICAgICAgICB2YWx1ZS5kYXRhLFxyXG4gICAgICAgICAgICB2YWx1ZS5odG1sSWQsXHJcbiAgICAgICAgICAgIHZhbHVlLmh0bWxDbGFzcyxcclxuICAgICAgICAgICAgdmFsdWUuaHRtbFN0eWxlLFxyXG4gICAgICAgICAgICB2YWx1ZS5pc1RlbXBsYXRlZCxcclxuICAgICAgICAgICAgdmFsdWUuY29udGVudFR5cGUsXHJcbiAgICAgICAgICAgIHZhbHVlLmNvbnRlbnRUeXBlTGFiZWwsXHJcbiAgICAgICAgICAgIHZhbHVlLmNvbnRlbnRUeXBlQ2xhc3MsXHJcbiAgICAgICAgICAgIHZhbHVlLmh0bWwsXHJcbiAgICAgICAgICAgIHZhbHVlLmhhc0VkaXRvcik7XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9O1xyXG5cclxufSkoTGF5b3V0RWRpdG9yIHx8IChMYXlvdXRFZGl0b3IgPSB7fSkpOyIsInZhciBMYXlvdXRFZGl0b3I7XHJcbihmdW5jdGlvbiAoJCwgTGF5b3V0RWRpdG9yKSB7XHJcblxyXG4gICAgTGF5b3V0RWRpdG9yLkh0bWwgPSBmdW5jdGlvbiAoZGF0YSwgaHRtbElkLCBodG1sQ2xhc3MsIGh0bWxTdHlsZSwgaXNUZW1wbGF0ZWQsIGNvbnRlbnRUeXBlLCBjb250ZW50VHlwZUxhYmVsLCBjb250ZW50VHlwZUNsYXNzLCBodG1sLCBoYXNFZGl0b3IpIHtcclxuICAgICAgICBMYXlvdXRFZGl0b3IuRWxlbWVudC5jYWxsKHRoaXMsIFwiSHRtbFwiLCBkYXRhLCBodG1sSWQsIGh0bWxDbGFzcywgaHRtbFN0eWxlLCBpc1RlbXBsYXRlZCk7XHJcblxyXG4gICAgICAgIHRoaXMuY29udGVudFR5cGUgPSBjb250ZW50VHlwZTtcclxuICAgICAgICB0aGlzLmNvbnRlbnRUeXBlTGFiZWwgPSBjb250ZW50VHlwZUxhYmVsO1xyXG4gICAgICAgIHRoaXMuY29udGVudFR5cGVDbGFzcyA9IGNvbnRlbnRUeXBlQ2xhc3M7XHJcbiAgICAgICAgdGhpcy5odG1sID0gaHRtbDtcclxuICAgICAgICB0aGlzLmhhc0VkaXRvciA9IGhhc0VkaXRvcjtcclxuICAgICAgICB0aGlzLmlzQ29udGFpbmFibGUgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLmdldElubmVyVGV4dCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuICQoJC5wYXJzZUhUTUwoXCI8ZGl2PlwiICsgdGhpcy5odG1sICsgXCI8L2Rpdj5cIikpLnRleHQoKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIENvbnRlbnQgZGlyZWN0aXZlLlxyXG4gICAgICAgIHRoaXMuc2V0SHRtbCA9IGZ1bmN0aW9uIChodG1sKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaHRtbCA9IGh0bWw7XHJcbiAgICAgICAgICAgIHRoaXMuaHRtbFVuc2FmZSA9IGh0bWw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnRvT2JqZWN0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiSHRtbFwiXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy50b09iamVjdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuZWxlbWVudFRvT2JqZWN0KCk7XHJcbiAgICAgICAgICAgIHJlc3VsdC5jb250ZW50VHlwZSA9IHRoaXMuY29udGVudFR5cGU7XHJcbiAgICAgICAgICAgIHJlc3VsdC5jb250ZW50VHlwZUxhYmVsID0gdGhpcy5jb250ZW50VHlwZUxhYmVsO1xyXG4gICAgICAgICAgICByZXN1bHQuY29udGVudFR5cGVDbGFzcyA9IHRoaXMuY29udGVudFR5cGVDbGFzcztcclxuICAgICAgICAgICAgcmVzdWx0Lmh0bWwgPSB0aGlzLmh0bWw7XHJcbiAgICAgICAgICAgIHJlc3VsdC5oYXNFZGl0b3IgPSBoYXNFZGl0b3I7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdmFyIGdldEVkaXRvck9iamVjdCA9IHRoaXMuZ2V0RWRpdG9yT2JqZWN0O1xyXG4gICAgICAgIHRoaXMuZ2V0RWRpdG9yT2JqZWN0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB2YXIgZHRvID0gZ2V0RWRpdG9yT2JqZWN0KCk7XHJcbiAgICAgICAgICAgIHJldHVybiAkLmV4dGVuZChkdG8sIHtcclxuICAgICAgICAgICAgICAgIENvbnRlbnQ6IHRoaXMuaHRtbFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2V0SHRtbChodG1sKTtcclxuICAgIH07XHJcblxyXG4gICAgTGF5b3V0RWRpdG9yLkh0bWwuZnJvbSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgTGF5b3V0RWRpdG9yLkh0bWwoXHJcbiAgICAgICAgICAgIHZhbHVlLmRhdGEsXHJcbiAgICAgICAgICAgIHZhbHVlLmh0bWxJZCxcclxuICAgICAgICAgICAgdmFsdWUuaHRtbENsYXNzLFxyXG4gICAgICAgICAgICB2YWx1ZS5odG1sU3R5bGUsXHJcbiAgICAgICAgICAgIHZhbHVlLmlzVGVtcGxhdGVkLFxyXG4gICAgICAgICAgICB2YWx1ZS5jb250ZW50VHlwZSxcclxuICAgICAgICAgICAgdmFsdWUuY29udGVudFR5cGVMYWJlbCxcclxuICAgICAgICAgICAgdmFsdWUuY29udGVudFR5cGVDbGFzcyxcclxuICAgICAgICAgICAgdmFsdWUuaHRtbCxcclxuICAgICAgICAgICAgdmFsdWUuaGFzRWRpdG9yKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH07XHJcblxyXG4gICAgTGF5b3V0RWRpdG9yLnJlZ2lzdGVyRmFjdG9yeShcIkh0bWxcIiwgZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIExheW91dEVkaXRvci5IdG1sLmZyb20odmFsdWUpOyB9KTtcclxuXHJcbn0pKGpRdWVyeSwgTGF5b3V0RWRpdG9yIHx8IChMYXlvdXRFZGl0b3IgPSB7fSkpOyJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/Models.min.js b/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/Models.min.js index 9e2520803..740af1ba0 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/Models.min.js +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/Models.min.js @@ -1 +1 @@ -var LayoutEditor;!function(t){Array.prototype.move=function(t,i){this.splice(i,0,this.splice(t,1)[0])},t.childrenFrom=function(i){return _(i).map(function(i){return t.elementFrom(i)})};var i=t.registerFactory=function(i,n){var e=t.factories=t.factories||{};e[i]=n};i("Grid",function(i){return t.Grid.from(i)}),i("Row",function(i){return t.Row.from(i)}),i("Column",function(i){return t.Column.from(i)}),i("Content",function(i){return t.Content.from(i)}),t.elementFrom=function(i){var n=t.factories[i.type];if(!n)throw new Error('No element with type "'+i.type+'" was found.');var e=n(i);return e},t.setModel=function(t,i){$(t).scope().element=i},t.getModel=function(t){return $(t).scope().element}}(LayoutEditor||(LayoutEditor={}));var LayoutEditor;!function(t){t.Editor=function(i,n){this.config=i,this.canvas=t.Canvas.from(n),this.initialState=JSON.stringify(this.canvas.toObject()),this.activeElement=null,this.focusedElement=null,this.dropTargetElement=null,this.isDragging=!1,this.inlineEditingIsActive=!1,this.isResizing=!1,this.resetToolboxElements=function(){this.toolboxElements=[t.Row.from({children:[]})]},this.isDirty=function(){var t=JSON.stringify(this.canvas.toObject());return this.initialState!=t},this.resetToolboxElements(),this.canvas.setEditor(this)}}(LayoutEditor||(LayoutEditor={}));var LayoutEditor;!function(t){t.Element=function(t,i,n,e,h,o){if(!t)throw new Error("Parameter 'type' is required.");this.type=t,this.data=i,this.htmlId=n,this.htmlClass=e,this.htmlStyle=h,this.isTemplated=o,this.editor=null,this.parent=null,this.setIsFocusedEventHandlers=[],this.setEditor=function(t){this.editor=t,this.children&&_.isArray(this.children)&&_(this.children).each(function(i){i.setEditor(t)})},this.setParent=function(t){this.parent=t,this.parent.linkChild&&this.parent.linkChild(this)},this.setIsTemplated=function(t){this.isTemplated=t,this.children&&_.isArray(this.children)&&_(this.children).each(function(i){i.setIsTemplated(t)})},this.getIsActive=function(){return this.editor?this.editor.activeElement===this&&!this.getIsFocused():!1},this.setIsActive=function(t){this.editor&&(this.editor.isDragging||this.editor.inlineEditingIsActive||this.editor.isResizing||(this.editor.activeElement=t?this:this.parent))},this.getIsFocused=function(){return this.editor?this.editor.focusedElement===this:!1},this.setIsFocused=function(){this.editor&&(this.isTemplated||this.editor.isDragging||this.editor.inlineEditingIsActive||this.editor.isResizing||(this.editor.focusedElement=this,_(this.setIsFocusedEventHandlers).each(function(t){try{t()}catch(i){}})))},this.getIsSelected=function(){return this.getIsFocused()?!0:this.children&&_.isArray(this.children)?_(this.children).any(function(t){return t.getIsSelected()}):!1},this.getIsDropTarget=function(){return this.editor?this.editor.dropTargetElement===this:!1},this.setIsDropTarget=function(t){this.editor&&(this.editor.dropTargetElement=t?this:null)},this["delete"]=function(){this.parent&&this.parent.deleteChild(this)},this.canMoveUp=function(){return this.parent?this.parent.canMoveChildUp(this):!1},this.moveUp=function(){this.parent&&this.parent.moveChildUp(this)},this.canMoveDown=function(){return this.parent?this.parent.canMoveChildDown(this):!1},this.moveDown=function(){this.parent&&this.parent.moveChildDown(this)},this.elementToObject=function(){return{type:this.type,data:this.data,htmlId:this.htmlId,htmlClass:this.htmlClass,htmlStyle:this.htmlStyle,isTemplated:this.isTemplated}},this.getEditorObject=function(){return{}},this.copy=function(t){var i=this.getInnerText();t.setData("text/plain",i);var n=this.toObject(),e=JSON.stringify(n,null," ");t.setData("text/json",e)},this.cut=function(t){this.copy(t),this["delete"]()},this.paste=function(t){this.parent&&this.parent.paste(t)}}}(LayoutEditor||(LayoutEditor={}));var LayoutEditor;!function(t){t.Container=function(i,n){this.allowedChildTypes=i,this.children=n,this.isContainer=!0;var e=this;this.setChildren=function(t){this.children=t,_(this.children).each(function(t){t.parent=e})},this.setChildren(n),this.getIsSealed=function(){return _(this.children).any(function(t){return t.isTemplated})},this.addChild=function(t){_(this.children).contains(t)||!_(this.allowedChildTypes).contains(t.type)&&!t.isContainable||this.children.push(t),t.setEditor(this.editor),t.setIsTemplated(!1),t.parent=this},this.deleteChild=function(t){var i=_(this.children).indexOf(t);i>=0&&(this.children.splice(i,1),t.getIsActive()&&(this.editor.activeElement=null),t.getIsFocused()&&(this.children.length>i?this.children[i].setIsFocused():i>0?this.children[i-1].setIsFocused():this.setIsFocused()))},this.moveFocusPrevChild=function(t){if(!(this.children.length<2)){var i=_(this.children).indexOf(t);i>0&&this.children[i-1].setIsFocused()}},this.moveFocusNextChild=function(t){if(!(this.children.length<2)){var i=_(this.children).indexOf(t);i0},this.canMoveChildDown=function(t){var i=_(this.children).indexOf(t);return i0?t.width<12:0>e?t.width>1:!1}if(0==t)return!0;var e=t;if(0>e){var h=12-l();e+=h,e>0&&(e=0)}for(;0>e&&_(a.children).any(function(t){return t.offset>0});)for(i=0;ie;i++){var o=a.children[i];o.offset>0&&(o.offset--,e++)}for(;0!=e&&_(a.children).any(n);)for(i=0;i=0?t.width>1:!1},this.contractColumnRight=function(t,i){if(this.canContractColumnRight(t,i)){var n=_(this.children).indexOf(t);if(n>=0&&t.width>1&&(t.width--,this.children.length>n+1)){var e=this.children[n+1];i&&0==e.offset?e.width++:e.offset++}}},this.canExpandColumnRight=function(t,i){var n=_(this.children).indexOf(t);if(n>=0){if(t.width>=12)return!1;if(this.children.length>n+1){var e=this.children[n+1];return i&&0==e.offset?e.width>1:e.offset>0}return l()<12}return!1},this.expandColumnRight=function(t,i){if(this.canExpandColumnRight(t,i)){var n=_(this.children).indexOf(t);if(n>=0){if(this.children.length>n+1){var e=this.children[n+1];i&&0==e.offset?e.width--:e.offset--}t.width++}}},this.canExpandColumnLeft=function(t,i){var n=_(this.children).indexOf(t);if(n>=0){if(t.width>=12)return!1;if(n>0){var e=this.children[n-1];if(i&&0==t.offset)return e.width>1}return t.offset>0}return!1},this.expandColumnLeft=function(t,i){if(this.canExpandColumnLeft(t,i)){var n=_(this.children).indexOf(t);if(n>=0){if(n>0){var e=this.children[n-1];i&&0==t.offset?e.width--:t.offset--}else t.offset--;t.width++}}},this.canContractColumnLeft=function(t,i){var n=_(this.children).indexOf(t);return n>=0?t.width>1:!1},this.contractColumnLeft=function(t,i){if(this.canContractColumnLeft(t,i)){var n=_(this.children).indexOf(t);if(n>=0){if(n>0){var e=this.children[n-1];i&&0==t.offset?e.width++:t.offset++}else t.offset++;t.width--}}},this.evenColumns=function(){if(0!=this.children.length){var t=Math.floor(12/this.children.length);_(this.children).each(function(i){i.width=t,i.offset=0});var i=12%this.children.length;i>0&&c(i)}};var f=this.pasteChild;this.pasteChild=function(t){"Column"==t.type?this.beginAddColumn(t.width)&&(this.commitAddColumn(),f.call(this,t)):this.parent&&this.parent.pasteChild(t)},this.toObject=function(){var t=this.elementToObject();return t.children=this.childrenToObject(),t}},t.Row.from=function(i){var n=new t.Row(i.data,i.htmlId,i.htmlClass,i.htmlStyle,i.isTemplated,t.childrenFrom(i.children));return n.toolboxIcon=i.toolboxIcon,n.toolboxLabel=i.toolboxLabel,n.toolboxDescription=i.toolboxDescription,n}}(LayoutEditor||(LayoutEditor={}));var LayoutEditor;!function(t){t.Column=function(i,n,e,h,o,s,r,l){t.Element.call(this,"Column",i,n,e,h,o),t.Container.call(this,["Grid","Content"],l),this.width=s,this.offset=r;var c=!1,a=0,d=0;this.beginChange=function(){if(c)throw new Error("Column already has a pending change.");c=!0,a=this.width,d=this.offset},this.commitChange=function(){if(!c)throw new Error("Column has no pending change.");a=0,d=0,c=!1},this.rollbackChange=function(){if(!c)throw new Error("Column has no pending change.");this.width=a,this.offset=d,a=0,d=0,c=!1},this.canSplit=function(){return this.width>1},this.split=function(){if(this.canSplit()){var i=Math.floor(this.width/2),n=t.Column.from({data:null,htmlId:null,htmlClass:null,htmlStyle:null,width:i,offset:0,children:[]});this.width=this.width-i,this.parent.insertChild(n,this),n.setIsFocused()}},this.canContractRight=function(t){return this.parent.canContractColumnRight(this,t)},this.contractRight=function(t){this.parent.contractColumnRight(this,t)},this.canExpandRight=function(t){return this.parent.canExpandColumnRight(this,t)},this.expandRight=function(t){this.parent.expandColumnRight(this,t)},this.canExpandLeft=function(t){return this.parent.canExpandColumnLeft(this,t)},this.expandLeft=function(t){this.parent.expandColumnLeft(this,t)},this.canContractLeft=function(t){return this.parent.canContractColumnLeft(this,t)},this.contractLeft=function(t){this.parent.contractColumnLeft(this,t)},this.toObject=function(){var t=this.elementToObject();return t.width=this.width,t.offset=this.offset,t.children=this.childrenToObject(),t}},t.Column.from=function(i){var n=new t.Column(i.data,i.htmlId,i.htmlClass,i.htmlStyle,i.isTemplated,i.width,i.offset,t.childrenFrom(i.children));return n.toolboxIcon=i.toolboxIcon,n.toolboxLabel=i.toolboxLabel,n.toolboxDescription=i.toolboxDescription,n},t.Column.times=function(i){return _.times(i,function(n){return t.Column.from({data:null,htmlId:null,htmlClass:null,isTemplated:!1,width:12/i,offset:0,children:[]})})}}(LayoutEditor||(LayoutEditor={}));var LayoutEditor;!function(t){t.Content=function(i,n,e,h,o,s,r,l,c,a){t.Element.call(this,"Content",i,n,e,h,o),this.contentType=s,this.contentTypeLabel=r,this.contentTypeClass=l,this.html=c,this.hasEditor=a,this.getInnerText=function(){return $($.parseHTML("
"+this.html+"
")).text()},this.setHtml=function(t){this.html=t,this.htmlUnsafe=t},this.toObject=function(){return{type:"Content"}},this.toObject=function(){var t=this.elementToObject();return t.contentType=this.contentType,t.contentTypeLabel=this.contentTypeLabel,t.contentTypeClass=this.contentTypeClass,t.html=this.html,t.hasEditor=a,t},this.setHtml(c)},t.Content.from=function(i){var n=new t.Content(i.data,i.htmlId,i.htmlClass,i.htmlStyle,i.isTemplated,i.contentType,i.contentTypeLabel,i.contentTypeClass,i.html,i.hasEditor);return n}}(LayoutEditor||(LayoutEditor={}));var LayoutEditor;!function(t,i){i.Html=function(n,e,h,o,s,r,l,c,a,d){i.Element.call(this,"Html",n,e,h,o,s),this.contentType=r,this.contentTypeLabel=l,this.contentTypeClass=c,this.html=a,this.hasEditor=d,this.isContainable=!0,this.getInnerText=function(){return t(t.parseHTML("
"+this.html+"
")).text()},this.setHtml=function(t){this.html=t,this.htmlUnsafe=t},this.toObject=function(){return{type:"Html"}},this.toObject=function(){var t=this.elementToObject();return t.contentType=this.contentType,t.contentTypeLabel=this.contentTypeLabel,t.contentTypeClass=this.contentTypeClass,t.html=this.html,t.hasEditor=d,t};var u=this.getEditorObject;this.getEditorObject=function(){var i=u();return t.extend(i,{Content:this.html})},this.setHtml(a)},i.Html.from=function(t){var n=new i.Html(t.data,t.htmlId,t.htmlClass,t.htmlStyle,t.isTemplated,t.contentType,t.contentTypeLabel,t.contentTypeClass,t.html,t.hasEditor);return n},i.registerFactory("Html",function(t){return i.Html.from(t)})}(jQuery,LayoutEditor||(LayoutEditor={})); \ No newline at end of file +var LayoutEditor;!function(t){Array.prototype.move=function(t,i){this.splice(i,0,this.splice(t,1)[0])},t.childrenFrom=function(i){return _(i).map(function(i){return t.elementFrom(i)})};var i=t.registerFactory=function(i,n){var e=t.factories=t.factories||{};e[i]=n};i("Grid",function(i){return t.Grid.from(i)}),i("Row",function(i){return t.Row.from(i)}),i("Column",function(i){return t.Column.from(i)}),i("Content",function(i){return t.Content.from(i)}),t.elementFrom=function(i){var n=t.factories[i.type];if(!n)throw new Error('No element with type "'+i.type+'" was found.');var e=n(i);return e},t.setModel=function(t,i){$(t).scope().element=i},t.getModel=function(t){return $(t).scope().element}}(LayoutEditor||(LayoutEditor={}));var LayoutEditor;!function(t){t.Editor=function(i,n){this.config=i,this.canvas=t.Canvas.from(n),this.initialState=JSON.stringify(this.canvas.toObject()),this.activeElement=null,this.focusedElement=null,this.dropTargetElement=null,this.isDragging=!1,this.inlineEditingIsActive=!1,this.isResizing=!1,this.resetToolboxElements=function(){this.toolboxElements=[t.Row.from({children:[]})]},this.isDirty=function(){var t=JSON.stringify(this.canvas.toObject());return this.initialState!=t},this.resetToolboxElements(),this.canvas.setEditor(this)}}(LayoutEditor||(LayoutEditor={}));var LayoutEditor;!function(t){t.Element=function(t,i,n,e,h,o){if(!t)throw new Error("Parameter 'type' is required.");this.type=t,this.data=i,this.htmlId=n,this.htmlClass=e,this.htmlStyle=h,this.isTemplated=o,this.editor=null,this.parent=null,this.setIsFocusedEventHandlers=[],this.setEditor=function(t){this.editor=t,this.children&&_.isArray(this.children)&&_(this.children).each(function(i){i.setEditor(t)})},this.setParent=function(t){this.parent=t,this.parent.onChildAdded(this);for(var i=t;i;)i.onDescendantAdded(this,t),i=i.parent},this.setIsTemplated=function(t){this.isTemplated=t,this.children&&_.isArray(this.children)&&_(this.children).each(function(i){i.setIsTemplated(t)})},this.applyElementEditorModel=function(){},this.getIsActive=function(){return this.editor?this.editor.activeElement===this&&!this.getIsFocused():!1},this.setIsActive=function(t){this.editor&&(this.editor.isDragging||this.editor.inlineEditingIsActive||this.editor.isResizing||(this.editor.activeElement=t?this:this.parent))},this.getIsFocused=function(){return this.editor?this.editor.focusedElement===this:!1},this.setIsFocused=function(){this.editor&&(this.isTemplated||this.editor.isDragging||this.editor.inlineEditingIsActive||this.editor.isResizing||(this.editor.focusedElement=this,_(this.setIsFocusedEventHandlers).each(function(t){try{t()}catch(i){}})))},this.getIsSelected=function(){return this.getIsFocused()?!0:this.children&&_.isArray(this.children)?_(this.children).any(function(t){return t.getIsSelected()}):!1},this.getIsDropTarget=function(){return this.editor?this.editor.dropTargetElement===this:!1},this.setIsDropTarget=function(t){this.editor&&(this.editor.dropTargetElement=t?this:null)},this["delete"]=function(){this.parent&&this.parent.deleteChild(this)},this.canMoveUp=function(){return this.parent?this.parent.canMoveChildUp(this):!1},this.moveUp=function(){this.parent&&this.parent.moveChildUp(this)},this.canMoveDown=function(){return this.parent?this.parent.canMoveChildDown(this):!1},this.moveDown=function(){this.parent&&this.parent.moveChildDown(this)},this.elementToObject=function(){return{type:this.type,data:this.data,htmlId:this.htmlId,htmlClass:this.htmlClass,htmlStyle:this.htmlStyle,isTemplated:this.isTemplated}},this.getEditorObject=function(){return{}},this.copy=function(t){var i=this.getInnerText();t.setData("text/plain",i);var n=this.toObject(),e=JSON.stringify(n,null," ");t.setData("text/json",e)},this.cut=function(t){this.copy(t),this["delete"]()},this.paste=function(t){this.parent&&this.parent.paste(t)}}}(LayoutEditor||(LayoutEditor={}));var LayoutEditor;!function(t){t.Container=function(i,n){this.allowedChildTypes=i,this.children=n,this.isContainer=!0;var e=this;this.onChildAdded=function(t){},this.onDescendantAdded=function(t,i){},this.setChildren=function(t){this.children=t,_(this.children).each(function(t){t.setParent(e)})},this.setChildren(n),this.getIsSealed=function(){return _(this.children).any(function(t){return t.isTemplated})},this.addChild=function(t){_(this.children).contains(t)||!_(this.allowedChildTypes).contains(t.type)&&!t.isContainable||this.children.push(t),t.setEditor(this.editor),t.setIsTemplated(!1),t.setParent(this)},this.deleteChild=function(t){var i=_(this.children).indexOf(t);i>=0&&(this.children.splice(i,1),t.getIsActive()&&(this.editor.activeElement=null),t.getIsFocused()&&(this.children.length>i?this.children[i].setIsFocused():i>0?this.children[i-1].setIsFocused():this.setIsFocused()))},this.moveFocusPrevChild=function(t){if(!(this.children.length<2)){var i=_(this.children).indexOf(t);i>0&&this.children[i-1].setIsFocused()}},this.moveFocusNextChild=function(t){if(!(this.children.length<2)){var i=_(this.children).indexOf(t);i0},this.canMoveChildDown=function(t){var i=_(this.children).indexOf(t);return i0?t.width<12:0>e?t.width>1:!1}if(0==t)return!0;var e=t;if(0>e){var h=12-l();e+=h,e>0&&(e=0)}for(;0>e&&_(a.children).any(function(t){return t.offset>0});)for(i=0;ie;i++){var o=a.children[i];o.offset>0&&(o.offset--,e++)}for(;0!=e&&_(a.children).any(n);)for(i=0;i=0?t.width>1:!1},this.contractColumnRight=function(t,i){if(this.canContractColumnRight(t,i)){var n=_(this.children).indexOf(t);if(n>=0&&t.width>1&&(t.width--,this.children.length>n+1)){var e=this.children[n+1];i&&0==e.offset?e.width++:e.offset++}}},this.canExpandColumnRight=function(t,i){var n=_(this.children).indexOf(t);if(n>=0){if(t.width>=12)return!1;if(this.children.length>n+1){var e=this.children[n+1];return i&&0==e.offset?e.width>1:e.offset>0}return l()<12}return!1},this.expandColumnRight=function(t,i){if(this.canExpandColumnRight(t,i)){var n=_(this.children).indexOf(t);if(n>=0){if(this.children.length>n+1){var e=this.children[n+1];i&&0==e.offset?e.width--:e.offset--}t.width++}}},this.canExpandColumnLeft=function(t,i){var n=_(this.children).indexOf(t);if(n>=0){if(t.width>=12)return!1;if(n>0){var e=this.children[n-1];if(i&&0==t.offset)return e.width>1}return t.offset>0}return!1},this.expandColumnLeft=function(t,i){if(this.canExpandColumnLeft(t,i)){var n=_(this.children).indexOf(t);if(n>=0){if(n>0){var e=this.children[n-1];i&&0==t.offset?e.width--:t.offset--}else t.offset--;t.width++}}},this.canContractColumnLeft=function(t,i){var n=_(this.children).indexOf(t);return n>=0?t.width>1:!1},this.contractColumnLeft=function(t,i){if(this.canContractColumnLeft(t,i)){var n=_(this.children).indexOf(t);if(n>=0){if(n>0){var e=this.children[n-1];i&&0==t.offset?e.width++:t.offset++}else t.offset++;t.width--}}},this.evenColumns=function(){if(0!=this.children.length){var t=Math.floor(12/this.children.length);_(this.children).each(function(i){i.width=t,i.offset=0});var i=12%this.children.length;i>0&&c(i)}};var f=this.pasteChild;this.pasteChild=function(t){"Column"==t.type?this.beginAddColumn(t.width)&&(this.commitAddColumn(),f.call(this,t)):this.parent&&this.parent.pasteChild(t)},this.toObject=function(){var t=this.elementToObject();return t.children=this.childrenToObject(),t}},t.Row.from=function(i){var n=new t.Row(i.data,i.htmlId,i.htmlClass,i.htmlStyle,i.isTemplated,t.childrenFrom(i.children));return n.toolboxIcon=i.toolboxIcon,n.toolboxLabel=i.toolboxLabel,n.toolboxDescription=i.toolboxDescription,n}}(LayoutEditor||(LayoutEditor={}));var LayoutEditor;!function(t){t.Column=function(i,n,e,h,o,s,r,l){t.Element.call(this,"Column",i,n,e,h,o),t.Container.call(this,["Grid","Content"],l),this.width=s,this.offset=r;var c=!1,a=0,d=0;this.beginChange=function(){if(c)throw new Error("Column already has a pending change.");c=!0,a=this.width,d=this.offset},this.commitChange=function(){if(!c)throw new Error("Column has no pending change.");a=0,d=0,c=!1},this.rollbackChange=function(){if(!c)throw new Error("Column has no pending change.");this.width=a,this.offset=d,a=0,d=0,c=!1},this.canSplit=function(){return this.width>1},this.split=function(){if(this.canSplit()){var i=Math.floor(this.width/2),n=t.Column.from({data:null,htmlId:null,htmlClass:null,htmlStyle:null,width:i,offset:0,children:[]});this.width=this.width-i,this.parent.insertChild(n,this),n.setIsFocused()}},this.canContractRight=function(t){return this.parent.canContractColumnRight(this,t)},this.contractRight=function(t){this.parent.contractColumnRight(this,t)},this.canExpandRight=function(t){return this.parent.canExpandColumnRight(this,t)},this.expandRight=function(t){this.parent.expandColumnRight(this,t)},this.canExpandLeft=function(t){return this.parent.canExpandColumnLeft(this,t)},this.expandLeft=function(t){this.parent.expandColumnLeft(this,t)},this.canContractLeft=function(t){return this.parent.canContractColumnLeft(this,t)},this.contractLeft=function(t){this.parent.contractColumnLeft(this,t)},this.toObject=function(){var t=this.elementToObject();return t.width=this.width,t.offset=this.offset,t.children=this.childrenToObject(),t}},t.Column.from=function(i){var n=new t.Column(i.data,i.htmlId,i.htmlClass,i.htmlStyle,i.isTemplated,i.width,i.offset,t.childrenFrom(i.children));return n.toolboxIcon=i.toolboxIcon,n.toolboxLabel=i.toolboxLabel,n.toolboxDescription=i.toolboxDescription,n},t.Column.times=function(i){return _.times(i,function(n){return t.Column.from({data:null,htmlId:null,htmlClass:null,isTemplated:!1,width:12/i,offset:0,children:[]})})}}(LayoutEditor||(LayoutEditor={}));var LayoutEditor;!function(t){t.Content=function(i,n,e,h,o,s,r,l,c,a){t.Element.call(this,"Content",i,n,e,h,o),this.contentType=s,this.contentTypeLabel=r,this.contentTypeClass=l,this.html=c,this.hasEditor=a,this.getInnerText=function(){return $($.parseHTML("
"+this.html+"
")).text()},this.setHtml=function(t){this.html=t,this.htmlUnsafe=t},this.toObject=function(){return{type:"Content"}},this.toObject=function(){var t=this.elementToObject();return t.contentType=this.contentType,t.contentTypeLabel=this.contentTypeLabel,t.contentTypeClass=this.contentTypeClass,t.html=this.html,t.hasEditor=a,t},this.setHtml(c)},t.Content.from=function(i){var n=new t.Content(i.data,i.htmlId,i.htmlClass,i.htmlStyle,i.isTemplated,i.contentType,i.contentTypeLabel,i.contentTypeClass,i.html,i.hasEditor);return n}}(LayoutEditor||(LayoutEditor={}));var LayoutEditor;!function(t,i){i.Html=function(n,e,h,o,s,r,l,c,a,d){i.Element.call(this,"Html",n,e,h,o,s),this.contentType=r,this.contentTypeLabel=l,this.contentTypeClass=c,this.html=a,this.hasEditor=d,this.isContainable=!0,this.getInnerText=function(){return t(t.parseHTML("
"+this.html+"
")).text()},this.setHtml=function(t){this.html=t,this.htmlUnsafe=t},this.toObject=function(){return{type:"Html"}},this.toObject=function(){var t=this.elementToObject();return t.contentType=this.contentType,t.contentTypeLabel=this.contentTypeLabel,t.contentTypeClass=this.contentTypeClass,t.html=this.html,t.hasEditor=d,t};var u=this.getEditorObject;this.getEditorObject=function(){var i=u();return t.extend(i,{Content:this.html})},this.setHtml(a)},i.Html.from=function(t){var n=new i.Html(t.data,t.htmlId,t.htmlClass,t.htmlStyle,t.isTemplated,t.contentType,t.contentTypeLabel,t.contentTypeClass,t.html,t.hasEditor);return n},i.registerFactory("Html",function(t){return i.Html.from(t)})}(jQuery,LayoutEditor||(LayoutEditor={})); \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/Models/Container.js b/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/Models/Container.js index ad732d545..b91ab5f08 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/Models/Container.js +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/Models/Container.js @@ -7,12 +7,15 @@ this.children = children; this.isContainer = true; - var _self = this; + var self = this; + + this.onChildAdded = function (element) { /* Virtual */ }; + this.onDescendantAdded = function (element, parentElement) { /* Virtual */ }; this.setChildren = function (children) { this.children = children; _(this.children).each(function (child) { - child.parent = _self; + child.setParent(self); }); }; @@ -29,7 +32,7 @@ this.children.push(child); child.setEditor(this.editor); child.setIsTemplated(false); - child.parent = this; + child.setParent(this); }; this.deleteChild = function (child) { diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/Models/Element.js b/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/Models/Element.js index 2cd44511e..370571cb2 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/Models/Element.js +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/Models/Element.js @@ -27,9 +27,13 @@ this.setParent = function(parentElement) { this.parent = parentElement; + this.parent.onChildAdded(this); - if (!!this.parent.linkChild) - this.parent.linkChild(this); + var currentAncestor = parentElement; + while (!!currentAncestor) { + currentAncestor.onDescendantAdded(this, parentElement); + currentAncestor = currentAncestor.parent; + } }; this.setIsTemplated = function (value) { @@ -41,6 +45,8 @@ } }; + this.applyElementEditorModel = function() { /* Virtual */ }; + this.getIsActive = function () { if (!this.editor) return false; From 1fe436e05a64c4a3a44fe1887ea0a0c87b33c029 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Sat, 4 Jul 2015 09:32:51 +0200 Subject: [PATCH 11/17] Fixed incorrect method error. --- .../Modules/Orchard.DynamicForms/Scripts/LayoutEditor.js | 2 +- .../Modules/Orchard.DynamicForms/Scripts/LayoutEditor.min.js | 2 +- .../Scripts/LayoutEditor/Directives/Form.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor.js b/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor.js index 13fabe29a..dc29855df 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor.js +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor.js @@ -189,7 +189,7 @@ angular if (args.cancel) return; - $scope.apply(function() { + $scope.$apply(function() { $scope.element.data = decodeURIComponent(args.element.data); $scope.element.applyElementEditorModel(args.elementEditorModel); }); diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor.min.js b/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor.min.js index 2564bccce..f16311228 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor.min.js +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor.min.js @@ -1 +1 @@ -var LayoutEditor;!function(e,t){t.Fieldset=function(n,i,o,r,l,d,a,c,s,h,m){t.Element.call(this,"Fieldset",n,i,o,r,l),t.Container.call(this,["Grid","Content"],m);var u=this;this.isContainable=!0,this.dropTargetClass="layout-common-holder",this.contentType=a,this.contentTypeLabel=c,this.contentTypeClass=s,this.legend=d||"",this.hasEditor=h,this.toObject=function(){var e=this.elementToObject();return e.legend=this.legend,e.children=this.childrenToObject(),e};var p=this.getEditorObject;this.getEditorObject=function(){var t=p();return e.extend(t,{Legend:this.legend})},this.setChildren=function(e){this.children=e,_(this.children).each(function(e){e.parent=u})},this.applyElementEditorModel=function(e){this.legend=e.legend},this.setChildren(m)},t.Fieldset.from=function(e){return new t.Fieldset(e.data,e.htmlId,e.htmlClass,e.htmlStyle,e.isTemplated,e.legend,e.contentType,e.contentTypeLabel,e.contentTypeClass,e.hasEditor,t.childrenFrom(e.children))},t.registerFactory("Fieldset",function(e){return t.Fieldset.from(e)})}(jQuery,LayoutEditor||(LayoutEditor={}));var LayoutEditor;!function(e,t){t.Form=function(n,i,o,r,l,d,a,c,s,h,m,u){t.Element.call(this,"Form",n,i,o,r,l),t.Container.call(this,["Grid","Content"],u);var p=this;this.isContainable=!0,this.dropTargetClass="layout-common-holder",this.contentType=c,this.contentTypeLabel=s,this.contentTypeClass=h,this.name=d||"Untitled",this.formBindingContentType=a,this.hasEditor=m,this.toObject=function(){var e=this.elementToObject();return e.name=this.name,e.formBindingContentType=this.formBindingContentType,e.children=this.childrenToObject(),e};var f=this.getEditorObject;this.getEditorObject=function(){var t=f();return e.extend(t,{FormName:this.name,FormBindingContentType:this.formBindingContentType})},this.setChildren=function(e){this.children=e,_(this.children).each(function(e){e.setParent(p)})},this.onDescendantAdded=function(t){var n=t.getEditorObject;t.getEditorObject=function(){var t=n();return e.extend(t,{FormBindingContentType:p.formBindingContentType})}},this.applyElementEditorModel=function(e){this.name=e.name,this.formBindingContentType=e.formBindingContentType},this.setChildren(u)},t.Form.from=function(e){return new t.Form(e.data,e.htmlId,e.htmlClass,e.htmlStyle,e.isTemplated,e.name,e.formBindingContentType,e.contentType,e.contentTypeLabel,e.contentTypeClass,e.hasEditor,t.childrenFrom(e.children))},t.registerFactory("Form",function(e){return t.Form.from(e)})}(jQuery,LayoutEditor||(LayoutEditor={})),angular.module("LayoutEditor").directive("orcLayoutFieldset",["$compile","scopeConfigurator","environment",function(e,t,n){return{restrict:"E",scope:{element:"="},controller:["$scope","$element",function(e,n){t.configureForElement(e,n),t.configureForContainer(e,n),e.sortableOptions.axis="y",e.edit=function(){e.$root.editElement(e.element).then(function(t){t.cancel||e.$apply(function(){e.element.data=decodeURIComponent(t.element.data),e.element.applyElementEditorModel(t.elementEditorModel)})})}}],templateUrl:n.templateUrl("Fieldset"),replace:!0}}]),angular.module("LayoutEditor").directive("orcLayoutForm",["$compile","scopeConfigurator","environment",function(e,t,n){return{restrict:"E",scope:{element:"="},controller:["$scope","$element",function(e,n){t.configureForElement(e,n),t.configureForContainer(e,n),e.sortableOptions.axis="y",e.edit=function(){e.$root.editElement(e.element).then(function(t){t.cancel||e.apply(function(){e.element.data=decodeURIComponent(t.element.data),e.element.applyElementEditorModel(t.elementEditorModel)})})}}],templateUrl:n.templateUrl("Form"),replace:!0}}]); \ No newline at end of file +var LayoutEditor;!function(e,t){t.Fieldset=function(n,i,o,r,l,d,a,c,s,h,m){t.Element.call(this,"Fieldset",n,i,o,r,l),t.Container.call(this,["Grid","Content"],m);var u=this;this.isContainable=!0,this.dropTargetClass="layout-common-holder",this.contentType=a,this.contentTypeLabel=c,this.contentTypeClass=s,this.legend=d||"",this.hasEditor=h,this.toObject=function(){var e=this.elementToObject();return e.legend=this.legend,e.children=this.childrenToObject(),e};var p=this.getEditorObject;this.getEditorObject=function(){var t=p();return e.extend(t,{Legend:this.legend})},this.setChildren=function(e){this.children=e,_(this.children).each(function(e){e.parent=u})},this.applyElementEditorModel=function(e){this.legend=e.legend},this.setChildren(m)},t.Fieldset.from=function(e){return new t.Fieldset(e.data,e.htmlId,e.htmlClass,e.htmlStyle,e.isTemplated,e.legend,e.contentType,e.contentTypeLabel,e.contentTypeClass,e.hasEditor,t.childrenFrom(e.children))},t.registerFactory("Fieldset",function(e){return t.Fieldset.from(e)})}(jQuery,LayoutEditor||(LayoutEditor={}));var LayoutEditor;!function(e,t){t.Form=function(n,i,o,r,l,d,a,c,s,h,m,u){t.Element.call(this,"Form",n,i,o,r,l),t.Container.call(this,["Grid","Content"],u);var p=this;this.isContainable=!0,this.dropTargetClass="layout-common-holder",this.contentType=c,this.contentTypeLabel=s,this.contentTypeClass=h,this.name=d||"Untitled",this.formBindingContentType=a,this.hasEditor=m,this.toObject=function(){var e=this.elementToObject();return e.name=this.name,e.formBindingContentType=this.formBindingContentType,e.children=this.childrenToObject(),e};var f=this.getEditorObject;this.getEditorObject=function(){var t=f();return e.extend(t,{FormName:this.name,FormBindingContentType:this.formBindingContentType})},this.setChildren=function(e){this.children=e,_(this.children).each(function(e){e.setParent(p)})},this.onDescendantAdded=function(t){var n=t.getEditorObject;t.getEditorObject=function(){var t=n();return e.extend(t,{FormBindingContentType:p.formBindingContentType})}},this.applyElementEditorModel=function(e){this.name=e.name,this.formBindingContentType=e.formBindingContentType},this.setChildren(u)},t.Form.from=function(e){return new t.Form(e.data,e.htmlId,e.htmlClass,e.htmlStyle,e.isTemplated,e.name,e.formBindingContentType,e.contentType,e.contentTypeLabel,e.contentTypeClass,e.hasEditor,t.childrenFrom(e.children))},t.registerFactory("Form",function(e){return t.Form.from(e)})}(jQuery,LayoutEditor||(LayoutEditor={})),angular.module("LayoutEditor").directive("orcLayoutFieldset",["$compile","scopeConfigurator","environment",function(e,t,n){return{restrict:"E",scope:{element:"="},controller:["$scope","$element",function(e,n){t.configureForElement(e,n),t.configureForContainer(e,n),e.sortableOptions.axis="y",e.edit=function(){e.$root.editElement(e.element).then(function(t){t.cancel||e.$apply(function(){e.element.data=decodeURIComponent(t.element.data),e.element.applyElementEditorModel(t.elementEditorModel)})})}}],templateUrl:n.templateUrl("Fieldset"),replace:!0}}]),angular.module("LayoutEditor").directive("orcLayoutForm",["$compile","scopeConfigurator","environment",function(e,t,n){return{restrict:"E",scope:{element:"="},controller:["$scope","$element",function(e,n){t.configureForElement(e,n),t.configureForContainer(e,n),e.sortableOptions.axis="y",e.edit=function(){e.$root.editElement(e.element).then(function(t){t.cancel||e.$apply(function(){e.element.data=decodeURIComponent(t.element.data),e.element.applyElementEditorModel(t.elementEditorModel)})})}}],templateUrl:n.templateUrl("Form"),replace:!0}}]); \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor/Directives/Form.js b/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor/Directives/Form.js index c8bee01ce..05f11520d 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor/Directives/Form.js +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/LayoutEditor/Directives/Form.js @@ -15,7 +15,7 @@ if (args.cancel) return; - $scope.apply(function() { + $scope.$apply(function() { $scope.element.data = decodeURIComponent(args.element.data); $scope.element.applyElementEditorModel(args.elementEditorModel); }); From 1093e16a81e4a3218f1b7e2d3488901ceda94d18 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Sat, 4 Jul 2015 09:36:31 +0200 Subject: [PATCH 12/17] #5452: Improved ContentItem and Projection elements by rendering an abstract representation instead. Fixes #5452 --- .../Styles/forms-admin.css | 9 +- .../Styles/forms-admin.min.css | 2 +- .../Views/Elements/HiddenField.Design.cshtml | 2 +- .../Elements/ValidationMessage.Design.cshtml | 2 +- .../Elements/ValidationSummary.Design.cshtml | 2 +- .../Orchard.Layouts/Orchard.Layouts.csproj | 3 - .../Orchard.Layouts/Styles/LayoutEditor.css | 5 +- .../Styles/LayoutEditor.min.css | 2 +- .../Styles/LayoutEditor/Editor.less | 4 + .../Orchard.Layouts/Styles/designer.css | 321 ------------------ .../Views/Elements/ContentItem.Design.cshtml | 10 +- .../Views/Elements/Projection.Design.cshtml | 17 +- .../Views/Elements/Shape.Design.cshtml | 3 +- .../Views/Layout-Designer-Wrapper.cshtml | 13 - .../Views/Layout-Designer.cshtml | 7 - 15 files changed, 34 insertions(+), 368 deletions(-) delete mode 100644 src/Orchard.Web/Modules/Orchard.Layouts/Styles/designer.css delete mode 100644 src/Orchard.Web/Modules/Orchard.Layouts/Views/Layout-Designer-Wrapper.cshtml delete mode 100644 src/Orchard.Web/Modules/Orchard.Layouts/Views/Layout-Designer.cshtml diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Styles/forms-admin.css b/src/Orchard.Web/Modules/Orchard.DynamicForms/Styles/forms-admin.css index 8016fe8ec..329a53a84 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Styles/forms-admin.css +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Styles/forms-admin.css @@ -1,11 +1,4 @@ -.layout-editor .layout-content > .layout-element-wrapper .layout-content-markup > .validation-message, -.layout-editor .layout-content > .layout-element-wrapper .layout-content-markup > .validation-summary { - border: 1px dashed #ccc; - padding: 0.2em; - background: #e8e8e8; -} - -.layout-editor .layout-content > .layout-element-wrapper .layout-content-markup > .form-field-element input[type="text"], +.layout-editor .layout-content > .layout-element-wrapper .layout-content-markup > .form-field-element input[type="text"], .layout-editor .layout-content > .layout-element-wrapper .layout-content-markup > .form-field-element input[type="password"], .layout-editor .layout-content > .layout-element-wrapper .layout-content-markup > .form-field-element input[type="email"], .layout-editor .layout-content > .layout-element-wrapper .layout-content-markup > .form-field-element input[type="tel"], diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Styles/forms-admin.min.css b/src/Orchard.Web/Modules/Orchard.DynamicForms/Styles/forms-admin.min.css index 0249593e0..199c157e0 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Styles/forms-admin.min.css +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Styles/forms-admin.min.css @@ -1 +1 @@ -.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup>.validation-message,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup>.validation-summary{border:1px dashed #ccc;padding:.2em;background:#e8e8e8}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup>.form-field-element input[type=text],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup>.form-field-element input[type=password],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup>.form-field-element input[type=email],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup>.form-field-element input[type=tel],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup>.form-field-element textarea{width:100%}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup>.form-field-element.form-field-element-enumeration ol{list-style:none} \ No newline at end of file +.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup>.form-field-element input[type=text],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup>.form-field-element input[type=password],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup>.form-field-element input[type=email],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup>.form-field-element input[type=tel],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup>.form-field-element textarea{width:100%}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup>.form-field-element.form-field-element-enumeration ol{list-style:none} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Views/Elements/HiddenField.Design.cshtml b/src/Orchard.Web/Modules/Orchard.DynamicForms/Views/Elements/HiddenField.Design.cshtml index b87c96360..76e817975 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Views/Elements/HiddenField.Design.cshtml +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Views/Elements/HiddenField.Design.cshtml @@ -2,4 +2,4 @@ @{ var element = (HiddenField) Model.Element; } -
@element.Name
\ No newline at end of file +
@element.Name
\ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Views/Elements/ValidationMessage.Design.cshtml b/src/Orchard.Web/Modules/Orchard.DynamicForms/Views/Elements/ValidationMessage.Design.cshtml index 3b8d37ddf..8c828df47 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Views/Elements/ValidationMessage.Design.cshtml +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Views/Elements/ValidationMessage.Design.cshtml @@ -3,7 +3,7 @@ var element = (ValidationMessage)Model.Element; var forField = element.For; } -
+
@if (String.IsNullOrWhiteSpace(forField)) { @T("Validation message (target not specified)") } diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Views/Elements/ValidationSummary.Design.cshtml b/src/Orchard.Web/Modules/Orchard.DynamicForms/Views/Elements/ValidationSummary.Design.cshtml index 381ff1c2f..a7da7701a 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Views/Elements/ValidationSummary.Design.cshtml +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Views/Elements/ValidationSummary.Design.cshtml @@ -1 +1 @@ -
@T("Validation summary")
\ No newline at end of file +
@T("Validation summary")
\ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj b/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj index df50eea91..3da9b75dd 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj @@ -148,7 +148,6 @@ - @@ -178,8 +177,6 @@ - - diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Styles/LayoutEditor.css b/src/Orchard.Web/Modules/Orchard.Layouts/Styles/LayoutEditor.css index f56724eb4..a2ac0056c 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Styles/LayoutEditor.css +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Styles/LayoutEditor.css @@ -23,6 +23,9 @@ .layout-editor > .layout-canvas-wrapper > .layout-toolbar-container > .mce-panel { width: 100% !important; } +.layout-editor .layout-snippet { + background: #e8e8e8; +} .layout-editor .layout-element { position: relative; @@ -1040,4 +1043,4 @@ table[rules=all i] > tfoot > tr > td, table[rules=all i] > tfoot > tr > th { font-size: 0.9em; } -/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkVkaXRvci5sZXNzIiwiTGF5b3V0RWRpdG9yLmNzcyIsIkVsZW1lbnQubGVzcyIsIkNvbnRhaW5lci5sZXNzIiwiQ2FudmFzLmxlc3MiLCJSb3cubGVzcyIsIkNvbHVtbi5sZXNzIiwiQ29udGVudC5sZXNzIiwiUmVzZXQubGVzcyIsIlRvb2xib3gubGVzcyIsIlBvcHVwLmxlc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDSSxzQkFBQTtFQUFBLHFCQUFBO0VBQUEsY0FBQTtFQUNBLGdCQUFBO0VBQ0EsZ0JBQUE7RUFDQSw2QkFBQTtNQUFBLHdCQUFBO1VBQUEscUJBQUE7Q0NESDtBREhEO0VBT1EscUJBQUE7TUFBQSxxQkFBQTtVQUFBLGFBQUE7RUFDQSwwQkFBQTtFQUNBLDBCQUFBO0NDRFA7QURSRDtFQVlZLGNBQUE7RUFDQSxvQkFBQTtFQUNBLGlCQUFBO0NDRFg7QURiRDtFQWlCZ0IsdUJBQUE7Q0NEZjs7QUNoQkQ7RUFFUSxtQkFBQTtFQUNBLGNBQUE7RUFDQSxnQkFBQTtFQUNBLGlCQUFBO0VBQ0EsV0FBQTtDRGtCUDtBQ2ZPO0VBQ0ksZUFBQTtDRGlCWDtBQzNCRDtFQWVnQixjQUFBO0VBQ0EsbUJBQUE7RUFDQSxVQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxlQUFBO0VBQ0EsaUJBQUE7RUFDQSxvQkFBQTtFQUNBLGtCQUFBO0VBQ0EsdUJBQUE7Q0RlZjtBQ3ZDRDtFQTJCb0Isc0JBQUE7RUFDQSxhQUFBO0VBQ0EsbUJBQUE7Q0RlbkI7QUM1Q0Q7RUFpQ29CLGdCQUFBO0NEY25CO0FDL0NEO0VBcUNvQixjQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsbUJBQUE7Q0RhbkI7QUNyREQ7RUE2Q2dCLFdBQUE7RUFDQSxXQUFBO0NEV2Y7QUN6REQ7RUFxRFEsaUJBQUE7Q0RPUDtBQ0pHOztFQUdRLGtCQUFBO0VBQ0Esb0JBQUE7Q0RLWDtBQ1RHOztFQU9ZLGFBQUE7Q0RNZjtBQ2JHO0VBY1EsdUNBQUE7Q0RFWDtBQ2hCRztFQWlCWSxlQUFBO0VBQ0EsWUFBQTtFQUNBLDJDQUFBO0NERWY7QUNyQkc7RUEyQlEsc0JBQUE7Q0RIWDtBQ3hCRztFQThCWSxlQUFBO0VBQ0EsMEJBQUE7RUFDQSxlQUFBO0NESGY7QUM3Qkc7RUFtQ2dCLHNCQUFBO0NESG5CO0FDSW1CO0VBQ0ksMEJBQUE7Q0RGdkI7QUNLbUI7RUFDSSxnQkFBQTtFQUNBLGdDQUFBO0NESHZCO0FDS3VCO0VBQ0ksMEJBQUE7Q0RIM0I7QUNPbUI7RUFDSSxlQUFBO0VBQ0EsMEJBQUE7Q0RMdkI7QUNPdUI7RUFDSSwwQkFBQTtDREwzQjtBQ2pERztFQStEUSwyQ0FBQTtDRFhYO0FDNUdEO0VBNEhRLGNBQUE7Q0RiUDtBQy9HRDtFQWlJUSx1REFBQTtDRGZQO0FDbEhEO0VBb0lZLGVBQUE7RUFDQSwrQkFBQTtFQUNBLGlCQUFBO0VBQ0Esc0NBQUE7RUFDQSwyQ0FBQTtDRGZYO0FDekhEO0VBK0lZLGdCQUFBO0VBQ0EsaUJBQUE7Q0RuQlg7O0FFN0hEO0VBTWdCLGNBQUE7RUFDQSwrQkFBQTtNQUFBLDJCQUFBO1VBQUEsdUJBQUE7RUFDQSxhQUFBO0VBQ0EsaUJBQUE7RUFDQSw0Q0FBQTtFQUNBLG1CQUFBO0VBQ0EsY0FBQTtFQUNBLGdDQUFBO01BQUEsc0JBQUE7VUFBQSx3QkFBQTtFQUNBLGdCQUFBO0VBQ0EsbUJBQUE7RUFDQSxhQUFBO0VBQ0EsbUJBQUE7Q0YySGY7QUU1SUQ7RUFxQmdCLGNBQUE7Q0YwSGY7QUUvSUQ7RUF5Qm9CLGlCQUFBO0NGeUhuQjtBRWxKRDtFQThCb0IsY0FBQTtDRnVIbkI7QUVuSFc7RUFFUSxzQkFBQTtFQUFBLHFCQUFBO0VBQUEsY0FBQTtDRm9IbkI7QUV0SFc7RUFNUSxtQkFBQTtFQUNBLE9BQUE7RUFDQSxTQUFBO0VBQ0EsVUFBQTtFQUNBLFFBQUE7Q0ZtSG5CO0FFN0dHO0VBR1ksNENBQUE7Q0Y2R2Y7QUVoSEc7RUFNZ0IsYUFBQTtDRjZHbkI7QUVuSEc7RUFXWSxjQUFBO0NGMkdmO0FFdEhHO0VBY2dCLGNBQUE7Q0YyR25COztBRzNLRDtFQUdZLGNBQUE7Q0g0S1g7O0FJN0tPO0VBRVEsMkRBQUE7Q0orS2Y7QUlqTE87RUFJWSw0QkFBQTtDSmdMbkI7QUlwTE87RUFTUSwwQkFBQTtDSjhLZjtBSXZMTztFQVdZLDBCQUFBO0NKK0tuQjs7QUs1TEQ7RUFJZ0IsY0FBQTtFQUNBLG1CQUFBO0VBQ0EsWUFBQTtFQUNBLE9BQUE7RUFDQSxZQUFBO0VBQ0EsYUFBQTtFQUNBLG1CQUFBO0NMNExmO0FLdE1EO0VBY2dCLFdBQUE7Q0wyTGY7QUt6TUQ7RUFrQmdCLFlBQUE7Q0wwTGY7QUt0TE87RUFDSSxlQUFBO0NMd0xYOztBTTlNRDs7RUFFUSxnQkFBQTtDTmlOUDtBTW5ORDs7RUFPZ0IsYUFBQTtFQUNBLG1CQUFBO0VBQ0Esb0JBQUE7RU5nTmQseUZBQXlGO0VBQ3pGLHFDQUFxQztFQUNyQyxxQ0FBcUM7RUFDckMsdURBQXVEO0VBQ3ZELHdEQUF3RDtFQUN4RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkM7Q0FDRjtBTXpQRDs7RUNBUSxVQUFBO0VBQ0EsV0FBQTtFQUNBLHdCQUFBO0NQNlBQO0FNL1BEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQ09RLGVBQUE7Q1AwUlA7QU1qU0Q7Ozs7Ozs7Ozs7Ozs7O0VDV1EsZ0JBQUE7RUFDQSxtQkFBQTtDUHNTUDtBTWxURDs7OztFQ2dCUSxrQkFBQTtFQUNBLG1CQUFBO0NQd1NQO0FNelREOztFQ3FCUSxtQkFBQTtDUHdTUDtBTTdURDs7Ozs7Ozs7RUN5QlEsdUJBQUE7RUFDQSxpQkFBQTtDUDhTUDtBTXhVRDs7Ozs7Ozs7OztFQzhCUSxtQkFBQTtDUHNUUDtBTXBWRDs7OztFQ2tDUSxvQkFBQTtDUHdUUDtBTTFWRDs7Ozs7Ozs7RUNzQ1EsdUJBQUE7Q1A4VFA7QU1wV0Q7O0VDMENRLGtCQUFBO0NQOFRQO0FNeFdEOztFQzhDUSxtQkFBQTtDUDhUUDtBTTVXRDs7RUNrRFEsb0JBQUE7Q1A4VFA7QU1oWEQ7O0VDc0RRLHNCQUFBO0NQOFRQO0FNcFhEOzs7O0VDMERRLG9CQUFBO0VBQ0EsbUJBQUE7Q1BnVVA7QU0zWEQ7O0VDZ0VRLGNBQUE7Q1ArVFA7QU0vWEQ7O0VDb0VRLG1CQUFBO0VBQ0Esb0JBQUE7Q1ArVFA7QU1wWUQ7O0VDeUVRLG1CQUFBO0VBQ0Esb0JBQUE7RUFDQSxlQUFBO0VBQ0EsOEJBQUE7RUFDQSw0QkFBQTtVQUFBLG9CQUFBO0NQK1RQO0FNNVlEOztFQ2lGUSw2QkFBQTtDUCtUUDtBTWhaRDs7RUNxRlEsNkJBQUE7Q1ArVFA7QU1wWkQ7Ozs7Ozs7Ozs7RUN5RlEsc0JBQUE7Q1B1VVA7QU1oYUQ7O0VDOEZRLGVBQUE7Q1BzVVA7QU1wYUQ7O0VDa0dRLGVBQUE7Q1BzVVA7QU14YUQ7Ozs7RUNzR1EsMkJBQUE7Q1B3VVA7QU05YUQ7Ozs7Ozs7O0VDMkdRLGFBQUE7Q1A2VVA7QU14YkQ7O0VDK0dRLGNBQUE7Q1A2VVA7QU01YkQ7O0VDbUhRLG1CQUFBO0VBQ0EsYUFBQTtDUDZVUDtBTWpjRDs7OztFQ3dIUSxrQ0FBQTtDUCtVUDtBTXZjRDs7OztFQzRIUSwyQkFBQTtDUGlWUDtBTTdjRDs7Ozs7O0VDZ0lRLDhCQUFBO0NQcVZQO0FNcmREOztFQ29JUSx1QkFBQTtDUHFWUDtBTXpkRDs7RUN3SVEsb0JBQUE7Q1BxVlA7QU03ZEQ7O0VDNElRLHFCQUFBO0NQcVZQO0FNamVEOztFQ2dKUSxjQUFBO0VBQ0EsaUJBQUE7Q1BxVlA7QU10ZUQ7O0VDcUpRLG9CQUFBO0NQcVZQO0FNMWVEOztFQ3lKUSxpQkFBQTtDUHFWUDtBTTllRDs7RUM2SlEsb0JBQUE7Q1BxVlA7QU1sZkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUNpS1EsZUFBQTtDUHlXUDtBTTFnQkQ7O0VDcUtRLG1CQUFBO0VBQ0Esc0JBQUE7RUFDQSxrQkFBQTtFQUNBLGtCQUFBO0NQeVdQO0FNamhCRDs7RUM0S1EsbUJBQUE7RUFDQSxzQkFBQTtFQUNBLGtCQUFBO0VBQ0Esa0JBQUE7Q1B5V1A7QU14aEJEOztFQ21MUSxtQkFBQTtFQUNBLHNCQUFBO0VBQ0Esa0JBQUE7RUFDQSxrQkFBQTtDUHlXUDtBTS9oQkQ7O0VDMExRLG1CQUFBO0VBQ0Esc0JBQUE7RUFDQSxrQkFBQTtFQUNBLGtCQUFBO0NQeVdQO0FNdGlCRDs7RUNpTVEsbUJBQUE7RUFDQSxzQkFBQTtFQUNBLGtCQUFBO0VBQ0Esa0JBQUE7Q1B5V1A7QU03aUJEOztFQ3dNUSxtQkFBQTtFQUNBLHNCQUFBO0VBQ0Esa0JBQUE7RUFDQSxrQkFBQTtDUHlXUDtBTXBqQkQ7Ozs7Ozs7Ozs7OztFQytNUSxlQUFBO0NQbVhQO0FNbGtCRDs7RUNtTlEsbUJBQUE7Q1BtWFA7QU10a0JEOzs7Ozs7OztFQ3VOUSxnQkFBQTtFQUNBLG1CQUFBO0NQeVhQO0FNamxCRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUMrTlksY0FBQTtFQUNBLGlCQUFBO0NQb1pYO0FNcG5CRDs7RUNvT1Esa0JBQUE7Q1BvWlA7QU14bkJEOzs7Ozs7RUN3T1EsbUJBQUE7Q1B3WlA7QU1ob0JEOztFQzRPUSx5QkFBQTtDUHdaUDtBTXBvQkQ7Ozs7RUNnUFEsc0JBQUE7Q1AwWlA7QU0xb0JEOzs7Ozs7Ozs7Ozs7RUNzUFksd0JBQUE7Q1BrYVg7QU14cEJEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUNrUWdCLHdCQUFBO0NQNGJmO0FNOXJCRDs7RUNzUVEsZUFBQTtDUDRiUDtBTWxzQkQ7O0VDMFFRLHVCQUFBO0NQNGJQO0FNdHNCRDs7OztFQzhRUSw0QkFBQTtDUDhiUDtBTTVzQkQ7Ozs7RUNrUlEsc0JBQUE7Q1BnY1A7QU1sdEJEOzs7O0VDc1JRLDRCQUFBO0NQa2NQO0FNeHRCRDs7OztFQzBSUSx5QkFBQTtDUG9jUDtBTTl0QkQ7Ozs7RUM4UlEsNEJBQUE7Q1BzY1A7QU1wdUJEOzs7O0VDa1NRLG1CQUFBO0NQd2NQO0FNMXVCRDs7Ozs7Ozs7RUNzU1Esb0JBQUE7Q1A4Y1A7QU1wdkJEOzs7Ozs7Ozs7Ozs7Ozs7O0VDMlNZLHFCQUFBO0NQMmRYO0FNdHdCRDs7RUMrU1EsdUJBQUE7RUFDQSxvQkFBQTtFQUNBLDBCQUFBO0VBQ0EscUJBQUE7Q1AyZFA7QU03d0JEOzs7O0VDc1RRLGFBQUE7Q1A2ZFA7QU1ueEJEOztFQzBUUSxrQkFBQTtDUDZkUDtBTXZ4QkQ7Ozs7Ozs7O0VDOFRRLHVCQUFBO0NQbWVQO0FNanlCRDs7Ozs7O0VDa1VRLHdCQUFBO0NQdWVQO0FNenlCRDs7Ozs7O0VDc1VRLG1CQUFBO0NQMmVQO0FNanpCRDs7Ozs7Ozs7RUMwVVEsc0JBQUE7Q1BpZlA7QU0zekJEOzs7Ozs7Ozs7Ozs7OztFQ3dXUSxxQkFBQTtDUG1lUDtBTTMwQkQ7O0VDNFdRLHNCQUFBO0NQbWVQO0FNLzBCRDs7Ozs7Ozs7Ozs7Ozs7RUNpWFEsdUJBQUE7Q1A4ZVA7QU0vMUJEOzs7O0VDcVhRLHFCQUFBO0NQZ2ZQO0FNcjJCRDs7RUN5WFEsWUFBQTtFQUNBLG9CQUFBO0VBQ0Esa0JBQUE7RUFDQSxtQkFBQTtDUGdmUDtBTTUyQkQ7O0VDZ1lRLGlCQUFBO0VBQ0Esa0JBQUE7RUFDQSw4QkFBQTtFQUNBLCtCQUFBO0NQZ2ZQO0FNbjNCRDs7RUN1WVEsa0JBQUE7RUFDQSxtQkFBQTtDUGdmUDtBTXgzQkQ7O0VBZW9CLHlCQUFBO0NONjJCbkI7QU01M0JEOztFQW1Cb0IsNEJBQUE7Q042MkJuQjtBTXgyQk87Ozs7RUFFUSxlQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsYUFBQTtDTjQyQmY7QU16NEJEOztFQW1DUSxlQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsYUFBQTtDTjAyQlA7O0FRajVCRDtFQUVRLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSxhQUFBO0VBQ0EsdUJBQUE7TUFBQSxxQkFBQTtVQUFBLGVBQUE7Q1JtNUJQO0FReDVCRDtFQVFZLDBCQUFBO0VBQ0EsYUFBQTtFQUNBLGtCQUFBO0VBQ0EsYUFBQTtFQUNBLDBCQUFBO0NSbTVCWDtBUWo1Qlc7RUFDSSxnQkFBQTtFQUNBLE9BQUE7RUFDQSxpQkFBQTtFQUNBLGlCQUFBO0NSbTVCZjtBUWg1Qlc7RUFDSSxtQkFBQTtFQUNBLFVBQUE7Q1JrNUJmO0FRejZCRDtFQTJCZ0IsaUJBQUE7Q1JpNUJmO0FRNTZCRDtFQThCb0IsZUFBQTtFQUNBLG1CQUFBO0VBQ0Esc0JBQUE7Q1JpNUJuQjtBUS80Qm1CO0VBQ0ksc0JBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7RUFDQSw4Q0FBQTtFQUNBLG1CQUFBO0VBQ0EsaUJBQUE7Q1JpNUJ2QjtBUTc0QmU7RUFFUSxpQkFBQTtDUjg0QnZCO0FRaDVCZTtFQU1RLGNBQUE7Q1I2NEJ2QjtBUS83QkQ7RUF1RG9CLGdCQUFBO0NSMjRCbkI7QVFsOEJEO0VBMkRvQiwwQkFBQTtFQUNBLHVCQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtDUjA0Qm5CO0FReDhCRDtFQWlFd0Isc0JBQUE7RUFDQSxZQUFBO0VBQ0EsOENBQUE7Q1IwNEJ2QjtBUTc4QkQ7RUF1RXdCLGdCQUFBO0NSeTRCdkI7QVFoOUJEO0VBNEVvQixnQkFBQTtDUnU0Qm5COztBU245QkQ7RUFFUSxjQUFBO0VBQ0EsbUJBQUE7RUFDQSxVQUFBO0VBR0EsaURBQUE7RUFDQSwwQkFBQTtFQUNBLGVBQUE7RUFDQSwwQkFBQTtFQUNBLGlCQUFBO0VBQ0EsWUFBQTtFQUNBLGVBQUE7RUFDQSxpQkFBQTtFQUNBLGdCQUFBO0VBQ0Esb0JBQUE7RUFDQSxvQkFBQTtDVHE5QlA7QVN0K0JEO0VBb0JZLHNCQUFBO0VBQUEscUJBQUE7RUFBQSxjQUFBO0VBQ0EsaUJBQUE7Q1RxOUJYO0FTMStCRDtFQXdCZ0IsaUJBQUE7RUFDQSxpREFBQTtFQUNBLGtCQUFBO0NUcTlCZjtBUy8rQkQ7RUErQlksaUJBQUE7Q1RtOUJYO0FTbC9CRDtFQW1DWSxpQkFBQTtFQUNBLGtCQUFBO0VBQ0EsZUFBQTtDVGs5Qlg7QVN2L0JEO0VBeUNZLDBCQUFBO0VBQ0EsZ0JBQUE7Q1RpOUJYO0FTMy9CRDtFQStDZ0IsZUFBQTtFQUNBLGlCQUFBO0NUKzhCZiIsImZpbGUiOiJMYXlvdXRFZGl0b3IuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCBcIlZhcmlhYmxlcy5sZXNzXCI7XG5cbi5sYXlvdXQtZWRpdG9yIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIG1hcmdpbi10b3A6IDFlbTtcbiAgICBmb250LXNpemU6IEBmb250LXNpemU7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG5cbiAgICA+IC5sYXlvdXQtY2FudmFzLXdyYXBwZXIge1xuICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBncmF5LWJnO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBAZ3JheS1ib3JkZXI7XG5cbiAgICAgICAgPiAubGF5b3V0LXRvb2xiYXItY29udGFpbmVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICBtYXJnaW46IEBjb250YWluZXItcGFkZGluZyBAY29udGFpbmVyLXBhZGRpbmcgMDtcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDcxcHg7XG5cbiAgICAgICAgICAgID4gLm1jZS1wYW5lbCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5sYXlvdXQtZWRpdG9yIHtcbiAgZGlzcGxheTogZmxleDtcbiAgbWFyZ2luLXRvcDogMWVtO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xufVxuLmxheW91dC1lZGl0b3IgPiAubGF5b3V0LWNhbnZhcy13cmFwcGVyIHtcbiAgZmxleC1ncm93OiAxO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmNGY1O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZTRlNWU2O1xufVxuLmxheW91dC1lZGl0b3IgPiAubGF5b3V0LWNhbnZhcy13cmFwcGVyID4gLmxheW91dC10b29sYmFyLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIG1hcmdpbjogMTJweCAxMnB4IDA7XG4gIG1pbi1oZWlnaHQ6IDcxcHg7XG59XG4ubGF5b3V0LWVkaXRvciA+IC5sYXlvdXQtY2FudmFzLXdyYXBwZXIgPiAubGF5b3V0LXRvb2xiYXItY29udGFpbmVyID4gLm1jZS1wYW5lbCB7XG4gIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG59XG5cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtZWxlbWVudCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLXJpZ2h0OiAwO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBwYWRkaW5nOiAwO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1lbGVtZW50Om5vdCgubGF5b3V0LWNvbHVtbikge1xuICBtYXJnaW4tbGVmdDogMDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtZWxlbWVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1wYW5lbCB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbWFyZ2luOiAwO1xuICB6LWluZGV4OiAyMDtcbiAgaGVpZ2h0OiAyNXB4O1xuICBwYWRkaW5nOiAwIDZweDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgbGluZS1oZWlnaHQ6IDI1cHg7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWVsZW1lbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciA+IC5sYXlvdXQtcGFuZWwgPiAubGF5b3V0LXBhbmVsLWl0ZW0ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGhlaWdodDogMjVweDtcbiAgcGFkZGluZzogMXB4IDZweCAwO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1lbGVtZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgPiAubGF5b3V0LXBhbmVsID4gLmxheW91dC1wYW5lbC1sYWJlbCB7XG4gIGZvbnQtc2l6ZTogMTNweDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtZWxlbWVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1wYW5lbCA+IC5sYXlvdXQtcGFuZWwtYWN0aW9uIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgd2lkdGg6IDI4cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1lbGVtZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgPiAubGF5b3V0LXBhbmVsLW1haW4ge1xuICB0b3A6IC0yN3B4O1xuICBsZWZ0OiAtMnB4O1xufVxuLmxheW91dC1lZGl0b3IgbGkubGF5b3V0LWVsZW1lbnQge1xuICBsaXN0LXN0eWxlOiBub25lO1xufVxuLmxheW91dC1lZGl0b3I6bm90KC5sYXlvdXQtZWRpdG9yLWRyYWdnaW5nKSAubGF5b3V0LWVsZW1lbnQtYWN0aXZlLFxuLmxheW91dC1lZGl0b3I6bm90KC5sYXlvdXQtZWRpdG9yLWRyYWdnaW5nKSAubGF5b3V0LWVsZW1lbnQtZm9jdXNlZCB7XG4gIGJvcmRlci13aWR0aDogMnB4O1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xufVxuLmxheW91dC1lZGl0b3I6bm90KC5sYXlvdXQtZWRpdG9yLWRyYWdnaW5nKSAubGF5b3V0LWVsZW1lbnQtYWN0aXZlID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIsXG4ubGF5b3V0LWVkaXRvcjpub3QoLmxheW91dC1lZGl0b3ItZHJhZ2dpbmcpIC5sYXlvdXQtZWxlbWVudC1mb2N1c2VkID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIge1xuICBtYXJnaW46IC0ycHg7XG59XG4ubGF5b3V0LWVkaXRvcjpub3QoLmxheW91dC1lZGl0b3ItZHJhZ2dpbmcpIC5sYXlvdXQtZWxlbWVudC1hY3RpdmUge1xuICBib3JkZXItY29sb3I6IHJnYmEoMTA0LCAxMDQsIDEwNCwgMC4xKTtcbn1cbi5sYXlvdXQtZWRpdG9yOm5vdCgubGF5b3V0LWVkaXRvci1kcmFnZ2luZykgLmxheW91dC1lbGVtZW50LWFjdGl2ZSA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1wYW5lbC1tYWluIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHotaW5kZXg6IDMwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEwNCwgMTA0LCAxMDQsIDAuMSk7XG59XG4ubGF5b3V0LWVkaXRvcjpub3QoLmxheW91dC1lZGl0b3ItZHJhZ2dpbmcpIC5sYXlvdXQtZWxlbWVudC1mb2N1c2VkIHtcbiAgYm9yZGVyLWNvbG9yOiAjNjQ4NzIxO1xufVxuLmxheW91dC1lZGl0b3I6bm90KC5sYXlvdXQtZWRpdG9yLWRyYWdnaW5nKSAubGF5b3V0LWVsZW1lbnQtZm9jdXNlZCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1wYW5lbCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjQ4NzIxO1xuICBjb2xvcjogI2ZlZmVmZTtcbn1cbi5sYXlvdXQtZWRpdG9yOm5vdCgubGF5b3V0LWVkaXRvci1kcmFnZ2luZykgLmxheW91dC1lbGVtZW50LWZvY3VzZWQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciA+IC5sYXlvdXQtcGFuZWwgPiAubGF5b3V0LXBhbmVsLWFjdGlvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5sYXlvdXQtZWRpdG9yOm5vdCgubGF5b3V0LWVkaXRvci1kcmFnZ2luZykgLmxheW91dC1lbGVtZW50LWZvY3VzZWQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciA+IC5sYXlvdXQtcGFuZWwgPiAubGF5b3V0LXBhbmVsLWFjdGlvbjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MmIwMmI7XG59XG4ubGF5b3V0LWVkaXRvcjpub3QoLmxheW91dC1lZGl0b3ItZHJhZ2dpbmcpIC5sYXlvdXQtZWxlbWVudC1mb2N1c2VkID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgPiAubGF5b3V0LXBhbmVsID4gLmxheW91dC1wYW5lbC1hY3Rpb24uZGlzYWJsZWQge1xuICBjdXJzb3I6IGRlZmF1bHQ7XG4gIGNvbG9yOiByZ2JhKDI1NCwgMjU0LCAyNTQsIDAuNCk7XG59XG4ubGF5b3V0LWVkaXRvcjpub3QoLmxheW91dC1lZGl0b3ItZHJhZ2dpbmcpIC5sYXlvdXQtZWxlbWVudC1mb2N1c2VkID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgPiAubGF5b3V0LXBhbmVsID4gLmxheW91dC1wYW5lbC1hY3Rpb24uZGlzYWJsZWQ6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjQ4NzIxO1xufVxuLmxheW91dC1lZGl0b3I6bm90KC5sYXlvdXQtZWRpdG9yLWRyYWdnaW5nKSAubGF5b3V0LWVsZW1lbnQtZm9jdXNlZCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1wYW5lbCA+IC5sYXlvdXQtcGFuZWwtYWN0aW9uLmFjdGl2ZSB7XG4gIGNvbG9yOiAjZGVmZjQyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzM5YjI2O1xufVxuLmxheW91dC1lZGl0b3I6bm90KC5sYXlvdXQtZWRpdG9yLWRyYWdnaW5nKSAubGF5b3V0LWVsZW1lbnQtZm9jdXNlZCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1wYW5lbCA+IC5sYXlvdXQtcGFuZWwtYWN0aW9uLmFjdGl2ZTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MmIwMmI7XG59XG4ubGF5b3V0LWVkaXRvcjpub3QoLmxheW91dC1lZGl0b3ItZHJhZ2dpbmcpIC5sYXlvdXQtZWxlbWVudC1zZWxlY3RlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTAwLCAxMzUsIDMzLCAwLjA4KTtcbn1cbi5sYXlvdXQtZWRpdG9yIC51aS1zb3J0YWJsZS1wbGFjZWhvbGRlciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWVsZW1lbnQtZHJvcHRhcmdldCB7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMCAxMnB4IDZweCByZ2JhKDEwMCwgMTM1LCAzMywgMC41KTtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtZWxlbWVudC1kcm9wdGFyZ2V0IC51aS1zb3J0YWJsZS1wbGFjZWhvbGRlciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gIG1pbi1oZWlnaHQ6IDc4cHg7XG4gIGJvcmRlcjogMnB4IGRhc2hlZCAjNjQ4NzIxICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTAwLCAxMzUsIDMzLCAwLjE2KTtcbn1cbi5sYXlvdXQtZWRpdG9yIC5tZWRpYS10aHVtYm5haWwgaW1nIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtYXgtaGVpZ2h0OiAxMDAlO1xufVxuXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRhaW5lciA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1jb250YWluZXItY2hpbGRyZW4tcGxhY2Vob2xkZXIge1xuICBkaXNwbGF5OiBub25lO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBtYXJnaW46IDExcHg7XG4gIG1pbi1oZWlnaHQ6IDgwcHg7XG4gIGJvcmRlcjogMXB4IGRhc2hlZCByZ2JhKDEyNCwgMTI0LCAxMjQsIDAuNCk7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgcGFkZGluZzogMTJweDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICBvcGFjaXR5OiAwLjY7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGFpbmVyID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgPiAubGF5b3V0LWNoaWxkcmVuIHtcbiAgcGFkZGluZzogMTJweDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGFpbmVyID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgPiAubGF5b3V0LWNoaWxkcmVuID4gLmxheW91dC1lbGVtZW50Om5vdCgubGF5b3V0LWNvbnRhaW5lcikgKyAubGF5b3V0LWVsZW1lbnQ6bm90KC5sYXlvdXQtY29udGFpbmVyKSB7XG4gIG1hcmdpbi10b3A6IDEycHg7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRhaW5lciA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1jaGlsZHJlbiA+IC51aS1zb3J0YWJsZS1oZWxwZXI6Zmlyc3QtY2hpbGQgKyAubGF5b3V0LWVsZW1lbnQ6bm90KC5sYXlvdXQtY29udGFpbmVyKSB7XG4gIG1hcmdpbi10b3A6IDA7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRhaW5lciA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyLmxheW91dC1jb250YWluZXItZW1wdHkgPiAubGF5b3V0LWNvbnRhaW5lci1jaGlsZHJlbi1wbGFjZWhvbGRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRhaW5lciA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyLmxheW91dC1jb250YWluZXItZW1wdHkgPiAubGF5b3V0LWNoaWxkcmVuIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG59XG4ubGF5b3V0LWVkaXRvcjpub3QoLmxheW91dC1lZGl0b3ItZHJhZ2dpbmcpIC5sYXlvdXQtY29udGFpbmVyLmxheW91dC1lbGVtZW50LWZvY3VzZWQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciA+IC5sYXlvdXQtY2hpbGRyZW4gPiAubGF5b3V0LWVsZW1lbnQ6bm90KC5sYXlvdXQtZWxlbWVudC1hY3RpdmUpIHtcbiAgYm9yZGVyOiAxcHggZGFzaGVkIHJnYmEoMTI0LCAxMjQsIDEyNCwgMC42KTtcbn1cbi5sYXlvdXQtZWRpdG9yOm5vdCgubGF5b3V0LWVkaXRvci1kcmFnZ2luZykgLmxheW91dC1jb250YWluZXIubGF5b3V0LWVsZW1lbnQtZm9jdXNlZCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1jaGlsZHJlbiA+IC5sYXlvdXQtZWxlbWVudDpub3QoLmxheW91dC1lbGVtZW50LWFjdGl2ZSkgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciB7XG4gIG1hcmdpbjogLTFweDtcbn1cbi5sYXlvdXQtZWRpdG9yOm5vdCgubGF5b3V0LWVkaXRvci1kcmFnZ2luZykgLmxheW91dC1jb250YWluZXIubGF5b3V0LWVsZW1lbnQtZm9jdXNlZCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1jaGlsZHJlbiA+IC5sYXlvdXQtY29udGFpbmVyICsgLmxheW91dC1jb250YWluZXI6bm90KC5sYXlvdXQtZWxlbWVudC1hY3RpdmUpIHtcbiAgYm9yZGVyLXRvcDogMDtcbn1cbi5sYXlvdXQtZWRpdG9yOm5vdCgubGF5b3V0LWVkaXRvci1kcmFnZ2luZykgLmxheW91dC1jb250YWluZXIubGF5b3V0LWVsZW1lbnQtZm9jdXNlZCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1jaGlsZHJlbiA+IC5sYXlvdXQtY29udGFpbmVyICsgLmxheW91dC1jb250YWluZXI6bm90KC5sYXlvdXQtZWxlbWVudC1hY3RpdmUpID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIge1xuICBtYXJnaW4tdG9wOiAwO1xufVxuXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNhbnZhcyAjZHVtbXkge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LXJvdy5sYXlvdXQtZWxlbWVudC1mb2N1c2VkOm5vdCgubGF5b3V0LWVsZW1lbnQtZHJvcHRhcmdldCkgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciA+IC5sYXlvdXQtY2hpbGRyZW4gPiAubGF5b3V0LWVsZW1lbnQ6bm90KC5sYXlvdXQtZWxlbWVudC1hY3RpdmUpIHtcbiAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCByZ2JhKDEyNCwgMTI0LCAxMjQsIDAuNikgIWltcG9ydGFudDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtcm93LmxheW91dC1lbGVtZW50LWZvY3VzZWQ6bm90KC5sYXlvdXQtZWxlbWVudC1kcm9wdGFyZ2V0KSA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1jaGlsZHJlbiA+IC5sYXlvdXQtZWxlbWVudDpub3QoLmxheW91dC1lbGVtZW50LWFjdGl2ZSkgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciB7XG4gIG1hcmdpbi10b3A6IC0xcHggIWltcG9ydGFudDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtcm93LmxheW91dC1lbGVtZW50LWZvY3VzZWQ6bm90KC5sYXlvdXQtZWxlbWVudC1kcm9wdGFyZ2V0KSA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1jaGlsZHJlbiA+IC5sYXlvdXQtZWxlbWVudCArIC5sYXlvdXQtZWxlbWVudDpub3QoLmxheW91dC1lbGVtZW50LWFjdGl2ZSkge1xuICBib3JkZXItbGVmdDogMCAhaW1wb3J0YW50O1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1yb3cubGF5b3V0LWVsZW1lbnQtZm9jdXNlZDpub3QoLmxheW91dC1lbGVtZW50LWRyb3B0YXJnZXQpID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgPiAubGF5b3V0LWNoaWxkcmVuID4gLmxheW91dC1lbGVtZW50ICsgLmxheW91dC1lbGVtZW50Om5vdCgubGF5b3V0LWVsZW1lbnQtYWN0aXZlKSA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIHtcbiAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDtcbn1cblxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb2x1bW4gPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciA+IC5sYXlvdXQtY29sdW1uLXJlc2l6ZS1iYXIge1xuICBkaXNwbGF5OiBub25lO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDMwO1xuICB0b3A6IDA7XG4gIHdpZHRoOiAxNnB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGN1cnNvcjogY29sLXJlc2l6ZTtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29sdW1uID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgPiAubGF5b3V0LWNvbHVtbi1yZXNpemUtYmFyLWxlZnQge1xuICBsZWZ0OiAtNnB4O1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb2x1bW4gPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciA+IC5sYXlvdXQtY29sdW1uLXJlc2l6ZS1iYXItcmlnaHQge1xuICByaWdodDogLTZweDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29sdW1uLmxheW91dC1lbGVtZW50LWZvY3VzZWQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciA+IC5sYXlvdXQtY29sdW1uLXJlc2l6ZS1iYXIge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sIHtcbiAgbWluLWhlaWdodDogMWVtO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAge1xuICBwYWRkaW5nOiAycHg7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbiAgLyogdGhpcyBjb2xvciBpcyBqdXN0IGEgc3VnZ2VzdGlvbiBhbmQgY2FuIGJlIGNoYW5nZWQgYmFzZWQgb24gaW1wbGVtZW50YXRpb24gZmVlZGJhY2sgKi9cbiAgLyogdGhpcyBhbHNvIGhhcyBiaWRpIGltcGxpY2F0aW9ucyAqL1xuICAvKiB0aGlzIGFsc28gaGFzIGJpZGkgaW1wbGljYXRpb25zICovXG4gIC8qIExUUi1zcGVjaWZpYzogdXNlICdtYXJnaW4tcmlnaHQnIGZvciBydGwgZWxlbWVudHMgKi9cbiAgLyogTFRSLXNwZWNpZmljOiB1c2UgJ3BhZGRpbmctcmlnaHQnIGZvciBydGwgZWxlbWVudHMgKi9cbiAgLyp0YWJsZVtydWxlcz1ub25lIGldLCB0YWJsZVtydWxlcz1ncm91cHMgaV0sIHRhYmxlW3J1bGVzPXJvd3MgaV0sXG50YWJsZVtydWxlcz1jb2xzIGldLCB0YWJsZVtydWxlcz1hbGwgaV0sIHRhYmxlW2ZyYW1lPXZvaWQgaV0sXG50YWJsZVtmcmFtZT1hYm92ZSBpXSwgdGFibGVbZnJhbWU9YmVsb3cgaV0sIHRhYmxlW2ZyYW1lPWhzaWRlcyBpXSxcbnRhYmxlW2ZyYW1lPWxocyBpXSwgdGFibGVbZnJhbWU9cmhzIGldLCB0YWJsZVtmcmFtZT12c2lkZXMgaV0sXG50YWJsZVtmcmFtZT1ib3ggaV0sIHRhYmxlW2ZyYW1lPWJvcmRlciBpXSxcbnRhYmxlW3J1bGVzPW5vbmUgaV0gPiB0ciA+IHRkLCB0YWJsZVtydWxlcz1ub25lIGldID4gdHIgPiB0aCxcbnRhYmxlW3J1bGVzPWdyb3VwcyBpXSA+IHRyID4gdGQsIHRhYmxlW3J1bGVzPWdyb3VwcyBpXSA+IHRyID4gdGgsXG50YWJsZVtydWxlcz1yb3dzIGldID4gdHIgPiB0ZCwgdGFibGVbcnVsZXM9cm93cyBpXSA+IHRyID4gdGgsXG50YWJsZVtydWxlcz1jb2xzIGldID4gdHIgPiB0ZCwgdGFibGVbcnVsZXM9Y29scyBpXSA+IHRyID4gdGgsXG50YWJsZVtydWxlcz1hbGwgaV0gPiB0ciA+IHRkLCB0YWJsZVtydWxlcz1hbGwgaV0gPiB0ciA+IHRoLFxudGFibGVbcnVsZXM9bm9uZSBpXSA+IHRoZWFkID4gdHIgPiB0ZCwgdGFibGVbcnVsZXM9bm9uZSBpXSA+IHRoZWFkID4gdHIgPiB0aCxcbnRhYmxlW3J1bGVzPWdyb3VwcyBpXSA+IHRoZWFkID4gdHIgPiB0ZCwgdGFibGVbcnVsZXM9Z3JvdXBzIGldID4gdGhlYWQgPiB0ciA+IHRoLFxudGFibGVbcnVsZXM9cm93cyBpXSA+IHRoZWFkID4gdHIgPiB0ZCwgdGFibGVbcnVsZXM9cm93cyBpXSA+IHRoZWFkID4gdHIgPiB0aCxcbnRhYmxlW3J1bGVzPWNvbHMgaV0gPiB0aGVhZCA+IHRyID4gdGQsIHRhYmxlW3J1bGVzPWNvbHMgaV0gPiB0aGVhZCA+IHRyID4gdGgsXG50YWJsZVtydWxlcz1hbGwgaV0gPiB0aGVhZCA+IHRyID4gdGQsIHRhYmxlW3J1bGVzPWFsbCBpXSA+IHRoZWFkID4gdHIgPiB0aCxcbnRhYmxlW3J1bGVzPW5vbmUgaV0gPiB0Ym9keSA+IHRyID4gdGQsIHRhYmxlW3J1bGVzPW5vbmUgaV0gPiB0Ym9keSA+IHRyID4gdGgsXG50YWJsZVtydWxlcz1ncm91cHMgaV0gPiB0Ym9keSA+IHRyID4gdGQsIHRhYmxlW3J1bGVzPWdyb3VwcyBpXSA+IHRib2R5ID4gdHIgPiB0aCxcbnRhYmxlW3J1bGVzPXJvd3MgaV0gPiB0Ym9keSA+IHRyID4gdGQsIHRhYmxlW3J1bGVzPXJvd3MgaV0gPiB0Ym9keSA+IHRyID4gdGgsXG50YWJsZVtydWxlcz1jb2xzIGldID4gdGJvZHkgPiB0ciA+IHRkLCB0YWJsZVtydWxlcz1jb2xzIGldID4gdGJvZHkgPiB0ciA+IHRoLFxudGFibGVbcnVsZXM9YWxsIGldID4gdGJvZHkgPiB0ciA+IHRkLCB0YWJsZVtydWxlcz1hbGwgaV0gPiB0Ym9keSA+IHRyID4gdGgsXG50YWJsZVtydWxlcz1ub25lIGldID4gdGZvb3QgPiB0ciA+IHRkLCB0YWJsZVtydWxlcz1ub25lIGldID4gdGZvb3QgPiB0ciA+IHRoLFxudGFibGVbcnVsZXM9Z3JvdXBzIGldID4gdGZvb3QgPiB0ciA+IHRkLCB0YWJsZVtydWxlcz1ncm91cHMgaV0gPiB0Zm9vdCA+IHRyID4gdGgsXG50YWJsZVtydWxlcz1yb3dzIGldID4gdGZvb3QgPiB0ciA+IHRkLCB0YWJsZVtydWxlcz1yb3dzIGldID4gdGZvb3QgPiB0ciA+IHRoLFxudGFibGVbcnVsZXM9Y29scyBpXSA+IHRmb290ID4gdHIgPiB0ZCwgdGFibGVbcnVsZXM9Y29scyBpXSA+IHRmb290ID4gdHIgPiB0aCxcbnRhYmxlW3J1bGVzPWFsbCBpXSA+IHRmb290ID4gdHIgPiB0ZCwgdGFibGVbcnVsZXM9YWxsIGldID4gdGZvb3QgPiB0ciA+IHRoIHtcbiAgICBib3JkZXItY29sb3I6IGJsYWNrO1xufSovXG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwICosXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwICoge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBhZGRyZXNzLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBhZGRyZXNzLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBibG9ja3F1b3RlLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBibG9ja3F1b3RlLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBjZW50ZXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGNlbnRlcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGl2LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkaXYsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGZpZ3VyZSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZmlndXJlLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBmaWdjYXB0aW9uLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBmaWdjYXB0aW9uLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBmb290ZXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGZvb3Rlcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZm9ybSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZm9ybSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaGVhZGVyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBoZWFkZXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGhyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBocixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgbGVnZW5kLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBsZWdlbmQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGxpc3RpbmcsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGxpc3RpbmcsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHAsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHAsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHBsYWludGV4dCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgcGxhaW50ZXh0LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBwcmUsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHByZSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgeG1wLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB4bXAge1xuICBkaXNwbGF5OiBibG9jaztcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgYmxvY2txdW90ZSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgYmxvY2txdW90ZSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZmlndXJlLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBmaWd1cmUsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGxpc3RpbmcsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGxpc3RpbmcsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHAsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHAsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHBsYWludGV4dCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgcGxhaW50ZXh0LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBwcmUsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHByZSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgeG1wLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB4bXAge1xuICBtYXJnaW4tdG9wOiAxZW07XG4gIG1hcmdpbi1ib3R0b206IDFlbTtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgYmxvY2txdW90ZSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgYmxvY2txdW90ZSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZmlndXJlLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBmaWd1cmUge1xuICBtYXJnaW4tbGVmdDogNDBweDtcbiAgbWFyZ2luLXJpZ2h0OiA0MHB4O1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBhZGRyZXNzLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBhZGRyZXNzIHtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBsaXN0aW5nLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBsaXN0aW5nLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBwbGFpbnRleHQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHBsYWludGV4dCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgcHJlLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBwcmUsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHhtcCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgeG1wIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgd2hpdGUtc3BhY2U6IHByZTtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgY2l0ZSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgY2l0ZSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGZuLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkZm4sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGVtLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBlbSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdmFyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB2YXIge1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHN0cm9uZyxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGRlcjtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgY29kZSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgY29kZSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAga2JkLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBrYmQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHNhbXAsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHNhbXAsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHR0LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0dCB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGJpZyxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgYmlnIHtcbiAgZm9udC1zaXplOiBsYXJnZXI7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHNtYWxsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBzbWFsbCB7XG4gIGZvbnQtc2l6ZTogc21hbGxlcjtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgc3ViLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBzdWIge1xuICB2ZXJ0aWNhbC1hbGlnbjogc3ViO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBzdXAsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHN1cCB7XG4gIHZlcnRpY2FsLWFsaWduOiBzdXBlcjtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgc3ViLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBzdWIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHN1cCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgc3VwIHtcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zaXplOiBzbWFsbGVyO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBydWJ5LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBydWJ5IHtcbiAgZGlzcGxheTogcnVieTtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgcmIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHJiIHtcbiAgZGlzcGxheTogcnVieS1iYXNlO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBydCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgcnQge1xuICBkaXNwbGF5OiBydWJ5LXRleHQ7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGZvbnQtc2l6ZTogNTAlO1xuICBmb250LXZhcmlhbnQtZWFzdC1hc2lhbjogcnVieTtcbiAgdGV4dC1lbXBoYXNpczogbm9uZTtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgcmJjLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCByYmMge1xuICBkaXNwbGF5OiBydWJ5LWJhc2UtY29udGFpbmVyO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBydGMsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHJ0YyB7XG4gIGRpc3BsYXk6IHJ1YnktdGV4dC1jb250YWluZXI7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHJ1YnksXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHJ1YnksXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHJiLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCByYixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgcnQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHJ0LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCByYmMsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHJiYyxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgcnRjLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBydGMge1xuICB1bmljb2RlLWJpZGk6IGlzb2xhdGU7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIDpsaW5rLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCA6bGluayB7XG4gIGNvbG9yOiAjMDAwMEVFO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCA6dmlzaXRlZCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgOnZpc2l0ZWQge1xuICBjb2xvcjogIzU1MUE4Qjtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgOmxpbmssXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIDpsaW5rLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCA6dmlzaXRlZCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgOnZpc2l0ZWQge1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgYTpsaW5rW3JlbH49aGVscF0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGE6bGlua1tyZWx+PWhlbHBdLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBhOnZpc2l0ZWRbcmVsfj1oZWxwXSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgYTp2aXNpdGVkW3JlbH49aGVscF0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGFyZWE6bGlua1tyZWx+PWhlbHBdLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBhcmVhOmxpbmtbcmVsfj1oZWxwXSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgYXJlYTp2aXNpdGVkW3JlbH49aGVscF0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGFyZWE6dmlzaXRlZFtyZWx+PWhlbHBdIHtcbiAgY3Vyc29yOiBoZWxwO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCA6Zm9jdXMsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIDpmb2N1cyB7XG4gIG91dGxpbmU6IGF1dG87XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIG1hcmssXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIG1hcmsge1xuICBiYWNrZ3JvdW5kOiB5ZWxsb3c7XG4gIGNvbG9yOiBibGFjaztcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgYWJiclt0aXRsZV0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGFiYnJbdGl0bGVdLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBhY3JvbnltW3RpdGxlXSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgYWNyb255bVt0aXRsZV0ge1xuICB0ZXh0LWRlY29yYXRpb246IGRvdHRlZCB1bmRlcmxpbmU7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGlucyxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaW5zLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB1LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB1IHtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRlbCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGVsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBzLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBzLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBzdHJpa2UsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHN0cmlrZSB7XG4gIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBibGluayxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgYmxpbmsge1xuICB0ZXh0LWRlY29yYXRpb246IGJsaW5rO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBxOjpiZWZvcmUsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHE6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IG9wZW4tcXVvdGU7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHE6OmFmdGVyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBxOjphZnRlciB7XG4gIGNvbnRlbnQ6IGNsb3NlLXF1b3RlO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBicixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgYnIge1xuICBjb250ZW50OiAnXFxBJztcbiAgd2hpdGUtc3BhY2U6IHByZTtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgbm9icixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgbm9iciB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHdicixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgd2JyIHtcbiAgY29udGVudDogJ1xcMjAwQic7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIG5vYnIgd2JyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBub2JyIHdiciB7XG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGFydGljbGUsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGFydGljbGUsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGFzaWRlLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBhc2lkZSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaDEsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGgxLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBoMixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaDIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGgzLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBoMyxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaDQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGg0LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBoNSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaDUsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGg2LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBoNixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaGdyb3VwLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBoZ3JvdXAsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIG5hdixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgbmF2LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBzZWN0aW9uLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBzZWN0aW9uIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGgxLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBoMSB7XG4gIG1hcmdpbi10b3A6IDAuNjdlbTtcbiAgbWFyZ2luLWJvdHRvbTogMC42N2VtO1xuICBmb250LXNpemU6IDIuMDBlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGgyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBoMiB7XG4gIG1hcmdpbi10b3A6IDAuODNlbTtcbiAgbWFyZ2luLWJvdHRvbTogMC44M2VtO1xuICBmb250LXNpemU6IDEuNTBlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGgzLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBoMyB7XG4gIG1hcmdpbi10b3A6IDEuMDBlbTtcbiAgbWFyZ2luLWJvdHRvbTogMS4wMGVtO1xuICBmb250LXNpemU6IDEuMTdlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGg0LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBoNCB7XG4gIG1hcmdpbi10b3A6IDEuMzNlbTtcbiAgbWFyZ2luLWJvdHRvbTogMS4zM2VtO1xuICBmb250LXNpemU6IDEuMDBlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGg1LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBoNSB7XG4gIG1hcmdpbi10b3A6IDEuNjdlbTtcbiAgbWFyZ2luLWJvdHRvbTogMS42N2VtO1xuICBmb250LXNpemU6IDAuODNlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGg2LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBoNiB7XG4gIG1hcmdpbi10b3A6IDIuMzNlbTtcbiAgbWFyZ2luLWJvdHRvbTogMi4zM2VtO1xuICBmb250LXNpemU6IDAuNjdlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGlyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkZCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkbCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZHQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGR0LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvbCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgb2wsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHVsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB1bCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBsaSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgbGkge1xuICBkaXNwbGF5OiBsaXN0LWl0ZW07XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGlyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkbCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIG9sLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvbCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdWwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHVsIHtcbiAgbWFyZ2luLXRvcDogMWVtO1xuICBtYXJnaW4tYm90dG9tOiAxZW07XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpciBkaXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpciBkaXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpciBkbCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGlyIGRsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkaXIgb2wsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpciBvbCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGlyIHVsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkaXIgdWwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRsIGRpcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGwgZGlyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkbCBkbCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGwgZGwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRsIG9sLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkbCBvbCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGwgdWwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRsIHVsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvbCBkaXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIG9sIGRpcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgb2wgZGwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIG9sIGRsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvbCBvbCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgb2wgb2wsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIG9sIHVsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvbCB1bCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdWwgZGlyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB1bCBkaXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHVsIGRsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB1bCBkbCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdWwgb2wsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHVsIG9sLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB1bCB1bCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdWwgdWwge1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkZCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGQge1xuICBtYXJnaW4tbGVmdDogNDBweDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGlyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkaXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIG9sLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvbCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdWwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHVsIHtcbiAgcGFkZGluZy1sZWZ0OiA0MHB4O1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvbCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgb2wge1xuICBsaXN0LXN0eWxlLXR5cGU6IGRlY2ltYWw7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGlyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB1bCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdWwge1xuICBsaXN0LXN0eWxlLXR5cGU6IGRpc2M7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpciBkaXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpciBkaXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpciB1bCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGlyIHVsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvbCBkaXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIG9sIGRpcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgb2wgdWwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIG9sIHVsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB1bCBkaXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHVsIGRpcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdWwgdWwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHVsIHVsIHtcbiAgbGlzdC1zdHlsZS10eXBlOiBjaXJjbGU7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpciBkaXIgZGlyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkaXIgZGlyIGRpcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGlyIGRpciB1bCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGlyIGRpciB1bCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGlyIG9sIGRpcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGlyIG9sIGRpcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGlyIG9sIHVsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkaXIgb2wgdWwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpciB1bCBkaXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpciB1bCBkaXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpciB1bCB1bCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGlyIHVsIHVsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvbCBkaXIgZGlyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvbCBkaXIgZGlyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvbCBkaXIgdWwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIG9sIGRpciB1bCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgb2wgb2wgZGlyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvbCBvbCBkaXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIG9sIG9sIHVsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvbCBvbCB1bCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgb2wgdWwgZGlyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvbCB1bCBkaXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIG9sIHVsIHVsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvbCB1bCB1bCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdWwgZGlyIGRpcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdWwgZGlyIGRpcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdWwgZGlyIHVsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB1bCBkaXIgdWwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHVsIG9sIGRpcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdWwgb2wgZGlyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB1bCBvbCB1bCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdWwgb2wgdWwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHVsIHVsIGRpcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdWwgdWwgZGlyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB1bCB1bCB1bCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdWwgdWwgdWwge1xuICBsaXN0LXN0eWxlLXR5cGU6IHNxdWFyZTtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGFibGUsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRhYmxlIHtcbiAgZGlzcGxheTogdGFibGU7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGNhcHRpb24sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGNhcHRpb24ge1xuICBkaXNwbGF5OiB0YWJsZS1jYXB0aW9uO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBjb2xncm91cCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgY29sZ3JvdXAsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGNvbGdyb3VwW2hpZGRlbl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGNvbGdyb3VwW2hpZGRlbl0ge1xuICBkaXNwbGF5OiB0YWJsZS1jb2x1bW4tZ3JvdXA7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGNvbCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgY29sLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBjb2xbaGlkZGVuXSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgY29sW2hpZGRlbl0ge1xuICBkaXNwbGF5OiB0YWJsZS1jb2x1bW47XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRoZWFkLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0aGVhZCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGhlYWRbaGlkZGVuXSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGhlYWRbaGlkZGVuXSB7XG4gIGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGJvZHksXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRib2R5LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0Ym9keVtoaWRkZW5dLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0Ym9keVtoaWRkZW5dIHtcbiAgZGlzcGxheTogdGFibGUtcm93LWdyb3VwO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0Zm9vdCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGZvb3QsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRmb290W2hpZGRlbl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRmb290W2hpZGRlbl0ge1xuICBkaXNwbGF5OiB0YWJsZS1mb290ZXItZ3JvdXA7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0cixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdHJbaGlkZGVuXSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdHJbaGlkZGVuXSB7XG4gIGRpc3BsYXk6IHRhYmxlLXJvdztcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRkLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0aCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGgsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRkW2hpZGRlbl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRkW2hpZGRlbl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRoW2hpZGRlbl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRoW2hpZGRlbl0ge1xuICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBjb2xncm91cFtoaWRkZW5dLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBjb2xncm91cFtoaWRkZW5dLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBjb2xbaGlkZGVuXSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgY29sW2hpZGRlbl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRoZWFkW2hpZGRlbl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRoZWFkW2hpZGRlbl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRib2R5W2hpZGRlbl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRib2R5W2hpZGRlbl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRmb290W2hpZGRlbl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRmb290W2hpZGRlbl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRyW2hpZGRlbl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRyW2hpZGRlbl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRkW2hpZGRlbl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRkW2hpZGRlbl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRoW2hpZGRlbl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRoW2hpZGRlbl0ge1xuICB2aXNpYmlsaXR5OiBjb2xsYXBzZTtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGFibGUsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRhYmxlIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm9yZGVyLXNwYWNpbmc6IDJweDtcbiAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTtcbiAgdGV4dC1pbmRlbnQ6IGluaXRpYWw7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRkLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0ZCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGgsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRoIHtcbiAgcGFkZGluZzogMXB4O1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0aCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGgge1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGhlYWQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRoZWFkLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0Ym9keSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGJvZHksXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRmb290LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0Zm9vdCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGFibGUgPiB0cixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGFibGUgPiB0ciB7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0cixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRkLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0aCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGgge1xuICB2ZXJ0aWNhbC1hbGlnbjogaW5oZXJpdDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGFibGUsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRhYmxlLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0ZCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRoLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0aCB7XG4gIGJvcmRlci1jb2xvcjogZ3JheTtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGhlYWQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRoZWFkLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0Ym9keSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGJvZHksXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRmb290LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0Zm9vdCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdHIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRyIHtcbiAgYm9yZGVyLWNvbG9yOiBpbmhlcml0O1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBpbnB1dCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaW5wdXQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHNlbGVjdCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgc2VsZWN0LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvcHRpb24sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIG9wdGlvbixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgb3B0Z3JvdXAsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIG9wdGdyb3VwLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBidXR0b24sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGJ1dHRvbixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGV4dGFyZWEsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRleHRhcmVhLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBrZXlnZW4sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGtleWdlbiB7XG4gIHRleHQtaW5kZW50OiBpbml0aWFsO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0ZXh0YXJlYSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGV4dGFyZWEge1xuICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGlucHV0W3R5cGU9XCJyYWRpb1wiXSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaW5wdXRbdHlwZT1cInJhZGlvXCJdLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaW5wdXRbdHlwZT1cInJlc2V0XCJdLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBpbnB1dFt0eXBlPVwicmVzZXRcIl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGlucHV0W3R5cGU9XCJidXR0b25cIl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGlucHV0W3R5cGU9XCJidXR0b25cIl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGlucHV0W3R5cGU9XCJzdWJtaXRcIl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGlucHV0W3R5cGU9XCJzdWJtaXRcIl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHNlbGVjdCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgc2VsZWN0LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBidXR0b24sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGJ1dHRvbiB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGlucHV0W3R5cGU9XCJidXR0b25cIl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGlucHV0W3R5cGU9XCJidXR0b25cIl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGJ1dHRvbixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgYnV0dG9uIHtcbiAgcGFkZGluZzogMC4zZW0gMC41ZW07XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGhyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBociB7XG4gIGNvbG9yOiBncmF5O1xuICBib3JkZXItc3R5bGU6IGluc2V0O1xuICBib3JkZXItd2lkdGg6IDFweDtcbiAgbWFyZ2luOiAwLjVlbSBhdXRvO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBmaWVsZHNldCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZmllbGRzZXQge1xuICBtYXJnaW4tbGVmdDogMnB4O1xuICBtYXJnaW4tcmlnaHQ6IDJweDtcbiAgYm9yZGVyOiBncm9vdmUgMnB4IFRocmVlREZhY2U7XG4gIHBhZGRpbmc6IDAuMzVlbSAwLjYyNWVtIDAuNzVlbTtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgbGVnZW5kLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBsZWdlbmQge1xuICBwYWRkaW5nLWxlZnQ6IDJweDtcbiAgcGFkZGluZy1yaWdodDogMnB4O1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCA+ICo6Zmlyc3QtY2hpbGQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwID4gKjpmaXJzdC1jaGlsZCB7XG4gIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgPiAqOmxhc3QtY2hpbGQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwID4gKjpsYXN0LWNoaWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50LmxheW91dC1jb250ZW50LWltYWdlID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgPiAubGF5b3V0LWNvbnRlbnQtbWFya3VwID4gaW1nLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sLmxheW91dC1jb250ZW50LWltYWdlID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgPiAubGF5b3V0LWNvbnRlbnQtbWFya3VwID4gaW1nLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50LmxheW91dC1jb250ZW50LXZlY3Rvci1pbWFnZSA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1jb250ZW50LW1hcmt1cCA+IGltZyxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbC5sYXlvdXQtY29udGVudC12ZWN0b3ItaW1hZ2UgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciA+IC5sYXlvdXQtY29udGVudC1tYXJrdXAgPiBpbWcge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuLmxheW91dC1lZGl0b3IgLmltZy1yZXNwb25zaXZlLFxuLmxheW91dC1lZGl0b3IgLmltZy1yZXNwb25zaXZlIGltZyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGF1dG87XG59XG5cbi5sYXlvdXQtZWRpdG9yID4gLmxheW91dC10b29sYm94LXdyYXBwZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1sZWZ0OiAxMnB4O1xuICB3aWR0aDogMjIwcHg7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuLmxheW91dC1lZGl0b3IgPiAubGF5b3V0LXRvb2xib3gtd3JhcHBlciA+IC5sYXlvdXQtdG9vbGJveCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlNGU1ZTY7XG4gIHdpZHRoOiAyMjBweDtcbiAgbWluLWhlaWdodDogNDAwcHg7XG4gIHBhZGRpbmc6IDZweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YzZjRmNTtcbn1cbi5sYXlvdXQtZWRpdG9yID4gLmxheW91dC10b29sYm94LXdyYXBwZXIgPiAubGF5b3V0LXRvb2xib3guc3RpY2t5LXRvcCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBtYXgtaGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdy15OiBhdXRvO1xufVxuLmxheW91dC1lZGl0b3IgPiAubGF5b3V0LXRvb2xib3gtd3JhcHBlciA+IC5sYXlvdXQtdG9vbGJveC5zdGlja3ktYm90dG9tIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDA7XG59XG4ubGF5b3V0LWVkaXRvciA+IC5sYXlvdXQtdG9vbGJveC13cmFwcGVyID4gLmxheW91dC10b29sYm94IC5sYXlvdXQtdG9vbGJveC1ncm91cCB7XG4gIG1hcmdpbi10b3A6IDEycHg7XG59XG4ubGF5b3V0LWVkaXRvciA+IC5sYXlvdXQtdG9vbGJveC13cmFwcGVyID4gLmxheW91dC10b29sYm94IC5sYXlvdXQtdG9vbGJveC1ncm91cCAubGF5b3V0LXRvb2xib3gtZ3JvdXAtaGVhZGluZyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cbi5sYXlvdXQtZWRpdG9yID4gLmxheW91dC10b29sYm94LXdyYXBwZXIgPiAubGF5b3V0LXRvb2xib3ggLmxheW91dC10b29sYm94LWdyb3VwIC5sYXlvdXQtdG9vbGJveC1ncm91cC1oZWFkaW5nOmJlZm9yZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDEwcHg7XG4gIG1hcmdpbi1yaWdodDogNHB4O1xuICBmb250OiBub3JtYWwgbm9ybWFsIG5vcm1hbCAxNHB4LzEgRm9udEF3ZXNvbWU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY29udGVudDogXCJcXGYwZDdcIjtcbn1cbi5sYXlvdXQtZWRpdG9yID4gLmxheW91dC10b29sYm94LXdyYXBwZXIgPiAubGF5b3V0LXRvb2xib3ggLmxheW91dC10b29sYm94LWdyb3VwLmNvbGxhcHNlZCAubGF5b3V0LXRvb2xib3gtZ3JvdXAtaGVhZGluZzpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZjBkYVwiO1xufVxuLmxheW91dC1lZGl0b3IgPiAubGF5b3V0LXRvb2xib3gtd3JhcHBlciA+IC5sYXlvdXQtdG9vbGJveCAubGF5b3V0LXRvb2xib3gtZ3JvdXAuY29sbGFwc2VkIC5sYXlvdXQtdG9vbGJveC1pdGVtcyB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ubGF5b3V0LWVkaXRvciA+IC5sYXlvdXQtdG9vbGJveC13cmFwcGVyID4gLmxheW91dC10b29sYm94IC5sYXlvdXQtdG9vbGJveC1ncm91cCAubGF5b3V0LXRvb2xib3gtc2VjdGlvbiArIC5sYXlvdXQtdG9vbGJveC1zZWN0aW9uIHtcbiAgbWFyZ2luLXRvcDogNHB4O1xufVxuLmxheW91dC1lZGl0b3IgPiAubGF5b3V0LXRvb2xib3gtd3JhcHBlciA+IC5sYXlvdXQtdG9vbGJveCAubGF5b3V0LXRvb2xib3gtZ3JvdXAgLmxheW91dC10b29sYm94LWl0ZW0ge1xuICBib3JkZXI6IDFweCBzb2xpZCAjZTRlNWU2O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBwYWRkaW5nOiA5cHggMTJweDtcbiAgY3Vyc29yOiBkZWZhdWx0O1xufVxuLmxheW91dC1lZGl0b3IgPiAubGF5b3V0LXRvb2xib3gtd3JhcHBlciA+IC5sYXlvdXQtdG9vbGJveCAubGF5b3V0LXRvb2xib3gtZ3JvdXAgLmxheW91dC10b29sYm94LWl0ZW0gaSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDE2cHg7XG4gIGZvbnQ6IG5vcm1hbCBub3JtYWwgbm9ybWFsIDE0cHgvMSBGb250QXdlc29tZTtcbn1cbi5sYXlvdXQtZWRpdG9yID4gLmxheW91dC10b29sYm94LXdyYXBwZXIgPiAubGF5b3V0LXRvb2xib3ggLmxheW91dC10b29sYm94LWdyb3VwIC5sYXlvdXQtdG9vbGJveC1pdGVtICsgLmxheW91dC10b29sYm94LWl0ZW0ge1xuICBtYXJnaW4tdG9wOiA0cHg7XG59XG4ubGF5b3V0LWVkaXRvciA+IC5sYXlvdXQtdG9vbGJveC13cmFwcGVyID4gLmxheW91dC10b29sYm94IC5sYXlvdXQtdG9vbGJveC1ncm91cCArIC5sYXlvdXQtdG9vbGJveC1ncm91cCB7XG4gIG1hcmdpbi10b3A6IDZweDtcbn1cblxuLmxheW91dC1lZGl0b3IgLmxheW91dC1wb3B1cCB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbWFyZ2luOiAwO1xuICAtbW96LWJveC1zaGFkb3c6IDNweCAzcHggMTFweCAwIHJnYmEoNTAsIDUwLCA1MCwgMC41KTtcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiAzcHggM3B4IDExcHggMCByZ2JhKDUwLCA1MCwgNTAsIDAuNSk7XG4gIGJveC1zaGFkb3c6IDNweCAzcHggMTFweCAwIHJnYmEoNTAsIDUwLCA1MCwgMC41KTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2U0ZTVlNjtcbiAgcGFkZGluZzogMnB4IDA7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIHotaW5kZXg6IDIwO1xuICBjb2xvcjogIzdjN2M3YztcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgY3Vyc29yOiBkZWZhdWx0O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBsaW5lLWhlaWdodDogbm9ybWFsO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1wb3B1cCAubGF5b3V0LXBvcHVwLWZsZXgge1xuICBkaXNwbGF5OiBmbGV4O1xuICBwYWRkaW5nOiAycHggNXB4O1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1wb3B1cCAubGF5b3V0LXBvcHVwLWZsZXggLmxheW91dC1wb3B1cC1jb2x1bW4gKyAubGF5b3V0LXBvcHVwLWNvbHVtbiB7XG4gIG1hcmdpbi1sZWZ0OiA0cHg7XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgcmdiYSgxMjgsIDEyOCwgMTI4LCAwLjE1KTtcbiAgcGFkZGluZy1sZWZ0OiA0cHg7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LXBvcHVwIC5sYXlvdXQtcG9wdXAtaXRlbSB7XG4gIHBhZGRpbmc6IDRweCA2cHg7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LXBvcHVwIC5sYXlvdXQtcG9wdXAtbGFiZWwge1xuICBmb250LXNpemU6IDAuOWVtO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6ICM3YzdjN2M7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LXBvcHVwIC5sYXlvdXQtcG9wdXAtYWN0aW9uOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YzZjRmNTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1wb3B1cCAubGF5b3V0LXBvcHVwLWlucHV0ID4gbGFiZWwge1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC1zaXplOiAwLjllbTtcbn1cbiIsIkBpbXBvcnQgXCJWYXJpYWJsZXMubGVzc1wiO1xuXG4ubGF5b3V0LWVkaXRvciB7XG4gICAgLmxheW91dC1lbGVtZW50IHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG5cbiAgICAgICAgLy8gV2UgZG9uJ3QgZnVjayB3aXRoIHRoZSBsZWZ0IG1hcmdpbiBvZiBjb2x1bW5zLCBiZWNhdXNlIEJvb3RzdHJhcCB1c2VzIHRoZXNlIHRvIHJlbmRlciBjb2x1bW4gb2Zmc2V0cy5cbiAgICAgICAgJjpub3QoLmxheW91dC1jb2x1bW4pIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciB7XG4gICAgICAgICAgICA+IC5sYXlvdXQtcGFuZWwge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7IC8vIFNob3duIG9ubHkgaW4gYWN0aXZlIG9yIGZvY3VzZWQgc3RhdGVzLlxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgei1pbmRleDogMjA7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAyNXB4O1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgNnB4O1xuICAgICAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMjVweDtcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXG4gICAgICAgICAgICAgICAgPiAubGF5b3V0LXBhbmVsLWl0ZW0ge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjVweDtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMXB4IDZweCAwO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgID4gLmxheW91dC1wYW5lbC1sYWJlbCB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogQGZvbnQtc2l6ZSAtIDE7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPiAubGF5b3V0LXBhbmVsLWFjdGlvbiB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7IC8vIFNob3duIG9ubHkgaW4gZm9jdXNlZCBzdGF0ZS5cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDI4cHg7XG4gICAgICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPiAubGF5b3V0LXBhbmVsLW1haW4ge1xuICAgICAgICAgICAgICAgIHRvcDogLTI3cHg7XG4gICAgICAgICAgICAgICAgbGVmdDogLTJweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFdoZW4gZHJhZ2dpbmcgZnJvbSB0b29sYm94LCBlbGVtZW50cyB3aWxsIGJlIGxpIHJhdGhlciB0aGFuIGRpdi5cbiAgICBsaS5sYXlvdXQtZWxlbWVudCB7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgfVxuXG4gICAgJjpub3QoLmxheW91dC1lZGl0b3ItZHJhZ2dpbmcpIHtcblxuICAgICAgICAubGF5b3V0LWVsZW1lbnQtYWN0aXZlLCAubGF5b3V0LWVsZW1lbnQtZm9jdXNlZCB7XG4gICAgICAgICAgICBib3JkZXItd2lkdGg6IDJweDtcbiAgICAgICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG5cbiAgICAgICAgICAgID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogLTJweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5sYXlvdXQtZWxlbWVudC1hY3RpdmUge1xuICAgICAgICAgICAgQGFjdGl2ZS1oaWdobGlnaHQ6IGZhZGUoIzY4Njg2OCwgMTAlKTtcblxuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiBAYWN0aXZlLWhpZ2hsaWdodDtcblxuICAgICAgICAgICAgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciA+IC5sYXlvdXQtcGFuZWwtbWFpbiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7IC8vIFRvIHJldmVhbC5cbiAgICAgICAgICAgICAgICB6LWluZGV4OiAzMDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAYWN0aXZlLWhpZ2hsaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5sYXlvdXQtZWxlbWVudC1mb2N1c2VkIHtcbiAgICAgICAgICAgIEBmb2N1c2VkLWhpZ2hsaWdodDogIzY0ODcyMTtcbiAgICAgICAgICAgIEBmb2N1c2VkLXRleHQ6ICNmZWZlZmU7XG5cbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogQGZvY3VzZWQtaGlnaGxpZ2h0O1xuXG4gICAgICAgICAgICA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1wYW5lbCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7IC8vIFRvIHJldmVhbC5cbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAZm9jdXNlZC1oaWdobGlnaHQ7XG4gICAgICAgICAgICAgICAgY29sb3I6IEBmb2N1c2VkLXRleHQ7XG5cbiAgICAgICAgICAgICAgICA+IC5sYXlvdXQtcGFuZWwtYWN0aW9uIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOyAvLyBUbyByZXZlYWwuXG4gICAgICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRlbihAZm9jdXNlZC1oaWdobGlnaHQsIDEwJSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAmLmRpc2FibGVkIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBmYWRlKEBmb2N1c2VkLXRleHQsIDQwJSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBmb2N1c2VkLWhpZ2hsaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBsaWdodGVuKHNhdHVyYXRlKHNwaW4oQGZvY3VzZWQtaGlnaGxpZ2h0LCAtMTApLCAxMDAlKSwgMzAlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0ZW4oQGZvY3VzZWQtaGlnaGxpZ2h0LCA1JSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0ZW4oQGZvY3VzZWQtaGlnaGxpZ2h0LCAxMCUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmxheW91dC1lbGVtZW50LXNlbGVjdGVkIHtcbiAgICAgICAgICAgIEBzZWxlY3RlZC1oaWdobGlnaHQ6ICM2NDg3MjE7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBmYWRlKEBzZWxlY3RlZC1oaWdobGlnaHQsIDglKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC51aS1zb3J0YWJsZS1wbGFjZWhvbGRlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLmxheW91dC1lbGVtZW50LWRyb3B0YXJnZXQge1xuICAgICAgICBAZHJvcHRhcmdldC1oaWdobGlnaHQ6ICM2NDg3MjE7XG4gICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAxMnB4IDZweCBmYWRlKEBkcm9wdGFyZ2V0LWhpZ2hsaWdodCwgNTAlKTtcblxuICAgICAgICAudWktc29ydGFibGUtcGxhY2Vob2xkZXIge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7IC8vIFRvIHJldmVhbC5cbiAgICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDtcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IEBlbGVtZW50LW1pbi1oZWlnaHQgLSAycHg7XG4gICAgICAgICAgICBib3JkZXI6IDJweCBkYXNoZWQgQGRyb3B0YXJnZXQtaGlnaGxpZ2h0ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBmYWRlKEBkcm9wdGFyZ2V0LWhpZ2hsaWdodCwgMTYlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEEgQ1NTIGZpeCBmb3IgbWVkaWEgaXRlbSBlbGVtZW50cy5cbiAgICAubWVkaWEtdGh1bWJuYWlsIHtcbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIG1heC13aWR0aDoxMDAlO1xuICAgICAgICAgICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBpbXBvcnQgXCJWYXJpYWJsZXMubGVzc1wiO1xuXG4ubGF5b3V0LWVkaXRvciB7XG4gICAgLmxheW91dC1jb250YWluZXIge1xuXG4gICAgICAgID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIge1xuXG4gICAgICAgICAgICA+IC5sYXlvdXQtY29udGFpbmVyLWNoaWxkcmVuLXBsYWNlaG9sZGVyIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgbWFyZ2luOiBAY29udGFpbmVyLXBhZGRpbmcgLSAxcHg7XG4gICAgICAgICAgICAgICAgbWluLWhlaWdodDogQGVsZW1lbnQtbWluLWhlaWdodDtcbiAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBkYXNoZWQgZmFkZShAZ3JheS10ZXh0LCA0MCUpO1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiBAY29udGFpbmVyLXBhZGRpbmc7XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiBAZm9udC1zaXplIC0gMTtcbiAgICAgICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMC42O1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPiAubGF5b3V0LWNoaWxkcmVuIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiBAY29udGFpbmVyLXBhZGRpbmc7XG5cbiAgICAgICAgICAgICAgICAvLyBBbGwgYWRqYWNlbnQgbm9uLWNvbnRhaW5lciBjaGlsZHJlbiBuZWVkIHNvbWUgc3BhY2UgYmV0d2Vlbi4uLlxuICAgICAgICAgICAgICAgID4gLmxheW91dC1lbGVtZW50Om5vdCgubGF5b3V0LWNvbnRhaW5lcikgKyAubGF5b3V0LWVsZW1lbnQ6bm90KC5sYXlvdXQtY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IEBjb250ZW50LXNwYWNpbmc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gLi4uIGV4Y2VwdCB3aGVuIGpRdWVyeSBVSSBzb3J0YWJsZSBoZWxwZXIgaXMgdGhlIGZpcnN0IGVsZW1lbnQgKGJlY2F1c2UgdGhhdCBvbmUgaXMgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGFuZCBcImZsb2F0aW5nXCIpLlxuICAgICAgICAgICAgICAgID4gLnVpLXNvcnRhYmxlLWhlbHBlcjpmaXJzdC1jaGlsZCArIC5sYXlvdXQtZWxlbWVudDpub3QoLmxheW91dC1jb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYubGF5b3V0LWNvbnRhaW5lci1lbXB0eSB7XG4gICAgICAgICAgICAgICAgPiAubGF5b3V0LWNvbnRhaW5lci1jaGlsZHJlbi1wbGFjZWhvbGRlciB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7IC8vIFRvIHJldmVhbC5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA+IC5sYXlvdXQtY2hpbGRyZW4ge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmOm5vdCgubGF5b3V0LWVkaXRvci1kcmFnZ2luZykge1xuICAgICAgICAubGF5b3V0LWNvbnRhaW5lci5sYXlvdXQtZWxlbWVudC1mb2N1c2VkID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgPiAubGF5b3V0LWNoaWxkcmVuIHtcbiAgICAgICAgICAgID4gLmxheW91dC1lbGVtZW50Om5vdCgubGF5b3V0LWVsZW1lbnQtYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggZGFzaGVkIGZhZGUoQGdyYXktdGV4dCwgNjAlKTtcblxuICAgICAgICAgICAgICAgID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IC0xcHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA+IC5sYXlvdXQtY29udGFpbmVyICsgLmxheW91dC1jb250YWluZXI6bm90KC5sYXlvdXQtZWxlbWVudC1hY3RpdmUpIHtcbiAgICAgICAgICAgICAgICBib3JkZXItdG9wOiAwO1xuXG4gICAgICAgICAgICAgICAgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiQGltcG9ydCBcIlZhcmlhYmxlcy5sZXNzXCI7XG5cbi5sYXlvdXQtZWRpdG9yIHtcbiAgICAubGF5b3V0LWNhbnZhcyB7XG4gICAgICAgICNkdW1teSB7IC8vIE9ubHkgYWRkZWQgYmVjYXVzZSBXRSBkb2Vzbid0IGNvbXBpbGUgaWYgdGhlcmUgYXJlIG5vIHJ1bGVzLlxuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBpbXBvcnQgXCJWYXJpYWJsZXMubGVzc1wiO1xuXG4ubGF5b3V0LWVkaXRvciB7XG4gICAgLmxheW91dC1yb3cge1xuICAgICAgICAmLmxheW91dC1lbGVtZW50LWZvY3VzZWQ6bm90KC5sYXlvdXQtZWxlbWVudC1kcm9wdGFyZ2V0KSA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1jaGlsZHJlbiB7XG4gICAgICAgICAgICA+IC5sYXlvdXQtZWxlbWVudDpub3QoLmxheW91dC1lbGVtZW50LWFjdGl2ZSkge1xuICAgICAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgZmFkZShAZ3JheS10ZXh0LCA2MCUpICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IC0xcHggIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgID4gLmxheW91dC1lbGVtZW50ICsgLmxheW91dC1lbGVtZW50Om5vdCgubGF5b3V0LWVsZW1lbnQtYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59IiwiQGltcG9ydCBcIlZhcmlhYmxlcy5sZXNzXCI7XG5cbi5sYXlvdXQtZWRpdG9yIHtcbiAgICAubGF5b3V0LWNvbHVtbiB7XG4gICAgICAgID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIge1xuICAgICAgICAgICAgPiAubGF5b3V0LWNvbHVtbi1yZXNpemUtYmFyIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB6LWluZGV4OiAzMDtcbiAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIGN1cnNvcjogY29sLXJlc2l6ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPiAubGF5b3V0LWNvbHVtbi1yZXNpemUtYmFyLWxlZnQge1xuICAgICAgICAgICAgICAgIGxlZnQ6IC02cHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgID4gLmxheW91dC1jb2x1bW4tcmVzaXplLWJhci1yaWdodCB7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IC02cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLmxheW91dC1lbGVtZW50LWZvY3VzZWQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciA+IC5sYXlvdXQtY29sdW1uLXJlc2l6ZS1iYXIge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAaW1wb3J0IFwiVmFyaWFibGVzLmxlc3NcIjtcbkBpbXBvcnQgXCJSZXNldC5sZXNzXCI7XG5cbi5sYXlvdXQtZWRpdG9yIHtcbiAgICAubGF5b3V0LWNvbnRlbnQsIC5sYXlvdXQtaHRtbCB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDFlbTtcblxuICAgICAgICA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIHtcbiAgICAgICAgICAgIC5sYXlvdXQtY29udGVudC1tYXJrdXAge1xuXG4gICAgICAgICAgICAgICAgcGFkZGluZzogMnB4O1xuICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogbm9ybWFsO1xuXG4gICAgICAgICAgICAgICAgLy8gUmVzZXQgdG8gSFRNTDUgVzNDIHN0YW5kYXJkIGRlZmF1bHQgc3R5bGluZyB3aXRoaW4gY29udGVudC5cbiAgICAgICAgICAgICAgICAucmVzZXQoKTtcblxuICAgICAgICAgICAgICAgID4gKjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsgLy8gSW1wb3J0YW50IGJlY2F1c2Ugc2l0ZS5jc3Mgb2YgdGhlIGFkbWluIHRoZW1lIHN0eWxlcyBoZWFkaW5nIG1hcmdpbnMgd2l0aCBhIHZlcnkgaGlnaCBzcGVjaWZpY2l0eS5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA+ICo6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLmxheW91dC1jb250ZW50LWltYWdlLCAmLmxheW91dC1jb250ZW50LXZlY3Rvci1pbWFnZSB7XG4gICAgICAgICAgICA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1jb250ZW50LW1hcmt1cCA+IGltZyB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5pbWctcmVzcG9uc2l2ZSwgLmltZy1yZXNwb25zaXZlIGltZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgfVxufVxuIiwi77u/LnJlc2V0KCkge1xuXG4gICAgKiB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgfVxuXG4gICAgYWRkcmVzcywgYmxvY2txdW90ZSwgY2VudGVyLCBkaXYsIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBmb3JtLFxuICAgIGhlYWRlciwgaHIsIGxlZ2VuZCwgbGlzdGluZywgcCwgcGxhaW50ZXh0LCBwcmUsIHhtcCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIGJsb2NrcXVvdGUsIGZpZ3VyZSwgbGlzdGluZywgcCwgcGxhaW50ZXh0LCBwcmUsIHhtcCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDFlbTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMWVtO1xuICAgIH1cblxuICAgIGJsb2NrcXVvdGUsIGZpZ3VyZSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiA0MHB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDQwcHg7XG4gICAgfVxuXG4gICAgYWRkcmVzcyB7XG4gICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICB9XG5cbiAgICBsaXN0aW5nLCBwbGFpbnRleHQsIHByZSwgeG1wIHtcbiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IHByZTtcbiAgICB9XG5cbiAgICBjaXRlLCBkZm4sIGVtLCBpLCB2YXIge1xuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgfVxuXG4gICAgYiwgc3Ryb25nIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGRlcjtcbiAgICB9XG5cbiAgICBjb2RlLCBrYmQsIHNhbXAsIHR0IHtcbiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgICB9XG5cbiAgICBiaWcge1xuICAgICAgICBmb250LXNpemU6IGxhcmdlcjtcbiAgICB9XG5cbiAgICBzbWFsbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogc21hbGxlcjtcbiAgICB9XG5cbiAgICBzdWIge1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogc3ViO1xuICAgIH1cblxuICAgIHN1cCB7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBzdXBlcjtcbiAgICB9XG5cbiAgICBzdWIsIHN1cCB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG4gICAgICAgIGZvbnQtc2l6ZTogc21hbGxlcjtcbiAgICB9XG5cblxuICAgIHJ1Ynkge1xuICAgICAgICBkaXNwbGF5OiBydWJ5O1xuICAgIH1cblxuICAgIHJiIHtcbiAgICAgICAgZGlzcGxheTogcnVieS1iYXNlO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgIHJ0IHtcbiAgICAgICAgZGlzcGxheTogcnVieS10ZXh0O1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBmb250LXNpemU6IDUwJTtcbiAgICAgICAgZm9udC12YXJpYW50LWVhc3QtYXNpYW46IHJ1Ynk7XG4gICAgICAgIHRleHQtZW1waGFzaXM6IG5vbmU7XG4gICAgfVxuXG4gICAgcmJjIHtcbiAgICAgICAgZGlzcGxheTogcnVieS1iYXNlLWNvbnRhaW5lcjtcbiAgICB9XG5cbiAgICBydGMge1xuICAgICAgICBkaXNwbGF5OiBydWJ5LXRleHQtY29udGFpbmVyO1xuICAgIH1cblxuICAgIHJ1YnksIHJiLCBydCwgcmJjLCBydGMge1xuICAgICAgICB1bmljb2RlLWJpZGk6IGlzb2xhdGU7XG4gICAgfVxuXG5cbiAgICA6bGluayB7XG4gICAgICAgIGNvbG9yOiAjMDAwMEVFO1xuICAgIH1cblxuICAgIDp2aXNpdGVkIHtcbiAgICAgICAgY29sb3I6ICM1NTFBOEI7XG4gICAgfVxuXG4gICAgOmxpbmssIDp2aXNpdGVkIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxuXG4gICAgYTpsaW5rW3JlbH49aGVscF0sIGE6dmlzaXRlZFtyZWx+PWhlbHBdLFxuICAgIGFyZWE6bGlua1tyZWx+PWhlbHBdLCBhcmVhOnZpc2l0ZWRbcmVsfj1oZWxwXSB7XG4gICAgICAgIGN1cnNvcjogaGVscDtcbiAgICB9XG5cbiAgICA6Zm9jdXMge1xuICAgICAgICBvdXRsaW5lOiBhdXRvO1xuICAgIH1cblxuICAgIG1hcmsge1xuICAgICAgICBiYWNrZ3JvdW5kOiB5ZWxsb3c7XG4gICAgICAgIGNvbG9yOiBibGFjaztcbiAgICB9XG4gICAgLyogdGhpcyBjb2xvciBpcyBqdXN0IGEgc3VnZ2VzdGlvbiBhbmQgY2FuIGJlIGNoYW5nZWQgYmFzZWQgb24gaW1wbGVtZW50YXRpb24gZmVlZGJhY2sgKi9cbiAgICBhYmJyW3RpdGxlXSwgYWNyb255bVt0aXRsZV0ge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IGRvdHRlZCB1bmRlcmxpbmU7XG4gICAgfVxuXG4gICAgaW5zLCB1IHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxuXG4gICAgZGVsLCBzLCBzdHJpa2Uge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcbiAgICB9XG5cbiAgICBibGluayB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogYmxpbms7XG4gICAgfVxuXG4gICAgcTo6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogb3Blbi1xdW90ZTtcbiAgICB9XG5cbiAgICBxOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IGNsb3NlLXF1b3RlO1xuICAgIH1cblxuICAgIGJyIHtcbiAgICAgICAgY29udGVudDogJ1xcQSc7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBwcmU7XG4gICAgfVxuICAgIC8qIHRoaXMgYWxzbyBoYXMgYmlkaSBpbXBsaWNhdGlvbnMgKi9cbiAgICBub2JyIHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG5cbiAgICB3YnIge1xuICAgICAgICBjb250ZW50OiAnXFwyMDBCJztcbiAgICB9XG4gICAgLyogdGhpcyBhbHNvIGhhcyBiaWRpIGltcGxpY2F0aW9ucyAqL1xuICAgIG5vYnIgd2JyIHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICB9XG5cbiAgICBhcnRpY2xlLCBhc2lkZSwgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgaGdyb3VwLCBuYXYsIHNlY3Rpb24ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICBoMSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDAuNjdlbTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC42N2VtO1xuICAgICAgICBmb250LXNpemU6IDIuMDBlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxuXG4gICAgaDIge1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjgzZW07XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuODNlbTtcbiAgICAgICAgZm9udC1zaXplOiAxLjUwZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cblxuICAgIGgzIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMS4wMGVtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxLjAwZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xN2VtO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG5cbiAgICBoNCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDEuMzNlbTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMS4zM2VtO1xuICAgICAgICBmb250LXNpemU6IDEuMDBlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxuXG4gICAgaDUge1xuICAgICAgICBtYXJnaW4tdG9wOiAxLjY3ZW07XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEuNjdlbTtcbiAgICAgICAgZm9udC1zaXplOiAwLjgzZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cblxuICAgIGg2IHtcbiAgICAgICAgbWFyZ2luLXRvcDogMi4zM2VtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyLjMzZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMC42N2VtO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG5cbiAgICBkaXIsIGRkLCBkbCwgZHQsIG9sLCB1bCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIGxpIHtcbiAgICAgICAgZGlzcGxheTogbGlzdC1pdGVtO1xuICAgIH1cblxuICAgIGRpciwgZGwsIG9sLCB1bCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDFlbTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMWVtO1xuICAgIH1cblxuICAgICAgICBkaXIgZGlyLCBkaXIgZGwsIGRpciBvbCwgZGlyIHVsLFxuICAgICAgICBkbCBkaXIsIGRsIGRsLCBkbCBvbCwgZGwgdWwsXG4gICAgICAgIG9sIGRpciwgb2wgZGwsIG9sIG9sLCBvbCB1bCxcbiAgICAgICAgdWwgZGlyLCB1bCBkbCwgdWwgb2wsIHVsIHVsIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB9XG5cbiAgICBkZCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiA0MHB4O1xuICAgIH1cbiAgICAvKiBMVFItc3BlY2lmaWM6IHVzZSAnbWFyZ2luLXJpZ2h0JyBmb3IgcnRsIGVsZW1lbnRzICovXG4gICAgZGlyLCBvbCwgdWwge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDQwcHg7XG4gICAgfVxuICAgIC8qIExUUi1zcGVjaWZpYzogdXNlICdwYWRkaW5nLXJpZ2h0JyBmb3IgcnRsIGVsZW1lbnRzICovXG4gICAgb2wge1xuICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IGRlY2ltYWw7XG4gICAgfVxuXG4gICAgZGlyLCB1bCB7XG4gICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogZGlzYztcbiAgICB9XG5cbiAgICAgICAgZGlyIGRpciwgZGlyIHVsLFxuICAgICAgICBvbCBkaXIsIG9sIHVsLFxuICAgICAgICB1bCBkaXIsIHVsIHVsIHtcbiAgICAgICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogY2lyY2xlO1xuICAgICAgICB9XG5cbiAgICAgICAgICAgIGRpciBkaXIgZGlyLCBkaXIgZGlyIHVsLFxuICAgICAgICAgICAgZGlyIG9sIGRpciwgZGlyIG9sIHVsLFxuICAgICAgICAgICAgZGlyIHVsIGRpciwgZGlyIHVsIHVsLFxuICAgICAgICAgICAgb2wgZGlyIGRpciwgb2wgZGlyIHVsLFxuICAgICAgICAgICAgb2wgb2wgZGlyLCBvbCBvbCB1bCxcbiAgICAgICAgICAgIG9sIHVsIGRpciwgb2wgdWwgdWwsXG4gICAgICAgICAgICB1bCBkaXIgZGlyLCB1bCBkaXIgdWwsXG4gICAgICAgICAgICB1bCBvbCBkaXIsIHVsIG9sIHVsLFxuICAgICAgICAgICAgdWwgdWwgZGlyLCB1bCB1bCB1bCB7XG4gICAgICAgICAgICAgICAgbGlzdC1zdHlsZS10eXBlOiBzcXVhcmU7XG4gICAgICAgICAgICB9XG5cbiAgICB0YWJsZSB7XG4gICAgICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIH1cblxuICAgIGNhcHRpb24ge1xuICAgICAgICBkaXNwbGF5OiB0YWJsZS1jYXB0aW9uO1xuICAgIH1cblxuICAgIGNvbGdyb3VwLCBjb2xncm91cFtoaWRkZW5dIHtcbiAgICAgICAgZGlzcGxheTogdGFibGUtY29sdW1uLWdyb3VwO1xuICAgIH1cblxuICAgIGNvbCwgY29sW2hpZGRlbl0ge1xuICAgICAgICBkaXNwbGF5OiB0YWJsZS1jb2x1bW47XG4gICAgfVxuXG4gICAgdGhlYWQsIHRoZWFkW2hpZGRlbl0ge1xuICAgICAgICBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7XG4gICAgfVxuXG4gICAgdGJvZHksIHRib2R5W2hpZGRlbl0ge1xuICAgICAgICBkaXNwbGF5OiB0YWJsZS1yb3ctZ3JvdXA7XG4gICAgfVxuXG4gICAgdGZvb3QsIHRmb290W2hpZGRlbl0ge1xuICAgICAgICBkaXNwbGF5OiB0YWJsZS1mb290ZXItZ3JvdXA7XG4gICAgfVxuXG4gICAgdHIsIHRyW2hpZGRlbl0ge1xuICAgICAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG4gICAgfVxuXG4gICAgdGQsIHRoLCB0ZFtoaWRkZW5dLCB0aFtoaWRkZW5dIHtcbiAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICB9XG5cbiAgICAgICAgY29sZ3JvdXBbaGlkZGVuXSwgY29sW2hpZGRlbl0sIHRoZWFkW2hpZGRlbl0sIHRib2R5W2hpZGRlbl0sXG4gICAgICAgIHRmb290W2hpZGRlbl0sIHRyW2hpZGRlbl0sIHRkW2hpZGRlbl0sIHRoW2hpZGRlbl0ge1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogY29sbGFwc2U7XG4gICAgICAgIH1cblxuICAgIHRhYmxlIHtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgYm9yZGVyLXNwYWNpbmc6IDJweDtcbiAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTtcbiAgICAgICAgdGV4dC1pbmRlbnQ6IGluaXRpYWw7XG4gICAgfVxuXG4gICAgdGQsIHRoIHtcbiAgICAgICAgcGFkZGluZzogMXB4O1xuICAgIH1cblxuICAgIHRoIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxuXG4gICAgdGhlYWQsIHRib2R5LCB0Zm9vdCwgdGFibGUgPiB0ciB7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuXG4gICAgdHIsIHRkLCB0aCB7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBpbmhlcml0O1xuICAgIH1cblxuICAgIHRhYmxlLCB0ZCwgdGgge1xuICAgICAgICBib3JkZXItY29sb3I6IGdyYXk7XG4gICAgfVxuXG4gICAgdGhlYWQsIHRib2R5LCB0Zm9vdCwgdHIge1xuICAgICAgICBib3JkZXItY29sb3I6IGluaGVyaXQ7XG4gICAgfVxuICAgIC8qdGFibGVbcnVsZXM9bm9uZSBpXSwgdGFibGVbcnVsZXM9Z3JvdXBzIGldLCB0YWJsZVtydWxlcz1yb3dzIGldLFxudGFibGVbcnVsZXM9Y29scyBpXSwgdGFibGVbcnVsZXM9YWxsIGldLCB0YWJsZVtmcmFtZT12b2lkIGldLFxudGFibGVbZnJhbWU9YWJvdmUgaV0sIHRhYmxlW2ZyYW1lPWJlbG93IGldLCB0YWJsZVtmcmFtZT1oc2lkZXMgaV0sXG50YWJsZVtmcmFtZT1saHMgaV0sIHRhYmxlW2ZyYW1lPXJocyBpXSwgdGFibGVbZnJhbWU9dnNpZGVzIGldLFxudGFibGVbZnJhbWU9Ym94IGldLCB0YWJsZVtmcmFtZT1ib3JkZXIgaV0sXG50YWJsZVtydWxlcz1ub25lIGldID4gdHIgPiB0ZCwgdGFibGVbcnVsZXM9bm9uZSBpXSA+IHRyID4gdGgsXG50YWJsZVtydWxlcz1ncm91cHMgaV0gPiB0ciA+IHRkLCB0YWJsZVtydWxlcz1ncm91cHMgaV0gPiB0ciA+IHRoLFxudGFibGVbcnVsZXM9cm93cyBpXSA+IHRyID4gdGQsIHRhYmxlW3J1bGVzPXJvd3MgaV0gPiB0ciA+IHRoLFxudGFibGVbcnVsZXM9Y29scyBpXSA+IHRyID4gdGQsIHRhYmxlW3J1bGVzPWNvbHMgaV0gPiB0ciA+IHRoLFxudGFibGVbcnVsZXM9YWxsIGldID4gdHIgPiB0ZCwgdGFibGVbcnVsZXM9YWxsIGldID4gdHIgPiB0aCxcbnRhYmxlW3J1bGVzPW5vbmUgaV0gPiB0aGVhZCA+IHRyID4gdGQsIHRhYmxlW3J1bGVzPW5vbmUgaV0gPiB0aGVhZCA+IHRyID4gdGgsXG50YWJsZVtydWxlcz1ncm91cHMgaV0gPiB0aGVhZCA+IHRyID4gdGQsIHRhYmxlW3J1bGVzPWdyb3VwcyBpXSA+IHRoZWFkID4gdHIgPiB0aCxcbnRhYmxlW3J1bGVzPXJvd3MgaV0gPiB0aGVhZCA+IHRyID4gdGQsIHRhYmxlW3J1bGVzPXJvd3MgaV0gPiB0aGVhZCA+IHRyID4gdGgsXG50YWJsZVtydWxlcz1jb2xzIGldID4gdGhlYWQgPiB0ciA+IHRkLCB0YWJsZVtydWxlcz1jb2xzIGldID4gdGhlYWQgPiB0ciA+IHRoLFxudGFibGVbcnVsZXM9YWxsIGldID4gdGhlYWQgPiB0ciA+IHRkLCB0YWJsZVtydWxlcz1hbGwgaV0gPiB0aGVhZCA+IHRyID4gdGgsXG50YWJsZVtydWxlcz1ub25lIGldID4gdGJvZHkgPiB0ciA+IHRkLCB0YWJsZVtydWxlcz1ub25lIGldID4gdGJvZHkgPiB0ciA+IHRoLFxudGFibGVbcnVsZXM9Z3JvdXBzIGldID4gdGJvZHkgPiB0ciA+IHRkLCB0YWJsZVtydWxlcz1ncm91cHMgaV0gPiB0Ym9keSA+IHRyID4gdGgsXG50YWJsZVtydWxlcz1yb3dzIGldID4gdGJvZHkgPiB0ciA+IHRkLCB0YWJsZVtydWxlcz1yb3dzIGldID4gdGJvZHkgPiB0ciA+IHRoLFxudGFibGVbcnVsZXM9Y29scyBpXSA+IHRib2R5ID4gdHIgPiB0ZCwgdGFibGVbcnVsZXM9Y29scyBpXSA+IHRib2R5ID4gdHIgPiB0aCxcbnRhYmxlW3J1bGVzPWFsbCBpXSA+IHRib2R5ID4gdHIgPiB0ZCwgdGFibGVbcnVsZXM9YWxsIGldID4gdGJvZHkgPiB0ciA+IHRoLFxudGFibGVbcnVsZXM9bm9uZSBpXSA+IHRmb290ID4gdHIgPiB0ZCwgdGFibGVbcnVsZXM9bm9uZSBpXSA+IHRmb290ID4gdHIgPiB0aCxcbnRhYmxlW3J1bGVzPWdyb3VwcyBpXSA+IHRmb290ID4gdHIgPiB0ZCwgdGFibGVbcnVsZXM9Z3JvdXBzIGldID4gdGZvb3QgPiB0ciA+IHRoLFxudGFibGVbcnVsZXM9cm93cyBpXSA+IHRmb290ID4gdHIgPiB0ZCwgdGFibGVbcnVsZXM9cm93cyBpXSA+IHRmb290ID4gdHIgPiB0aCxcbnRhYmxlW3J1bGVzPWNvbHMgaV0gPiB0Zm9vdCA+IHRyID4gdGQsIHRhYmxlW3J1bGVzPWNvbHMgaV0gPiB0Zm9vdCA+IHRyID4gdGgsXG50YWJsZVtydWxlcz1hbGwgaV0gPiB0Zm9vdCA+IHRyID4gdGQsIHRhYmxlW3J1bGVzPWFsbCBpXSA+IHRmb290ID4gdHIgPiB0aCB7XG4gICAgYm9yZGVyLWNvbG9yOiBibGFjaztcbn0qL1xuICAgIGlucHV0LCBzZWxlY3QsIG9wdGlvbiwgb3B0Z3JvdXAsIGJ1dHRvbiwgdGV4dGFyZWEsIGtleWdlbiB7XG4gICAgICAgIHRleHQtaW5kZW50OiBpbml0aWFsO1xuICAgIH1cblxuICAgIHRleHRhcmVhIHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICAgIH1cblxuICAgIGlucHV0W3R5cGU9XCJyYWRpb1wiXSwgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLCBpbnB1dFt0eXBlPVwicmVzZXRcIl0sIGlucHV0W3R5cGU9XCJidXR0b25cIl0sXG4gICAgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSwgc2VsZWN0LCBidXR0b24ge1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIH1cblxuICAgIGlucHV0W3R5cGU9XCJidXR0b25cIl0sIGJ1dHRvbiB7XG4gICAgICAgIHBhZGRpbmc6IDAuM2VtIDAuNWVtO1xuICAgIH1cblxuICAgIGhyIHtcbiAgICAgICAgY29sb3I6IGdyYXk7XG4gICAgICAgIGJvcmRlci1zdHlsZTogaW5zZXQ7XG4gICAgICAgIGJvcmRlci13aWR0aDogMXB4O1xuICAgICAgICBtYXJnaW46IDAuNWVtIGF1dG87XG4gICAgfVxuXG4gICAgZmllbGRzZXQge1xuICAgICAgICBtYXJnaW4tbGVmdDogMnB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDJweDtcbiAgICAgICAgYm9yZGVyOiBncm9vdmUgMnB4IFRocmVlREZhY2U7XG4gICAgICAgIHBhZGRpbmc6IDAuMzVlbSAwLjYyNWVtIDAuNzVlbTtcbiAgICB9XG5cbiAgICBsZWdlbmQge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDJweDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMnB4O1xuICAgIH1cbn1cbiIsIkBpbXBvcnQgXCJWYXJpYWJsZXMubGVzc1wiO1xyXG5cclxuLmxheW91dC1lZGl0b3Ige1xyXG4gICAgPiAubGF5b3V0LXRvb2xib3gtd3JhcHBlciB7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiBAY29udGFpbmVyLXBhZGRpbmc7XHJcbiAgICAgICAgd2lkdGg6IDIyMHB4O1xyXG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xyXG5cclxuICAgICAgICA+IC5sYXlvdXQtdG9vbGJveCB7XHJcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIEBncmF5LWJvcmRlcjtcclxuICAgICAgICAgICAgd2lkdGg6IDIyMHB4O1xyXG4gICAgICAgICAgICBtaW4taGVpZ2h0OiA0MDBweDtcclxuICAgICAgICAgICAgcGFkZGluZzogQGNvbnRhaW5lci1wYWRkaW5nIC8gMjtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQGdyYXktYmc7XHJcblxyXG4gICAgICAgICAgICAmLnN0aWNreS10b3Age1xyXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICAgICAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgICAgICAgICAgbWF4LWhlaWdodDogMTAwJTtcclxuICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICYuc3RpY2t5LWJvdHRvbSB7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgICBib3R0b206IDA7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC5sYXlvdXQtdG9vbGJveC1ncm91cCB7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiBAY29udGFpbmVyLXBhZGRpbmc7XHJcblxyXG4gICAgICAgICAgICAgICAgLmxheW91dC10b29sYm94LWdyb3VwLWhlYWRpbmcge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IEBjb250YWluZXItcGFkZGluZyAvIDM7XHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IEBjb250YWluZXItcGFkZGluZyAvIDM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQ6IG5vcm1hbCBub3JtYWwgbm9ybWFsIDE0cHgvMSBGb250QXdlc29tZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcIlxcZjBkN1wiO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAmLmNvbGxhcHNlZCB7XHJcbiAgICAgICAgICAgICAgICAgICAgLmxheW91dC10b29sYm94LWdyb3VwLWhlYWRpbmc6YmVmb3JlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcXGYwZGFcIjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC5sYXlvdXQtdG9vbGJveC1pdGVtcyB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC5sYXlvdXQtdG9vbGJveC1zZWN0aW9uICsgLmxheW91dC10b29sYm94LXNlY3Rpb24ge1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IEBjb250YWluZXItcGFkZGluZyAvIDM7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLmxheW91dC10b29sYm94LWl0ZW0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIEBncmF5LWJvcmRlcjtcclxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IChAY29udGFpbmVyLXBhZGRpbmcgLSAzKSBAY29udGFpbmVyLXBhZGRpbmc7XHJcbiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTZweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udDogbm9ybWFsIG5vcm1hbCBub3JtYWwgMTRweC8xIEZvbnRBd2Vzb21lO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgKyAubGF5b3V0LXRvb2xib3gtaXRlbSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IEBjb250YWluZXItcGFkZGluZyAvIDM7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICsgLmxheW91dC10b29sYm94LWdyb3VwIHtcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiBAY29udGFpbmVyLXBhZGRpbmcgLyAyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIkBpbXBvcnQgXCJWYXJpYWJsZXMubGVzc1wiO1xuXG4ubGF5b3V0LWVkaXRvciB7XG4gICAgLmxheW91dC1wb3B1cCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7IC8vIFNob3duIG9ubHkgaW4gYWN0aXZlIG9yIGZvY3VzZWQgc3RhdGVzLlxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgLW1vei1ib3gtc2hhZG93OiAzcHggM3B4IDExcHggMCByZ2JhKDUwLCA1MCwgNTAsIDAuNSk7XG4gICAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogM3B4IDNweCAxMXB4IDAgcmdiYSg1MCwgNTAsIDUwLCAwLjUpO1xuICAgICAgICBib3gtc2hhZG93OiAzcHggM3B4IDExcHggMCByZ2JhKDUwLCA1MCwgNTAsIDAuNSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIEBncmF5LWJvcmRlcjtcbiAgICAgICAgcGFkZGluZzogMnB4IDA7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgIHotaW5kZXg6IDIwO1xuICAgICAgICBjb2xvcjogQGdyYXktdGV4dDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBsaW5lLWhlaWdodDogbm9ybWFsO1xuXG4gICAgICAgIC5sYXlvdXQtcG9wdXAtZmxleCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgcGFkZGluZzogMnB4IDVweDtcblxuICAgICAgICAgICAgLmxheW91dC1wb3B1cC1jb2x1bW4gKyAubGF5b3V0LXBvcHVwLWNvbHVtbiB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgICAgICAgICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIGZhZGUoZ3JheSwgMTUlKTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDRweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5sYXlvdXQtcG9wdXAtaXRlbSB7XG4gICAgICAgICAgICBwYWRkaW5nOiA0cHggNnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmxheW91dC1wb3B1cC1sYWJlbCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDAuOWVtO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICBjb2xvcjogQGdyYXktdGV4dDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5sYXlvdXQtcG9wdXAtYWN0aW9uOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBncmF5LWJnO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmxheW91dC1wb3B1cC1pbnB1dCB7XG4gICAgICAgICAgICA+IGxhYmVsIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOWVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 */ \ No newline at end of file +/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkVkaXRvci5sZXNzIiwiTGF5b3V0RWRpdG9yLmNzcyIsIkVsZW1lbnQubGVzcyIsIkNvbnRhaW5lci5sZXNzIiwiQ2FudmFzLmxlc3MiLCJSb3cubGVzcyIsIkNvbHVtbi5sZXNzIiwiQ29udGVudC5sZXNzIiwiUmVzZXQubGVzcyIsIlRvb2xib3gubGVzcyIsIlBvcHVwLmxlc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDSSxzQkFBQTtFQUFBLHFCQUFBO0VBQUEsY0FBQTtFQUNBLGdCQUFBO0VBQ0EsZ0JBQUE7RUFDQSw2QkFBQTtNQUFBLHdCQUFBO1VBQUEscUJBQUE7Q0NESDtBREhEO0VBT1EscUJBQUE7TUFBQSxxQkFBQTtVQUFBLGFBQUE7RUFDQSwwQkFBQTtFQUNBLDBCQUFBO0NDRFA7QURSRDtFQVlZLGNBQUE7RUFDQSxvQkFBQTtFQUNBLGlCQUFBO0NDRFg7QURiRDtFQWlCZ0IsdUJBQUE7Q0NEZjtBRGhCRDtFQXVCUSxvQkFBQTtDQ0pQOztBQ25CRDtFQUVRLG1CQUFBO0VBQ0EsY0FBQTtFQUNBLGdCQUFBO0VBQ0EsaUJBQUE7RUFDQSxXQUFBO0NEcUJQO0FDbEJPO0VBQ0ksZUFBQTtDRG9CWDtBQzlCRDtFQWVnQixjQUFBO0VBQ0EsbUJBQUE7RUFDQSxVQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxlQUFBO0VBQ0EsaUJBQUE7RUFDQSxvQkFBQTtFQUNBLGtCQUFBO0VBQ0EsdUJBQUE7Q0RrQmY7QUMxQ0Q7RUEyQm9CLHNCQUFBO0VBQ0EsYUFBQTtFQUNBLG1CQUFBO0NEa0JuQjtBQy9DRDtFQWlDb0IsZ0JBQUE7Q0RpQm5CO0FDbEREO0VBcUNvQixjQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsbUJBQUE7Q0RnQm5CO0FDeEREO0VBNkNnQixXQUFBO0VBQ0EsV0FBQTtDRGNmO0FDNUREO0VBcURRLGlCQUFBO0NEVVA7QUNQRzs7RUFHUSxrQkFBQTtFQUNBLG9CQUFBO0NEUVg7QUNaRzs7RUFPWSxhQUFBO0NEU2Y7QUNoQkc7RUFjUSx1Q0FBQTtDREtYO0FDbkJHO0VBaUJZLGVBQUE7RUFDQSxZQUFBO0VBQ0EsMkNBQUE7Q0RLZjtBQ3hCRztFQTJCUSxzQkFBQTtDREFYO0FDM0JHO0VBOEJZLGVBQUE7RUFDQSwwQkFBQTtFQUNBLGVBQUE7Q0RBZjtBQ2hDRztFQW1DZ0Isc0JBQUE7Q0RBbkI7QUNDbUI7RUFDSSwwQkFBQTtDREN2QjtBQ0VtQjtFQUNJLGdCQUFBO0VBQ0EsZ0NBQUE7Q0RBdkI7QUNFdUI7RUFDSSwwQkFBQTtDREEzQjtBQ0ltQjtFQUNJLGVBQUE7RUFDQSwwQkFBQTtDREZ2QjtBQ0l1QjtFQUNJLDBCQUFBO0NERjNCO0FDcERHO0VBK0RRLDJDQUFBO0NEUlg7QUMvR0Q7RUE0SFEsY0FBQTtDRFZQO0FDbEhEO0VBaUlRLHVEQUFBO0NEWlA7QUNySEQ7RUFvSVksZUFBQTtFQUNBLCtCQUFBO0VBQ0EsaUJBQUE7RUFDQSxzQ0FBQTtFQUNBLDJDQUFBO0NEWlg7QUM1SEQ7RUErSVksZ0JBQUE7RUFDQSxpQkFBQTtDRGhCWDs7QUVoSUQ7RUFNZ0IsY0FBQTtFQUNBLCtCQUFBO01BQUEsMkJBQUE7VUFBQSx1QkFBQTtFQUNBLGFBQUE7RUFDQSxpQkFBQTtFQUNBLDRDQUFBO0VBQ0EsbUJBQUE7RUFDQSxjQUFBO0VBQ0EsZ0NBQUE7TUFBQSxzQkFBQTtVQUFBLHdCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxtQkFBQTtFQUNBLGFBQUE7RUFDQSxtQkFBQTtDRjhIZjtBRS9JRDtFQXFCZ0IsY0FBQTtDRjZIZjtBRWxKRDtFQXlCb0IsaUJBQUE7Q0Y0SG5CO0FFckpEO0VBOEJvQixjQUFBO0NGMEhuQjtBRXRIVztFQUVRLHNCQUFBO0VBQUEscUJBQUE7RUFBQSxjQUFBO0NGdUhuQjtBRXpIVztFQU1RLG1CQUFBO0VBQ0EsT0FBQTtFQUNBLFNBQUE7RUFDQSxVQUFBO0VBQ0EsUUFBQTtDRnNIbkI7QUVoSEc7RUFHWSw0Q0FBQTtDRmdIZjtBRW5IRztFQU1nQixhQUFBO0NGZ0huQjtBRXRIRztFQVdZLGNBQUE7Q0Y4R2Y7QUV6SEc7RUFjZ0IsY0FBQTtDRjhHbkI7O0FHOUtEO0VBR1ksY0FBQTtDSCtLWDs7QUloTE87RUFFUSwyREFBQTtDSmtMZjtBSXBMTztFQUlZLDRCQUFBO0NKbUxuQjtBSXZMTztFQVNRLDBCQUFBO0NKaUxmO0FJMUxPO0VBV1ksMEJBQUE7Q0prTG5COztBSy9MRDtFQUlnQixjQUFBO0VBQ0EsbUJBQUE7RUFDQSxZQUFBO0VBQ0EsT0FBQTtFQUNBLFlBQUE7RUFDQSxhQUFBO0VBQ0EsbUJBQUE7Q0wrTGY7QUt6TUQ7RUFjZ0IsV0FBQTtDTDhMZjtBSzVNRDtFQWtCZ0IsWUFBQTtDTDZMZjtBS3pMTztFQUNJLGVBQUE7Q0wyTFg7O0FNak5EOztFQUVRLGdCQUFBO0NOb05QO0FNdE5EOztFQU9nQixhQUFBO0VBQ0EsbUJBQUE7RUFDQSxvQkFBQTtFTm1OZCx5RkFBeUY7RUFDekYscUNBQXFDO0VBQ3JDLHFDQUFxQztFQUNyQyx1REFBdUQ7RUFDdkQsd0RBQXdEO0VBQ3hEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCQztDQUNGO0FNNVBEOztFQ0FRLFVBQUE7RUFDQSxXQUFBO0VBQ0Esd0JBQUE7Q1BnUVA7QU1sUUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VDT1EsZUFBQTtDUDZSUDtBTXBTRDs7Ozs7Ozs7Ozs7Ozs7RUNXUSxnQkFBQTtFQUNBLG1CQUFBO0NQeVNQO0FNclREOzs7O0VDZ0JRLGtCQUFBO0VBQ0EsbUJBQUE7Q1AyU1A7QU01VEQ7O0VDcUJRLG1CQUFBO0NQMlNQO0FNaFVEOzs7Ozs7OztFQ3lCUSx1QkFBQTtFQUNBLGlCQUFBO0NQaVRQO0FNM1VEOzs7Ozs7Ozs7O0VDOEJRLG1CQUFBO0NQeVRQO0FNdlZEOzs7O0VDa0NRLG9CQUFBO0NQMlRQO0FNN1ZEOzs7Ozs7OztFQ3NDUSx1QkFBQTtDUGlVUDtBTXZXRDs7RUMwQ1Esa0JBQUE7Q1BpVVA7QU0zV0Q7O0VDOENRLG1CQUFBO0NQaVVQO0FNL1dEOztFQ2tEUSxvQkFBQTtDUGlVUDtBTW5YRDs7RUNzRFEsc0JBQUE7Q1BpVVA7QU12WEQ7Ozs7RUMwRFEsb0JBQUE7RUFDQSxtQkFBQTtDUG1VUDtBTTlYRDs7RUNnRVEsY0FBQTtDUGtVUDtBTWxZRDs7RUNvRVEsbUJBQUE7RUFDQSxvQkFBQTtDUGtVUDtBTXZZRDs7RUN5RVEsbUJBQUE7RUFDQSxvQkFBQTtFQUNBLGVBQUE7RUFDQSw4QkFBQTtFQUNBLDRCQUFBO1VBQUEsb0JBQUE7Q1BrVVA7QU0vWUQ7O0VDaUZRLDZCQUFBO0NQa1VQO0FNblpEOztFQ3FGUSw2QkFBQTtDUGtVUDtBTXZaRDs7Ozs7Ozs7OztFQ3lGUSxzQkFBQTtDUDBVUDtBTW5hRDs7RUM4RlEsZUFBQTtDUHlVUDtBTXZhRDs7RUNrR1EsZUFBQTtDUHlVUDtBTTNhRDs7OztFQ3NHUSwyQkFBQTtDUDJVUDtBTWpiRDs7Ozs7Ozs7RUMyR1EsYUFBQTtDUGdWUDtBTTNiRDs7RUMrR1EsY0FBQTtDUGdWUDtBTS9iRDs7RUNtSFEsbUJBQUE7RUFDQSxhQUFBO0NQZ1ZQO0FNcGNEOzs7O0VDd0hRLGtDQUFBO0NQa1ZQO0FNMWNEOzs7O0VDNEhRLDJCQUFBO0NQb1ZQO0FNaGREOzs7Ozs7RUNnSVEsOEJBQUE7Q1B3VlA7QU14ZEQ7O0VDb0lRLHVCQUFBO0NQd1ZQO0FNNWREOztFQ3dJUSxvQkFBQTtDUHdWUDtBTWhlRDs7RUM0SVEscUJBQUE7Q1B3VlA7QU1wZUQ7O0VDZ0pRLGNBQUE7RUFDQSxpQkFBQTtDUHdWUDtBTXplRDs7RUNxSlEsb0JBQUE7Q1B3VlA7QU03ZUQ7O0VDeUpRLGlCQUFBO0NQd1ZQO0FNamZEOztFQzZKUSxvQkFBQTtDUHdWUDtBTXJmRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQ2lLUSxlQUFBO0NQNFdQO0FNN2dCRDs7RUNxS1EsbUJBQUE7RUFDQSxzQkFBQTtFQUNBLGtCQUFBO0VBQ0Esa0JBQUE7Q1A0V1A7QU1waEJEOztFQzRLUSxtQkFBQTtFQUNBLHNCQUFBO0VBQ0Esa0JBQUE7RUFDQSxrQkFBQTtDUDRXUDtBTTNoQkQ7O0VDbUxRLG1CQUFBO0VBQ0Esc0JBQUE7RUFDQSxrQkFBQTtFQUNBLGtCQUFBO0NQNFdQO0FNbGlCRDs7RUMwTFEsbUJBQUE7RUFDQSxzQkFBQTtFQUNBLGtCQUFBO0VBQ0Esa0JBQUE7Q1A0V1A7QU16aUJEOztFQ2lNUSxtQkFBQTtFQUNBLHNCQUFBO0VBQ0Esa0JBQUE7RUFDQSxrQkFBQTtDUDRXUDtBTWhqQkQ7O0VDd01RLG1CQUFBO0VBQ0Esc0JBQUE7RUFDQSxrQkFBQTtFQUNBLGtCQUFBO0NQNFdQO0FNdmpCRDs7Ozs7Ozs7Ozs7O0VDK01RLGVBQUE7Q1BzWFA7QU1ya0JEOztFQ21OUSxtQkFBQTtDUHNYUDtBTXprQkQ7Ozs7Ozs7O0VDdU5RLGdCQUFBO0VBQ0EsbUJBQUE7Q1A0WFA7QU1wbEJEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQytOWSxjQUFBO0VBQ0EsaUJBQUE7Q1B1Wlg7QU12bkJEOztFQ29PUSxrQkFBQTtDUHVaUDtBTTNuQkQ7Ozs7OztFQ3dPUSxtQkFBQTtDUDJaUDtBTW5vQkQ7O0VDNE9RLHlCQUFBO0NQMlpQO0FNdm9CRDs7OztFQ2dQUSxzQkFBQTtDUDZaUDtBTTdvQkQ7Ozs7Ozs7Ozs7OztFQ3NQWSx3QkFBQTtDUHFhWDtBTTNwQkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQ2tRZ0Isd0JBQUE7Q1ArYmY7QU1qc0JEOztFQ3NRUSxlQUFBO0NQK2JQO0FNcnNCRDs7RUMwUVEsdUJBQUE7Q1ArYlA7QU16c0JEOzs7O0VDOFFRLDRCQUFBO0NQaWNQO0FNL3NCRDs7OztFQ2tSUSxzQkFBQTtDUG1jUDtBTXJ0QkQ7Ozs7RUNzUlEsNEJBQUE7Q1BxY1A7QU0zdEJEOzs7O0VDMFJRLHlCQUFBO0NQdWNQO0FNanVCRDs7OztFQzhSUSw0QkFBQTtDUHljUDtBTXZ1QkQ7Ozs7RUNrU1EsbUJBQUE7Q1AyY1A7QU03dUJEOzs7Ozs7OztFQ3NTUSxvQkFBQTtDUGlkUDtBTXZ2QkQ7Ozs7Ozs7Ozs7Ozs7Ozs7RUMyU1kscUJBQUE7Q1A4ZFg7QU16d0JEOztFQytTUSx1QkFBQTtFQUNBLG9CQUFBO0VBQ0EsMEJBQUE7RUFDQSxxQkFBQTtDUDhkUDtBTWh4QkQ7Ozs7RUNzVFEsYUFBQTtDUGdlUDtBTXR4QkQ7O0VDMFRRLGtCQUFBO0NQZ2VQO0FNMXhCRDs7Ozs7Ozs7RUM4VFEsdUJBQUE7Q1BzZVA7QU1weUJEOzs7Ozs7RUNrVVEsd0JBQUE7Q1AwZVA7QU01eUJEOzs7Ozs7RUNzVVEsbUJBQUE7Q1A4ZVA7QU1wekJEOzs7Ozs7OztFQzBVUSxzQkFBQTtDUG9mUDtBTTl6QkQ7Ozs7Ozs7Ozs7Ozs7O0VDd1dRLHFCQUFBO0NQc2VQO0FNOTBCRDs7RUM0V1Esc0JBQUE7Q1BzZVA7QU1sMUJEOzs7Ozs7Ozs7Ozs7OztFQ2lYUSx1QkFBQTtDUGlmUDtBTWwyQkQ7Ozs7RUNxWFEscUJBQUE7Q1BtZlA7QU14MkJEOztFQ3lYUSxZQUFBO0VBQ0Esb0JBQUE7RUFDQSxrQkFBQTtFQUNBLG1CQUFBO0NQbWZQO0FNLzJCRDs7RUNnWVEsaUJBQUE7RUFDQSxrQkFBQTtFQUNBLDhCQUFBO0VBQ0EsK0JBQUE7Q1BtZlA7QU10M0JEOztFQ3VZUSxrQkFBQTtFQUNBLG1CQUFBO0NQbWZQO0FNMzNCRDs7RUFlb0IseUJBQUE7Q05nM0JuQjtBTS8zQkQ7O0VBbUJvQiw0QkFBQTtDTmczQm5CO0FNMzJCTzs7OztFQUVRLGVBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxhQUFBO0NOKzJCZjtBTTU0QkQ7O0VBbUNRLGVBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxhQUFBO0NONjJCUDs7QVFwNUJEO0VBRVEsbUJBQUE7RUFDQSxrQkFBQTtFQUNBLGFBQUE7RUFDQSx1QkFBQTtNQUFBLHFCQUFBO1VBQUEsZUFBQTtDUnM1QlA7QVEzNUJEO0VBUVksMEJBQUE7RUFDQSxhQUFBO0VBQ0Esa0JBQUE7RUFDQSxhQUFBO0VBQ0EsMEJBQUE7Q1JzNUJYO0FRcDVCVztFQUNJLGdCQUFBO0VBQ0EsT0FBQTtFQUNBLGlCQUFBO0VBQ0EsaUJBQUE7Q1JzNUJmO0FRbjVCVztFQUNJLG1CQUFBO0VBQ0EsVUFBQTtDUnE1QmY7QVE1NkJEO0VBMkJnQixpQkFBQTtDUm81QmY7QVEvNkJEO0VBOEJvQixlQUFBO0VBQ0EsbUJBQUE7RUFDQSxzQkFBQTtDUm81Qm5CO0FRbDVCbUI7RUFDSSxzQkFBQTtFQUNBLFlBQUE7RUFDQSxrQkFBQTtFQUNBLDhDQUFBO0VBQ0EsbUJBQUE7RUFDQSxpQkFBQTtDUm81QnZCO0FRaDVCZTtFQUVRLGlCQUFBO0NSaTVCdkI7QVFuNUJlO0VBTVEsY0FBQTtDUmc1QnZCO0FRbDhCRDtFQXVEb0IsZ0JBQUE7Q1I4NEJuQjtBUXI4QkQ7RUEyRG9CLDBCQUFBO0VBQ0EsdUJBQUE7RUFDQSxrQkFBQTtFQUNBLGdCQUFBO0NSNjRCbkI7QVEzOEJEO0VBaUV3QixzQkFBQTtFQUNBLFlBQUE7RUFDQSw4Q0FBQTtDUjY0QnZCO0FRaDlCRDtFQXVFd0IsZ0JBQUE7Q1I0NEJ2QjtBUW45QkQ7RUE0RW9CLGdCQUFBO0NSMDRCbkI7O0FTdDlCRDtFQUVRLGNBQUE7RUFDQSxtQkFBQTtFQUNBLFVBQUE7RUFHQSxpREFBQTtFQUNBLDBCQUFBO0VBQ0EsZUFBQTtFQUNBLDBCQUFBO0VBQ0EsaUJBQUE7RUFDQSxZQUFBO0VBQ0EsZUFBQTtFQUNBLGlCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxvQkFBQTtFQUNBLG9CQUFBO0NUdzlCUDtBU3orQkQ7RUFvQlksc0JBQUE7RUFBQSxxQkFBQTtFQUFBLGNBQUE7RUFDQSxpQkFBQTtDVHc5Qlg7QVM3K0JEO0VBd0JnQixpQkFBQTtFQUNBLGlEQUFBO0VBQ0Esa0JBQUE7Q1R3OUJmO0FTbC9CRDtFQStCWSxpQkFBQTtDVHM5Qlg7QVNyL0JEO0VBbUNZLGlCQUFBO0VBQ0Esa0JBQUE7RUFDQSxlQUFBO0NUcTlCWDtBUzEvQkQ7RUF5Q1ksMEJBQUE7RUFDQSxnQkFBQTtDVG85Qlg7QVM5L0JEO0VBK0NnQixlQUFBO0VBQ0EsaUJBQUE7Q1RrOUJmIiwiZmlsZSI6IkxheW91dEVkaXRvci5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0IFwiVmFyaWFibGVzLmxlc3NcIjtcclxuXHJcbi5sYXlvdXQtZWRpdG9yIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBtYXJnaW4tdG9wOiAxZW07XHJcbiAgICBmb250LXNpemU6IEBmb250LXNpemU7XHJcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcclxuXHJcbiAgICA+IC5sYXlvdXQtY2FudmFzLXdyYXBwZXIge1xyXG4gICAgICAgIGZsZXgtZ3JvdzogMTtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAZ3JheS1iZztcclxuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBAZ3JheS1ib3JkZXI7XHJcblxyXG4gICAgICAgID4gLmxheW91dC10b29sYmFyLWNvbnRhaW5lciB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgICAgICAgIG1hcmdpbjogQGNvbnRhaW5lci1wYWRkaW5nIEBjb250YWluZXItcGFkZGluZyAwO1xyXG4gICAgICAgICAgICBtaW4taGVpZ2h0OiA3MXB4O1xyXG5cclxuICAgICAgICAgICAgPiAubWNlLXBhbmVsIHtcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmxheW91dC1zbmlwcGV0IHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjZThlOGU4O1xyXG4gICAgfVxyXG59XHJcbiIsIi5sYXlvdXQtZWRpdG9yIHtcbiAgZGlzcGxheTogZmxleDtcbiAgbWFyZ2luLXRvcDogMWVtO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xufVxuLmxheW91dC1lZGl0b3IgPiAubGF5b3V0LWNhbnZhcy13cmFwcGVyIHtcbiAgZmxleC1ncm93OiAxO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmNGY1O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZTRlNWU2O1xufVxuLmxheW91dC1lZGl0b3IgPiAubGF5b3V0LWNhbnZhcy13cmFwcGVyID4gLmxheW91dC10b29sYmFyLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIG1hcmdpbjogMTJweCAxMnB4IDA7XG4gIG1pbi1oZWlnaHQ6IDcxcHg7XG59XG4ubGF5b3V0LWVkaXRvciA+IC5sYXlvdXQtY2FudmFzLXdyYXBwZXIgPiAubGF5b3V0LXRvb2xiYXItY29udGFpbmVyID4gLm1jZS1wYW5lbCB7XG4gIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LXNuaXBwZXQge1xuICBiYWNrZ3JvdW5kOiAjZThlOGU4O1xufVxuXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWVsZW1lbnQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1yaWdodDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgcGFkZGluZzogMDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtZWxlbWVudDpub3QoLmxheW91dC1jb2x1bW4pIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWVsZW1lbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciA+IC5sYXlvdXQtcGFuZWwge1xuICBkaXNwbGF5OiBub25lO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG1hcmdpbjogMDtcbiAgei1pbmRleDogMjA7XG4gIGhlaWdodDogMjVweDtcbiAgcGFkZGluZzogMCA2cHg7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGxpbmUtaGVpZ2h0OiAyNXB4O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1lbGVtZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgPiAubGF5b3V0LXBhbmVsID4gLmxheW91dC1wYW5lbC1pdGVtIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBoZWlnaHQ6IDI1cHg7XG4gIHBhZGRpbmc6IDFweCA2cHggMDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtZWxlbWVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1wYW5lbCA+IC5sYXlvdXQtcGFuZWwtbGFiZWwge1xuICBmb250LXNpemU6IDEzcHg7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWVsZW1lbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciA+IC5sYXlvdXQtcGFuZWwgPiAubGF5b3V0LXBhbmVsLWFjdGlvbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIHdpZHRoOiAyOHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtZWxlbWVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1wYW5lbC1tYWluIHtcbiAgdG9wOiAtMjdweDtcbiAgbGVmdDogLTJweDtcbn1cbi5sYXlvdXQtZWRpdG9yIGxpLmxheW91dC1lbGVtZW50IHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cbi5sYXlvdXQtZWRpdG9yOm5vdCgubGF5b3V0LWVkaXRvci1kcmFnZ2luZykgLmxheW91dC1lbGVtZW50LWFjdGl2ZSxcbi5sYXlvdXQtZWRpdG9yOm5vdCgubGF5b3V0LWVkaXRvci1kcmFnZ2luZykgLmxheW91dC1lbGVtZW50LWZvY3VzZWQge1xuICBib3JkZXItd2lkdGg6IDJweDtcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbn1cbi5sYXlvdXQtZWRpdG9yOm5vdCgubGF5b3V0LWVkaXRvci1kcmFnZ2luZykgLmxheW91dC1lbGVtZW50LWFjdGl2ZSA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyLFxuLmxheW91dC1lZGl0b3I6bm90KC5sYXlvdXQtZWRpdG9yLWRyYWdnaW5nKSAubGF5b3V0LWVsZW1lbnQtZm9jdXNlZCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIHtcbiAgbWFyZ2luOiAtMnB4O1xufVxuLmxheW91dC1lZGl0b3I6bm90KC5sYXlvdXQtZWRpdG9yLWRyYWdnaW5nKSAubGF5b3V0LWVsZW1lbnQtYWN0aXZlIHtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDEwNCwgMTA0LCAxMDQsIDAuMSk7XG59XG4ubGF5b3V0LWVkaXRvcjpub3QoLmxheW91dC1lZGl0b3ItZHJhZ2dpbmcpIC5sYXlvdXQtZWxlbWVudC1hY3RpdmUgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciA+IC5sYXlvdXQtcGFuZWwtbWFpbiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB6LWluZGV4OiAzMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMDQsIDEwNCwgMTA0LCAwLjEpO1xufVxuLmxheW91dC1lZGl0b3I6bm90KC5sYXlvdXQtZWRpdG9yLWRyYWdnaW5nKSAubGF5b3V0LWVsZW1lbnQtZm9jdXNlZCB7XG4gIGJvcmRlci1jb2xvcjogIzY0ODcyMTtcbn1cbi5sYXlvdXQtZWRpdG9yOm5vdCgubGF5b3V0LWVkaXRvci1kcmFnZ2luZykgLmxheW91dC1lbGVtZW50LWZvY3VzZWQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciA+IC5sYXlvdXQtcGFuZWwge1xuICBkaXNwbGF5OiBibG9jaztcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY0ODcyMTtcbiAgY29sb3I6ICNmZWZlZmU7XG59XG4ubGF5b3V0LWVkaXRvcjpub3QoLmxheW91dC1lZGl0b3ItZHJhZ2dpbmcpIC5sYXlvdXQtZWxlbWVudC1mb2N1c2VkID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgPiAubGF5b3V0LXBhbmVsID4gLmxheW91dC1wYW5lbC1hY3Rpb24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ubGF5b3V0LWVkaXRvcjpub3QoLmxheW91dC1lZGl0b3ItZHJhZ2dpbmcpIC5sYXlvdXQtZWxlbWVudC1mb2N1c2VkID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgPiAubGF5b3V0LXBhbmVsID4gLmxheW91dC1wYW5lbC1hY3Rpb246aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODJiMDJiO1xufVxuLmxheW91dC1lZGl0b3I6bm90KC5sYXlvdXQtZWRpdG9yLWRyYWdnaW5nKSAubGF5b3V0LWVsZW1lbnQtZm9jdXNlZCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1wYW5lbCA+IC5sYXlvdXQtcGFuZWwtYWN0aW9uLmRpc2FibGVkIHtcbiAgY3Vyc29yOiBkZWZhdWx0O1xuICBjb2xvcjogcmdiYSgyNTQsIDI1NCwgMjU0LCAwLjQpO1xufVxuLmxheW91dC1lZGl0b3I6bm90KC5sYXlvdXQtZWRpdG9yLWRyYWdnaW5nKSAubGF5b3V0LWVsZW1lbnQtZm9jdXNlZCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1wYW5lbCA+IC5sYXlvdXQtcGFuZWwtYWN0aW9uLmRpc2FibGVkOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY0ODcyMTtcbn1cbi5sYXlvdXQtZWRpdG9yOm5vdCgubGF5b3V0LWVkaXRvci1kcmFnZ2luZykgLmxheW91dC1lbGVtZW50LWZvY3VzZWQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciA+IC5sYXlvdXQtcGFuZWwgPiAubGF5b3V0LXBhbmVsLWFjdGlvbi5hY3RpdmUge1xuICBjb2xvcjogI2RlZmY0MjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzczOWIyNjtcbn1cbi5sYXlvdXQtZWRpdG9yOm5vdCgubGF5b3V0LWVkaXRvci1kcmFnZ2luZykgLmxheW91dC1lbGVtZW50LWZvY3VzZWQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciA+IC5sYXlvdXQtcGFuZWwgPiAubGF5b3V0LXBhbmVsLWFjdGlvbi5hY3RpdmU6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODJiMDJiO1xufVxuLmxheW91dC1lZGl0b3I6bm90KC5sYXlvdXQtZWRpdG9yLWRyYWdnaW5nKSAubGF5b3V0LWVsZW1lbnQtc2VsZWN0ZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEwMCwgMTM1LCAzMywgMC4wOCk7XG59XG4ubGF5b3V0LWVkaXRvciAudWktc29ydGFibGUtcGxhY2Vob2xkZXIge1xuICBkaXNwbGF5OiBub25lO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1lbGVtZW50LWRyb3B0YXJnZXQge1xuICBib3gtc2hhZG93OiBpbnNldCAwIDAgMTJweCA2cHggcmdiYSgxMDAsIDEzNSwgMzMsIDAuNSk7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWVsZW1lbnQtZHJvcHRhcmdldCAudWktc29ydGFibGUtcGxhY2Vob2xkZXIge1xuICBkaXNwbGF5OiBibG9jaztcbiAgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBtaW4taGVpZ2h0OiA3OHB4O1xuICBib3JkZXI6IDJweCBkYXNoZWQgIzY0ODcyMSAhaW1wb3J0YW50O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEwMCwgMTM1LCAzMywgMC4xNik7XG59XG4ubGF5b3V0LWVkaXRvciAubWVkaWEtdGh1bWJuYWlsIGltZyB7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgbWF4LWhlaWdodDogMTAwJTtcbn1cblxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250YWluZXIgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciA+IC5sYXlvdXQtY29udGFpbmVyLWNoaWxkcmVuLXBsYWNlaG9sZGVyIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgbWFyZ2luOiAxMXB4O1xuICBtaW4taGVpZ2h0OiA4MHB4O1xuICBib3JkZXI6IDFweCBkYXNoZWQgcmdiYSgxMjQsIDEyNCwgMTI0LCAwLjQpO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIHBhZGRpbmc6IDEycHg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBmb250LXNpemU6IDEzcHg7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgb3BhY2l0eTogMC42O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRhaW5lciA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1jaGlsZHJlbiB7XG4gIHBhZGRpbmc6IDEycHg7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRhaW5lciA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1jaGlsZHJlbiA+IC5sYXlvdXQtZWxlbWVudDpub3QoLmxheW91dC1jb250YWluZXIpICsgLmxheW91dC1lbGVtZW50Om5vdCgubGF5b3V0LWNvbnRhaW5lcikge1xuICBtYXJnaW4tdG9wOiAxMnB4O1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250YWluZXIgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciA+IC5sYXlvdXQtY2hpbGRyZW4gPiAudWktc29ydGFibGUtaGVscGVyOmZpcnN0LWNoaWxkICsgLmxheW91dC1lbGVtZW50Om5vdCgubGF5b3V0LWNvbnRhaW5lcikge1xuICBtYXJnaW4tdG9wOiAwO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250YWluZXIgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlci5sYXlvdXQtY29udGFpbmVyLWVtcHR5ID4gLmxheW91dC1jb250YWluZXItY2hpbGRyZW4tcGxhY2Vob2xkZXIge1xuICBkaXNwbGF5OiBmbGV4O1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250YWluZXIgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlci5sYXlvdXQtY29udGFpbmVyLWVtcHR5ID4gLmxheW91dC1jaGlsZHJlbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xufVxuLmxheW91dC1lZGl0b3I6bm90KC5sYXlvdXQtZWRpdG9yLWRyYWdnaW5nKSAubGF5b3V0LWNvbnRhaW5lci5sYXlvdXQtZWxlbWVudC1mb2N1c2VkID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgPiAubGF5b3V0LWNoaWxkcmVuID4gLmxheW91dC1lbGVtZW50Om5vdCgubGF5b3V0LWVsZW1lbnQtYWN0aXZlKSB7XG4gIGJvcmRlcjogMXB4IGRhc2hlZCByZ2JhKDEyNCwgMTI0LCAxMjQsIDAuNik7XG59XG4ubGF5b3V0LWVkaXRvcjpub3QoLmxheW91dC1lZGl0b3ItZHJhZ2dpbmcpIC5sYXlvdXQtY29udGFpbmVyLmxheW91dC1lbGVtZW50LWZvY3VzZWQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciA+IC5sYXlvdXQtY2hpbGRyZW4gPiAubGF5b3V0LWVsZW1lbnQ6bm90KC5sYXlvdXQtZWxlbWVudC1hY3RpdmUpID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIge1xuICBtYXJnaW46IC0xcHg7XG59XG4ubGF5b3V0LWVkaXRvcjpub3QoLmxheW91dC1lZGl0b3ItZHJhZ2dpbmcpIC5sYXlvdXQtY29udGFpbmVyLmxheW91dC1lbGVtZW50LWZvY3VzZWQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciA+IC5sYXlvdXQtY2hpbGRyZW4gPiAubGF5b3V0LWNvbnRhaW5lciArIC5sYXlvdXQtY29udGFpbmVyOm5vdCgubGF5b3V0LWVsZW1lbnQtYWN0aXZlKSB7XG4gIGJvcmRlci10b3A6IDA7XG59XG4ubGF5b3V0LWVkaXRvcjpub3QoLmxheW91dC1lZGl0b3ItZHJhZ2dpbmcpIC5sYXlvdXQtY29udGFpbmVyLmxheW91dC1lbGVtZW50LWZvY3VzZWQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciA+IC5sYXlvdXQtY2hpbGRyZW4gPiAubGF5b3V0LWNvbnRhaW5lciArIC5sYXlvdXQtY29udGFpbmVyOm5vdCgubGF5b3V0LWVsZW1lbnQtYWN0aXZlKSA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIHtcbiAgbWFyZ2luLXRvcDogMDtcbn1cblxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jYW52YXMgI2R1bW15IHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLmxheW91dC1lZGl0b3IgLmxheW91dC1yb3cubGF5b3V0LWVsZW1lbnQtZm9jdXNlZDpub3QoLmxheW91dC1lbGVtZW50LWRyb3B0YXJnZXQpID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgPiAubGF5b3V0LWNoaWxkcmVuID4gLmxheW91dC1lbGVtZW50Om5vdCgubGF5b3V0LWVsZW1lbnQtYWN0aXZlKSB7XG4gIGJvcmRlci10b3A6IDFweCBkYXNoZWQgcmdiYSgxMjQsIDEyNCwgMTI0LCAwLjYpICFpbXBvcnRhbnQ7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LXJvdy5sYXlvdXQtZWxlbWVudC1mb2N1c2VkOm5vdCgubGF5b3V0LWVsZW1lbnQtZHJvcHRhcmdldCkgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciA+IC5sYXlvdXQtY2hpbGRyZW4gPiAubGF5b3V0LWVsZW1lbnQ6bm90KC5sYXlvdXQtZWxlbWVudC1hY3RpdmUpID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIge1xuICBtYXJnaW4tdG9wOiAtMXB4ICFpbXBvcnRhbnQ7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LXJvdy5sYXlvdXQtZWxlbWVudC1mb2N1c2VkOm5vdCgubGF5b3V0LWVsZW1lbnQtZHJvcHRhcmdldCkgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciA+IC5sYXlvdXQtY2hpbGRyZW4gPiAubGF5b3V0LWVsZW1lbnQgKyAubGF5b3V0LWVsZW1lbnQ6bm90KC5sYXlvdXQtZWxlbWVudC1hY3RpdmUpIHtcbiAgYm9yZGVyLWxlZnQ6IDAgIWltcG9ydGFudDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtcm93LmxheW91dC1lbGVtZW50LWZvY3VzZWQ6bm90KC5sYXlvdXQtZWxlbWVudC1kcm9wdGFyZ2V0KSA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1jaGlsZHJlbiA+IC5sYXlvdXQtZWxlbWVudCArIC5sYXlvdXQtZWxlbWVudDpub3QoLmxheW91dC1lbGVtZW50LWFjdGl2ZSkgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciB7XG4gIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XG59XG5cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29sdW1uID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgPiAubGF5b3V0LWNvbHVtbi1yZXNpemUtYmFyIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAzMDtcbiAgdG9wOiAwO1xuICB3aWR0aDogMTZweDtcbiAgaGVpZ2h0OiAxMDAlO1xuICBjdXJzb3I6IGNvbC1yZXNpemU7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbHVtbiA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1jb2x1bW4tcmVzaXplLWJhci1sZWZ0IHtcbiAgbGVmdDogLTZweDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29sdW1uID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgPiAubGF5b3V0LWNvbHVtbi1yZXNpemUtYmFyLXJpZ2h0IHtcbiAgcmlnaHQ6IC02cHg7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbHVtbi5sYXlvdXQtZWxlbWVudC1mb2N1c2VkID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgPiAubGF5b3V0LWNvbHVtbi1yZXNpemUtYmFyIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCB7XG4gIG1pbi1oZWlnaHQ6IDFlbTtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHtcbiAgcGFkZGluZzogMnB4O1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG4gIC8qIHRoaXMgY29sb3IgaXMganVzdCBhIHN1Z2dlc3Rpb24gYW5kIGNhbiBiZSBjaGFuZ2VkIGJhc2VkIG9uIGltcGxlbWVudGF0aW9uIGZlZWRiYWNrICovXG4gIC8qIHRoaXMgYWxzbyBoYXMgYmlkaSBpbXBsaWNhdGlvbnMgKi9cbiAgLyogdGhpcyBhbHNvIGhhcyBiaWRpIGltcGxpY2F0aW9ucyAqL1xuICAvKiBMVFItc3BlY2lmaWM6IHVzZSAnbWFyZ2luLXJpZ2h0JyBmb3IgcnRsIGVsZW1lbnRzICovXG4gIC8qIExUUi1zcGVjaWZpYzogdXNlICdwYWRkaW5nLXJpZ2h0JyBmb3IgcnRsIGVsZW1lbnRzICovXG4gIC8qdGFibGVbcnVsZXM9bm9uZSBpXSwgdGFibGVbcnVsZXM9Z3JvdXBzIGldLCB0YWJsZVtydWxlcz1yb3dzIGldLFxudGFibGVbcnVsZXM9Y29scyBpXSwgdGFibGVbcnVsZXM9YWxsIGldLCB0YWJsZVtmcmFtZT12b2lkIGldLFxudGFibGVbZnJhbWU9YWJvdmUgaV0sIHRhYmxlW2ZyYW1lPWJlbG93IGldLCB0YWJsZVtmcmFtZT1oc2lkZXMgaV0sXG50YWJsZVtmcmFtZT1saHMgaV0sIHRhYmxlW2ZyYW1lPXJocyBpXSwgdGFibGVbZnJhbWU9dnNpZGVzIGldLFxudGFibGVbZnJhbWU9Ym94IGldLCB0YWJsZVtmcmFtZT1ib3JkZXIgaV0sXG50YWJsZVtydWxlcz1ub25lIGldID4gdHIgPiB0ZCwgdGFibGVbcnVsZXM9bm9uZSBpXSA+IHRyID4gdGgsXG50YWJsZVtydWxlcz1ncm91cHMgaV0gPiB0ciA+IHRkLCB0YWJsZVtydWxlcz1ncm91cHMgaV0gPiB0ciA+IHRoLFxudGFibGVbcnVsZXM9cm93cyBpXSA+IHRyID4gdGQsIHRhYmxlW3J1bGVzPXJvd3MgaV0gPiB0ciA+IHRoLFxudGFibGVbcnVsZXM9Y29scyBpXSA+IHRyID4gdGQsIHRhYmxlW3J1bGVzPWNvbHMgaV0gPiB0ciA+IHRoLFxudGFibGVbcnVsZXM9YWxsIGldID4gdHIgPiB0ZCwgdGFibGVbcnVsZXM9YWxsIGldID4gdHIgPiB0aCxcbnRhYmxlW3J1bGVzPW5vbmUgaV0gPiB0aGVhZCA+IHRyID4gdGQsIHRhYmxlW3J1bGVzPW5vbmUgaV0gPiB0aGVhZCA+IHRyID4gdGgsXG50YWJsZVtydWxlcz1ncm91cHMgaV0gPiB0aGVhZCA+IHRyID4gdGQsIHRhYmxlW3J1bGVzPWdyb3VwcyBpXSA+IHRoZWFkID4gdHIgPiB0aCxcbnRhYmxlW3J1bGVzPXJvd3MgaV0gPiB0aGVhZCA+IHRyID4gdGQsIHRhYmxlW3J1bGVzPXJvd3MgaV0gPiB0aGVhZCA+IHRyID4gdGgsXG50YWJsZVtydWxlcz1jb2xzIGldID4gdGhlYWQgPiB0ciA+IHRkLCB0YWJsZVtydWxlcz1jb2xzIGldID4gdGhlYWQgPiB0ciA+IHRoLFxudGFibGVbcnVsZXM9YWxsIGldID4gdGhlYWQgPiB0ciA+IHRkLCB0YWJsZVtydWxlcz1hbGwgaV0gPiB0aGVhZCA+IHRyID4gdGgsXG50YWJsZVtydWxlcz1ub25lIGldID4gdGJvZHkgPiB0ciA+IHRkLCB0YWJsZVtydWxlcz1ub25lIGldID4gdGJvZHkgPiB0ciA+IHRoLFxudGFibGVbcnVsZXM9Z3JvdXBzIGldID4gdGJvZHkgPiB0ciA+IHRkLCB0YWJsZVtydWxlcz1ncm91cHMgaV0gPiB0Ym9keSA+IHRyID4gdGgsXG50YWJsZVtydWxlcz1yb3dzIGldID4gdGJvZHkgPiB0ciA+IHRkLCB0YWJsZVtydWxlcz1yb3dzIGldID4gdGJvZHkgPiB0ciA+IHRoLFxudGFibGVbcnVsZXM9Y29scyBpXSA+IHRib2R5ID4gdHIgPiB0ZCwgdGFibGVbcnVsZXM9Y29scyBpXSA+IHRib2R5ID4gdHIgPiB0aCxcbnRhYmxlW3J1bGVzPWFsbCBpXSA+IHRib2R5ID4gdHIgPiB0ZCwgdGFibGVbcnVsZXM9YWxsIGldID4gdGJvZHkgPiB0ciA+IHRoLFxudGFibGVbcnVsZXM9bm9uZSBpXSA+IHRmb290ID4gdHIgPiB0ZCwgdGFibGVbcnVsZXM9bm9uZSBpXSA+IHRmb290ID4gdHIgPiB0aCxcbnRhYmxlW3J1bGVzPWdyb3VwcyBpXSA+IHRmb290ID4gdHIgPiB0ZCwgdGFibGVbcnVsZXM9Z3JvdXBzIGldID4gdGZvb3QgPiB0ciA+IHRoLFxudGFibGVbcnVsZXM9cm93cyBpXSA+IHRmb290ID4gdHIgPiB0ZCwgdGFibGVbcnVsZXM9cm93cyBpXSA+IHRmb290ID4gdHIgPiB0aCxcbnRhYmxlW3J1bGVzPWNvbHMgaV0gPiB0Zm9vdCA+IHRyID4gdGQsIHRhYmxlW3J1bGVzPWNvbHMgaV0gPiB0Zm9vdCA+IHRyID4gdGgsXG50YWJsZVtydWxlcz1hbGwgaV0gPiB0Zm9vdCA+IHRyID4gdGQsIHRhYmxlW3J1bGVzPWFsbCBpXSA+IHRmb290ID4gdHIgPiB0aCB7XG4gICAgYm9yZGVyLWNvbG9yOiBibGFjaztcbn0qL1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCAqLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCAqIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgYWRkcmVzcyxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgYWRkcmVzcyxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgYmxvY2txdW90ZSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgYmxvY2txdW90ZSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgY2VudGVyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBjZW50ZXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpdixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGl2LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBmaWd1cmUsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGZpZ3VyZSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZmlnY2FwdGlvbixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZmlnY2FwdGlvbixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZm9vdGVyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBmb290ZXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGZvcm0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGZvcm0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGhlYWRlcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaGVhZGVyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBocixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaHIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGxlZ2VuZCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgbGVnZW5kLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBsaXN0aW5nLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBsaXN0aW5nLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBwLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBwLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBwbGFpbnRleHQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHBsYWludGV4dCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgcHJlLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBwcmUsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHhtcCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgeG1wIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGJsb2NrcXVvdGUsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGJsb2NrcXVvdGUsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGZpZ3VyZSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZmlndXJlLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBsaXN0aW5nLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBsaXN0aW5nLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBwLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBwLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBwbGFpbnRleHQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHBsYWludGV4dCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgcHJlLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBwcmUsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHhtcCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgeG1wIHtcbiAgbWFyZ2luLXRvcDogMWVtO1xuICBtYXJnaW4tYm90dG9tOiAxZW07XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGJsb2NrcXVvdGUsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGJsb2NrcXVvdGUsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGZpZ3VyZSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZmlndXJlIHtcbiAgbWFyZ2luLWxlZnQ6IDQwcHg7XG4gIG1hcmdpbi1yaWdodDogNDBweDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgYWRkcmVzcyxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgYWRkcmVzcyB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgbGlzdGluZyxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgbGlzdGluZyxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgcGxhaW50ZXh0LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBwbGFpbnRleHQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHByZSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgcHJlLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB4bXAsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHhtcCB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG4gIHdoaXRlLXNwYWNlOiBwcmU7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGNpdGUsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGNpdGUsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRmbixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGZuLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBlbSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZW0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGksXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGksXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHZhcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdmFyIHtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBiLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBiLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBzdHJvbmcsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGNvZGUsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGNvZGUsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGtiZCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAga2JkLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBzYW1wLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBzYW1wLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0dCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdHQge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBiaWcsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGJpZyB7XG4gIGZvbnQtc2l6ZTogbGFyZ2VyO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBzbWFsbCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgc21hbGwge1xuICBmb250LXNpemU6IHNtYWxsZXI7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHN1Yixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgc3ViIHtcbiAgdmVydGljYWwtYWxpZ246IHN1Yjtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgc3VwLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBzdXAge1xuICB2ZXJ0aWNhbC1hbGlnbjogc3VwZXI7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHN1Yixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgc3ViLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBzdXAsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHN1cCB7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc2l6ZTogc21hbGxlcjtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgcnVieSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgcnVieSB7XG4gIGRpc3BsYXk6IHJ1Ynk7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHJiLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCByYiB7XG4gIGRpc3BsYXk6IHJ1YnktYmFzZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgcnQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHJ0IHtcbiAgZGlzcGxheTogcnVieS10ZXh0O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBmb250LXNpemU6IDUwJTtcbiAgZm9udC12YXJpYW50LWVhc3QtYXNpYW46IHJ1Ynk7XG4gIHRleHQtZW1waGFzaXM6IG5vbmU7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHJiYyxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgcmJjIHtcbiAgZGlzcGxheTogcnVieS1iYXNlLWNvbnRhaW5lcjtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgcnRjLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBydGMge1xuICBkaXNwbGF5OiBydWJ5LXRleHQtY29udGFpbmVyO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBydWJ5LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBydWJ5LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCByYixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgcmIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHJ0LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBydCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgcmJjLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCByYmMsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHJ0Yyxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgcnRjIHtcbiAgdW5pY29kZS1iaWRpOiBpc29sYXRlO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCA6bGluayxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgOmxpbmsge1xuICBjb2xvcjogIzAwMDBFRTtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgOnZpc2l0ZWQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIDp2aXNpdGVkIHtcbiAgY29sb3I6ICM1NTFBOEI7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIDpsaW5rLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCA6bGluayxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgOnZpc2l0ZWQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIDp2aXNpdGVkIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGE6bGlua1tyZWx+PWhlbHBdLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBhOmxpbmtbcmVsfj1oZWxwXSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgYTp2aXNpdGVkW3JlbH49aGVscF0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGE6dmlzaXRlZFtyZWx+PWhlbHBdLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBhcmVhOmxpbmtbcmVsfj1oZWxwXSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgYXJlYTpsaW5rW3JlbH49aGVscF0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGFyZWE6dmlzaXRlZFtyZWx+PWhlbHBdLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBhcmVhOnZpc2l0ZWRbcmVsfj1oZWxwXSB7XG4gIGN1cnNvcjogaGVscDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgOmZvY3VzLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCA6Zm9jdXMge1xuICBvdXRsaW5lOiBhdXRvO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBtYXJrLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBtYXJrIHtcbiAgYmFja2dyb3VuZDogeWVsbG93O1xuICBjb2xvcjogYmxhY2s7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGFiYnJbdGl0bGVdLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBhYmJyW3RpdGxlXSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgYWNyb255bVt0aXRsZV0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGFjcm9ueW1bdGl0bGVdIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBkb3R0ZWQgdW5kZXJsaW5lO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBpbnMsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGlucyxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdSB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkZWwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRlbCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgcyxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgcyxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgc3RyaWtlLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBzdHJpa2Uge1xuICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgYmxpbmssXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGJsaW5rIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBibGluaztcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgcTo6YmVmb3JlLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBxOjpiZWZvcmUge1xuICBjb250ZW50OiBvcGVuLXF1b3RlO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBxOjphZnRlcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgcTo6YWZ0ZXIge1xuICBjb250ZW50OiBjbG9zZS1xdW90ZTtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgYnIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGJyIHtcbiAgY29udGVudDogJ1xcQSc7XG4gIHdoaXRlLXNwYWNlOiBwcmU7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIG5vYnIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIG5vYnIge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB3YnIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHdiciB7XG4gIGNvbnRlbnQ6ICdcXDIwMEInO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBub2JyIHdicixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgbm9iciB3YnIge1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBhcnRpY2xlLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBhcnRpY2xlLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBhc2lkZSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgYXNpZGUsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGgxLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBoMSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaDIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGgyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBoMyxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaDMsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGg0LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBoNCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaDUsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGg1LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBoNixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaDYsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGhncm91cCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaGdyb3VwLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBuYXYsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIG5hdixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgc2VjdGlvbixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgc2VjdGlvbiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBoMSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaDEge1xuICBtYXJnaW4tdG9wOiAwLjY3ZW07XG4gIG1hcmdpbi1ib3R0b206IDAuNjdlbTtcbiAgZm9udC1zaXplOiAyLjAwZW07XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBoMixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaDIge1xuICBtYXJnaW4tdG9wOiAwLjgzZW07XG4gIG1hcmdpbi1ib3R0b206IDAuODNlbTtcbiAgZm9udC1zaXplOiAxLjUwZW07XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBoMyxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaDMge1xuICBtYXJnaW4tdG9wOiAxLjAwZW07XG4gIG1hcmdpbi1ib3R0b206IDEuMDBlbTtcbiAgZm9udC1zaXplOiAxLjE3ZW07XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBoNCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaDQge1xuICBtYXJnaW4tdG9wOiAxLjMzZW07XG4gIG1hcmdpbi1ib3R0b206IDEuMzNlbTtcbiAgZm9udC1zaXplOiAxLjAwZW07XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBoNSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaDUge1xuICBtYXJnaW4tdG9wOiAxLjY3ZW07XG4gIG1hcmdpbi1ib3R0b206IDEuNjdlbTtcbiAgZm9udC1zaXplOiAwLjgzZW07XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBoNixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaDYge1xuICBtYXJnaW4tdG9wOiAyLjMzZW07XG4gIG1hcmdpbi1ib3R0b206IDIuMzNlbTtcbiAgZm9udC1zaXplOiAwLjY3ZW07XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkaXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRkLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkbCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGR0LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkdCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgb2wsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIG9sLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB1bCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdWwge1xuICBkaXNwbGF5OiBibG9jaztcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgbGksXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGxpIHtcbiAgZGlzcGxheTogbGlzdC1pdGVtO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkaXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvbCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgb2wsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHVsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB1bCB7XG4gIG1hcmdpbi10b3A6IDFlbTtcbiAgbWFyZ2luLWJvdHRvbTogMWVtO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkaXIgZGlyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkaXIgZGlyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkaXIgZGwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpciBkbCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGlyIG9sLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkaXIgb2wsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpciB1bCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGlyIHVsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkbCBkaXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRsIGRpcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGwgZGwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRsIGRsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkbCBvbCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGwgb2wsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRsIHVsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkbCB1bCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgb2wgZGlyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvbCBkaXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIG9sIGRsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvbCBkbCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgb2wgb2wsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIG9sIG9sLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvbCB1bCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgb2wgdWwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHVsIGRpcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdWwgZGlyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB1bCBkbCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdWwgZGwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHVsIG9sLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB1bCBvbCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdWwgdWwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHVsIHVsIHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRkIHtcbiAgbWFyZ2luLWxlZnQ6IDQwcHg7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGlyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvbCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgb2wsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHVsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB1bCB7XG4gIHBhZGRpbmctbGVmdDogNDBweDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgb2wsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIG9sIHtcbiAgbGlzdC1zdHlsZS10eXBlOiBkZWNpbWFsO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkaXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdWwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHVsIHtcbiAgbGlzdC1zdHlsZS10eXBlOiBkaXNjO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkaXIgZGlyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkaXIgZGlyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkaXIgdWwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpciB1bCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgb2wgZGlyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvbCBkaXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIG9sIHVsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvbCB1bCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdWwgZGlyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB1bCBkaXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHVsIHVsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB1bCB1bCB7XG4gIGxpc3Qtc3R5bGUtdHlwZTogY2lyY2xlO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkaXIgZGlyIGRpcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGlyIGRpciBkaXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpciBkaXIgdWwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpciBkaXIgdWwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpciBvbCBkaXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpciBvbCBkaXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpciBvbCB1bCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZGlyIG9sIHVsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkaXIgdWwgZGlyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkaXIgdWwgZGlyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBkaXIgdWwgdWwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGRpciB1bCB1bCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgb2wgZGlyIGRpcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgb2wgZGlyIGRpcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgb2wgZGlyIHVsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvbCBkaXIgdWwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIG9sIG9sIGRpcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgb2wgb2wgZGlyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvbCBvbCB1bCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgb2wgb2wgdWwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIG9sIHVsIGRpcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgb2wgdWwgZGlyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvbCB1bCB1bCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgb2wgdWwgdWwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHVsIGRpciBkaXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHVsIGRpciBkaXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHVsIGRpciB1bCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdWwgZGlyIHVsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB1bCBvbCBkaXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHVsIG9sIGRpcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdWwgb2wgdWwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHVsIG9sIHVsLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB1bCB1bCBkaXIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHVsIHVsIGRpcixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdWwgdWwgdWwsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHVsIHVsIHVsIHtcbiAgbGlzdC1zdHlsZS10eXBlOiBzcXVhcmU7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRhYmxlLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0YWJsZSB7XG4gIGRpc3BsYXk6IHRhYmxlO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBjYXB0aW9uLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBjYXB0aW9uIHtcbiAgZGlzcGxheTogdGFibGUtY2FwdGlvbjtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgY29sZ3JvdXAsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGNvbGdyb3VwLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBjb2xncm91cFtoaWRkZW5dLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBjb2xncm91cFtoaWRkZW5dIHtcbiAgZGlzcGxheTogdGFibGUtY29sdW1uLWdyb3VwO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBjb2wsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGNvbCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgY29sW2hpZGRlbl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGNvbFtoaWRkZW5dIHtcbiAgZGlzcGxheTogdGFibGUtY29sdW1uO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0aGVhZCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGhlYWQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRoZWFkW2hpZGRlbl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRoZWFkW2hpZGRlbl0ge1xuICBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRib2R5LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0Ym9keSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGJvZHlbaGlkZGVuXSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGJvZHlbaGlkZGVuXSB7XG4gIGRpc3BsYXk6IHRhYmxlLXJvdy1ncm91cDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGZvb3QsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRmb290LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0Zm9vdFtoaWRkZW5dLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0Zm9vdFtoaWRkZW5dIHtcbiAgZGlzcGxheTogdGFibGUtZm9vdGVyLWdyb3VwO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0cixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdHIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRyW2hpZGRlbl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRyW2hpZGRlbl0ge1xuICBkaXNwbGF5OiB0YWJsZS1yb3c7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRkLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0ZCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGgsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRoLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0ZFtoaWRkZW5dLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0ZFtoaWRkZW5dLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0aFtoaWRkZW5dLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0aFtoaWRkZW5dIHtcbiAgZGlzcGxheTogdGFibGUtY2VsbDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgY29sZ3JvdXBbaGlkZGVuXSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgY29sZ3JvdXBbaGlkZGVuXSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgY29sW2hpZGRlbl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGNvbFtoaWRkZW5dLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0aGVhZFtoaWRkZW5dLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0aGVhZFtoaWRkZW5dLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0Ym9keVtoaWRkZW5dLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0Ym9keVtoaWRkZW5dLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0Zm9vdFtoaWRkZW5dLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0Zm9vdFtoaWRkZW5dLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0cltoaWRkZW5dLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0cltoaWRkZW5dLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0ZFtoaWRkZW5dLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0ZFtoaWRkZW5dLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0aFtoaWRkZW5dLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0aFtoaWRkZW5dIHtcbiAgdmlzaWJpbGl0eTogY29sbGFwc2U7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRhYmxlLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0YWJsZSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJvcmRlci1zcGFjaW5nOiAycHg7XG4gIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XG4gIHRleHQtaW5kZW50OiBpbml0aWFsO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0ZCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRoLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0aCB7XG4gIHBhZGRpbmc6IDFweDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGgsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRoIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRoZWFkLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0aGVhZCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGJvZHksXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRib2R5LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0Zm9vdCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGZvb3QsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRhYmxlID4gdHIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRhYmxlID4gdHIge1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0cixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdHIsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRkLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0ZCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGgsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRoIHtcbiAgdmVydGljYWwtYWxpZ246IGluaGVyaXQ7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRhYmxlLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0YWJsZSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRkLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0aCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGgge1xuICBib3JkZXItY29sb3I6IGdyYXk7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRoZWFkLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0aGVhZCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGJvZHksXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRib2R5LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0Zm9vdCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGZvb3QsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRyLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0ciB7XG4gIGJvcmRlci1jb2xvcjogaW5oZXJpdDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaW5wdXQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGlucHV0LFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBzZWxlY3QsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHNlbGVjdCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgb3B0aW9uLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvcHRpb24sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIG9wdGdyb3VwLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBvcHRncm91cCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgYnV0dG9uLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBidXR0b24sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRleHRhcmVhLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCB0ZXh0YXJlYSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAga2V5Z2VuLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBrZXlnZW4ge1xuICB0ZXh0LWluZGVudDogaW5pdGlhbDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgdGV4dGFyZWEsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHRleHRhcmVhIHtcbiAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBpbnB1dFt0eXBlPVwicmFkaW9cIl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGlucHV0W3R5cGU9XCJyYWRpb1wiXSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGlucHV0W3R5cGU9XCJyZXNldFwiXSxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaW5wdXRbdHlwZT1cInJlc2V0XCJdLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBpbnB1dFt0eXBlPVwic3VibWl0XCJdLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBpbnB1dFt0eXBlPVwic3VibWl0XCJdLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBzZWxlY3QsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHNlbGVjdCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgYnV0dG9uLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBidXR0b24ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBidXR0b24sXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGJ1dHRvbiB7XG4gIHBhZGRpbmc6IDAuM2VtIDAuNWVtO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1jb250ZW50ID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCBocixcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgaHIge1xuICBjb2xvcjogZ3JheTtcbiAgYm9yZGVyLXN0eWxlOiBpbnNldDtcbiAgYm9yZGVyLXdpZHRoOiAxcHg7XG4gIG1hcmdpbjogMC41ZW0gYXV0bztcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgZmllbGRzZXQsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGZpZWxkc2V0IHtcbiAgbWFyZ2luLWxlZnQ6IDJweDtcbiAgbWFyZ2luLXJpZ2h0OiAycHg7XG4gIGJvcmRlcjogZ3Jvb3ZlIDJweCBUaHJlZURGYWNlO1xuICBwYWRkaW5nOiAwLjM1ZW0gMC42MjVlbSAwLjc1ZW07XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwIGxlZ2VuZCxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgbGVnZW5kIHtcbiAgcGFkZGluZy1sZWZ0OiAycHg7XG4gIHBhZGRpbmctcmlnaHQ6IDJweDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIC5sYXlvdXQtY29udGVudC1tYXJrdXAgPiAqOmZpcnN0LWNoaWxkLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCA+ICo6Zmlyc3QtY2hpbGQge1xuICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XG59XG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWNvbnRlbnQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciAubGF5b3V0LWNvbnRlbnQtbWFya3VwID4gKjpsYXN0LWNoaWxkLFxuLmxheW91dC1lZGl0b3IgLmxheW91dC1odG1sID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgLmxheW91dC1jb250ZW50LW1hcmt1cCA+ICo6bGFzdC1jaGlsZCB7XG4gIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudC5sYXlvdXQtY29udGVudC1pbWFnZSA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1jb250ZW50LW1hcmt1cCA+IGltZyxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtaHRtbC5sYXlvdXQtY29udGVudC1pbWFnZSA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1jb250ZW50LW1hcmt1cCA+IGltZyxcbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtY29udGVudC5sYXlvdXQtY29udGVudC12ZWN0b3ItaW1hZ2UgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciA+IC5sYXlvdXQtY29udGVudC1tYXJrdXAgPiBpbWcsXG4ubGF5b3V0LWVkaXRvciAubGF5b3V0LWh0bWwubGF5b3V0LWNvbnRlbnQtdmVjdG9yLWltYWdlID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgPiAubGF5b3V0LWNvbnRlbnQtbWFya3VwID4gaW1nIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogYXV0bztcbn1cbi5sYXlvdXQtZWRpdG9yIC5pbWctcmVzcG9uc2l2ZSxcbi5sYXlvdXQtZWRpdG9yIC5pbWctcmVzcG9uc2l2ZSBpbWcge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG4ubGF5b3V0LWVkaXRvciA+IC5sYXlvdXQtdG9vbGJveC13cmFwcGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tbGVmdDogMTJweDtcbiAgd2lkdGg6IDIyMHB4O1xuICBmbGV4LXNocmluazogMDtcbn1cbi5sYXlvdXQtZWRpdG9yID4gLmxheW91dC10b29sYm94LXdyYXBwZXIgPiAubGF5b3V0LXRvb2xib3gge1xuICBib3JkZXI6IDFweCBzb2xpZCAjZTRlNWU2O1xuICB3aWR0aDogMjIwcHg7XG4gIG1pbi1oZWlnaHQ6IDQwMHB4O1xuICBwYWRkaW5nOiA2cHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmM2Y0ZjU7XG59XG4ubGF5b3V0LWVkaXRvciA+IC5sYXlvdXQtdG9vbGJveC13cmFwcGVyID4gLmxheW91dC10b29sYm94LnN0aWNreS10b3Age1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbWF4LWhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbn1cbi5sYXlvdXQtZWRpdG9yID4gLmxheW91dC10b29sYm94LXdyYXBwZXIgPiAubGF5b3V0LXRvb2xib3guc3RpY2t5LWJvdHRvbSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAwO1xufVxuLmxheW91dC1lZGl0b3IgPiAubGF5b3V0LXRvb2xib3gtd3JhcHBlciA+IC5sYXlvdXQtdG9vbGJveCAubGF5b3V0LXRvb2xib3gtZ3JvdXAge1xuICBtYXJnaW4tdG9wOiAxMnB4O1xufVxuLmxheW91dC1lZGl0b3IgPiAubGF5b3V0LXRvb2xib3gtd3JhcHBlciA+IC5sYXlvdXQtdG9vbGJveCAubGF5b3V0LXRvb2xib3gtZ3JvdXAgLmxheW91dC10b29sYm94LWdyb3VwLWhlYWRpbmcge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4ubGF5b3V0LWVkaXRvciA+IC5sYXlvdXQtdG9vbGJveC13cmFwcGVyID4gLmxheW91dC10b29sYm94IC5sYXlvdXQtdG9vbGJveC1ncm91cCAubGF5b3V0LXRvb2xib3gtZ3JvdXAtaGVhZGluZzpiZWZvcmUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAxMHB4O1xuICBtYXJnaW4tcmlnaHQ6IDRweDtcbiAgZm9udDogbm9ybWFsIG5vcm1hbCBub3JtYWwgMTRweC8xIEZvbnRBd2Vzb21lO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGNvbnRlbnQ6IFwiXFxmMGQ3XCI7XG59XG4ubGF5b3V0LWVkaXRvciA+IC5sYXlvdXQtdG9vbGJveC13cmFwcGVyID4gLmxheW91dC10b29sYm94IC5sYXlvdXQtdG9vbGJveC1ncm91cC5jb2xsYXBzZWQgLmxheW91dC10b29sYm94LWdyb3VwLWhlYWRpbmc6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGYwZGFcIjtcbn1cbi5sYXlvdXQtZWRpdG9yID4gLmxheW91dC10b29sYm94LXdyYXBwZXIgPiAubGF5b3V0LXRvb2xib3ggLmxheW91dC10b29sYm94LWdyb3VwLmNvbGxhcHNlZCAubGF5b3V0LXRvb2xib3gtaXRlbXMge1xuICBkaXNwbGF5OiBub25lO1xufVxuLmxheW91dC1lZGl0b3IgPiAubGF5b3V0LXRvb2xib3gtd3JhcHBlciA+IC5sYXlvdXQtdG9vbGJveCAubGF5b3V0LXRvb2xib3gtZ3JvdXAgLmxheW91dC10b29sYm94LXNlY3Rpb24gKyAubGF5b3V0LXRvb2xib3gtc2VjdGlvbiB7XG4gIG1hcmdpbi10b3A6IDRweDtcbn1cbi5sYXlvdXQtZWRpdG9yID4gLmxheW91dC10b29sYm94LXdyYXBwZXIgPiAubGF5b3V0LXRvb2xib3ggLmxheW91dC10b29sYm94LWdyb3VwIC5sYXlvdXQtdG9vbGJveC1pdGVtIHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2U0ZTVlNjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgcGFkZGluZzogOXB4IDEycHg7XG4gIGN1cnNvcjogZGVmYXVsdDtcbn1cbi5sYXlvdXQtZWRpdG9yID4gLmxheW91dC10b29sYm94LXdyYXBwZXIgPiAubGF5b3V0LXRvb2xib3ggLmxheW91dC10b29sYm94LWdyb3VwIC5sYXlvdXQtdG9vbGJveC1pdGVtIGkge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAxNnB4O1xuICBmb250OiBub3JtYWwgbm9ybWFsIG5vcm1hbCAxNHB4LzEgRm9udEF3ZXNvbWU7XG59XG4ubGF5b3V0LWVkaXRvciA+IC5sYXlvdXQtdG9vbGJveC13cmFwcGVyID4gLmxheW91dC10b29sYm94IC5sYXlvdXQtdG9vbGJveC1ncm91cCAubGF5b3V0LXRvb2xib3gtaXRlbSArIC5sYXlvdXQtdG9vbGJveC1pdGVtIHtcbiAgbWFyZ2luLXRvcDogNHB4O1xufVxuLmxheW91dC1lZGl0b3IgPiAubGF5b3V0LXRvb2xib3gtd3JhcHBlciA+IC5sYXlvdXQtdG9vbGJveCAubGF5b3V0LXRvb2xib3gtZ3JvdXAgKyAubGF5b3V0LXRvb2xib3gtZ3JvdXAge1xuICBtYXJnaW4tdG9wOiA2cHg7XG59XG5cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtcG9wdXAge1xuICBkaXNwbGF5OiBub25lO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG1hcmdpbjogMDtcbiAgLW1vei1ib3gtc2hhZG93OiAzcHggM3B4IDExcHggMCByZ2JhKDUwLCA1MCwgNTAsIDAuNSk7XG4gIC13ZWJraXQtYm94LXNoYWRvdzogM3B4IDNweCAxMXB4IDAgcmdiYSg1MCwgNTAsIDUwLCAwLjUpO1xuICBib3gtc2hhZG93OiAzcHggM3B4IDExcHggMCByZ2JhKDUwLCA1MCwgNTAsIDAuNSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlNGU1ZTY7XG4gIHBhZGRpbmc6IDJweCAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3O1xuICBsaXN0LXN0eWxlOiBub25lO1xuICB6LWluZGV4OiAyMDtcbiAgY29sb3I6ICM3YzdjN2M7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGN1cnNvcjogZGVmYXVsdDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtcG9wdXAgLmxheW91dC1wb3B1cC1mbGV4IHtcbiAgZGlzcGxheTogZmxleDtcbiAgcGFkZGluZzogMnB4IDVweDtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtcG9wdXAgLmxheW91dC1wb3B1cC1mbGV4IC5sYXlvdXQtcG9wdXAtY29sdW1uICsgLmxheW91dC1wb3B1cC1jb2x1bW4ge1xuICBtYXJnaW4tbGVmdDogNHB4O1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYmEoMTI4LCAxMjgsIDEyOCwgMC4xNSk7XG4gIHBhZGRpbmctbGVmdDogNHB4O1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1wb3B1cCAubGF5b3V0LXBvcHVwLWl0ZW0ge1xuICBwYWRkaW5nOiA0cHggNnB4O1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1wb3B1cCAubGF5b3V0LXBvcHVwLWxhYmVsIHtcbiAgZm9udC1zaXplOiAwLjllbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGNvbG9yOiAjN2M3YzdjO1xufVxuLmxheW91dC1lZGl0b3IgLmxheW91dC1wb3B1cCAubGF5b3V0LXBvcHVwLWFjdGlvbjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmM2Y0ZjU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5sYXlvdXQtZWRpdG9yIC5sYXlvdXQtcG9wdXAgLmxheW91dC1wb3B1cC1pbnB1dCA+IGxhYmVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGZvbnQtc2l6ZTogMC45ZW07XG59XG4iLCJAaW1wb3J0IFwiVmFyaWFibGVzLmxlc3NcIjtcclxuXHJcbi5sYXlvdXQtZWRpdG9yIHtcclxuICAgIC5sYXlvdXQtZWxlbWVudCB7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgICAgICAgcGFkZGluZzogMDtcclxuXHJcbiAgICAgICAgLy8gV2UgZG9uJ3QgZnVjayB3aXRoIHRoZSBsZWZ0IG1hcmdpbiBvZiBjb2x1bW5zLCBiZWNhdXNlIEJvb3RzdHJhcCB1c2VzIHRoZXNlIHRvIHJlbmRlciBjb2x1bW4gb2Zmc2V0cy5cclxuICAgICAgICAmOm5vdCgubGF5b3V0LWNvbHVtbikge1xyXG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIge1xyXG4gICAgICAgICAgICA+IC5sYXlvdXQtcGFuZWwge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTsgLy8gU2hvd24gb25seSBpbiBhY3RpdmUgb3IgZm9jdXNlZCBzdGF0ZXMuXHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XHJcbiAgICAgICAgICAgICAgICB6LWluZGV4OiAyMDtcclxuICAgICAgICAgICAgICAgIGhlaWdodDogMjVweDtcclxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgNnB4O1xyXG4gICAgICAgICAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcclxuICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMjVweDtcclxuICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcblxyXG4gICAgICAgICAgICAgICAgPiAubGF5b3V0LXBhbmVsLWl0ZW0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDI1cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMXB4IDZweCAwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgID4gLmxheW91dC1wYW5lbC1sYWJlbCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiBAZm9udC1zaXplIC0gMTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICA+IC5sYXlvdXQtcGFuZWwtYWN0aW9uIHtcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lOyAvLyBTaG93biBvbmx5IGluIGZvY3VzZWQgc3RhdGUuXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDI4cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPiAubGF5b3V0LXBhbmVsLW1haW4ge1xyXG4gICAgICAgICAgICAgICAgdG9wOiAtMjdweDtcclxuICAgICAgICAgICAgICAgIGxlZnQ6IC0ycHg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gV2hlbiBkcmFnZ2luZyBmcm9tIHRvb2xib3gsIGVsZW1lbnRzIHdpbGwgYmUgbGkgcmF0aGVyIHRoYW4gZGl2LlxyXG4gICAgbGkubGF5b3V0LWVsZW1lbnQge1xyXG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XHJcbiAgICB9XHJcblxyXG4gICAgJjpub3QoLmxheW91dC1lZGl0b3ItZHJhZ2dpbmcpIHtcclxuXHJcbiAgICAgICAgLmxheW91dC1lbGVtZW50LWFjdGl2ZSwgLmxheW91dC1lbGVtZW50LWZvY3VzZWQge1xyXG4gICAgICAgICAgICBib3JkZXItd2lkdGg6IDJweDtcclxuICAgICAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuXHJcbiAgICAgICAgICAgID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIge1xyXG4gICAgICAgICAgICAgICAgbWFyZ2luOiAtMnB4O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAubGF5b3V0LWVsZW1lbnQtYWN0aXZlIHtcclxuICAgICAgICAgICAgQGFjdGl2ZS1oaWdobGlnaHQ6IGZhZGUoIzY4Njg2OCwgMTAlKTtcclxuXHJcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogQGFjdGl2ZS1oaWdobGlnaHQ7XHJcblxyXG4gICAgICAgICAgICA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1wYW5lbC1tYWluIHtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOyAvLyBUbyByZXZlYWwuXHJcbiAgICAgICAgICAgICAgICB6LWluZGV4OiAzMDtcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBhY3RpdmUtaGlnaGxpZ2h0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAubGF5b3V0LWVsZW1lbnQtZm9jdXNlZCB7XHJcbiAgICAgICAgICAgIEBmb2N1c2VkLWhpZ2hsaWdodDogIzY0ODcyMTtcclxuICAgICAgICAgICAgQGZvY3VzZWQtdGV4dDogI2ZlZmVmZTtcclxuXHJcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogQGZvY3VzZWQtaGlnaGxpZ2h0O1xyXG5cclxuICAgICAgICAgICAgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciA+IC5sYXlvdXQtcGFuZWwge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7IC8vIFRvIHJldmVhbC5cclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBmb2N1c2VkLWhpZ2hsaWdodDtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiBAZm9jdXNlZC10ZXh0O1xyXG5cclxuICAgICAgICAgICAgICAgID4gLmxheW91dC1wYW5lbC1hY3Rpb24ge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsgLy8gVG8gcmV2ZWFsLlxyXG4gICAgICAgICAgICAgICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKEBmb2N1c2VkLWhpZ2hsaWdodCwgMTAlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICYuZGlzYWJsZWQge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBmYWRlKEBmb2N1c2VkLXRleHQsIDQwJSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBmb2N1c2VkLWhpZ2hsaWdodDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgJi5hY3RpdmUge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogbGlnaHRlbihzYXR1cmF0ZShzcGluKEBmb2N1c2VkLWhpZ2hsaWdodCwgLTEwKSwgMTAwJSksIDMwJSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0ZW4oQGZvY3VzZWQtaGlnaGxpZ2h0LCA1JSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0ZW4oQGZvY3VzZWQtaGlnaGxpZ2h0LCAxMCUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAubGF5b3V0LWVsZW1lbnQtc2VsZWN0ZWQge1xyXG4gICAgICAgICAgICBAc2VsZWN0ZWQtaGlnaGxpZ2h0OiAjNjQ4NzIxO1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBmYWRlKEBzZWxlY3RlZC1oaWdobGlnaHQsIDglKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnVpLXNvcnRhYmxlLXBsYWNlaG9sZGVyIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgIC5sYXlvdXQtZWxlbWVudC1kcm9wdGFyZ2V0IHtcclxuICAgICAgICBAZHJvcHRhcmdldC1oaWdobGlnaHQ6ICM2NDg3MjE7XHJcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDEycHggNnB4IGZhZGUoQGRyb3B0YXJnZXQtaGlnaGxpZ2h0LCA1MCUpO1xyXG5cclxuICAgICAgICAudWktc29ydGFibGUtcGxhY2Vob2xkZXIge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jazsgLy8gVG8gcmV2ZWFsLlxyXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IEBlbGVtZW50LW1pbi1oZWlnaHQgLSAycHg7XHJcbiAgICAgICAgICAgIGJvcmRlcjogMnB4IGRhc2hlZCBAZHJvcHRhcmdldC1oaWdobGlnaHQgIWltcG9ydGFudDtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZmFkZShAZHJvcHRhcmdldC1oaWdobGlnaHQsIDE2JSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEEgQ1NTIGZpeCBmb3IgbWVkaWEgaXRlbSBlbGVtZW50cy5cclxuICAgIC5tZWRpYS10aHVtYm5haWwge1xyXG4gICAgICAgIGltZyB7XHJcbiAgICAgICAgICAgIG1heC13aWR0aDoxMDAlO1xyXG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCJAaW1wb3J0IFwiVmFyaWFibGVzLmxlc3NcIjtcclxuXHJcbi5sYXlvdXQtZWRpdG9yIHtcclxuICAgIC5sYXlvdXQtY29udGFpbmVyIHtcclxuXHJcbiAgICAgICAgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciB7XHJcblxyXG4gICAgICAgICAgICA+IC5sYXlvdXQtY29udGFpbmVyLWNoaWxkcmVuLXBsYWNlaG9sZGVyIHtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICAgICAgICAgICAgbWFyZ2luOiBAY29udGFpbmVyLXBhZGRpbmcgLSAxcHg7XHJcbiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiBAZWxlbWVudC1taW4taGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggZGFzaGVkIGZhZGUoQGdyYXktdGV4dCwgNDAlKTtcclxuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IEBjb250YWluZXItcGFkZGluZztcclxuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiBAZm9udC1zaXplIC0gMTtcclxuICAgICAgICAgICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcclxuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuNjtcclxuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPiAubGF5b3V0LWNoaWxkcmVuIHtcclxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IEBjb250YWluZXItcGFkZGluZztcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBBbGwgYWRqYWNlbnQgbm9uLWNvbnRhaW5lciBjaGlsZHJlbiBuZWVkIHNvbWUgc3BhY2UgYmV0d2Vlbi4uLlxyXG4gICAgICAgICAgICAgICAgPiAubGF5b3V0LWVsZW1lbnQ6bm90KC5sYXlvdXQtY29udGFpbmVyKSArIC5sYXlvdXQtZWxlbWVudDpub3QoLmxheW91dC1jb250YWluZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiBAY29udGVudC1zcGFjaW5nO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIC4uLiBleGNlcHQgd2hlbiBqUXVlcnkgVUkgc29ydGFibGUgaGVscGVyIGlzIHRoZSBmaXJzdCBlbGVtZW50IChiZWNhdXNlIHRoYXQgb25lIGlzIGFic29sdXRlbHkgcG9zaXRpb25lZCBhbmQgXCJmbG9hdGluZ1wiKS5cclxuICAgICAgICAgICAgICAgID4gLnVpLXNvcnRhYmxlLWhlbHBlcjpmaXJzdC1jaGlsZCArIC5sYXlvdXQtZWxlbWVudDpub3QoLmxheW91dC1jb250YWluZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAmLmxheW91dC1jb250YWluZXItZW1wdHkge1xyXG4gICAgICAgICAgICAgICAgPiAubGF5b3V0LWNvbnRhaW5lci1jaGlsZHJlbi1wbGFjZWhvbGRlciB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDsgLy8gVG8gcmV2ZWFsLlxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgID4gLmxheW91dC1jaGlsZHJlbiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRvcDogMDtcclxuICAgICAgICAgICAgICAgICAgICByaWdodDogMDtcclxuICAgICAgICAgICAgICAgICAgICBib3R0b206IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmOm5vdCgubGF5b3V0LWVkaXRvci1kcmFnZ2luZykge1xyXG4gICAgICAgIC5sYXlvdXQtY29udGFpbmVyLmxheW91dC1lbGVtZW50LWZvY3VzZWQgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciA+IC5sYXlvdXQtY2hpbGRyZW4ge1xyXG4gICAgICAgICAgICA+IC5sYXlvdXQtZWxlbWVudDpub3QoLmxheW91dC1lbGVtZW50LWFjdGl2ZSkge1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggZGFzaGVkIGZhZGUoQGdyYXktdGV4dCwgNjAlKTtcclxuXHJcbiAgICAgICAgICAgICAgICA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIHtcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IC0xcHg7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgID4gLmxheW91dC1jb250YWluZXIgKyAubGF5b3V0LWNvbnRhaW5lcjpub3QoLmxheW91dC1lbGVtZW50LWFjdGl2ZSkge1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyLXRvcDogMDtcclxuXHJcbiAgICAgICAgICAgICAgICA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIHtcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIkBpbXBvcnQgXCJWYXJpYWJsZXMubGVzc1wiO1xyXG5cclxuLmxheW91dC1lZGl0b3Ige1xyXG4gICAgLmxheW91dC1jYW52YXMge1xyXG4gICAgICAgICNkdW1teSB7IC8vIE9ubHkgYWRkZWQgYmVjYXVzZSBXRSBkb2Vzbid0IGNvbXBpbGUgaWYgdGhlcmUgYXJlIG5vIHJ1bGVzLlxyXG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCJAaW1wb3J0IFwiVmFyaWFibGVzLmxlc3NcIjtcclxuXHJcbi5sYXlvdXQtZWRpdG9yIHtcclxuICAgIC5sYXlvdXQtcm93IHtcclxuICAgICAgICAmLmxheW91dC1lbGVtZW50LWZvY3VzZWQ6bm90KC5sYXlvdXQtZWxlbWVudC1kcm9wdGFyZ2V0KSA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1jaGlsZHJlbiB7XHJcbiAgICAgICAgICAgID4gLmxheW91dC1lbGVtZW50Om5vdCgubGF5b3V0LWVsZW1lbnQtYWN0aXZlKSB7XHJcbiAgICAgICAgICAgICAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkIGZhZGUoQGdyYXktdGV4dCwgNjAlKSAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICAgICAgPiAubGF5b3V0LWVsZW1lbnQtd3JhcHBlciB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTFweCAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICA+IC5sYXlvdXQtZWxlbWVudCArIC5sYXlvdXQtZWxlbWVudDpub3QoLmxheW91dC1lbGVtZW50LWFjdGl2ZSkge1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDAgIWltcG9ydGFudDtcclxuICAgICAgICAgICAgICAgID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIge1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iLCJAaW1wb3J0IFwiVmFyaWFibGVzLmxlc3NcIjtcclxuXHJcbi5sYXlvdXQtZWRpdG9yIHtcclxuICAgIC5sYXlvdXQtY29sdW1uIHtcclxuICAgICAgICA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyIHtcclxuICAgICAgICAgICAgPiAubGF5b3V0LWNvbHVtbi1yZXNpemUtYmFyIHtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgICB6LWluZGV4OiAzMDtcclxuICAgICAgICAgICAgICAgIHRvcDogMDtcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgICAgICAgICAgY3Vyc29yOiBjb2wtcmVzaXplO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICA+IC5sYXlvdXQtY29sdW1uLXJlc2l6ZS1iYXItbGVmdCB7XHJcbiAgICAgICAgICAgICAgICBsZWZ0OiAtNnB4O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICA+IC5sYXlvdXQtY29sdW1uLXJlc2l6ZS1iYXItcmlnaHQge1xyXG4gICAgICAgICAgICAgICAgcmlnaHQ6IC02cHg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYubGF5b3V0LWVsZW1lbnQtZm9jdXNlZCA+IC5sYXlvdXQtZWxlbWVudC13cmFwcGVyID4gLmxheW91dC1jb2x1bW4tcmVzaXplLWJhciB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCJAaW1wb3J0IFwiVmFyaWFibGVzLmxlc3NcIjtcclxuQGltcG9ydCBcIlJlc2V0Lmxlc3NcIjtcclxuXHJcbi5sYXlvdXQtZWRpdG9yIHtcclxuICAgIC5sYXlvdXQtY29udGVudCwgLmxheW91dC1odG1sIHtcclxuICAgICAgICBtaW4taGVpZ2h0OiAxZW07XHJcblxyXG4gICAgICAgID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIge1xyXG4gICAgICAgICAgICAubGF5b3V0LWNvbnRlbnQtbWFya3VwIHtcclxuXHJcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAycHg7XHJcbiAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47XHJcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogbm9ybWFsO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIFJlc2V0IHRvIEhUTUw1IFczQyBzdGFuZGFyZCBkZWZhdWx0IHN0eWxpbmcgd2l0aGluIGNvbnRlbnQuXHJcbiAgICAgICAgICAgICAgICAucmVzZXQoKTtcclxuXHJcbiAgICAgICAgICAgICAgICA+ICo6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsgLy8gSW1wb3J0YW50IGJlY2F1c2Ugc2l0ZS5jc3Mgb2YgdGhlIGFkbWluIHRoZW1lIHN0eWxlcyBoZWFkaW5nIG1hcmdpbnMgd2l0aCBhIHZlcnkgaGlnaCBzcGVjaWZpY2l0eS5cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICA+ICo6bGFzdC1jaGlsZCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmxheW91dC1jb250ZW50LWltYWdlLCAmLmxheW91dC1jb250ZW50LXZlY3Rvci1pbWFnZSB7XHJcbiAgICAgICAgICAgID4gLmxheW91dC1lbGVtZW50LXdyYXBwZXIgPiAubGF5b3V0LWNvbnRlbnQtbWFya3VwID4gaW1nIHtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmltZy1yZXNwb25zaXZlLCAuaW1nLXJlc3BvbnNpdmUgaW1nIHtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgfVxyXG59XHJcbiIsIu+7vy5yZXNldCgpIHtcclxuXHJcbiAgICAqIHtcclxuICAgICAgICBtYXJnaW46IDA7XHJcbiAgICAgICAgcGFkZGluZzogMDtcclxuICAgICAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcclxuICAgIH1cclxuXHJcbiAgICBhZGRyZXNzLCBibG9ja3F1b3RlLCBjZW50ZXIsIGRpdiwgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGZvcm0sXHJcbiAgICBoZWFkZXIsIGhyLCBsZWdlbmQsIGxpc3RpbmcsIHAsIHBsYWludGV4dCwgcHJlLCB4bXAge1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgfVxyXG5cclxuICAgIGJsb2NrcXVvdGUsIGZpZ3VyZSwgbGlzdGluZywgcCwgcGxhaW50ZXh0LCBwcmUsIHhtcCB7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogMWVtO1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDFlbTtcclxuICAgIH1cclxuXHJcbiAgICBibG9ja3F1b3RlLCBmaWd1cmUge1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiA0MHB4O1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogNDBweDtcclxuICAgIH1cclxuXHJcbiAgICBhZGRyZXNzIHtcclxuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XHJcbiAgICB9XHJcblxyXG4gICAgbGlzdGluZywgcGxhaW50ZXh0LCBwcmUsIHhtcCB7XHJcbiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcclxuICAgICAgICB3aGl0ZS1zcGFjZTogcHJlO1xyXG4gICAgfVxyXG5cclxuICAgIGNpdGUsIGRmbiwgZW0sIGksIHZhciB7XHJcbiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xyXG4gICAgfVxyXG5cclxuICAgIGIsIHN0cm9uZyB7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGRlcjtcclxuICAgIH1cclxuXHJcbiAgICBjb2RlLCBrYmQsIHNhbXAsIHR0IHtcclxuICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xyXG4gICAgfVxyXG5cclxuICAgIGJpZyB7XHJcbiAgICAgICAgZm9udC1zaXplOiBsYXJnZXI7XHJcbiAgICB9XHJcblxyXG4gICAgc21hbGwge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogc21hbGxlcjtcclxuICAgIH1cclxuXHJcbiAgICBzdWIge1xyXG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBzdWI7XHJcbiAgICB9XHJcblxyXG4gICAgc3VwIHtcclxuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogc3VwZXI7XHJcbiAgICB9XHJcblxyXG4gICAgc3ViLCBzdXAge1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7XHJcbiAgICAgICAgZm9udC1zaXplOiBzbWFsbGVyO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBydWJ5IHtcclxuICAgICAgICBkaXNwbGF5OiBydWJ5O1xyXG4gICAgfVxyXG5cclxuICAgIHJiIHtcclxuICAgICAgICBkaXNwbGF5OiBydWJ5LWJhc2U7XHJcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgIH1cclxuXHJcbiAgICBydCB7XHJcbiAgICAgICAgZGlzcGxheTogcnVieS10ZXh0O1xyXG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICAgICAgZm9udC1zaXplOiA1MCU7XHJcbiAgICAgICAgZm9udC12YXJpYW50LWVhc3QtYXNpYW46IHJ1Ynk7XHJcbiAgICAgICAgdGV4dC1lbXBoYXNpczogbm9uZTtcclxuICAgIH1cclxuXHJcbiAgICByYmMge1xyXG4gICAgICAgIGRpc3BsYXk6IHJ1YnktYmFzZS1jb250YWluZXI7XHJcbiAgICB9XHJcblxyXG4gICAgcnRjIHtcclxuICAgICAgICBkaXNwbGF5OiBydWJ5LXRleHQtY29udGFpbmVyO1xyXG4gICAgfVxyXG5cclxuICAgIHJ1YnksIHJiLCBydCwgcmJjLCBydGMge1xyXG4gICAgICAgIHVuaWNvZGUtYmlkaTogaXNvbGF0ZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgOmxpbmsge1xyXG4gICAgICAgIGNvbG9yOiAjMDAwMEVFO1xyXG4gICAgfVxyXG5cclxuICAgIDp2aXNpdGVkIHtcclxuICAgICAgICBjb2xvcjogIzU1MUE4QjtcclxuICAgIH1cclxuXHJcbiAgICA6bGluaywgOnZpc2l0ZWQge1xyXG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG4gICAgfVxyXG5cclxuICAgIGE6bGlua1tyZWx+PWhlbHBdLCBhOnZpc2l0ZWRbcmVsfj1oZWxwXSxcclxuICAgIGFyZWE6bGlua1tyZWx+PWhlbHBdLCBhcmVhOnZpc2l0ZWRbcmVsfj1oZWxwXSB7XHJcbiAgICAgICAgY3Vyc29yOiBoZWxwO1xyXG4gICAgfVxyXG5cclxuICAgIDpmb2N1cyB7XHJcbiAgICAgICAgb3V0bGluZTogYXV0bztcclxuICAgIH1cclxuXHJcbiAgICBtYXJrIHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiB5ZWxsb3c7XHJcbiAgICAgICAgY29sb3I6IGJsYWNrO1xyXG4gICAgfVxyXG4gICAgLyogdGhpcyBjb2xvciBpcyBqdXN0IGEgc3VnZ2VzdGlvbiBhbmQgY2FuIGJlIGNoYW5nZWQgYmFzZWQgb24gaW1wbGVtZW50YXRpb24gZmVlZGJhY2sgKi9cclxuICAgIGFiYnJbdGl0bGVdLCBhY3JvbnltW3RpdGxlXSB7XHJcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBkb3R0ZWQgdW5kZXJsaW5lO1xyXG4gICAgfVxyXG5cclxuICAgIGlucywgdSB7XHJcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsLCBzLCBzdHJpa2Uge1xyXG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoO1xyXG4gICAgfVxyXG5cclxuICAgIGJsaW5rIHtcclxuICAgICAgICB0ZXh0LWRlY29yYXRpb246IGJsaW5rO1xyXG4gICAgfVxyXG5cclxuICAgIHE6OmJlZm9yZSB7XHJcbiAgICAgICAgY29udGVudDogb3Blbi1xdW90ZTtcclxuICAgIH1cclxuXHJcbiAgICBxOjphZnRlciB7XHJcbiAgICAgICAgY29udGVudDogY2xvc2UtcXVvdGU7XHJcbiAgICB9XHJcblxyXG4gICAgYnIge1xyXG4gICAgICAgIGNvbnRlbnQ6ICdcXEEnO1xyXG4gICAgICAgIHdoaXRlLXNwYWNlOiBwcmU7XHJcbiAgICB9XHJcbiAgICAvKiB0aGlzIGFsc28gaGFzIGJpZGkgaW1wbGljYXRpb25zICovXHJcbiAgICBub2JyIHtcclxuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgfVxyXG5cclxuICAgIHdiciB7XHJcbiAgICAgICAgY29udGVudDogJ1xcMjAwQic7XHJcbiAgICB9XHJcbiAgICAvKiB0aGlzIGFsc28gaGFzIGJpZGkgaW1wbGljYXRpb25zICovXHJcbiAgICBub2JyIHdiciB7XHJcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcclxuICAgIH1cclxuXHJcbiAgICBhcnRpY2xlLCBhc2lkZSwgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgaGdyb3VwLCBuYXYsIHNlY3Rpb24ge1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgfVxyXG5cclxuICAgIGgxIHtcclxuICAgICAgICBtYXJnaW4tdG9wOiAwLjY3ZW07XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC42N2VtO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMi4wMGVtO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgfVxyXG5cclxuICAgIGgyIHtcclxuICAgICAgICBtYXJnaW4tdG9wOiAwLjgzZW07XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC44M2VtO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMS41MGVtO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgfVxyXG5cclxuICAgIGgzIHtcclxuICAgICAgICBtYXJnaW4tdG9wOiAxLjAwZW07XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMS4wMGVtO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMS4xN2VtO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgfVxyXG5cclxuICAgIGg0IHtcclxuICAgICAgICBtYXJnaW4tdG9wOiAxLjMzZW07XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMS4zM2VtO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMS4wMGVtO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgfVxyXG5cclxuICAgIGg1IHtcclxuICAgICAgICBtYXJnaW4tdG9wOiAxLjY3ZW07XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMS42N2VtO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMC44M2VtO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgfVxyXG5cclxuICAgIGg2IHtcclxuICAgICAgICBtYXJnaW4tdG9wOiAyLjMzZW07XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMi4zM2VtO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMC42N2VtO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgfVxyXG5cclxuICAgIGRpciwgZGQsIGRsLCBkdCwgb2wsIHVsIHtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIH1cclxuXHJcbiAgICBsaSB7XHJcbiAgICAgICAgZGlzcGxheTogbGlzdC1pdGVtO1xyXG4gICAgfVxyXG5cclxuICAgIGRpciwgZGwsIG9sLCB1bCB7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogMWVtO1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDFlbTtcclxuICAgIH1cclxuXHJcbiAgICAgICAgZGlyIGRpciwgZGlyIGRsLCBkaXIgb2wsIGRpciB1bCxcclxuICAgICAgICBkbCBkaXIsIGRsIGRsLCBkbCBvbCwgZGwgdWwsXHJcbiAgICAgICAgb2wgZGlyLCBvbCBkbCwgb2wgb2wsIG9sIHVsLFxyXG4gICAgICAgIHVsIGRpciwgdWwgZGwsIHVsIG9sLCB1bCB1bCB7XHJcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIGRkIHtcclxuICAgICAgICBtYXJnaW4tbGVmdDogNDBweDtcclxuICAgIH1cclxuICAgIC8qIExUUi1zcGVjaWZpYzogdXNlICdtYXJnaW4tcmlnaHQnIGZvciBydGwgZWxlbWVudHMgKi9cclxuICAgIGRpciwgb2wsIHVsIHtcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDQwcHg7XHJcbiAgICB9XHJcbiAgICAvKiBMVFItc3BlY2lmaWM6IHVzZSAncGFkZGluZy1yaWdodCcgZm9yIHJ0bCBlbGVtZW50cyAqL1xyXG4gICAgb2wge1xyXG4gICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogZGVjaW1hbDtcclxuICAgIH1cclxuXHJcbiAgICBkaXIsIHVsIHtcclxuICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IGRpc2M7XHJcbiAgICB9XHJcblxyXG4gICAgICAgIGRpciBkaXIsIGRpciB1bCxcclxuICAgICAgICBvbCBkaXIsIG9sIHVsLFxyXG4gICAgICAgIHVsIGRpciwgdWwgdWwge1xyXG4gICAgICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IGNpcmNsZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBkaXIgZGlyIGRpciwgZGlyIGRpciB1bCxcclxuICAgICAgICAgICAgZGlyIG9sIGRpciwgZGlyIG9sIHVsLFxyXG4gICAgICAgICAgICBkaXIgdWwgZGlyLCBkaXIgdWwgdWwsXHJcbiAgICAgICAgICAgIG9sIGRpciBkaXIsIG9sIGRpciB1bCxcclxuICAgICAgICAgICAgb2wgb2wgZGlyLCBvbCBvbCB1bCxcclxuICAgICAgICAgICAgb2wgdWwgZGlyLCBvbCB1bCB1bCxcclxuICAgICAgICAgICAgdWwgZGlyIGRpciwgdWwgZGlyIHVsLFxyXG4gICAgICAgICAgICB1bCBvbCBkaXIsIHVsIG9sIHVsLFxyXG4gICAgICAgICAgICB1bCB1bCBkaXIsIHVsIHVsIHVsIHtcclxuICAgICAgICAgICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogc3F1YXJlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgdGFibGUge1xyXG4gICAgICAgIGRpc3BsYXk6IHRhYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIGNhcHRpb24ge1xyXG4gICAgICAgIGRpc3BsYXk6IHRhYmxlLWNhcHRpb247XHJcbiAgICB9XHJcblxyXG4gICAgY29sZ3JvdXAsIGNvbGdyb3VwW2hpZGRlbl0ge1xyXG4gICAgICAgIGRpc3BsYXk6IHRhYmxlLWNvbHVtbi1ncm91cDtcclxuICAgIH1cclxuXHJcbiAgICBjb2wsIGNvbFtoaWRkZW5dIHtcclxuICAgICAgICBkaXNwbGF5OiB0YWJsZS1jb2x1bW47XHJcbiAgICB9XHJcblxyXG4gICAgdGhlYWQsIHRoZWFkW2hpZGRlbl0ge1xyXG4gICAgICAgIGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDtcclxuICAgIH1cclxuXHJcbiAgICB0Ym9keSwgdGJvZHlbaGlkZGVuXSB7XHJcbiAgICAgICAgZGlzcGxheTogdGFibGUtcm93LWdyb3VwO1xyXG4gICAgfVxyXG5cclxuICAgIHRmb290LCB0Zm9vdFtoaWRkZW5dIHtcclxuICAgICAgICBkaXNwbGF5OiB0YWJsZS1mb290ZXItZ3JvdXA7XHJcbiAgICB9XHJcblxyXG4gICAgdHIsIHRyW2hpZGRlbl0ge1xyXG4gICAgICAgIGRpc3BsYXk6IHRhYmxlLXJvdztcclxuICAgIH1cclxuXHJcbiAgICB0ZCwgdGgsIHRkW2hpZGRlbl0sIHRoW2hpZGRlbl0ge1xyXG4gICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XHJcbiAgICB9XHJcblxyXG4gICAgICAgIGNvbGdyb3VwW2hpZGRlbl0sIGNvbFtoaWRkZW5dLCB0aGVhZFtoaWRkZW5dLCB0Ym9keVtoaWRkZW5dLFxyXG4gICAgICAgIHRmb290W2hpZGRlbl0sIHRyW2hpZGRlbl0sIHRkW2hpZGRlbl0sIHRoW2hpZGRlbl0ge1xyXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBjb2xsYXBzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgdGFibGUge1xyXG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICAgICAgYm9yZGVyLXNwYWNpbmc6IDJweDtcclxuICAgICAgICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xyXG4gICAgICAgIHRleHQtaW5kZW50OiBpbml0aWFsO1xyXG4gICAgfVxyXG5cclxuICAgIHRkLCB0aCB7XHJcbiAgICAgICAgcGFkZGluZzogMXB4O1xyXG4gICAgfVxyXG5cclxuICAgIHRoIHtcclxuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgIH1cclxuXHJcbiAgICB0aGVhZCwgdGJvZHksIHRmb290LCB0YWJsZSA+IHRyIHtcclxuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgfVxyXG5cclxuICAgIHRyLCB0ZCwgdGgge1xyXG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBpbmhlcml0O1xyXG4gICAgfVxyXG5cclxuICAgIHRhYmxlLCB0ZCwgdGgge1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogZ3JheTtcclxuICAgIH1cclxuXHJcbiAgICB0aGVhZCwgdGJvZHksIHRmb290LCB0ciB7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiBpbmhlcml0O1xyXG4gICAgfVxyXG4gICAgLyp0YWJsZVtydWxlcz1ub25lIGldLCB0YWJsZVtydWxlcz1ncm91cHMgaV0sIHRhYmxlW3J1bGVzPXJvd3MgaV0sXHJcbnRhYmxlW3J1bGVzPWNvbHMgaV0sIHRhYmxlW3J1bGVzPWFsbCBpXSwgdGFibGVbZnJhbWU9dm9pZCBpXSxcclxudGFibGVbZnJhbWU9YWJvdmUgaV0sIHRhYmxlW2ZyYW1lPWJlbG93IGldLCB0YWJsZVtmcmFtZT1oc2lkZXMgaV0sXHJcbnRhYmxlW2ZyYW1lPWxocyBpXSwgdGFibGVbZnJhbWU9cmhzIGldLCB0YWJsZVtmcmFtZT12c2lkZXMgaV0sXHJcbnRhYmxlW2ZyYW1lPWJveCBpXSwgdGFibGVbZnJhbWU9Ym9yZGVyIGldLFxyXG50YWJsZVtydWxlcz1ub25lIGldID4gdHIgPiB0ZCwgdGFibGVbcnVsZXM9bm9uZSBpXSA+IHRyID4gdGgsXHJcbnRhYmxlW3J1bGVzPWdyb3VwcyBpXSA+IHRyID4gdGQsIHRhYmxlW3J1bGVzPWdyb3VwcyBpXSA+IHRyID4gdGgsXHJcbnRhYmxlW3J1bGVzPXJvd3MgaV0gPiB0ciA+IHRkLCB0YWJsZVtydWxlcz1yb3dzIGldID4gdHIgPiB0aCxcclxudGFibGVbcnVsZXM9Y29scyBpXSA+IHRyID4gdGQsIHRhYmxlW3J1bGVzPWNvbHMgaV0gPiB0ciA+IHRoLFxyXG50YWJsZVtydWxlcz1hbGwgaV0gPiB0ciA+IHRkLCB0YWJsZVtydWxlcz1hbGwgaV0gPiB0ciA+IHRoLFxyXG50YWJsZVtydWxlcz1ub25lIGldID4gdGhlYWQgPiB0ciA+IHRkLCB0YWJsZVtydWxlcz1ub25lIGldID4gdGhlYWQgPiB0ciA+IHRoLFxyXG50YWJsZVtydWxlcz1ncm91cHMgaV0gPiB0aGVhZCA+IHRyID4gdGQsIHRhYmxlW3J1bGVzPWdyb3VwcyBpXSA+IHRoZWFkID4gdHIgPiB0aCxcclxudGFibGVbcnVsZXM9cm93cyBpXSA+IHRoZWFkID4gdHIgPiB0ZCwgdGFibGVbcnVsZXM9cm93cyBpXSA+IHRoZWFkID4gdHIgPiB0aCxcclxudGFibGVbcnVsZXM9Y29scyBpXSA+IHRoZWFkID4gdHIgPiB0ZCwgdGFibGVbcnVsZXM9Y29scyBpXSA+IHRoZWFkID4gdHIgPiB0aCxcclxudGFibGVbcnVsZXM9YWxsIGldID4gdGhlYWQgPiB0ciA+IHRkLCB0YWJsZVtydWxlcz1hbGwgaV0gPiB0aGVhZCA+IHRyID4gdGgsXHJcbnRhYmxlW3J1bGVzPW5vbmUgaV0gPiB0Ym9keSA+IHRyID4gdGQsIHRhYmxlW3J1bGVzPW5vbmUgaV0gPiB0Ym9keSA+IHRyID4gdGgsXHJcbnRhYmxlW3J1bGVzPWdyb3VwcyBpXSA+IHRib2R5ID4gdHIgPiB0ZCwgdGFibGVbcnVsZXM9Z3JvdXBzIGldID4gdGJvZHkgPiB0ciA+IHRoLFxyXG50YWJsZVtydWxlcz1yb3dzIGldID4gdGJvZHkgPiB0ciA+IHRkLCB0YWJsZVtydWxlcz1yb3dzIGldID4gdGJvZHkgPiB0ciA+IHRoLFxyXG50YWJsZVtydWxlcz1jb2xzIGldID4gdGJvZHkgPiB0ciA+IHRkLCB0YWJsZVtydWxlcz1jb2xzIGldID4gdGJvZHkgPiB0ciA+IHRoLFxyXG50YWJsZVtydWxlcz1hbGwgaV0gPiB0Ym9keSA+IHRyID4gdGQsIHRhYmxlW3J1bGVzPWFsbCBpXSA+IHRib2R5ID4gdHIgPiB0aCxcclxudGFibGVbcnVsZXM9bm9uZSBpXSA+IHRmb290ID4gdHIgPiB0ZCwgdGFibGVbcnVsZXM9bm9uZSBpXSA+IHRmb290ID4gdHIgPiB0aCxcclxudGFibGVbcnVsZXM9Z3JvdXBzIGldID4gdGZvb3QgPiB0ciA+IHRkLCB0YWJsZVtydWxlcz1ncm91cHMgaV0gPiB0Zm9vdCA+IHRyID4gdGgsXHJcbnRhYmxlW3J1bGVzPXJvd3MgaV0gPiB0Zm9vdCA+IHRyID4gdGQsIHRhYmxlW3J1bGVzPXJvd3MgaV0gPiB0Zm9vdCA+IHRyID4gdGgsXHJcbnRhYmxlW3J1bGVzPWNvbHMgaV0gPiB0Zm9vdCA+IHRyID4gdGQsIHRhYmxlW3J1bGVzPWNvbHMgaV0gPiB0Zm9vdCA+IHRyID4gdGgsXHJcbnRhYmxlW3J1bGVzPWFsbCBpXSA+IHRmb290ID4gdHIgPiB0ZCwgdGFibGVbcnVsZXM9YWxsIGldID4gdGZvb3QgPiB0ciA+IHRoIHtcclxuICAgIGJvcmRlci1jb2xvcjogYmxhY2s7XHJcbn0qL1xyXG4gICAgaW5wdXQsIHNlbGVjdCwgb3B0aW9uLCBvcHRncm91cCwgYnV0dG9uLCB0ZXh0YXJlYSwga2V5Z2VuIHtcclxuICAgICAgICB0ZXh0LWluZGVudDogaW5pdGlhbDtcclxuICAgIH1cclxuXHJcbiAgICB0ZXh0YXJlYSB7XHJcbiAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xyXG4gICAgfVxyXG5cclxuICAgIGlucHV0W3R5cGU9XCJyYWRpb1wiXSwgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLCBpbnB1dFt0eXBlPVwicmVzZXRcIl0sIGlucHV0W3R5cGU9XCJidXR0b25cIl0sXHJcbiAgICBpbnB1dFt0eXBlPVwic3VibWl0XCJdLCBzZWxlY3QsIGJ1dHRvbiB7XHJcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIH1cclxuXHJcbiAgICBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdLCBidXR0b24ge1xyXG4gICAgICAgIHBhZGRpbmc6IDAuM2VtIDAuNWVtO1xyXG4gICAgfVxyXG5cclxuICAgIGhyIHtcclxuICAgICAgICBjb2xvcjogZ3JheTtcclxuICAgICAgICBib3JkZXItc3R5bGU6IGluc2V0O1xyXG4gICAgICAgIGJvcmRlci13aWR0aDogMXB4O1xyXG4gICAgICAgIG1hcmdpbjogMC41ZW0gYXV0bztcclxuICAgIH1cclxuXHJcbiAgICBmaWVsZHNldCB7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDJweDtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDJweDtcclxuICAgICAgICBib3JkZXI6IGdyb292ZSAycHggVGhyZWVERmFjZTtcclxuICAgICAgICBwYWRkaW5nOiAwLjM1ZW0gMC42MjVlbSAwLjc1ZW07XHJcbiAgICB9XHJcblxyXG4gICAgbGVnZW5kIHtcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDJweDtcclxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAycHg7XHJcbiAgICB9XHJcbn1cclxuIiwiQGltcG9ydCBcIlZhcmlhYmxlcy5sZXNzXCI7XHJcblxyXG4ubGF5b3V0LWVkaXRvciB7XHJcbiAgICA+IC5sYXlvdXQtdG9vbGJveC13cmFwcGVyIHtcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IEBjb250YWluZXItcGFkZGluZztcclxuICAgICAgICB3aWR0aDogMjIwcHg7XHJcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XHJcblxyXG4gICAgICAgID4gLmxheW91dC10b29sYm94IHtcclxuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgQGdyYXktYm9yZGVyO1xyXG4gICAgICAgICAgICB3aWR0aDogMjIwcHg7XHJcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDQwMHB4O1xyXG4gICAgICAgICAgICBwYWRkaW5nOiBAY29udGFpbmVyLXBhZGRpbmcgLyAyO1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAZ3JheS1iZztcclxuXHJcbiAgICAgICAgICAgICYuc3RpY2t5LXRvcCB7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICAgICAgICAgICAgICB0b3A6IDA7XHJcbiAgICAgICAgICAgICAgICBtYXgtaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgJi5zdGlja3ktYm90dG9tIHtcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgICAgIGJvdHRvbTogMDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLmxheW91dC10b29sYm94LWdyb3VwIHtcclxuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IEBjb250YWluZXItcGFkZGluZztcclxuXHJcbiAgICAgICAgICAgICAgICAubGF5b3V0LXRvb2xib3gtZ3JvdXAtaGVhZGluZyB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogQGNvbnRhaW5lci1wYWRkaW5nIC8gMztcclxuICAgICAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogQGNvbnRhaW5lci1wYWRkaW5nIC8gMztcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udDogbm9ybWFsIG5vcm1hbCBub3JtYWwgMTRweC8xIEZvbnRBd2Vzb21lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXFxmMGQ3XCI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICYuY29sbGFwc2VkIHtcclxuICAgICAgICAgICAgICAgICAgICAubGF5b3V0LXRvb2xib3gtZ3JvdXAtaGVhZGluZzpiZWZvcmUge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcIlxcZjBkYVwiO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLmxheW91dC10b29sYm94LWl0ZW1zIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLmxheW91dC10b29sYm94LXNlY3Rpb24gKyAubGF5b3V0LXRvb2xib3gtc2VjdGlvbiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogQGNvbnRhaW5lci1wYWRkaW5nIC8gMztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAubGF5b3V0LXRvb2xib3gtaXRlbSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgQGdyYXktYm9yZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogKEBjb250YWluZXItcGFkZGluZyAtIDMpIEBjb250YWluZXItcGFkZGluZztcclxuICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250OiBub3JtYWwgbm9ybWFsIG5vcm1hbCAxNHB4LzEgRm9udEF3ZXNvbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICArIC5sYXlvdXQtdG9vbGJveC1pdGVtIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogQGNvbnRhaW5lci1wYWRkaW5nIC8gMztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgKyAubGF5b3V0LXRvb2xib3gtZ3JvdXAge1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IEBjb250YWluZXItcGFkZGluZyAvIDI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiQGltcG9ydCBcIlZhcmlhYmxlcy5sZXNzXCI7XHJcblxyXG4ubGF5b3V0LWVkaXRvciB7XHJcbiAgICAubGF5b3V0LXBvcHVwIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lOyAvLyBTaG93biBvbmx5IGluIGFjdGl2ZSBvciBmb2N1c2VkIHN0YXRlcy5cclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgbWFyZ2luOiAwO1xyXG4gICAgICAgIC1tb3otYm94LXNoYWRvdzogM3B4IDNweCAxMXB4IDAgcmdiYSg1MCwgNTAsIDUwLCAwLjUpO1xyXG4gICAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogM3B4IDNweCAxMXB4IDAgcmdiYSg1MCwgNTAsIDUwLCAwLjUpO1xyXG4gICAgICAgIGJveC1zaGFkb3c6IDNweCAzcHggMTFweCAwIHJnYmEoNTAsIDUwLCA1MCwgMC41KTtcclxuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBAZ3JheS1ib3JkZXI7XHJcbiAgICAgICAgcGFkZGluZzogMnB4IDA7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNztcclxuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xyXG4gICAgICAgIHotaW5kZXg6IDIwO1xyXG4gICAgICAgIGNvbG9yOiBAZ3JheS10ZXh0O1xyXG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xyXG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcclxuXHJcbiAgICAgICAgLmxheW91dC1wb3B1cC1mbGV4IHtcclxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgcGFkZGluZzogMnB4IDVweDtcclxuXHJcbiAgICAgICAgICAgIC5sYXlvdXQtcG9wdXAtY29sdW1uICsgLmxheW91dC1wb3B1cC1jb2x1bW4ge1xyXG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDRweDtcclxuICAgICAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgZmFkZShncmF5LCAxNSUpO1xyXG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA0cHg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5sYXlvdXQtcG9wdXAtaXRlbSB7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDRweCA2cHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAubGF5b3V0LXBvcHVwLWxhYmVsIHtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAwLjllbTtcclxuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgICAgIGNvbG9yOiBAZ3JheS10ZXh0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmxheW91dC1wb3B1cC1hY3Rpb246aG92ZXIge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAZ3JheS1iZztcclxuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmxheW91dC1wb3B1cC1pbnB1dCB7XHJcbiAgICAgICAgICAgID4gbGFiZWwge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOWVtO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== */ \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Styles/LayoutEditor.min.css b/src/Orchard.Web/Modules/Orchard.Layouts/Styles/LayoutEditor.min.css index 0d88e7535..0b0301724 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Styles/LayoutEditor.min.css +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Styles/LayoutEditor.min.css @@ -1 +1 @@ -.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup address,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup cite,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dfn,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup em,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup i,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup var,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup address,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup cite,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dfn,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup em,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup i,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup var{font-style:italic}.layout-editor{display:-webkit-flex;display:-ms-flexbox;display:flex;margin-top:1em;font-size:14px;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch}.layout-editor>.layout-canvas-wrapper{-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;background-color:#f3f4f5;border:1px solid #e4e5e6}.layout-editor>.layout-canvas-wrapper>.layout-toolbar-container{display:none;margin:12px 12px 0;min-height:71px}.layout-editor>.layout-canvas-wrapper>.layout-toolbar-container>.mce-panel{width:100%!important}.layout-editor .layout-element{position:relative;margin-top:0;margin-right:0;margin-bottom:0;padding:0}.layout-editor .layout-element:not(.layout-column){margin-left:0}.layout-editor .layout-element>.layout-element-wrapper>.layout-panel{display:none;position:absolute;margin:0;z-index:20;height:25px;padding:0 6px;list-style:none;white-space:nowrap;line-height:25px;vertical-align:middle}.layout-editor .layout-element>.layout-element-wrapper>.layout-panel>.layout-panel-item{display:inline-block;height:25px;padding:1px 6px 0}.layout-editor .layout-element>.layout-element-wrapper>.layout-panel>.layout-panel-label{font-size:13px}.layout-editor .layout-element>.layout-element-wrapper>.layout-panel>.layout-panel-action{display:none;width:28px;cursor:pointer;text-align:center}.layout-editor .layout-element>.layout-element-wrapper>.layout-panel-main{top:-27px;left:-2px}.layout-editor li.layout-element{list-style:none}.layout-editor:not(.layout-editor-dragging) .layout-element-active,.layout-editor:not(.layout-editor-dragging) .layout-element-focused{border-width:2px;border-style:solid}.layout-editor:not(.layout-editor-dragging) .layout-element-active>.layout-element-wrapper,.layout-editor:not(.layout-editor-dragging) .layout-element-focused>.layout-element-wrapper{margin:-2px}.layout-editor:not(.layout-editor-dragging) .layout-element-active{border-color:rgba(104,104,104,.1)}.layout-editor:not(.layout-editor-dragging) .layout-element-active>.layout-element-wrapper>.layout-panel-main{display:block;z-index:30;background-color:rgba(104,104,104,.1)}.layout-editor:not(.layout-editor-dragging) .layout-element-focused{border-color:#648721}.layout-editor:not(.layout-editor-dragging) .layout-element-focused>.layout-element-wrapper>.layout-panel{display:block;background-color:#648721;color:#fefefe}.layout-editor:not(.layout-editor-dragging) .layout-element-focused>.layout-element-wrapper>.layout-panel>.layout-panel-action{display:inline-block}.layout-editor:not(.layout-editor-dragging) .layout-element-focused>.layout-element-wrapper>.layout-panel>.layout-panel-action:hover{background-color:#82b02b}.layout-editor:not(.layout-editor-dragging) .layout-element-focused>.layout-element-wrapper>.layout-panel>.layout-panel-action.disabled{cursor:default;color:rgba(254,254,254,.4)}.layout-editor:not(.layout-editor-dragging) .layout-element-focused>.layout-element-wrapper>.layout-panel>.layout-panel-action.disabled:hover{background-color:#648721}.layout-editor:not(.layout-editor-dragging) .layout-element-focused>.layout-element-wrapper>.layout-panel>.layout-panel-action.active{color:#deff42;background-color:#739b26}.layout-editor:not(.layout-editor-dragging) .layout-element-focused>.layout-element-wrapper>.layout-panel>.layout-panel-action.active:hover{background-color:#82b02b}.layout-editor:not(.layout-editor-dragging) .layout-element-selected{background-color:rgba(100,135,33,.08)}.layout-editor .ui-sortable-placeholder{display:none}.layout-editor .layout-element-droptarget{box-shadow:inset 0 0 12px 6px rgba(100,135,33,.5)}.layout-editor .layout-element-droptarget .ui-sortable-placeholder{display:block;visibility:visible!important;min-height:78px;border:2px dashed #648721!important;background-color:rgba(100,135,33,.16)}.layout-editor .media-thumbnail img{max-width:100%;max-height:100%}.layout-editor .layout-container>.layout-element-wrapper>.layout-container-children-placeholder{display:none;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin:11px;min-height:80px;border:1px dashed rgba(124,124,124,.4);border-radius:4px;padding:12px;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;font-size:13px;font-style:italic;opacity:.6;text-align:center}.layout-editor .layout-container>.layout-element-wrapper>.layout-children{padding:12px}.layout-editor .layout-container>.layout-element-wrapper>.layout-children>.layout-element:not(.layout-container)+.layout-element:not(.layout-container){margin-top:12px}.layout-editor .layout-container>.layout-element-wrapper>.layout-children>.ui-sortable-helper:first-child+.layout-element:not(.layout-container){margin-top:0}.layout-editor .layout-container>.layout-element-wrapper.layout-container-empty>.layout-container-children-placeholder{display:-webkit-flex;display:-ms-flexbox;display:flex}.layout-editor .layout-container>.layout-element-wrapper.layout-container-empty>.layout-children{position:absolute;top:0;right:0;bottom:0;left:0}.layout-editor:not(.layout-editor-dragging) .layout-container.layout-element-focused>.layout-element-wrapper>.layout-children>.layout-element:not(.layout-element-active){border:1px dashed rgba(124,124,124,.6)}.layout-editor:not(.layout-editor-dragging) .layout-container.layout-element-focused>.layout-element-wrapper>.layout-children>.layout-element:not(.layout-element-active)>.layout-element-wrapper{margin:-1px}.layout-editor:not(.layout-editor-dragging) .layout-container.layout-element-focused>.layout-element-wrapper>.layout-children>.layout-container+.layout-container:not(.layout-element-active){border-top:0}.layout-editor:not(.layout-editor-dragging) .layout-container.layout-element-focused>.layout-element-wrapper>.layout-children>.layout-container+.layout-container:not(.layout-element-active)>.layout-element-wrapper{margin-top:0}.layout-editor .layout-canvas #dummy{display:none}.layout-editor .layout-row.layout-element-focused:not(.layout-element-droptarget)>.layout-element-wrapper>.layout-children>.layout-element:not(.layout-element-active){border-top:1px dashed rgba(124,124,124,.6)!important}.layout-editor .layout-row.layout-element-focused:not(.layout-element-droptarget)>.layout-element-wrapper>.layout-children>.layout-element:not(.layout-element-active)>.layout-element-wrapper{margin-top:-1px!important}.layout-editor .layout-row.layout-element-focused:not(.layout-element-droptarget)>.layout-element-wrapper>.layout-children>.layout-element+.layout-element:not(.layout-element-active){border-left:0!important}.layout-editor .layout-row.layout-element-focused:not(.layout-element-droptarget)>.layout-element-wrapper>.layout-children>.layout-element+.layout-element:not(.layout-element-active)>.layout-element-wrapper{margin-left:0!important}.layout-editor .layout-column>.layout-element-wrapper>.layout-column-resize-bar{display:none;position:absolute;z-index:30;top:0;width:16px;height:100%;cursor:col-resize}.layout-editor .layout-column.layout-element-focused>.layout-element-wrapper>.layout-column-resize-bar,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup address,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup blockquote,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup center,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup div,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup figcaption,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup figure,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup footer,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup form,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup header,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup hr,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup legend,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup listing,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup p,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup plaintext,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup pre,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup xmp,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup address,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup blockquote,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup center,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup div,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup figcaption,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup figure,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup footer,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup form,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup header,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup hr,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup legend,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup listing,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup p,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup plaintext,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup pre,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup xmp{display:block}.layout-editor .layout-column>.layout-element-wrapper>.layout-column-resize-bar-left{left:-6px}.layout-editor .layout-column>.layout-element-wrapper>.layout-column-resize-bar-right{right:-6px}.layout-editor .layout-content,.layout-editor .layout-html{min-height:1em}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup{padding:2px;overflow-x:hidden;line-height:normal}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup *,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup *{margin:0;padding:0;box-sizing:content-box}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup blockquote,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup figure,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup listing,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup p,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup plaintext,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup pre,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup xmp,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup blockquote,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup figure,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup listing,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup p,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup plaintext,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup pre,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup xmp{margin-top:1em;margin-bottom:1em}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup blockquote,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup figure,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup blockquote,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup figure{margin-left:40px;margin-right:40px}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup listing,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup plaintext,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup pre,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup xmp,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup listing,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup plaintext,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup pre,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup xmp{font-family:monospace;white-space:pre}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup b,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup strong,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup b,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup strong{font-weight:bolder}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup code,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup kbd,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup samp,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tt,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup code,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup kbd,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup samp,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tt{font-family:monospace}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup big,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup big{font-size:larger}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup small,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup small{font-size:smaller}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup sub,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup sub{vertical-align:sub}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup sup,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup sup{vertical-align:super}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup sub,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup sup,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup sub,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup sup{line-height:normal;font-size:smaller}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ruby,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ruby{display:ruby}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup rb,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup rb{display:ruby-base;white-space:nowrap}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup rt,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup rt{display:ruby-text;white-space:nowrap;font-size:50%;font-variant-east-asian:ruby;-webkit-text-emphasis:none;text-emphasis:none}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup rbc,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup rbc{display:ruby-base-container}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup rtc,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup rtc{display:ruby-text-container}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup article,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup aside,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dd,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dl,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dt,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup h1,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup h2,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup h3,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup h4,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup h5,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup h6,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup hgroup,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup nav,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup section,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup article,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup aside,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dd,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dl,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dt,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup h1,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup h2,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup h3,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup h4,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup h5,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup h6,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup hgroup,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup nav,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup section,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul{display:block}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup rb,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup rbc,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup rt,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup rtc,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ruby,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup rb,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup rbc,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup rt,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup rtc,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ruby{unicode-bidi:isolate}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup :link,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup :link{color:#00E}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup :visited,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup :visited{color:#551A8B}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup :link,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup :visited,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup :link,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup :visited{text-decoration:underline}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup a:link[rel~=help],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup a:visited[rel~=help],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup area:link[rel~=help],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup area:visited[rel~=help],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup a:link[rel~=help],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup a:visited[rel~=help],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup area:link[rel~=help],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup area:visited[rel~=help]{cursor:help}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup :focus,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup :focus{outline:auto}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup mark,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup mark{background:#ff0;color:#000}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup abbr[title],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup acronym[title],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup abbr[title],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup acronym[title]{text-decoration:dotted underline}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ins,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup u,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ins,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup u{text-decoration:underline}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup del,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup s,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup strike,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup del,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup s,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup strike{text-decoration:line-through}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup blink,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup blink{text-decoration:blink}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup q::before,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup q::before{content:open-quote}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup q::after,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup q::after{content:close-quote}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup br,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup br{content:'\A';white-space:pre}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup nobr,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup nobr{white-space:nowrap}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup wbr,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup wbr{content:'\200B'}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup nobr wbr,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup nobr wbr{white-space:normal}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup h1,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup h1{margin-top:.67em;margin-bottom:.67em;font-size:2em;font-weight:700}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup h2,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup h2{margin-top:.83em;margin-bottom:.83em;font-size:1.5em;font-weight:700}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup h3,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup h3{margin-top:1em;margin-bottom:1em;font-size:1.17em;font-weight:700}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup h4,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup h4{margin-top:1.33em;margin-bottom:1.33em;font-size:1em;font-weight:700}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup h5,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup h5{margin-top:1.67em;margin-bottom:1.67em;font-size:.83em;font-weight:700}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup h6,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup h6{margin-top:2.33em;margin-bottom:2.33em;font-size:.67em;font-weight:700}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup li,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup li{display:list-item}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dl,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dl,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul{margin-top:1em;margin-bottom:1em}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir dl,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir ol,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir ul,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dl dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dl dl,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dl ol,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dl ul,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol dl,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol ol,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol ul,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul dl,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul ol,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir dl,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir ol,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dl dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dl dl,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dl ol,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dl ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol dl,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol ol,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul dl,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul ol,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul ul{margin-top:0;margin-bottom:0}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dd,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dd{margin-left:40px}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul{padding-left:40px}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol{list-style-type:decimal}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul{list-style-type:disc}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir ul,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol ul,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul ul{list-style-type:circle}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir dir dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir dir ul,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir ol dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir ol ul,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir ul dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir ul ul,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol dir dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol dir ul,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol ol dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol ol ul,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol ul dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol ul ul,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul dir dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul dir ul,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul ol dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul ol ul,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul ul dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul ul ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir dir dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir dir ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir ol dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir ol ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir ul dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir ul ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol dir dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol dir ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol ol dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol ol ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol ul dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol ul ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul dir dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul dir ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul ol dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul ol ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul ul dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul ul ul{list-style-type:square}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup table,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup table{display:table;box-sizing:border-box;border-spacing:2px;border-collapse:separate;text-indent:initial}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup caption,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup caption{display:table-caption}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup colgroup,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup colgroup[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup colgroup,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup colgroup[hidden]{display:table-column-group}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup col,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup col[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup col,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup col[hidden]{display:table-column}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup thead,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup thead[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup thead,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup thead[hidden]{display:table-header-group}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tbody,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tbody[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tbody,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tbody[hidden]{display:table-row-group}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tfoot,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tfoot[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tfoot,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tfoot[hidden]{display:table-footer-group}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tr,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tr[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tr,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tr[hidden]{display:table-row}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup td,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup td[hidden],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup th,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup th[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup td,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup td[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup th,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup th[hidden]{display:table-cell}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup col[hidden],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup colgroup[hidden],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tbody[hidden],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup td[hidden],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tfoot[hidden],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup th[hidden],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup thead[hidden],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tr[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup col[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup colgroup[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tbody[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup td[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tfoot[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup th[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup thead[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tr[hidden]{visibility:collapse}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup td,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup th,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup td,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup th{padding:1px}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup th,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup th{font-weight:700}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup table>tr,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tbody,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tfoot,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup thead,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup table>tr,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tbody,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tfoot,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup thead{vertical-align:middle}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup td,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup th,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tr,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup td,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup th,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tr{vertical-align:inherit}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup table,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup td,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup th,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup table,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup td,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup th{border-color:gray}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tbody,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tfoot,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup thead,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tr,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tbody,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tfoot,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup thead,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tr{border-color:inherit}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup button,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup input,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup keygen,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup optgroup,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup option,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup select,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup textarea,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup button,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup input,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup keygen,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup optgroup,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup option,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup select,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup textarea{text-indent:initial}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup textarea,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup textarea{white-space:pre-wrap}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup button,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup input[type=radio],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup input[type=checkbox],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup input[type=reset],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup input[type=button],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup input[type=submit],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup select,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup button,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup input[type=radio],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup input[type=checkbox],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup input[type=reset],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup input[type=button],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup input[type=submit],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup select{box-sizing:border-box}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup button,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup input[type=button],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup button,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup input[type=button]{padding:.3em .5em}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup hr,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup hr{color:gray;border-style:inset;border-width:1px;margin:.5em auto}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup fieldset,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup fieldset{margin-left:2px;margin-right:2px;border:2px groove ThreeDFace;padding:.35em .625em .75em}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup legend,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup legend{padding-left:2px;padding-right:2px}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup>:first-child,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup>:first-child{margin-top:0!important}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup>:last-child,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup>:last-child{margin-bottom:0!important}.layout-editor .img-responsive,.layout-editor .img-responsive img,.layout-editor .layout-content.layout-content-image>.layout-element-wrapper>.layout-content-markup>img,.layout-editor .layout-content.layout-content-vector-image>.layout-element-wrapper>.layout-content-markup>img,.layout-editor .layout-html.layout-content-image>.layout-element-wrapper>.layout-content-markup>img,.layout-editor .layout-html.layout-content-vector-image>.layout-element-wrapper>.layout-content-markup>img{display:block;width:100%;max-width:100%;height:auto}.layout-editor>.layout-toolbox-wrapper{position:relative;margin-left:12px;width:220px;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.layout-editor>.layout-toolbox-wrapper>.layout-toolbox{border:1px solid #e4e5e6;width:220px;min-height:400px;padding:6px;background-color:#f3f4f5}.layout-editor>.layout-toolbox-wrapper>.layout-toolbox.sticky-top{position:fixed;top:0;max-height:100%;overflow-y:auto}.layout-editor>.layout-toolbox-wrapper>.layout-toolbox.sticky-bottom{position:absolute;bottom:0}.layout-editor>.layout-toolbox-wrapper>.layout-toolbox .layout-toolbox-group{margin-top:12px}.layout-editor>.layout-toolbox-wrapper>.layout-toolbox .layout-toolbox-group .layout-toolbox-item+.layout-toolbox-item,.layout-editor>.layout-toolbox-wrapper>.layout-toolbox .layout-toolbox-group .layout-toolbox-section+.layout-toolbox-section{margin-top:4px}.layout-editor>.layout-toolbox-wrapper>.layout-toolbox .layout-toolbox-group .layout-toolbox-group-heading{display:block;margin-bottom:4px;text-decoration:none}.layout-editor>.layout-toolbox-wrapper>.layout-toolbox .layout-toolbox-group .layout-toolbox-group-heading:before{display:inline-block;width:10px;margin-right:4px;font:normal normal normal 14px/1 FontAwesome;text-align:center;content:"\f0d7"}.layout-editor>.layout-toolbox-wrapper>.layout-toolbox .layout-toolbox-group.collapsed .layout-toolbox-group-heading:before{content:"\f0da"}.layout-editor>.layout-toolbox-wrapper>.layout-toolbox .layout-toolbox-group.collapsed .layout-toolbox-items{display:none}.layout-editor>.layout-toolbox-wrapper>.layout-toolbox .layout-toolbox-group .layout-toolbox-item{border:1px solid #e4e5e6;background-color:#fff;padding:9px 12px;cursor:default}.layout-editor>.layout-toolbox-wrapper>.layout-toolbox .layout-toolbox-group .layout-toolbox-item i{display:inline-block;width:16px;font:normal normal normal 14px/1 FontAwesome}.layout-editor>.layout-toolbox-wrapper>.layout-toolbox .layout-toolbox-group+.layout-toolbox-group{margin-top:6px}.layout-editor .layout-popup{display:none;position:absolute;margin:0;box-shadow:3px 3px 11px 0 rgba(50,50,50,.5);border:1px solid #e4e5e6;padding:2px 0;background-color:#f7f7f7;list-style:none;z-index:20;color:#7c7c7c;text-align:left;cursor:default;white-space:nowrap;line-height:normal}.layout-editor .layout-popup .layout-popup-flex{display:-webkit-flex;display:-ms-flexbox;display:flex;padding:2px 5px}.layout-editor .layout-popup .layout-popup-flex .layout-popup-column+.layout-popup-column{margin-left:4px;border-left:1px solid rgba(128,128,128,.15);padding-left:4px}.layout-editor .layout-popup .layout-popup-item{padding:4px 6px}.layout-editor .layout-popup .layout-popup-label{font-size:.9em;font-weight:700;color:#7c7c7c}.layout-editor .layout-popup .layout-popup-action:hover{background-color:#f3f4f5;cursor:pointer}.layout-editor .layout-popup .layout-popup-input>label{display:block;font-size:.9em} \ No newline at end of file +.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup address,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup cite,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dfn,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup em,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup i,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup var,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup address,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup cite,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dfn,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup em,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup i,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup var{font-style:italic}.layout-editor{display:-webkit-flex;display:-ms-flexbox;display:flex;margin-top:1em;font-size:14px;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch}.layout-editor>.layout-canvas-wrapper{-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;background-color:#f3f4f5;border:1px solid #e4e5e6}.layout-editor>.layout-canvas-wrapper>.layout-toolbar-container{display:none;margin:12px 12px 0;min-height:71px}.layout-editor>.layout-canvas-wrapper>.layout-toolbar-container>.mce-panel{width:100%!important}.layout-editor .layout-snippet{background:#e8e8e8}.layout-editor .layout-element{position:relative;margin-top:0;margin-right:0;margin-bottom:0;padding:0}.layout-editor .layout-element:not(.layout-column){margin-left:0}.layout-editor .layout-element>.layout-element-wrapper>.layout-panel{display:none;position:absolute;margin:0;z-index:20;height:25px;padding:0 6px;list-style:none;white-space:nowrap;line-height:25px;vertical-align:middle}.layout-editor .layout-element>.layout-element-wrapper>.layout-panel>.layout-panel-item{display:inline-block;height:25px;padding:1px 6px 0}.layout-editor .layout-element>.layout-element-wrapper>.layout-panel>.layout-panel-label{font-size:13px}.layout-editor .layout-element>.layout-element-wrapper>.layout-panel>.layout-panel-action{display:none;width:28px;cursor:pointer;text-align:center}.layout-editor .layout-element>.layout-element-wrapper>.layout-panel-main{top:-27px;left:-2px}.layout-editor li.layout-element{list-style:none}.layout-editor:not(.layout-editor-dragging) .layout-element-active,.layout-editor:not(.layout-editor-dragging) .layout-element-focused{border-width:2px;border-style:solid}.layout-editor:not(.layout-editor-dragging) .layout-element-active>.layout-element-wrapper,.layout-editor:not(.layout-editor-dragging) .layout-element-focused>.layout-element-wrapper{margin:-2px}.layout-editor:not(.layout-editor-dragging) .layout-element-active{border-color:rgba(104,104,104,.1)}.layout-editor:not(.layout-editor-dragging) .layout-element-active>.layout-element-wrapper>.layout-panel-main{display:block;z-index:30;background-color:rgba(104,104,104,.1)}.layout-editor:not(.layout-editor-dragging) .layout-element-focused{border-color:#648721}.layout-editor:not(.layout-editor-dragging) .layout-element-focused>.layout-element-wrapper>.layout-panel{display:block;background-color:#648721;color:#fefefe}.layout-editor:not(.layout-editor-dragging) .layout-element-focused>.layout-element-wrapper>.layout-panel>.layout-panel-action{display:inline-block}.layout-editor:not(.layout-editor-dragging) .layout-element-focused>.layout-element-wrapper>.layout-panel>.layout-panel-action:hover{background-color:#82b02b}.layout-editor:not(.layout-editor-dragging) .layout-element-focused>.layout-element-wrapper>.layout-panel>.layout-panel-action.disabled{cursor:default;color:rgba(254,254,254,.4)}.layout-editor:not(.layout-editor-dragging) .layout-element-focused>.layout-element-wrapper>.layout-panel>.layout-panel-action.disabled:hover{background-color:#648721}.layout-editor:not(.layout-editor-dragging) .layout-element-focused>.layout-element-wrapper>.layout-panel>.layout-panel-action.active{color:#deff42;background-color:#739b26}.layout-editor:not(.layout-editor-dragging) .layout-element-focused>.layout-element-wrapper>.layout-panel>.layout-panel-action.active:hover{background-color:#82b02b}.layout-editor:not(.layout-editor-dragging) .layout-element-selected{background-color:rgba(100,135,33,.08)}.layout-editor .ui-sortable-placeholder{display:none}.layout-editor .layout-element-droptarget{box-shadow:inset 0 0 12px 6px rgba(100,135,33,.5)}.layout-editor .layout-element-droptarget .ui-sortable-placeholder{display:block;visibility:visible!important;min-height:78px;border:2px dashed #648721!important;background-color:rgba(100,135,33,.16)}.layout-editor .media-thumbnail img{max-width:100%;max-height:100%}.layout-editor .layout-container>.layout-element-wrapper>.layout-container-children-placeholder{display:none;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin:11px;min-height:80px;border:1px dashed rgba(124,124,124,.4);border-radius:4px;padding:12px;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;font-size:13px;font-style:italic;opacity:.6;text-align:center}.layout-editor .layout-container>.layout-element-wrapper>.layout-children{padding:12px}.layout-editor .layout-container>.layout-element-wrapper>.layout-children>.layout-element:not(.layout-container)+.layout-element:not(.layout-container){margin-top:12px}.layout-editor .layout-container>.layout-element-wrapper>.layout-children>.ui-sortable-helper:first-child+.layout-element:not(.layout-container){margin-top:0}.layout-editor .layout-container>.layout-element-wrapper.layout-container-empty>.layout-container-children-placeholder{display:-webkit-flex;display:-ms-flexbox;display:flex}.layout-editor .layout-container>.layout-element-wrapper.layout-container-empty>.layout-children{position:absolute;top:0;right:0;bottom:0;left:0}.layout-editor:not(.layout-editor-dragging) .layout-container.layout-element-focused>.layout-element-wrapper>.layout-children>.layout-element:not(.layout-element-active){border:1px dashed rgba(124,124,124,.6)}.layout-editor:not(.layout-editor-dragging) .layout-container.layout-element-focused>.layout-element-wrapper>.layout-children>.layout-element:not(.layout-element-active)>.layout-element-wrapper{margin:-1px}.layout-editor:not(.layout-editor-dragging) .layout-container.layout-element-focused>.layout-element-wrapper>.layout-children>.layout-container+.layout-container:not(.layout-element-active){border-top:0}.layout-editor:not(.layout-editor-dragging) .layout-container.layout-element-focused>.layout-element-wrapper>.layout-children>.layout-container+.layout-container:not(.layout-element-active)>.layout-element-wrapper{margin-top:0}.layout-editor .layout-canvas #dummy{display:none}.layout-editor .layout-row.layout-element-focused:not(.layout-element-droptarget)>.layout-element-wrapper>.layout-children>.layout-element:not(.layout-element-active){border-top:1px dashed rgba(124,124,124,.6)!important}.layout-editor .layout-row.layout-element-focused:not(.layout-element-droptarget)>.layout-element-wrapper>.layout-children>.layout-element:not(.layout-element-active)>.layout-element-wrapper{margin-top:-1px!important}.layout-editor .layout-row.layout-element-focused:not(.layout-element-droptarget)>.layout-element-wrapper>.layout-children>.layout-element+.layout-element:not(.layout-element-active){border-left:0!important}.layout-editor .layout-row.layout-element-focused:not(.layout-element-droptarget)>.layout-element-wrapper>.layout-children>.layout-element+.layout-element:not(.layout-element-active)>.layout-element-wrapper{margin-left:0!important}.layout-editor .layout-column>.layout-element-wrapper>.layout-column-resize-bar{display:none;position:absolute;z-index:30;top:0;width:16px;height:100%;cursor:col-resize}.layout-editor .layout-column.layout-element-focused>.layout-element-wrapper>.layout-column-resize-bar,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup address,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup blockquote,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup center,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup div,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup figcaption,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup figure,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup footer,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup form,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup header,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup hr,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup legend,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup listing,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup p,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup plaintext,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup pre,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup xmp,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup address,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup blockquote,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup center,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup div,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup figcaption,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup figure,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup footer,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup form,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup header,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup hr,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup legend,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup listing,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup p,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup plaintext,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup pre,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup xmp{display:block}.layout-editor .layout-column>.layout-element-wrapper>.layout-column-resize-bar-left{left:-6px}.layout-editor .layout-column>.layout-element-wrapper>.layout-column-resize-bar-right{right:-6px}.layout-editor .layout-content,.layout-editor .layout-html{min-height:1em}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup{padding:2px;overflow-x:hidden;line-height:normal}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup *,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup *{margin:0;padding:0;box-sizing:content-box}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup blockquote,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup figure,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup listing,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup p,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup plaintext,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup pre,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup xmp,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup blockquote,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup figure,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup listing,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup p,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup plaintext,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup pre,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup xmp{margin-top:1em;margin-bottom:1em}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup blockquote,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup figure,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup blockquote,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup figure{margin-left:40px;margin-right:40px}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup listing,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup plaintext,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup pre,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup xmp,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup listing,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup plaintext,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup pre,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup xmp{font-family:monospace;white-space:pre}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup b,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup strong,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup b,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup strong{font-weight:bolder}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup code,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup kbd,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup samp,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tt,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup code,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup kbd,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup samp,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tt{font-family:monospace}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup big,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup big{font-size:larger}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup small,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup small{font-size:smaller}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup sub,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup sub{vertical-align:sub}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup sup,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup sup{vertical-align:super}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup sub,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup sup,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup sub,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup sup{line-height:normal;font-size:smaller}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ruby,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ruby{display:ruby}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup rb,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup rb{display:ruby-base;white-space:nowrap}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup rt,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup rt{display:ruby-text;white-space:nowrap;font-size:50%;font-variant-east-asian:ruby;-webkit-text-emphasis:none;text-emphasis:none}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup rbc,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup rbc{display:ruby-base-container}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup rtc,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup rtc{display:ruby-text-container}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup article,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup aside,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dd,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dl,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dt,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup h1,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup h2,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup h3,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup h4,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup h5,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup h6,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup hgroup,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup nav,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup section,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup article,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup aside,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dd,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dl,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dt,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup h1,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup h2,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup h3,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup h4,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup h5,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup h6,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup hgroup,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup nav,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup section,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul{display:block}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup rb,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup rbc,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup rt,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup rtc,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ruby,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup rb,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup rbc,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup rt,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup rtc,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ruby{unicode-bidi:isolate}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup :link,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup :link{color:#00E}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup :visited,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup :visited{color:#551A8B}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup :link,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup :visited,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup :link,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup :visited{text-decoration:underline}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup a:link[rel~=help],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup a:visited[rel~=help],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup area:link[rel~=help],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup area:visited[rel~=help],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup a:link[rel~=help],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup a:visited[rel~=help],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup area:link[rel~=help],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup area:visited[rel~=help]{cursor:help}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup :focus,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup :focus{outline:auto}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup mark,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup mark{background:#ff0;color:#000}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup abbr[title],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup acronym[title],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup abbr[title],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup acronym[title]{text-decoration:dotted underline}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ins,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup u,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ins,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup u{text-decoration:underline}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup del,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup s,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup strike,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup del,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup s,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup strike{text-decoration:line-through}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup blink,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup blink{text-decoration:blink}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup q::before,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup q::before{content:open-quote}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup q::after,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup q::after{content:close-quote}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup br,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup br{content:'\A';white-space:pre}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup nobr,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup nobr{white-space:nowrap}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup wbr,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup wbr{content:'\200B'}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup nobr wbr,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup nobr wbr{white-space:normal}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup h1,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup h1{margin-top:.67em;margin-bottom:.67em;font-size:2em;font-weight:700}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup h2,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup h2{margin-top:.83em;margin-bottom:.83em;font-size:1.5em;font-weight:700}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup h3,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup h3{margin-top:1em;margin-bottom:1em;font-size:1.17em;font-weight:700}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup h4,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup h4{margin-top:1.33em;margin-bottom:1.33em;font-size:1em;font-weight:700}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup h5,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup h5{margin-top:1.67em;margin-bottom:1.67em;font-size:.83em;font-weight:700}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup h6,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup h6{margin-top:2.33em;margin-bottom:2.33em;font-size:.67em;font-weight:700}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup li,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup li{display:list-item}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dl,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dl,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul{margin-top:1em;margin-bottom:1em}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir dl,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir ol,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir ul,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dl dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dl dl,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dl ol,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dl ul,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol dl,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol ol,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol ul,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul dl,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul ol,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir dl,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir ol,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dl dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dl dl,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dl ol,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dl ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol dl,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol ol,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul dl,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul ol,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul ul{margin-top:0;margin-bottom:0}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dd,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dd{margin-left:40px}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul{padding-left:40px}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol{list-style-type:decimal}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul{list-style-type:disc}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir ul,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol ul,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul ul{list-style-type:circle}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir dir dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir dir ul,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir ol dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir ol ul,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir ul dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup dir ul ul,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol dir dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol dir ul,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol ol dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol ol ul,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol ul dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ol ul ul,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul dir dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul dir ul,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul ol dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul ol ul,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul ul dir,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup ul ul ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir dir dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir dir ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir ol dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir ol ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir ul dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup dir ul ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol dir dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol dir ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol ol dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol ol ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol ul dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ol ul ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul dir dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul dir ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul ol dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul ol ul,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul ul dir,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup ul ul ul{list-style-type:square}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup table,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup table{display:table;box-sizing:border-box;border-spacing:2px;border-collapse:separate;text-indent:initial}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup caption,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup caption{display:table-caption}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup colgroup,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup colgroup[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup colgroup,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup colgroup[hidden]{display:table-column-group}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup col,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup col[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup col,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup col[hidden]{display:table-column}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup thead,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup thead[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup thead,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup thead[hidden]{display:table-header-group}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tbody,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tbody[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tbody,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tbody[hidden]{display:table-row-group}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tfoot,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tfoot[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tfoot,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tfoot[hidden]{display:table-footer-group}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tr,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tr[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tr,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tr[hidden]{display:table-row}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup td,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup td[hidden],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup th,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup th[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup td,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup td[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup th,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup th[hidden]{display:table-cell}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup col[hidden],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup colgroup[hidden],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tbody[hidden],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup td[hidden],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tfoot[hidden],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup th[hidden],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup thead[hidden],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tr[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup col[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup colgroup[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tbody[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup td[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tfoot[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup th[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup thead[hidden],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tr[hidden]{visibility:collapse}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup td,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup th,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup td,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup th{padding:1px}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup th,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup th{font-weight:700}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup table>tr,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tbody,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tfoot,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup thead,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup table>tr,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tbody,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tfoot,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup thead{vertical-align:middle}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup td,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup th,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tr,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup td,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup th,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tr{vertical-align:inherit}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup table,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup td,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup th,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup table,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup td,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup th{border-color:gray}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tbody,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tfoot,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup thead,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup tr,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tbody,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tfoot,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup thead,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup tr{border-color:inherit}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup button,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup input,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup keygen,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup optgroup,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup option,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup select,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup textarea,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup button,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup input,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup keygen,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup optgroup,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup option,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup select,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup textarea{text-indent:initial}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup textarea,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup textarea{white-space:pre-wrap}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup button,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup input[type=radio],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup input[type=checkbox],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup input[type=reset],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup input[type=button],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup input[type=submit],.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup select,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup button,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup input[type=radio],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup input[type=checkbox],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup input[type=reset],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup input[type=button],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup input[type=submit],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup select{box-sizing:border-box}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup button,.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup input[type=button],.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup button,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup input[type=button]{padding:.3em .5em}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup hr,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup hr{color:gray;border-style:inset;border-width:1px;margin:.5em auto}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup fieldset,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup fieldset{margin-left:2px;margin-right:2px;border:2px groove ThreeDFace;padding:.35em .625em .75em}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup legend,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup legend{padding-left:2px;padding-right:2px}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup>:first-child,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup>:first-child{margin-top:0!important}.layout-editor .layout-content>.layout-element-wrapper .layout-content-markup>:last-child,.layout-editor .layout-html>.layout-element-wrapper .layout-content-markup>:last-child{margin-bottom:0!important}.layout-editor .img-responsive,.layout-editor .img-responsive img,.layout-editor .layout-content.layout-content-image>.layout-element-wrapper>.layout-content-markup>img,.layout-editor .layout-content.layout-content-vector-image>.layout-element-wrapper>.layout-content-markup>img,.layout-editor .layout-html.layout-content-image>.layout-element-wrapper>.layout-content-markup>img,.layout-editor .layout-html.layout-content-vector-image>.layout-element-wrapper>.layout-content-markup>img{display:block;width:100%;max-width:100%;height:auto}.layout-editor>.layout-toolbox-wrapper{position:relative;margin-left:12px;width:220px;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.layout-editor>.layout-toolbox-wrapper>.layout-toolbox{border:1px solid #e4e5e6;width:220px;min-height:400px;padding:6px;background-color:#f3f4f5}.layout-editor>.layout-toolbox-wrapper>.layout-toolbox.sticky-top{position:fixed;top:0;max-height:100%;overflow-y:auto}.layout-editor>.layout-toolbox-wrapper>.layout-toolbox.sticky-bottom{position:absolute;bottom:0}.layout-editor>.layout-toolbox-wrapper>.layout-toolbox .layout-toolbox-group{margin-top:12px}.layout-editor>.layout-toolbox-wrapper>.layout-toolbox .layout-toolbox-group .layout-toolbox-item+.layout-toolbox-item,.layout-editor>.layout-toolbox-wrapper>.layout-toolbox .layout-toolbox-group .layout-toolbox-section+.layout-toolbox-section{margin-top:4px}.layout-editor>.layout-toolbox-wrapper>.layout-toolbox .layout-toolbox-group .layout-toolbox-group-heading{display:block;margin-bottom:4px;text-decoration:none}.layout-editor>.layout-toolbox-wrapper>.layout-toolbox .layout-toolbox-group .layout-toolbox-group-heading:before{display:inline-block;width:10px;margin-right:4px;font:normal normal normal 14px/1 FontAwesome;text-align:center;content:"\f0d7"}.layout-editor>.layout-toolbox-wrapper>.layout-toolbox .layout-toolbox-group.collapsed .layout-toolbox-group-heading:before{content:"\f0da"}.layout-editor>.layout-toolbox-wrapper>.layout-toolbox .layout-toolbox-group.collapsed .layout-toolbox-items{display:none}.layout-editor>.layout-toolbox-wrapper>.layout-toolbox .layout-toolbox-group .layout-toolbox-item{border:1px solid #e4e5e6;background-color:#fff;padding:9px 12px;cursor:default}.layout-editor>.layout-toolbox-wrapper>.layout-toolbox .layout-toolbox-group .layout-toolbox-item i{display:inline-block;width:16px;font:normal normal normal 14px/1 FontAwesome}.layout-editor>.layout-toolbox-wrapper>.layout-toolbox .layout-toolbox-group+.layout-toolbox-group{margin-top:6px}.layout-editor .layout-popup{display:none;position:absolute;margin:0;box-shadow:3px 3px 11px 0 rgba(50,50,50,.5);border:1px solid #e4e5e6;padding:2px 0;background-color:#f7f7f7;list-style:none;z-index:20;color:#7c7c7c;text-align:left;cursor:default;white-space:nowrap;line-height:normal}.layout-editor .layout-popup .layout-popup-flex{display:-webkit-flex;display:-ms-flexbox;display:flex;padding:2px 5px}.layout-editor .layout-popup .layout-popup-flex .layout-popup-column+.layout-popup-column{margin-left:4px;border-left:1px solid rgba(128,128,128,.15);padding-left:4px}.layout-editor .layout-popup .layout-popup-item{padding:4px 6px}.layout-editor .layout-popup .layout-popup-label{font-size:.9em;font-weight:700;color:#7c7c7c}.layout-editor .layout-popup .layout-popup-action:hover{background-color:#f3f4f5;cursor:pointer}.layout-editor .layout-popup .layout-popup-input>label{display:block;font-size:.9em} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Styles/LayoutEditor/Editor.less b/src/Orchard.Web/Modules/Orchard.Layouts/Styles/LayoutEditor/Editor.less index 64e009ab7..e97d95bd6 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Styles/LayoutEditor/Editor.less +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Styles/LayoutEditor/Editor.less @@ -21,4 +21,8 @@ } } } + + .layout-snippet { + background: #e8e8e8; + } } diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Styles/designer.css b/src/Orchard.Web/Modules/Orchard.Layouts/Styles/designer.css deleted file mode 100644 index b1826fb34..000000000 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Styles/designer.css +++ /dev/null @@ -1,321 +0,0 @@ -.zone-content { - padding: 3px; -} - -.canvas-toolbar ol li { - float: left; - margin-right: 1em; -} - -.canvas-toolbar a.icon { - color: #000; - font-size: 1.5em; - line-height: 1.5em; -} - -.layout-editor .canvas { - padding: 0; - min-height: 5em; -} - - .layout-editor .canvas .snippet { - padding: 1em; - background: #f3f4f5; - -ms-border-radius: 4px; - border-radius: 8px; - } - - .layout-editor .canvas .snippet em { - font-style: italic; - } - - .layout-editor .canvas .table { - background: none repeat scroll 0 0 #fafafa; - border: 1px solid #bdbcbc; - margin: 0 0 0.3em; - padding: 20px 0.3em 20px 0; - position: relative; - } - - .layout-editor .canvas > .table { - -ms-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 2px 5px 15px #525252; - -ms-box-shadow: 2px 5px 15px #525252; - box-shadow: 3px 2px 10px #e7e7e7; - } - - .layout-editor .canvas .x-root { - min-height: 100px; - position: relative; - padding: 23px 0 42px 0; - } - - .layout-editor .canvas .x-column { - background-color: #fafafa; - } - - .layout-editor .canvas .x-container.x-root > a.add { - background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAEXSURBVDhPrdVPSwJBHMbxTVl9Ab6DpKMnX0ewVFCgd99IeBXBi7c6BB0KPIfgK5AudSi03kGHhLxZ32f/5LQ7qwPNA5/xJ86sM/tnNihJHV3cY4mPlOo7dKA+TjnDO773eMMpSlPFELbBuwygsYWMYBvgQhP5kwi2jq42OEacGhawdZQZsqi29ZFXhBWaEzTx3xwh0gG1XF+JdHX6aMRft5lCt4U84gFKC1/IfjuEmVDNCvnz4Zr8uE8t+QDeooPp6uiEmpmnn4rqXlIGY7STMo5ZKy9qbpGfusn1tpEbLXkCX4mPpSujqdr+UVxn+ITfZ9rro5dF96Ots4tLFOJ9+8ribYM1o+39Atd4xjql+grnsLwCguAHjCrBxU/oR+AAAAAASUVORK5CYII='); - width: 20px; - height: 20px; - left: 50%; - bottom: 0; - } - - .layout-editor .canvas .x-container.x-root > a.add.start { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANYSURBVHhe5dvJjwxhHMbxsURsYx3hgpMZS4hIuMzBhTiIsziIhISjcLDExUXmYr1aDv4DDuKAAwcHEiEYMyTcEEYMY52E8X2ql/Ty09Xd9dbW75N80jWTeave9523ut+qfmtSV/xZgs1YgxVF8zEL06CM4zs+4xVeYhB38R65yyacwzNMRKR9nMVGZDrzcAxDsBriwgscxVxkJoswgC+wKh2HUZxCD1KLzt+T0LlrVTIJ36A6lN5LEstKPIRVqTQ8QB8SyUH8hFWRNKlO+xFbJuM8rINnyRmork4zA9dhHTCLrkF1dhK9wdyEdaAsu4HIb45Tkaf/fC3VfQrazgVYO86T02gre2DtMI92o6WshiYZ1s7yaAyr0FR0hXgf1o7y7B6auvo9AGsHnWAfGkbX6R9gFXYlLFYZV95hDsqpnTEdhq7uOjW6OXOosFkfXc/rMtPqOZfCYpVx6RO6EaRyBOxFpm40xJQFUFvrMgyrx1wLi1XGteeoiu7hWX8Yh7BYZeKwAeVTYGfx1acEbS51wLbiq08J2qyZkT4a3ha3k0jYcTQ8k4iOs1gjoB9JNT5LUZv71QFrgx/9zDp1gO7w+po+dUBvYbvtaCi1IixWmUaipFcdsLCw7WV61AGzC9tepltD6Dei3D2NOgyjJsrH5rhGQNoNSDMT6gDdL/M1Y753wFd1wMfCtpcZUQdoPU6UlC4vmxUWq0wjUTKsDtCSFl8zpA7QaixfM6iPQM0EdStcnZFEwj52ow7rZvMHwUxQd0mf6jee5TFGS//1O8VXn1LV5vWofXeNS1isMnHQF8BVeQLrD10Li1XGtUcIUvnGd7X46kPMts5E3F+MSlisMi7pBvB0BKkcAT+gJTGdHrXxV2GzPt59PW5F62mswp1gF0KjmZrXS2SUZdAM0dpRHo1gKVrKDvyFtcM8URu2o614vVBS0TlzBdaO8+Aymj7v/xevF0uXogXHl2AdKIsuItIiaSuaNepROOuAWaJzvnKG6zxboRmVdfA0qU5bkEiW4zasiqThFjR3STyaK7yBVakkvIbqkGq06vIENNuyKhkHHes4MvXNtjpCj7XG/ejsEZSXumY1uXl4OvIsqYlYj8/rmV8tzi6tTdYibT17rKGd4OPzXV3/APplq+e/m5jfAAAAAElFTkSuQmCC'); - width: 64px; - height: 64px; - left: 50%; - top: 32%; - display: block; - } - - .layout-editor .canvas .x-grid .drag-handle { - cursor: move; - left: 11px; - position: absolute; - right: 0; - top: 0; - z-index: 25; - } - - .layout-editor .canvas > .x-grid .drag-handle a { - color: #646464; - } - - .layout-editor .canvas > .x-grid .drag-handle { - -ms-border-radius: 0; - border-radius: 3px 3px 0 0; - } - - .layout-editor .canvas .x-grid .grid-toolbar { - background: none; - margin: 0; - padding: 0 0.5em 0 0; - } - - .layout-editor .canvas .x-grid .drag-handle:hover a.remove, - .layout-editor .canvas .x-grid .drag-handle:hover a.edit { - } - - .layout-editor .canvas .x-row { - position: relative; - margin: 0; - padding-left: 20px; - } - - .layout-editor .canvas .x-row .row-toolbar { - display: none; - } - - .layout-editor .canvas .x-row .row-toolbar.sortable { - cursor: move; - -ms-border-radius: 3px; - border-radius: 3px; - bottom: 6px; - left: 8px; - top: 1px; - width: 10px; - padding: 5px 4px 2px 1px; - z-index: 5; - position: absolute; - cursor: move; - background: transparent; - } - - .layout-editor .canvas .x-row .row-toolbar a { - display: block; - margin: 0; - width: 16px; - } - - .layout-editor .canvas .x-row .x-column { - padding: 0.5em; - position: relative; - } - - .layout-editor .canvas .x-row .x-column .ui-resizable-handle { - background: #e4e4e4; - height: 100%; - width: 7px; - top: 0; - -ms-border-radius: 25px; - border-radius: 25px; - -ms-opacity: 0.75; - opacity: 0.75; - } - - .layout-editor .canvas .x-row .x-column .ui-resizable-handle:hover { - -ms-opacity: 1; - opacity: 1; - } - - .layout-editor .canvas .x-row .x-column .ui-resizable-e { - right: -10px; - } - - .layout-editor .canvas .x-row .x-column .toolbar.column-toolbar { - position: absolute; - top: 1px; - right: 1px; - left: 1px; - cursor: move; - background: none; - display: none; - } - - .layout-editor .canvas .x-row .x-column.highlight { - border: 1px solid #90a664; - } - - .layout-editor .canvas .x-row .x-column .column-container { - border: 1px dashed #bdbcbc; - min-height: 5em; - padding: 2.1em 27px 24px; - } - - .layout-editor .canvas .x-row .x-column.templated .element.container { - padding-top: 0.5em; - } - - .layout-editor .canvas .x-container a.add { - display: none; - width: 20px; - height: 20px; - position: absolute; - bottom: 5px; - right: 5px; - background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAEXSURBVDhPrdVPSwJBHMbxTVl9Ab6DpKMnX0ewVFCgd99IeBXBi7c6BB0KPIfgK5AudSi03kGHhLxZ32f/5LQ7qwPNA5/xJ86sM/tnNihJHV3cY4mPlOo7dKA+TjnDO773eMMpSlPFELbBuwygsYWMYBvgQhP5kwi2jq42OEacGhawdZQZsqi29ZFXhBWaEzTx3xwh0gG1XF+JdHX6aMRft5lCt4U84gFKC1/IfjuEmVDNCvnz4Zr8uE8t+QDeooPp6uiEmpmnn4rqXlIGY7STMo5ZKy9qbpGfusn1tpEbLXkCX4mPpSujqdr+UVxn+ITfZ9rro5dF96Ots4tLFOJ9+8ribYM1o+39Atd4xjql+grnsLwCguAHjCrBxU/oR+AAAAAASUVORK5CYII='); - -ms-opacity: 0.3; - opacity: 0.3; - z-index: 1200; - } - - .layout-editor .canvas .x-container a.add:hover { - -ms-opacity: 1; - opacity: 1; - } - - .layout-editor .canvas .toolbar { - padding: 0 0.6em; - background: #e4e4e4; - border: none; - } - - .layout-editor .canvas .toolbar a { - color: #646464; - margin-right: 1.5em; - line-height: 2em; - } - - .layout-editor .canvas .name { - display: block; - color: #9da0a4; - padding: 0 7px; - float: left; - } - - .layout-editor .canvas article.element-box { - position: relative; - padding: 0.7em 0 0 0; - } - - .layout-editor .canvas article.element-box > header { - padding: 0 0.5em 0 0.5em; - -ms-border-radius: 2px; - border-radius: 2px; - background: #9e9e9e; - color: #fff; - cursor: move; - position: absolute; - top: -23px; - left: 0; - right: 0; - height: 27px; - display: none; - z-index: 1; - } - - .layout-editor .canvas article.element-box .element-overlay { - background: #333a26; - -ms-opacity: 0.12; - opacity: 0.12; - position: absolute; - left: 0; - right: 0; - top: 1px; - bottom: -5px; - display: none; - cursor: move; - -ms-border-radius: 0 0 2px 2px; - border-radius: 0 0 2px 2px; - } - - .layout-editor .canvas article.element-box:hover .element-overlay { - display: block; - } - - .layout-editor .canvas article.element-box:hover > header { - display: block; - } - - .layout-editor .canvas article.element-box > header a { - color: #fff; - } - - .layout-editor .canvas article.element-box > header .actions a { - margin-right: 0.5em; - line-height: 2em; - } - - .layout-editor .canvas article.element-box > header .name { - line-height: 2.5em; - } - - .layout-editor .canvas .sortable-placeholder { - display: block; - height: 2.5em; - padding: 0.5em; - border: 1px dashed #bdbcbc; - } - - .layout-editor .canvas .x-row .x-column .x-holder .x-container-widget .x-grid { - background: none repeat scroll 0 0 #fafafa; - border: 1px solid #bdbcbc; - margin: 27px 0 0; - position: relative; - } - - .layout-editor .canvas .x-container-widget .x-grid .grid-toolbar { - padding: 0 0.5em 0 0.5em; - } - -.layout-editor .trash { - display: none; -} - -.layout-editor .element-component { - background: #e5e5e5; - padding: 0.5em; - -ms-opacity: .3; - opacity: .3; -} - -.layout-editor .element-snippet { - background: #e5e5e5; - padding: 0.5em; -} - -.element.element-label label { - font-weight: bold; -} - -.media-element { - overflow: hidden; -} - -textarea.text.large { - width: 98%; -} diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Views/Elements/ContentItem.Design.cshtml b/src/Orchard.Web/Modules/Orchard.Layouts/Views/Elements/ContentItem.Design.cshtml index ce5cb8c4c..c732cef6b 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Views/Elements/ContentItem.Design.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Views/Elements/ContentItem.Design.cshtml @@ -1,3 +1,9 @@ -@foreach (var contentItem in Model.ContentItems) { - @Display(contentItem) +@using Orchard.ContentManagement +@foreach (var contentItemShape in Model.ContentItems) { + var contentItem = (ContentItem)contentItemShape.ContentItem; + var displayTextHtmlString = Html.ItemDisplayText(contentItem); + var displayText = displayTextHtmlString != null ? displayTextHtmlString.ToString() : T("-").ToString(); +
+ @displayText +
} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Views/Elements/Projection.Design.cshtml b/src/Orchard.Web/Modules/Orchard.Layouts/Views/Elements/Projection.Design.cshtml index 7919b2d76..c7c8148c6 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Views/Elements/Projection.Design.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Views/Elements/Projection.Design.cshtml @@ -1,10 +1,15 @@ -@{ - var contentShapes = ((Func>)Model.BuildShapes)("Summary").ToList(); - var list = New.List(); - list.AddRange(contentShapes); +@using Orchard.ContentManagement +@{ + var contentItems = (IList)Model.ContentItems; } -@if (contentShapes.Any()) { - @Display(list) +@if (contentItems.Any()) { + foreach (var contentItem in contentItems) { + var displayTextHtmlString = Html.ItemDisplayText(contentItem); + var displayText = displayTextHtmlString != null ? displayTextHtmlString.ToString() : T("-").ToString(); +
+ @displayText +
+ } } else {

@T("The query returned no results.")

diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Views/Elements/Shape.Design.cshtml b/src/Orchard.Web/Modules/Orchard.Layouts/Views/Elements/Shape.Design.cshtml index 84f60ed49..407119227 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Views/Elements/Shape.Design.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Views/Elements/Shape.Design.cshtml @@ -2,7 +2,6 @@ @{ var element = (Shape) Model.Element; } -
- @T("Shape -") +
@element.ShapeType
\ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Views/Layout-Designer-Wrapper.cshtml b/src/Orchard.Web/Modules/Orchard.Layouts/Views/Layout-Designer-Wrapper.cshtml deleted file mode 100644 index 0cfffbe01..000000000 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Views/Layout-Designer-Wrapper.cshtml +++ /dev/null @@ -1,13 +0,0 @@ -@using Orchard.Mvc.Html; - - - - - - @Display(Model.Head) - - - @Display(Model.Body) - @Display(Model.Tail) - - \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Views/Layout-Designer.cshtml b/src/Orchard.Web/Modules/Orchard.Layouts/Views/Layout-Designer.cshtml deleted file mode 100644 index f19dcb999..000000000 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Views/Layout-Designer.cshtml +++ /dev/null @@ -1,7 +0,0 @@ -@model dynamic -@{ - SetMeta("X-UA-Compatible", "IE=edge,chrome=1"); - Style.Include("layout-designer.css"); - Script.Require("jQuery").AtFoot(); -} -@Display(Model.Content) \ No newline at end of file From 2508f503b78426abb9e2e8ea7fe8d89e119c5770 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Sat, 4 Jul 2015 09:51:05 +0200 Subject: [PATCH 13/17] #5298: Suppressed input validation on SMPT test form. This fixes the issue when you try and use address formats such as "User " and adds support for sending HTML as part of the message body. Fixes #5298 --- .../Modules/Orchard.Email/Controllers/EmailAdminController.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Orchard.Web/Modules/Orchard.Email/Controllers/EmailAdminController.cs b/src/Orchard.Web/Modules/Orchard.Email/Controllers/EmailAdminController.cs index 6aca6ba30..941cb1290 100644 --- a/src/Orchard.Web/Modules/Orchard.Email/Controllers/EmailAdminController.cs +++ b/src/Orchard.Web/Modules/Orchard.Email/Controllers/EmailAdminController.cs @@ -23,6 +23,7 @@ namespace Orchard.Email.Controllers { public Localizer T { get; set; } [HttpPost] + [ValidateInput(false)] public ActionResult TestSettings(TestSmtpSettings testSettings) { ILogger logger = null; try { From 22fa33c06f8c1620b0e690efd3bf13db2aeb0b22 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Sat, 4 Jul 2015 12:25:23 +0200 Subject: [PATCH 14/17] #5279: Fixed "potentially dangerous request" error. Fixes #5279 --- .../Orchard.DynamicForms/Controllers/FormController.cs | 1 + .../Orchard.DynamicForms/Drivers/FormElementDriver.cs | 9 ++++++++- .../Modules/Orchard.DynamicForms/Elements/Form.cs | 5 +++++ .../Modules/Orchard.DynamicForms/Services/FormService.cs | 8 +++++++- 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Controllers/FormController.cs b/src/Orchard.Web/Modules/Orchard.DynamicForms/Controllers/FormController.cs index 3a033fa65..4630fe116 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Controllers/FormController.cs +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Controllers/FormController.cs @@ -35,6 +35,7 @@ namespace Orchard.DynamicForms.Controllers { public ILogger Logger { get; set; } [HttpPost] + [ValidateInput(false)] public ActionResult Submit(int contentId, string formName) { var layoutPart = _layoutManager.GetLayout(contentId); var form = _formService.FindForm(layoutPart, formName); diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Drivers/FormElementDriver.cs b/src/Orchard.Web/Modules/Orchard.DynamicForms/Drivers/FormElementDriver.cs index 1a8b72db7..7c6a0be09 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Drivers/FormElementDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Drivers/FormElementDriver.cs @@ -78,12 +78,19 @@ namespace Orchard.DynamicForms.Drivers { Title: "Store Submission", Value: "true", Description: T("Stores the submitted form into the database.")), + _HtmlEncode: shape.Checkbox( + Id: "HtmlEncode", + Name: "HtmlEncode", + Title: "Html Encode", + Value: "true", + Checked: true, + Description: T("Check this option to automatically HTML encode submitted values to prevent code injection.")), _CreateContent: shape.Checkbox( Id: "CreateContent", Name: "CreateContent", Title: "Create Content", Value: "true", - Description: T("Check this to create a content item based using the submitted values. You will have to select a Content Type here and bind the form fields to the various parts and fields of the selected Content Type.")), + Description: T("Check this option to create a content item based using the submitted values. You will have to select a Content Type here and bind the form fields to the various parts and fields of the selected Content Type.")), _ContentType: shape.SelectList( Id: "FormBindingContentType", Name: "FormBindingContentType", diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Elements/Form.cs b/src/Orchard.Web/Modules/Orchard.DynamicForms/Elements/Form.cs index 3360dafc8..2c6c44996 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Elements/Form.cs +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Elements/Form.cs @@ -32,6 +32,11 @@ namespace Orchard.DynamicForms.Elements { set { this.Store(x => x.StoreSubmission, value); } } + public bool HtmlEncode { + get { return this.Retrieve(x => x.HtmlEncode, () => true); } + set { this.Store(x => x.HtmlEncode, value); } + } + public bool? CreateContent { get { return this.Retrieve(x => x.CreateContent); } set { this.Store(x => x.CreateContent, value); } diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Services/FormService.cs b/src/Orchard.Web/Modules/Orchard.DynamicForms/Services/FormService.cs index 8dcaf52ec..97f2fbaca 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Services/FormService.cs +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Services/FormService.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Collections.Specialized; using System.Data; using System.Linq; +using System.Web; using System.Web.Mvc; using Orchard.Collections; using Orchard.ContentManagement; @@ -179,7 +180,12 @@ namespace Orchard.DynamicForms.Services { ReadElementValues(element, context); foreach (var key in from string key in context.Output where !String.IsNullOrWhiteSpace(key) && values[key] == null select key) { - values.Add(key, context.Output[key]); + var value = context.Output[key]; + + if (form.HtmlEncode) + value = HttpUtility.HtmlEncode(value); + + values.Add(key, value); } } From c8f2c2731170aef6b54f44896ac5bb277a69c05d Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Sat, 4 Jul 2015 12:45:17 +0200 Subject: [PATCH 15/17] Fixed form redirect issue. This fixes the issue where you would not stay on the same page after a model validation occurred. --- .../Modules/Orchard.DynamicForms/Controllers/FormController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Controllers/FormController.cs b/src/Orchard.Web/Modules/Orchard.DynamicForms/Controllers/FormController.cs index 4630fe116..d76a2335e 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Controllers/FormController.cs +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Controllers/FormController.cs @@ -39,7 +39,7 @@ namespace Orchard.DynamicForms.Controllers { public ActionResult Submit(int contentId, string formName) { var layoutPart = _layoutManager.GetLayout(contentId); var form = _formService.FindForm(layoutPart, formName); - var urlReferrer = Request.UrlReferrer != null && Url.IsLocalUrl(Request.UrlReferrer.ToString()) ? Request.UrlReferrer.ToString() : "~/"; + var urlReferrer = Request.UrlReferrer != null ? Request.UrlReferrer.LocalPath : "~/"; if (form == null) { Logger.Warning("The specified form \"{0}\" could not be found.", formName); From 6bce34f3796221c38d563196e70cfcd96818029f Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Sat, 4 Jul 2015 13:01:17 +0200 Subject: [PATCH 16/17] #5260: Fixed the issue where form validation result gets output cached. Fixes #5260 --- .../Controllers/FormController.cs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Controllers/FormController.cs b/src/Orchard.Web/Modules/Orchard.DynamicForms/Controllers/FormController.cs index d76a2335e..fc5ad4c88 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Controllers/FormController.cs +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Controllers/FormController.cs @@ -6,6 +6,7 @@ using Orchard.DynamicForms.Services; using Orchard.Layouts.Services; using Orchard.Localization; using Orchard.Logging; +using Orchard.Services; using Orchard.Tokens; using Orchard.UI.Notify; using IController = Orchard.DynamicForms.Services.IController; @@ -16,17 +17,20 @@ namespace Orchard.DynamicForms.Controllers { private readonly ILayoutManager _layoutManager; private readonly IFormService _formService; private readonly ITokenizer _tokenizer; + private readonly IClock _clock; public FormController( INotifier notifier, ILayoutManager layoutManager, IFormService formService, - ITokenizer tokenizer) { + ITokenizer tokenizer, + IClock clock) { _notifier = notifier; _layoutManager = layoutManager; _formService = formService; _tokenizer = tokenizer; + _clock = clock; T = NullLocalizer.Instance; Logger = NullLogger.Instance; } @@ -50,8 +54,12 @@ namespace Orchard.DynamicForms.Controllers { var values = _formService.SubmitForm(layoutPart, form, ValueProvider, ModelState, this); this.TransferFormSubmission(form, values); - if (!ModelState.IsValid) - return Redirect(urlReferrer); + if (!ModelState.IsValid) { + // We need a way to inform the output cache filter to not cache the upcoming request. + var epoch = new DateTime(2014, DateTimeKind.Utc).Ticks; + var refresh = _clock.UtcNow.Ticks - epoch; + return Redirect(urlReferrer + "?__r=" + refresh); + } if(Response.IsRequestBeingRedirected) return new EmptyResult(); From b6db85b8af00fc9eb42fdf854ef53d9fad9b263d Mon Sep 17 00:00:00 2001 From: Lombiq Date: Sun, 5 Jul 2015 14:19:37 +0200 Subject: [PATCH 17/17] Untabifying CommentPartDriver --- .../Modules/Orchard.Comments/Drivers/CommentPartDriver.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentPartDriver.cs b/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentPartDriver.cs index f5651bfc7..a2488a61f 100644 --- a/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentPartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentPartDriver.cs @@ -53,7 +53,7 @@ namespace Orchard.Comments.Drivers { else { return ContentShape("Parts_Comment_Edit", () => shapeHelper.EditorTemplate(TemplateName: "Parts.Comment", Model: part, Prefix: Prefix)); - } + } } // POST