diff --git a/Tutorial/.vscode/settings.json b/Tutorial/.vscode/settings.json
new file mode 100644
index 00000000..9eadbfd4
--- /dev/null
+++ b/Tutorial/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "jslint.enable": false
+}
\ No newline at end of file
diff --git a/Tutorial/Manifests/Tutorial Complete.trex b/Tutorial/Manifests/Tutorial Complete.trex
new file mode 100644
index 00000000..4e91b926
--- /dev/null
+++ b/Tutorial/Manifests/Tutorial Complete.trex
@@ -0,0 +1,22 @@
+
+
+
+ en_US
+
+ Demonstrates getting the selected marks and responding to user input
+
+
+
+
+ 0.6
+
+ http://localhost:8765/Tutorial/Part_6/MarksSelection.html
+
+ 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
+
+
+
+ Tutorial - Complete
+
+
+
diff --git a/Tutorial/Manifests/Tutorial_Part_0.trex b/Tutorial/Manifests/Tutorial_Part_0.trex
new file mode 100644
index 00000000..057b7b6c
--- /dev/null
+++ b/Tutorial/Manifests/Tutorial_Part_0.trex
@@ -0,0 +1,22 @@
+
+
+
+ en_US
+
+ Demonstrates getting the selected marks and responding to user input
+
+
+
+
+ 0.6
+
+ http://localhost:8765/Tutorial/Part_0/MarksSelection.html
+
+ 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
+
+
+
+ Tutorial - Part 0
+
+
+
diff --git a/Tutorial/Manifests/Tutorial_Part_1.trex b/Tutorial/Manifests/Tutorial_Part_1.trex
new file mode 100644
index 00000000..9a0d24fe
--- /dev/null
+++ b/Tutorial/Manifests/Tutorial_Part_1.trex
@@ -0,0 +1,22 @@
+
+
+
+ en_US
+
+ Demonstrates getting the selected marks and responding to user input
+
+
+
+
+ 0.6
+
+ http://localhost:8765/Tutorial/Part_1/MarksSelection.html
+
+ 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
+
+
+
+ Tutorial - Part 1
+
+
+
diff --git a/Tutorial/Manifests/Tutorial_Part_2.trex b/Tutorial/Manifests/Tutorial_Part_2.trex
new file mode 100644
index 00000000..6c32ed7f
--- /dev/null
+++ b/Tutorial/Manifests/Tutorial_Part_2.trex
@@ -0,0 +1,22 @@
+
+
+
+ en_US
+
+ Demonstrates getting the selected marks and responding to user input
+
+
+
+
+ 0.6
+
+ http://localhost:8765/Tutorial/Part_2/MarksSelection.html
+
+ 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
+
+
+
+ Tutorial - Part 2
+
+
+
diff --git a/Tutorial/Manifests/Tutorial_Part_3.trex b/Tutorial/Manifests/Tutorial_Part_3.trex
new file mode 100644
index 00000000..bc8a68e3
--- /dev/null
+++ b/Tutorial/Manifests/Tutorial_Part_3.trex
@@ -0,0 +1,22 @@
+
+
+
+ en_US
+
+ Demonstrates getting the selected marks and responding to user input
+
+
+
+
+ 0.6
+
+ http://localhost:8765/Tutorial/Part_3/MarksSelection.html
+
+ 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
+
+
+
+ Tutorial - Part 3
+
+
+
diff --git a/Tutorial/Manifests/Tutorial_Part_4.trex b/Tutorial/Manifests/Tutorial_Part_4.trex
new file mode 100644
index 00000000..4bcd550e
--- /dev/null
+++ b/Tutorial/Manifests/Tutorial_Part_4.trex
@@ -0,0 +1,22 @@
+
+
+
+ en_US
+
+ Demonstrates getting the selected marks and responding to user input
+
+
+
+
+ 0.6
+
+ http://localhost:8765/Tutorial/Part_4/MarksSelection.html
+
+ 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
+
+
+
+ Tutorial - Part 4
+
+
+
diff --git a/Tutorial/Manifests/Tutorial_Part_5.trex b/Tutorial/Manifests/Tutorial_Part_5.trex
new file mode 100644
index 00000000..8d9dd7a0
--- /dev/null
+++ b/Tutorial/Manifests/Tutorial_Part_5.trex
@@ -0,0 +1,22 @@
+
+
+
+ en_US
+
+ Demonstrates getting the selected marks and responding to user input
+
+
+
+
+ 0.6
+
+ http://localhost:8765/Tutorial/Part_5/MarksSelection.html
+
+ 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
+
+
+
+ Tutorial - Part 5
+
+
+
diff --git a/Tutorial/Manifests/Tutorial_Part_6.trex b/Tutorial/Manifests/Tutorial_Part_6.trex
new file mode 100644
index 00000000..02f59d00
--- /dev/null
+++ b/Tutorial/Manifests/Tutorial_Part_6.trex
@@ -0,0 +1,22 @@
+
+
+
+ en_US
+
+ Demonstrates getting the selected marks and responding to user input
+
+
+
+
+ 0.6
+
+ http://localhost:8765/Tutorial/Part_6/MarksSelection.html
+
+ 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
+
+
+
+ Tutorial - Part 6
+
+
+
diff --git a/Tutorial/Part_0/MarksSelection.css b/Tutorial/Part_0/MarksSelection.css
new file mode 100644
index 00000000..e69de29b
diff --git a/Tutorial/Part_0/MarksSelection.html b/Tutorial/Part_0/MarksSelection.html
new file mode 100644
index 00000000..70a97bc3
--- /dev/null
+++ b/Tutorial/Part_0/MarksSelection.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+ Tutorial - Part 0
+
+
+
+
+
+
+ Hello Extensions!
+
+
\ No newline at end of file
diff --git a/Tutorial/Part_0/MarksSelection.js b/Tutorial/Part_0/MarksSelection.js
new file mode 100644
index 00000000..36fc4059
--- /dev/null
+++ b/Tutorial/Part_0/MarksSelection.js
@@ -0,0 +1,11 @@
+"use strict";
+
+// Wrap everything in an anonymous function to avoid poluting the global namespace
+(function() {
+
+ // Use the jQuery document ready signal to know when everything has been initialized
+ $(document).ready(function() {
+ // Add your startup code here
+
+ });
+})();
\ No newline at end of file
diff --git a/Tutorial/Part_0/readme.md b/Tutorial/Part_0/readme.md
new file mode 100644
index 00000000..66c5ce92
--- /dev/null
+++ b/Tutorial/Part_0/readme.md
@@ -0,0 +1,19 @@
+## Part 0 - Starting the Server & Registering a Manifest
+
+This section contains a couple of very basic files which will become the basis of our extensions. There is a simple HTML page which includes jquery and some other libraries, a javascript file where we will write our code, and an empty css file. At the end of the section, we'll be able to see our extension show up in Tableau, and load this basic html page inside a dashboard.
+
+#### Starting the Server
+
+Extensions are simply web pages, so the first thing we'll need to do is make sure we have a web server up and running to serve our content. To do that, navigate to the root of the extensions repository in a command prompt, and run `npm start`. This command will start a simple http server listening on port 8765 and just serving up the contents of this repository over http.
+
+#### Registering the Manifest
+
+The very first thing you need to do is to provide an extension, or manifest file (`.trex`). If you cloned or downloaded the `.zip` file for the repository, you can find the manifests for the tutorial inside the Manifests folder. The `.trex` file contains basic information like the name of the extensions (as it will appear in Tableau) and the url where the extension is hosted. To have the extension show up in Tableau, you must copy the `.trex` file into your `My Tableau Repository (Beta)/Extensions` fodler and restart Tableau. When Tableau start up again, you should see the extensions listed when authoring a dashboard.
+
+#### Testing It Out
+
+After starting the server, copying the manifest file over, and restarting Tableau, you should now see your extension in the dashboard authoring pane on the left side of Tableau. Drag out the extension onto a dashboard, and you should see "Hello Extensions" on your dashboard.
+
+
+
+[Next Section (Part 1 - Initialization)](../Part_1/readme.md)
\ No newline at end of file
diff --git a/Tutorial/Part_1/MarksSelection.css b/Tutorial/Part_1/MarksSelection.css
new file mode 100644
index 00000000..b4261c76
--- /dev/null
+++ b/Tutorial/Part_1/MarksSelection.css
@@ -0,0 +1,11 @@
+h4, h5 {
+ text-align: center;
+}
+
+div.DTS div.dataTables_scrollBody {
+ background: white;
+}
+
+.sheet_name {
+ font-weight: bold;
+}
\ No newline at end of file
diff --git a/Tutorial/Part_1/MarksSelection.html b/Tutorial/Part_1/MarksSelection.html
new file mode 100644
index 00000000..fb937ca0
--- /dev/null
+++ b/Tutorial/Part_1/MarksSelection.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+ Tutorial - Part 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Hello from
+
+
+
\ No newline at end of file
diff --git a/Tutorial/Part_1/MarksSelection.js b/Tutorial/Part_1/MarksSelection.js
new file mode 100644
index 00000000..0a220c14
--- /dev/null
+++ b/Tutorial/Part_1/MarksSelection.js
@@ -0,0 +1,17 @@
+"use strict";
+
+// Wrap everything in an anonymous function to avoid poluting the global namespace
+(function() {
+
+ // Use the jQuery document ready signal to know when everything has been initialized
+ $(document).ready(function() {
+
+ // Tell Tableau we'd like to initialize our extension
+ tableau.extensions.initializeAsync().then(function() {
+
+ // Get the dashboard name from the tableau namespace and set it as our title
+ const dashboardName = tableau.extensions.dashboardContent.dashboard.name;
+ $('#choose_sheet_title').text(dashboardName);
+ });
+ });
+})();
\ No newline at end of file
diff --git a/Tutorial/Part_1/readme.md b/Tutorial/Part_1/readme.md
new file mode 100644
index 00000000..10d43e7a
--- /dev/null
+++ b/Tutorial/Part_1/readme.md
@@ -0,0 +1,25 @@
+## Part 1 - Initialization
+
+Now that we have our extension registered with Tableau, we need to add some things to it in order to initialize communication with Tableau and get everythign ready.
+
+#### Adding the Tableau Extensions Library
+
+A requirement of every extension is to include the Tableau Extensions JavaScript library with their extension. This library is reponsible for providing the API which your extension will communicate through. We include the library by adding a script tag to our html document with the path to the libary `` (TODO - This will change once we have a CDN).
+
+In Part 0, we includes some external JavaScript libraries which will help make writing our extension easier. The JavaScript libraries we included were Bootstrap, DataTables, and JQuery. Data Tables has a convenient download builder [here](https://datatables.net/download/) which we used to bundle all this together.
+
+#### Telling Tableau we want to initialize
+
+The final step for writing a complete extension is to call the Extension API method `tableau.extensions.initializeAsync()` when the page has loaded. This indicates to Tableau that this is a real extension and everything is working as expected. The method call also triggers Tableau to configure the rest of the Extensions API. A common pattern in the Extensions API is to have function names which end with `Async()`. When you see this in a function signature, it means that function will return a JavaScript [promise](https://scotch.io/tutorials/javascript-promises-for-dummies) which will resolved when complete.
+
+#### Getting the Dashboard's Name
+
+The final change we make is to add some code which will be executed once our initialize promise has resolved. This code grabs the name of the dashboard from `tableau.extensions.dashboardContent.dashboard.name` and displays it to the user.
+
+#### Trying it out
+
+Drag out the extensiosn for Part 1 and you should see the name of your dashboard in the zone.
+
+
+
+[Next Section (Part 2 - Ask the User to Select a Sheet)](../Part_2/readme.md)
\ No newline at end of file
diff --git a/Tutorial/Part_2/MarksSelection.css b/Tutorial/Part_2/MarksSelection.css
new file mode 100644
index 00000000..b4261c76
--- /dev/null
+++ b/Tutorial/Part_2/MarksSelection.css
@@ -0,0 +1,11 @@
+h4, h5 {
+ text-align: center;
+}
+
+div.DTS div.dataTables_scrollBody {
+ background: white;
+}
+
+.sheet_name {
+ font-weight: bold;
+}
\ No newline at end of file
diff --git a/Tutorial/Part_2/MarksSelection.html b/Tutorial/Part_2/MarksSelection.html
new file mode 100644
index 00000000..1d5ebde1
--- /dev/null
+++ b/Tutorial/Part_2/MarksSelection.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+ Tutorial - Part 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Tutorial/Part_2/MarksSelection.js b/Tutorial/Part_2/MarksSelection.js
new file mode 100644
index 00000000..4fa7e551
--- /dev/null
+++ b/Tutorial/Part_2/MarksSelection.js
@@ -0,0 +1,61 @@
+"use strict";
+
+// Wrap everything in an anonymous function to avoid poluting the global namespace
+(function() {
+
+ // Use the jQuery document ready signal to know when everything has been initialized
+ $(document).ready(function() {
+
+ // Tell Tableau we'd like to initialize our extension
+ tableau.extensions.initializeAsync().then(function() {
+
+ // Once the extensions is initialized, ask the user to choose a sheet
+ showChooseSheetDialog();
+ });
+ });
+
+ /**
+ * Shows the choose sheet UI. Once a sheet is selected, the data table for the sheet is shown
+ */
+ function showChooseSheetDialog() {
+ // Clear out the existing list of sheets
+ $('#choose_sheet_buttons').empty();
+
+ // Set the dashboard's name in the title
+ const dashboardName = tableau.extensions.dashboardContent.dashboard.name;
+ $('#choose_sheet_title').text(dashboardName);
+
+ // The first step in choosing a sheet will be asking Tableau what sheets are available
+ const worksheets = tableau.extensions.dashboardContent.dashboard.worksheets;
+
+ // Next, we loop through all of these worksheets add add radio buttons for each one
+ worksheets.forEach(function(worksheet) {
+
+ // Declare our new button which contains the sheet name
+ const button = $("
+
+
+
+
+
+
+ Tutorial - Part 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Marks for Sheet Name
+
+
+
+
+
+
+
No marks selected
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Tutorial/Part_3/MarksSelection.js b/Tutorial/Part_3/MarksSelection.js
new file mode 100644
index 00000000..f1131114
--- /dev/null
+++ b/Tutorial/Part_3/MarksSelection.js
@@ -0,0 +1,137 @@
+"use strict";
+
+// Wrap everything in an anonymous function to avoid poluting the global namespace
+(function() {
+
+ // Use the jQuery document ready signal to know when everything has been initialized
+ $(document).ready(function() {
+
+ // Tell Tableau we'd like to initialize our extension
+ tableau.extensions.initializeAsync().then(function() {
+
+ // Once the extensions is initialized, ask the user to choose a sheet
+ showChooseSheetDialog();
+
+ initializeButtons();
+ });
+ });
+
+ /**
+ * Shows the choose sheet UI. Once a sheet is selected, the data table for the sheet is shown
+ */
+ function showChooseSheetDialog() {
+ // Clear out the existing list of sheets
+ $('#choose_sheet_buttons').empty();
+
+ // Set the dashboard's name in the title
+ const dashboardName = tableau.extensions.dashboardContent.dashboard.name;
+ $('#choose_sheet_title').text(dashboardName);
+
+ // The first step in choosing a sheet will be asking Tableau what sheets are available
+ const worksheets = tableau.extensions.dashboardContent.dashboard.worksheets;
+
+ // Next, we loop through all of these worksheets add add radio buttons for each one
+ worksheets.forEach(function(worksheet) {
+
+ // Declare our new button which contains the sheet name
+ const button = createButton(worksheet.name);
+
+ // Create an event handler for when this button is clicked
+ button.click(function() {
+
+ // Get the worksheet name which was selected
+ const worksheetName = worksheet.name;
+
+ // Close the dialog and show the data table for this worksheet
+ $('#choose_sheet_dialog').modal('toggle');
+ loadSelectedMarks(worksheetName);
+ });
+
+ // Add our button to the list of worksheets to choose from
+ $('#choose_sheet_buttons').append(button);
+ });
+
+ // Show the dialog
+ $('#choose_sheet_dialog').modal('toggle');
+ }
+
+ function createButton(buttonTitle) {
+ const button =
+ $(`
+ ${buttonTitle}
+ `);
+
+ return button;
+ }
+
+ function loadSelectedMarks(worksheetName) {
+ // Get the worksheet object we want to get the selectd marks for
+ const worksheet = getSelectedSheet(worksheetName);
+
+ // Set our title to an appropriate value
+ $('#selected_marks_title').text(worksheet.name);
+
+ // Call to get the selected marks for our sheet
+ worksheet.getSelectedMarksAsync().then(function(marks) {
+
+ // Get the first DataTable for our selected marks (usually there is just one)
+ const worksheetData = marks.data[0];
+
+ // Map our data into the format which the data table component expects it
+ const data = worksheetData.data.map(function(row, index) {
+ const rowData = row.map(function(cell) {
+ return cell.formattedValue;
+ });
+
+ return rowData;
+ });
+
+ const columns = worksheetData.columns.map(function(column) {
+ return { title: column.fieldName }
+ });
+
+ // Populate the data table with the rows and columns we just pulled out
+ populateDataTable(data, columns);
+ });
+ }
+
+ function populateDataTable(data, columns) {
+ // Do some UI setup here change the visible section and reinitialize the table
+ $('#data_table_wrapper').empty();
+
+ if (data.length > 0) {
+ $('#no_data_message').css('display', 'none');
+ $('#data_table_wrapper').append(``);
+
+ // Do some math to compute the height we want the data table to be
+ var top = $('#data_table_wrapper')[0].getBoundingClientRect().top;
+ var height = $(document).height() - top - 130;
+
+ // Initialize our data table with what we just gathered
+ $('#data_table').DataTable({
+ data: data,
+ columns: columns,
+ autoWidth: false,
+ deferRender: true,
+ scroller: true,
+ scrollY: height,
+ scrollX: true,
+ dom: "<'row'<'col-sm-6'i><'col-sm-6'f>><'row'<'col-sm-12'tr>>" // Do some custom styling
+ });
+ } else {
+ // If we didn't get any rows back, there must be no marks selected
+ $('#no_data_message').css('display', 'inline');
+ }
+ }
+
+ function initializeButtons() {
+ $('#show_choose_sheet_button').click(showChooseSheetDialog);
+ }
+
+ function getSelectedSheet(worksheetName) {
+ // go through all the worksheets in the dashboard and find the one we want
+ return tableau.extensions.dashboardContent.dashboard.worksheets.find(function(sheet){
+ return sheet.name === worksheetName;
+ });
+ }
+})();
\ No newline at end of file
diff --git a/Tutorial/Part_3/readme.md b/Tutorial/Part_3/readme.md
new file mode 100644
index 00000000..3fde7075
--- /dev/null
+++ b/Tutorial/Part_3/readme.md
@@ -0,0 +1,17 @@
+## Part 3 - Getting and Displaying the Data
+
+Now that the user has selected a sheet, we want to change the UI that is displayed and populate a data grid with the data for the selected marks, or a message indicating no marks are selected. We also set up some other UI components, such as hooking up a button for switching which sheet to get data from.
+
+#### Getting the Data
+
+Once the right UI is showing, we need to ask Tableau for the data of the sheet the user picked. The first step is to find the worksheet object by name inside the `tableau.extensions.dashboardContent.dashboard.worksheets` array. After we have the sheet, we call the `worksheet.getSelectedMarksAsync()` API to get the data for the marks that are selected. This is an asynchronous call which returns a promise. We can consult the Extensions API documentation to find out what format the returned data will have.
+
+#### Displaying the Data
+
+The final step is to process the returned data into a format that Data Tables expects and pass the data over. We do this by mapping the data into rows and column headers before initializing the data table component. [DataTables](https://datatables.net/) has great documentation, so we won't go into details about how we configured the table.
+
+#### Trying it out
+
+
+
+[Next Section (Part 4 - Responding to Selection Changes)](../Part_4/readme.md)
\ No newline at end of file
diff --git a/Tutorial/Part_4/MarksSelection.css b/Tutorial/Part_4/MarksSelection.css
new file mode 100644
index 00000000..b4261c76
--- /dev/null
+++ b/Tutorial/Part_4/MarksSelection.css
@@ -0,0 +1,11 @@
+h4, h5 {
+ text-align: center;
+}
+
+div.DTS div.dataTables_scrollBody {
+ background: white;
+}
+
+.sheet_name {
+ font-weight: bold;
+}
\ No newline at end of file
diff --git a/Tutorial/Part_4/MarksSelection.html b/Tutorial/Part_4/MarksSelection.html
new file mode 100644
index 00000000..2165c8bb
--- /dev/null
+++ b/Tutorial/Part_4/MarksSelection.html
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+ Tutorial - Part 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Marks for Sheet Name
+
+
+
+
+
+
+
No marks selected
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Tutorial/Part_4/MarksSelection.js b/Tutorial/Part_4/MarksSelection.js
new file mode 100644
index 00000000..e1ab8bfe
--- /dev/null
+++ b/Tutorial/Part_4/MarksSelection.js
@@ -0,0 +1,152 @@
+"use strict";
+
+// Wrap everything in an anonymous function to avoid poluting the global namespace
+(function() {
+
+ // Use the jQuery document ready signal to know when everything has been initialized
+ $(document).ready(function() {
+
+ // Tell Tableau we'd like to initialize our extension
+ tableau.extensions.initializeAsync().then(function() {
+
+ // Once the extensions is initialized, ask the user to choose a sheet
+ showChooseSheetDialog();
+
+ initializeButtons();
+ });
+ });
+
+ /**
+ * Shows the choose sheet UI. Once a sheet is selected, the data table for the sheet is shown
+ */
+ function showChooseSheetDialog() {
+ // Clear out the existing list of sheets
+ $('#choose_sheet_buttons').empty();
+
+ // Set the dashboard's name in the title
+ const dashboardName = tableau.extensions.dashboardContent.dashboard.name;
+ $('#choose_sheet_title').text(dashboardName);
+
+ // The first step in choosing a sheet will be asking Tableau what sheets are available
+ const worksheets = tableau.extensions.dashboardContent.dashboard.worksheets;
+
+ // Next, we loop through all of these worksheets add add radio buttons for each one
+ worksheets.forEach(function(worksheet) {
+
+ // Declare our new button which contains the sheet name
+ const button = createButton(worksheet.name);
+
+ // Create an event handler for when this button is clicked
+ button.click(function() {
+
+ // Get the worksheet name which was selected
+ const worksheetName = worksheet.name;
+
+ // Close the dialog and show the data table for this worksheet
+ $('#choose_sheet_dialog').modal('toggle');
+ loadSelectedMarks(worksheetName);
+ });
+
+ // Add our button to the list of worksheets to choose from
+ $('#choose_sheet_buttons').append(button);
+ });
+
+ // Show the dialog
+ $('#choose_sheet_dialog').modal('toggle');
+ }
+
+ function createButton(buttonTitle) {
+ const button =
+ $(`
+ ${buttonTitle}
+ `);
+
+ return button;
+ }
+
+ // This variable will save off the function we can call to unregister listening to marks-selected events
+ let unregisterEventHandlerFunction = undefined;
+
+ function loadSelectedMarks(worksheetName) {
+
+ // Remove any existing event listeners
+ if (unregisterEventHandlerFunction) {
+ unregisterEventHandlerFunction();
+ }
+
+ // Get the worksheet object we want to get the selectd marks for
+ const worksheet = getSelectedSheet(worksheetName);
+
+ // Set our title to an appropriate value
+ $('#selected_marks_title').text(worksheet.name);
+
+ // Call to get the selected marks for our sheet
+ worksheet.getSelectedMarksAsync().then(function(marks) {
+
+ // Get the first DataTable for our selected marks (usually there is just one)
+ const worksheetData = marks.data[0];
+
+ // Map our data into the format which the data table component expects it
+ const data = worksheetData.data.map(function(row, index) {
+ const rowData = row.map(function(cell) {
+ return cell.formattedValue;
+ });
+
+ return rowData;
+ });
+
+ const columns = worksheetData.columns.map(function(column) {
+ return { title: column.fieldName }
+ });
+
+ // Populate the data table with the rows and columns we just pulled out
+ populateDataTable(data, columns);
+ });
+
+ // Add an event listener for the selection changed event on this sheet.
+ unregisterEventHandlerFunction = worksheet.addEventListener(tableau.TableauEventType.MarkSelectionChanged, function(selectionEvent) {
+ // When the selection changes, reload the data
+ loadSelectedMarks(worksheetName);
+ });
+ }
+
+ function populateDataTable(data, columns) {
+ // Do some UI setup here change the visible section and reinitialize the table
+ $('#data_table_wrapper').empty();
+
+ if (data.length > 0) {
+ $('#no_data_message').css('display', 'none');
+ $('#data_table_wrapper').append(``);
+
+ // Do some math to compute the height we want the data table to be
+ var top = $('#data_table_wrapper')[0].getBoundingClientRect().top;
+ var height = $(document).height() - top - 130;
+
+ // Initialize our data table with what we just gathered
+ $('#data_table').DataTable({
+ data: data,
+ columns: columns,
+ autoWidth: false,
+ deferRender: true,
+ scroller: true,
+ scrollY: height,
+ scrollX: true,
+ dom: "<'row'<'col-sm-6'i><'col-sm-6'f>><'row'<'col-sm-12'tr>>" // Do some custom styling
+ });
+ } else {
+ // If we didn't get any rows back, there must be no marks selected
+ $('#no_data_message').css('display', 'inline');
+ }
+ }
+
+ function initializeButtons() {
+ $('#show_choose_sheet_button').click(showChooseSheetDialog);
+ }
+
+ function getSelectedSheet(worksheetName) {
+ // go through all the worksheets in the dashboard and find the one we want
+ return tableau.extensions.dashboardContent.dashboard.worksheets.find(function(sheet){
+ return sheet.name === worksheetName;
+ });
+ }
+})();
\ No newline at end of file
diff --git a/Tutorial/Part_4/readme.md b/Tutorial/Part_4/readme.md
new file mode 100644
index 00000000..203baf10
--- /dev/null
+++ b/Tutorial/Part_4/readme.md
@@ -0,0 +1,15 @@
+## Part 4 - Responding to Selection Changes
+
+We now have a fully working example which allows us to get the selected marks for a sheet. Unfortunately, when the mark selection changes we don't update to those changes. The next part of our tutorial covers responding to user selection changes. This is actually an extremely simple process.
+
+#### Adding the event listener
+
+Throughout the extensions API, we provide ways to register for notifications about events occuring. The general signature is `object.addEventListener('event_name', callbackFunction)`. For selection changes, we get the worksheet object we want to listen on, and then call `worksheet.addEventListener(tableau.TableauEventType.MarkSelectionChanged, handler)`. Whenever this sheet has a new selection, our `handler` function will be called and we can reload the data table with new data. In this case, our handler just triggers us to fetch the data gain.
+
+The other important aspect of the `addEventListener` function is that it returns a helper function that makes it easy to remove the event listner. When we re-initialize the data table, we check to see if our `unregisterEventHandlerFunction` function is defined, if it is, we unregister it, so we are only listening to one sheet at a time.
+
+#### Trying it out
+
+
+
+[Next Section (Part 5 - Persisting Settings in the Workbook)](../Part_5/readme.md)
\ No newline at end of file
diff --git a/Tutorial/Part_5/MarksSelection.css b/Tutorial/Part_5/MarksSelection.css
new file mode 100644
index 00000000..b4261c76
--- /dev/null
+++ b/Tutorial/Part_5/MarksSelection.css
@@ -0,0 +1,11 @@
+h4, h5 {
+ text-align: center;
+}
+
+div.DTS div.dataTables_scrollBody {
+ background: white;
+}
+
+.sheet_name {
+ font-weight: bold;
+}
\ No newline at end of file
diff --git a/Tutorial/Part_5/MarksSelection.html b/Tutorial/Part_5/MarksSelection.html
new file mode 100644
index 00000000..50af80a3
--- /dev/null
+++ b/Tutorial/Part_5/MarksSelection.html
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+ Tutorial - Part 5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Marks for Sheet Name
+
+
+
+
+
+
+
+
+
+
No marks selected
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Tutorial/Part_5/MarksSelection.js b/Tutorial/Part_5/MarksSelection.js
new file mode 100644
index 00000000..d3833552
--- /dev/null
+++ b/Tutorial/Part_5/MarksSelection.js
@@ -0,0 +1,162 @@
+"use strict";
+
+// Wrap everything in an anonymous function to avoid poluting the global namespace
+(function() {
+
+ // Use the jQuery document ready signal to know when everything has been initialized
+ $(document).ready(function() {
+
+ // Tell Tableau we'd like to initialize our extension
+ tableau.extensions.initializeAsync().then(function() {
+
+ // Fetch the saved sheet name from settings. this will be undefined if there isn't one configured yet
+ const savedSheetName = tableau.extensions.settings.get('sheet');
+ if (savedSheetName) {
+ // We have a saved sheet name, show its selected marks
+ loadSelectedMarks(savedSheetName);
+ } else {
+ // if there isn't a sheet saved in settings, show the dialog
+ showChooseSheetDialog();
+ }
+
+ initializeButtons();
+ });
+ });
+
+ /**
+ * Shows the choose sheet UI. Once a sheet is selected, the data table for the sheet is shown
+ */
+ function showChooseSheetDialog() {
+ // Clear out the existing list of sheets
+ $('#choose_sheet_buttons').empty();
+
+ // Set the dashboard's name in the title
+ const dashboardName = tableau.extensions.dashboardContent.dashboard.name;
+ $('#choose_sheet_title').text(dashboardName);
+
+ // The first step in choosing a sheet will be asking Tableau what sheets are available
+ const worksheets = tableau.extensions.dashboardContent.dashboard.worksheets;
+
+ // Next, we loop through all of these worksheets add add radio buttons for each one
+ worksheets.forEach(function(worksheet) {
+
+ // Declare our new button which contains the sheet name
+ const button = createButton(worksheet.name);
+
+ // Create an event handler for when this button is clicked
+ button.click(function() {
+
+ // Get the worksheet name and save it to settings.
+ const worksheetName = worksheet.name;
+ tableau.extensions.settings.set('sheet', worksheetName);
+ tableau.extensions.settings.saveAsync().then(function() {
+
+ // Once the save has completed, close the dialog and show the data table for this worksheet
+ $('#choose_sheet_dialog').modal('toggle');
+ loadSelectedMarks(worksheetName);
+ });
+ });
+
+ // Add our button to the list of worksheets to choose from
+ $('#choose_sheet_buttons').append(button);
+ });
+
+ // Show the dialog
+ $('#choose_sheet_dialog').modal('toggle');
+ }
+
+ function createButton(buttonTitle) {
+ const button =
+ $(`
+ ${buttonTitle}
+ `);
+
+ return button;
+ }
+
+ // This variable will save off the function we can call to unregister listening to marks-selected events
+ let unregisterEventHandlerFunction = undefined;
+
+ function loadSelectedMarks(worksheetName) {
+
+ // Remove any existing event listeners
+ if (unregisterEventHandlerFunction) {
+ unregisterEventHandlerFunction();
+ }
+
+ // Get the worksheet object we want to get the selectd marks for
+ const worksheet = getSelectedSheet(worksheetName);
+
+ // Set our title to an appropriate value
+ $('#selected_marks_title').text(worksheet.name);
+
+ // Call to get the selected marks for our sheet
+ worksheet.getSelectedMarksAsync().then(function(marks) {
+
+ // Get the first DataTable for our selected marks (usually there is just one)
+ const worksheetData = marks.data[0];
+
+ // Map our data into the format which the data table component expects it
+ const data = worksheetData.data.map(function(row, index) {
+ const rowData = row.map(function(cell) {
+ return cell.formattedValue;
+ });
+
+ return rowData;
+ });
+
+ const columns = worksheetData.columns.map(function(column) {
+ return { title: column.fieldName }
+ });
+
+ // Populate the data table with the rows and columns we just pulled out
+ populateDataTable(data, columns);
+ });
+
+ // Add an event listener for the selection changed event on this sheet.
+ unregisterEventHandlerFunction = worksheet.addEventListener(tableau.TableauEventType.MarkSelectionChanged, function(selectionEvent) {
+ // When the selection changes, reload the data
+ loadSelectedMarks(worksheetName);
+ });
+ }
+
+ function populateDataTable(data, columns) {
+ // Do some UI setup here change the visible section and reinitialize the table
+ $('#data_table_wrapper').empty();
+
+ if (data.length > 0) {
+ $('#no_data_message').css('display', 'none');
+ $('#data_table_wrapper').append(``);
+
+ // Do some math to compute the height we want the data table to be
+ var top = $('#data_table_wrapper')[0].getBoundingClientRect().top;
+ var height = $(document).height() - top - 130;
+
+ // Initialize our data table with what we just gathered
+ $('#data_table').DataTable({
+ data: data,
+ columns: columns,
+ autoWidth: false,
+ deferRender: true,
+ scroller: true,
+ scrollY: height,
+ scrollX: true,
+ dom: "<'row'<'col-sm-6'i><'col-sm-6'f>><'row'<'col-sm-12'tr>>" // Do some custom styling
+ });
+ } else {
+ // If we didn't get any rows back, there must be no marks selected
+ $('#no_data_message').css('display', 'inline');
+ }
+ }
+
+ function initializeButtons() {
+ $('#show_choose_sheet_button').click(showChooseSheetDialog);
+ }
+
+ function getSelectedSheet(worksheetName) {
+ // go through all the worksheets in the dashboard and find the one we want
+ return tableau.extensions.dashboardContent.dashboard.worksheets.find(function(sheet){
+ return sheet.name === worksheetName;
+ });
+ }
+})();
\ No newline at end of file
diff --git a/Tutorial/Part_5/readme.md b/Tutorial/Part_5/readme.md
new file mode 100644
index 00000000..d384aa6d
--- /dev/null
+++ b/Tutorial/Part_5/readme.md
@@ -0,0 +1,19 @@
+## Part 5 - Performing Actions
+
+As you may have noticed when playing with our sample up to this point, when the extension reloads or the workbook is reloaded, we lose track of which sheet the user has selected to view data for. This creates a suboptimal user experience and would be quite unusable if your extensions had a lot of customization or if you want to publish your workbook or send it to someone and have them see what you saw. Luckily, the Extensions API includes a settings API which allows you to persiste key/value pairs into a workbook to be used again when the extensions is reloaded.
+
+#### Saving Settings
+
+To take advantage of the settings API, we add calls to `tableau.extensions.settings.set('sheet', worksheetName)` and `tableau.extensions.settings.saveAsync()` once the user has selected their sheet. These APIs together will persist the sheet name into the workbook for it to be available between reloads and will go with the workbook if you publish to server or send to another user.
+
+#### Retrieving values
+
+To retrieve these values, we add a call to `tableau.extensions.settings.get('sheet')` in our initialization code. If we have a saved sheet name, we immediately switch to the data table view instead of showing the configuration dialog.
+
+#### Trying it out
+
+To see our changes in action, we can either click the reload button in the zone, or save our workbook, close Tableau, and reopen it to see our extension back in the state it was.
+
+
+
+[Next Section (Part 6 - Persisting Settings in the Workbook)](../Part_6/readme.md)
\ No newline at end of file
diff --git a/Tutorial/Part_6/MarksSelection.css b/Tutorial/Part_6/MarksSelection.css
new file mode 100644
index 00000000..b4261c76
--- /dev/null
+++ b/Tutorial/Part_6/MarksSelection.css
@@ -0,0 +1,11 @@
+h4, h5 {
+ text-align: center;
+}
+
+div.DTS div.dataTables_scrollBody {
+ background: white;
+}
+
+.sheet_name {
+ font-weight: bold;
+}
\ No newline at end of file
diff --git a/Tutorial/Part_6/MarksSelection.html b/Tutorial/Part_6/MarksSelection.html
new file mode 100644
index 00000000..fbcf911f
--- /dev/null
+++ b/Tutorial/Part_6/MarksSelection.html
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+ Tutorial - Part 6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Marks for Sheet Name
+
+
+
+
+
+
+
+
+
+
No marks selected
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Tutorial/Part_6/MarksSelection.js b/Tutorial/Part_6/MarksSelection.js
new file mode 100644
index 00000000..16db29f1
--- /dev/null
+++ b/Tutorial/Part_6/MarksSelection.js
@@ -0,0 +1,212 @@
+"use strict";
+
+// Wrap everything in an anonymous function to avoid poluting the global namespace
+(function() {
+
+ // Use the jQuery document ready signal to know when everything has been initialized
+ $(document).ready(function() {
+
+ // Tell Tableau we'd like to initialize our extension
+ tableau.extensions.initializeAsync().then(function() {
+
+ // Fetch the saved sheet name from settings. this will be undefined if there isn't one configured yet
+ const savedSheetName = tableau.extensions.settings.get('sheet');
+ if (savedSheetName) {
+ // We have a saved sheet name, show its selected marks
+ loadSelectedMarks(savedSheetName);
+ } else {
+ // if there isn't a sheet saved in settings, show the dialog
+ showChooseSheetDialog();
+ }
+
+ initializeButtons();
+ });
+ });
+
+ /**
+ * Shows the choose sheet UI. Once a sheet is selected, the data table for the sheet is shown
+ */
+ function showChooseSheetDialog() {
+ // Clear out the existing list of sheets
+ $('#choose_sheet_buttons').empty();
+
+ // Set the dashboard's name in the title
+ const dashboardName = tableau.extensions.dashboardContent.dashboard.name;
+ $('#choose_sheet_title').text(dashboardName);
+
+ // The first step in choosing a sheet will be asking Tableau what sheets are available
+ const worksheets = tableau.extensions.dashboardContent.dashboard.worksheets;
+
+ // Next, we loop through all of these worksheets add add radio buttons for each one
+ worksheets.forEach(function(worksheet) {
+
+ // Declare our new button which contains the sheet name
+ const button = createButton(worksheet.name);
+
+ // Create an event handler for when this button is clicked
+ button.click(function() {
+
+ // Get the worksheet name and save it to settings.
+ filteredColumns = [];
+ const worksheetName = worksheet.name;
+ tableau.extensions.settings.set('sheet', worksheetName);
+ tableau.extensions.settings.saveAsync().then(function() {
+
+ // Once the save has completed, close the dialog and show the data table for this worksheet
+ $('#choose_sheet_dialog').modal('toggle');
+ loadSelectedMarks(worksheetName);
+ });
+ });
+
+ // Add our button to the list of worksheets to choose from
+ $('#choose_sheet_buttons').append(button);
+ });
+
+ // Show the dialog
+ $('#choose_sheet_dialog').modal('toggle');
+ }
+
+ function createButton(buttonTitle) {
+ const button =
+ $(`
+ ${buttonTitle}
+ `);
+
+ return button;
+ }
+
+ // This variable will save off the function we can call to unregister listening to marks-selected events
+ let unregisterEventHandlerFunction = undefined;
+
+ function loadSelectedMarks(worksheetName) {
+
+ // Remove any existing event listeners
+ if (unregisterEventHandlerFunction) {
+ unregisterEventHandlerFunction();
+ }
+
+ // Get the worksheet object we want to get the selectd marks for
+ const worksheet = getSelectedSheet(worksheetName);
+
+ // Set our title to an appropriate value
+ $('#selected_marks_title').text(worksheet.name);
+
+ // Call to get the selected marks for our sheet
+ worksheet.getSelectedMarksAsync().then(function(marks) {
+
+ // Get the first DataTable for our selected marks (usually there is just one)
+ const worksheetData = marks.data[0];
+
+ // Map our data into the format which the data table component expects it
+ const data = worksheetData.data.map(function(row, index) {
+ const rowData = row.map(function(cell) {
+ return cell.formattedValue;
+ });
+
+ return rowData;
+ });
+
+ const columns = worksheetData.columns.map(function(column) {
+ return { title: column.fieldName }
+ });
+
+ // Populate the data table with the rows and columns we just pulled out
+ populateDataTable(data, columns);
+ });
+
+ // Add an event listener for the selection changed event on this sheet.
+ unregisterEventHandlerFunction = worksheet.addEventListener(tableau.TableauEventType.MarkSelectionChanged, function(selectionEvent) {
+ // When the selection changes, reload the data
+ loadSelectedMarks(worksheetName);
+ });
+ }
+
+ function populateDataTable(data, columns) {
+ // Do some UI setup here change the visible section and reinitialize the table
+ $('#data_table_wrapper').empty();
+
+ if (data.length > 0) {
+ $('#no_data_message').css('display', 'none');
+ $('#data_table_wrapper').append(``);
+
+ // Do some math to compute the height we want the data table to be
+ var top = $('#data_table_wrapper')[0].getBoundingClientRect().top;
+ var height = $(document).height() - top - 130;
+
+ const headerCallback = function(thead, data) {
+ const headers = $(thead).find('th');
+ for (let i = 0; i < headers.length; i++) {
+ const header = $(headers[i]);
+ if (header.children().length === 0) {
+ const fieldName = header.text();
+ const button = $(`${fieldName} `);
+ button.click(function() {
+ filterByColumn(i, fieldName);
+ });
+
+ header.html(button);
+ }
+ }
+ }
+
+ // Initialize our data table with what we just gathered
+ $('#data_table').DataTable({
+ data: data,
+ columns: columns,
+ autoWidth: false,
+ deferRender: true,
+ scroller: true,
+ scrollY: height,
+ scrollX: true,
+ headerCallback: headerCallback,
+ dom: "<'row'<'col-sm-6'i><'col-sm-6'f>><'row'<'col-sm-12'tr>>" // Do some custom styling
+ });
+ } else {
+ // If we didn't get any rows back, there must be no marks selected
+ $('#no_data_message').css('display', 'inline');
+ }
+ }
+
+ function initializeButtons() {
+ $('#show_choose_sheet_button').click(showChooseSheetDialog);
+ $('#reset_filters_button').click(resetFilters);
+ }
+
+ // Save the columns we've applied filters to so we can reset them
+ let filteredColumns = [];
+
+ function filterByColumn(columnIndex, fieldName) {
+
+ // Grab our column of data from the data table and filter out to just unique values
+ const dataTable = $('#data_table').DataTable({ retrieve: true });
+ const column = dataTable.column(columnIndex);
+ const columnDomain = column.data().toArray().filter(function(value, index, self) {
+ return self.indexOf(value) === index;
+ });
+
+ const worksheet = getSelectedSheet(tableau.extensions.settings.get('sheet'));
+ worksheet.applyFilterAsync(fieldName, columnDomain, tableau.FilterUpdateType.Replace);
+ filteredColumns.push(fieldName);
+ return false;
+ }
+
+ function resetFilters() {
+ const worksheet = getSelectedSheet(tableau.extensions.settings.get('sheet'));
+ filteredColumns.forEach(function(columnName) {
+ worksheet.clearFilterAsync(columnName);
+ });
+
+ filteredColumns = [];
+ }
+
+ function getSelectedSheet(worksheetName) {
+ if (!worksheetName) {
+ worksheetName = tableau.extensions.settings.get('sheet');
+ }
+
+ // go through all the worksheets in the dashboard and find the one we want
+ return tableau.extensions.dashboardContent.dashboard.worksheets.find(function(sheet){
+ return sheet.name === worksheetName;
+ });
+ }
+})();
\ No newline at end of file
diff --git a/Tutorial/Part_6/readme.md b/Tutorial/Part_6/readme.md
new file mode 100644
index 00000000..70ed7e37
--- /dev/null
+++ b/Tutorial/Part_6/readme.md
@@ -0,0 +1,26 @@
+## Part 6 - Persisting Settings in the Workbook
+
+The final step of our tutorial will be about performing actions on our dashboard. For our example, this will mean filtering a viz based on the values in a selected column. When the user has some marks selected, we want to allow them to select a column in the data tabl and then filter their entire visualization down to just the values in that column.
+
+#### Converting the Headers to Buttons
+
+The DataTables component we are using to display our data makes it a bit tricky to enable header buttons, but we do so by disabling sorting of the column and by adding a headerCallback function which reformats the headers as clickable link buttons
+
+#### Doing the Filtering
+
+For our filtering code, we first need to get the domain (unique values) of the column which the user has clicked on. Then we get our worksheet object and make a call to `worksheet.applyFilterAsync(fieldName, columnDomain, tableau.FilterUpdateType.Replace)`.
+
+#### Reseting the Filter
+
+The final thing we want to add is an ability to clear the filter we have just applied. We do this by first keeping track of all the columns which we have filtered by. The next step is to add a button which the user can click to reset the filter. The final step is to add the `resetFilters()` function which calls `worksheet.clearFilterAsync(columnName)` for each filtered column.
+
+#### Trying it out
+
+To see this part in action, click the header of categorical column and see the viz get filtered.
+
+
+
+That's it! We hope this tutorial was helpful and please open issues for anything which was confusing or incorrect.
+
+
+[Back to Intro](../readme.md)
diff --git a/Tutorial/React/README.md b/Tutorial/React/README.md
deleted file mode 100644
index bb64e928..00000000
--- a/Tutorial/React/README.md
+++ /dev/null
@@ -1 +0,0 @@
-TODO, explain how to setup React sample.
\ No newline at end of file
diff --git a/Tutorial/ReactVersion/.babelrc b/Tutorial/ReactVersion/.babelrc
new file mode 100644
index 00000000..974a1ca3
--- /dev/null
+++ b/Tutorial/ReactVersion/.babelrc
@@ -0,0 +1,7 @@
+{
+ "presets": [
+ "es2015",
+ "stage-0",
+ "react"
+ ]
+}
diff --git a/Tutorial/ReactVersion/.editorconfig b/Tutorial/ReactVersion/.editorconfig
new file mode 100644
index 00000000..4a7ea303
--- /dev/null
+++ b/Tutorial/ReactVersion/.editorconfig
@@ -0,0 +1,12 @@
+root = true
+
+[*]
+indent_style = space
+indent_size = 2
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+[*.md]
+trim_trailing_whitespace = false
diff --git a/Tutorial/ReactVersion/.eslintrc b/Tutorial/ReactVersion/.eslintrc
new file mode 100644
index 00000000..b542daaf
--- /dev/null
+++ b/Tutorial/ReactVersion/.eslintrc
@@ -0,0 +1,35 @@
+{
+ "parser": "babel-eslint",
+ "plugins": [
+ "react"
+ ],
+ "parserOptions": {
+ "ecmaVersion": 6,
+ "sourceType": "module",
+ "ecmaFeatures": {
+ "jsx": true
+ }
+ },
+ "env": {
+ "browser": true,
+ "amd": true,
+ "es6": true,
+ "node": true,
+ "mocha": true
+ },
+ "rules": {
+ "comma-dangle": 1,
+ "quotes": [ 1, "single" ],
+ "no-undef": 1,
+ "global-strict": 0,
+ "no-extra-semi": 1,
+ "no-underscore-dangle": 0,
+ "no-console": 1,
+ "no-unused-vars": 1,
+ "no-trailing-spaces": [1, { "skipBlankLines": true }],
+ "no-unreachable": 1,
+ "no-alert": 0,
+ "react/jsx-uses-react": 1,
+ "react/jsx-uses-vars": 1
+ }
+}
diff --git a/Tutorial/ReactVersion/.gitignore b/Tutorial/ReactVersion/.gitignore
new file mode 100644
index 00000000..fb1fbda4
--- /dev/null
+++ b/Tutorial/ReactVersion/.gitignore
@@ -0,0 +1,33 @@
+# Logs
+logs
+*.log
+
+# Runtime data
+pids
+*.pid
+*.seed
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+
+# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (http://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directory
+# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git
+node_modules
+
+# Bower
+bower_components/
+
+# IDE/Editor data
+.idea
diff --git a/Tutorial/ReactVersion/.yo-rc.json b/Tutorial/ReactVersion/.yo-rc.json
new file mode 100644
index 00000000..bb15adab
--- /dev/null
+++ b/Tutorial/ReactVersion/.yo-rc.json
@@ -0,0 +1,3 @@
+{
+ "generator-react-webpack": {}
+}
\ No newline at end of file
diff --git a/Tutorial/ReactVersion/README.md b/Tutorial/ReactVersion/README.md
new file mode 100644
index 00000000..5dc671bc
--- /dev/null
+++ b/Tutorial/ReactVersion/README.md
@@ -0,0 +1,15 @@
+# React Tutorial
+
+This folder contains a version of our finalized tutorial written in React instead of using jQuery and more traditional javascript techniques. The demo is functionally the same, but highlights some best practices and techniques for building an extensions using React
+
+## Setup
+
+- Navigate to this folder in a command prompt
+- run `npm install`
+- Copy `TutorialReact.trex` file to `~/My Tableau Repository (Beta)/Extensions`
+- run `npm start` to start the web server and compile the code (automatic updates are enabled)
+- Restart Tableau to use the extension
+
+## Project Structure
+
+This project was created using the [yo react-webpack](https://github.com/react-webpack-generators/generator-react-webpack#readme) yeoman generator. Most of the interesting code is inside of `./src/components` folder which has the main components of the extension.
diff --git a/Tutorial/React/TutorialReact.trex b/Tutorial/ReactVersion/TutorialReact.trex
similarity index 89%
rename from Tutorial/React/TutorialReact.trex
rename to Tutorial/ReactVersion/TutorialReact.trex
index f62d75e9..74967281 100644
--- a/Tutorial/React/TutorialReact.trex
+++ b/Tutorial/ReactVersion/TutorialReact.trex
@@ -3,20 +3,20 @@
en_US
- Extensions Tutorial (React)
+ Tutorial (React)
1.1
- http://localhost:8765/tutorial/react/index.html
+ http://localhost:8000/index.html
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAlhJREFUOI2Nkt9vy1EYh5/3bbsvRSySCZbIxI+ZCKsN2TKtSFyIrV2WuRCJuBiJWxfuxCVXbvwFgiEtposgLFJElnbU1SxIZIIRJDKTrdu+53Uhra4mce7Oe57Pcz7JOULFisViwZ+29LAzOSjQYDgz1ZcCvWuXV11MJpN+OS/lm6179teqH0yDqxPTCyKSA8DcDsyOmOprnCaeP7459pdgy969i0LTC3IO/RQMyoHcQN+3cnljW3dNIFC47qDaK3g7BwdTkwBaBELT4ZPOUVWgKl4ZBnjxJPUlMDnTDrp0pmr6RHFeEjjcUUXPDGeSEwDN0Xg8sivxMhJNjGzbHd8PkM3eHRfkrBM5NkcQaY2vUnTlrDIA0NoaX+KLXFFlowr14tvVpqb2MICzmQcKqxvbumv+NAhZGCCIPwEw6QWXKYRL/VUXO0+rAUJiPwAk5MIlgVfwPjjHLCL1APmHN94ZdqeYN+NW/mn6I4BvwQYchcLnwFhJMDiYmlRxAzjpKWZkYkUCcZ2I61wi37tLbYyjiN0fHk5Oz3nGSLSzBbNHCF35R7f6K1/hN9PRhek11FrymfQQQKB4+Gl05P2qNRtmETlXW7e+b2z01dfycGNbfFMAbqNyKp9Jp4rzOT8RYFs0njJkc2iqsCObvTsOsDWWqA5C1uFy+Uz/oXJeKwVT4h0RmPUXhi79vuC0Ku6yOffTK3g9lfxfDQAisY516sg5kfOCiJk7HoLt2cf9b/9LANAc7dznm98PagG1fUOZ9IP5uMB8Q4CPoyNvausapkTt3rNMuvdf3C/o6+czhtdwmwAAAABJRU5ErkJggg==
- Extensions Tutorial (React)
+ Tutorial (React)
diff --git a/Tutorial/ReactVersion/cfg/base.js b/Tutorial/ReactVersion/cfg/base.js
new file mode 100644
index 00000000..751648fd
--- /dev/null
+++ b/Tutorial/ReactVersion/cfg/base.js
@@ -0,0 +1,43 @@
+'use strict';
+let path = require('path');
+let defaultSettings = require('./defaults');
+
+// Additional npm or bower modules to include in builds
+// Add all foreign plugins you may need into this array
+// @example:
+// let npmBase = path.join(__dirname, '../node_modules');
+// let additionalPaths = [ path.join(npmBase, 'react-bootstrap') ];
+let additionalPaths = [];
+
+module.exports = {
+ additionalPaths: additionalPaths,
+ port: defaultSettings.port,
+ debug: true,
+ devtool: 'eval',
+ output: {
+ path: path.join(__dirname, '/../dist/assets'),
+ filename: 'app.js',
+ publicPath: defaultSettings.publicPath
+ },
+ devServer: {
+ contentBase: './src/',
+ historyApiFallback: true,
+ hot: true,
+ port: defaultSettings.port,
+ publicPath: defaultSettings.publicPath,
+ noInfo: false
+ },
+ resolve: {
+ extensions: ['', '.js', '.jsx'],
+ alias: {
+ actions: `${defaultSettings.srcPath}/actions/`,
+ components: `${defaultSettings.srcPath}/components/`,
+ sources: `${defaultSettings.srcPath}/sources/`,
+ stores: `${defaultSettings.srcPath}/stores/`,
+ styles: `${defaultSettings.srcPath}/styles/`,
+ config: `${defaultSettings.srcPath}/config/` + process.env.REACT_WEBPACK_ENV,
+ 'react/lib/ReactMount': 'react-dom/lib/ReactMount'
+ }
+ },
+ module: {}
+};
diff --git a/Tutorial/ReactVersion/cfg/defaults.js b/Tutorial/ReactVersion/cfg/defaults.js
new file mode 100644
index 00000000..67a43287
--- /dev/null
+++ b/Tutorial/ReactVersion/cfg/defaults.js
@@ -0,0 +1,64 @@
+/**
+ * Function that returns default values.
+ * Used because Object.assign does a shallow instead of a deep copy.
+ * Using [].push will add to the base array, so a require will alter
+ * the base array output.
+ */
+'use strict';
+
+const path = require('path');
+const srcPath = path.join(__dirname, '/../src');
+const dfltPort = 8000;
+
+/**
+ * Get the default modules object for webpack
+ * @return {Object}
+ */
+function getDefaultModules() {
+ return {
+ preLoaders: [
+ {
+ test: /\.(js|jsx)$/,
+ include: srcPath,
+ loader: 'eslint-loader'
+ }
+ ],
+ loaders: [
+ {
+ test: /\.css$/,
+ loader: 'style-loader!css-loader'
+ },
+ {
+ test: /\.sass/,
+ loader: 'style-loader!css-loader!sass-loader?outputStyle=expanded&indentedSyntax'
+ },
+ {
+ test: /\.scss/,
+ loader: 'style-loader!css-loader!sass-loader?outputStyle=expanded'
+ },
+ {
+ test: /\.less/,
+ loader: 'style-loader!css-loader!less-loader'
+ },
+ {
+ test: /\.styl/,
+ loader: 'style-loader!css-loader!stylus-loader'
+ },
+ {
+ test: /\.(png|jpg|gif|woff|woff2)$/,
+ loader: 'url-loader?limit=8192'
+ },
+ {
+ test: /\.(mp4|ogg|svg)$/,
+ loader: 'file-loader'
+ }
+ ]
+ };
+}
+
+module.exports = {
+ srcPath: srcPath,
+ publicPath: '/assets/',
+ port: dfltPort,
+ getDefaultModules: getDefaultModules
+};
diff --git a/Tutorial/ReactVersion/cfg/dev.js b/Tutorial/ReactVersion/cfg/dev.js
new file mode 100644
index 00000000..14578a36
--- /dev/null
+++ b/Tutorial/ReactVersion/cfg/dev.js
@@ -0,0 +1,39 @@
+'use strict';
+
+let path = require('path');
+let webpack = require('webpack');
+let baseConfig = require('./base');
+let defaultSettings = require('./defaults');
+
+// Add needed plugins here
+let BowerWebpackPlugin = require('bower-webpack-plugin');
+
+let config = Object.assign({}, baseConfig, {
+ entry: [
+ 'webpack-dev-server/client?http://127.0.0.1:' + defaultSettings.port,
+ 'webpack/hot/only-dev-server',
+ './src/index'
+ ],
+ cache: true,
+ devtool: 'inline-cheap-module-source-map',
+ plugins: [
+ new webpack.HotModuleReplacementPlugin(),
+ new webpack.NoErrorsPlugin(),
+ new BowerWebpackPlugin({
+ searchResolveModulesDirectories: false
+ })
+ ],
+ module: defaultSettings.getDefaultModules()
+});
+
+// Add needed loaders to the defaults here
+config.module.loaders.push({
+ test: /\.(js|jsx)$/,
+ loader: 'react-hot!babel-loader',
+ include: [].concat(
+ config.additionalPaths,
+ [ path.join(__dirname, '/../src') ]
+ )
+});
+
+module.exports = config;
diff --git a/Tutorial/ReactVersion/cfg/dist.js b/Tutorial/ReactVersion/cfg/dist.js
new file mode 100644
index 00000000..1fc19c4a
--- /dev/null
+++ b/Tutorial/ReactVersion/cfg/dist.js
@@ -0,0 +1,42 @@
+'use strict';
+
+let path = require('path');
+let webpack = require('webpack');
+
+let baseConfig = require('./base');
+let defaultSettings = require('./defaults');
+
+// Add needed plugins here
+let BowerWebpackPlugin = require('bower-webpack-plugin');
+
+let config = Object.assign({}, baseConfig, {
+ entry: path.join(__dirname, '../src/index'),
+ cache: false,
+ devtool: 'sourcemap',
+ plugins: [
+ new webpack.optimize.DedupePlugin(),
+ new webpack.DefinePlugin({
+ 'process.env.NODE_ENV': '"production"'
+ }),
+ new BowerWebpackPlugin({
+ searchResolveModulesDirectories: false
+ }),
+ new webpack.optimize.UglifyJsPlugin(),
+ new webpack.optimize.OccurenceOrderPlugin(),
+ new webpack.optimize.AggressiveMergingPlugin(),
+ new webpack.NoErrorsPlugin()
+ ],
+ module: defaultSettings.getDefaultModules()
+});
+
+// Add needed loaders to the defaults here
+config.module.loaders.push({
+ test: /\.(js|jsx)$/,
+ loader: 'babel',
+ include: [].concat(
+ config.additionalPaths,
+ [ path.join(__dirname, '/../src') ]
+ )
+});
+
+module.exports = config;
diff --git a/Tutorial/ReactVersion/cfg/test.js b/Tutorial/ReactVersion/cfg/test.js
new file mode 100644
index 00000000..f139c490
--- /dev/null
+++ b/Tutorial/ReactVersion/cfg/test.js
@@ -0,0 +1,58 @@
+'use strict';
+
+let path = require('path');
+let srcPath = path.join(__dirname, '/../src/');
+
+let baseConfig = require('./base');
+
+// Add needed plugins here
+let BowerWebpackPlugin = require('bower-webpack-plugin');
+
+module.exports = {
+ devtool: 'eval',
+ module: {
+ preLoaders: [
+ {
+ test: /\.(js|jsx)$/,
+ loader: 'isparta-instrumenter-loader',
+ include: [
+ path.join(__dirname, '/../src')
+ ]
+ }
+ ],
+ loaders: [
+ {
+ test: /\.(png|jpg|gif|woff|woff2|css|sass|scss|less|styl)$/,
+ loader: 'null-loader'
+ },
+ {
+ test: /\.(js|jsx)$/,
+ loader: 'babel-loader',
+ include: [].concat(
+ baseConfig.additionalPaths,
+ [
+ path.join(__dirname, '/../src'),
+ path.join(__dirname, '/../test')
+ ]
+ )
+ }
+ ]
+ },
+ resolve: {
+ extensions: [ '', '.js', '.jsx' ],
+ alias: {
+ actions: srcPath + 'actions/',
+ helpers: path.join(__dirname, '/../test/helpers'),
+ components: srcPath + 'components/',
+ sources: srcPath + 'sources/',
+ stores: srcPath + 'stores/',
+ styles: srcPath + 'styles/',
+ config: srcPath + 'config/' + process.env.REACT_WEBPACK_ENV
+ }
+ },
+ plugins: [
+ new BowerWebpackPlugin({
+ searchResolveModulesDirectories: false
+ })
+ ]
+};
diff --git a/Tutorial/ReactVersion/dist/README.md b/Tutorial/ReactVersion/dist/README.md
new file mode 100644
index 00000000..0d138c28
--- /dev/null
+++ b/Tutorial/ReactVersion/dist/README.md
@@ -0,0 +1,2 @@
+# About the dist folder
+After building the dist version of your project, the generated files are stored in this folder. You should keep it under version control.
diff --git a/Tutorial/ReactVersion/dist/static/README.md b/Tutorial/ReactVersion/dist/static/README.md
new file mode 100644
index 00000000..c8eef650
--- /dev/null
+++ b/Tutorial/ReactVersion/dist/static/README.md
@@ -0,0 +1,6 @@
+# static
+
+Files and directories that you put in `static` will be copied to the
+`dist/static` directory during the build step. Use it to provide
+arbitrary static assets that can be referenced by path in your
+application.
diff --git a/Tutorial/ReactVersion/dist/static/favicon.ico b/Tutorial/ReactVersion/dist/static/favicon.ico
new file mode 100644
index 00000000..65279053
Binary files /dev/null and b/Tutorial/ReactVersion/dist/static/favicon.ico differ
diff --git a/Tutorial/ReactVersion/package.json b/Tutorial/ReactVersion/package.json
new file mode 100644
index 00000000..f26e8b8a
--- /dev/null
+++ b/Tutorial/ReactVersion/package.json
@@ -0,0 +1,71 @@
+{
+ "private": true,
+ "version": "0.0.1",
+ "description": "YOUR DESCRIPTION - Generated by generator-react-webpack",
+ "main": "",
+ "scripts": {
+ "clean": "rimraf dist/*",
+ "copy": "copyfiles -f ./src/index.html ./src/favicon.ico ./dist",
+ "dist": "npm run copy & webpack --env=dist",
+ "lint": "eslint ./src",
+ "posttest": "npm run lint",
+ "release:major": "npm version major && npm publish && git push --follow-tags",
+ "release:minor": "npm version minor && npm publish && git push --follow-tags",
+ "release:patch": "npm version patch && npm publish && git push --follow-tags",
+ "serve": "node server.js --env=dev",
+ "serve:dist": "node server.js --env=dist",
+ "start": "node server.js --env=dev"
+ },
+ "repository": "",
+ "keywords": [],
+ "author": "Your name here",
+ "devDependencies": {
+ "babel-core": "^6.0.0",
+ "babel-eslint": "^6.0.0",
+ "babel-loader": "^6.0.0",
+ "babel-polyfill": "^6.3.14",
+ "babel-preset-es2015": "^6.0.15",
+ "babel-preset-react": "^6.0.15",
+ "babel-preset-stage-0": "^6.5.0",
+ "bower-webpack-plugin": "^0.1.9",
+ "chai": "^3.2.0",
+ "copyfiles": "^1.0.0",
+ "css-loader": "^0.23.0",
+ "eslint": "^3.0.0",
+ "eslint-loader": "^1.0.0",
+ "eslint-plugin-react": "^6.0.0",
+ "file-loader": "^0.9.0",
+ "glob": "^7.0.0",
+ "isparta-instrumenter-loader": "^1.0.0",
+ "karma": "^1.0.0",
+ "karma-chai": "^0.1.0",
+ "karma-coverage": "^1.0.0",
+ "karma-mocha": "^1.0.0",
+ "karma-mocha-reporter": "^2.0.0",
+ "karma-phantomjs-launcher": "^1.0.0",
+ "karma-sourcemap-loader": "^0.3.5",
+ "karma-webpack": "^1.7.0",
+ "minimist": "^1.2.0",
+ "mocha": "^3.0.0",
+ "null-loader": "^0.1.1",
+ "open": "0.0.5",
+ "phantomjs-prebuilt": "^2.0.0",
+ "react-addons-test-utils": "^15.0.0",
+ "react-hot-loader": "^1.2.9",
+ "rimraf": "^2.4.3",
+ "style-loader": "^0.13.0",
+ "url-loader": "^0.5.6",
+ "webpack": "^1.12.0",
+ "webpack-dev-server": "^1.12.0"
+ },
+ "dependencies": {
+ "core-js": "^2.0.0",
+ "normalize.css": "^4.0.0",
+ "react": "^15.0.0",
+ "react-bootstrap": "^0.31.3",
+ "react-data-grid": "^2.0.60",
+ "react-dom": "^15.0.0",
+ "react-spinkit": "^3.0.0",
+ "react-virtualized": "^9.10.1"
+ }
+}
diff --git a/Tutorial/ReactVersion/server.js b/Tutorial/ReactVersion/server.js
new file mode 100644
index 00000000..becb3e6d
--- /dev/null
+++ b/Tutorial/ReactVersion/server.js
@@ -0,0 +1,36 @@
+/*eslint no-console:0 */
+'use strict';
+require('core-js/fn/object/assign');
+const webpack = require('webpack');
+const WebpackDevServer = require('webpack-dev-server');
+const config = require('./webpack.config');
+const open = require('open');
+
+/**
+ * Flag indicating whether webpack compiled for the first time.
+ * @type {boolean}
+ */
+let isInitialCompilation = true;
+
+const compiler = webpack(config);
+
+new WebpackDevServer(compiler, config.devServer)
+.listen(config.port, 'localhost', (err) => {
+ if (err) {
+ console.log(err);
+ }
+ console.log('Listening at localhost:' + config.port);
+});
+
+compiler.plugin('done', () => {
+ if (isInitialCompilation) {
+ // Ensures that we log after webpack printed its stats (is there a better way?)
+ setTimeout(() => {
+ console.log('\n✓ The bundle is now ready for serving!\n');
+ console.log(' Open in iframe mode:\t\x1b[33m%s\x1b[0m', 'http://localhost:' + config.port + '/webpack-dev-server/');
+ console.log(' Open in inline mode:\t\x1b[33m%s\x1b[0m', 'http://localhost:' + config.port + '/\n');
+ console.log(' \x1b[33mHMR is active\x1b[0m. The bundle will automatically rebuild and live-update on changes.')
+ }, 350);
+ }
+ isInitialCompilation = false;
+});
diff --git a/Tutorial/ReactVersion/src/components/DataTableComponent.js b/Tutorial/ReactVersion/src/components/DataTableComponent.js
new file mode 100644
index 00000000..0e3cf99a
--- /dev/null
+++ b/Tutorial/ReactVersion/src/components/DataTableComponent.js
@@ -0,0 +1,60 @@
+'use strict';
+
+import React from 'react';
+import PropTypes from 'prop-types';
+import { AutoSizer, MultiGrid } from 'react-virtualized';
+
+require('styles//DataTable.css');
+
+class DataTableComponent extends React.Component {
+ render() {
+ const cellRenderer = ({ columnIndex, key, rowIndex, style }) => {
+ if (rowIndex == 0) {
+ const onHeaderClicked = () => {
+ this.props.onHeaderClicked(this.props.headers[columnIndex]);
+ return false;
+ };
+
+ return ();
+ } else {
+ return (
+ {this.props.rows[rowIndex - 1][columnIndex]}
+
);
+ }
+ }
+
+ return (
+
+
+ {({ height, width }) => (
+
+ )}
+
+
+ );
+ }
+}
+
+DataTableComponent.displayName = 'DataTableComponent';
+
+DataTableComponent.propTypes = {
+ rows: PropTypes.array.isRequired,
+ headers: PropTypes.array.isRequired,
+ dataKey: PropTypes.number.isRequired,
+ onHeaderClicked: PropTypes.func.isRequired
+};
+
+export default DataTableComponent;
diff --git a/Tutorial/ReactVersion/src/components/LoadingIndicatorComponent.js b/Tutorial/ReactVersion/src/components/LoadingIndicatorComponent.js
new file mode 100644
index 00000000..84fbb543
--- /dev/null
+++ b/Tutorial/ReactVersion/src/components/LoadingIndicatorComponent.js
@@ -0,0 +1,23 @@
+'use strict';
+
+import React from 'react';
+import PropTypes from 'prop-types';
+import Spinner from 'react-spinkit';
+
+require('styles//LoadingIndicator.css');
+
+class LoadingIndicatorComponent extends React.Component {
+ render() {
+ return (
+
+
{this.props.msg}
+
+
+ );
+ }
+}
+
+LoadingIndicatorComponent.displayName = 'LoadingIndicatorComponent';
+LoadingIndicatorComponent.propTypes = { msg: PropTypes.string.isRequired };
+
+export default LoadingIndicatorComponent;
diff --git a/Tutorial/ReactVersion/src/components/Main.js b/Tutorial/ReactVersion/src/components/Main.js
new file mode 100644
index 00000000..982994f9
--- /dev/null
+++ b/Tutorial/ReactVersion/src/components/Main.js
@@ -0,0 +1,156 @@
+require('normalize.css/normalize.css');
+require('styles/App.css');
+
+import React from 'react';
+import { Button, Glyphicon, Modal } from 'react-bootstrap';
+
+import DataTableComponent from './DataTableComponent';
+import LoadingIndicatorComponent from './LoadingIndicatorComponent';
+import SheetListComponent from './SheetListComponent';
+
+// Declare this so our linter knows that tableau is a global object
+/*global tableau*/
+
+class AppComponent extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ isLoading: true,
+ selectedSheet: undefined,
+ sheetNames: [],
+ rows: [],
+ headers: [],
+ dataKey: 1,
+ filteredFields: [],
+ dashboardName: ''
+ };
+
+ this.unregisterEventFn = undefined;
+ }
+
+ componentWillMount() {
+ tableau.extensions.initializeAsync().then(() => {
+ const selectedSheet = tableau.extensions.settings.get('sheet');
+ const sheetNames = tableau.extensions.dashboardContent.dashboard.worksheets.map(worksheet => worksheet.name);
+ const dashboardName = tableau.extensions.dashboardContent.dashboard.name;
+ const sheetSelected = !!selectedSheet;
+ this.setState({
+ isLoading: sheetSelected,
+ selectedSheet: selectedSheet,
+ sheetNames: sheetNames,
+ dashboardName: dashboardName
+ });
+
+ if (sheetSelected) {
+ this.loadSelectedMarks();
+ }
+ });
+ }
+
+ getSelectedSheet(selectedSheet) {
+ const sheetName = selectedSheet || this.state.selectedSheet;
+ return tableau.extensions.dashboardContent.dashboard.worksheets.find(worksheet => worksheet.name === sheetName);
+ }
+
+ onSelectSheet(sheetName) {
+ tableau.extensions.settings.set('sheet', sheetName);
+ this.setState({ isLoading: true });
+ tableau.extensions.settings.saveAsync().then(() => {
+ this.setState({ selectedSheet: sheetName, filteredFields: [] }, this.loadSelectedMarks.bind(this));
+ });
+ }
+
+ loadSelectedMarks() {
+ if (this.unregisterEventFn) {
+ this.unregisterEventFn();
+ }
+
+ const worksheet = this.getSelectedSheet();
+ worksheet.getSelectedMarksAsync().then(marks => {
+
+ // Get the first DataTable for our selected marks (usually there is just one)
+ const worksheetData = marks.data[0];
+
+ // Map our data into the format which the data table component expects it
+ const rows = worksheetData.data.map(row => row.map(cell => cell.formattedValue));
+ const headers = worksheetData.columns.map(column => column.fieldName);
+
+ this.setState( {
+ rows: rows,
+ headers: headers,
+ dataKey: Date.now(),
+ isLoading: false
+ });
+
+ this.forceUpdate();
+ });
+
+ this.unregisterEventFn = worksheet.addEventListener(tableau.TableauEventType.MarkSelectionChanged, () => {
+ this.setState({ isLoading: true });
+ this.loadSelectedMarks();
+ });
+ }
+
+ onHeaderClicked(fieldName) {
+ const headerIndex = this.state.headers.indexOf(fieldName);
+ const columnData = this.state.rows.map(row => row[headerIndex]);
+ const columnDomain = columnData.filter((value, index, self) => {
+ return self.indexOf(value) === index;
+ });
+
+ const worksheet = this.getSelectedSheet();
+ this.setState({ isLoading: true });
+ worksheet.applyFilterAsync(fieldName, columnDomain, tableau.FilterUpdateType.Replace).then(() => {
+ const updatedFilteredFields = this.state.filteredFields;
+ updatedFilteredFields.push(fieldName);
+ this.setState({ filteredFields: updatedFilteredFields, isLoading: false });
+ });
+ }
+
+ onResetFilters() {
+ const worksheet = this.getSelectedSheet();
+ this.setState({ isLoading: true });
+ const promises = this.state.filteredFields.map(fieldName => worksheet.clearFilterAsync(fieldName));
+ Promise.all(promises).then(() => {
+ this.setState({ filteredFields: [], isLoading: false });
+ });
+ }
+
+ render() {
+ if (this.state.isLoading) {
+ return ( );
+ }
+
+ if (!this.state.selectedSheet) {
+ return (
+
+
+ Choose a Sheet from {this.state.dashboardName}
+
+
+
+
+ );
+ }
+
+ const mainContent = this.state.rows.length > 0 ?
+ () :
+ (No marks selected );
+
+ return (
+
+
+
+ Marks for {this.state.selectedSheet}
+ this.setState({ selectedSheet: undefined })}>
+
+
+
+ {mainContent}
+
+ );
+
+ }
+}
+
+export default AppComponent;
diff --git a/Tutorial/ReactVersion/src/components/SheetListComponent.js b/Tutorial/ReactVersion/src/components/SheetListComponent.js
new file mode 100644
index 00000000..4a1961a2
--- /dev/null
+++ b/Tutorial/ReactVersion/src/components/SheetListComponent.js
@@ -0,0 +1,40 @@
+'use strict';
+
+import React from 'react';
+import PropTypes from 'prop-types';
+import { Button } from 'react-bootstrap';
+
+require('styles//SheetList.css');
+
+class SheetListComponent extends React.Component {
+ constructor(props) {
+ super(props);
+ }
+
+ makeSheetButton(sheetName) {
+ return (
+ this.props.onSelectSheet(sheetName)}>
+ {sheetName}
+
+ );
+ }
+
+ render() {
+ const sheetButtons = this.props.sheetNames.map(sheetName => this.makeSheetButton(sheetName));
+ return (
+
+ {sheetButtons}
+
+ );
+ }
+}
+
+SheetListComponent.displayName = 'SheetListComponent';
+
+SheetListComponent.propTypes = {
+ onSelectSheet: PropTypes.func,
+ sheetNames: PropTypes.array
+};
+
+export default SheetListComponent;
diff --git a/Tutorial/ReactVersion/src/config/README.md b/Tutorial/ReactVersion/src/config/README.md
new file mode 100644
index 00000000..c20fc5da
--- /dev/null
+++ b/Tutorial/ReactVersion/src/config/README.md
@@ -0,0 +1,35 @@
+# About this folder
+
+This folder holds configuration files for different environments.
+You can use it to provide your app with different settings based on the
+current environment, e.g. to configure different API base urls depending on
+whether your setup runs in dev mode or is built for distribution.
+You can include the configuration into your code like this:
+
+**ES2015 Modules**
+
+```js
+import config from 'config';
+```
+
+**Common JS**
+
+Due to Babel6 we need to append `.default`.
+
+```js
+let config = require('config').default;
+```
+
+**Example**
+
+```javascript
+import React from 'react';
+import config from 'config';
+
+class MyComponent extends React.Component {
+ constructor(props, ctx) {
+ super(props, ctx);
+ let currentAppEnv = config.appEnv;
+ }
+}
+```
diff --git a/Tutorial/ReactVersion/src/config/base.js b/Tutorial/ReactVersion/src/config/base.js
new file mode 100644
index 00000000..65b6aff9
--- /dev/null
+++ b/Tutorial/ReactVersion/src/config/base.js
@@ -0,0 +1,5 @@
+'use strict';
+
+// Settings configured here will be merged into the final config object.
+export default {
+}
diff --git a/Tutorial/ReactVersion/src/config/dev.js b/Tutorial/ReactVersion/src/config/dev.js
new file mode 100644
index 00000000..09f544cf
--- /dev/null
+++ b/Tutorial/ReactVersion/src/config/dev.js
@@ -0,0 +1,9 @@
+'use strict';
+
+import baseConfig from './base';
+
+let config = {
+ appEnv: 'dev' // feel free to remove the appEnv property here
+};
+
+export default Object.freeze(Object.assign({}, baseConfig, config));
diff --git a/Tutorial/ReactVersion/src/config/dist.js b/Tutorial/ReactVersion/src/config/dist.js
new file mode 100644
index 00000000..e9cc29db
--- /dev/null
+++ b/Tutorial/ReactVersion/src/config/dist.js
@@ -0,0 +1,9 @@
+'use strict';
+
+import baseConfig from './base';
+
+let config = {
+ appEnv: 'dist' // feel free to remove the appEnv property here
+};
+
+export default Object.freeze(Object.assign({}, baseConfig, config));
diff --git a/Tutorial/ReactVersion/src/config/test.js b/Tutorial/ReactVersion/src/config/test.js
new file mode 100644
index 00000000..3d17b759
--- /dev/null
+++ b/Tutorial/ReactVersion/src/config/test.js
@@ -0,0 +1,9 @@
+'use strict';
+
+import baseConfig from './base';
+
+let config = {
+ appEnv: 'test' // don't remove the appEnv property here
+};
+
+export default Object.freeze(Object.assign(baseConfig, config));
diff --git a/Tutorial/ReactVersion/src/index.html b/Tutorial/ReactVersion/src/index.html
new file mode 100644
index 00000000..1b273a0e
--- /dev/null
+++ b/Tutorial/ReactVersion/src/index.html
@@ -0,0 +1,21 @@
+
+
+
+
+ Tutorial - React
+
+
+
+
+
+
+
+
+
+
+ APPLICATION CONTENT
+
+
+
+
+
diff --git a/Tutorial/ReactVersion/src/index.js b/Tutorial/ReactVersion/src/index.js
new file mode 100644
index 00000000..37c907c1
--- /dev/null
+++ b/Tutorial/ReactVersion/src/index.js
@@ -0,0 +1,7 @@
+import 'core-js/fn/object/assign';
+import React from 'react';
+import ReactDOM from 'react-dom';
+import App from './components/Main';
+
+// Render the main component into the dom
+ReactDOM.render( , document.getElementById('app'));
diff --git a/Tutorial/ReactVersion/src/styles/App.css b/Tutorial/ReactVersion/src/styles/App.css
new file mode 100644
index 00000000..941a0c14
--- /dev/null
+++ b/Tutorial/ReactVersion/src/styles/App.css
@@ -0,0 +1,16 @@
+h4, h5 {
+ text-align: center;
+}
+
+.sheet_name {
+ font-weight: bold;
+}
+
+.summary_header {
+ height: 50px;
+}
+
+body, html {
+ padding: 0px;
+ margin: 0px;
+}
\ No newline at end of file
diff --git a/Tutorial/ReactVersion/src/styles/DataTable.css b/Tutorial/ReactVersion/src/styles/DataTable.css
new file mode 100644
index 00000000..7ebe62e6
--- /dev/null
+++ b/Tutorial/ReactVersion/src/styles/DataTable.css
@@ -0,0 +1,29 @@
+.cell {
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ line-height: 30px;
+ vertical-align: middle;
+ padding-left: 3px;
+}
+
+.header {
+ font-weight: bold;
+ border-bottom: 1px solid #888888;
+}
+
+.odd {
+ background: #EEEEEE;
+}
+
+.grid {
+ outline: none;
+}
+
+.interesting {
+ font-weight: 700;
+}
+
+.dataTable {
+ height: calc(100vh - 60px);
+}
\ No newline at end of file
diff --git a/Tutorial/ReactVersion/src/styles/LoadingIndicator.css b/Tutorial/ReactVersion/src/styles/LoadingIndicator.css
new file mode 100644
index 00000000..50f90772
--- /dev/null
+++ b/Tutorial/ReactVersion/src/styles/LoadingIndicator.css
@@ -0,0 +1,8 @@
+.loadingIndicator {
+ width: 200px;
+ height: 200px;
+ text-align: center;
+ position: absolute;
+ left: calc(50vw - 100px);
+ top: calc(50vh - 100px);
+}
diff --git a/Tutorial/ReactVersion/src/styles/SheetList.css b/Tutorial/ReactVersion/src/styles/SheetList.css
new file mode 100644
index 00000000..e69de29b
diff --git a/Tutorial/ReactVersion/webpack.config.js b/Tutorial/ReactVersion/webpack.config.js
new file mode 100644
index 00000000..6b6a9391
--- /dev/null
+++ b/Tutorial/ReactVersion/webpack.config.js
@@ -0,0 +1,32 @@
+'use strict';
+
+const path = require('path');
+const args = require('minimist')(process.argv.slice(2));
+
+// List of allowed environments
+const allowedEnvs = ['dev', 'dist', 'test'];
+
+// Set the correct environment
+let env;
+if (args._.length > 0 && args._.indexOf('start') !== -1) {
+ env = 'test';
+} else if (args.env) {
+ env = args.env;
+} else {
+ env = 'dev';
+}
+process.env.REACT_WEBPACK_ENV = env;
+
+/**
+ * Build the webpack configuration
+ * @param {String} wantedEnv The wanted environment
+ * @return {Object} Webpack config
+ */
+function buildConfig(wantedEnv) {
+ let isValid = wantedEnv && wantedEnv.length > 0 && allowedEnvs.indexOf(wantedEnv) !== -1;
+ let validEnv = isValid ? wantedEnv : 'dev';
+ let config = require(path.join(__dirname, 'cfg/' + validEnv));
+ return config;
+}
+
+module.exports = buildConfig(env);
diff --git a/Tutorial/Standard/README.md b/Tutorial/Standard/README.md
deleted file mode 100644
index 8504d567..00000000
--- a/Tutorial/Standard/README.md
+++ /dev/null
@@ -1 +0,0 @@
-link to actual tutorial
\ No newline at end of file
diff --git a/Tutorial/Standard/Tutorial.trex b/Tutorial/Standard/Tutorial.trex
deleted file mode 100644
index 2df623a8..00000000
--- a/Tutorial/Standard/Tutorial.trex
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
- en_US
-
- Extensions Tutorial
-
-
-
-
- 1.1
-
- http://localhost:8765/tutorial/standard/index.html
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAlhJREFUOI2Nkt9vy1EYh5/3bbsvRSySCZbIxI+ZCKsN2TKtSFyIrV2WuRCJuBiJWxfuxCVXbvwFgiEtposgLFJElnbU1SxIZIIRJDKTrdu+53Uhra4mce7Oe57Pcz7JOULFisViwZ+29LAzOSjQYDgz1ZcCvWuXV11MJpN+OS/lm6179teqH0yDqxPTCyKSA8DcDsyOmOprnCaeP7459pdgy969i0LTC3IO/RQMyoHcQN+3cnljW3dNIFC47qDaK3g7BwdTkwBaBELT4ZPOUVWgKl4ZBnjxJPUlMDnTDrp0pmr6RHFeEjjcUUXPDGeSEwDN0Xg8sivxMhJNjGzbHd8PkM3eHRfkrBM5NkcQaY2vUnTlrDIA0NoaX+KLXFFlowr14tvVpqb2MICzmQcKqxvbumv+NAhZGCCIPwEw6QWXKYRL/VUXO0+rAUJiPwAk5MIlgVfwPjjHLCL1APmHN94ZdqeYN+NW/mn6I4BvwQYchcLnwFhJMDiYmlRxAzjpKWZkYkUCcZ2I61wi37tLbYyjiN0fHk5Oz3nGSLSzBbNHCF35R7f6K1/hN9PRhek11FrymfQQQKB4+Gl05P2qNRtmETlXW7e+b2z01dfycGNbfFMAbqNyKp9Jp4rzOT8RYFs0njJkc2iqsCObvTsOsDWWqA5C1uFy+Uz/oXJeKwVT4h0RmPUXhi79vuC0Ku6yOffTK3g9lfxfDQAisY516sg5kfOCiJk7HoLt2cf9b/9LANAc7dznm98PagG1fUOZ9IP5uMB8Q4CPoyNvausapkTt3rNMuvdf3C/o6+czhtdwmwAAAABJRU5ErkJggg==
-
-
-
- Extensions Tutorial
-
-
-
diff --git a/Tutorial/assets/Completed.gif b/Tutorial/assets/Completed.gif
new file mode 100644
index 00000000..abeb835c
Binary files /dev/null and b/Tutorial/assets/Completed.gif differ
diff --git a/Tutorial/assets/Part_0.png b/Tutorial/assets/Part_0.png
new file mode 100644
index 00000000..0258016a
Binary files /dev/null and b/Tutorial/assets/Part_0.png differ
diff --git a/Tutorial/assets/Part_1.png b/Tutorial/assets/Part_1.png
new file mode 100644
index 00000000..f181ed13
Binary files /dev/null and b/Tutorial/assets/Part_1.png differ
diff --git a/Tutorial/assets/Part_2.gif b/Tutorial/assets/Part_2.gif
new file mode 100644
index 00000000..bf63e2cc
Binary files /dev/null and b/Tutorial/assets/Part_2.gif differ
diff --git a/Tutorial/assets/Part_3.gif b/Tutorial/assets/Part_3.gif
new file mode 100644
index 00000000..568af921
Binary files /dev/null and b/Tutorial/assets/Part_3.gif differ
diff --git a/Tutorial/assets/Part_4.gif b/Tutorial/assets/Part_4.gif
new file mode 100644
index 00000000..4c38c7a5
Binary files /dev/null and b/Tutorial/assets/Part_4.gif differ
diff --git a/Tutorial/assets/Part_5.gif b/Tutorial/assets/Part_5.gif
new file mode 100644
index 00000000..5cd85c8d
Binary files /dev/null and b/Tutorial/assets/Part_5.gif differ
diff --git a/Tutorial/assets/Part_6.gif b/Tutorial/assets/Part_6.gif
new file mode 100644
index 00000000..f550945c
Binary files /dev/null and b/Tutorial/assets/Part_6.gif differ
diff --git a/Tutorial/favicon.ico b/Tutorial/favicon.ico
new file mode 100644
index 00000000..53d5aa5c
Binary files /dev/null and b/Tutorial/favicon.ico differ
diff --git a/Tutorial/readme.md b/Tutorial/readme.md
new file mode 100644
index 00000000..0a593dc4
--- /dev/null
+++ b/Tutorial/readme.md
@@ -0,0 +1,43 @@
+# Dashboard Extensions Tutorial
+
+This project contains a tutorial designed to explain the various components of authoring nad using a Dashboard Extension in Tableau.
+
+This tutorial demonstrates a number of different aspects of the Dashboard Extensions API. The goal of this extenison is to display a data table summarizing the selected marks on a particular worksheet on a dashboard (similar to clicking view data on a tooltip). When the selected marks change, we want to update the data table with the newly selected marks. Then we will add functionality which allows the user to click on any column of data in the selected marks and filter the viz down to the domain of that column.
+
+### Prerequisites
+
+- Understanding of basic web development (this tutorial makes heavy use of [jQuery](https://jquery.com/) for javascript code and [Bootstrap](http://getbootstrap.com/) for styling)
+- node and npm installed on your machine ([https://nodejs.org](https://nodejs.org))
+- Tableau Desktop with the Extensions feature (Alpha build)
+
+### Set Up
+
+- Copy the `.trex` files in the Manifests folder into your `My Tableau Repository/Extensions` folder and restart Tableau.
+- In a command prompt, go to the root of the git repo (a directory above this one)
+- Run `npm install`
+- Run `npm start` to initialize the http server to server your content
+
+### Tutorial
+
+To make it easier to follow along, the tutorial is organized in seven parts. Each folder in this project contains the extension's code at the end of that part. In addition, there is a corresponding extension manifest file which allows you to see the extensions progress from within Tableau as you follow along.
+
+### Tutorial Sections
+
+0. [Starting the Server & Registering a Manifest](./Part_0/readme.md)
+1. [Initialization](./Part_1/readme.md)
+2. [Ask the User to Select a Sheet](./Part_2/readme.md)
+3. [Getting and Displaying the Data](./Part_3/readme.md)
+4. [Responding to Selection Changes](./Part_4/readme.md)
+5. [Persisting Settings in the Workbook](./Part_5/readme.md)
+6. [Performing Actions](./Part_6/readme.md)
+
+### Completed Extension
+
+If you just want to jump to the end, follow the set up steps, then inside of Tableau drag out the "Tutorial - Complete" dashboard extension.
+
+
+
+### React Version
+
+Included is also a functionally equivalent version of this sample written using React instead of jQuery and DataTables. It can be found in the ReactVersion folder (it has its own setup steps).
+
diff --git a/lib/tableau-extensions-0.6.0.js b/lib/tableau-extensions-0.6.0.js
new file mode 100644
index 00000000..d555ea35
--- /dev/null
+++ b/lib/tableau-extensions-0.6.0.js
@@ -0,0 +1,23158 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory();
+ else if(typeof define === 'function' && define.amd)
+ define([], factory);
+ else if(typeof exports === 'object')
+ exports["Main"] = factory();
+ else
+ root["Main"] = factory();
+})(this, function() {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId])
+/******/ return installedModules[moduleId].exports;
+/******/
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ exports: {},
+/******/ id: moduleId,
+/******/ loaded: false
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.loaded = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "/dist/";
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var tableau = __webpack_require__(1);
+ var FrelardDesktopBootstrap_1 = __webpack_require__(66);
+ // This Main function will be executed when this module is loaded. Attempt to do our
+ // bootstrapping with qt and log any errors we encounter
+ FrelardDesktopBootstrap_1.doBootstrap().catch(function (e) {
+ console.error('Desktop bootstrapping failed: ' + e);
+ });
+ window.tableau = tableau;
+
+
+/***/ },
+/* 1 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ /**
+ * This is your main. This is where you re-export everything you want to be publicly available.
+ *
+ * The build enforces that the file has the same name as the global variable that is exported.
+ */
+ Object.defineProperty(exports, "__esModule", { value: true });
+ // Due to the way we configured webpack, we should be exporting things which will be under
+ // a global variable called "tableau". Export everything we want to be visible under tableau
+ // from this file.
+ var ExtensionsImpl_1 = __webpack_require__(2);
+ var Extensions_1 = __webpack_require__(65);
+ var extensionImpl = new ExtensionsImpl_1.ExtensionsImpl();
+ exports.extensions = new Extensions_1.Extensions(extensionImpl);
+ // Export Enums
+ // These show up under the tableau object. I.e. tableau.ExtensionContext.Server
+ var api_external_contract_1 = __webpack_require__(53);
+ exports.ExtensionContext = api_external_contract_1.ExtensionContext;
+ exports.ExtensionMode = api_external_contract_1.ExtensionMode;
+ exports.AnalyticsObjectType = api_external_contract_1.AnalyticsObjectType;
+ exports.ColumnType = api_external_contract_1.ColumnType;
+ exports.DashboardObjectType = api_external_contract_1.DashboardObjectType;
+ exports.DataType = api_external_contract_1.DataType;
+ exports.DateRangeType = api_external_contract_1.DateRangeType;
+ exports.DialogEventType = api_external_contract_1.DialogEventType;
+ exports.EncodingType = api_external_contract_1.EncodingType;
+ exports.ErrorCodes = api_external_contract_1.ErrorCodes;
+ exports.FieldAggregationType = api_external_contract_1.FieldAggregationType;
+ exports.FieldRoleType = api_external_contract_1.FieldRoleType;
+ exports.FilterDomainType = api_external_contract_1.FilterDomainType;
+ exports.FilterType = api_external_contract_1.FilterType;
+ exports.FilterUpdateType = api_external_contract_1.FilterUpdateType;
+ exports.FilterNullOption = api_external_contract_1.FilterNullOption;
+ exports.MarkType = api_external_contract_1.MarkType;
+ exports.ParameterValueType = api_external_contract_1.ParameterValueType;
+ exports.PeriodType = api_external_contract_1.PeriodType;
+ exports.QuickTableCalcType = api_external_contract_1.QuickTableCalcType;
+ exports.SelectionUpdateType = api_external_contract_1.SelectionUpdateType;
+ exports.SheetType = api_external_contract_1.SheetType;
+ exports.SortDirection = api_external_contract_1.SortDirection;
+ exports.TableauEventType = api_external_contract_1.TableauEventType;
+ exports.TrendLineModelType = api_external_contract_1.TrendLineModelType;
+
+
+/***/ },
+/* 2 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var api_internal_contract_1 = __webpack_require__(3);
+ var api_shared_1 = __webpack_require__(9);
+ var Dashboard_1 = __webpack_require__(43);
+ var DashboardContent_1 = __webpack_require__(45);
+ var Environment_1 = __webpack_require__(46);
+ var Settings_1 = __webpack_require__(47);
+ var RegisterAllExtensionsServices_1 = __webpack_require__(48);
+ var VersionNumber_1 = __webpack_require__(51);
+ var DashboardImpl_1 = __webpack_require__(52);
+ var SettingsImpl_1 = __webpack_require__(63);
+ var ExtensionsImpl = (function () {
+ function ExtensionsImpl() {
+ }
+ ExtensionsImpl.prototype.initializeAsync = function () {
+ var _this = this;
+ if (!this._initializationPromise) {
+ this._initializationPromise = new Promise(function (resolve, reject) {
+ // First thing we want to do is check to see if there is a desktop dispatcher already registered for us
+ if (api_internal_contract_1.InternalApiDispatcherHolder.hasDesktopApiDispatcherPromise()) {
+ // Running in desktop, use this promise
+ var desktopDispatcherPromise = api_internal_contract_1.InternalApiDispatcherHolder.getDesktopDispatcherPromise();
+ desktopDispatcherPromise.then(_this.onDispatcherReceived.bind(_this)).then(function () { resolve(); });
+ }
+ else {
+ reject('Not running in desktop. Server support coming soon!');
+ }
+ });
+ }
+ return this._initializationPromise;
+ };
+ ExtensionsImpl.prototype.onDispatcherReceived = function (dispatcher) {
+ var _this = this;
+ dispatcher.setVersionNumber(VersionNumber_1.VersionNumber.Instance);
+ // Call to register all the services which will use the newly initialized dispatcher
+ api_shared_1.registerAllSharedServices(dispatcher);
+ RegisterAllExtensionsServices_1.registerAllExtensionsServices(dispatcher);
+ // Get the initialization service and initialize this extension
+ var initializationService = api_shared_1.ApiServiceRegistry.instance.getService("InitializationService" /* InitializationService */);
+ return initializationService.initializeDashboardExtensionsAsync().then(function (result) {
+ if (!result.extensionInstance.locator.dashboardPath) {
+ throw new Error('DashboardPath is undefined');
+ }
+ _this.dashboardContent = _this.initializeDashboardContent(result.extensionDashboardInfo, result.extensionInstance.locator.dashboardPath);
+ _this.environment = new Environment_1.Environment(result.extensionEnvironment);
+ _this.settings = _this.initializeSettings(result.extensionSettingsInfo);
+ });
+ };
+ ExtensionsImpl.prototype.initializeDashboardContent = function (info, sheetPath) {
+ var dashboardImpl = new DashboardImpl_1.DashboardImpl(info, sheetPath);
+ var dashboard = new Dashboard_1.Dashboard(dashboardImpl);
+ return new DashboardContent_1.DashboardContent(dashboard);
+ };
+ ExtensionsImpl.prototype.initializeSettings = function (settingsInfo) {
+ var settingsImpl = new SettingsImpl_1.SettingsImpl(settingsInfo);
+ return new Settings_1.Settings(settingsImpl);
+ };
+ return ExtensionsImpl;
+ }());
+ exports.ExtensionsImpl = ExtensionsImpl;
+
+
+/***/ },
+/* 3 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ /**
+ * This is your main. This is where you re-export everything you want to be publicly available.
+ *
+ * The build enforces that the file has the same name as the global variable that is exported.
+ */
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ Object.defineProperty(exports, "__esModule", { value: true });
+ __export(__webpack_require__(4));
+ __export(__webpack_require__(5));
+ __export(__webpack_require__(6));
+ __export(__webpack_require__(7));
+ __export(__webpack_require__(8));
+
+
+/***/ },
+/* 4 */
+/***/ function(module, exports) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var ExtensionContext;
+ (function (ExtensionContext) {
+ ExtensionContext["Desktop"] = "desktop";
+ ExtensionContext["Server"] = "server";
+ ExtensionContext["Unknown"] = "unknown";
+ })(ExtensionContext = exports.ExtensionContext || (exports.ExtensionContext = {}));
+ var ExtensionMode;
+ (function (ExtensionMode) {
+ ExtensionMode["Authoring"] = "authoring";
+ ExtensionMode["Viewing"] = "viewing";
+ ExtensionMode["Unknown"] = "unknown";
+ })(ExtensionMode = exports.ExtensionMode || (exports.ExtensionMode = {}));
+ var ColumnType;
+ (function (ColumnType) {
+ ColumnType["Discrete"] = "discrete";
+ ColumnType["Continuous"] = "continuous";
+ })(ColumnType = exports.ColumnType || (exports.ColumnType = {}));
+ var DashboardObjectType;
+ (function (DashboardObjectType) {
+ DashboardObjectType["Blank"] = "blank";
+ DashboardObjectType["Worksheet"] = "worksheet";
+ DashboardObjectType["QuickFilter"] = "quick-filter";
+ DashboardObjectType["ParameterControl"] = "parameter-control";
+ DashboardObjectType["PageFilter"] = "page-filter";
+ DashboardObjectType["Legend"] = "legend";
+ DashboardObjectType["Title"] = "title";
+ DashboardObjectType["Text"] = "text";
+ DashboardObjectType["Image"] = "image";
+ DashboardObjectType["WebPage"] = "web-page";
+ DashboardObjectType["Extension"] = "extension";
+ })(DashboardObjectType = exports.DashboardObjectType || (exports.DashboardObjectType = {}));
+ var DataType;
+ (function (DataType) {
+ DataType["String"] = "string";
+ DataType["Int"] = "int";
+ DataType["Float"] = "float";
+ DataType["Bool"] = "bool";
+ DataType["Date"] = "date";
+ DataType["DateTime"] = "date-time";
+ DataType["Spatial"] = "spatial";
+ })(DataType = exports.DataType || (exports.DataType = {}));
+ var EncodedDataType;
+ (function (EncodedDataType) {
+ EncodedDataType["Number"] = "number";
+ EncodedDataType["String"] = "string";
+ EncodedDataType["Date"] = "date";
+ EncodedDataType["Boolean"] = "boolean";
+ })(EncodedDataType = exports.EncodedDataType || (exports.EncodedDataType = {}));
+ var ErrorCode;
+ (function (ErrorCode) {
+ ErrorCode["ServerError"] = "server-error";
+ ErrorCode["InvalidAggregationFieldName"] = "invalid-aggregation-field-name";
+ ErrorCode["InvalidFilterFieldName"] = "invalid-filter-fieldname";
+ ErrorCode["InvalidFilterFieldValue"] = "invalid-filter-field-value";
+ })(ErrorCode = exports.ErrorCode || (exports.ErrorCode = {}));
+ var FieldAggregationType;
+ (function (FieldAggregationType) {
+ FieldAggregationType["Sum"] = "sum";
+ FieldAggregationType["Avg"] = "avg";
+ FieldAggregationType["Min"] = "min";
+ FieldAggregationType["Max"] = "max";
+ FieldAggregationType["Stdev"] = "stdev";
+ FieldAggregationType["Stdevp"] = "stdevp";
+ FieldAggregationType["Var"] = "var";
+ FieldAggregationType["Varp"] = "varp";
+ FieldAggregationType["Count"] = "count";
+ FieldAggregationType["Countd"] = "countd";
+ FieldAggregationType["Median"] = "median";
+ FieldAggregationType["Attr"] = "attr";
+ FieldAggregationType["None"] = "none";
+ FieldAggregationType["Year"] = "year";
+ FieldAggregationType["Qtr"] = "qtr";
+ FieldAggregationType["Month"] = "month";
+ FieldAggregationType["Day"] = "day";
+ FieldAggregationType["Hour"] = "hour";
+ FieldAggregationType["Minute"] = "minute";
+ FieldAggregationType["Second"] = "second";
+ FieldAggregationType["Week"] = "week";
+ FieldAggregationType["Weekday"] = "weekday";
+ FieldAggregationType["MonthYear"] = "month-year";
+ FieldAggregationType["Mdy"] = "mdy";
+ FieldAggregationType["End"] = "end";
+ FieldAggregationType["TruncYear"] = "trunc-year";
+ FieldAggregationType["TruncQtr"] = "trunc-qtr";
+ FieldAggregationType["TruncMonth"] = "trunc-month";
+ FieldAggregationType["TruncWeek"] = "trunc-week";
+ FieldAggregationType["TruncDay"] = "trunc-day";
+ FieldAggregationType["TruncHour"] = "trunc-hour";
+ FieldAggregationType["TruncMinute"] = "trunc-minute";
+ FieldAggregationType["TruncSecond"] = "trunc-second";
+ FieldAggregationType["Quart1"] = "quart1";
+ FieldAggregationType["Quart3"] = "quart3";
+ FieldAggregationType["Skewness"] = "skewness";
+ FieldAggregationType["Kurtosis"] = "kurtosis";
+ FieldAggregationType["InOut"] = "in-out";
+ FieldAggregationType["User"] = "user";
+ })(FieldAggregationType = exports.FieldAggregationType || (exports.FieldAggregationType = {}));
+ var FieldRoleType;
+ (function (FieldRoleType) {
+ FieldRoleType["Dimension"] = "dimension";
+ FieldRoleType["Measure"] = "measure";
+ FieldRoleType["Unknown"] = "unknown";
+ })(FieldRoleType = exports.FieldRoleType || (exports.FieldRoleType = {}));
+ /**
+ * The different update types for applying filter.
+ */
+ var FilterUpdateType;
+ (function (FilterUpdateType) {
+ FilterUpdateType["Add"] = "add";
+ FilterUpdateType["All"] = "all";
+ FilterUpdateType["Replace"] = "replace";
+ FilterUpdateType["Remove"] = "remove";
+ })(FilterUpdateType = exports.FilterUpdateType || (exports.FilterUpdateType = {}));
+ var SheetType;
+ (function (SheetType) {
+ SheetType["Dashboard"] = "dashboard";
+ SheetType["Story"] = "story";
+ SheetType["Worksheet"] = "worksheet";
+ })(SheetType = exports.SheetType || (exports.SheetType = {}));
+ var DomainRestrictionType;
+ (function (DomainRestrictionType) {
+ DomainRestrictionType["All"] = "all";
+ DomainRestrictionType["List"] = "list";
+ DomainRestrictionType["Range"] = "range";
+ })(DomainRestrictionType = exports.DomainRestrictionType || (exports.DomainRestrictionType = {}));
+ var DateStepPeriod;
+ (function (DateStepPeriod) {
+ DateStepPeriod["Years"] = "years";
+ DateStepPeriod["Quarters"] = "quarters";
+ DateStepPeriod["Months"] = "months";
+ DateStepPeriod["Weeks"] = "weeks";
+ DateStepPeriod["Days"] = "days";
+ DateStepPeriod["Hours"] = "hours";
+ DateStepPeriod["Minutes"] = "minutes";
+ DateStepPeriod["Seconds"] = "seconds";
+ })(DateStepPeriod = exports.DateStepPeriod || (exports.DateStepPeriod = {}));
+ /**
+ * The option for specifying which values to include for filtering.
+ */
+ var FilterNullOption;
+ (function (FilterNullOption) {
+ FilterNullOption["NullValues"] = "nullvalues";
+ FilterNullOption["NonNullValues"] = "nonnullvalues";
+ FilterNullOption["AllValues"] = "allvalues";
+ })(FilterNullOption = exports.FilterNullOption || (exports.FilterNullOption = {}));
+ /**
+ * The type of filter domain
+ */
+ var FilterDomainType;
+ (function (FilterDomainType) {
+ FilterDomainType["Relevant"] = "relevant";
+ FilterDomainType["Database"] = "database";
+ })(FilterDomainType = exports.FilterDomainType || (exports.FilterDomainType = {}));
+ /**
+ * Internal enum for specifying the selection type for select marks api.
+ */
+ var SelectionUpdateType;
+ (function (SelectionUpdateType) {
+ SelectionUpdateType["Replace"] = "select-replace";
+ SelectionUpdateType["Add"] = "select-add";
+ SelectionUpdateType["Remove"] = "select-remove";
+ })(SelectionUpdateType = exports.SelectionUpdateType || (exports.SelectionUpdateType = {}));
+ /**
+ * Internal enum for specifying the included values type for range selection.
+ */
+ var QuantitativeIncludedValues;
+ (function (QuantitativeIncludedValues) {
+ QuantitativeIncludedValues["IncludeNull"] = "include-null";
+ QuantitativeIncludedValues["IncludeNonNull"] = "include-non-null";
+ QuantitativeIncludedValues["IncludeAll"] = "include-all";
+ })(QuantitativeIncludedValues = exports.QuantitativeIncludedValues || (exports.QuantitativeIncludedValues = {}));
+ /**
+ * Type of mark for a given marks card in a viz.
+ */
+ var MarkType;
+ (function (MarkType) {
+ MarkType["Bar"] = "bar";
+ MarkType["Line"] = "line";
+ MarkType["Area"] = "area";
+ MarkType["Square"] = "square";
+ MarkType["Circle"] = "circle";
+ MarkType["Shape"] = "shape";
+ MarkType["Text"] = "text";
+ MarkType["Map"] = "map";
+ MarkType["Pie"] = "pie";
+ MarkType["GanttBar"] = "gantt-bar";
+ MarkType["Polygon"] = "polygon";
+ })(MarkType = exports.MarkType || (exports.MarkType = {}));
+ /**
+ * Internal enum for specifying the type of filter
+ */
+ var FilterType;
+ (function (FilterType) {
+ FilterType["Categorical"] = "categorical";
+ FilterType["Range"] = "range";
+ FilterType["RelativeDate"] = "relativeDate";
+ FilterType["Hierarchical"] = "hierarchical";
+ })(FilterType = exports.FilterType || (exports.FilterType = {}));
+ /**
+ * Internal enum for specifying the DateRangeType of a relative date filter
+ */
+ var DateRangeType;
+ (function (DateRangeType) {
+ /**
+ * Refers to the last day, week, month, etc. of the date period.
+ */
+ DateRangeType["Last"] = "last";
+ /**
+ * Refers to the last N days, weeks, months, etc. of the date period.
+ */
+ DateRangeType["LastN"] = "lastN";
+ /**
+ * Refers to the next day, week, month, etc. of the date period.
+ */
+ DateRangeType["Next"] = "next";
+ /**
+ * Refers to the next N days, weeks, months, etc. of the date period.
+ */
+ DateRangeType["NextN"] = "nextN";
+ /**
+ * Refers to the current day, week, month, etc. of the date period.
+ */
+ DateRangeType["Current"] = "current";
+ /**
+ * Refers to everything up to and including the current day, week, month, etc. of the date period.
+ */
+ DateRangeType["ToDate"] = "toDate";
+ })(DateRangeType = exports.DateRangeType || (exports.DateRangeType = {}));
+
+
+/***/ },
+/* 5 */
+/***/ function(module, exports) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var InternalApiDispatcherHolder;
+ (function (InternalApiDispatcherHolder) {
+ function getDesktopDispatcherPromise() {
+ return window.__tableauDesktopDispatcher;
+ }
+ InternalApiDispatcherHolder.getDesktopDispatcherPromise = getDesktopDispatcherPromise;
+ function hasDesktopApiDispatcherPromise() {
+ return !!InternalApiDispatcherHolder.getDesktopDispatcherPromise();
+ }
+ InternalApiDispatcherHolder.hasDesktopApiDispatcherPromise = hasDesktopApiDispatcherPromise;
+ function setDesktopDispatcherPromise(dispatcher) {
+ window.__tableauDesktopDispatcher = dispatcher;
+ }
+ InternalApiDispatcherHolder.setDesktopDispatcherPromise = setDesktopDispatcherPromise;
+ })(InternalApiDispatcherHolder = exports.InternalApiDispatcherHolder || (exports.InternalApiDispatcherHolder = {}));
+
+
+/***/ },
+/* 6 */
+/***/ function(module, exports) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var NotificationId;
+ (function (NotificationId) {
+ NotificationId["SelectedMarksChanged"] = "selected-marks-changed";
+ NotificationId["ParameterChanged"] = "parameter-changed";
+ NotificationId["FilterChanged"] = "filter-changed";
+ })(NotificationId = exports.NotificationId || (exports.NotificationId = {}));
+
+
+/***/ },
+/* 7 */
+/***/ function(module, exports) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var ParameterId;
+ (function (ParameterId) {
+ ParameterId["ExtensionLocator"] = "extension-locator";
+ ParameterId["ExtensionBootstrapInfo"] = "extension-bootstrap-info";
+ ParameterId["ExtensionSettingsInfo"] = "extension-settings-info";
+ ParameterId["VisualId"] = "visual-id";
+ ParameterId["SheetPath"] = "sheet-path";
+ ParameterId["IgnoreAliases"] = "ignore-aliases";
+ ParameterId["IgnoreSelection"] = "ignore-selection";
+ ParameterId["IncludeAllColumns"] = "include-all-columns";
+ ParameterId["MaxRows"] = "max-rows";
+ ParameterId["UnderlyingDataTable"] = "underlying-data-table";
+ ParameterId["UnderlyingSummaryDataTable"] = "underlying-summary-data-table";
+ ParameterId["DataSourceDataTable"] = "data-source-data-table";
+ ParameterId["SettingsValues"] = "settings-values";
+ ParameterId["SelectedData"] = "selected-data";
+ ParameterId["HighlightedData"] = "highlighted-data";
+ // Filter Params
+ ParameterId["FieldName"] = "field-name";
+ ParameterId["FilterValues"] = "filter-values";
+ ParameterId["FilterUpdateType"] = "filter-update-type";
+ ParameterId["IsExcludeMode"] = "is-exclude";
+ ParameterId["FilterRangeMin"] = "filter-range-min";
+ ParameterId["FilterRangeMax"] = "filter-range-max";
+ ParameterId["FilterRangeNullOption"] = "filter-range-null-option";
+ ParameterId["WorksheetFilters"] = "worksheet-filters";
+ ParameterId["FieldId"] = "field-id";
+ ParameterId["DomainType"] = "domain-type";
+ ParameterId["CategoricalDomain"] = "categorical-domain";
+ ParameterId["QuantitativeDomain"] = "quantitative-dmain";
+ ParameterId["WorksheetName"] = "worksheet-name";
+ ParameterId["DashboardName"] = "dashboard";
+ ParameterId["ParameterInfo"] = "parameter-info";
+ ParameterId["ParameterInfos"] = "parameter-infos";
+ ParameterId["ParameterCaption"] = "paremeter-caption";
+ ParameterId["ParameterFieldName"] = "parameter-field-name";
+ ParameterId["ParameterValue"] = "parameter-value";
+ ParameterId["Selection"] = "selection";
+ ParameterId["SelectionUpdateType"] = "selectionUpdateType";
+ ParameterId["HierValSelectionModels"] = "hierarchicalValueSelectionModels";
+ ParameterId["QuantRangeSelectionModels"] = "quantativeRangeSelectionModels";
+ ParameterId["DimValSelectionModels"] = "dimensionValueSelectionModels";
+ ParameterId["DataSourceId"] = "data-source-id";
+ ParameterId["DataSchema"] = "data-schema";
+ ParameterId["DataSourceName"] = "data-source-name";
+ ParameterId["ColumnsToInclude"] = "columns-to-include";
+ })(ParameterId = exports.ParameterId || (exports.ParameterId = {}));
+
+
+/***/ },
+/* 8 */
+/***/ function(module, exports) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ // Declare this key type and export the NotificationId to make this behave like a string enum
+ var VerbId;
+ (function (VerbId) {
+ VerbId["ApplyCategoricalFilter"] = "categorical-filter";
+ VerbId["ApplyRangeFilter"] = "range-filter";
+ VerbId["ClearFilter"] = "clear-filter";
+ VerbId["InitializeExtension"] = "initialize-extension";
+ VerbId["GetDataSummaryData"] = "get-summary-data";
+ VerbId["GetUnderlyingData"] = "get-underlying-data";
+ VerbId["GetDataSourceData"] = "get-datasource-data";
+ VerbId["SaveExtensionSettings"] = "save-extension-settings";
+ VerbId["GetSelectedMarks"] = "get-selected-marks";
+ VerbId["GetHighlightedMarks"] = "get-highlighted-marks";
+ VerbId["GetParametersForSheet"] = "get-parameters-for-sheet";
+ VerbId["FindParameter"] = "find-parameter";
+ VerbId["ChangeParameterValue"] = "change-parameter-value";
+ VerbId["ClearSelectedMarks"] = "clear-selected-marks";
+ VerbId["SelectByValue"] = "select-by-value";
+ VerbId["GetDataSources"] = "get-data-sources";
+ VerbId["RefreshDataSource"] = "refresh-data-source";
+ VerbId["GetFilters"] = "get-filters";
+ VerbId["GetCategoricalDomain"] = "get-categorical-domain";
+ VerbId["GetRangeDomain"] = "get-range-domain";
+ })(VerbId = exports.VerbId || (exports.VerbId = {}));
+
+
+/***/ },
+/* 9 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ /**
+ * This is your main. This is where you re-export everything you want to be publicly available.
+ *
+ * The build enforces that the file has the same name as the global variable that is exported.
+ */
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ Object.defineProperty(exports, "__esModule", { value: true });
+ __export(__webpack_require__(10));
+ __export(__webpack_require__(11));
+ var Point_1 = __webpack_require__(12);
+ exports.Point = Point_1.Point;
+ var Size_1 = __webpack_require__(13);
+ exports.Size = Size_1.Size;
+ __export(__webpack_require__(14));
+ __export(__webpack_require__(15));
+ __export(__webpack_require__(16));
+ __export(__webpack_require__(22));
+ __export(__webpack_require__(21));
+ __export(__webpack_require__(20));
+ __export(__webpack_require__(19));
+ __export(__webpack_require__(23));
+ __export(__webpack_require__(24));
+ __export(__webpack_require__(25));
+ __export(__webpack_require__(35));
+ __export(__webpack_require__(33));
+
+
+/***/ },
+/* 10 */
+/***/ function(module, exports) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ /**
+ * Class designed to register and unregister handlers from a user. Only those events
+ * which are added via AddNewEventType will be supported by this instance
+ */
+ var EventListenerManager = (function () {
+ function EventListenerManager() {
+ this._eventListenerManagers = {};
+ }
+ EventListenerManager.prototype.addEventListener = function (eventType, handler) {
+ if (!this._eventListenerManagers.hasOwnProperty(eventType)) {
+ throw new Error("Unsupported event type : " + eventType);
+ }
+ return this._eventListenerManagers[eventType].addEventListener(handler);
+ };
+ EventListenerManager.prototype.removeEventListener = function (eventType, handler) {
+ if (!this._eventListenerManagers.hasOwnProperty(eventType)) {
+ throw new Error("Unsupported event type : " + eventType);
+ }
+ return this._eventListenerManagers[eventType].removeEventListener(handler);
+ };
+ EventListenerManager.prototype.addNewEventType = function (eventManager) {
+ this._eventListenerManagers[eventManager.eventType] = eventManager;
+ };
+ return EventListenerManager;
+ }());
+ exports.EventListenerManager = EventListenerManager;
+
+
+/***/ },
+/* 11 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || (function () {
+ var extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+ return function (d, b) {
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var EventListenerManager_1 = __webpack_require__(10);
+ /**
+ * Implementation of the Parameter contract. Calls down to the impl
+ * class for almost all of the work it does.
+ */
+ var Parameter = (function (_super) {
+ __extends(Parameter, _super);
+ function Parameter(parameterImpl, sheet) {
+ var _this = _super.call(this) || this;
+ _this.parameterImpl = parameterImpl;
+ // Initialize our event handling for this class
+ _this.parameterImpl.initializeEvents(sheet).forEach(function (e) { return _this.addNewEventType(e); });
+ return _this;
+ }
+ Object.defineProperty(Parameter.prototype, "name", {
+ get: function () {
+ return this.parameterImpl.name;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Parameter.prototype, "currentValue", {
+ get: function () {
+ return this.parameterImpl.currentValue;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Parameter.prototype, "dataType", {
+ get: function () {
+ return this.parameterImpl.dataType;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Parameter.prototype, "allowableValues", {
+ get: function () {
+ return this.parameterImpl.allowableValues;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Parameter.prototype.changeValueAsync = function (newValue) {
+ return this.parameterImpl.changeValueAsync(newValue);
+ };
+ return Parameter;
+ }(EventListenerManager_1.EventListenerManager));
+ exports.Parameter = Parameter;
+
+
+/***/ },
+/* 12 */
+/***/ function(module, exports) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var Point = (function () {
+ function Point(_x, _y) {
+ this._x = _x;
+ this._y = _y;
+ }
+ Object.defineProperty(Point.prototype, "x", {
+ get: function () {
+ return this._x;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Point.prototype, "y", {
+ get: function () {
+ return this._y;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ return Point;
+ }());
+ exports.Point = Point;
+
+
+/***/ },
+/* 13 */
+/***/ function(module, exports) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var Size = (function () {
+ function Size(_height, _width) {
+ this._height = _height;
+ this._width = _width;
+ }
+ Object.defineProperty(Size.prototype, "height", {
+ get: function () {
+ return this._height;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Size.prototype, "width", {
+ get: function () {
+ return this._width;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ return Size;
+ }());
+ exports.Size = Size;
+
+
+/***/ },
+/* 14 */
+/***/ function(module, exports) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var DataTable = (function () {
+ function DataTable(_data, _columns, _totalRowCount, _isSummaryData, _marksInfo) {
+ this._data = _data;
+ this._columns = _columns;
+ this._totalRowCount = _totalRowCount;
+ this._isSummaryData = _isSummaryData;
+ this._marksInfo = _marksInfo;
+ // TODO: get rid of this in redesign.
+ this._name = _isSummaryData ? 'Summary Data Table' : 'Underlying Data Table';
+ }
+ Object.defineProperty(DataTable.prototype, "name", {
+ get: function () {
+ return this._name;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DataTable.prototype, "data", {
+ get: function () {
+ return this._data;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DataTable.prototype, "columns", {
+ get: function () {
+ return this._columns;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DataTable.prototype, "marksInfo", {
+ get: function () {
+ return this._marksInfo;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DataTable.prototype, "totalRowCount", {
+ get: function () {
+ return this._totalRowCount;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DataTable.prototype, "isSummaryData", {
+ get: function () {
+ return this._isSummaryData;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ return DataTable;
+ }());
+ exports.DataTable = DataTable;
+ var MarkInfo = (function () {
+ function MarkInfo(_type, _color, _tupleId) {
+ this._type = _type;
+ this._color = _color;
+ this._tupleId = _tupleId;
+ }
+ Object.defineProperty(MarkInfo.prototype, "type", {
+ get: function () {
+ return this._type;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(MarkInfo.prototype, "color", {
+ get: function () {
+ return this._color;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(MarkInfo.prototype, "tupleId", {
+ get: function () {
+ return this._tupleId;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ return MarkInfo;
+ }());
+ exports.MarkInfo = MarkInfo;
+ var Column = (function () {
+ function Column(_fieldName, _dataType, // TODO: this shoudl be an enum type
+ _isReferenced, _index) {
+ this._fieldName = _fieldName;
+ this._dataType = _dataType;
+ this._isReferenced = _isReferenced;
+ this._index = _index;
+ }
+ Object.defineProperty(Column.prototype, "fieldName", {
+ get: function () {
+ return this._fieldName;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Column.prototype, "dataType", {
+ get: function () {
+ return this._dataType;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Column.prototype, "isReferenced", {
+ get: function () {
+ return this._isReferenced;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Column.prototype, "index", {
+ get: function () {
+ return this._index;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ return Column;
+ }());
+ exports.Column = Column;
+ var DataValue = (function () {
+ /* tslint:disable:no-any */
+ function DataValue(_value, _formattedValue) {
+ this._value = _value;
+ this._formattedValue = _formattedValue;
+ }
+ Object.defineProperty(DataValue.prototype, "value", {
+ get: function () {
+ return this._value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DataValue.prototype, "formattedValue", {
+ get: function () {
+ return this._formattedValue;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ return DataValue;
+ }());
+ exports.DataValue = DataValue;
+
+
+/***/ },
+/* 15 */
+/***/ function(module, exports) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var TableauExceptions = (function () {
+ function TableauExceptions() {
+ }
+ return TableauExceptions;
+ }());
+ exports.TableauExceptions = TableauExceptions;
+
+
+/***/ },
+/* 16 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || (function () {
+ var extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+ return function (d, b) {
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var Contract = __webpack_require__(17);
+ var TableauWorksheetEvent_1 = __webpack_require__(19);
+ var FilterChangedEvent = (function (_super) {
+ __extends(FilterChangedEvent, _super);
+ function FilterChangedEvent(worksheet, _fieldName) {
+ var _this = _super.call(this, Contract.TableauEventType.FilterChanged, worksheet) || this;
+ _this._fieldName = _fieldName;
+ return _this;
+ }
+ Object.defineProperty(FilterChangedEvent.prototype, "fieldName", {
+ get: function () {
+ return this._fieldName;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ FilterChangedEvent.prototype.getFilterAsync = function () {
+ var _this = this;
+ return this._worksheet.getFiltersAsync().then(function (filters) {
+ // TODO: Filtering of the filters should eventually be done platform side.
+ var eventedFilter = filters.find(function (filter) { return (filter.fieldName === _this._fieldName); });
+ if (!eventedFilter) {
+ // We shouldn't hit this unless the filter was removed from the worksheet
+ // after the event was raised.
+ throw new Error('Internal Error: Filter no longer found in worksheet.');
+ }
+ return eventedFilter;
+ });
+ };
+ return FilterChangedEvent;
+ }(TableauWorksheetEvent_1.TableauWorksheetEvent));
+ exports.FilterChangedEvent = FilterChangedEvent;
+
+
+/***/ },
+/* 17 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ /**
+ * This is your main. This is where you re-export everything you want to be publicly available.
+ *
+ * The build enforces that the file has the same name as the global variable that is exported.
+ */
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ Object.defineProperty(exports, "__esModule", { value: true });
+ __export(__webpack_require__(18));
+
+
+/***/ },
+/* 18 */
+/***/ function(module, exports) {
+
+ "use strict";
+ // All enum values made available to Extensions developers.
+ // Enums should be kept in alphabetical order.
+ Object.defineProperty(exports, "__esModule", { value: true });
+ /**
+ * The context in which the Extensions is currently running.
+ */
+ var ExtensionContext;
+ (function (ExtensionContext) {
+ ExtensionContext["Desktop"] = "desktop";
+ ExtensionContext["Server"] = "server";
+ })(ExtensionContext = exports.ExtensionContext || (exports.ExtensionContext = {}));
+ /**
+ * The mode in which the Extensions is currently running.
+ */
+ var ExtensionMode;
+ (function (ExtensionMode) {
+ ExtensionMode["Authoring"] = "authoring";
+ ExtensionMode["Viewing"] = "viewing";
+ })(ExtensionMode = exports.ExtensionMode || (exports.ExtensionMode = {}));
+ var AnalyticsObjectType;
+ (function (AnalyticsObjectType) {
+ AnalyticsObjectType["Cluster"] = "cluster";
+ AnalyticsObjectType["Forecast"] = "forecast";
+ AnalyticsObjectType["TrendLine"] = "trend-line";
+ })(AnalyticsObjectType = exports.AnalyticsObjectType || (exports.AnalyticsObjectType = {}));
+ var ColumnType;
+ (function (ColumnType) {
+ ColumnType["Discrete"] = "discrete";
+ ColumnType["Continuous"] = "continuous";
+ })(ColumnType = exports.ColumnType || (exports.ColumnType = {}));
+ /**
+ * What the object represents in a dashboard.
+ */
+ var DashboardObjectType;
+ (function (DashboardObjectType) {
+ DashboardObjectType["Blank"] = "blank";
+ DashboardObjectType["Worksheet"] = "worksheet";
+ DashboardObjectType["QuickFilter"] = "quick-filter";
+ DashboardObjectType["ParameterControl"] = "parameter-control";
+ DashboardObjectType["PageFilter"] = "page-filter";
+ DashboardObjectType["Legend"] = "legend";
+ DashboardObjectType["Title"] = "title";
+ DashboardObjectType["Text"] = "text";
+ DashboardObjectType["Image"] = "image";
+ DashboardObjectType["WebPage"] = "web-page";
+ DashboardObjectType["Extension"] = "extension";
+ })(DashboardObjectType = exports.DashboardObjectType || (exports.DashboardObjectType = {}));
+ /**
+ * The different types of data a value can have
+ */
+ var DataType;
+ (function (DataType) {
+ DataType["String"] = "string";
+ DataType["Int"] = "int";
+ DataType["Float"] = "float";
+ DataType["Bool"] = "bool";
+ DataType["Date"] = "date";
+ DataType["DateTime"] = "date-time";
+ DataType["Spatial"] = "spatial";
+ })(DataType = exports.DataType || (exports.DataType = {}));
+ /**
+ * Valid date ranges for a relative date filter.
+ */
+ var DateRangeType;
+ (function (DateRangeType) {
+ DateRangeType["Last"] = "last";
+ DateRangeType["LastN"] = "last-n";
+ DateRangeType["Next"] = "next";
+ DateRangeType["NextN"] = "next-n";
+ DateRangeType["Current"] = "current";
+ DateRangeType["ToDate"] = "to-date";
+ })(DateRangeType = exports.DateRangeType || (exports.DateRangeType = {}));
+ /**
+ * Types of dialog event for event listening between a parent Extensions and a popup dialog.
+ */
+ var DialogEventType;
+ (function (DialogEventType) {
+ DialogEventType["DialogMessage"] = "dialog-message";
+ DialogEventType["DialogEvent"] = "dialog-event";
+ })(DialogEventType = exports.DialogEventType || (exports.DialogEventType = {}));
+ var EncodingType;
+ (function (EncodingType) {
+ EncodingType["Column"] = "column";
+ EncodingType["Row"] = "row";
+ EncodingType["Page"] = "page";
+ EncodingType["Filter"] = "filter";
+ EncodingType["MarksType"] = "marks-type";
+ EncodingType["MeasureValues"] = "measure-values";
+ EncodingType["Color"] = "color";
+ EncodingType["Size"] = "size";
+ EncodingType["Label"] = "label";
+ EncodingType["Detail"] = "detail";
+ EncodingType["Tooltip"] = "tooltip";
+ EncodingType["Shape"] = "shape";
+ EncodingType["Path"] = "path";
+ EncodingType["Angle"] = "angle";
+ })(EncodingType = exports.EncodingType || (exports.EncodingType = {}));
+ /**
+ * All error codes used by the Extensions API.
+ */
+ var ErrorCodes;
+ (function (ErrorCodes) {
+ /**
+ * Only one dialog can be opened at time with the UI namespace functionality.
+ */
+ ErrorCodes["DialogAlreadyOpen"] = "dialog-already-open";
+ /**
+ * The open dialog was closed by the user.
+ */
+ ErrorCodes["DialogClosedByUser"] = "dialog-closed-by-user";
+ /**
+ * An error occurred while attempting to perform a filter operation.
+ */
+ ErrorCodes["FilterCannotBePerformed"] = "filter-cannot-be-performed";
+ /**
+ * An error occurred within the Tableau Extensions API. Contact Tableau Support.
+ */
+ ErrorCodes["InternalError"] = "internal-error";
+ /**
+ * An invalid aggregation was specified for the filter, such as setting a range filter to "SUM(Sales)" instead of "Sales".
+ */
+ ErrorCodes["InvalidAggregationFieldName"] = "invalid-aggregation-field-name";
+ /**
+ * A dialog must first launch to, and send messages from, the same domain as the parent Extensions.
+ */
+ ErrorCodes["InvalidDomainDialog"] = "invalid-dialog-domain";
+ /**
+ * An invalid date was specified in a method that required a date parameter.
+ */
+ ErrorCodes["InvalidDateParameter"] = "invalid-date-parameter";
+ /**
+ * A filter operation was attempted on a field that does not exist in the data source.
+ */
+ ErrorCodes["InvalidFilterFieldName"] = "invalid-filter-field-name";
+ /**
+ * A filter operation was attempted using a value that is the wrong data type or format.
+ */
+ ErrorCodes["InvalidFilterFieldValue"] = "invalid-filter-field-value";
+ /**
+ * A parameter is not the correct data type or format. The name of the parameter is specified in the Error.message field.
+ */
+ ErrorCodes["InvalidParameter"] = "invalid-parameter";
+ /**
+ * An invalid date value was specified in a Sheet.selectMarksAsync() call for a date field.
+ */
+ ErrorCodes["InvalidSelectionDate"] = "invalid-selection-date";
+ /**
+ * A field was specified in a Sheet.selectMarksAsync() call that does not exist in the data source.
+ */
+ ErrorCodes["InvalidSelectionFieldName"] = "invalid-selection-field-name";
+ /**
+ * An invalid value was specified in a Sheet.selectMarksAsync() call.
+ */
+ ErrorCodes["InvalidSelectionValue"] = "invalid-selection-value";
+ /**
+ * A required parameter was not specified, null, or an empty string/array.
+ */
+ ErrorCodes["NullOrEmptyParameter"] = "null-or-empty-parameter";
+ /**
+ * An unknown event name was specified in the call to Viz.addEventListeneror Viz.removeEventListener.
+ */
+ ErrorCodes["UnsupportedEventName"] = "unsupported-event-name";
+ })(ErrorCodes = exports.ErrorCodes || (exports.ErrorCodes = {}));
+ /**
+ * Type of aggregation on a field.
+ */
+ var FieldAggregationType;
+ (function (FieldAggregationType) {
+ FieldAggregationType["Sum"] = "sum";
+ FieldAggregationType["Avg"] = "avg";
+ FieldAggregationType["Min"] = "min";
+ FieldAggregationType["Max"] = "max";
+ FieldAggregationType["Stdev"] = "stdev";
+ FieldAggregationType["Stdevp"] = "stdevp";
+ FieldAggregationType["Var"] = "var";
+ FieldAggregationType["Varp"] = "varp";
+ FieldAggregationType["Count"] = "count";
+ FieldAggregationType["Countd"] = "countd";
+ FieldAggregationType["Median"] = "median";
+ FieldAggregationType["Attr"] = "attr";
+ FieldAggregationType["None"] = "none";
+ FieldAggregationType["Year"] = "year";
+ FieldAggregationType["Qtr"] = "qtr";
+ FieldAggregationType["Month"] = "month";
+ FieldAggregationType["Day"] = "day";
+ FieldAggregationType["Hour"] = "hour";
+ FieldAggregationType["Minute"] = "minute";
+ FieldAggregationType["Second"] = "second";
+ FieldAggregationType["Week"] = "week";
+ FieldAggregationType["Weekday"] = "weekday";
+ FieldAggregationType["MonthYear"] = "month-year";
+ FieldAggregationType["Mdy"] = "mdy";
+ FieldAggregationType["End"] = "end";
+ FieldAggregationType["TruncYear"] = "trunc-year";
+ FieldAggregationType["TruncQtr"] = "trunc-qtr";
+ FieldAggregationType["TruncMonth"] = "trunc-month";
+ FieldAggregationType["TruncWeek"] = "trunc-week";
+ FieldAggregationType["TruncDay"] = "trunc-day";
+ FieldAggregationType["TruncHour"] = "trunc-hour";
+ FieldAggregationType["TruncMinute"] = "trunc-minute";
+ FieldAggregationType["TruncSecond"] = "trunc-second";
+ FieldAggregationType["Quart1"] = "quart1";
+ FieldAggregationType["Quart3"] = "quart3";
+ FieldAggregationType["Skewness"] = "skewness";
+ FieldAggregationType["Kurtosis"] = "kurtosis";
+ FieldAggregationType["InOut"] = "in-out";
+ FieldAggregationType["User"] = "user";
+ })(FieldAggregationType = exports.FieldAggregationType || (exports.FieldAggregationType = {}));
+ /**
+ * Role of a field.
+ */
+ var FieldRoleType;
+ (function (FieldRoleType) {
+ FieldRoleType["Dimension"] = "dimension";
+ FieldRoleType["Measure"] = "measure";
+ FieldRoleType["Unknown"] = "unknown";
+ })(FieldRoleType = exports.FieldRoleType || (exports.FieldRoleType = {}));
+ /**
+ * An enumeration of the valid types of filters that can be applied.
+ */
+ var FilterType;
+ (function (FilterType) {
+ FilterType["Categorical"] = "categorical";
+ FilterType["Range"] = "range";
+ FilterType["Hierarchical"] = "hierarchical";
+ FilterType["RelativeDate"] = "relative-date";
+ })(FilterType = exports.FilterType || (exports.FilterType = {}));
+ /**
+ * The different update types for applying filter
+ */
+ var FilterUpdateType;
+ (function (FilterUpdateType) {
+ FilterUpdateType["Add"] = "add";
+ FilterUpdateType["All"] = "all";
+ FilterUpdateType["Replace"] = "replace";
+ FilterUpdateType["Remove"] = "remove";
+ })(FilterUpdateType = exports.FilterUpdateType || (exports.FilterUpdateType = {}));
+ /**
+ * The domain type for a filter
+ */
+ var FilterDomainType;
+ (function (FilterDomainType) {
+ /**
+ * The domain values that are relevant to the specified filter
+ * i.e. the domain is restricted by a previous filter
+ */
+ FilterDomainType["Relevant"] = "relevant";
+ /**
+ * list of all possible domain values from database
+ */
+ FilterDomainType["Database"] = "database";
+ })(FilterDomainType = exports.FilterDomainType || (exports.FilterDomainType = {}));
+ /**
+ * The option for specifying which values to include for filtering
+ * Indicates what to do with null values for a given filter or mark selection call.
+ */
+ var FilterNullOption;
+ (function (FilterNullOption) {
+ FilterNullOption["NullValues"] = "null-values";
+ FilterNullOption["NonNullValues"] = "non-null-values";
+ FilterNullOption["AllValues"] = "all-values";
+ })(FilterNullOption = exports.FilterNullOption || (exports.FilterNullOption = {}));
+ /**
+ * Type of mark for a given marks card in a viz.
+ */
+ var MarkType;
+ (function (MarkType) {
+ MarkType["Bar"] = "bar";
+ MarkType["Line"] = "line";
+ MarkType["Area"] = "area";
+ MarkType["Square"] = "square";
+ MarkType["Circle"] = "circle";
+ MarkType["Shape"] = "shape";
+ MarkType["Text"] = "text";
+ MarkType["Map"] = "map";
+ MarkType["Pie"] = "pie";
+ MarkType["GanttBar"] = "gantt-bar";
+ MarkType["Polygon"] = "polygon";
+ })(MarkType = exports.MarkType || (exports.MarkType = {}));
+ /**
+ * An enumeration describing the different types of allowable values.
+ * This is used for restricting the domain of a parameter
+ */
+ var ParameterValueType;
+ (function (ParameterValueType) {
+ ParameterValueType["All"] = "all";
+ ParameterValueType["List"] = "list";
+ ParameterValueType["Range"] = "range";
+ })(ParameterValueType = exports.ParameterValueType || (exports.ParameterValueType = {}));
+ /**
+ * Date period used in filters and in parameters.
+ */
+ var PeriodType;
+ (function (PeriodType) {
+ PeriodType["Years"] = "years";
+ PeriodType["Quarters"] = "quarters";
+ PeriodType["Months"] = "months";
+ PeriodType["Weeks"] = "weeks";
+ PeriodType["Days"] = "days";
+ PeriodType["Hours"] = "hours";
+ PeriodType["Minutes"] = "minutes";
+ PeriodType["Seconds"] = "seconds";
+ })(PeriodType = exports.PeriodType || (exports.PeriodType = {}));
+ var QuickTableCalcType;
+ (function (QuickTableCalcType) {
+ QuickTableCalcType["RunningTotal"] = "running-total";
+ QuickTableCalcType["Difference"] = "difference";
+ QuickTableCalcType["PercentDifference"] = "percent-difference";
+ QuickTableCalcType["PercentOfTotal"] = "percent-of-total";
+ QuickTableCalcType["Rank"] = "rank";
+ QuickTableCalcType["Percentile"] = "percentile";
+ QuickTableCalcType["MovingAverage"] = "moving-average";
+ QuickTableCalcType["YTDTotal"] = "ytd-total";
+ QuickTableCalcType["CompoundGrowthRate"] = "compound-growth-rate";
+ QuickTableCalcType["YearOverYearGrowth"] = "year-over-year-growth";
+ QuickTableCalcType["YTDGrowth"] = "ytd-growth";
+ QuickTableCalcType["Undefined"] = "undefined";
+ })(QuickTableCalcType = exports.QuickTableCalcType || (exports.QuickTableCalcType = {}));
+ /**
+ * Enum for specifying the selection type for select marks api.
+ */
+ var SelectionUpdateType;
+ (function (SelectionUpdateType) {
+ SelectionUpdateType["Replace"] = "select-replace";
+ SelectionUpdateType["Add"] = "select-add";
+ SelectionUpdateType["Remove"] = "select-remove";
+ })(SelectionUpdateType = exports.SelectionUpdateType || (exports.SelectionUpdateType = {}));
+ /**
+ * The type of sheet a Sheet object represents
+ */
+ var SheetType;
+ (function (SheetType) {
+ SheetType["Dashboard"] = "dashboard";
+ SheetType["Story"] = "story";
+ SheetType["Worksheet"] = "worksheet";
+ })(SheetType = exports.SheetType || (exports.SheetType = {}));
+ var SortDirection;
+ (function (SortDirection) {
+ SortDirection["Increasing"] = "increasing";
+ SortDirection["Decreasing"] = "decreasing";
+ })(SortDirection = exports.SortDirection || (exports.SortDirection = {}));
+ /**
+ * Represents a certain type of event which can be listened for
+ */
+ var TableauEventType;
+ (function (TableauEventType) {
+ /** Raised when any filter has changed state.*/
+ TableauEventType["FilterChanged"] = "filter-changed";
+ /** The selected marks on a visualization has changed */
+ TableauEventType["MarkSelectionChanged"] = "mark-selection-changed";
+ /** A parameter has had its value modified */
+ TableauEventType["ParameterChanged"] = "parameter-changed";
+ })(TableauEventType = exports.TableauEventType || (exports.TableauEventType = {}));
+ var TrendLineModelType;
+ (function (TrendLineModelType) {
+ TrendLineModelType["Linear"] = "linear";
+ TrendLineModelType["Logarithmic"] = "logarithmic";
+ TrendLineModelType["Exponential"] = "exponential";
+ TrendLineModelType["Polynomial"] = "polynomial";
+ })(TrendLineModelType = exports.TrendLineModelType || (exports.TrendLineModelType = {}));
+
+
+/***/ },
+/* 19 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || (function () {
+ var extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+ return function (d, b) {
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var TableauSheetEvent_1 = __webpack_require__(20);
+ var TableauWorksheetEvent = (function (_super) {
+ __extends(TableauWorksheetEvent, _super);
+ function TableauWorksheetEvent(type, _worksheet) {
+ var _this = _super.call(this, type, _worksheet) || this;
+ _this._worksheet = _worksheet;
+ return _this;
+ }
+ Object.defineProperty(TableauWorksheetEvent.prototype, "worksheet", {
+ get: function () {
+ return this._worksheet;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ return TableauWorksheetEvent;
+ }(TableauSheetEvent_1.TableauSheetEvent));
+ exports.TableauWorksheetEvent = TableauWorksheetEvent;
+
+
+/***/ },
+/* 20 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || (function () {
+ var extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+ return function (d, b) {
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var TableauEvent_1 = __webpack_require__(21);
+ var TableauSheetEvent = (function (_super) {
+ __extends(TableauSheetEvent, _super);
+ function TableauSheetEvent(type, sheet) {
+ var _this = _super.call(this, type) || this;
+ _this._sheet = sheet;
+ return _this;
+ }
+ Object.defineProperty(TableauSheetEvent.prototype, "sheet", {
+ get: function () {
+ return this._sheet;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ return TableauSheetEvent;
+ }(TableauEvent_1.TableauEvent));
+ exports.TableauSheetEvent = TableauSheetEvent;
+
+
+/***/ },
+/* 21 */
+/***/ function(module, exports) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var TableauEvent = (function () {
+ function TableauEvent(type) {
+ this._type = type;
+ }
+ Object.defineProperty(TableauEvent.prototype, "type", {
+ get: function () {
+ return this._type;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ return TableauEvent;
+ }());
+ exports.TableauEvent = TableauEvent;
+
+
+/***/ },
+/* 22 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || (function () {
+ var extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+ return function (d, b) {
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var Contract = __webpack_require__(17);
+ var TableauWorksheetEvent_1 = __webpack_require__(19);
+ var MarksSelectedEvent = (function (_super) {
+ __extends(MarksSelectedEvent, _super);
+ function MarksSelectedEvent(worksheet) {
+ return _super.call(this, Contract.TableauEventType.MarkSelectionChanged, worksheet) || this;
+ }
+ MarksSelectedEvent.prototype.getMarksAsync = function () {
+ return this.worksheet.getSelectedMarksAsync();
+ };
+ return MarksSelectedEvent;
+ }(TableauWorksheetEvent_1.TableauWorksheetEvent));
+ exports.MarksSelectedEvent = MarksSelectedEvent;
+
+
+/***/ },
+/* 23 */
+/***/ function(module, exports) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ /**
+ * This class implements the SingleEventManager interface for a single type of Tableau event
+ *
+ * @template TEventType The Tableau event type this class specializes
+ */
+ var SingleEventManagerImpl = (function () {
+ function SingleEventManagerImpl(eventType) {
+ this._eventType = eventType;
+ this._handlers = [];
+ }
+ Object.defineProperty(SingleEventManagerImpl.prototype, "eventType", {
+ get: function () {
+ return this._eventType;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ SingleEventManagerImpl.prototype.addEventListener = function (handler) {
+ var _this = this;
+ this._handlers.push(handler);
+ return function () { return _this.removeEventListener(handler); };
+ };
+ SingleEventManagerImpl.prototype.removeEventListener = function (handler) {
+ var beforeCount = this._handlers.length;
+ this._handlers = this._handlers.filter(function (h) { return h !== handler; });
+ return beforeCount > this._handlers.length;
+ };
+ SingleEventManagerImpl.prototype.triggerEvent = function (eventGenerator) {
+ for (var _i = 0, _a = this._handlers; _i < _a.length; _i++) {
+ var handler = _a[_i];
+ try {
+ var eventModel = eventGenerator();
+ handler(eventModel);
+ }
+ catch (e) {
+ // Since this handler could be outside our control, just catch anything it throws and continue on
+ continue;
+ }
+ }
+ };
+ return SingleEventManagerImpl;
+ }());
+ exports.SingleEventManagerImpl = SingleEventManagerImpl;
+
+
+/***/ },
+/* 24 */
+/***/ function(module, exports) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ /**
+ * Defines which type of getData call to make.
+ */
+ var GetDataType;
+ (function (GetDataType) {
+ GetDataType["Summary"] = "summary";
+ GetDataType["Underlying"] = "underlying";
+ })(GetDataType = exports.GetDataType || (exports.GetDataType = {}));
+
+
+/***/ },
+/* 25 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var DataSourceServiceImpl_1 = __webpack_require__(26);
+ var FilterServiceImpl_1 = __webpack_require__(28);
+ var GetDataServiceImpl_1 = __webpack_require__(36);
+ var NotificationServiceImpl_1 = __webpack_require__(37);
+ var ParametersServiceImpl_1 = __webpack_require__(38);
+ var SelectionServiceImpl_1 = __webpack_require__(41);
+ var ServiceRegistry_1 = __webpack_require__(35);
+ function registerAllSharedServices(dispatcher) {
+ ServiceRegistry_1.ApiServiceRegistry.instance.registerService(new DataSourceServiceImpl_1.DataSourceServiceImpl(dispatcher));
+ ServiceRegistry_1.ApiServiceRegistry.instance.registerService(new GetDataServiceImpl_1.GetDataServiceImpl(dispatcher));
+ ServiceRegistry_1.ApiServiceRegistry.instance.registerService(new FilterServiceImpl_1.FilterServiceImpl(dispatcher));
+ ServiceRegistry_1.ApiServiceRegistry.instance.registerService(new NotificationServiceImpl_1.NotificationServiceImpl(dispatcher));
+ ServiceRegistry_1.ApiServiceRegistry.instance.registerService(new ParametersServiceImpl_1.ParametersServiceImpl(dispatcher));
+ ServiceRegistry_1.ApiServiceRegistry.instance.registerService(new SelectionServiceImpl_1.SelectionServiceImpl(dispatcher));
+ }
+ exports.registerAllSharedServices = registerAllSharedServices;
+
+
+/***/ },
+/* 26 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var api_internal_contract_1 = __webpack_require__(27);
+ var DataSourceServiceImpl = (function () {
+ function DataSourceServiceImpl(_dispatcher) {
+ this._dispatcher = _dispatcher;
+ }
+ Object.defineProperty(DataSourceServiceImpl.prototype, "serviceName", {
+ get: function () {
+ return "data-source-service" /* DataSourceService */;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ DataSourceServiceImpl.prototype.refreshAsync = function (dataSourceId) {
+ var parameters = (_a = {}, _a[api_internal_contract_1.ParameterId.DataSourceId] = dataSourceId, _a);
+ return this._dispatcher.execute(api_internal_contract_1.VerbId.RefreshDataSource, parameters).then(function (response) {
+ return;
+ });
+ var _a;
+ };
+ DataSourceServiceImpl.prototype.getDataSourcesAsync = function () {
+ return this._dispatcher.execute(api_internal_contract_1.VerbId.GetDataSources, {}).then(function (response) {
+ var dataSchema = response.result;
+ return dataSchema;
+ });
+ };
+ return DataSourceServiceImpl;
+ }());
+ exports.DataSourceServiceImpl = DataSourceServiceImpl;
+
+
+/***/ },
+/* 27 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ /**
+ * This is your main. This is where you re-export everything you want to be publicly available.
+ *
+ * The build enforces that the file has the same name as the global variable that is exported.
+ */
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ Object.defineProperty(exports, "__esModule", { value: true });
+ __export(__webpack_require__(4));
+ __export(__webpack_require__(5));
+ __export(__webpack_require__(6));
+ __export(__webpack_require__(7));
+ __export(__webpack_require__(8));
+
+
+/***/ },
+/* 28 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var Contract = __webpack_require__(17);
+ var api_internal_contract_1 = __webpack_require__(27);
+ var api_utils_1 = __webpack_require__(29);
+ var ExternalToInternalEnumMappings_1 = __webpack_require__(32);
+ var InternalToExternalEnumMappings_1 = __webpack_require__(33);
+ var FilterModels_1 = __webpack_require__(34);
+ var GetDataModels_1 = __webpack_require__(14);
+ var FilterServiceImpl = (function () {
+ function FilterServiceImpl(dispatcher) {
+ this._dispatcher = dispatcher;
+ }
+ Object.defineProperty(FilterServiceImpl.prototype, "serviceName", {
+ get: function () {
+ return "filter-service" /* Filter */;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ FilterServiceImpl.prototype.applyFilterAsync = function (visualId, fieldName, values, updateType, filterOptions) {
+ if (!api_utils_1.Param.isValidEnumValue(updateType, Contract.FilterUpdateType)) {
+ throw new Error('Invalid value for parameter FilterUpdateType');
+ }
+ var verb = api_internal_contract_1.VerbId.ApplyCategoricalFilter;
+ var parameters = {};
+ parameters[api_internal_contract_1.ParameterId.VisualId] = visualId;
+ parameters[api_internal_contract_1.ParameterId.FieldName] = fieldName;
+ parameters[api_internal_contract_1.ParameterId.FilterValues] = values;
+ parameters[api_internal_contract_1.ParameterId.FilterUpdateType] = updateType;
+ parameters[api_internal_contract_1.ParameterId.IsExcludeMode] =
+ (filterOptions === undefined || filterOptions.isExcludeMode === undefined) ? false : filterOptions.isExcludeMode;
+ return this._dispatcher.execute(verb, parameters).then(function (response) {
+ var error = response.result;
+ if (!(error.errorCode === null || error.errorCode === undefined)) {
+ // TODO: come back and implement error handling logic
+ throw new Error('Error Applying Filter: ' + error.errorCode);
+ }
+ return fieldName;
+ });
+ };
+ FilterServiceImpl.prototype.applyRangeFilterAsync = function (visualId, fieldName, filterOptions) {
+ if (!filterOptions) {
+ throw new Error('Missing Parameter: RangeFilterOptions');
+ }
+ api_utils_1.Param.verifyRangeParamType(filterOptions.min, filterOptions.max);
+ var verb = api_internal_contract_1.VerbId.ApplyRangeFilter;
+ var parameters = {};
+ if (filterOptions.min) {
+ var min = void 0;
+ if (filterOptions.min instanceof Date) {
+ min = api_utils_1.Param.serializeDateForPlatform(filterOptions.min);
+ }
+ else {
+ min = filterOptions.min;
+ }
+ parameters[api_internal_contract_1.ParameterId.FilterRangeMin] = min;
+ }
+ if (filterOptions.max) {
+ var max = void 0;
+ if (filterOptions.max instanceof Date) {
+ max = api_utils_1.Param.serializeDateForPlatform(filterOptions.max);
+ }
+ else {
+ max = filterOptions.max;
+ }
+ parameters[api_internal_contract_1.ParameterId.FilterRangeMax] = max;
+ }
+ if (filterOptions.nullOption) {
+ if (!api_utils_1.Param.isValidEnumValue(filterOptions.nullOption, Contract.FilterNullOption)) {
+ throw new Error('Invalid value for parameter NullOption');
+ }
+ parameters[api_internal_contract_1.ParameterId.FilterRangeNullOption] = ExternalToInternalEnumMappings_1.ExternalToInternalEnumMappings.nullOptions.convert(filterOptions.nullOption);
+ }
+ parameters[api_internal_contract_1.ParameterId.FieldName] = fieldName;
+ parameters[api_internal_contract_1.ParameterId.VisualId] = visualId;
+ return this._dispatcher.execute(verb, parameters).then(function (response) {
+ return fieldName;
+ });
+ };
+ FilterServiceImpl.prototype.clearFilterAsync = function (visualId, fieldName) {
+ var verb = api_internal_contract_1.VerbId.ClearFilter;
+ var parameters = {};
+ parameters[api_internal_contract_1.ParameterId.VisualId] = visualId;
+ parameters[api_internal_contract_1.ParameterId.FieldName] = fieldName;
+ return this._dispatcher.execute(verb, parameters).then(function (resposne) {
+ return fieldName;
+ });
+ };
+ FilterServiceImpl.prototype.getFiltersAsync = function (visualId) {
+ var _this = this;
+ var verb = api_internal_contract_1.VerbId.GetFilters;
+ var parameters = {};
+ parameters[api_internal_contract_1.ParameterId.VisualId] = visualId;
+ return this._dispatcher.execute(verb, parameters).then(function (response) {
+ var filters = response.result;
+ return _this.convertDomainFilters(filters);
+ });
+ };
+ FilterServiceImpl.prototype.getCategoricalDomainAsync = function (worksheetName, fieldId, domainType) {
+ var _this = this;
+ if (!api_utils_1.Param.isValidEnumValue(domainType, Contract.FilterDomainType)) {
+ throw new Error('Invalid value for parameter FilterDomainType');
+ }
+ var verb = api_internal_contract_1.VerbId.GetCategoricalDomain;
+ var parameters = {};
+ parameters[api_internal_contract_1.ParameterId.VisualId] = {
+ worksheet: worksheetName
+ };
+ parameters[api_internal_contract_1.ParameterId.FieldId] = fieldId;
+ parameters[api_internal_contract_1.ParameterId.DomainType] = domainType;
+ return this._dispatcher.execute(verb, parameters).then(function (response) {
+ var domain = response.result;
+ return _this.convertCategoricalDomain(domain, domainType);
+ });
+ };
+ FilterServiceImpl.prototype.getRangeDomainAsync = function (worksheetName, fieldId, domainType) {
+ var _this = this;
+ if (!api_utils_1.Param.isValidEnumValue(domainType, Contract.FilterDomainType)) {
+ throw new Error('Invalid value for parameter FilterDomainType');
+ }
+ var verb = api_internal_contract_1.VerbId.GetRangeDomain;
+ var parameters = {};
+ parameters[api_internal_contract_1.ParameterId.VisualId] = {
+ worksheet: worksheetName
+ };
+ parameters[api_internal_contract_1.ParameterId.FieldId] = fieldId;
+ parameters[api_internal_contract_1.ParameterId.DomainType] = ExternalToInternalEnumMappings_1.ExternalToInternalEnumMappings.filterDomainType.convert(domainType);
+ return this._dispatcher.execute(verb, parameters).then(function (response) {
+ var domain = response.result;
+ return _this.convertRangeDomain(domain, domainType);
+ });
+ };
+ // Helper Methods
+ FilterServiceImpl.prototype.convertDomainFilters = function (domainFilters) {
+ var _this = this;
+ var filters = [];
+ domainFilters.forEach(function (domainFilter) {
+ switch (domainFilter.filterType) {
+ case api_internal_contract_1.FilterType.Categorical: {
+ var filter = domainFilter;
+ if (filter) {
+ filters.push(_this.convertCategoricalFilter(filter));
+ }
+ else {
+ throw new Error('Invalid Categorical Filter');
+ }
+ break;
+ }
+ case api_internal_contract_1.FilterType.Range: {
+ var filter = domainFilter;
+ if (filter) {
+ filters.push(_this.convertRangeFilter(filter));
+ }
+ else {
+ throw new Error('Invalid Range Filter');
+ }
+ break;
+ }
+ case api_internal_contract_1.FilterType.RelativeDate: {
+ var filter = domainFilter;
+ if (filter) {
+ filters.push(_this.convertRelativeDateFilter(filter));
+ }
+ else {
+ throw new Error('Invalid Relative Date Filter');
+ }
+ break;
+ }
+ default: {
+ break;
+ }
+ }
+ });
+ return filters;
+ };
+ FilterServiceImpl.prototype.convertCategoricalFilter = function (domainFilter) {
+ var appliedValues = domainFilter.values.map(function (dv) {
+ return new GetDataModels_1.DataValue(dv.value, dv.formattedValue);
+ });
+ return new FilterModels_1.CategoricalFilter(domainFilter.visualId.worksheet, domainFilter.fieldCaption, domainFilter.fieldName, Contract.FilterType.Categorical, appliedValues, domainFilter.isExclude);
+ };
+ FilterServiceImpl.prototype.convertRangeFilter = function (domainFilter) {
+ var minValue = new GetDataModels_1.DataValue(domainFilter.min.value, domainFilter.min.formattedValue);
+ var maxValue = new GetDataModels_1.DataValue(domainFilter.max.value, domainFilter.max.formattedValue);
+ return new FilterModels_1.RangeFilter(domainFilter.visualId.worksheet, domainFilter.fieldCaption, domainFilter.fieldName, Contract.FilterType.Range, minValue, maxValue, domainFilter.includeNullValues);
+ };
+ FilterServiceImpl.prototype.convertRelativeDateFilter = function (domainFilter) {
+ var anchorDateValue = new GetDataModels_1.DataValue(domainFilter.anchorDate.value, domainFilter.anchorDate.formattedValue);
+ return new FilterModels_1.RelativeDateFilter(domainFilter.visualId.worksheet, domainFilter.fieldCaption, domainFilter.fieldName, Contract.FilterType.RelativeDate, anchorDateValue, InternalToExternalEnumMappings_1.InternalToExternalEnumMappings.dateStepPeriod.convert(domainFilter.periodType), InternalToExternalEnumMappings_1.InternalToExternalEnumMappings.dateRangeType.convert(domainFilter.rangeType), domainFilter.rangeN);
+ };
+ FilterServiceImpl.prototype.convertCategoricalDomain = function (domain, domainType) {
+ var values = domain.values.map(function (domainDv) {
+ return new GetDataModels_1.DataValue(domainDv.value, domainDv.formattedValue);
+ });
+ return new FilterModels_1.CategoricalDomain(values, domainType);
+ };
+ FilterServiceImpl.prototype.convertRangeDomain = function (domain, domainType) {
+ var min = new GetDataModels_1.DataValue(domain.min.value, domain.min.formattedValue);
+ var max = new GetDataModels_1.DataValue(domain.max.value, domain.max.formattedValue);
+ return new FilterModels_1.RangeDomain(min, max, domainType);
+ };
+ return FilterServiceImpl;
+ }());
+ exports.FilterServiceImpl = FilterServiceImpl;
+
+
+/***/ },
+/* 29 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ /**
+ * This is your main. This is where you re-export everything you want to be publicly available.
+ *
+ * The build enforces that the file has the same name as the global variable that is exported.
+ */
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var EnumConverter_1 = __webpack_require__(30);
+ exports.EnumConverter = EnumConverter_1.EnumConverter;
+ var Param_1 = __webpack_require__(31);
+ exports.Param = Param_1.Param;
+
+
+/***/ },
+/* 30 */
+/***/ function(module, exports) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ /**
+ * This class converts from a source enum value to destination enum
+ * value given a mapping from source to destination when constructed.
+ */
+ var EnumConverter = (function () {
+ function EnumConverter(_mappings, _defaultVal) {
+ this._mappings = _mappings;
+ this._defaultVal = _defaultVal;
+ }
+ EnumConverter.prototype.convert = function (enumVal, throwIfMissing) {
+ if (this._mappings.hasOwnProperty(enumVal)) {
+ return this._mappings[enumVal];
+ }
+ if (this._defaultVal !== undefined && !throwIfMissing) {
+ return this._defaultVal;
+ }
+ throw new Error('Mapping not found for ' + enumVal);
+ };
+ return EnumConverter;
+ }());
+ exports.EnumConverter = EnumConverter;
+
+
+/***/ },
+/* 31 */
+/***/ function(module, exports) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var Param = (function () {
+ function Param() {
+ }
+ /**
+ * Verifies that an incoming parameter is 'truthy' and throws
+ * an error if it's not. This will throw an error if the value
+ * is null, undefined, NaN, the empty string, 0, or false.
+ *
+ * @param argumentValue value to verify
+ * @param argumentName name of argument to verify
+ */
+ /*tslint:disable-next-line */
+ Param.verifyValue = function (argumentValue, argumentName) {
+ if (!argumentValue) {
+ throw new Error('Value is invalid for argument: ' + argumentName);
+ }
+ };
+ /**
+ * Verifies that a string is valid. Throws an error if the string is
+ * null, undefined, or NaN.
+ *
+ * @param argumentValue value to verify
+ * @param argumentName name of argument to verify
+ */
+ Param.verifyString = function (argumentValue, argumentName) {
+ if (argumentValue === null || argumentValue === undefined) {
+ throw new Error('String value is invalid for argument: ' + argumentName);
+ }
+ };
+ /**
+ * Verifies the value is part of the Enum
+ *
+ * String enums are {string : string} dictionaries which are not reverse mappable
+ * This is an ugly workaround
+ * @param value value to verify
+ * @param enumType enum to verify against
+ */
+ /* tslint:disable:no-any */
+ Param.isValidEnumValue = function (value, enumType) {
+ var isValid = false;
+ Object.keys(enumType).forEach(function (enumKey) {
+ if (enumType[enumKey] === value.toString()) {
+ isValid = true;
+ }
+ });
+ return isValid;
+ };
+ /* tslint:enable:no-any */
+ /**
+ * serializes the date into the format that the server expects.
+ * @param date the date to serialize
+ */
+ Param.serializeDateForPlatform = function (date) {
+ var year = date.getUTCFullYear();
+ var month = date.getUTCMonth() + 1;
+ var day = date.getUTCDate();
+ var hh = date.getUTCHours();
+ var mm = date.getUTCMinutes();
+ var sec = date.getUTCSeconds();
+ return year + '-' + month + '-' + day + ' ' + hh + ':' + mm + ':' + sec;
+ };
+ Param.serializeBooleanForPlatform = function (bool) {
+ return bool ? 'true' : 'false';
+ };
+ Param.serializeNumberForPlatform = function (num) {
+ return num.toString(10);
+ };
+ /**
+ * Verifies the params min and max for applying range filter
+ * @param min range min
+ * @param max range max
+ */
+ /* tslint:disable:no-any */
+ Param.verifyRangeParamType = function (min, max) {
+ /* tslint:enable:no-any */
+ if (!min && !max) {
+ throw new Error('Missing Parameter: At least one of min or max is required');
+ }
+ if (!Param.isTypeNumber(min) && !Param.isTypeDate(min)) {
+ throw new Error('Invalid Parameter Type: Only Date and number are allowed for parameter min');
+ }
+ if (!Param.isTypeNumber(max) && !Param.isTypeDate(max)) {
+ throw new Error('Invalid Parameter Type: Only Date and number are allowed for parameter max');
+ }
+ if (typeof (min) !== typeof (max)) {
+ throw new Error('Invalid Parameter Type: Parameters min and max should be of the same type');
+ }
+ };
+ /**
+ * Verifies the input is a number
+ */
+ /* tslint:disable:no-any */
+ Param.isTypeNumber = function (input) {
+ return typeof (input) === 'number' || input instanceof Number;
+ };
+ /* tslint:enable:no-any */
+ /**
+ * Verifies the input is a Date
+ */
+ /* tslint:disable:no-any */
+ Param.isTypeDate = function (input) {
+ return input instanceof Date;
+ };
+ /* tslint:enable:no-any */
+ /* tslint:disable-next-line:no-any */
+ Param.isTypeString = function (input) {
+ return typeof (input) === 'string' || input instanceof String;
+ };
+ /* tslint:disable-next-line:no-any */
+ Param.isTypeBool = function (input) {
+ return typeof (input) === 'boolean' || input instanceof Boolean;
+ };
+ /* tslint:disable-next-line:no-any */
+ Param.serializeParamterValue = function (value) {
+ if (Param.isTypeNumber(value)) {
+ return Param.serializeNumberForPlatform(value);
+ }
+ else if (Param.isTypeDate(value)) {
+ return Param.serializeDateForPlatform(value);
+ }
+ else if (Param.isTypeBool(value)) {
+ return Param.serializeBooleanForPlatform(value);
+ }
+ else if (Param.isTypeString(value)) {
+ return value;
+ }
+ else {
+ throw new Error('Value is invalid for argument: value');
+ }
+ };
+ return Param;
+ }());
+ exports.Param = Param;
+
+
+/***/ },
+/* 32 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var api_external_contract_1 = __webpack_require__(17);
+ var api_internal_contract_1 = __webpack_require__(27);
+ var api_utils_1 = __webpack_require__(29);
+ /* tslint:disable:typedef - Disable this to make declaring these classes a bit easier */
+ /**
+ * Maps enums used by the external-api-contract to the enums used
+ * in the internal-api-contract, which developers code against.
+ */
+ var ExternalToInternalEnumMappings = (function () {
+ function ExternalToInternalEnumMappings() {
+ }
+ ExternalToInternalEnumMappings.nullOptions = new api_utils_1.EnumConverter((_a = {},
+ _a[api_external_contract_1.FilterNullOption.AllValues] = api_internal_contract_1.FilterNullOption.AllValues,
+ _a[api_external_contract_1.FilterNullOption.NonNullValues] = api_internal_contract_1.FilterNullOption.NonNullValues,
+ _a[api_external_contract_1.FilterNullOption.NonNullValues] = api_internal_contract_1.FilterNullOption.NullValues,
+ _a));
+ ExternalToInternalEnumMappings.filterDomainType = new api_utils_1.EnumConverter((_b = {},
+ _b[api_external_contract_1.FilterDomainType.Relevant] = api_internal_contract_1.FilterDomainType.Relevant,
+ _b[api_external_contract_1.FilterDomainType.Database] = api_internal_contract_1.FilterDomainType.Database,
+ _b));
+ return ExternalToInternalEnumMappings;
+ }());
+ exports.ExternalToInternalEnumMappings = ExternalToInternalEnumMappings;
+ var _a, _b;
+ /* tslint:enable:typedef */
+
+
+/***/ },
+/* 33 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var api_external_contract_1 = __webpack_require__(17);
+ var api_internal_contract_1 = __webpack_require__(27);
+ var api_utils_1 = __webpack_require__(29);
+ /* tslint:disable:typedef - Disable this to make declaring these classes a bit easier */
+ /**
+ * Maps enums used by the internal-api-contract to the enums used
+ * in the external-api-contract, which developers code against.
+ */
+ var InternalToExternalEnumMappings = (function () {
+ function InternalToExternalEnumMappings() {
+ }
+ InternalToExternalEnumMappings.extensionContext = new api_utils_1.EnumConverter((_a = {},
+ _a[api_internal_contract_1.ExtensionContext.Desktop] = api_external_contract_1.ExtensionContext.Desktop,
+ _a[api_internal_contract_1.ExtensionContext.Server] = api_external_contract_1.ExtensionContext.Server,
+ _a));
+ InternalToExternalEnumMappings.extensionMode = new api_utils_1.EnumConverter((_b = {},
+ _b[api_internal_contract_1.ExtensionMode.Authoring] = api_external_contract_1.ExtensionMode.Authoring,
+ _b[api_internal_contract_1.ExtensionMode.Viewing] = api_external_contract_1.ExtensionMode.Viewing,
+ _b));
+ InternalToExternalEnumMappings.columnType = new api_utils_1.EnumConverter((_c = {},
+ _c[api_internal_contract_1.ColumnType.Continuous] = api_external_contract_1.ColumnType.Continuous,
+ _c[api_internal_contract_1.ColumnType.Discrete] = api_external_contract_1.ColumnType.Discrete,
+ _c));
+ InternalToExternalEnumMappings.fieldAggregationType = new api_utils_1.EnumConverter((_d = {},
+ _d[api_internal_contract_1.FieldAggregationType.Attr] = api_external_contract_1.FieldAggregationType.Attr,
+ _d[api_internal_contract_1.FieldAggregationType.Avg] = api_external_contract_1.FieldAggregationType.Avg,
+ _d[api_internal_contract_1.FieldAggregationType.Count] = api_external_contract_1.FieldAggregationType.Count,
+ _d[api_internal_contract_1.FieldAggregationType.Countd] = api_external_contract_1.FieldAggregationType.Countd,
+ _d[api_internal_contract_1.FieldAggregationType.Day] = api_external_contract_1.FieldAggregationType.Day,
+ _d[api_internal_contract_1.FieldAggregationType.End] = api_external_contract_1.FieldAggregationType.End,
+ _d[api_internal_contract_1.FieldAggregationType.Hour] = api_external_contract_1.FieldAggregationType.Hour,
+ _d[api_internal_contract_1.FieldAggregationType.InOut] = api_external_contract_1.FieldAggregationType.InOut,
+ _d[api_internal_contract_1.FieldAggregationType.Kurtosis] = api_external_contract_1.FieldAggregationType.Kurtosis,
+ _d[api_internal_contract_1.FieldAggregationType.Max] = api_external_contract_1.FieldAggregationType.Max,
+ _d[api_internal_contract_1.FieldAggregationType.Mdy] = api_external_contract_1.FieldAggregationType.Mdy,
+ _d[api_internal_contract_1.FieldAggregationType.Median] = api_external_contract_1.FieldAggregationType.Median,
+ _d[api_internal_contract_1.FieldAggregationType.Min] = api_external_contract_1.FieldAggregationType.Min,
+ _d[api_internal_contract_1.FieldAggregationType.Minute] = api_external_contract_1.FieldAggregationType.Minute,
+ _d[api_internal_contract_1.FieldAggregationType.MonthYear] = api_external_contract_1.FieldAggregationType.MonthYear,
+ _d[api_internal_contract_1.FieldAggregationType.None] = api_external_contract_1.FieldAggregationType.None,
+ _d[api_internal_contract_1.FieldAggregationType.Qtr] = api_external_contract_1.FieldAggregationType.Qtr,
+ _d[api_internal_contract_1.FieldAggregationType.Quart1] = api_external_contract_1.FieldAggregationType.Quart1,
+ _d[api_internal_contract_1.FieldAggregationType.Quart3] = api_external_contract_1.FieldAggregationType.Quart3,
+ _d[api_internal_contract_1.FieldAggregationType.Second] = api_external_contract_1.FieldAggregationType.Second,
+ _d[api_internal_contract_1.FieldAggregationType.Skewness] = api_external_contract_1.FieldAggregationType.Skewness,
+ _d[api_internal_contract_1.FieldAggregationType.Stdev] = api_external_contract_1.FieldAggregationType.Stdev,
+ _d[api_internal_contract_1.FieldAggregationType.Stdevp] = api_external_contract_1.FieldAggregationType.Stdevp,
+ _d[api_internal_contract_1.FieldAggregationType.Sum] = api_external_contract_1.FieldAggregationType.Sum,
+ _d[api_internal_contract_1.FieldAggregationType.TruncDay] = api_external_contract_1.FieldAggregationType.TruncDay,
+ _d[api_internal_contract_1.FieldAggregationType.TruncHour] = api_external_contract_1.FieldAggregationType.TruncHour,
+ _d[api_internal_contract_1.FieldAggregationType.TruncMinute] = api_external_contract_1.FieldAggregationType.TruncMinute,
+ _d[api_internal_contract_1.FieldAggregationType.TruncMonth] = api_external_contract_1.FieldAggregationType.TruncMonth,
+ _d[api_internal_contract_1.FieldAggregationType.TruncQtr] = api_external_contract_1.FieldAggregationType.TruncQtr,
+ _d[api_internal_contract_1.FieldAggregationType.TruncSecond] = api_external_contract_1.FieldAggregationType.TruncSecond,
+ _d[api_internal_contract_1.FieldAggregationType.TruncWeek] = api_external_contract_1.FieldAggregationType.TruncWeek,
+ _d[api_internal_contract_1.FieldAggregationType.TruncYear] = api_external_contract_1.FieldAggregationType.TruncYear,
+ _d[api_internal_contract_1.FieldAggregationType.User] = api_external_contract_1.FieldAggregationType.User,
+ _d[api_internal_contract_1.FieldAggregationType.Var] = api_external_contract_1.FieldAggregationType.Var,
+ _d[api_internal_contract_1.FieldAggregationType.Varp] = api_external_contract_1.FieldAggregationType.Varp,
+ _d[api_internal_contract_1.FieldAggregationType.Week] = api_external_contract_1.FieldAggregationType.Week,
+ _d[api_internal_contract_1.FieldAggregationType.Weekday] = api_external_contract_1.FieldAggregationType.Weekday,
+ _d[api_internal_contract_1.FieldAggregationType.Year] = api_external_contract_1.FieldAggregationType.Year,
+ _d));
+ InternalToExternalEnumMappings.fieldRoleType = new api_utils_1.EnumConverter((_e = {},
+ _e[api_internal_contract_1.FieldRoleType.Dimension] = api_external_contract_1.FieldRoleType.Dimension,
+ _e[api_internal_contract_1.FieldRoleType.Measure] = api_external_contract_1.FieldRoleType.Measure,
+ _e[api_internal_contract_1.FieldRoleType.Unknown] = api_external_contract_1.FieldRoleType.Unknown,
+ _e));
+ InternalToExternalEnumMappings.sheetType = new api_utils_1.EnumConverter((_f = {},
+ _f[api_internal_contract_1.SheetType.Dashboard] = api_external_contract_1.SheetType.Dashboard,
+ _f[api_internal_contract_1.SheetType.Story] = api_external_contract_1.SheetType.Story,
+ _f[api_internal_contract_1.SheetType.Worksheet] = api_external_contract_1.SheetType.Worksheet,
+ _f));
+ InternalToExternalEnumMappings.dashboardObjectType = new api_utils_1.EnumConverter((_g = {},
+ _g[api_internal_contract_1.DashboardObjectType.Extension] = api_external_contract_1.DashboardObjectType.Extension,
+ _g[api_internal_contract_1.DashboardObjectType.Blank] = api_external_contract_1.DashboardObjectType.Blank,
+ _g[api_internal_contract_1.DashboardObjectType.Image] = api_external_contract_1.DashboardObjectType.Image,
+ _g[api_internal_contract_1.DashboardObjectType.Legend] = api_external_contract_1.DashboardObjectType.Legend,
+ _g[api_internal_contract_1.DashboardObjectType.PageFilter] = api_external_contract_1.DashboardObjectType.PageFilter,
+ _g[api_internal_contract_1.DashboardObjectType.ParameterControl] = api_external_contract_1.DashboardObjectType.ParameterControl,
+ _g[api_internal_contract_1.DashboardObjectType.QuickFilter] = api_external_contract_1.DashboardObjectType.QuickFilter,
+ _g[api_internal_contract_1.DashboardObjectType.Text] = api_external_contract_1.DashboardObjectType.Text,
+ _g[api_internal_contract_1.DashboardObjectType.Title] = api_external_contract_1.DashboardObjectType.Title,
+ _g[api_internal_contract_1.DashboardObjectType.WebPage] = api_external_contract_1.DashboardObjectType.WebPage,
+ _g[api_internal_contract_1.DashboardObjectType.Worksheet] = api_external_contract_1.DashboardObjectType.Worksheet,
+ _g));
+ InternalToExternalEnumMappings.dataType = new api_utils_1.EnumConverter((_h = {},
+ _h[api_internal_contract_1.DataType.Bool] = api_external_contract_1.DataType.Bool,
+ _h[api_internal_contract_1.DataType.Date] = api_external_contract_1.DataType.Date,
+ _h[api_internal_contract_1.DataType.DateTime] = api_external_contract_1.DataType.DateTime,
+ _h[api_internal_contract_1.DataType.Float] = api_external_contract_1.DataType.Float,
+ _h[api_internal_contract_1.DataType.Int] = api_external_contract_1.DataType.Int,
+ _h[api_internal_contract_1.DataType.String] = api_external_contract_1.DataType.String,
+ _h));
+ InternalToExternalEnumMappings.filterUpdateType = new api_utils_1.EnumConverter((_j = {},
+ _j[api_internal_contract_1.FilterUpdateType.Add] = api_external_contract_1.FilterUpdateType.Add,
+ _j[api_internal_contract_1.FilterUpdateType.All] = api_external_contract_1.FilterUpdateType.All,
+ _j[api_internal_contract_1.FilterUpdateType.Remove] = api_external_contract_1.FilterUpdateType.Remove,
+ _j[api_internal_contract_1.FilterUpdateType.Replace] = api_external_contract_1.FilterUpdateType.Replace,
+ _j));
+ InternalToExternalEnumMappings.allowableValues = new api_utils_1.EnumConverter((_k = {},
+ _k[api_internal_contract_1.DomainRestrictionType.All] = api_external_contract_1.ParameterValueType.All,
+ _k[api_internal_contract_1.DomainRestrictionType.List] = api_external_contract_1.ParameterValueType.List,
+ _k[api_internal_contract_1.DomainRestrictionType.Range] = api_external_contract_1.ParameterValueType.Range,
+ _k));
+ InternalToExternalEnumMappings.dateStepPeriod = new api_utils_1.EnumConverter((_l = {},
+ _l[api_internal_contract_1.DateStepPeriod.Years] = api_external_contract_1.PeriodType.Years,
+ _l[api_internal_contract_1.DateStepPeriod.Quarters] = api_external_contract_1.PeriodType.Quarters,
+ _l[api_internal_contract_1.DateStepPeriod.Months] = api_external_contract_1.PeriodType.Months,
+ _l[api_internal_contract_1.DateStepPeriod.Weeks] = api_external_contract_1.PeriodType.Weeks,
+ _l[api_internal_contract_1.DateStepPeriod.Days] = api_external_contract_1.PeriodType.Days,
+ _l[api_internal_contract_1.DateStepPeriod.Hours] = api_external_contract_1.PeriodType.Hours,
+ _l[api_internal_contract_1.DateStepPeriod.Minutes] = api_external_contract_1.PeriodType.Minutes,
+ _l[api_internal_contract_1.DateStepPeriod.Seconds] = api_external_contract_1.PeriodType.Seconds,
+ _l));
+ InternalToExternalEnumMappings.dateRangeType = new api_utils_1.EnumConverter((_m = {},
+ _m[api_internal_contract_1.DateRangeType.Current] = api_external_contract_1.DateRangeType.Current,
+ _m[api_internal_contract_1.DateRangeType.Last] = api_external_contract_1.DateRangeType.Last,
+ _m[api_internal_contract_1.DateRangeType.LastN] = api_external_contract_1.DateRangeType.LastN,
+ _m[api_internal_contract_1.DateRangeType.Next] = api_external_contract_1.DateRangeType.Next,
+ _m[api_internal_contract_1.DateRangeType.NextN] = api_external_contract_1.DateRangeType.NextN,
+ _m[api_internal_contract_1.DateRangeType.ToDate] = api_external_contract_1.DateRangeType.ToDate,
+ _m));
+ InternalToExternalEnumMappings.filterType = new api_utils_1.EnumConverter((_o = {},
+ _o[api_internal_contract_1.FilterType.Categorical] = api_external_contract_1.FilterType.Categorical,
+ _o[api_internal_contract_1.FilterType.Range] = api_external_contract_1.FilterType.Range,
+ _o[api_internal_contract_1.FilterType.RelativeDate] = api_external_contract_1.FilterType.RelativeDate,
+ _o[api_internal_contract_1.FilterType.Hierarchical] = api_external_contract_1.FilterType.Hierarchical,
+ _o));
+ return InternalToExternalEnumMappings;
+ }());
+ exports.InternalToExternalEnumMappings = InternalToExternalEnumMappings;
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
+ /* tslint:enable:typedef */
+
+
+/***/ },
+/* 34 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || (function () {
+ var extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+ return function (d, b) {
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var Contract = __webpack_require__(17);
+ var ServiceRegistry_1 = __webpack_require__(35);
+ var Filter = (function () {
+ function Filter(_worksheetName, _fieldName, _filterType, _fieldId) {
+ this._worksheetName = _worksheetName;
+ this._fieldName = _fieldName;
+ this._filterType = _filterType;
+ this._fieldId = _fieldId;
+ }
+ Object.defineProperty(Filter.prototype, "worksheetName", {
+ get: function () {
+ return this._worksheetName;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Filter.prototype, "fieldName", {
+ get: function () {
+ return this._fieldName;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Filter.prototype, "fieldId", {
+ get: function () {
+ return this._fieldId;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Filter.prototype, "filterType", {
+ get: function () {
+ return this._filterType;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Filter.prototype.getFieldAsync = function () {
+ throw new Error('Method not implemented');
+ };
+ return Filter;
+ }());
+ exports.Filter = Filter;
+ var CategoricalFilter = (function (_super) {
+ __extends(CategoricalFilter, _super);
+ function CategoricalFilter(worksheetName, fieldName, fieldId, filterType, _appliedValues, _isExcludeMode) {
+ var _this = _super.call(this, worksheetName, fieldName, filterType, fieldId) || this;
+ _this._appliedValues = _appliedValues;
+ _this._isExcludeMode = _isExcludeMode;
+ return _this;
+ }
+ Object.defineProperty(CategoricalFilter.prototype, "appliedValues", {
+ get: function () {
+ return this._appliedValues;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(CategoricalFilter.prototype, "isExcludeMode", {
+ get: function () {
+ return this._isExcludeMode;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ CategoricalFilter.prototype.getDomainAsync = function (domainType) {
+ if (!domainType) {
+ domainType = Contract.FilterDomainType.Relevant;
+ }
+ var service = ServiceRegistry_1.ApiServiceRegistry.instance.getService("filter-service" /* Filter */);
+ return service.getCategoricalDomainAsync(this._worksheetName, this._fieldId, domainType);
+ };
+ return CategoricalFilter;
+ }(Filter));
+ exports.CategoricalFilter = CategoricalFilter;
+ var RangeFilter = (function (_super) {
+ __extends(RangeFilter, _super);
+ function RangeFilter(worksheetName, fieldName, fieldId, filterType, _min, _max, _includeNullValues) {
+ var _this = _super.call(this, worksheetName, fieldName, filterType, fieldId) || this;
+ _this._min = _min;
+ _this._max = _max;
+ _this._includeNullValues = _includeNullValues;
+ return _this;
+ }
+ Object.defineProperty(RangeFilter.prototype, "minValue", {
+ get: function () {
+ return this._min;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(RangeFilter.prototype, "maxValue", {
+ get: function () {
+ return this._max;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(RangeFilter.prototype, "includeNullValues", {
+ get: function () {
+ return this._includeNullValues;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ RangeFilter.prototype.getDomainAsync = function (domainType) {
+ var service = ServiceRegistry_1.ApiServiceRegistry.instance.getService("filter-service" /* Filter */);
+ if (!domainType) {
+ domainType = Contract.FilterDomainType.Relevant;
+ }
+ return service.getRangeDomainAsync(this._worksheetName, this._fieldId, domainType);
+ };
+ return RangeFilter;
+ }(Filter));
+ exports.RangeFilter = RangeFilter;
+ var RelativeDateFilter = (function (_super) {
+ __extends(RelativeDateFilter, _super);
+ function RelativeDateFilter(worksheetName, fieldName, fieldId, filterType, _anchorDate, _periodType, _rangeType, _rangeN) {
+ var _this = _super.call(this, worksheetName, fieldName, filterType, fieldId) || this;
+ _this._anchorDate = _anchorDate;
+ _this._periodType = _periodType;
+ _this._rangeType = _rangeType;
+ _this._rangeN = _rangeN;
+ return _this;
+ }
+ Object.defineProperty(RelativeDateFilter.prototype, "anchorDate", {
+ get: function () {
+ return this._anchorDate;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(RelativeDateFilter.prototype, "periodType", {
+ get: function () {
+ return this._periodType;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(RelativeDateFilter.prototype, "rangeType", {
+ get: function () {
+ return this._rangeType;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(RelativeDateFilter.prototype, "rangeN", {
+ get: function () {
+ return this._rangeN;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ return RelativeDateFilter;
+ }(Filter));
+ exports.RelativeDateFilter = RelativeDateFilter;
+ var CategoricalDomain = (function () {
+ function CategoricalDomain(_values, _domainType) {
+ this._values = _values;
+ this._domainType = _domainType;
+ }
+ Object.defineProperty(CategoricalDomain.prototype, "values", {
+ get: function () {
+ return this._values;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(CategoricalDomain.prototype, "type", {
+ get: function () {
+ return this._domainType;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ return CategoricalDomain;
+ }());
+ exports.CategoricalDomain = CategoricalDomain;
+ var RangeDomain = (function () {
+ function RangeDomain(_min, _max, _domainType) {
+ this._min = _min;
+ this._max = _max;
+ this._domainType = _domainType;
+ }
+ Object.defineProperty(RangeDomain.prototype, "type", {
+ get: function () {
+ return this._domainType;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(RangeDomain.prototype, "min", {
+ get: function () {
+ return this._min;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(RangeDomain.prototype, "max", {
+ get: function () {
+ return this._max;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ return RangeDomain;
+ }());
+ exports.RangeDomain = RangeDomain;
+
+
+/***/ },
+/* 35 */
+/***/ function(module, exports) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var ServiceRegistryImpl = (function () {
+ function ServiceRegistryImpl() {
+ this._services = {};
+ }
+ ServiceRegistryImpl.prototype.registerService = function (service) {
+ this._services[service.serviceName] = service;
+ };
+ ServiceRegistryImpl.prototype.getService = function (serviceName) {
+ if (!this._services.hasOwnProperty(serviceName)) {
+ throw new Error("No Service " + serviceName + " is registered");
+ }
+ return this._services[serviceName];
+ };
+ return ServiceRegistryImpl;
+ }());
+ /**
+ * static class used for getting access to the single instance
+ * of the ApiServiceRegistry
+ */
+ var ApiServiceRegistry = (function () {
+ // Private to avoid anyone constructing this
+ function ApiServiceRegistry() {
+ }
+ Object.defineProperty(ApiServiceRegistry, "instance", {
+ /**
+ * Gets the singleton instance of the ServiceRegistry
+ */
+ get: function () {
+ if (!window.__tableauApiServiceRegistry) {
+ ApiServiceRegistry.setInstance(new ServiceRegistryImpl());
+ }
+ if (!window.__tableauApiServiceRegistry) {
+ throw new Error('Assigning service registry failed');
+ }
+ return window.__tableauApiServiceRegistry;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * Helper method to override the registry instance. Can be used by unit tests
+ *
+ * @param {ServiceRegistry} serviceRegistry The new registry
+ */
+ ApiServiceRegistry.setInstance = function (serviceRegistry) {
+ window.__tableauApiServiceRegistry = serviceRegistry;
+ };
+ return ApiServiceRegistry;
+ }());
+ exports.ApiServiceRegistry = ApiServiceRegistry;
+
+
+/***/ },
+/* 36 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var Contract = __webpack_require__(17);
+ var api_internal_contract_1 = __webpack_require__(27);
+ var GetDataModels_1 = __webpack_require__(14);
+ var GetDataService_1 = __webpack_require__(24);
+ var GetDataServiceImpl = (function () {
+ function GetDataServiceImpl(dispatcher) {
+ this._dispatcher = dispatcher;
+ }
+ Object.defineProperty(GetDataServiceImpl.prototype, "serviceName", {
+ get: function () {
+ return "get-data-service" /* GetData */;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ GetDataServiceImpl.prototype.getUnderlyingDataAsync = function (visualId, getType, ignoreAliases, ignoreSelection, includeAllColumns, maxRows) {
+ var _this = this;
+ // Create all of our parameters
+ var verb = getType === GetDataService_1.GetDataType.Summary ? api_internal_contract_1.VerbId.GetDataSummaryData : api_internal_contract_1.VerbId.GetUnderlyingData;
+ var parameters = {};
+ parameters[api_internal_contract_1.ParameterId.VisualId] = visualId;
+ parameters[api_internal_contract_1.ParameterId.IgnoreAliases] = ignoreAliases;
+ parameters[api_internal_contract_1.ParameterId.IgnoreSelection] = ignoreSelection;
+ parameters[api_internal_contract_1.ParameterId.IncludeAllColumns] = includeAllColumns;
+ parameters[api_internal_contract_1.ParameterId.MaxRows] = maxRows;
+ return this._dispatcher.execute(verb, parameters).then(function (response) {
+ var responseData = response.result;
+ return _this.processResultsTable(responseData.data, responseData.isSummary);
+ });
+ };
+ GetDataServiceImpl.prototype.getSelectedMarksAsync = function (visualId) {
+ var _this = this;
+ var parameters = (_a = {}, _a[api_internal_contract_1.ParameterId.VisualId] = visualId, _a);
+ return this._dispatcher.execute(api_internal_contract_1.VerbId.GetSelectedMarks, parameters).then(function (response) {
+ var responseData = response.result;
+ return {
+ data: responseData.data.map(function (table) { return _this.processResultsTable(table, true); })
+ };
+ });
+ var _a;
+ };
+ GetDataServiceImpl.prototype.getHighlightedMarksAsync = function (visualId) {
+ var _this = this;
+ var parameters = (_a = {}, _a[api_internal_contract_1.ParameterId.VisualId] = visualId, _a);
+ return this._dispatcher.execute(api_internal_contract_1.VerbId.GetHighlightedMarks, parameters).then(function (response) {
+ var responseData = response.result;
+ return {
+ data: responseData.data.map(function (table) { return _this.processResultsTable(table, true); })
+ };
+ });
+ var _a;
+ };
+ GetDataServiceImpl.prototype.getDataSourceDataAsync = function (dataSourceId, ignoreAliases, maxRows, columnsToInclude) {
+ var _this = this;
+ var parameters = (_a = {},
+ _a[api_internal_contract_1.ParameterId.DataSourceId] = dataSourceId,
+ _a[api_internal_contract_1.ParameterId.IgnoreAliases] = ignoreAliases,
+ _a[api_internal_contract_1.ParameterId.MaxRows] = maxRows,
+ _a[api_internal_contract_1.ParameterId.ColumnsToInclude] = columnsToInclude,
+ _a);
+ return this._dispatcher.execute(api_internal_contract_1.VerbId.GetDataSourceData, parameters).then(function (response) {
+ var responseData = response.result;
+ return _this.processResultsTable(responseData.data, false);
+ });
+ var _a;
+ };
+ GetDataServiceImpl.prototype.processResultsTable = function (responseData, isSummary) {
+ var headers = responseData.headers.map(function (h) { return new GetDataModels_1.Column(h.fieldCaption, Contract.DataType.String /*h.DataType*/, h.isReferenced, h.index); });
+ // TODO This should be controlled by a flag indicating whether this api will respond marks info or not
+ var marks;
+ if (responseData.marks) {
+ marks = responseData.marks.map(function (h) { return new GetDataModels_1.MarkInfo(h.type, h.color, h.tupleId); });
+ }
+ var table = responseData.dataTable.map(function (row) {
+ return row.map(function (cell) {
+ return new GetDataModels_1.DataValue(cell.value, cell.formattedValue);
+ });
+ });
+ if (marks) {
+ return new GetDataModels_1.DataTable(table, headers, table.length, isSummary, marks);
+ }
+ return new GetDataModels_1.DataTable(table, headers, table.length, isSummary);
+ };
+ return GetDataServiceImpl;
+ }());
+ exports.GetDataServiceImpl = GetDataServiceImpl;
+
+
+/***/ },
+/* 37 */
+/***/ function(module, exports) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var Registration = (function () {
+ function Registration(_filterFn, _callbackFn) {
+ this._filterFn = _filterFn;
+ this._callbackFn = _callbackFn;
+ // Nothing Here
+ }
+ Registration.prototype.onNotification = function (notificationModel) {
+ if (this._filterFn(notificationModel)) {
+ this._callbackFn(notificationModel);
+ }
+ };
+ return Registration;
+ }());
+ var NotificationServiceImpl = (function () {
+ function NotificationServiceImpl(dispatcher) {
+ this.dispatcher = dispatcher;
+ this._handlers = {};
+ this.dispatcher.registerNotificationHandler(this.onNotification.bind(this));
+ }
+ Object.defineProperty(NotificationServiceImpl.prototype, "serviceName", {
+ get: function () {
+ return "notification-service" /* Notification */;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ NotificationServiceImpl.prototype.registerHandler = function (id, filterFn, handler) {
+ var _this = this;
+ var handlers = this._handlers[id] || new Array();
+ var registration = new Registration(filterFn, handler);
+ handlers.push(registration);
+ this._handlers[id] = handlers;
+ return function () { return _this.removeRegistration(id, registration); };
+ };
+ NotificationServiceImpl.prototype.hasHandlersForNotificationType = function (id) {
+ return this._handlers.hasOwnProperty(id);
+ };
+ NotificationServiceImpl.prototype.onNotification = function (notification) {
+ if (!this.hasHandlersForNotificationType(notification.notificationId)) {
+ return;
+ }
+ // Go through and check for all the handlers of this particular notification
+ this._handlers[notification.notificationId].forEach(function (h) { return h.onNotification(notification.data); });
+ };
+ NotificationServiceImpl.prototype.removeRegistration = function (id, registration) {
+ if (!this.hasHandlersForNotificationType(id)) {
+ return;
+ }
+ this._handlers[id] = this._handlers[id].filter(function (reg) { return reg !== registration; });
+ };
+ return NotificationServiceImpl;
+ }());
+ exports.NotificationServiceImpl = NotificationServiceImpl;
+
+
+/***/ },
+/* 38 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var api_internal_contract_1 = __webpack_require__(27);
+ var ParameterImpl_1 = __webpack_require__(39);
+ var Parameter_1 = __webpack_require__(11);
+ var ParametersServiceImpl = (function () {
+ function ParametersServiceImpl(dispatcher) {
+ this.dispatcher = dispatcher;
+ }
+ Object.defineProperty(ParametersServiceImpl.prototype, "serviceName", {
+ get: function () {
+ return "parameters-service" /* Parameters */;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ ParametersServiceImpl.prototype.getParametersForSheetAsync = function (sheetPath, sheet) {
+ var parameters = (_a = {},
+ _a[api_internal_contract_1.ParameterId.SheetPath] = sheetPath,
+ _a);
+ return this.dispatcher.execute(api_internal_contract_1.VerbId.GetParametersForSheet, parameters).then(function (response) {
+ // TODO - Check for error
+ var result = response.result;
+ return result.map(function (parameterInfo) {
+ var impl = new ParameterImpl_1.ParameterImpl(parameterInfo);
+ return new Parameter_1.Parameter(impl, sheet);
+ });
+ });
+ var _a;
+ };
+ ParametersServiceImpl.prototype.changeParameterValueAsync = function (fieldName, newValue) {
+ var parameters = (_a = {},
+ _a[api_internal_contract_1.ParameterId.ParameterFieldName] = fieldName,
+ _a[api_internal_contract_1.ParameterId.ParameterValue] = newValue,
+ _a);
+ return this.dispatcher.execute(api_internal_contract_1.VerbId.ChangeParameterValue, parameters).then(function (response) {
+ var result = response.result;
+ return result;
+ });
+ var _a;
+ };
+ ParametersServiceImpl.prototype.findParameterByNameAsync = function (name, sheet) {
+ return this.findParameterAsync(sheet, name, undefined);
+ };
+ ParametersServiceImpl.prototype.findParameterByGlobalFieldNameAsync = function (fieldName, sheet) {
+ return this.findParameterAsync(sheet, undefined, fieldName);
+ };
+ ParametersServiceImpl.prototype.findParameterAsync = function (sheet, name, fieldName) {
+ var parameters = {};
+ if (name !== undefined) {
+ parameters[api_internal_contract_1.ParameterId.ParameterCaption] = name;
+ }
+ else if (fieldName !== undefined) {
+ parameters[api_internal_contract_1.ParameterId.ParameterFieldName] = fieldName;
+ }
+ else {
+ throw new Error('Missing require field name or caption');
+ }
+ return this.dispatcher.execute(api_internal_contract_1.VerbId.FindParameter, parameters).then(function (response) {
+ var instanceOfParameterInfo = function (object) {
+ return 'fieldName' in object;
+ };
+ // We need to check to see if we got a valid response back again
+ if (instanceOfParameterInfo(response.result)) {
+ var result = response.result;
+ var impl = new ParameterImpl_1.ParameterImpl(result);
+ return new Parameter_1.Parameter(impl, sheet);
+ }
+ else {
+ return undefined;
+ }
+ });
+ };
+ return ParametersServiceImpl;
+ }());
+ exports.ParametersServiceImpl = ParametersServiceImpl;
+
+
+/***/ },
+/* 39 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var Contract = __webpack_require__(17);
+ var api_internal_contract_1 = __webpack_require__(27);
+ var api_utils_1 = __webpack_require__(29);
+ var InternalToExternalEnumMappings_1 = __webpack_require__(33);
+ var ParameterChangedEvent_1 = __webpack_require__(40);
+ var GetDataModels_1 = __webpack_require__(14);
+ var ServiceRegistry_1 = __webpack_require__(35);
+ var SingleEventManagerImpl_1 = __webpack_require__(23);
+ var ParameterImpl = (function () {
+ function ParameterImpl(parameterInfo) {
+ this.setParameterInfo(parameterInfo);
+ }
+ Object.defineProperty(ParameterImpl.prototype, "name", {
+ get: function () {
+ return this._parameterInfo.name;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParameterImpl.prototype, "currentValue", {
+ get: function () {
+ return new GetDataModels_1.DataValue(this._parameterInfo.currentValue.value, this._parameterInfo.currentValue.formattedValue);
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParameterImpl.prototype, "dataType", {
+ get: function () {
+ return InternalToExternalEnumMappings_1.InternalToExternalEnumMappings.dataType.convert(this._parameterInfo.dataType);
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParameterImpl.prototype, "allowableValues", {
+ get: function () {
+ return this._allowableValues;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ ParameterImpl.prototype.changeValueAsync = function (newValue) {
+ var _this = this;
+ var coercedValue = api_utils_1.Param.serializeParamterValue(newValue);
+ var parametersService = ServiceRegistry_1.ApiServiceRegistry.instance.getService("parameters-service" /* Parameters */);
+ return parametersService.changeParameterValueAsync(this._globalFieldName, coercedValue).then(function (parameterInfo) {
+ _this.setParameterInfo(parameterInfo);
+ return _this.currentValue;
+ });
+ };
+ /**
+ * Helper method which goes through and registers each event type this impl knows about
+ * with the NotificationService. It returns an array of SingleEventManager objects which
+ * can then be passed to an EventListenerManager to handle user registration / unregistration.
+ *
+ * @param sheet The sheet object which will be included with the event notifications
+ * @returns {Array} Collection of event managers to pass to an EventListenerManager
+ */
+ ParameterImpl.prototype.initializeEvents = function (sheet) {
+ var _this = this;
+ var results = new Array();
+ var notificationService;
+ try {
+ notificationService = ServiceRegistry_1.ApiServiceRegistry.instance.getService("notification-service" /* Notification */);
+ }
+ catch (e) {
+ // If we don't have this service registered, just return
+ return results;
+ }
+ // Initialize all of the event managers we'll need (one for each event type)
+ var parameterEvent = new SingleEventManagerImpl_1.SingleEventManagerImpl(Contract.TableauEventType.ParameterChanged);
+ notificationService.registerHandler(api_internal_contract_1.NotificationId.ParameterChanged, function (model) {
+ var fieldName = model;
+ return fieldName === _this._globalFieldName;
+ }, function (fieldName) {
+ parameterEvent.triggerEvent(function () { return new ParameterChangedEvent_1.ParameterChangedEvent(fieldName, sheet); });
+ });
+ results.push(parameterEvent);
+ return results;
+ };
+ ParameterImpl.prototype.setParameterInfo = function (parameterInfo) {
+ this._parameterInfo = parameterInfo;
+ this._globalFieldName = parameterInfo.fieldName;
+ var type = InternalToExternalEnumMappings_1.InternalToExternalEnumMappings.allowableValues.convert(parameterInfo.allowableValuesType);
+ var listValues;
+ var minValue;
+ var maxValue;
+ var stepSize;
+ var dateStepPeriod;
+ if (type === Contract.ParameterValueType.List) {
+ var values = parameterInfo.allowableValues || [];
+ listValues = values.map(function (val) { return new GetDataModels_1.DataValue(val.value, val.formattedValue); });
+ }
+ else if (type === Contract.ParameterValueType.Range) {
+ minValue = parameterInfo.minValue && new GetDataModels_1.DataValue(parameterInfo.minValue.value, parameterInfo.minValue.formattedValue);
+ maxValue = parameterInfo.maxValue && new GetDataModels_1.DataValue(parameterInfo.maxValue.value, parameterInfo.maxValue.formattedValue);
+ stepSize = parameterInfo.stepSize;
+ dateStepPeriod = parameterInfo.dateStepPeriod &&
+ InternalToExternalEnumMappings_1.InternalToExternalEnumMappings.dateStepPeriod.convert(parameterInfo.dateStepPeriod);
+ }
+ this._allowableValues = {
+ type: type,
+ allowableValues: listValues,
+ minValue: minValue,
+ maxValue: maxValue,
+ stepSize: stepSize,
+ dateStepPeriod: dateStepPeriod
+ };
+ };
+ return ParameterImpl;
+ }());
+ exports.ParameterImpl = ParameterImpl;
+
+
+/***/ },
+/* 40 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || (function () {
+ var extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+ return function (d, b) {
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var Contract = __webpack_require__(17);
+ var ServiceRegistry_1 = __webpack_require__(35);
+ var TableauSheetEvent_1 = __webpack_require__(20);
+ var ParameterChangedEvent = (function (_super) {
+ __extends(ParameterChangedEvent, _super);
+ function ParameterChangedEvent(_globalFieldName, sheet) {
+ var _this = _super.call(this, Contract.TableauEventType.ParameterChanged, sheet) || this;
+ _this._globalFieldName = _globalFieldName;
+ return _this;
+ }
+ ParameterChangedEvent.prototype.getParameterAsync = function () {
+ // Call down to our service to get the parameter back via its field name
+ var service = ServiceRegistry_1.ApiServiceRegistry.instance.getService("parameters-service" /* Parameters */);
+ return service.findParameterByGlobalFieldNameAsync(this._globalFieldName, this.sheet).then(function (parameter) {
+ if (parameter === undefined) {
+ throw new Error('Unable to find parameter');
+ }
+ return parameter;
+ });
+ };
+ return ParameterChangedEvent;
+ }(TableauSheetEvent_1.TableauSheetEvent));
+ exports.ParameterChangedEvent = ParameterChangedEvent;
+
+
+/***/ },
+/* 41 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var Contract = __webpack_require__(17);
+ var api_internal_contract_1 = __webpack_require__(27);
+ var SelectionModels_1 = __webpack_require__(42);
+ var SelectionServiceImpl = (function () {
+ function SelectionServiceImpl(dispatcher) {
+ this._dispatcher = dispatcher;
+ }
+ Object.defineProperty(SelectionServiceImpl.prototype, "serviceName", {
+ get: function () {
+ return "selection-service" /* Selection */;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * Method to clear all the selected marks for the given worksheet.
+ *
+ * @param visualId
+ */
+ SelectionServiceImpl.prototype.clearSelectedMarksAsync = function (visualId) {
+ var parameters = (_a = {}, _a[api_internal_contract_1.ParameterId.VisualId] = visualId, _a);
+ return this._dispatcher.execute(api_internal_contract_1.VerbId.ClearSelectedMarks, parameters).then(function (response) {
+ return; // Expecting an empty model and hence the void response.
+ });
+ var _a;
+ };
+ /**
+ * Method to select marks for the given worksheet.
+ *
+ * @param visualId
+ * @param selectionCriteria
+ * @param selectionUpdateType
+ */
+ SelectionServiceImpl.prototype.selectMarksByValueAsync = function (visualId, selectionCriterias, selectionUpdateType) {
+ if (selectionCriterias.length === 0) {
+ throw new Error('Invalid selection criteria. Selections missing.');
+ }
+ var selectionType = this.validateSelectionUpdateType(selectionUpdateType);
+ var selectionCriteriaType = this.validateSelectionCriteria(selectionCriterias[0]);
+ var selectionModelContainer = this.parseSelectionMarks(selectionCriterias, selectionCriteriaType);
+ var parameters = (_a = {},
+ _a[api_internal_contract_1.ParameterId.VisualId] = visualId,
+ _a[api_internal_contract_1.ParameterId.SelectionUpdateType] = selectionType,
+ _a);
+ switch (selectionCriteriaType) {
+ case SelectionCriteriaType.HierarchicalType: {
+ parameters[api_internal_contract_1.ParameterId.HierValSelectionModels] = selectionModelContainer.hierModelArr;
+ break;
+ }
+ case SelectionCriteriaType.RangeType: {
+ parameters[api_internal_contract_1.ParameterId.QuantRangeSelectionModels] = selectionModelContainer.quantModelArr;
+ break;
+ }
+ case SelectionCriteriaType.DimensionType: {
+ parameters[api_internal_contract_1.ParameterId.DimValSelectionModels] = selectionModelContainer.dimModelArr;
+ break;
+ }
+ default:
+ break;
+ }
+ return this._dispatcher.execute(api_internal_contract_1.VerbId.SelectByValue, parameters).then(function (response) {
+ // Expecting an empty model and hence the void response.
+ return;
+ // TODO Investigate the error response with multiple output params and throw error accordingly.
+ });
+ var _a;
+ };
+ /**
+ * Method to select marks for the given worksheet.
+ *
+ * @param visualId
+ * @param MarkInfo
+ * @param selectionUpdateType
+ */
+ SelectionServiceImpl.prototype.selectMarksByIdAsync = function (visualId, marks, selectionUpdateType) {
+ if (marks.length === 0) {
+ throw new Error('Invalid selection. Marks info missing.');
+ }
+ var selectionType = this.validateSelectionUpdateType(selectionUpdateType);
+ var selectionModelContainer = this.parseSelectionIds(marks);
+ var parameters = (_a = {},
+ _a[api_internal_contract_1.ParameterId.VisualId] = visualId,
+ _a[api_internal_contract_1.ParameterId.SelectionUpdateType] = selectionType,
+ _a[api_internal_contract_1.ParameterId.Selection] = selectionModelContainer.selection,
+ _a);
+ return this._dispatcher.execute(api_internal_contract_1.VerbId.SelectByValue, parameters).then(function (response) {
+ // Expecting an empty model and hence the void response.
+ return;
+ // TODO Investigate the error response with multiple output params and throw error accordingly.
+ });
+ var _a;
+ };
+ /**
+ * Method to prepare the pres models for selection by MarksInfo
+ * @param marks
+ */
+ SelectionServiceImpl.prototype.parseSelectionIds = function (marks) {
+ var ids = [];
+ var selectionModelContainer = new SelectionModels_1.SelectionModelsContainer();
+ for (var i = 0; i < marks.length; i++) {
+ var tupleId = marks[i].tupleId;
+ if (tupleId !== undefined && tupleId !== null) {
+ ids.push(tupleId.toString()); // collect the tuple ids
+ }
+ else {
+ throw new Error('Invalid tupleId provided.');
+ }
+ }
+ if (ids.length !== 0) {
+ var tupleSelectionModel = new SelectionModels_1.TupleSelectionModel();
+ tupleSelectionModel.selectionType = 'tuples';
+ tupleSelectionModel.objectIds = ids;
+ selectionModelContainer.selection = tupleSelectionModel;
+ }
+ return selectionModelContainer;
+ };
+ /**
+ * Method to prepare the pres models for selection by values.
+ *
+ * Supports 3 types for selection:
+ * 1) hierarchical value based selection
+ * 2) range value based selection
+ * 3) Dimension value based selection
+ *
+ * @param marks
+ * @param hierModelArr
+ * @param dimModelArr
+ * @param quantModelArr
+ * @param selection
+ */
+ SelectionServiceImpl.prototype.parseSelectionMarks = function (selectionCriterias, selectionType) {
+ var selectionModelContainer = new SelectionModels_1.SelectionModelsContainer();
+ var mixedSelectionsError = false;
+ for (var i = 0; i < selectionCriterias.length; i++) {
+ var st = selectionCriterias[i];
+ if (st.fieldName && (st.value !== undefined && st.value !== null)) {
+ var catRegex = new RegExp('(\[[A-Za-z0-9]+]).*', 'g');
+ var rangeOption = st.value;
+ if (catRegex.test(st.fieldName)) {
+ if (selectionType === SelectionCriteriaType.HierarchicalType) {
+ var hierModel = this.addToParamsList(st.fieldName, st.value);
+ selectionModelContainer.hierModelArr.push(hierModel);
+ }
+ else {
+ mixedSelectionsError = true;
+ break;
+ }
+ }
+ else if (rangeOption.min !== undefined
+ && rangeOption.max !== undefined) {
+ if (selectionType === SelectionCriteriaType.RangeType) {
+ var quantModel = this.addToRangeParamsList(st.fieldName, rangeOption);
+ selectionModelContainer.quantModelArr.push(quantModel);
+ }
+ else {
+ mixedSelectionsError = true;
+ break;
+ }
+ }
+ else {
+ if (selectionType === SelectionCriteriaType.DimensionType) {
+ var dimModel = this.addToParamsList(st.fieldName, st.value);
+ selectionModelContainer.dimModelArr.push(dimModel);
+ }
+ else {
+ mixedSelectionsError = true;
+ break;
+ }
+ }
+ }
+ }
+ if (mixedSelectionsError) {
+ throw new Error('Different types of selection criterias provided.');
+ }
+ return selectionModelContainer;
+ };
+ /**
+ *
+ * @param selectionCriterias Validate and determine the selection criterias type.
+ */
+ SelectionServiceImpl.prototype.validateSelectionCriteria = function (selectionCriteria) {
+ var selectionType;
+ // Determine the type of selection, this command is by looking at the first selection
+ var crit = selectionCriteria;
+ var catRegex = new RegExp('(\[[A-Za-z0-9]+]).*', 'g');
+ var rangeOption = crit.value;
+ if (crit.fieldName && (crit.value !== undefined && crit.value !== null)) {
+ if (catRegex.test(crit.fieldName)) {
+ selectionType = SelectionCriteriaType.HierarchicalType;
+ }
+ else if (rangeOption.min !== undefined
+ && rangeOption.max !== undefined) {
+ selectionType = SelectionCriteriaType.RangeType;
+ }
+ else {
+ selectionType = SelectionCriteriaType.DimensionType;
+ }
+ }
+ else {
+ throw new Error('Invalid selection criteria format.');
+ }
+ return selectionType;
+ };
+ /**
+ * Method to transform the key value pair into value based pres model object.
+ *
+ * @param valueSelectionModel
+ * @param fieldName
+ * @param value
+ */
+ SelectionServiceImpl.prototype.addToParamsList = function (fieldName, value) {
+ var valueSelectionModel = new SelectionModels_1.ValueSelectionModel();
+ var markValues = [];
+ if (value instanceof Array) {
+ var valueArr = value;
+ for (var i = 0; i < valueArr.length; i++) {
+ markValues.push(valueArr[i].toString());
+ }
+ }
+ else {
+ markValues.push(value.toString());
+ }
+ valueSelectionModel.qualifiedFieldCaption = fieldName;
+ valueSelectionModel.selectValues = markValues;
+ return valueSelectionModel;
+ };
+ /**
+ * Method to transform the key value pair into range based selection pres model.
+ *
+ * TODO: Need to handle the parsing of date type values.
+ *
+ * @param valueSelectionModel
+ * @param fieldName
+ * @param value
+ */
+ SelectionServiceImpl.prototype.addToRangeParamsList = function (fieldName, value) {
+ var rangeSelectionModel = new SelectionModels_1.RangeSelectionModel();
+ rangeSelectionModel.qualifiedFieldCaption = fieldName;
+ if (value.max !== undefined && value.max !== null) {
+ rangeSelectionModel.maxValue = value.max.toString();
+ }
+ if (value.min !== undefined && value.min !== null) {
+ rangeSelectionModel.minValue = value.min.toString();
+ }
+ rangeSelectionModel.included = this.validateNullOptionType(value.nullOption);
+ return rangeSelectionModel;
+ };
+ /**
+ * Method to validate the selection update type.
+ *
+ * @param selectionUpdateType
+ */
+ SelectionServiceImpl.prototype.validateSelectionUpdateType = function (selectionUpdateType) {
+ if (selectionUpdateType === Contract.SelectionUpdateType.Replace) {
+ return api_internal_contract_1.SelectionUpdateType.Replace;
+ }
+ else if (selectionUpdateType === Contract.SelectionUpdateType.Add) {
+ return api_internal_contract_1.SelectionUpdateType.Add;
+ }
+ else if (selectionUpdateType === Contract.SelectionUpdateType.Remove) {
+ return api_internal_contract_1.SelectionUpdateType.Remove;
+ }
+ return api_internal_contract_1.SelectionUpdateType.Replace;
+ };
+ /**
+ * Method to validate the include type for range selection.
+ *
+ * @param nullOption
+ */
+ SelectionServiceImpl.prototype.validateNullOptionType = function (nullOption) {
+ if (nullOption) {
+ if (nullOption === Contract.FilterNullOption.NullValues) {
+ return api_internal_contract_1.QuantitativeIncludedValues.IncludeNull;
+ }
+ else if (nullOption === Contract.FilterNullOption.NonNullValues) {
+ return api_internal_contract_1.QuantitativeIncludedValues.IncludeNonNull;
+ }
+ else if (nullOption === Contract.FilterNullOption.AllValues) {
+ return api_internal_contract_1.QuantitativeIncludedValues.IncludeAll;
+ }
+ }
+ return api_internal_contract_1.QuantitativeIncludedValues.IncludeAll;
+ };
+ return SelectionServiceImpl;
+ }());
+ exports.SelectionServiceImpl = SelectionServiceImpl;
+ /**
+ * Enum for the different selection criteria types.
+ */
+ var SelectionCriteriaType;
+ (function (SelectionCriteriaType) {
+ SelectionCriteriaType[SelectionCriteriaType["HierarchicalType"] = 1] = "HierarchicalType";
+ SelectionCriteriaType[SelectionCriteriaType["RangeType"] = 2] = "RangeType";
+ SelectionCriteriaType[SelectionCriteriaType["DimensionType"] = 3] = "DimensionType";
+ SelectionCriteriaType[SelectionCriteriaType["TuplesType"] = 4] = "TuplesType";
+ })(SelectionCriteriaType || (SelectionCriteriaType = {}));
+
+
+/***/ },
+/* 42 */
+/***/ function(module, exports) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || (function () {
+ var extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+ return function (d, b) {
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(exports, "__esModule", { value: true });
+ /**
+ * Selection Model.
+ */
+ var SelectionModel = (function () {
+ function SelectionModel() {
+ }
+ return SelectionModel;
+ }());
+ exports.SelectionModel = SelectionModel;
+ /**
+ * Value based selection model. Meant for hierarchical, range and categorical selections.
+ */
+ var ValueSelectionModel = (function (_super) {
+ __extends(ValueSelectionModel, _super);
+ function ValueSelectionModel() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.selectValues = [];
+ return _this;
+ }
+ return ValueSelectionModel;
+ }(SelectionModel));
+ exports.ValueSelectionModel = ValueSelectionModel;
+ /**
+ * Hierarchical value selection model
+ */
+ var HierarchicalSelectionModel = (function (_super) {
+ __extends(HierarchicalSelectionModel, _super);
+ function HierarchicalSelectionModel() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ return HierarchicalSelectionModel;
+ }(ValueSelectionModel));
+ exports.HierarchicalSelectionModel = HierarchicalSelectionModel;
+ /**
+ * Range based value selection model
+ */
+ var RangeSelectionModel = (function (_super) {
+ __extends(RangeSelectionModel, _super);
+ function RangeSelectionModel() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ return RangeSelectionModel;
+ }(SelectionModel));
+ exports.RangeSelectionModel = RangeSelectionModel;
+ /**
+ * Dimension value selection model
+ */
+ var DimensionSelectionModel = (function (_super) {
+ __extends(DimensionSelectionModel, _super);
+ function DimensionSelectionModel() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ return DimensionSelectionModel;
+ }(ValueSelectionModel));
+ exports.DimensionSelectionModel = DimensionSelectionModel;
+ /**
+ * Tuple based selection model
+ */
+ var TupleSelectionModel = (function () {
+ function TupleSelectionModel() {
+ this.objectIds = [];
+ }
+ return TupleSelectionModel;
+ }());
+ exports.TupleSelectionModel = TupleSelectionModel;
+ /**
+ * Container class to populate all the selection models when parsing input
+ */
+ var SelectionModelsContainer = (function () {
+ function SelectionModelsContainer() {
+ this.hierModelArr = [];
+ this.dimModelArr = [];
+ this.quantModelArr = [];
+ }
+ return SelectionModelsContainer;
+ }());
+ exports.SelectionModelsContainer = SelectionModelsContainer;
+
+
+/***/ },
+/* 43 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || (function () {
+ var extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+ return function (d, b) {
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var Sheet_1 = __webpack_require__(44);
+ var Dashboard = (function (_super) {
+ __extends(Dashboard, _super);
+ function Dashboard(_dashboardImpl) {
+ var _this = _super.call(this, _dashboardImpl) || this;
+ _this._dashboardImpl = _dashboardImpl;
+ _dashboardImpl.initializeWithPublicInterfaces(_this);
+ return _this;
+ }
+ Object.defineProperty(Dashboard.prototype, "worksheets", {
+ get: function () {
+ return this._dashboardImpl.worksheets;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Dashboard.prototype, "objects", {
+ get: function () {
+ return this._dashboardImpl.objects;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ return Dashboard;
+ }(Sheet_1.Sheet));
+ exports.Dashboard = Dashboard;
+
+
+/***/ },
+/* 44 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || (function () {
+ var extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+ return function (d, b) {
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var api_shared_1 = __webpack_require__(9);
+ var Sheet = (function (_super) {
+ __extends(Sheet, _super);
+ function Sheet(_sheetImpl) {
+ var _this = _super.call(this) || this;
+ _this._sheetImpl = _sheetImpl;
+ return _this;
+ }
+ Object.defineProperty(Sheet.prototype, "name", {
+ get: function () {
+ return this._sheetImpl.name;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Sheet.prototype, "sheetType", {
+ get: function () {
+ return this._sheetImpl.sheetType;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Sheet.prototype, "size", {
+ get: function () {
+ return this._sheetImpl.size;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Sheet.prototype.findParameterAsync = function (parameterName) {
+ return this._sheetImpl.findParameterAsync(parameterName, this);
+ };
+ Sheet.prototype.getParametersAsync = function () {
+ return this._sheetImpl.getParametersAsync(this);
+ };
+ return Sheet;
+ }(api_shared_1.EventListenerManager));
+ exports.Sheet = Sheet;
+
+
+/***/ },
+/* 45 */
+/***/ function(module, exports) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ /**
+ * Implementation of the external DashboardContent namespace.
+ * This does not follow the Impl pattern as DashboardContent is
+ * currently just a (single) property bag.
+ */
+ var DashboardContent = (function () {
+ function DashboardContent(_dashboard) {
+ this._dashboard = _dashboard;
+ }
+ Object.defineProperty(DashboardContent.prototype, "dashboard", {
+ get: function () {
+ return this._dashboard;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ return DashboardContent;
+ }());
+ exports.DashboardContent = DashboardContent;
+
+
+/***/ },
+/* 46 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var api_shared_1 = __webpack_require__(9);
+ /**
+ * Implementation of the external environment namespace.
+ * Environment does not follow the Impl pattern as it is
+ * just a property bag.
+ */
+ var Environment = (function () {
+ function Environment(extensionEnvironment) {
+ this._apiVersion = extensionEnvironment.apiVersion;
+ this._context = api_shared_1.InternalToExternalEnumMappings.extensionContext.convert(extensionEnvironment.extensionContext);
+ this._language = extensionEnvironment.extensionLanguage;
+ this._locale = extensionEnvironment.extensionLocale;
+ this._mode = api_shared_1.InternalToExternalEnumMappings.extensionMode.convert(extensionEnvironment.extensionMode);
+ this._operatingSystem = extensionEnvironment.operatingSystem;
+ this._tableauVersion = extensionEnvironment.tableauVersion;
+ }
+ Object.defineProperty(Environment.prototype, "apiVersion", {
+ get: function () {
+ return this._apiVersion;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Environment.prototype, "context", {
+ get: function () {
+ return this._context;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Environment.prototype, "language", {
+ get: function () {
+ return this._language;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Environment.prototype, "locale", {
+ get: function () {
+ return this._locale;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Environment.prototype, "mode", {
+ get: function () {
+ return this._mode;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Environment.prototype, "operatingSystem", {
+ get: function () {
+ return this._operatingSystem;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Environment.prototype, "tableauVersion", {
+ get: function () {
+ return this._tableauVersion;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ return Environment;
+ }());
+ exports.Environment = Environment;
+
+
+/***/ },
+/* 47 */
+/***/ function(module, exports) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ /**
+ * Implementation of the external settings namespace.
+ */
+ var Settings = (function () {
+ function Settings(settingsImpl) {
+ this.settingsImpl = settingsImpl;
+ }
+ Settings.prototype.erase = function (key) {
+ this.settingsImpl.erase(key);
+ };
+ Settings.prototype.get = function (key) {
+ return this.settingsImpl.get(key);
+ };
+ Settings.prototype.getAll = function () {
+ return this.settingsImpl.getAll();
+ };
+ Object.defineProperty(Settings.prototype, "isModified", {
+ get: function () {
+ return this.settingsImpl.isModified;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Settings.prototype.saveAsync = function () {
+ return this.settingsImpl.saveAsync();
+ };
+ Settings.prototype.set = function (key, value) {
+ this.settingsImpl.set(key, value);
+ };
+ return Settings;
+ }());
+ exports.Settings = Settings;
+
+
+/***/ },
+/* 48 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var api_shared_1 = __webpack_require__(9);
+ var InitializationServiceImpl_1 = __webpack_require__(49);
+ var SettingsServiceImpl_1 = __webpack_require__(50);
+ function registerAllExtensionsServices(dispatcher) {
+ api_shared_1.ApiServiceRegistry.instance.registerService(new InitializationServiceImpl_1.InitializationServiceImpl(dispatcher));
+ api_shared_1.ApiServiceRegistry.instance.registerService(new SettingsServiceImpl_1.SettingsServiceImpl(dispatcher));
+ }
+ exports.registerAllExtensionsServices = registerAllExtensionsServices;
+
+
+/***/ },
+/* 49 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var api_internal_contract_1 = __webpack_require__(3);
+ var InitializationServiceImpl = (function () {
+ function InitializationServiceImpl(dispatcher) {
+ this.dispatcher = dispatcher;
+ }
+ Object.defineProperty(InitializationServiceImpl.prototype, "serviceName", {
+ get: function () {
+ return "InitializationService" /* InitializationService */;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ InitializationServiceImpl.prototype.initializeDashboardExtensionsAsync = function () {
+ // We don't need any parameters for this call because they are added in for us by the dispatcher
+ return this.dispatcher.execute(api_internal_contract_1.VerbId.InitializeExtension, {}).then(function (response) {
+ // TODO - Validate return value
+ var result = response.result;
+ return result;
+ });
+ };
+ return InitializationServiceImpl;
+ }());
+ exports.InitializationServiceImpl = InitializationServiceImpl;
+
+
+/***/ },
+/* 50 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var api_internal_contract_1 = __webpack_require__(3);
+ var SettingsServiceImpl = (function () {
+ function SettingsServiceImpl(dispatcher) {
+ this.dispatcher = dispatcher;
+ }
+ Object.defineProperty(SettingsServiceImpl.prototype, "serviceName", {
+ get: function () {
+ return "SettingsService" /* SettingsService */;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ SettingsServiceImpl.prototype.saveSettingsAsync = function (settings) {
+ var parameters = (_a = {}, _a[api_internal_contract_1.ParameterId.SettingsValues] = settings, _a);
+ return this.dispatcher.execute(api_internal_contract_1.VerbId.SaveExtensionSettings, parameters).then(function (value) {
+ var result = value.result;
+ if (!result || !result.settingsValues) {
+ throw new Error('Internal error saving settings.');
+ }
+ return (result.settingsValues);
+ });
+ var _a;
+ };
+ return SettingsServiceImpl;
+ }());
+ exports.SettingsServiceImpl = SettingsServiceImpl;
+
+
+/***/ },
+/* 51 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ /**
+ * Represents the current version of the extensions library
+ */
+ var VersionNumber = (function () {
+ // private constructor so everyone uses the singleton instance
+ function VersionNumber(versionString) {
+ var parts = versionString.split('.').map(function (p) { return parseInt(p, 10); });
+ if (parts.length !== 3) {
+ throw new Error('Invalid version number: ' + versionString);
+ }
+ this._major = parts[0];
+ this._minor = parts[1];
+ this._fix = parts[2];
+ }
+ Object.defineProperty(VersionNumber, "Instance", {
+ /**
+ * Gets the singleton instance of the version number.
+ */
+ get: function () {
+ return VersionNumber._instance;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(VersionNumber.prototype, "major", {
+ get: function () {
+ return this._major;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(VersionNumber.prototype, "minor", {
+ get: function () {
+ return this._minor;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(VersionNumber.prototype, "fix", {
+ get: function () {
+ return this._fix;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ // Using some webpack tricks, we can inject this version into our code (kinda like c++ preprocessor stuff)
+ VersionNumber._instance = new VersionNumber(("0.6.0"));
+ return VersionNumber;
+ }());
+ exports.VersionNumber = VersionNumber;
+
+
+/***/ },
+/* 52 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || (function () {
+ var extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+ return function (d, b) {
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var Contract = __webpack_require__(53);
+ var api_internal_contract_1 = __webpack_require__(3);
+ var api_shared_1 = __webpack_require__(9);
+ var DashboardObject_1 = __webpack_require__(54);
+ var Worksheet_1 = __webpack_require__(55);
+ var SheetImpl_1 = __webpack_require__(56);
+ var SheetInfoImpl_1 = __webpack_require__(57);
+ var WorksheetImpl_1 = __webpack_require__(58);
+ var DashboardImpl = (function (_super) {
+ __extends(DashboardImpl, _super);
+ function DashboardImpl(_info, _sheetPath) {
+ var _this = _super.call(this, new SheetInfoImpl_1.SheetInfoImpl(_info.name, Contract.SheetType.Dashboard, new api_shared_1.Size(_info.size.h, _info.size.w))) || this;
+ _this._info = _info;
+ _this._sheetPath = _sheetPath;
+ return _this;
+ }
+ Object.defineProperty(DashboardImpl.prototype, "worksheets", {
+ get: function () {
+ return this._worksheets;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DashboardImpl.prototype, "objects", {
+ get: function () {
+ return this._objects;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ DashboardImpl.prototype.initializeWithPublicInterfaces = function (dashboard) {
+ this._worksheets = new Array();
+ this._objects = new Array();
+ // Process all the zones which are contained in this dashboard
+ for (var _i = 0, _a = this._info.zones; _i < _a.length; _i++) {
+ var zone = _a[_i];
+ var worksheet = undefined;
+ var zoneSize = new api_shared_1.Size(zone.height, zone.width);
+ if (zone.zoneType === api_internal_contract_1.DashboardObjectType.Worksheet) {
+ var sheetInfo = new SheetInfoImpl_1.SheetInfoImpl(zone.name, Contract.SheetType.Worksheet, zoneSize);
+ var vizId = {
+ worksheet: zone.name,
+ dashboard: this._info.name,
+ storyboard: this._sheetPath.storyboard,
+ flipboardZoneID: this._sheetPath.flipboardZoneID,
+ storyPointID: this._sheetPath.storyPointID
+ };
+ var worksheetImpl = new WorksheetImpl_1.WorksheetImpl(sheetInfo, vizId, dashboard);
+ worksheet = new Worksheet_1.Worksheet(worksheetImpl);
+ this._worksheets.push(worksheet);
+ }
+ var zonePoint = new api_shared_1.Point(zone.x, zone.y);
+ var dashboardObject = new DashboardObject_1.DashboardObject(dashboard, api_shared_1.InternalToExternalEnumMappings.dashboardObjectType.convert(zone.zoneType), zonePoint, zoneSize, worksheet);
+ this._objects.push(dashboardObject);
+ }
+ };
+ return DashboardImpl;
+ }(SheetImpl_1.SheetImpl));
+ exports.DashboardImpl = DashboardImpl;
+
+
+/***/ },
+/* 53 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ /**
+ * This is your main. This is where you re-export everything you want to be publicly available.
+ *
+ * The build enforces that the file has the same name as the global variable that is exported.
+ */
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ Object.defineProperty(exports, "__esModule", { value: true });
+ __export(__webpack_require__(18));
+
+
+/***/ },
+/* 54 */
+/***/ function(module, exports) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ /**
+ * Implementation of the dashboard objects - the zones in a dashboard.
+ * This does not follow the Impl pattern as it is just a property bag.
+ */
+ var DashboardObject = (function () {
+ function DashboardObject(_dashboard, _type, _position, _size, _worksheet) {
+ this._dashboard = _dashboard;
+ this._type = _type;
+ this._position = _position;
+ this._size = _size;
+ this._worksheet = _worksheet;
+ }
+ Object.defineProperty(DashboardObject.prototype, "dashboard", {
+ get: function () {
+ return this._dashboard;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DashboardObject.prototype, "type", {
+ get: function () {
+ return this._type;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DashboardObject.prototype, "position", {
+ get: function () {
+ return this._position;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DashboardObject.prototype, "size", {
+ get: function () {
+ return this._size;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DashboardObject.prototype, "worksheet", {
+ get: function () {
+ return this._worksheet;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ return DashboardObject;
+ }());
+ exports.DashboardObject = DashboardObject;
+
+
+/***/ },
+/* 55 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || (function () {
+ var extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+ return function (d, b) {
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var Sheet_1 = __webpack_require__(44);
+ var Worksheet = (function (_super) {
+ __extends(Worksheet, _super);
+ function Worksheet(_worksheetImpl) {
+ var _this = _super.call(this, _worksheetImpl) || this;
+ _this._worksheetImpl = _worksheetImpl;
+ // Call to initialize events and then call down to the event listener manager to handle things
+ _this._worksheetImpl.initializeEvents(_this).forEach(function (e) { return _this.addNewEventType(e); });
+ return _this;
+ }
+ Object.defineProperty(Worksheet.prototype, "parentDashboard", {
+ get: function () {
+ return this._worksheetImpl.parentDashboard;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Worksheet.prototype.applyFilterAsync = function (fieldName, values, updateType, options) {
+ return this._worksheetImpl.applyFilterAsync(fieldName, values, updateType, options);
+ };
+ Worksheet.prototype.applyRangeFilterAsync = function (fieldName, filterOptions) {
+ return this._worksheetImpl.applyRangeFilterAsync(fieldName, filterOptions);
+ };
+ Worksheet.prototype.clearFilterAsync = function (fieldName) {
+ return this._worksheetImpl.clearFilterAsync(fieldName);
+ };
+ Worksheet.prototype.getAnalyticObjectsAsync = function () {
+ throw new Error('API call not yet implemented.');
+ };
+ Worksheet.prototype.getDataSourcesAsync = function () {
+ return this._worksheetImpl.getDataSourcesAsync();
+ };
+ Worksheet.prototype.getEncodingsAsync = function () {
+ throw new Error('API call not yet implemented.');
+ };
+ Worksheet.prototype.getFiltersAsync = function () {
+ return this._worksheetImpl.getFiltersAsync();
+ };
+ Worksheet.prototype.getSelectedMarksAsync = function () {
+ return this._worksheetImpl.getSelectedMarksAsync();
+ };
+ Worksheet.prototype.getHighlightedMarksAsync = function () {
+ return this._worksheetImpl.getHighlightedMarksAsync();
+ };
+ Worksheet.prototype.getSummaryDataAsync = function (options) {
+ return this._worksheetImpl.getSummaryDataAsync(options);
+ };
+ Worksheet.prototype.getUnderlyingDataAsync = function (options) {
+ return this._worksheetImpl.getUnderlyingDataAsync(options);
+ };
+ Worksheet.prototype.clearSelectedMarksAsync = function () {
+ return this._worksheetImpl.clearSelectedMarksAsync();
+ };
+ Worksheet.prototype.selectMarksByIDAsync = function (marksInfo, updateType) {
+ throw new Error('API call not yet implemented.');
+ };
+ Worksheet.prototype.selectMarksByValueAsync = function (selections, selectionUpdateType) {
+ return this._worksheetImpl.selectMarksByValueAsync(selections, selectionUpdateType);
+ };
+ Worksheet.prototype.selectMarksByIdAsync = function (selections, selectionUpdateType) {
+ return this._worksheetImpl.selectMarksByIdAsync(selections, selectionUpdateType);
+ };
+ return Worksheet;
+ }(Sheet_1.Sheet));
+ exports.Worksheet = Worksheet;
+
+
+/***/ },
+/* 56 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var api_shared_1 = __webpack_require__(9);
+ var SheetImpl = (function () {
+ function SheetImpl(_sheetInfoImpl) {
+ this._sheetInfoImpl = _sheetInfoImpl;
+ }
+ Object.defineProperty(SheetImpl.prototype, "name", {
+ get: function () {
+ return this._sheetInfoImpl.name;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(SheetImpl.prototype, "sheetType", {
+ get: function () {
+ return this._sheetInfoImpl.sheetType;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(SheetImpl.prototype, "sheetPath", {
+ get: function () {
+ return this._sheetInfoImpl.sheetPath;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(SheetImpl.prototype, "size", {
+ get: function () {
+ return this._sheetInfoImpl.sheetSize;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ SheetImpl.prototype.findParameterAsync = function (parameterName, sheet) {
+ var service = api_shared_1.ApiServiceRegistry.instance.getService("parameters-service" /* Parameters */);
+ return service.findParameterByNameAsync(parameterName, sheet);
+ };
+ SheetImpl.prototype.getParametersAsync = function (sheet) {
+ var service = api_shared_1.ApiServiceRegistry.instance.getService("parameters-service" /* Parameters */);
+ return service.getParametersForSheetAsync(this.sheetPath, sheet);
+ };
+ return SheetImpl;
+ }());
+ exports.SheetImpl = SheetImpl;
+
+
+/***/ },
+/* 57 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var api_external_contract_1 = __webpack_require__(53);
+ var SheetInfoImpl = (function () {
+ function SheetInfoImpl(_name, _sheetType, _sheetSize) {
+ this._name = _name;
+ this._sheetType = _sheetType;
+ this._sheetSize = _sheetSize;
+ }
+ Object.defineProperty(SheetInfoImpl.prototype, "name", {
+ get: function () {
+ return this._name;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(SheetInfoImpl.prototype, "sheetSize", {
+ get: function () {
+ return this._sheetSize;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(SheetInfoImpl.prototype, "sheetType", {
+ get: function () {
+ return this._sheetType;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(SheetInfoImpl.prototype, "sheetPath", {
+ get: function () {
+ return {
+ sheetName: this.name,
+ isDashboard: this.sheetType === api_external_contract_1.SheetType.Dashboard
+ // TODO - Stories
+ };
+ },
+ enumerable: true,
+ configurable: true
+ });
+ return SheetInfoImpl;
+ }());
+ exports.SheetInfoImpl = SheetInfoImpl;
+
+
+/***/ },
+/* 58 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || (function () {
+ var extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+ return function (d, b) {
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var Contract = __webpack_require__(53);
+ var api_internal_contract_1 = __webpack_require__(3);
+ var api_shared_1 = __webpack_require__(9);
+ var DataSource_1 = __webpack_require__(59);
+ var DataSourceImpl_1 = __webpack_require__(60);
+ var SheetImpl_1 = __webpack_require__(56);
+ var visualIdsAreEqual = function (a, b) {
+ return a && b &&
+ a.worksheet === b.worksheet &&
+ a.dashboard === b.dashboard &&
+ a.storyboard === b.storyboard &&
+ a.storyPointID === b.storyPointID &&
+ a.flipboardZoneID === b.flipboardZoneID;
+ };
+ var WorksheetImpl = (function (_super) {
+ __extends(WorksheetImpl, _super);
+ function WorksheetImpl(sheetInfoImpl, _visualId, _parentDashboard) {
+ var _this = _super.call(this, sheetInfoImpl) || this;
+ _this._visualId = _visualId;
+ _this._parentDashboard = _parentDashboard;
+ return _this;
+ }
+ Object.defineProperty(WorksheetImpl.prototype, "parentDashboard", {
+ get: function () {
+ return this._parentDashboard;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * Helper method which goes through and registers each event type this impl knows about
+ * with the NotificationService. It returns an array of SingleEventManager objects which
+ * can then be passed to an EventListenerManager to handle user registration / unregistration.
+ *
+ * @param {Worksheet} worksheet The worksheet object which will be included with the event notifications
+ * @returns {Array} Collection of event managers to pass to an EventListenerManager
+ */
+ WorksheetImpl.prototype.initializeEvents = function (worksheet) {
+ var _this = this;
+ var results = new Array();
+ var notificationService;
+ try {
+ notificationService = api_shared_1.ApiServiceRegistry.instance.getService("notification-service" /* Notification */);
+ }
+ catch (e) {
+ // If we don't have this service registered, just return
+ return results;
+ }
+ // Initialize all of the event managers we'll need (one for each event type)
+ var marksEvent = new api_shared_1.SingleEventManagerImpl(Contract.TableauEventType.MarkSelectionChanged);
+ notificationService.registerHandler(api_internal_contract_1.NotificationId.SelectedMarksChanged, function (model) {
+ var visualId = model;
+ return visualIdsAreEqual(visualId, _this.visualId);
+ }, function (viz) {
+ marksEvent.triggerEvent(function () { return new api_shared_1.MarksSelectedEvent(worksheet); });
+ });
+ var filterEvent = new api_shared_1.SingleEventManagerImpl(Contract.TableauEventType.FilterChanged);
+ notificationService.registerHandler(api_internal_contract_1.NotificationId.FilterChanged, function (model) {
+ var filterEventResponse = model;
+ return _this.visualId.worksheet === filterEventResponse.visualId.worksheet;
+ }, function (event) {
+ filterEvent.triggerEvent(function () { return new api_shared_1.FilterChangedEvent(worksheet, event.fieldName); });
+ });
+ results.push(marksEvent);
+ results.push(filterEvent);
+ // TODO - other event types
+ return results;
+ };
+ Object.defineProperty(WorksheetImpl.prototype, "visualId", {
+ get: function () {
+ return this._visualId;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ WorksheetImpl.prototype.applyFilterAsync = function (fieldName, values, updateType, options) {
+ var service = api_shared_1.ApiServiceRegistry.instance.getService("filter-service" /* Filter */);
+ return service.applyFilterAsync(this.visualId, fieldName, values, updateType, options);
+ };
+ WorksheetImpl.prototype.applyRangeFilterAsync = function (fieldName, filterOptions) {
+ var service = api_shared_1.ApiServiceRegistry.instance.getService("filter-service" /* Filter */);
+ return service.applyRangeFilterAsync(this.visualId, fieldName, filterOptions);
+ };
+ WorksheetImpl.prototype.clearFilterAsync = function (fieldName) {
+ var service = api_shared_1.ApiServiceRegistry.instance.getService("filter-service" /* Filter */);
+ return service.clearFilterAsync(this.visualId, fieldName);
+ };
+ WorksheetImpl.prototype.getDataSourcesAsync = function () {
+ var _this = this;
+ var service = api_shared_1.ApiServiceRegistry.instance.getService("data-source-service" /* DataSourceService */);
+ return service.getDataSourcesAsync().then(function (result) {
+ var dataSchema = result;
+ var worksheetDataSourceInfo = dataSchema.worksheetDataSchemaMap[_this.name];
+ var dataSources = [];
+ // First, add the primary datasource. By convention, it comes first in the returned array.
+ var primaryId = worksheetDataSourceInfo.primaryDataSource;
+ dataSources.push(_this.createDataSourceFromInfo(dataSchema.dataSources[primaryId]));
+ // Then, loop through any secondary data sources and add them.
+ for (var _i = 0, _a = worksheetDataSourceInfo.referencedDataSourceList; _i < _a.length; _i++) {
+ var secondaryId = _a[_i];
+ if (secondaryId !== primaryId) {
+ dataSources.push(_this.createDataSourceFromInfo(dataSchema.dataSources[secondaryId]));
+ }
+ }
+ return dataSources;
+ });
+ };
+ WorksheetImpl.prototype.getFiltersAsync = function () {
+ var service = api_shared_1.ApiServiceRegistry.instance.getService("filter-service" /* Filter */);
+ return service.getFiltersAsync(this.visualId);
+ };
+ WorksheetImpl.prototype.getSelectedMarksAsync = function () {
+ var service = api_shared_1.ApiServiceRegistry.instance.getService("get-data-service" /* GetData */);
+ return service.getSelectedMarksAsync(this.visualId);
+ };
+ WorksheetImpl.prototype.getHighlightedMarksAsync = function () {
+ var service = api_shared_1.ApiServiceRegistry.instance.getService("get-data-service" /* GetData */);
+ return service.getHighlightedMarksAsync(this.visualId);
+ };
+ WorksheetImpl.prototype.getSummaryDataAsync = function (options) {
+ var service = api_shared_1.ApiServiceRegistry.instance.getService("get-data-service" /* GetData */);
+ options = options || {};
+ return service.getUnderlyingDataAsync(this.visualId, api_shared_1.GetDataType.Summary, !!options.ignoreAliases, !!options.ignoreSelection, true, 0);
+ };
+ WorksheetImpl.prototype.getUnderlyingDataAsync = function (options) {
+ var service = api_shared_1.ApiServiceRegistry.instance.getService("get-data-service" /* GetData */);
+ options = options || {};
+ return service.getUnderlyingDataAsync(this.visualId, api_shared_1.GetDataType.Underlying, !!options.ignoreAliases, !!options.ignoreSelection, !!options.includeAllColumns, options.maxRows || 0);
+ };
+ WorksheetImpl.prototype.clearSelectedMarksAsync = function () {
+ var service = api_shared_1.ApiServiceRegistry.instance.getService("selection-service" /* Selection */);
+ return service.clearSelectedMarksAsync(this.visualId);
+ };
+ WorksheetImpl.prototype.selectMarksByValueAsync = function (selections, selectionUpdateType) {
+ var service = api_shared_1.ApiServiceRegistry.instance.getService("selection-service" /* Selection */);
+ return service.selectMarksByValueAsync(this.visualId, selections, selectionUpdateType);
+ };
+ WorksheetImpl.prototype.selectMarksByIdAsync = function (selections, selectionUpdateType) {
+ var service = api_shared_1.ApiServiceRegistry.instance.getService("selection-service" /* Selection */);
+ return service.selectMarksByIdAsync(this.visualId, selections, selectionUpdateType);
+ };
+ WorksheetImpl.prototype.createDataSourceFromInfo = function (dataSourceInfo) {
+ var dataSourceImpl = new DataSourceImpl_1.DataSourceImpl(dataSourceInfo);
+ var dataSource = new DataSource_1.DataSource(dataSourceImpl);
+ dataSourceImpl.initializeWithPublicInterfaces(dataSource);
+ return dataSource;
+ };
+ return WorksheetImpl;
+ }(SheetImpl_1.SheetImpl));
+ exports.WorksheetImpl = WorksheetImpl;
+
+
+/***/ },
+/* 59 */
+/***/ function(module, exports) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var DataSource = (function () {
+ function DataSource(_dataSourceImpl) {
+ this._dataSourceImpl = _dataSourceImpl;
+ }
+ Object.defineProperty(DataSource.prototype, "name", {
+ get: function () {
+ return this._dataSourceImpl.name;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DataSource.prototype, "id", {
+ get: function () {
+ return this._dataSourceImpl.id;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DataSource.prototype, "fields", {
+ get: function () {
+ return this._dataSourceImpl.fields;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DataSource.prototype, "connectionSummaries", {
+ get: function () {
+ return this._dataSourceImpl.connectionSummaries;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DataSource.prototype, "extractUpdateTime", {
+ get: function () {
+ return this._dataSourceImpl.extractUpdateTime;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DataSource.prototype, "isExtract", {
+ get: function () {
+ return this._dataSourceImpl.isExtract;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ DataSource.prototype.refreshAsync = function () {
+ return this._dataSourceImpl.refreshAsync();
+ };
+ DataSource.prototype.getUnderlyingDataAsync = function (options) {
+ return this._dataSourceImpl.getUnderlyingDataAsync(options);
+ };
+ return DataSource;
+ }());
+ exports.DataSource = DataSource;
+
+
+/***/ },
+/* 60 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var api_shared_1 = __webpack_require__(9);
+ var FieldImpl_1 = __webpack_require__(61);
+ var Field_1 = __webpack_require__(62);
+ var DataSourceImpl = (function () {
+ function DataSourceImpl(_dataSourceInfo) {
+ this._dataSourceInfo = _dataSourceInfo;
+ }
+ Object.defineProperty(DataSourceImpl.prototype, "name", {
+ get: function () {
+ return this._dataSourceInfo.name;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DataSourceImpl.prototype, "id", {
+ get: function () {
+ return this._dataSourceInfo.id;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DataSourceImpl.prototype, "extractUpdateTime", {
+ get: function () {
+ return this._dataSourceInfo.extractUpdateTime;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DataSourceImpl.prototype, "fields", {
+ get: function () {
+ return this._fields;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DataSourceImpl.prototype, "isExtract", {
+ get: function () {
+ return this._dataSourceInfo.isExtract;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DataSourceImpl.prototype, "connectionSummaries", {
+ get: function () {
+ throw new Error('DataSource connectionSummaries API not yet implemented.');
+ },
+ enumerable: true,
+ configurable: true
+ });
+ DataSourceImpl.prototype.refreshAsync = function () {
+ var dataSourceService = api_shared_1.ApiServiceRegistry.instance.getService("data-source-service" /* DataSourceService */);
+ return dataSourceService.refreshAsync(this._dataSourceInfo.id);
+ };
+ DataSourceImpl.prototype.getUnderlyingDataAsync = function (options) {
+ var defaultOptions = {
+ ignoreAliases: false,
+ maxRows: 10000,
+ columnsToInclude: [],
+ };
+ options = options || {};
+ var getDataService = api_shared_1.ApiServiceRegistry.instance.getService("get-data-service" /* GetData */);
+ return getDataService.getDataSourceDataAsync(this.id, !!options.ignoreAliases, options.maxRows || defaultOptions.maxRows, options.columnsToInclude || defaultOptions.columnsToInclude);
+ };
+ DataSourceImpl.prototype.initializeWithPublicInterfaces = function (dataSource) {
+ this._fields = this._dataSourceInfo.fields.map(function (fieldModel) {
+ var fieldImpl = new FieldImpl_1.FieldImpl(fieldModel, dataSource);
+ return new Field_1.Field(fieldImpl);
+ });
+ };
+ return DataSourceImpl;
+ }());
+ exports.DataSourceImpl = DataSourceImpl;
+
+
+/***/ },
+/* 61 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var api_shared_1 = __webpack_require__(9);
+ var FieldImpl = (function () {
+ function FieldImpl(_fieldInfo, _parentDataSource) {
+ this._fieldInfo = _fieldInfo;
+ this._parentDataSource = _parentDataSource;
+ }
+ Object.defineProperty(FieldImpl.prototype, "name", {
+ get: function () {
+ return this._fieldInfo.name;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(FieldImpl.prototype, "id", {
+ get: function () {
+ return this._fieldInfo.id;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(FieldImpl.prototype, "description", {
+ get: function () {
+ return this._fieldInfo.description;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(FieldImpl.prototype, "aggregation", {
+ get: function () {
+ return api_shared_1.InternalToExternalEnumMappings.fieldAggregationType.convert(this._fieldInfo.aggregation);
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(FieldImpl.prototype, "dataSource", {
+ get: function () {
+ return this._parentDataSource;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(FieldImpl.prototype, "role", {
+ get: function () {
+ return api_shared_1.InternalToExternalEnumMappings.fieldRoleType.convert(this._fieldInfo.role);
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(FieldImpl.prototype, "isHidden", {
+ get: function () {
+ return this._fieldInfo.isHidden;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(FieldImpl.prototype, "isGenerated", {
+ get: function () {
+ return this._fieldInfo.isGenerated;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(FieldImpl.prototype, "isCalculatedField", {
+ get: function () {
+ return this._fieldInfo.isCalculatedField;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(FieldImpl.prototype, "isCombinedField", {
+ get: function () {
+ return this._fieldInfo.isCombinedField;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ FieldImpl.prototype.getCalculatedFieldAsync = function () {
+ throw new Error('Field getCalculatedFieldAsync method not yet implemented.');
+ };
+ return FieldImpl;
+ }());
+ exports.FieldImpl = FieldImpl;
+
+
+/***/ },
+/* 62 */
+/***/ function(module, exports) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var Field = (function () {
+ function Field(_fieldImpl) {
+ this._fieldImpl = _fieldImpl;
+ }
+ Object.defineProperty(Field.prototype, "name", {
+ get: function () {
+ return this._fieldImpl.name;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Field.prototype, "id", {
+ get: function () {
+ return this._fieldImpl.id;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Field.prototype, "description", {
+ get: function () {
+ return this._fieldImpl.description;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Field.prototype, "aggregation", {
+ get: function () {
+ return this._fieldImpl.aggregation;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Field.prototype, "dataSource", {
+ get: function () {
+ return this._fieldImpl.dataSource;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Field.prototype, "role", {
+ get: function () {
+ return this._fieldImpl.role;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Field.prototype, "isHidden", {
+ get: function () {
+ return this._fieldImpl.isHidden;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Field.prototype, "isGenerated", {
+ get: function () {
+ return this._fieldImpl.isGenerated;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Field.prototype, "isCalculatedField", {
+ get: function () {
+ return this._fieldImpl.isCalculatedField;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Field.prototype, "columnType", {
+ get: function () {
+ throw new Error('Field.columnType not yet implemetned.');
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Field.prototype, "isCombinedField", {
+ get: function () {
+ return this._fieldImpl.isCombinedField;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Field.prototype.getCalculatedFieldAsync = function () {
+ return this._fieldImpl.getCalculatedFieldAsync();
+ };
+ return Field;
+ }());
+ exports.Field = Field;
+
+
+/***/ },
+/* 63 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var api_shared_1 = __webpack_require__(9);
+ var api_utils_1 = __webpack_require__(64);
+ var SettingsImpl = (function () {
+ function SettingsImpl(settingsInfo) {
+ // Since promises can't be introspected for state, keep a variable that
+ // indicates a save is in progress, so that set/erase can't be called during a save.
+ this._saveInProgress = false;
+ this.initializeSettings(settingsInfo);
+ }
+ SettingsImpl.prototype.erase = function (key) {
+ api_utils_1.Param.verifyValue(key, 'key');
+ // Only make a modification if we have the key already
+ if (this._currentSettings[key]) {
+ this.verifySettingsAreUnlocked();
+ delete this._currentSettings[key];
+ this._isModified = true;
+ }
+ };
+ SettingsImpl.prototype.get = function (key) {
+ api_utils_1.Param.verifyValue(key, 'key');
+ return this._currentSettings[key];
+ };
+ SettingsImpl.prototype.getAll = function () {
+ // Returns a mutable copy of the settings
+ return Object.assign({}, this._currentSettings);
+ };
+ Object.defineProperty(SettingsImpl.prototype, "isModified", {
+ get: function () {
+ return this._isModified;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ SettingsImpl.prototype.saveAsync = function () {
+ var _this = this;
+ this.verifySettingsAreUnlocked();
+ // Just resolve immediately if settings are unchanged
+ if (!this._isModified) {
+ return Promise.resolve(this._currentSettings);
+ }
+ this._saveInProgress = true;
+ // Use the settings service to save settings to twb
+ var settingsService = api_shared_1.ApiServiceRegistry.instance.getService("SettingsService" /* SettingsService */);
+ return settingsService.saveSettingsAsync(this._currentSettings).then(function (newSettings) {
+ _this._saveInProgress = false;
+ _this._isModified = false;
+ Object.assign(_this._currentSettings, newSettings);
+ return newSettings;
+ });
+ };
+ SettingsImpl.prototype.set = function (key, value) {
+ api_utils_1.Param.verifyValue(key, 'key'); // Key shouldn't be an empty string.
+ api_utils_1.Param.verifyString(value, 'value'); // Empty string value is allowed.
+ this.verifySettingsAreUnlocked();
+ this._currentSettings[key] = value;
+ this._isModified = true;
+ };
+ SettingsImpl.prototype.initializeSettings = function (settingsInfo) {
+ api_utils_1.Param.verifyValue(settingsInfo, 'settingsInfo');
+ api_utils_1.Param.verifyValue(settingsInfo.settingsValues, 'settingsInfo.SettingsValues');
+ this._currentSettings = settingsInfo.settingsValues;
+ // Reset the isModified flag
+ this._isModified = false;
+ };
+ /**
+ * This helper should be called before any local update to this.currentSettings.
+ * Checks if a current save call is still in progress and throws an error if so.
+ */
+ SettingsImpl.prototype.verifySettingsAreUnlocked = function () {
+ if (this._saveInProgress) {
+ throw new Error('Async Save is in progress, updating settings is not allowed.');
+ }
+ };
+ return SettingsImpl;
+ }());
+ exports.SettingsImpl = SettingsImpl;
+
+
+/***/ },
+/* 64 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ /**
+ * This is your main. This is where you re-export everything you want to be publicly available.
+ *
+ * The build enforces that the file has the same name as the global variable that is exported.
+ */
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var EnumConverter_1 = __webpack_require__(30);
+ exports.EnumConverter = EnumConverter_1.EnumConverter;
+ var Param_1 = __webpack_require__(31);
+ exports.Param = Param_1.Param;
+
+
+/***/ },
+/* 65 */
+/***/ function(module, exports) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ /**
+ * Implementation of the external Extensions namespace.
+ */
+ var Extensions = (function () {
+ function Extensions(extensionImpl) {
+ this.extensionImpl = extensionImpl;
+ this.extensionImpl = extensionImpl;
+ }
+ Object.defineProperty(Extensions.prototype, "dashboardContent", {
+ get: function () {
+ return this.extensionImpl.dashboardContent;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Extensions.prototype, "environment", {
+ get: function () {
+ return this.extensionImpl.environment;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Extensions.prototype, "settings", {
+ get: function () {
+ return this.extensionImpl.settings;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Extensions.prototype, "ui", {
+ get: function () {
+ throw new Error('API call not yet implemented');
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Extensions.prototype.initializeAsync = function () {
+ return this.extensionImpl.initializeAsync();
+ };
+ return Extensions;
+ }());
+ exports.Extensions = Extensions;
+
+
+/***/ },
+/* 66 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var api_core_1 = __webpack_require__(67);
+ var api_internal_contract_1 = __webpack_require__(88);
+ var AddInApiPresLayerImpl_1 = __webpack_require__(89);
+ var DesktopApiDispatcher_1 = __webpack_require__(90);
+ var QtWebChannelImpl_1 = __webpack_require__(91);
+ /**
+ * Wrapper for all the bootstrapping logic. This code attempts to initialize the qt pres-layer
+ * as well as the desktop dispatcher. It then assigns it to the global desktop dispatcher to
+ * be picked up by the add-in external Api
+ */
+ function doBootstrap() {
+ // First we need to initialize the webchannel pres-layer
+ var dispatcherPromise = QtWebChannelImpl_1.initializeWebChannelPresLayer().then(function (preslayer) {
+ var presLayerApi = new AddInApiPresLayerImpl_1.AddInApiPresLayerImpl(preslayer);
+ if (!presLayerApi.AddInInstanceInfo.addInLocatorPresModel) {
+ throw new Error('AddInInstanceInfo undefined');
+ }
+ // Initialize the apiEventHandler and the desktopDispatcher with it
+ var apiEventHandler = new api_core_1.ApiEventHandler(presLayerApi, presLayerApi.AddInInstanceInfo.addInLocatorPresModel);
+ var desktopDispatcher = new DesktopApiDispatcher_1.DesktopApiDispatcher(apiEventHandler);
+ return desktopDispatcher;
+ });
+ // Assign the desktop dispatcher for the other project to find it
+ api_internal_contract_1.InternalApiDispatcherHolder.setDesktopDispatcherPromise(dispatcherPromise);
+ return dispatcherPromise;
+ }
+ exports.doBootstrap = doBootstrap;
+
+
+/***/ },
+/* 67 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ /**
+ * This is your main. This is where you re-export everything you want to be publicly available.
+ *
+ * The build enforces that the file has the same name as the global variable that is exported.
+ */
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ Object.defineProperty(exports, "__esModule", { value: true });
+ __export(__webpack_require__(68));
+ var Events_1 = __webpack_require__(76);
+ exports.NotificationId = Events_1.NotificationId;
+
+
+/***/ },
+/* 68 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var api_internal_contract_1 = __webpack_require__(69);
+ var Params_1 = __webpack_require__(70);
+ var CommandMappingRegistryFactory_1 = __webpack_require__(71);
+ var EventMappingRegistryFactory_1 = __webpack_require__(75);
+ var ParameterMappingRegistryFactory_1 = __webpack_require__(81);
+ /**
+ * Main class for the api-core project. This class is responsible for executing comamnd and marshalling notifcations
+ * between the internal Api and the pres-layer Api. After construction, SetVersionNumber must be called in order to
+ * use this class
+ *
+ * @export
+ * @class ApiEventHandler
+ */
+ var ApiEventHandler = (function () {
+ /**
+ * Creates an instance of ApiEventHandler.
+ * @param {PresentationLayer} presLayer - An implementation of the pres-layer Api to use
+ * @param {AddInLocatorPresModel} addInLocatorPresModel - locator for the add-in which is being referenced
+ * @memberof ApiEventHandler
+ */
+ function ApiEventHandler(presLayer, addInLocatorPresModel) {
+ this._presLayer = presLayer;
+ this._presLayerAddInLocator = addInLocatorPresModel;
+ }
+ /**
+ * Sets the internal Api version number which the external library is expecting to use. This must be called before
+ * anything else in order to properly set up the translation layers.
+ *
+ * @param {VersionNumber} versionNumber
+ * @memberof ApiEventHandler
+ */
+ ApiEventHandler.prototype.setVersionNumber = function (versionNumber) {
+ this._versionNumber = versionNumber;
+ // Initialize all our registries
+ this._commandRegistry = CommandMappingRegistryFactory_1.CommandMappingRegistryFactory.createCommandMappingRegistry(versionNumber);
+ this._apiToPresLayerRegistry = ParameterMappingRegistryFactory_1.ParameterMappingRegistryFactory.createApiToPresLayerParamRegistry(versionNumber);
+ this._presLayerToApiRegistry = ParameterMappingRegistryFactory_1.ParameterMappingRegistryFactory.createPresLayerToApiParamRegistry(versionNumber);
+ this._eventRegistry = EventMappingRegistryFactory_1.EventMappingRegistryFactory.createEventMappingRegistry(versionNumber);
+ // Convert our addInLocator to the Api version
+ this._apiExtensionLocator = this._presLayerToApiRegistry
+ .get(Params_1.ParameterId.AddInLocator, api_internal_contract_1.ParameterId.ExtensionLocator)(this._presLayerAddInLocator);
+ for (var _i = 0, _a = Object.keys(this._eventRegistry); _i < _a.length; _i++) {
+ var plEventId = _a[_i];
+ // Register for all notifications we know about and bind the event type to the callback
+ this._presLayer.registerNotificationHandler(plEventId, this.onPresLayerNotification.bind(this, plEventId));
+ }
+ };
+ /**
+ * Sets an event handler function to be notified when Api events come in. Only a single registration is supported.
+ *
+ * @param {NotificationHandler} eventHandler
+ * @memberof ApiEventHandler
+ */
+ ApiEventHandler.prototype.setEventHandler = function (eventHandler) {
+ this._eventHandler = eventHandler;
+ // TODO - Register for pres layer events
+ };
+ /**
+ * Executes the requested Api command by converting the parameters, running the command against the pres-layer,
+ * then processing the result back into a format the Api can understand
+ *
+ * @param {VerbId} verb
+ * @param {ExecuteParameters} parameters
+ * @returns {Promise}
+ * @memberof ApiEventHandler
+ */
+ ApiEventHandler.prototype.execute = function (verb, parameters) {
+ var _this = this;
+ this.assertInitialized();
+ var command = this._commandRegistry.getCommand(verb);
+ parameters = parameters || {};
+ // Augment the command with the locator if it's needed
+ if (command.needsAddInLocator) {
+ parameters[api_internal_contract_1.ParameterId.ExtensionLocator] = this._apiExtensionLocator;
+ }
+ var commandsParams = command.createParams(parameters, this._apiToPresLayerRegistry);
+ return this._presLayer.invokeCommand(command.namespace, command.commandId, commandsParams)
+ .then(function (commandResult) {
+ var convertedResult = command.ProcessResult(commandResult, _this._presLayerToApiRegistry);
+ return {
+ result: convertedResult
+ };
+ });
+ };
+ /**
+ * Helper method to check that things are initialized as expected. Throws if initialization not complete
+ *
+ * @private
+ * @memberof ApiEventHandler
+ */
+ ApiEventHandler.prototype.assertInitialized = function () {
+ if (!this._versionNumber) {
+ throw new Error('VersionNumber not yet configured. Cannot take any actions');
+ }
+ };
+ /**
+ * Called when a new event notification comes in from the presentation layer
+ *
+ * @param eventId The pres layer event id
+ * @param presModel The pres model that is included with the event
+ */
+ ApiEventHandler.prototype.onPresLayerNotification = function (eventId, presModel) {
+ // First look up this eventId in our registry and convert to presModel
+ var eventMapping = this._eventRegistry[eventId];
+ var apiModel = eventMapping.converter(presModel);
+ if (this._eventHandler) {
+ this._eventHandler(eventMapping.apiId, apiModel);
+ }
+ };
+ return ApiEventHandler;
+ }());
+ exports.ApiEventHandler = ApiEventHandler;
+
+
+/***/ },
+/* 69 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ /**
+ * This is your main. This is where you re-export everything you want to be publicly available.
+ *
+ * The build enforces that the file has the same name as the global variable that is exported.
+ */
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ Object.defineProperty(exports, "__esModule", { value: true });
+ __export(__webpack_require__(4));
+ __export(__webpack_require__(5));
+ __export(__webpack_require__(6));
+ __export(__webpack_require__(7));
+ __export(__webpack_require__(8));
+
+
+/***/ },
+/* 70 */
+/***/ function(module, exports) {
+
+ "use strict";
+ // -----------------------------------------------------------------------------
+ //
+ // This file is the copyrighted property of Tableau Software and is protected
+ // by registered patents and other applicable U.S. and international laws and
+ // regulations.
+ //
+ // Unlicensed use of the contents of this file is prohibited. Please refer to
+ // the NOTICES.txt file for further details.
+ //
+ // -----------------------------------------------------------------------------
+ // WARNING: Computer generated file. Do not hand modify.
+ // DEPENDS ON: ['../typescript/js-api/api-core/node_modules/@tableau/preslayer-codegen-typescript/templates/params-ts.template', u'../typescript/js-api/api-core/temp-pres-layer/all-params.data']
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var ParameterId;
+ (function (ParameterId) {
+ // DPI_IntegerRLE, having type int[]
+ ParameterId["IntegerRLE"] = "intRle";
+ // DPI_UnsignedIntegerRLE, having type uint[]
+ ParameterId["UnsignedIntegerRLE"] = "uintRle";
+ // DPI_FloatRLE, having type float[]
+ ParameterId["FloatRLE"] = "floatRle";
+ // DPI_ParameterID, having type string
+ ParameterId["ParameterID"] = "paramType";
+ // DPI_AllowCustomDatabase, having type bool
+ ParameterId["AllowCustomDatabase"] = "allowCustomDatabase";
+ // DPI_AllowCustomSchema, having type bool
+ ParameterId["AllowCustomSchema"] = "allowCustomSchema";
+ // DPI_AllowCustomSQL, having type bool
+ ParameterId["AllowCustomSQL"] = "allowCustomSql";
+ // DPI_AllowCustomSQLWithoutSchema, having type bool
+ ParameterId["AllowCustomSQLWithoutSchema"] = "allowCustomSqlWithoutSchema";
+ // DPI_AllowPreviewData, having type bool
+ ParameterId["AllowPreviewData"] = "allowPreviewData";
+ // DPI_AllowStoredProc, having type bool
+ ParameterId["AllowStoredProc"] = "allowStoredProcedure";
+ // DPI_AllowUnion, having type bool
+ ParameterId["AllowUnion"] = "allowUnion";
+ // DPI_AreVariablesVisible, having type bool
+ ParameterId["AreVariablesVisible"] = "areVariablesVisible";
+ // DPI_AttrLegacyConnection, having type bool
+ ParameterId["AttrLegacyConnection"] = "widgetAttrLegacy";
+ // DPI_AttrReadUncommitted, having type bool
+ ParameterId["AttrReadUncommitted"] = "widgetAttrReadUncommittedData";
+ // DPI_AttrRequireSSL, having type bool
+ ParameterId["AttrRequireSSL"] = "widgetAttrRequireSsl";
+ // DPI_AttrRequireEncryption, having type bool
+ ParameterId["AttrRequireEncryption"] = "widgetAttrRequireEncryption";
+ // DPI_Bool, having type bool
+ ParameterId["Bool"] = "bool";
+ // DPI_CanPartition, having type bool
+ ParameterId["CanPartition"] = "canPartition";
+ // DPI_CanRecommendDataSources, having type bool
+ ParameterId["CanRecommendDataSources"] = "canRecommendDatasources";
+ // DPI_CanRecommendTables, having type bool
+ ParameterId["CanRecommendTables"] = "canRecommendTables";
+ // DPI_CheckPermissions, having type bool
+ ParameterId["CheckPermissions"] = "checkPermissions";
+ // DPI_DatabaseNameOptional, having type bool
+ ParameterId["DatabaseNameOptional"] = "databaseNameOptional";
+ // DPI_DatabaseWHOptional, having type bool
+ ParameterId["DatabaseWHOptional"] = "databaseWarehouseOptional";
+ // DPI_DoValidation, having type bool
+ ParameterId["DoValidation"] = "doValidation";
+ // DPI_DoneLoadingAllSheets, having type bool
+ ParameterId["DoneLoadingAllSheets"] = "googleSheetDoneLoading";
+ // DPI_GABasicItemsEnabled, having type bool
+ ParameterId["GABasicItemsEnabled"] = "gaBasicItemsEnabled";
+ // DPI_GADimensionMeasuresEnabled, having type bool
+ ParameterId["GADimensionMeasuresEnabled"] = "gaDimensionsMeasuresEnabled";
+ // DPI_GAFiltersEnabled, having type bool
+ ParameterId["GAFiltersEnabled"] = "gaFiltersEnabled";
+ // DPI_HasDatabase, having type bool
+ ParameterId["HasDatabase"] = "hasDatabase";
+ // DPI_HasDataLoss, having type bool
+ ParameterId["HasDataLoss"] = "hasDataLoss";
+ // DPI_HasFastMetadata, having type bool
+ ParameterId["HasFastMetadata"] = "hasFastMetadata";
+ // DPI_HasNewlyDiscoveredSchema, having type bool
+ ParameterId["HasNewlyDiscoveredSchema"] = "hasNewlyDiscoveredSchema";
+ // DPI_HasPermissions, having type bool
+ ParameterId["HasPermissions"] = "hasPermissions";
+ // DPI_HasSchema, having type bool
+ ParameterId["HasSchema"] = "hasSchema";
+ // DPI_HasSchemaCount, having type bool
+ ParameterId["HasSchemaCount"] = "hasSchemaCount";
+ // DPI_HasTables, having type bool
+ ParameterId["HasTables"] = "hasTables";
+ // DPI_HasUncommittedChanges, having type bool
+ ParameterId["HasUncommittedChanges"] = "hasUncommittedChanges";
+ // DPI_HasWarehouse, having type bool
+ ParameterId["HasWarehouse"] = "hasWarehouse";
+ // DPI_HasWarning, having type bool
+ ParameterId["HasWarning"] = "hasWarning";
+ // DPI_IsCalculated, having type bool
+ ParameterId["IsCalculated"] = "isCalculated";
+ // DPI_IsConnectedToDataSource, having type bool
+ ParameterId["IsConnectedToDataSource"] = "isConnectedDatasource";
+ // DPI_IsDisabledDataConnection, having type bool
+ ParameterId["IsDisabledDataConnection"] = "isDisabledDataConnection";
+ // DPI_IsEditable, having type bool
+ ParameterId["IsEditable"] = "isEditable";
+ // DPI_IsEnabled, having type bool
+ ParameterId["IsEnabled"] = "isEnabled";
+ // DPI_IsFinishedConnecting, having type bool
+ ParameterId["IsFinishedConnecting"] = "isFinishedConnecting";
+ // DPI_IsHidden, having type bool
+ ParameterId["IsHidden"] = "isHidden";
+ // DPI_IsMultiTable, having type bool
+ ParameterId["IsMultiTable"] = "isMultiTable";
+ // DPI_IsNewCustomSQL, having type bool
+ ParameterId["IsNewCustomSQL"] = "isNewCustomSql";
+ // DPI_IsNewDataSource, having type bool
+ ParameterId["IsNewDataSource"] = "isNewDataSrc";
+ // DPI_IsPublishedFederated, having type bool
+ ParameterId["IsPublishedFederated"] = "isPublishedFederated";
+ // DPI_IsSampled, having type bool
+ ParameterId["IsSampled"] = "isSampled";
+ // DPI_IsSchemaMemberNewlyDiscovered, having type bool
+ ParameterId["IsSchemaMemberNewlyDiscovered"] = "isSchemaMemberNewlyDiscovered";
+ // DPI_IsSlowFast, having type bool
+ ParameterId["IsSlowFast"] = "isSlowfast";
+ // DPI_IsSupported, having type bool
+ ParameterId["IsSupported"] = "isSupported";
+ // DPI_IsTableSelectionVisible, having type bool
+ ParameterId["IsTableSelectionVisible"] = "isTableSelectionVisible";
+ // DPI_IsTableauServerDatasource, having type bool
+ ParameterId["IsTableauServerDatasource"] = "isTableauServerDatasource";
+ // DPI_IsTableauServerDatasourceConnectable, having type bool
+ ParameterId["IsTableauServerDatasourceConnectable"] = "isTableauServerDatasourceConnectable";
+ // DPI_IsTableauServerDatasourceDownloadable, having type bool
+ ParameterId["IsTableauServerDatasourceDownloadable"] = "isTableauServerDatasourceDownloadable";
+ // DPI_IsVisible, having type bool
+ ParameterId["IsVisible"] = "isVisible";
+ // DPI_NeedFlatten, having type bool
+ ParameterId["NeedFlatten"] = "needFlatten";
+ // DPI_SSLRequiresCertificate, having type bool
+ ParameterId["SSLRequiresCertificate"] = "sslRequiresCertificate";
+ // DPI_SchemaOptional, having type bool
+ ParameterId["SchemaOptional"] = "schemaOptional";
+ // DPI_ServiceNameOptional, having type bool
+ ParameterId["ServiceNameOptional"] = "serviceNameOptional";
+ // DPI_ShouldWarnForCrossSchemaJoins, having type bool
+ ParameterId["ShouldWarnForCrossSchemaJoins"] = "shouldWarnCrossSchemaJoins";
+ // DPI_ShowBrowseButton, having type bool
+ ParameterId["ShowBrowseButton"] = "showBrowseButton";
+ // DPI_ShowConnectionPrompt, having type bool
+ ParameterId["ShowConnectionPrompt"] = "showConnectionPrompt";
+ // DPI_ShowDBBrowseButton, having type bool
+ ParameterId["ShowDBBrowseButton"] = "showDbBrowseButton";
+ // DPI_ShowDBNamePrompt, having type bool
+ ParameterId["ShowDBNamePrompt"] = "showDbPrompt";
+ // DPI_ShowDBWHNamePrompt, having type bool
+ ParameterId["ShowDBWHNamePrompt"] = "showDbwhPrompt";
+ // DPI_ShowImportSSLCertLabel, having type bool
+ ParameterId["ShowImportSSLCertLabel"] = "showImportSslcertLabel";
+ // DPI_ShowPortPrompt, having type bool
+ ParameterId["ShowPortPrompt"] = "showPortPrompt";
+ // DPI_ShowSSLCheckbox, having type bool
+ ParameterId["ShowSSLCheckbox"] = "showSslCheckbox";
+ // DPI_ShowEncryptionCheckbox, having type bool
+ ParameterId["ShowEncryptionCheckbox"] = "showEncryptionCheckbox";
+ // DPI_ShowServerNamePrompt, having type bool
+ ParameterId["ShowServerNamePrompt"] = "showServerPrompt";
+ // DPI_ShowServiceNamePrompt, having type bool
+ ParameterId["ShowServiceNamePrompt"] = "showServicePrompt";
+ // DPI_ShowUncommittedDataCheckbox, having type bool
+ ParameterId["ShowUncommittedDataCheckbox"] = "showUncommittedDataCheckbox";
+ // DPI_SupportsGenericAuth, having type bool
+ ParameterId["SupportsGenericAuth"] = "supportsGenericAuth";
+ // DPI_TableauServerFetchAscending, having type bool
+ ParameterId["TableauServerFetchAscending"] = "tableauServerFetchAscending";
+ // DPI_UsesRadioButton, having type bool
+ ParameterId["UsesRadioButton"] = "usesRadioButton";
+ // DPI_BigQueryLegacySQLCheckStatus, having type bool
+ ParameterId["BigQueryLegacySQLCheckStatus"] = "datasourceBigqueryLegacySqlCheckStatus";
+ // DPI_HasBigQueryLegacySQLCheck, having type bool
+ ParameterId["HasBigQueryLegacySQLCheck"] = "datasourceBigqueryLegacySqlCheck";
+ // DPI_AutoFetchLimit, having type int
+ ParameterId["AutoFetchLimit"] = "autoFetchLimit";
+ // DPI_ConnectionType, having type int
+ ParameterId["ConnectionType"] = "connectionType";
+ // DPI_IconId, having type int
+ ParameterId["IconId"] = "iconId";
+ // DPI_SelectedCatalogIndex, having type int
+ ParameterId["SelectedCatalogIndex"] = "selectedCatalogIndex";
+ // DPI_SelectedCubeIndex, having type int
+ ParameterId["SelectedCubeIndex"] = "selectedCubeIndex";
+ // DPI_SelectedGAAccountIndex, having type int
+ ParameterId["SelectedGAAccountIndex"] = "selectedGaAccountIndex";
+ // DPI_SelectedGAMeasureSetIndex, having type int
+ ParameterId["SelectedGAMeasureSetIndex"] = "selectedGaMeasureSetIndex";
+ // DPI_SelectedGAPropertyIndex, having type int
+ ParameterId["SelectedGAPropertyIndex"] = "selectedGaPropertyIndex";
+ // DPI_SelectedGASegmentIndex, having type int
+ ParameterId["SelectedGASegmentIndex"] = "selectedGaSegmentIndex";
+ // DPI_SelectedGAViewIndex, having type int
+ ParameterId["SelectedGAViewIndex"] = "selectedGaViewIndex";
+ // DPI_SelectedGoogleSheetIndex, having type int
+ ParameterId["SelectedGoogleSheetIndex"] = "selectedGoogleSheetIndex";
+ // DPI_SelectedOptionIndex, having type int
+ ParameterId["SelectedOptionIndex"] = "selectedOptionIndex";
+ // DPI_SlowMetadataCount, having type int
+ ParameterId["SlowMetadataCount"] = "slowMetadataCount";
+ // DPI_TableauServerFetchSortBy, having type int
+ ParameterId["TableauServerFetchSortBy"] = "tableauServerFetchSort";
+ // DPI_ActualParameterOrdinal, having type uint
+ ParameterId["ActualParameterOrdinal"] = "actualParameterOrdinal";
+ // DPI_ActualParameterType, having type uint
+ ParameterId["ActualParameterType"] = "actualParameterType";
+ // DPI_CharSetID, having type uint
+ ParameterId["CharSetID"] = "charsetId";
+ // DPI_DataSourceOrdinal, having type uint
+ ParameterId["DataSourceOrdinal"] = "datasourceOrdinal";
+ // DPI_FilterCount, having type uint
+ ParameterId["FilterCount"] = "filterCount";
+ // DPI_VariablesCount, having type uint
+ ParameterId["VariablesCount"] = "variablesCount";
+ // DPI_ActualParameterDisplayName, having type string
+ ParameterId["ActualParameterDisplayName"] = "actualParameterDisplayName";
+ // DPI_ActualParameterName, having type string
+ ParameterId["ActualParameterName"] = "actualParameterName";
+ // DPI_ActualParameterValue, having type string
+ ParameterId["ActualParameterValue"] = "actualParameterValue";
+ // DPI_AttrAPIVersion, having type string
+ ParameterId["AttrAPIVersion"] = "attrApiVersion";
+ // DPI_AttrAuthType, having type string
+ ParameterId["AttrAuthType"] = "widgetAttrAuthtype";
+ // DPI_AttrConnectionData, having type string
+ ParameterId["AttrConnectionData"] = "attrConnectionData";
+ // DPI_AttrConnectionName, having type string
+ ParameterId["AttrConnectionName"] = "attrConnectionName";
+ // DPI_AttrConnectionType, having type string
+ ParameterId["AttrConnectionType"] = "widgetAttrConnectiontype";
+ // DPI_AttrConnectionURL, having type string
+ ParameterId["AttrConnectionURL"] = "attrConnectionUrl";
+ // DPI_AttrCubeSpecificationId, having type string
+ ParameterId["AttrCubeSpecificationId"] = "widgetAttrCubeSpecificationId";
+ // DPI_AttrCubeSpecificationValue, having type string
+ ParameterId["AttrCubeSpecificationValue"] = "widgetAttrCubeSpecificationValue";
+ // DPI_AttrDSN, having type string
+ ParameterId["AttrDSN"] = "widgetAttrDsn";
+ // DPI_AttrDatabase, having type string
+ ParameterId["AttrDatabase"] = "widgetAttrDb";
+ // DPI_AttrDatabaseWarehouse, having type string
+ ParameterId["AttrDatabaseWarehouse"] = "widgetAttrDbwh";
+ // DPI_AttrDriver, having type string
+ ParameterId["AttrDriver"] = "widgetAttrDriver";
+ // DPI_AttrFilename, having type string
+ ParameterId["AttrFilename"] = "widgetAttrFilename";
+ // DPI_AttrHTTPPath, having type string
+ ParameterId["AttrHTTPPath"] = "widgetAttrHttpPath";
+ // DPI_AttrIncrementalRefreshKey, having type string
+ ParameterId["AttrIncrementalRefreshKey"] = "attrIncrementalRefreshKey";
+ // DPI_AttrKerberosHost, having type string
+ ParameterId["AttrKerberosHost"] = "widgetAttrKerberosHost";
+ // DPI_AttrKerberosRealm, having type string
+ ParameterId["AttrKerberosRealm"] = "widgetAttrKerberosRealm";
+ // DPI_AttrKerberosService, having type string
+ ParameterId["AttrKerberosService"] = "widgetAttrKerberosService";
+ // DPI_AttrLastRecordToken, having type string
+ ParameterId["AttrLastRecordToken"] = "attrLastRecordToken";
+ // DPI_AttrMDWPath, having type string
+ ParameterId["AttrMDWPath"] = "widgetAttrMdwPath";
+ // DPI_AttrMDWUsername, having type string
+ ParameterId["AttrMDWUsername"] = "widgetAttrMdwUsername";
+ // DPI_AttrODBCPrompt, having type string
+ ParameterId["AttrODBCPrompt"] = "widgetAttrOdbcPrompt";
+ // DPI_AttrODBCStringExtras, having type string
+ ParameterId["AttrODBCStringExtras"] = "widgetAttrOdbcStringExtras";
+ // DPI_AttrPort, having type string
+ ParameterId["AttrPort"] = "widgetAttrPort";
+ // DPI_AttrSAPClient, having type string
+ ParameterId["AttrSAPClient"] = "widgetAttrSapClient";
+ // DPI_AttrSAPLanguage, having type string
+ ParameterId["AttrSAPLanguage"] = "widgetAttrSapLanguage";
+ // DPI_AttrEdition, having type string
+ ParameterId["AttrEdition"] = "widgetAttrSslEdition";
+ // DPI_AttrSSODomain, having type string
+ ParameterId["AttrSSODomain"] = "widgetAttrSsoDomain";
+ // DPI_AttrSSLCert, having type string
+ ParameterId["AttrSSLCert"] = "widgetAttrSslCert";
+ // DPI_AttrScriptVersion, having type string
+ ParameterId["AttrScriptVersion"] = "attrScriptVersion";
+ // DPI_AttrServer, having type string
+ ParameterId["AttrServer"] = "widgetAttrServer";
+ // DPI_AttrService, having type string
+ ParameterId["AttrService"] = "widgetAttrService";
+ // DPI_AttrUsername, having type string
+ ParameterId["AttrUsername"] = "widgetAttrUser";
+ // DPI_AuthenticationPrompt, having type string
+ ParameterId["AuthenticationPrompt"] = "authenticationPrompt";
+ // DPI_ButtonClickAction, having type string
+ ParameterId["ButtonClickAction"] = "buttonClickAction";
+ // DPI_ButtonCaption, having type string
+ ParameterId["ButtonCaption"] = "buttonCaption";
+ // DPI_Caption, having type string
+ ParameterId["Caption"] = "caption";
+ // DPI_CatalogListPrompt, having type string
+ ParameterId["CatalogListPrompt"] = "catalogListPrompt";
+ // DPI_CatalogName, having type string
+ ParameterId["CatalogName"] = "catalogName";
+ // DPI_CatalogSearchTerm, having type string
+ ParameterId["CatalogSearchTerm"] = "catalogSearchTerm";
+ // DPI_Category, having type string
+ ParameterId["Category"] = "itemCategory";
+ // DPI_ClassName, having type string
+ ParameterId["ClassName"] = "classNameForCleaning";
+ // DPI_CloudFileClassName, having type string
+ ParameterId["CloudFileClassName"] = "cloudFileClassName";
+ // DPI_CloudFileStorageProvider, having type string
+ ParameterId["CloudFileStorageProvider"] = "cloudFileStorageProvider";
+ // DPI_ConfigName, having type string
+ ParameterId["ConfigName"] = "connectionConfigName";
+ // DPI_ConnectionCaption, having type string
+ ParameterId["ConnectionCaption"] = "connectionCaption";
+ // DPI_ConnectionDescriptionLabel, having type string
+ ParameterId["ConnectionDescriptionLabel"] = "connectionDescriptionLabel";
+ // DPI_ConnectionClass, having type string
+ ParameterId["ConnectionClass"] = "connectionClassName";
+ // DPI_ConnectionName, having type string
+ ParameterId["ConnectionName"] = "connectionName";
+ // DPI_ConnectionOptionName, having type string
+ ParameterId["ConnectionOptionName"] = "connectionOptionName";
+ // DPI_ConnectionSpecificationTitle, having type string
+ ParameterId["ConnectionSpecificationTitle"] = "connectionSpecificationTitle";
+ // DPI_ConnectionTypeLabel, having type string
+ ParameterId["ConnectionTypeLabel"] = "connectionTypeLabel";
+ // DPI_CubeDescription, having type string
+ ParameterId["CubeDescription"] = "cubeDescription";
+ // DPI_CubeLastUpdated, having type string
+ ParameterId["CubeLastUpdated"] = "cubeLastUpdated";
+ // DPI_CubeListPrompt, having type string
+ ParameterId["CubeListPrompt"] = "cubeListPrompt";
+ // DPI_CubeName, having type string
+ ParameterId["CubeName"] = "cubeName";
+ // DPI_CubeSearchTerm, having type string
+ ParameterId["CubeSearchTerm"] = "cubeSearchTerm";
+ // DPI_CurrentText, having type string
+ ParameterId["CurrentText"] = "currentText";
+ // DPI_CustomSplitStringSeparator, having type string
+ ParameterId["CustomSplitStringSeparator"] = "customSplitStringSeparator";
+ // DPI_DatasourceId, having type string
+ ParameterId["DatasourceId"] = "datasourceId";
+ // DPI_DBNamePrompt, having type string
+ ParameterId["DBNamePrompt"] = "dbNamePrompt";
+ // DPI_DBWHNamePrompt, having type string
+ ParameterId["DBWHNamePrompt"] = "dbWarehouseNamePrompt";
+ // DPI_DSClass, having type string
+ ParameterId["DSClass"] = "dsClass";
+ // DPI_DatabaseName, having type string
+ ParameterId["DatabaseName"] = "datasourceDatabaseName";
+ // DPI_DatabaseNote, having type string
+ ParameterId["DatabaseNote"] = "databaseNote";
+ // DPI_DragLabel, having type string
+ ParameterId["DragLabel"] = "dragLabel";
+ // DPI_EffectiveDateRange, having type string
+ ParameterId["EffectiveDateRange"] = "effectiveDateRange";
+ // DPI_GoogleSheetCreatedTime, having type string
+ ParameterId["GoogleSheetCreatedTime"] = "googleSheetCreatedTime";
+ // DPI_GoogleSheetId, having type string
+ ParameterId["GoogleSheetId"] = "googleSheetId";
+ // DPI_GoogleSheetLastModifiedTime, having type string
+ ParameterId["GoogleSheetLastModifiedTime"] = "googleSheetLastModifiedTime";
+ // DPI_GoogleSheetLastModifyingUser, having type string
+ ParameterId["GoogleSheetLastModifyingUser"] = "googleSheetLastModifyingUser";
+ // DPI_GoogleSheetLastViewedByUserTime, having type string
+ ParameterId["GoogleSheetLastViewedByUserTime"] = "googleSheetLastViewedByUserTime";
+ // DPI_GoogleSheetMimeType, having type string
+ ParameterId["GoogleSheetMimeType"] = "googleSheetMimeType";
+ // DPI_GoogleSheetName, having type string
+ ParameterId["GoogleSheetName"] = "googleSheetName";
+ // DPI_GoogleSheetOwner, having type string
+ ParameterId["GoogleSheetOwner"] = "googleSheetOwner";
+ // DPI_GoogleSheetThumbnailLink, having type string
+ ParameterId["GoogleSheetThumbnailLink"] = "googleSheetThumbnailLink";
+ // DPI_GoogleSheetThumbnailId, having type string
+ ParameterId["GoogleSheetThumbnailId"] = "googleSheetThumbnailId";
+ // DPI_GoogleSheetThumbnailLocalPath, having type string
+ ParameterId["GoogleSheetThumbnailLocalPath"] = "googleSheetThumbnailLocalPath";
+ // DPI_GoogleSheetWebViewLink, having type string
+ ParameterId["GoogleSheetWebViewLink"] = "googleSheetWebViewLink";
+ // DPI_GoogleSheetsListErrorMessage, having type string
+ ParameterId["GoogleSheetsListErrorMessage"] = "googleSheetsListErrorMessage";
+ // DPI_InitialSQL, having type string
+ ParameterId["InitialSQL"] = "initialSql";
+ // DPI_ISODate, having type string
+ ParameterId["ISODate"] = "isoDate";
+ // DPI_ISOEndDate, having type string
+ ParameterId["ISOEndDate"] = "isoEndDate";
+ // DPI_ISOStartDate, having type string
+ ParameterId["ISOStartDate"] = "isoStartDate";
+ // DPI_IsolationLevel, having type string
+ ParameterId["IsolationLevel"] = "datasourceIsolationLevel";
+ // DPI_ItemDescription, having type string
+ ParameterId["ItemDescription"] = "itemDescription";
+ // DPI_ItemId, having type string
+ ParameterId["ItemId"] = "itemId";
+ // DPI_KerberosHost, having type string
+ ParameterId["KerberosHost"] = "datasourceKerberosHost";
+ // DPI_KerberosRealm, having type string
+ ParameterId["KerberosRealm"] = "datasourceKerberosRealm";
+ // DPI_KerberosService, having type string
+ ParameterId["KerberosService"] = "datasourceKerberosService";
+ // DPI_Name, having type string
+ ParameterId["Name"] = "name";
+ // DPI_OptionId, having type string
+ ParameterId["OptionId"] = "optionId";
+ // DPI_PartitioningButtonLabel, having type string
+ ParameterId["PartitioningButtonLabel"] = "partitioningButtonLabel";
+ // DPI_PartitioningButtonTooltip, having type string
+ ParameterId["PartitioningButtonTooltip"] = "partitioningButtonTooltip";
+ // DPI_PartitioningText, having type string
+ ParameterId["PartitioningText"] = "queryPartitioningText";
+ // DPI_PdfStartPage, having type string
+ ParameterId["PdfStartPage"] = "pdfStartPage";
+ // DPI_PdfEndPage, having type string
+ ParameterId["PdfEndPage"] = "pdfEndPage";
+ // DPI_PortPrompt, having type string
+ ParameterId["PortPrompt"] = "portPrompt";
+ // DPI_PromptText, having type string
+ ParameterId["PromptText"] = "promptText";
+ // DPI_QueryBanding, having type string
+ ParameterId["QueryBanding"] = "queryBanding";
+ // DPI_QueryText, having type string
+ ParameterId["QueryText"] = "queryText";
+ // DPI_RecommendationUUID, having type string
+ ParameterId["RecommendationUUID"] = "recommendationUuid";
+ // DPI_SQLQuery, having type string
+ ParameterId["SQLQuery"] = "sqlQuery";
+ // DPI_SchemaComboFallbackText, having type string
+ ParameterId["SchemaComboFallbackText"] = "schemaComboFallbackText";
+ // DPI_SchemaLabel, having type string
+ ParameterId["SchemaLabel"] = "schemaLabel";
+ // DPI_SchemaMemberGlobalName, having type string
+ ParameterId["SchemaMemberGlobalName"] = "schemaMemberGlobalName";
+ // DPI_SchemaName, having type string
+ ParameterId["SchemaName"] = "datasourceSchemaName";
+ // DPI_ScriptText, having type string
+ ParameterId["ScriptText"] = "scriptText";
+ // DPI_SecondaryWhiteList, having type string
+ ParameterId["SecondaryWhiteList"] = "secondaryWhiteList";
+ // DPI_Server, having type string
+ ParameterId["Server"] = "datasourceServer";
+ // DPI_ServerNamePrompt, having type string
+ ParameterId["ServerNamePrompt"] = "serverNamePrompt";
+ // DPI_Service, having type string
+ ParameterId["Service"] = "datasourceService";
+ // DPI_ServiceNamePrompt, having type string
+ ParameterId["ServiceNamePrompt"] = "servicePrompt";
+ // DPI_SheetFormatting, having type string
+ ParameterId["SheetFormatting"] = "sheetFormatting";
+ // DPI_SlowMetadataSearchTerm, having type string
+ ParameterId["SlowMetadataSearchTerm"] = "slowMetadataSearchTerm";
+ // DPI_StandardConnectionName, having type string
+ ParameterId["StandardConnectionName"] = "datasourceStandardConnectionName";
+ // DPI_StandardConnectionPlaceholderText, having type string
+ ParameterId["StandardConnectionPlaceholderText"] = "standardConnectionPlaceholderText";
+ // DPI_StoredProcedureParameterTitle, having type string
+ ParameterId["StoredProcedureParameterTitle"] = "storedProcedureParameterTitle";
+ // DPI_TableAlias, having type string
+ ParameterId["TableAlias"] = "tableAlias";
+ // DPI_RightTableAlias, having type string
+ ParameterId["RightTableAlias"] = "rightTableAlias";
+ // DPI_TableCaption, having type string
+ ParameterId["TableCaption"] = "tableCaption";
+ // DPI_TableCollectionName, having type string
+ ParameterId["TableCollectionName"] = "tableCollectionName";
+ // DPI_TablePlaceholderText, having type string
+ ParameterId["TablePlaceholderText"] = "tablePlaceholderText";
+ // DPI_TableRanking, having type string
+ ParameterId["TableRanking"] = "tableRanking";
+ // DPI_TableSortKey, having type string
+ ParameterId["TableSortKey"] = "tableSortkey";
+ // DPI_TableTooltip, having type string
+ ParameterId["TableTooltip"] = "tableTooltip";
+ // DPI_TableToReplace, having type string
+ ParameterId["TableToReplace"] = "tableToReplace";
+ // DPI_TableWarningMessage, having type string
+ ParameterId["TableWarningMessage"] = "tableWarningMessage";
+ // DPI_TableauServerDatasourceDescription, having type string
+ ParameterId["TableauServerDatasourceDescription"] = "tableauServerDatasourceDescription";
+ // DPI_TableauServerDatasourceLastExtract, having type string
+ ParameterId["TableauServerDatasourceLastExtract"] = "tableauServerDatasourceLastExtract";
+ // DPI_TableauServerDatasourceModified, having type string
+ ParameterId["TableauServerDatasourceModified"] = "tableauServerDatasourceModified";
+ // DPI_TableauServerDatasourceOwner, having type string
+ ParameterId["TableauServerDatasourceOwner"] = "tableauServerDatasourceOwner";
+ // DPI_TableauServerDatasourcePath, having type string
+ ParameterId["TableauServerDatasourcePath"] = "tableauServerDatasourcePath";
+ // DPI_TableauServerFetchSearchQuery, having type string
+ ParameterId["TableauServerFetchSearchQuery"] = "tableauServerFetchSearchQuery";
+ // DPI_TableauServerName, having type string
+ ParameterId["TableauServerName"] = "tableauServerName";
+ // DPI_TableauServerProjectName, having type string
+ ParameterId["TableauServerProjectName"] = "tableauServerProjectName";
+ // DPI_TableauServerUsername, having type string
+ ParameterId["TableauServerUsername"] = "tableauServerUsername";
+ // DPI_TransportType, having type string
+ ParameterId["TransportType"] = "transportType";
+ // DPI_WarehouseName, having type string
+ ParameterId["WarehouseName"] = "datasourceWarehouseName";
+ // DPI_WorkgroupWorkbookName, having type string
+ ParameterId["WorkgroupWorkbookName"] = "workgroupWorkbookName";
+ // DPI_AnalyticsItemTooltip, having type string
+ ParameterId["AnalyticsItemTooltip"] = "analyticsItemTooltip";
+ // DPI_Description, having type string
+ ParameterId["Description"] = "description";
+ // DPI_DSClassCaption, having type string
+ ParameterId["DSClassCaption"] = "dsClassCaption";
+ // DPI_Formula, having type string
+ ParameterId["Formula"] = "formula";
+ // DPI_MessageText, having type string
+ ParameterId["MessageText"] = "messageText";
+ // DPI_Datasource, having type string
+ ParameterId["Datasource"] = "datasource";
+ // DPI_DatasourceSource, having type string
+ ParameterId["DatasourceSource"] = "datasourceSource";
+ // DPI_DatasourceTarget, having type string
+ ParameterId["DatasourceTarget"] = "datasourceTarget";
+ // DPI_FirstDatasource, having type string
+ ParameterId["FirstDatasource"] = "firstDatasource";
+ // DPI_NewDatasource, having type string
+ ParameterId["NewDatasource"] = "newDatasource";
+ // DPI_ParametersDatasource, having type string
+ ParameterId["ParametersDatasource"] = "parametersDatasource";
+ // DPI_PrimaryDatasource, having type string
+ ParameterId["PrimaryDatasource"] = "primaryDatasource";
+ // DPI_ConnectionDatabases, having type string[]
+ ParameterId["ConnectionDatabases"] = "connectionDatabases";
+ // DPI_ConnectionSchemas, having type string[]
+ ParameterId["ConnectionSchemas"] = "connectionSchemas";
+ // DPI_ConnectionWarehouses, having type string[]
+ ParameterId["ConnectionWarehouses"] = "connectionWarehouses";
+ // DPI_DSClasses, having type string[]
+ ParameterId["DSClasses"] = "dsClasses";
+ // DPI_PossibleChoices, having type string[]
+ ParameterId["PossibleChoices"] = "possibleChoices";
+ // DPI_StandardConnections, having type string[]
+ ParameterId["StandardConnections"] = "standardConnections";
+ // DPI_Strings, having type string[]
+ ParameterId["Strings"] = "strings";
+ // DPI_TableauServerProjectNames, having type string[]
+ ParameterId["TableauServerProjectNames"] = "tableauServerProjectNames";
+ // DPI_TableCaptions, having type string[]
+ ParameterId["TableCaptions"] = "tableCaptions";
+ // DPI_DataValues, having type object[]
+ ParameterId["DataValues"] = "dataValues";
+ // DPI_QueryBandErrors, having type object[]
+ ParameterId["QueryBandErrors"] = "queryBandErrors";
+ // DPI_QueryBandParameters, having type object[]
+ ParameterId["QueryBandParameters"] = "queryBandParameters";
+ // DPI_InitialSQLParameters, having type object[]
+ ParameterId["InitialSQLParameters"] = "initialSqlParameters";
+ // DPI_ConnectionAttributes, having type Dictionary(of string)
+ ParameterId["ConnectionAttributes"] = "connectionAttrs";
+ // DPI_ConnectionProps, having type Dictionary(of string)
+ ParameterId["ConnectionProps"] = "connectionProps";
+ // DPI_DisplayNameMap, having type Dictionary(of string)
+ ParameterId["DisplayNameMap"] = "displayNameMap";
+ // DPI_LookupTable, having type Dictionary(of string)
+ ParameterId["LookupTable"] = "lookupTable";
+ // DPI_OAuthAttrs, having type Dictionary(of string)
+ ParameterId["OAuthAttrs"] = "oauthAttrs";
+ // DPI_StringMap, having type Dictionary(of string)
+ ParameterId["StringMap"] = "stringMap";
+ // DPI_TableRankingMap, having type Dictionary(of string)
+ ParameterId["TableRankingMap"] = "tableRankingMap";
+ // DPI_WDCAttributes, having type Dictionary(of string)
+ ParameterId["WDCAttributes"] = "wdcAttrs";
+ // DPI_ConnectorAttributes, having type Dictionary(of string)
+ ParameterId["ConnectorAttributes"] = "connectorAttrs";
+ // DPI_TableRelevanceParams, having type Dictionary(of string)
+ ParameterId["TableRelevanceParams"] = "tableRelevanceParams";
+ // DPI_ActualParameterParameter, having type string
+ ParameterId["ActualParameterParameter"] = "actualParameterParameter";
+ // DPI_DataColumnName, having type string
+ ParameterId["DataColumnName"] = "dataColumnName";
+ // DPI_LHSDataColumnName, having type string
+ ParameterId["LHSDataColumnName"] = "lhsDataColumnName";
+ // DPI_RHSDataColumnName, having type string
+ ParameterId["RHSDataColumnName"] = "rhsDataColumnName";
+ // DPI_FullCubeName, having type string
+ ParameterId["FullCubeName"] = "fullCubeName";
+ // DPI_FullVariableName, having type string
+ ParameterId["FullVariableName"] = "fullVariableName";
+ // DPI_SemanticRole, having type string
+ ParameterId["SemanticRole"] = "semanticRole";
+ // DPI_StoredProcedureName, having type string
+ ParameterId["StoredProcedureName"] = "storedProcName";
+ // DPI_TableName, having type string
+ ParameterId["TableName"] = "tableName";
+ // DPI_AddedTableNames, having type string[]
+ ParameterId["AddedTableNames"] = "addedTableNames";
+ // DPI_CoalesceGroupFields, having type string[]
+ ParameterId["CoalesceGroupFields"] = "coalesceGroupFields";
+ // DPI_FieldNames, having type string[]
+ ParameterId["FieldNames"] = "fieldNames";
+ // DPI_JoinFieldAliases, having type string[]
+ ParameterId["JoinFieldAliases"] = "joinField_aliases";
+ // DPI_JoinInfoFields, having type string[]
+ ParameterId["JoinInfoFields"] = "joinInfoFields";
+ // DPI_PivotGroupFields, having type string[]
+ ParameterId["PivotGroupFields"] = "pivotGroupFields";
+ // DPI_RemovedTableNames, having type string[]
+ ParameterId["RemovedTableNames"] = "removedTableNames";
+ // DPI_StoredProcedures, having type string[]
+ ParameterId["StoredProcedures"] = "storedProcedures";
+ // DPI_TableNames, having type string[]
+ ParameterId["TableNames"] = "tableNames";
+ // DPI_ColumnName, having type string
+ ParameterId["ColumnName"] = "columnName";
+ // DPI_FieldName, having type string
+ ParameterId["FieldName"] = "fn";
+ // DPI_GoogleSheetThumbnailImage, having type string
+ ParameterId["GoogleSheetThumbnailImage"] = "googleSheetThumbnailImage";
+ // DPI_AttrMDWPassword, having type string
+ ParameterId["AttrMDWPassword"] = "widgetAttrMdwPassword";
+ // DPI_AttrPassword, having type string
+ ParameterId["AttrPassword"] = "widgetAttrPassword";
+ // DPI_DatasourcePassword, having type string
+ ParameterId["DatasourcePassword"] = "datasourcePassword";
+ // DPI_FederatedKeychain, having type string
+ ParameterId["FederatedKeychain"] = "federatedKeychain";
+ // DPI_DataParameterID, having type string
+ ParameterId["DataParameterID"] = "dataParamType";
+ // DPI_ConnectServerWidgetType, having type ConnectServerWidgetType
+ ParameterId["ConnectServerWidgetType"] = "connectServerWidgetType";
+ // DPI_AuthenticationMode, having type Mode
+ ParameterId["AuthenticationMode"] = "authMode";
+ // DPI_ReconnectAuthMode, having type ReconnectMode
+ ParameterId["ReconnectAuthMode"] = "reconnectAuthMode";
+ // DPI_CurrentAuthOption, having type AuthOption
+ ParameterId["CurrentAuthOption"] = "currAuthOption";
+ // DPI_AuthOptionList, having type AuthOption[]
+ ParameterId["AuthOptionList"] = "authOptions";
+ // DPI_ConnectionSpecificationType, having type ConnectionSpecificationType
+ ParameterId["ConnectionSpecificationType"] = "connectionSpecificationType";
+ // DPI_DataType, having type DataType
+ ParameterId["DataType"] = "dataType";
+ // DPI_LHSDataType, having type DataType
+ ParameterId["LHSDataType"] = "lhsDataType";
+ // DPI_RHSDataType, having type DataType
+ ParameterId["RHSDataType"] = "rhsDataType";
+ // DPI_DefaultFieldRole, having type FieldRole
+ ParameterId["DefaultFieldRole"] = "defaultFieldRole";
+ // DPI_FieldRole, having type FieldRole
+ ParameterId["FieldRole"] = "fieldRole";
+ // DPI_DefaultFieldType, having type FieldType
+ ParameterId["DefaultFieldType"] = "defaultFieldType";
+ // DPI_FieldType, having type FieldType
+ ParameterId["FieldType"] = "fieldType";
+ // DPI_FieldTypeList, having type FieldType[]
+ ParameterId["FieldTypeList"] = "fieldTypeList";
+ // DPI_FieldTypeListDetail, having type FieldType[]
+ ParameterId["FieldTypeListDetail"] = "fieldTypeListDetail";
+ // DPI_AggType, having type AggType
+ ParameterId["AggType"] = "aggregation";
+ // DPI_DefaultAggType, having type AggType
+ ParameterId["DefaultAggType"] = "defaultAggregation";
+ // DPI_ForecastAgg, having type AggType
+ ParameterId["ForecastAgg"] = "forecastSummarizeTo";
+ // DPI_ForecastAutoAgg, having type AggType
+ ParameterId["ForecastAutoAgg"] = "forecastAutoSummarizeTo";
+ // DPI_ForecastAutoRangeUnits, having type AggType
+ ParameterId["ForecastAutoRangeUnits"] = "forecastAutoRangeUnits";
+ // DPI_ForecastEndOfRangeUnits, having type AggType
+ ParameterId["ForecastEndOfRangeUnits"] = "forecastEndOfRangeUnits";
+ // DPI_ForecastNextRangeUnits, having type AggType
+ ParameterId["ForecastNextRangeUnits"] = "forecastNextRangeUnits";
+ // DPI_SourceAgg, having type AggType
+ ParameterId["SourceAgg"] = "sourceAggregation";
+ // DPI_TargetAgg, having type AggType
+ ParameterId["TargetAgg"] = "targetAggregation";
+ // DPI_AggregateByAggTypes, having type AggType[]
+ ParameterId["AggregateByAggTypes"] = "aggregateByAggTypes";
+ // DPI_AggregationValues, having type AggType[]
+ ParameterId["AggregationValues"] = "aggregationValues";
+ // DPI_SortAggValues, having type AggType[]
+ ParameterId["SortAggValues"] = "sortAggValues";
+ // DPI_ColumnClass, having type ColumnClass
+ ParameterId["ColumnClass"] = "columnClass";
+ // DPI_ConnectionWidgetType, having type ConnectionWidgetType
+ ParameterId["ConnectionWidgetType"] = "connectionWidgetType";
+ // DPI_TablePillIcon, having type TablePillIcon
+ ParameterId["TablePillIcon"] = "tablePillIconType";
+ // DPI_EnumeratedEntityType, having type EntityType
+ ParameterId["EnumeratedEntityType"] = "enumeratedEntityType";
+ // DPI_PickEntitySearchType, having type PickEntitySearchType
+ ParameterId["PickEntitySearchType"] = "entitySearchType";
+ // DPI_ExpressionOp, having type Op
+ ParameterId["ExpressionOp"] = "expressionOp";
+ // DPI_ExpressionOperatorCaption, having type ExpressionOperatorCaptionPresModel
+ ParameterId["ExpressionOperatorCaption"] = "expressionOperatorCaption";
+ // DPI_RelationalExperessionOps, having type ExpressionOperatorCaptionPresModel[]
+ ParameterId["RelationalExperessionOps"] = "relationalExpressionOps";
+ // DPI_HierarchyExpressionOps, having type ExpressionOperatorCaptionPresModel[]
+ ParameterId["HierarchyExpressionOps"] = "hierarchyExpressionOps";
+ // DPI_DefaultSortDirection, having type SortDirection
+ ParameterId["DefaultSortDirection"] = "defSortOrder";
+ // DPI_SortDirection, having type SortDirection
+ ParameterId["SortDirection"] = "sortOrder";
+ // DPI_SortDirectionValues, having type SortDirection[]
+ ParameterId["SortDirectionValues"] = "sortDirectionValues";
+ // DPI_CubeMetadataCategory, having type CubeMetadataCategory
+ ParameterId["CubeMetadataCategory"] = "cubeMetadataCategory";
+ // DPI_CubeMetadataCategories, having type CubeMetadataCategory[]
+ ParameterId["CubeMetadataCategories"] = "cubeMetadataCategories";
+ // DPI_GoogleBasicInfoType, having type GoogleBasicInfoType
+ ParameterId["GoogleBasicInfoType"] = "googleBasicInfoType";
+ // DPI_GoogleAnalyticsDateRangeOptionType, having type DateRange
+ ParameterId["GoogleAnalyticsDateRangeOptionType"] = "googleAnalyticsDateRangeOptionType";
+ // DPI_TableCalcType, having type TableCalcType
+ ParameterId["TableCalcType"] = "tableCalcType";
+ // DPI_TableCalcTypeValues, having type TableCalcType[]
+ ParameterId["TableCalcTypeValues"] = "tableCalcTypeValues";
+ // DPI_RelativeAddress, having type RelativeAddress
+ ParameterId["RelativeAddress"] = "relativeAddress";
+ // DPI_RelativeValues, having type RelativeAddress[]
+ ParameterId["RelativeValues"] = "relativeValues";
+ // DPI_OrderingType, having type OrderingType
+ ParameterId["OrderingType"] = "orderingType";
+ // DPI_OrderingTypeValues, having type OrderingType[]
+ ParameterId["OrderingTypeValues"] = "orderingTypeValues";
+ // DPI_CategoricalBinItemType, having type CategoricalBinItemType
+ ParameterId["CategoricalBinItemType"] = "categoricalBinItemType";
+ // DPI_AuthenticationInfos, having type AuthenticationSettingsPresModel
+ ParameterId["AuthenticationInfos"] = "authInfo";
+ // DPI_ConnectionWidgetParams, having type ConnectionParamsPresModel
+ ParameterId["ConnectionWidgetParams"] = "widgetConnectionParams";
+ // DPI_ConnectionSettings, having type ConnectionSettingsPresModel
+ ParameterId["ConnectionSettings"] = "connectionSettings";
+ // DPI_ReconnectAuthenticationSettings, having type AuthenticationSettingsPresModel
+ ParameterId["ReconnectAuthenticationSettings"] = "reconnectAuthSettings";
+ // DPI_CubeConnectionSpecificationOption, having type CubeConnectionSpecificationOptionPresModel
+ ParameterId["CubeConnectionSpecificationOption"] = "cubeConnectionSpecificationOption";
+ // DPI_CubeConnectionSpecificationOptions, having type CubeConnectionSpecificationOptionPresModel[]
+ ParameterId["CubeConnectionSpecificationOptions"] = "cubeConnectionSpecificationOptions";
+ // DPI_CubeConnectionSpecification, having type CubeConnectionSpecificationPresModel
+ ParameterId["CubeConnectionSpecification"] = "cubeConnectionSpecification";
+ // DPI_ConnectionSettingsOption, having type ConnectionSettingsOptionPresModel
+ ParameterId["ConnectionSettingsOption"] = "connectionSettingsOption";
+ // DPI_ConnectionSettingsOptions, having type ConnectionSettingsOptionPresModel[]
+ ParameterId["ConnectionSettingsOptions"] = "connectionSettingsOptions";
+ // DPI_StringCollation, having type StringCollationPresModel
+ ParameterId["StringCollation"] = "stringCollation";
+ // DPI_DatabaseEnumeration, having type DatabaseEnumerationPresModel
+ ParameterId["DatabaseEnumeration"] = "databaseEnumeration";
+ // DPI_SchemaEnumeration, having type SchemaEnumerationPresModel
+ ParameterId["SchemaEnumeration"] = "schemaEnumeration";
+ // DPI_StandardConnectionEnumeration, having type StandardConnectionEnumerationPresModel
+ ParameterId["StandardConnectionEnumeration"] = "standardConnectionEnumeration";
+ // DPI_StoredProcedureEnumeration, having type StoredProcedureEnumerationPresModel
+ ParameterId["StoredProcedureEnumeration"] = "storedProcedureEnumeration";
+ // DPI_TableEnumeration, having type TableEnumerationPresModel
+ ParameterId["TableEnumeration"] = "tableEnumeration";
+ // DPI_WarehouseEnumeration, having type WarehouseEnumerationPresModel
+ ParameterId["WarehouseEnumeration"] = "warehouseEnumeration";
+ // DPI_SlowMetadataSchemaList, having type SlowMetadataSchemaListPresModel
+ ParameterId["SlowMetadataSchemaList"] = "slowMetadataSchemaList";
+ // DPI_SlowMetadataTableList, having type SlowMetadataTableListPresModel
+ ParameterId["SlowMetadataTableList"] = "slowMetadataTableList";
+ // DPI_CubeCatalog, having type CubeCatalogPresModel
+ ParameterId["CubeCatalog"] = "cubeCatalog";
+ // DPI_CubeCatalogs, having type CubeCatalogPresModel[]
+ ParameterId["CubeCatalogs"] = "cubeCatalogs";
+ // DPI_CubeCatalogEnumeration, having type CubeCatalogEnumerationPresModel
+ ParameterId["CubeCatalogEnumeration"] = "cubeCatalogEnumeration";
+ // DPI_Cube, having type CubePresModel
+ ParameterId["Cube"] = "cube";
+ // DPI_Cubes, having type CubePresModel[]
+ ParameterId["Cubes"] = "cubes";
+ // DPI_CubeEnumeration, having type CubeEnumerationPresModel
+ ParameterId["CubeEnumeration"] = "cubeEnumeration";
+ // DPI_GoogleAnalyticsBasicItem, having type GoogleAnalyticsBasicItemPresModel
+ ParameterId["GoogleAnalyticsBasicItem"] = "googleAnalyticsBasicItem";
+ // DPI_GAMeasureSets, having type GoogleAnalyticsBasicItemPresModel[]
+ ParameterId["GAMeasureSets"] = "gaMeasureSets";
+ // DPI_GoogleAnalyticsViews, having type GoogleAnalyticsBasicItemPresModel[]
+ ParameterId["GoogleAnalyticsViews"] = "googleAnalyticsViews";
+ // DPI_GoogleAnalyticsProperties, having type GoogleAnalyticsBasicItemPresModel[]
+ ParameterId["GoogleAnalyticsProperties"] = "googleAnalyticsProperties";
+ // DPI_GoogleBasicInfoItems, having type GoogleAnalyticsBasicItemPresModel[]
+ ParameterId["GoogleBasicInfoItems"] = "googleAnalyticsAccounts";
+ // DPI_GoogleAnalyticsComplexItem, having type GoogleAnalyticsComplexItemPresModel
+ ParameterId["GoogleAnalyticsComplexItem"] = "googleAnalyticsComplexItem";
+ // DPI_GoogleAnalyticsPossibleDimensions, having type GoogleAnalyticsComplexItemPresModel[]
+ ParameterId["GoogleAnalyticsPossibleDimensions"] = "googleAnalyticsPossibleDimensions";
+ // DPI_GoogleAnalyticsPossibleMeasures, having type GoogleAnalyticsComplexItemPresModel[]
+ ParameterId["GoogleAnalyticsPossibleMeasures"] = "googleAnalyticsPossibleMeasures";
+ // DPI_GoogleAnalyticsPossibleSegments, having type GoogleAnalyticsComplexItemPresModel[]
+ ParameterId["GoogleAnalyticsPossibleSegments"] = "googleAnalyticsPossibleSegments";
+ // DPI_GoogleAnalyticsSelectedDimensions, having type GoogleAnalyticsComplexItemPresModel[]
+ ParameterId["GoogleAnalyticsSelectedDimensions"] = "googleAnalyticsSelectedDimensions";
+ // DPI_GoogleAnalyticsSelectedMeasures, having type GoogleAnalyticsComplexItemPresModel[]
+ ParameterId["GoogleAnalyticsSelectedMeasures"] = "googleAnalyticsSelectedMeasures";
+ // DPI_GoogleAnalyticsDateRangeOption, having type GoogleAnalyticsDateRangeOptionPresModel
+ ParameterId["GoogleAnalyticsDateRangeOption"] = "googleAnalyticsDateRangeOption";
+ // DPI_GoogleAnalyticsDateRangeOptions, having type GoogleAnalyticsDateRangeOptionPresModel[]
+ ParameterId["GoogleAnalyticsDateRangeOptions"] = "googleAnalyticsDateRangeOptions";
+ // DPI_GoogleAnalyticsEndDate, having type GoogleAnalyticsDatePresModel
+ ParameterId["GoogleAnalyticsEndDate"] = "googleAnalyticsEndDate";
+ // DPI_GoogleAnalyticsStartDate, having type GoogleAnalyticsDatePresModel
+ ParameterId["GoogleAnalyticsStartDate"] = "googleAnalyticsStartDate";
+ // DPI_GoogleAnalyticsDateRange, having type GoogleAnalyticsDateRangePresModel
+ ParameterId["GoogleAnalyticsDateRange"] = "googleAnalyticsDateRange";
+ // DPI_GoogleAnalyticsQueryPartitioning, having type GoogleAnalyticsQueryPartitioningPresModel
+ ParameterId["GoogleAnalyticsQueryPartitioning"] = "googleAnalyticsQueryPartitioning";
+ // DPI_GAConnectionDescription, having type GoogleAnalyticsConnectionDescriptionPresModel
+ ParameterId["GAConnectionDescription"] = "gaConnectionDescription";
+ // DPI_GoogleSheetItem, having type GoogleSheetItemPresModel
+ ParameterId["GoogleSheetItem"] = "googleSheetItem";
+ // DPI_GoogleSheetItems, having type GoogleSheetItemPresModel[]
+ ParameterId["GoogleSheetItems"] = "googleSheetItems";
+ // DPI_GoogleSheetsListPresModel, having type GoogleSheetsListPresModel
+ ParameterId["GoogleSheetsListPresModel"] = "googleSheetsList";
+ // DPI_GoogleSheetPanePresModel, having type GoogleSheetPanePresModel
+ ParameterId["GoogleSheetPanePresModel"] = "googleSheetPane";
+ // DPI_TableauServerConnectionDescription, having type TableauServerConnectionDescriptionPresModel
+ ParameterId["TableauServerConnectionDescription"] = "tableauServerConnectionDescription";
+ // DPI_InitialSQLPresModel, having type InitialSQLPresModel
+ ParameterId["InitialSQLPresModel"] = "initialSqlPresModel";
+ // DPI_QueryBandingPresModel, having type QueryBandingPresModel
+ ParameterId["QueryBandingPresModel"] = "queryBandingPresModel";
+ // DPI_SlowMetadata, having type SlowMetadataPresModel
+ ParameterId["SlowMetadata"] = "slowMetadata";
+ // DPI_SlowMetadataSchemaSearchPresModel, having type SlowMetadataSearchPresModel
+ ParameterId["SlowMetadataSchemaSearchPresModel"] = "slowMetadataSchemaSearch";
+ // DPI_SlowMetadataTableSearchPresModel, having type SlowMetadataSearchPresModel
+ ParameterId["SlowMetadataTableSearchPresModel"] = "slowMetadataTableSearch";
+ // DPI_TableauServerProjectsPresModel, having type TableauServerProjectsPresModel
+ ParameterId["TableauServerProjectsPresModel"] = "tableauServerProjectsPresmodel";
+ // DPI_TableauServerDataSourcePresModel, having type TableauServerDataSourcePresModel
+ ParameterId["TableauServerDataSourcePresModel"] = "tableauServerDataSourcePresmodel";
+ // DPI_TableauServerDataSourcePresModels, having type TableauServerDataSourcePresModel[]
+ ParameterId["TableauServerDataSourcePresModels"] = "tableauServerDataSourcePresmodels";
+ // DPI_TableauServerDataSourcesPresModel, having type TableauServerDataSourcesPresModel
+ ParameterId["TableauServerDataSourcesPresModel"] = "tableauServerDataSourcesPresmodel";
+ // DPI_TableauServerDataPresModel, having type TableauServerDataPresModel
+ ParameterId["TableauServerDataPresModel"] = "tableauServerDataPresmodel";
+ // DPI_StoredProcedureParameterPresModel, having type StoredProcedureParameterPresModel
+ ParameterId["StoredProcedureParameterPresModel"] = "storedProcedureParameter";
+ // DPI_StoredProcedureParametersPresModel, having type StoredProcedureParameterPresModel[]
+ ParameterId["StoredProcedureParametersPresModel"] = "storedProcedureParameters";
+ // DPI_CustomSQLInfo, having type CustomSQLInfoPresModel
+ ParameterId["CustomSQLInfo"] = "customSqlInfo";
+ // DPI_ConnectionTableInfo, having type ConnectionTableInfoPresModel
+ ParameterId["ConnectionTableInfo"] = "connectionTableInfo";
+ // DPI_TableInfos, having type ConnectionTableInfoPresModel[]
+ ParameterId["TableInfos"] = "tableInfos";
+ // DPI_ConnectionDescription, having type ConnectionDescriptionPresModel
+ ParameterId["ConnectionDescription"] = "connectionDescription";
+ // DPI_DataSourceParserValidationMode, having type DataSourceParserValidationMode
+ ParameterId["DataSourceParserValidationMode"] = "dataSourceParserValidationMode";
+ // DPI_OAuthCredentialTypeInfo, having type OAuthCredentialTypeInfoPresModel
+ ParameterId["OAuthCredentialTypeInfo"] = "oauthCredentialTypeInfo";
+ // DPI_OAuthCredentialTypeInfos, having type OAuthCredentialTypeInfoPresModel[]
+ ParameterId["OAuthCredentialTypeInfos"] = "oauthCredentialTypeInfos";
+ // DPI_OAuthSettings, having type OAuthSettingsPresModel
+ ParameterId["OAuthSettings"] = "oauthSettings";
+ // DPI_CredentialTypePropertiesFlag, having type CredentialTypePropertiesFlag
+ ParameterId["CredentialTypePropertiesFlag"] = "credentialTypePropertiesFlag";
+ // DPI_CredentialTypePropertiesFlags, having type CredentialTypePropertiesFlag[]
+ ParameterId["CredentialTypePropertiesFlags"] = "credentialTypePropertiesFlags";
+ // DPI_ConnectionTypeEnum, having type ConnectionTypeEnum
+ ParameterId["ConnectionTypeEnum"] = "connectionTypeEnum";
+ // DPI_ConnectorType, having type ConnectorType
+ ParameterId["ConnectorType"] = "connectorType";
+ // DPI_PdfPagePicker, having type PdfPagePickerPresModel
+ ParameterId["PdfPagePicker"] = "pdfPagePicker";
+ // DPI_ActivateNew, having type bool
+ ParameterId["ActivateNew"] = "activateNew";
+ // DPI_AddActions, having type bool
+ ParameterId["AddActions"] = "addActions";
+ // DPI_AddAsFloating, having type bool
+ ParameterId["AddAsFloating"] = "addAsFloating";
+ // DPI_AddColorDictionary, having type bool
+ ParameterId["AddColorDictionary"] = "addColorDictionary";
+ // DPI_AddDroplines, having type bool
+ ParameterId["AddDroplines"] = "addDroplines";
+ // DPI_AddHeaders, having type bool
+ ParameterId["AddHeaders"] = "addHeaders";
+ // DPI_AddHighlighting, having type bool
+ ParameterId["AddHighlighting"] = "addHighlighting";
+ // DPI_AddImageDictionary, having type bool
+ ParameterId["AddImageDictionary"] = "addImageDictionary";
+ // DPI_AddMarkLabels, having type bool
+ ParameterId["AddMarkLabels"] = "addMarkLabels";
+ // DPI_AddPages, having type bool
+ ParameterId["AddPages"] = "addPages";
+ // DPI_AddSelection, having type bool
+ ParameterId["AddSelection"] = "addSelection";
+ // DPI_AddToFolder, having type bool
+ ParameterId["AddToFolder"] = "addToFolder";
+ // DPI_AddVizData, having type bool
+ ParameterId["AddVizData"] = "addVizData";
+ // DPI_AlertConditionMet, having type bool
+ ParameterId["AlertConditionMet"] = "alertConditionMet";
+ // DPI_AllFields, having type bool
+ ParameterId["AllFields"] = "allFields";
+ // DPI_AllOnEmpty, having type bool
+ ParameterId["AllOnEmpty"] = "allOnEmpty";
+ // DPI_AllPages, having type bool
+ ParameterId["AllPages"] = "includeAllPages";
+ // DPI_AllowPreviewSizeChange, having type bool
+ ParameterId["AllowPreviewSizeChange"] = "allowPreviewSizeChange";
+ // DPI_AllSelectedIsEffectivelyRangeTypeAll, having type bool
+ ParameterId["AllSelectedIsEffectivelyRangeTypeAll"] = "allSelectedIsEffectivelyRangeTypeAll";
+ // DPI_AllStoryPoints, having type bool
+ ParameterId["AllStoryPoints"] = "allStorypoints";
+ // DPI_AllowAllRange, having type bool
+ ParameterId["AllowAllRange"] = "allowAllRange";
+ // DPI_AllowCreatingNewParameters, having type bool
+ ParameterId["AllowCreatingNewParameters"] = "allowCreatingNewParameters";
+ // DPI_AllowDuplicateFieldDropOnFilterShelf, having type bool
+ ParameterId["AllowDuplicateFieldDropOnFilterShelf"] = "allowDuplicateFieldDropOnFilterShelf";
+ // DPI_AllowFilterPreset, having type bool
+ ParameterId["AllowFilterPreset"] = "allowFilterPreset";
+ // DPI_AllowHoverActions, having type bool
+ ParameterId["AllowHoverActions"] = "allowHoverActions";
+ // DPI_AllowHyphenation, having type bool
+ ParameterId["AllowHyphenation"] = "allowHyphenation";
+ // DPI_AllowJoinOnCalc, having type bool
+ ParameterId["AllowJoinOnCalc"] = "allowJoinOnCalc";
+ // DPI_AllowManualRange, having type bool
+ ParameterId["AllowManualRange"] = "allowManualRange";
+ // DPI_AllowMapping, having type bool
+ ParameterId["AllowMapping"] = "allowMapping";
+ // DPI_AllowMultiSelect, having type bool
+ ParameterId["AllowMultiSelect"] = "allowMultiSelect";
+ // DPI_AllowNull, having type bool
+ ParameterId["AllowNull"] = "allowNull";
+ // DPI_AllowPanZoom, having type bool
+ ParameterId["AllowPanZoom"] = "allowPanZoom";
+ // DPI_AllowPatternBased, having type bool
+ ParameterId["AllowPatternBased"] = "allowPatternBasedUnion";
+ // DPI_AllowPromptText, having type bool
+ ParameterId["AllowPromptText"] = "allowPromptText";
+ // DPI_AllowSaveDataSource, having type bool
+ ParameterId["AllowSaveDataSource"] = "allowSaveDataSource";
+ // DPI_AllowWholeDate, having type bool
+ ParameterId["AllowWholeDate"] = "allowWholeDate";
+ // DPI_AllowWork, having type bool
+ ParameterId["AllowWork"] = "allowWork";
+ // DPI_AllowWrap, having type bool
+ ParameterId["AllowWrap"] = "allowWrap";
+ // DPI_AppIs32Bit, having type bool
+ ParameterId["AppIs32Bit"] = "appIs32Bit";
+ // DPI_AppIs64Bit, having type bool
+ ParameterId["AppIs64Bit"] = "appIs64Bit";
+ // DPI_AppIsBeta, having type bool
+ ParameterId["AppIsBeta"] = "appIsBeta";
+ // DPI_AppIsOEM, having type bool
+ ParameterId["AppIsOEM"] = "appIsOem";
+ // DPI_AppendTde, having type bool
+ ParameterId["AppendTde"] = "appendTde";
+ // DPI_ApplyColors, having type bool
+ ParameterId["ApplyColors"] = "applyColors";
+ // DPI_ApplyNewSelection, having type bool
+ ParameterId["ApplyNewSelection"] = "applyNewSelection";
+ // DPI_AreConfidenceBandsValid, having type bool
+ ParameterId["AreConfidenceBandsValid"] = "areConfidenceBandsValid";
+ // DPI_AreDataSourceFiltersVisible, having type bool
+ ParameterId["AreDataSourceFiltersVisible"] = "areDataSourceFiltersVisible";
+ // DPI_AreExtractFiltersEnabled, having type bool
+ ParameterId["AreExtractFiltersEnabled"] = "areExtractFiltersEnabled";
+ // DPI_AreTotalsUsed, having type bool
+ ParameterId["AreTotalsUsed"] = "areTotalsUsed";
+ // DPI_AtTheLevelFieldIsInvalid, having type bool
+ ParameterId["AtTheLevelFieldIsInvalid"] = "atTheLevelFieldIsInvalid";
+ // DPI_AutoURL, having type bool
+ ParameterId["AutoURL"] = "autoUrl";
+ // DPI_AutoUpdate, having type bool
+ ParameterId["AutoUpdate"] = "autoUpdate";
+ // DPI_BackingSheetIsDashboard, having type bool
+ ParameterId["BackingSheetIsDashboard"] = "isBackingSheetDashboard";
+ // DPI_BeginDataSourcePresModelUpdate, having type bool
+ ParameterId["BeginDataSourcePresModelUpdate"] = "beginDataSourcePresModelUpdate";
+ // DPI_AggregateDrillUp, having type bool
+ ParameterId["AggregateDrillUp"] = "boolAggregateDrillUp";
+ // DPI_BoxplotMarkExclusion, having type bool
+ ParameterId["BoxplotMarkExclusion"] = "boxplotMarkExclusion";
+ // DPI_BreakPageOnPane, having type bool
+ ParameterId["BreakPageOnPane"] = "breakPageOnPane";
+ // DPI_BrushLegends, having type bool
+ ParameterId["BrushLegends"] = "brushLegends";
+ // DPI_CachePresModels, having type bool
+ ParameterId["CachePresModels"] = "cachePresModels";
+ // DPI_CanAddConnections, having type bool
+ ParameterId["CanAddConnections"] = "canAddConnections";
+ // DPI_SortPillCanBeDragged, having type bool
+ ParameterId["SortPillCanBeDragged"] = "sortPillCanBeDragged";
+ // DPI_CanAddTable, having type bool
+ ParameterId["CanAddTable"] = "canAddTable";
+ // DPI_CanAnalyzeData, having type bool
+ ParameterId["CanAnalyzeData"] = "canAnalyzeData";
+ // DPI_CanChangeDataType, having type bool
+ ParameterId["CanChangeDataType"] = "canChangeDataType";
+ // DPI_CanChangeSemanticRole, having type bool
+ ParameterId["CanChangeSemanticRole"] = "canChangeSemanticRole";
+ // DPI_CanDerive, having type bool
+ ParameterId["CanDerive"] = "canDerive";
+ // DPI_CanDrop, having type bool
+ ParameterId["CanDrop"] = "canDrop";
+ // DPI_CanEdit, having type bool
+ ParameterId["CanEdit"] = "canEdit";
+ // DPI_CanEditLegendColor, having type bool
+ ParameterId["CanEditLegendColor"] = "canEditLegendColor";
+ // DPI_CanEnableCenter, having type bool
+ ParameterId["CanEnableCenter"] = "canEnableCenter";
+ // DPI_CanShowAdvancedSettings, having type bool
+ ParameterId["CanShowAdvancedSettings"] = "canShowAdvancedSettings";
+ // DPI_CanEnableFilterStateButton, having type bool
+ ParameterId["CanEnableFilterStateButton"] = "canEnableFilterStateButton";
+ // DPI_CanFloat, having type bool
+ ParameterId["CanFloat"] = "canFloat";
+ // DPI_CanHaveTitle, having type bool
+ ParameterId["CanHaveTitle"] = "canHaveTitle";
+ // DPI_CanIgnoreUpdate, having type bool
+ ParameterId["CanIgnoreUpdate"] = "canIgnoreUpdate";
+ // DPI_CanNavigateBack, having type bool
+ ParameterId["CanNavigateBack"] = "canNavigateBack";
+ // DPI_CanNavigateForward, having type bool
+ ParameterId["CanNavigateForward"] = "canNavigateForward";
+ // DPI_CanScrollX, having type bool
+ ParameterId["CanScrollX"] = "canScrollX";
+ // DPI_CanScrollY, having type bool
+ ParameterId["CanScrollY"] = "canScrollY";
+ // DPI_CanSetDomain, having type bool
+ ParameterId["CanSetDomain"] = "canSetDomain";
+ // DPI_CanSetMapUnit, having type bool
+ ParameterId["CanSetMapUnit"] = "canSetMapUnit";
+ // DPI_CanShowApplyButton, having type bool
+ ParameterId["CanShowApplyButton"] = "canShowApplyButton";
+ // DPI_CanShowFilterStateButton, having type bool
+ ParameterId["CanShowFilterStateButton"] = "canShowFilterStateButton";
+ // DPI_CanShowMoreFewerButton, having type bool
+ ParameterId["CanShowMoreFewerButton"] = "canShowMoreFewerButton";
+ // DPI_CanShowSyncClientOptions, having type bool
+ ParameterId["CanShowSyncClientOptions"] = "canShowSyncClientOptions";
+ // DPI_CanSort, having type bool
+ ParameterId["CanSort"] = "canSort";
+ // DPI_CanSortOrdinally, having type bool
+ ParameterId["CanSortOrdinally"] = "canSortOrdinal";
+ // DPI_CanToggleAutomaticDrill, having type bool
+ ParameterId["CanToggleAutomaticDrill"] = "canToggleAutomaticDrill";
+ // DPI_CanToggleGeographicSearch, having type bool
+ ParameterId["CanToggleGeographicSearch"] = "canToggleGeographicSearch";
+ // DPI_CanToggleMapScale, having type bool
+ ParameterId["CanToggleMapScale"] = "canToggleMapScale";
+ // DPI_CanUseFullColorRange, having type bool
+ ParameterId["CanUseFullColorRange"] = "canUseFullColorRange";
+ // DPI_CanAddToDrillPath, having type bool
+ ParameterId["CanAddToDrillPath"] = "canAddToDrillPath";
+ // DPI_CenterHorizontally, having type bool
+ ParameterId["CenterHorizontally"] = "centerHorizontally";
+ // DPI_CenterVertically, having type bool
+ ParameterId["CenterVertically"] = "centerVertically";
+ // DPI_ChangeAllFields, having type bool
+ ParameterId["ChangeAllFields"] = "changeAllFields";
+ // DPI_Changed, having type bool
+ ParameterId["Changed"] = "changed";
+ // DPI_ClearBrushing, having type bool
+ ParameterId["ClearBrushing"] = "clearBrushing";
+ // DPI_ClearSort, having type bool
+ ParameterId["ClearSort"] = "clearSort";
+ // DPI_ClearView, having type bool
+ ParameterId["ClearView"] = "clearView";
+ // DPI_Collapsed, having type bool
+ ParameterId["Collapsed"] = "collapsed";
+ // DPI_ConsolidateInCommit, having type bool
+ ParameterId["ConsolidateInCommit"] = "consolidateInCommit";
+ // DPI_ClusterEnableScaledCheckbox, having type bool
+ ParameterId["ClusterEnableScaledCheckbox"] = "clusterEnableScaledCheckbox";
+ // DPI_CommitPillFinished, having type bool
+ ParameterId["CommitPillFinished"] = "commitPillFinished";
+ // DPI_CompressArrays, having type bool
+ ParameterId["CompressArrays"] = "compressArrays";
+ // DPI_ComputeCompoundedRate, having type bool
+ ParameterId["ComputeCompoundedRate"] = "computeCompoundedRate";
+ // DPI_ConfidenceIntervalAllowed, having type bool
+ ParameterId["ConfidenceIntervalAllowed"] = "confidenceIntervalAllowed";
+ // DPI_ConfigIsDesktopStandard, having type bool
+ ParameterId["ConfigIsDesktopStandard"] = "configIsDesktopStandard";
+ // DPI_ConfigIsInteractor, having type bool
+ ParameterId["ConfigIsInteractor"] = "configIsInteractor";
+ // DPI_ConfigIsPublic, having type bool
+ ParameterId["ConfigIsPublic"] = "configIsPublic";
+ // DPI_ConfigIsReader, having type bool
+ ParameterId["ConfigIsReader"] = "configIsReader";
+ // DPI_ContainsQuant, having type bool
+ ParameterId["ContainsQuant"] = "containsQuant";
+ // DPI_ContainsValidDatasources, having type bool
+ ParameterId["ContainsValidDatasources"] = "containsValidDatasources";
+ // DPI_ControllerMissing, having type bool
+ ParameterId["ControllerMissing"] = "controllerMissing";
+ // DPI_CreateExtractForPublish, having type bool
+ ParameterId["CreateExtractForPublish"] = "createExtractForPublish";
+ // DPI_CrossTab, having type bool
+ ParameterId["CrossTab"] = "crossTab";
+ // DPI_CullLabels, having type bool
+ ParameterId["CullLabels"] = "cullLabels";
+ // DPI_CurrentCustViewIdFlag, having type bool
+ ParameterId["CurrentCustViewIdFlag"] = "isCurrentCustViewIdValid";
+ // DPI_DashboardEnableSnap, having type bool
+ ParameterId["DashboardEnableSnap"] = "dashboardEnableSnap";
+ // DPI_DashboardShowGrid, having type bool
+ ParameterId["DashboardShowGrid"] = "dashboardShowGrid";
+ // DPI_DataGridSortOrder, having type bool
+ ParameterId["DataGridSortOrder"] = "datagridSortOrder";
+ // DPI_DeleteExtract, having type bool
+ ParameterId["DeleteExtract"] = "deleteExtract";
+ // DPI_DeleteOnlySpecifiedSelection, having type bool
+ ParameterId["DeleteOnlySpecifiedSelection"] = "deleteOnlySpecifiedSelection";
+ // DPI_DeleteOrphans, having type bool
+ ParameterId["DeleteOrphans"] = "deleteOrphans";
+ // DPI_DisabledDataConnectionClassNames, having type bool
+ ParameterId["DisabledDataConnectionClassNames"] = "disabledDataConnectionClassNames";
+ // DPI_DisablePresModelHandler, having type bool
+ ParameterId["DisablePresModelHandler"] = "disablePresModelHandler";
+ // DPI_DisplayDate, having type bool
+ ParameterId["DisplayDate"] = "displayDate";
+ // DPI_DisplayTime, having type bool
+ ParameterId["DisplayTime"] = "displayTime";
+ // DPI_DoDropUIAction, having type bool
+ ParameterId["DoDropUIAction"] = "doDropUiAction";
+ // DPI_DoMerge, having type bool
+ ParameterId["DoMerge"] = "doMerge";
+ // DPI_DoPreDropUIAction, having type bool
+ ParameterId["DoPreDropUIAction"] = "doPreDropUiAction";
+ // DPI_DoQuery, having type bool
+ ParameterId["DoQuery"] = "doQuery";
+ // DPI_DragHorz, having type bool
+ ParameterId["DragHorz"] = "dragHorz";
+ // DPI_DrillDown, having type bool
+ ParameterId["DrillDown"] = "drillDown";
+ // DPI_DropToXAxis, having type bool
+ ParameterId["DropToXAxis"] = "dropToXAxis";
+ // DPI_DropToYAxis, having type bool
+ ParameterId["DropToYAxis"] = "dropToYAxis";
+ // DPI_DropUnnamedFields, having type bool
+ ParameterId["DropUnnamedFields"] = "dropUnnamedFields";
+ // DPI_EditExisting, having type bool
+ ParameterId["EditExisting"] = "editExisting";
+ // DPI_EditingConnection, having type bool
+ ParameterId["EditingConnection"] = "editingConnection";
+ // DPI_EmbedCredentials, having type bool
+ ParameterId["EmbedCredentials"] = "embedCredentials";
+ // DPI_EmbedOAuthCredential, having type bool
+ ParameterId["EmbedOAuthCredential"] = "embedOauthCredentials";
+ // DPI_EmptyHighlightFogAll, having type bool
+ ParameterId["EmptyHighlightFogAll"] = "emptyHighlightFogAll";
+ // DPI_EnableAlphabeticSort, having type bool
+ ParameterId["EnableAlphabeticSort"] = "enableAlphabeticSort";
+ // DPI_EnableAutomaticDrill, having type bool
+ ParameterId["EnableAutomaticDrill"] = "enableAutomaticDrill";
+ // DPI_EnableConfidenceBands, having type bool
+ ParameterId["EnableConfidenceBands"] = "enableConfidenceBands";
+ // DPI_EnableDataOrderSort, having type bool
+ ParameterId["EnableDataOrderSort"] = "enableDataOrderSort";
+ // DPI_EnableFieldSort, having type bool
+ ParameterId["EnableFieldSort"] = "enableFieldSort";
+ // DPI_EnableInstantAnalytics, having type bool
+ ParameterId["EnableInstantAnalytics"] = "enableInstantAnalytics";
+ // DPI_EnableLines, having type bool
+ ParameterId["EnableLines"] = "enableLines";
+ // DPI_EnableManualSort, having type bool
+ ParameterId["EnableManualSort"] = "enableManualSort";
+ // DPI_EnableMarks, having type bool
+ ParameterId["EnableMarks"] = "enableMarks";
+ // DPI_EnableMultipleSelection, having type bool
+ ParameterId["EnableMultipleSelection"] = "enableMultipleSelection";
+ // DPI_EnablePrefetching, having type bool
+ ParameterId["EnablePrefetching"] = "enablePrefetching";
+ // DPI_EnableTableCalcDensification, having type bool
+ ParameterId["EnableTableCalcDensification"] = "enableTableCalcDensification";
+ // DPI_EnableTooltips, having type bool
+ ParameterId["EnableTooltips"] = "enableTooltips";
+ // DPI_EndDataSourcePresModelUpdate, having type bool
+ ParameterId["EndDataSourcePresModelUpdate"] = "endDataSourcePresModelUpdate";
+ // DPI_EstimateNulls, having type bool
+ ParameterId["EstimateNulls"] = "estimateNulls";
+ // DPI_Exclude, having type bool
+ ParameterId["Exclude"] = "exclude";
+ // DPI_ExcludeColor, having type bool
+ ParameterId["ExcludeColor"] = "excludeColor";
+ // DPI_ExcludeCubeDenorm, having type bool
+ ParameterId["ExcludeCubeDenorm"] = "excludeCubeDenorm";
+ // DPI_ExcludeInterceptEnabled, having type bool
+ ParameterId["ExcludeInterceptEnabled"] = "excludeInterceptEnabled";
+ // DPI_ExcludeLocalFunctions, having type bool
+ ParameterId["ExcludeLocalFunctions"] = "excludeLocalFunctions";
+ // DPI_ExportDashboardImageFromSheet, having type bool
+ ParameterId["ExportDashboardImageFromSheet"] = "exportImageSheetAsDashboard";
+ // DPI_ExtSvcConfigIsAuthEnabled, having type bool
+ ParameterId["ExtSvcConfigIsAuthEnabled"] = "extSvcConfigIsAuthEnabled";
+ // DPI_ExtractFullRefresh, having type bool
+ ParameterId["ExtractFullRefresh"] = "extractFullRefresh";
+ // DPI_ExtractNeedsRefresh, having type bool
+ ParameterId["ExtractNeedsRefresh"] = "extractNeedsRefresh";
+ // DPI_ExtractPending, having type bool
+ ParameterId["ExtractPending"] = "extractPending";
+ // DPI_ExtractSelected, having type bool
+ ParameterId["ExtractSelected"] = "extractSelected";
+ // DPI_FederatableOnly, having type bool
+ ParameterId["FederatableOnly"] = "federatableOnly";
+ // DPI_FieldSortOrder, having type bool
+ ParameterId["FieldSortOrder"] = "fieldSortOrder";
+ // DPI_FieldSupportsContains, having type bool
+ ParameterId["FieldSupportsContains"] = "fieldSupportsContains";
+ // DPI_FieldSupportsEndsWith, having type bool
+ ParameterId["FieldSupportsEndsWith"] = "fieldSupportsEndsWith";
+ // DPI_FieldSupportsStartsWith, having type bool
+ ParameterId["FieldSupportsStartsWith"] = "fieldSupportsStartsWith";
+ // DPI_FillAbove, having type bool
+ ParameterId["FillAbove"] = "fillAbove";
+ // DPI_FillBelow, having type bool
+ ParameterId["FillBelow"] = "fillBelow";
+ // DPI_FillWithZeroes, having type bool
+ ParameterId["FillWithZeroes"] = "fillZeroes";
+ // DPI_FilterIsNamed, having type bool
+ ParameterId["FilterIsNamed"] = "filterIsNamed";
+ // DPI_Focus, having type bool
+ ParameterId["Focus"] = "focus";
+ // DPI_ForInternalUse, having type bool
+ ParameterId["ForInternalUse"] = "internalUse";
+ // DPI_ForceBrowserRendering, having type bool
+ ParameterId["ForceBrowserRendering"] = "forceBrowserRendering";
+ // DPI_ForceCache, having type bool
+ ParameterId["ForceCache"] = "forceCache";
+ // DPI_ForceColorFromApp, having type bool
+ ParameterId["ForceColorFromApp"] = "forceColorFromApp";
+ // DPI_ForceConnectionAttempt, having type bool
+ ParameterId["ForceConnectionAttempt"] = "forceConnectionAttempt";
+ // DPI_ForceConsolidateInCommit, having type bool
+ ParameterId["ForceConsolidateInCommit"] = "forceConsolidateInCommit";
+ // DPI_ForceExtractRefresh, having type bool
+ ParameterId["ForceExtractRefresh"] = "extractForceRefresh";
+ // DPI_ForceInterceptZero, having type bool
+ ParameterId["ForceInterceptZero"] = "forceInterceptZero";
+ // DPI_ForceOldConnectExperience, having type bool
+ ParameterId["ForceOldConnectExperience"] = "forceOldConnectExperience";
+ // DPI_ForceToggleHighlightStateOn, having type bool
+ ParameterId["ForceToggleHighlightStateOn"] = "forceHighlightOn";
+ // DPI_ForceWholeDate, having type bool
+ ParameterId["ForceWholeDate"] = "forceWholeDate";
+ // DPI_ForecastSelected, having type bool
+ ParameterId["ForecastSelected"] = "forecastSelected";
+ // DPI_ForecastUseAutoAgg, having type bool
+ ParameterId["ForecastUseAutoAgg"] = "forecastUseAutoSummarize";
+ // DPI_ForJoin, having type bool
+ ParameterId["ForJoin"] = "forJoin";
+ // DPI_FormatDataValueLocally, having type bool
+ ParameterId["FormatDataValueLocally"] = "formatDataValueLocally";
+ // DPI_FormatIfColumn, having type bool
+ ParameterId["FormatIfColumn"] = "formatIfColumn";
+ // DPI_FormatIfParameter, having type bool
+ ParameterId["FormatIfParameter"] = "formatIfParameter";
+ // DPI_GeographicSearchIsDataLoaded, having type bool
+ ParameterId["GeographicSearchIsDataLoaded"] = "geographicSearchDataLoaded";
+ // DPI_GeographicSearchLoadDataAsync, having type bool
+ ParameterId["GeographicSearchLoadDataAsync"] = "geographicSearchLoadDataAsync";
+ // DPI_GroupByAll, having type bool
+ ParameterId["GroupByAll"] = "groupByAll";
+ // DPI_HasAlias, having type bool
+ ParameterId["HasAlias"] = "hasAlias";
+ // DPI_HasAllMember, having type bool
+ ParameterId["HasAllMember"] = "hasAllMember";
+ // DPI_HasApply, having type bool
+ ParameterId["HasApply"] = "hasApply";
+ // DPI_HasBackgroundImage, having type bool
+ ParameterId["HasBackgroundImage"] = "hasBackgroundImage";
+ // DPI_HasBeenDismissed, having type bool
+ ParameterId["HasBeenDismissed"] = "hasBeenDismissed";
+ // DPI_HasCaption, having type bool
+ ParameterId["HasCaption"] = "hasCaption";
+ // DPI_HasCondition, having type bool
+ ParameterId["HasCondition"] = "hasCondition";
+ // DPI_HasConnectPermissions, having type bool
+ ParameterId["HasConnectPermissions"] = "hasConnectPermissions";
+ // DPI_HasDashboard, having type bool
+ ParameterId["HasDashboard"] = "hasDashboard";
+ // DPI_HasDownloadPermissions, having type bool
+ ParameterId["HasDownloadPermissions"] = "hasDownloadPermissions";
+ // DPI_HasDrill, having type bool
+ ParameterId["HasDrill"] = "hasDrill";
+ // DPI_HasExclude, having type bool
+ ParameterId["HasExclude"] = "hasExclude";
+ // DPI_HasFill, having type bool
+ ParameterId["HasFill"] = "hasFill";
+ // DPI_HasLabels, having type bool
+ ParameterId["HasLabels"] = "hasLabels";
+ // DPI_HasLimit, having type bool
+ ParameterId["HasLimit"] = "hasLimit";
+ // DPI_HasLine, having type bool
+ ParameterId["HasLine"] = "hasLine";
+ // DPI_HasModifiedAxes, having type bool
+ ParameterId["HasModifiedAxes"] = "hasModifiedAxes";
+ // DPI_HasNonRootCalculations, having type bool
+ ParameterId["HasNonRootCalculations"] = "hasNonRootCalculations";
+ // DPI_HasPattern, having type bool
+ ParameterId["HasPattern"] = "hasPattern";
+ // DPI_HasPublishGuidanceResults, having type bool
+ ParameterId["HasPublishGuidanceResults"] = "hasPublishGuidanceResults";
+ // DPI_HasSelection, having type bool
+ ParameterId["HasSelection"] = "hasSelection";
+ // DPI_HasServerCredentials, having type bool
+ ParameterId["HasServerCredentials"] = "hasServerCredentials";
+ // DPI_HasSpace, having type bool
+ ParameterId["HasSpace"] = "hasSpace";
+ // DPI_HasStoredProcedure, having type bool
+ ParameterId["HasStoredProcedure"] = "hasStoredProcedure";
+ // DPI_HasStringCalculatedMeasures, having type bool
+ ParameterId["HasStringCalculatedMeasures"] = "hasStringCalculatedMeasures";
+ // DPI_HasTableCalcData, having type bool
+ ParameterId["HasTableCalcData"] = "hasTableCalcData";
+ // DPI_HasTitle, having type bool
+ ParameterId["HasTitle"] = "hasTitle";
+ // DPI_HasUserSpecificContent, having type bool
+ ParameterId["HasUserSpecificContent"] = "hasUserSpecificContent";
+ // DPI_HasUnjoinedTable, having type bool
+ ParameterId["HasUnjoinedTable"] = "hasUnjoinedTable";
+ // DPI_HasVarArgs, having type bool
+ ParameterId["HasVarArgs"] = "hasVarArgs";
+ // DPI_HasVisitedWDCPage, having type bool
+ ParameterId["HasVisitedWDCPage"] = "hasVisitedWdcPage";
+ // DPI_IgnoreAliases, having type bool
+ ParameterId["IgnoreAliases"] = "ignoreAliases";
+ // DPI_IgnoreDomain, having type bool
+ ParameterId["IgnoreDomain"] = "ignoreDomain";
+ // DPI_IgnoreSelection, having type bool
+ ParameterId["IgnoreSelection"] = "ignoreSelection";
+ // DPI_IncludeAllColumns, having type bool
+ ParameterId["IncludeAllColumns"] = "includeAllColumns";
+ // DPI_IncludeContext, having type bool
+ ParameterId["IncludeContext"] = "includeContext";
+ // DPI_IncludeDashboardPresModels, having type bool
+ ParameterId["IncludeDashboardPresModels"] = "includeDashboardPresModels";
+ // DPI_IncludeItemSet, having type bool
+ ParameterId["IncludeItemSet"] = "includeItemSet";
+ // DPI_IncludeLocalFiles, having type bool
+ ParameterId["IncludeLocalFiles"] = "includeLocalFiles";
+ // DPI_IncludeOtherSelected, having type bool
+ ParameterId["IncludeOtherSelected"] = "includeOtherSelected";
+ // DPI_IncludeNulls, having type bool
+ ParameterId["IncludeNulls"] = "includeNulls";
+ // DPI_IncludeParent, having type bool
+ ParameterId["IncludeParent"] = "includeParent";
+ // DPI_IncludeSelections, having type bool
+ ParameterId["IncludeSelections"] = "includeSelections";
+ // DPI_IncludeSiblings, having type bool
+ ParameterId["IncludeSiblings"] = "includeSiblings";
+ // DPI_IncludeStories, having type bool
+ ParameterId["IncludeStories"] = "includeStories";
+ // DPI_IncludeSubfolders, having type bool
+ ParameterId["IncludeSubfolders"] = "includeSubfolders";
+ // DPI_IncludeVolatileProps, having type bool
+ ParameterId["IncludeVolatileProps"] = "includeVolatileProps";
+ // DPI_IncludesTag, having type bool
+ ParameterId["IncludesTag"] = "includesTag";
+ // DPI_InsertAfter, having type bool
+ ParameterId["InsertAfter"] = "insertAfter";
+ // DPI_InsertAtEnd, having type bool
+ ParameterId["InsertAtEnd"] = "insertAtEnd";
+ // DPI_InstantAnalyticsAllowed, having type bool
+ ParameterId["InstantAnalyticsAllowed"] = "instantAnalyticsAllowed";
+ // DPI_IntegerCoordinates, having type bool
+ ParameterId["IntegerCoordinates"] = "intCoords";
+ // DPI_InvalidatedLayout, having type bool
+ ParameterId["InvalidatedLayout"] = "invalidatedLayout";
+ // DPI_IsActive, having type bool
+ ParameterId["IsActive"] = "isActive";
+ // DPI_IsAddToFilter, having type bool
+ ParameterId["IsAddToFilter"] = "isAddToFilterButtonChecked";
+ // DPI_IsAllButtonVisible, having type bool
+ ParameterId["IsAllButtonVisible"] = "isAllButtonVisible";
+ // DPI_IsAllowedInCalcs, having type bool
+ ParameterId["IsAllowedInCalcs"] = "isAllowedInCalcs";
+ // DPI_IsAppMapSource, having type bool
+ ParameterId["IsAppMapSource"] = "isAppMapSource";
+ // DPI_IsArchive, having type bool
+ ParameterId["IsArchive"] = "isArchive";
+ // DPI_IsAuthoringMode, having type bool
+ ParameterId["IsAuthoringMode"] = "isAuthoringMode";
+ // DPI_IsAuto, having type bool
+ ParameterId["IsAuto"] = "isAuto";
+ // DPI_IsAutoClear, having type bool
+ ParameterId["IsAutoClear"] = "isAutoClear";
+ // DPI_IsAutoColumn, having type bool
+ ParameterId["IsAutoColumn"] = "isAutoColumn";
+ // DPI_IsAutoHidden, having type bool
+ ParameterId["IsAutoHidden"] = "isAutoHidden";
+ // DPI_IsAutoSelect, having type bool
+ ParameterId["IsAutoSelect"] = "isAutoSelect";
+ // DPI_IsBold, having type bool
+ ParameterId["IsBold"] = "isBold";
+ // DPI_IsBorderVisible, having type bool
+ ParameterId["IsBorderVisible"] = "isBorderVisible";
+ // DPI_IsBoxplot, having type bool
+ ParameterId["IsBoxplot"] = "isBoxplot";
+ // DPI_IsCapable, having type bool
+ ParameterId["IsCapable"] = "isCapable";
+ // DPI_IsCaptured, having type bool
+ ParameterId["IsCaptured"] = "isCaptured";
+ // DPI_IsCentered, having type bool
+ ParameterId["IsCentered"] = "isCentered";
+ // DPI_IsChecked, having type bool
+ ParameterId["IsChecked"] = "isChecked";
+ // DPI_IsColorDiverging, having type bool
+ ParameterId["IsColorDiverging"] = "isColorDiverging";
+ // DPI_IsColorStepped, having type bool
+ ParameterId["IsColorStepped"] = "isColorStepped";
+ // DPI_IsCombinedField, having type bool
+ ParameterId["IsCombinedField"] = "isCombinedField";
+ // DPI_IsConnected, having type bool
+ ParameterId["IsConnected"] = "isConnected";
+ // DPI_IsContextMenuAllowed, having type bool
+ ParameterId["IsContextMenuAllowed"] = "isContextMenuAllowed";
+ // DPI_IsContinuous, having type bool
+ ParameterId["IsContinuous"] = "isContinuous";
+ // DPI_IsCopy, having type bool
+ ParameterId["IsCopy"] = "isCopy";
+ // DPI_IsCustomPalette, having type bool
+ ParameterId["IsCustomPalette"] = "isCustomPalette";
+ // DPI_IsCustomSQL, having type bool
+ ParameterId["IsCustomSQL"] = "isCustomSql";
+ // DPI_IsCustomValueEnabled, having type bool
+ ParameterId["IsCustomValueEnabled"] = "isCustomValueEnabled";
+ // DPI_IsDataAlertConditionMet, having type bool
+ ParameterId["IsDataAlertConditionMet"] = "isDataAlertConditionMet";
+ // DPI_IsDataAlertDialogVisible, having type bool
+ ParameterId["IsDataAlertDialogVisible"] = "isDataAlertDialogVisible";
+ // DPI_IsDataBin, having type bool
+ ParameterId["IsDataBin"] = "isDataBin";
+ // DPI_IsDataGridVisible, having type bool
+ ParameterId["IsDataGridVisible"] = "isDataGridVisible";
+ // DPI_IsDatabase, having type bool
+ ParameterId["IsDatabase"] = "isDatabase";
+ // DPI_IsDatabaseFilterInclusive, having type bool
+ ParameterId["IsDatabaseFilterInclusive"] = "isDbFilterInclusive";
+ // DPI_IsWebDataTabViewSupported, having type bool
+ ParameterId["IsWebDataTabViewSupported"] = "isWebDataTabViewSupported";
+ // DPI_IsPublishedDatasourceReplacement, having type bool
+ ParameterId["IsPublishedDatasourceReplacement"] = "isPublishedDatasourceReplacement";
+ // DPI_IsDeadDrop, having type bool
+ ParameterId["IsDeadDrop"] = "isDeadDrop";
+ // DPI_IsDefault, having type bool
+ ParameterId["IsDefault"] = "isDefault";
+ // DPI_IsDeleteCalcConfirm, having type bool
+ ParameterId["IsDeleteCalcConfirm"] = "isDeleteCalcConfirmed";
+ // DPI_IsDimension, having type bool
+ ParameterId["IsDimension"] = "isDimension";
+ // DPI_IsDivider, having type bool
+ ParameterId["IsDivider"] = "isDivider";
+ // DPI_IsDropdownEnabled, having type bool
+ ParameterId["IsDropdownEnabled"] = "isDropdownEnabled";
+ // DPI_IsEditing, having type bool
+ ParameterId["IsEditing"] = "isEditing";
+ // DPI_IsEmbedded, having type bool
+ ParameterId["IsEmbedded"] = "isEmbedded";
+ // DPI_IsEmpty, having type bool
+ ParameterId["IsEmpty"] = "isEmpty";
+ // DPI_IsAddInEnabled, having type bool
+ ParameterId["IsAddInEnabled"] = "isAddInEnabled";
+ // DPI_IsInDrillPath, having type bool
+ ParameterId["IsInDrillPath"] = "isInDrillPath";
+ // DPI_AddInJSDebuggingEnabled, having type bool
+ ParameterId["AddInJSDebuggingEnabled"] = "addInJsDebugginEnabled";
+ // DPI_AddInPauseBeforeLoading, having type bool
+ ParameterId["AddInPauseBeforeLoading"] = "addInPauseBeforeLoading";
+ // DPI_IsDSHierarchical, having type bool
+ ParameterId["IsDSHierarchical"] = "isDsHierarchical";
+ // DPI_IsEndPtMoveable, having type bool
+ ParameterId["IsEndPtMoveable"] = "isEndpointMovable";
+ // DPI_IsExclude, having type bool
+ ParameterId["IsExclude"] = "isExcludeButtonChecked";
+ // DPI_IsExistingConnection, having type bool
+ ParameterId["IsExistingConnection"] = "isExistingConnection";
+ // DPI_IsExistingObject, having type bool
+ ParameterId["IsExistingObject"] = "isExistingObject";
+ // DPI_IsExtract, having type bool
+ ParameterId["IsExtract"] = "isExtract";
+ // DPI_IsExtractOnlyConnection, having type bool
+ ParameterId["IsExtractOnlyConnection"] = "isExtractOnlyConnection";
+ // DPI_IsExtractSelectionVisible, having type bool
+ ParameterId["IsExtractSelectionVisible"] = "isExtractSelectionVisible";
+ // DPI_IsFederatable, having type bool
+ ParameterId["IsFederatable"] = "isFederatable";
+ // DPI_IsField, having type bool
+ ParameterId["IsField"] = "isField";
+ // DPI_IsFieldParameter, having type bool
+ ParameterId["IsFieldParameter"] = "isFieldParameter";
+ // DPI_IsFilterActionField, having type bool
+ ParameterId["IsFilterActionField"] = "isFilterActionField";
+ // DPI_IsFirstClassConnector, having type bool
+ ParameterId["IsFirstClassConnector"] = "isFirstClassConnector";
+ // DPI_IsFloating, having type bool
+ ParameterId["IsFloating"] = "isFloating";
+ // DPI_IsFolded, having type bool
+ ParameterId["IsFolded"] = "isFolded";
+ // DPI_IsForInput, having type bool
+ ParameterId["IsForInput"] = "isForInput";
+ // DPI_IsForecastEnabled, having type bool
+ ParameterId["IsForecastEnabled"] = "isForecastEnabled";
+ // DPI_IsForceDirty, having type bool
+ ParameterId["IsForceDirty"] = "isForceDirty";
+ // DPI_IsFullScan, having type bool
+ ParameterId["IsFullScan"] = "isFullScan";
+ // DPI_IsFullStyling, having type bool
+ ParameterId["IsFullStyling"] = "isFullStyling";
+ // DPI_IsGenerated, having type bool
+ ParameterId["IsGenerated"] = "isGenerated";
+ // DPI_IsGlobalNames, having type bool
+ ParameterId["IsGlobalNames"] = "isGlobalNames";
+ // DPI_IsGrayed, having type bool
+ ParameterId["IsGrayed"] = "isGrayed";
+ // DPI_IsGrayscale, having type bool
+ ParameterId["IsGrayscale"] = "isGrayscale";
+ // DPI_IsGroup, having type bool
+ ParameterId["IsGroup"] = "isGroup";
+ // DPI_IsHideableField, having type bool
+ ParameterId["IsHideableField"] = "isHideableField";
+ // DPI_IsHierarchy, having type bool
+ ParameterId["IsHierarchy"] = "isHierarchy";
+ // DPI_IsHierarchySingleSelect, having type bool
+ ParameterId["IsHierarchySingleSelect"] = "isHierarchySingleSelect";
+ // DPI_IsHighlightAllowed, having type bool
+ ParameterId["IsHighlightAllowed"] = "isHighlightAllowed";
+ // DPI_IsHighlightEnabled, having type bool
+ ParameterId["IsHighlightEnabled"] = "isHighlightEnabled";
+ // DPI_IsHighlightField, having type bool
+ ParameterId["IsHighlightField"] = "isHighlightField";
+ // DPI_IsHorizontal, having type bool
+ ParameterId["IsHorizontal"] = "isHorizontal";
+ // DPI_IsImageEnabled, having type bool
+ ParameterId["IsImageEnabled"] = "isImageEnabled";
+ // DPI_IsInDefault, having type bool
+ ParameterId["IsInDefault"] = "isInDefault";
+ // DPI_IsInPrimaryDataSource, having type bool
+ ParameterId["IsInPrimaryDataSource"] = "isInPrimaryDataSource";
+ // DPI_IsInner, having type bool
+ ParameterId["IsInner"] = "isInner";
+ // DPI_IsInitial, having type bool
+ ParameterId["IsInitial"] = "isInitial";
+ // DPI_IsInstance, having type bool
+ ParameterId["IsInstance"] = "isInstance";
+ // DPI_IsInvalid, having type bool
+ ParameterId["IsInvalid"] = "isInvalid";
+ // DPI_IsInvalidCalcOnDG, having type bool
+ ParameterId["IsInvalidCalcOnDG"] = "isInvalidDgCalc";
+ // DPI_IsItalics, having type bool
+ ParameterId["IsItalics"] = "isItalics";
+ // DPI_IsJoinAreaVisible, having type bool
+ ParameterId["IsJoinAreaVisible"] = "isJoinAreaVisible";
+ // DPI_IsLabels, having type bool
+ ParameterId["IsLabels"] = "isLabels";
+ // DPI_IsLayered, having type bool
+ ParameterId["IsLayered"] = "isLayered";
+ // DPI_IsLeft, having type bool
+ ParameterId["IsLeft"] = "isLeft";
+ // DPI_IsLegacy, having type bool
+ ParameterId["IsLegacy"] = "isLegacy";
+ // DPI_IsLevel, having type bool
+ ParameterId["IsLevel"] = "isLevel";
+ // DPI_IsLevelOrLevelIdentity, having type bool
+ ParameterId["IsLevelOrLevelIdentity"] = "isLevelOrLevelIdentity";
+ // DPI_IsLicensed, having type bool
+ ParameterId["IsLicensed"] = "isLicensed";
+ // DPI_IsLink, having type bool
+ ParameterId["IsLink"] = "isLink";
+ // DPI_IsMap, having type bool
+ ParameterId["IsMap"] = "isMap";
+ // DPI_IsMeasure, having type bool
+ ParameterId["IsMeasure"] = "isMeasure";
+ // DPI_IsMerge, having type bool
+ ParameterId["IsMerge"] = "isMerge";
+ // DPI_IsMessageSourceRemote, having type bool
+ ParameterId["IsMessageSourceRemote"] = "isMessageSourceRemote";
+ // DPI_IsMissingFromExtract, having type bool
+ ParameterId["IsMissingFromExtract"] = "isMissingFromExtract";
+ // DPI_IsMobile, having type bool
+ ParameterId["IsMobile"] = "isMobile";
+ // DPI_IsModified, having type bool
+ ParameterId["IsModified"] = "isModified";
+ // DPI_IsNew, having type bool
+ ParameterId["IsNew"] = "isNew";
+ // DPI_IsNewCloudFileDataSource, having type bool
+ ParameterId["IsNewCloudFileDataSource"] = "isNewCloudFileDataSource";
+ // DPI_IsNewZone, having type bool
+ ParameterId["IsNewZone"] = "isNewZone";
+ // DPI_IsNone, having type bool
+ ParameterId["IsNone"] = "isNone";
+ // DPI_IsOfflineMode, having type bool
+ ParameterId["IsOfflineMode"] = "isOfflineMode";
+ // DPI_IsPreAqlBin, having type bool
+ ParameterId["IsPreAqlBin"] = "isPreAqlBin";
+ // DPI_IsOMeasuresAndRelational, having type bool
+ ParameterId["IsOMeasuresAndRelational"] = "isOmeasuresAndRelational";
+ // DPI_IsOpaque, having type bool
+ ParameterId["IsOpaque"] = "isOpaque";
+ // DPI_IsOrphaned, having type bool
+ ParameterId["IsOrphaned"] = "isOrphaned";
+ // DPI_IsOverlay, having type bool
+ ParameterId["IsOverlay"] = "isOverlay";
+ // DPI_IsOverride, having type bool
+ ParameterId["IsOverride"] = "isOverride";
+ // DPI_IsPageLoading, having type bool
+ ParameterId["IsPageLoading"] = "isPageLoading";
+ // DPI_IsParameterSelected, having type bool
+ ParameterId["IsParameterSelected"] = "isParameterSelected";
+ // DPI_IsParameterSelectedOnFrom, having type bool
+ ParameterId["IsParameterSelectedOnFrom"] = "isParameterSelectedOnFrom";
+ // DPI_IsParameterSelectedOnTo, having type bool
+ ParameterId["IsParameterSelectedOnTo"] = "isParameterSelectedOnTo";
+ // DPI_IsPatternBased, having type bool
+ ParameterId["IsPatternBased"] = "isPatternBased";
+ // DPI_IsPinned, having type bool
+ ParameterId["IsPinned"] = "isPinned";
+ // DPI_IsPresentationMode, having type bool
+ ParameterId["IsPresentationMode"] = "isPresentationModeDoc";
+ // DPI_IsPublishAllowed, having type bool
+ ParameterId["IsPublishAllowed"] = "isPublishAllowed";
+ // DPI_IsMustDowngradeToPublish, having type bool
+ ParameterId["IsMustDowngradeToPublish"] = "isDowngradeToPublishRequired";
+ // DPI_IsPublished, having type bool
+ ParameterId["IsPublished"] = "isPublished";
+ // DPI_IsQuickTableCalc, having type bool
+ ParameterId["IsQuickTableCalc"] = "isQuickTableCalc";
+ // DPI_IsRadioOn, having type bool
+ ParameterId["IsRadioOn"] = "isRadioOn";
+ // DPI_IsReconnect, having type bool
+ ParameterId["IsReconnect"] = "isReconnect";
+ // DPI_IsRecursive, having type bool
+ ParameterId["IsRecursive"] = "isRecursive";
+ // DPI_IsReferenced, having type bool
+ ParameterId["IsReferenced"] = "isReferenced";
+ // DPI_IsRemovalAllowed, having type bool
+ ParameterId["IsRemovalAllowed"] = "isRowRemovalAllowed";
+ // DPI_IsRenderCapable, having type bool
+ ParameterId["IsRenderCapable"] = "isRenderCapable";
+ // DPI_IsRequired, having type bool
+ ParameterId["IsRequired"] = "isRequired";
+ // DPI_IsReversed, having type bool
+ ParameterId["IsReversed"] = "isReversed";
+ // DPI_IsRightDrag, having type bool
+ ParameterId["IsRightDrag"] = "isRightDrag";
+ // DPI_IsRowLabels, having type bool
+ ParameterId["IsRowLabels"] = "isRowLabels";
+ // DPI_IsPercentage, having type bool
+ ParameterId["IsPercentage"] = "isPercentage";
+ // DPI_IsSalesforceInConnection, having type bool
+ ParameterId["IsSalesforceInConnection"] = "isSalesforceInConnection";
+ // DPI_IsScaled, having type bool
+ ParameterId["IsScaled"] = "isScaled";
+ // DPI_IsSelected, having type bool
+ ParameterId["IsSelected"] = "isSelected";
+ // DPI_IsSelectedItem, having type bool
+ ParameterId["IsSelectedItem"] = "isSelectedItem";
+ // DPI_IsSelectionDisabled, having type bool
+ ParameterId["IsSelectionDisabled"] = "isSelectionDisabled";
+ // DPI_IsShiftDrag, having type bool
+ ParameterId["IsShiftDrag"] = "isShiftDrag";
+ // DPI_IsSingleLabel, having type bool
+ ParameterId["IsSingleLabel"] = "isSingleLabel";
+ // DPI_IsSingleSelect, having type bool
+ ParameterId["IsSingleSelect"] = "isSingleSelect";
+ // DPI_IsSingleSelectMode, having type bool
+ ParameterId["IsSingleSelectMode"] = "isSingleSelectMode";
+ // DPI_IsSingleSelection, having type bool
+ ParameterId["IsSingleSelection"] = "isSingleSelection";
+ // DPI_IsSorted, having type bool
+ ParameterId["IsSorted"] = "isSorted";
+ // DPI_IsSortPill, having type bool
+ ParameterId["IsSortPill"] = "isSortPill";
+ // DPI_IsSpecial, having type bool
+ ParameterId["IsSpecial"] = "isSpecial";
+ // DPI_IsSplashScreen, having type bool
+ ParameterId["IsSplashScreen"] = "isSplashScreen";
+ // DPI_IsStoryEmpty, having type bool
+ ParameterId["IsStoryEmpty"] = "isStoryEmpty";
+ // DPI_IsStrikeThrough, having type bool
+ ParameterId["IsStrikeThrough"] = "isStrikeThrough";
+ // DPI_IsTableCalc, having type bool
+ ParameterId["IsTableCalc"] = "isTableCalc";
+ // DPI_IsTableCleaningSubtable, having type bool
+ ParameterId["IsTableCleaningSubtable"] = "isTableCleaningSubtable";
+ // DPI_IsTableFilterInclusive, having type bool
+ ParameterId["IsTableFilterInclusive"] = "isTableFilterInclusive";
+ // DPI_IsTableRanked, having type bool
+ ParameterId["IsTableRanked"] = "isTableRanked";
+ // DPI_IsTemporary, having type bool
+ ParameterId["IsTemporary"] = "isTemporary";
+ // DPI_IsTitleVisible, having type bool
+ ParameterId["IsTitleVisible"] = "isTitleVisible";
+ // DPI_IsTopLevel, having type bool
+ ParameterId["IsTopLevel"] = "isTopLevel";
+ // DPI_IsTwoValued, having type bool
+ ParameterId["IsTwoValued"] = "isTwoValued";
+ // DPI_IsTypeInFinished, having type bool
+ ParameterId["IsTypeInFinished"] = "isTypeinFinished";
+ // DPI_IsTypeInPill, having type bool
+ ParameterId["IsTypeInPill"] = "isTypeInPill";
+ // DPI_IsURLActionField, having type bool
+ ParameterId["IsURLActionField"] = "isUrlActionField";
+ // DPI_IsUnderlined, having type bool
+ ParameterId["IsUnderlined"] = "isUnderlined";
+ // DPI_IsUnion, having type bool
+ ParameterId["IsUnion"] = "isUnion";
+ // DPI_IsUnionReplacement, having type bool
+ ParameterId["IsUnionReplacement"] = "isUnionReplacement";
+ // DPI_IsUnnamedCalc, having type bool
+ ParameterId["IsUnnamedCalc"] = "isUnnamed";
+ // DPI_IsUserDefinedAttribute, having type bool
+ ParameterId["IsUserDefinedAttribute"] = "isUserDefinedAttribute";
+ // DPI_IsUserEditable, having type bool
+ ParameterId["IsUserEditable"] = "isUserEditable";
+ // DPI_IsUserPrompted, having type bool
+ ParameterId["IsUserPrompted"] = "isUserPrompted";
+ // DPI_IsUserResponded, having type bool
+ ParameterId["IsUserResponded"] = "isUserResponded";
+ // DPI_IsValid, having type bool
+ ParameterId["IsValid"] = "isValid";
+ // DPI_IsValidWDCPage, having type bool
+ ParameterId["IsValidWDCPage"] = "isValidWdcPage";
+ // DPI_IsVaryingAttributeDimension, having type bool
+ ParameterId["IsVaryingAttributeDimension"] = "isVaryingAttributeDimension";
+ // DPI_IsVertical, having type bool
+ ParameterId["IsVertical"] = "isVertical";
+ // DPI_IsViewModified, having type bool
+ ParameterId["IsViewModified"] = "isViewModified";
+ // DPI_IsVisuallyCategorical, having type bool
+ ParameterId["IsVisuallyCategorical"] = "isVisuallyCat";
+ // DPI_IsVizInTooltip, having type bool
+ ParameterId["IsVizInTooltip"] = "isVizInTooltip";
+ // DPI_IsWeb, having type bool
+ ParameterId["IsWeb"] = "isWeb";
+ // DPI_IsWhite, having type bool
+ ParameterId["IsWhite"] = "isWhite";
+ // DPI_IsWorldNew, having type bool
+ ParameterId["IsWorldNew"] = "isWorldNew";
+ // DPI_IsXAxis, having type bool
+ ParameterId["IsXAxis"] = "isXAxis";
+ // DPI_KeepAspectRatio, having type bool
+ ParameterId["KeepAspectRatio"] = "keepAspectRatio";
+ // DPI_LabelLineEndFirst, having type bool
+ ParameterId["LabelLineEndFirst"] = "labelLineEndFirst";
+ // DPI_LabelLineEndLast, having type bool
+ ParameterId["LabelLineEndLast"] = "labelLineEndLast";
+ // DPI_LabelMarkMax, having type bool
+ ParameterId["LabelMarkMax"] = "labelMarkMax";
+ // DPI_LabelMarkMin, having type bool
+ ParameterId["LabelMarkMin"] = "labelMarkMin";
+ // DPI_LockAspectRatio, having type bool
+ ParameterId["LockAspectRatio"] = "lockAspectRatio";
+ // DPI_LoopPlayback, having type bool
+ ParameterId["LoopPlayback"] = "loopPlayback";
+ // DPI_LossyImages, having type bool
+ ParameterId["LossyImages"] = "lossyImages";
+ // DPI_MakeGlobal, having type bool
+ ParameterId["MakeGlobal"] = "isMakeGlobal";
+ // DPI_ManualSortOnly, having type bool
+ ParameterId["ManualSortOnly"] = "manualSortOnly";
+ // DPI_MapBoxDefaultStyleSelected, having type bool
+ ParameterId["MapBoxDefaultStyleSelected"] = "mapboxDefaultStyleSelected";
+ // DPI_MapBoxURLParseSuccessful, having type bool
+ ParameterId["MapBoxURLParseSuccessful"] = "mapboxUrlParseSuccessful";
+ // DPI_MapClientRequestsMapTiles, having type bool
+ ParameterId["MapClientRequestsMapTiles"] = "clientRequestsMapTiles";
+ // DPI_MapHasValidLayer, having type bool
+ ParameterId["MapHasValidLayer"] = "mapHasValidLayer";
+ // DPI_MapShowAttribution, having type bool
+ ParameterId["MapShowAttribution"] = "showAttribution";
+ // DPI_MarkLabelsVisibilityChanged, having type bool
+ ParameterId["MarkLabelsVisibilityChanged"] = "markLabelsVisibilityChanged";
+ // DPI_MembersLoaded, having type bool
+ ParameterId["MembersLoaded"] = "membersLoaded";
+ // DPI_MinimizeNames, having type bool
+ ParameterId["MinimizeNames"] = "useMinNames";
+ // DPI_MoveRefereceLineUp, having type bool
+ ParameterId["MoveRefereceLineUp"] = "moveReferenceLineUp";
+ // DPI_MultiDataSources, having type bool
+ ParameterId["MultiDataSources"] = "multiDataSources";
+ // DPI_NavArrowsVisible, having type bool
+ ParameterId["NavArrowsVisible"] = "navArrowsVisible";
+ // DPI_OEMHasSplashScreen, having type bool
+ ParameterId["OEMHasSplashScreen"] = "oemHasSplashScreen";
+ // DPI_OneWayBrushing, having type bool
+ ParameterId["OneWayBrushing"] = "oneWayBrushing";
+ // DPI_OnlyAggregations, having type bool
+ ParameterId["OnlyAggregations"] = "onlyAggregations";
+ // DPI_OverrideAllowed, having type bool
+ ParameterId["OverrideAllowed"] = "overrideAllowed";
+ // DPI_OverrideStackDumper, having type bool
+ ParameterId["OverrideStackDumper"] = "overrideStackDumper";
+ // DPI_PageAutoColorLines, having type bool
+ ParameterId["PageAutoColorLines"] = "autoColorLines";
+ // DPI_PageAutoColorMarks, having type bool
+ ParameterId["PageAutoColorMarks"] = "autoColorMarks";
+ // DPI_PageHistoryFade, having type bool
+ ParameterId["PageHistoryFade"] = "historyFade";
+ // DPI_PercentageBands, having type bool
+ ParameterId["PercentageBands"] = "percentageBands";
+ // DPI_PercentilesAllowed, having type bool
+ ParameterId["PercentilesAllowed"] = "percentilesAllowed";
+ // DPI_PublishWithRemoteQueryAgent, having type bool
+ ParameterId["PublishWithRemoteQueryAgent"] = "publishWithRemoteQueryAgent";
+ // DPI_PreviousSheet, having type bool
+ ParameterId["PreviousSheet"] = "previousSheet";
+ // DPI_PromptDeleteSheetsWithVizInTooltip, having type bool
+ ParameterId["PromptDeleteSheetsWithVizInTooltip"] = "promptDeleteSheetsWithVizInTooltip";
+ // DPI_QuantilesAllowed, having type bool
+ ParameterId["QuantilesAllowed"] = "quantilesAllowed";
+ // DPI_RadialDistanceHitTest, having type bool
+ ParameterId["RadialDistanceHitTest"] = "radialDistanceHitTest";
+ // DPI_RefLineSelected, having type bool
+ ParameterId["RefLineSelected"] = "refLineSelected";
+ // DPI_RemovedSheets, having type bool
+ ParameterId["RemovedSheets"] = "removedSheets";
+ // DPI_RenderImagesAsUrls, having type bool
+ ParameterId["RenderImagesAsUrls"] = "imagesAsUrls";
+ // DPI_RenderOnTop, having type bool
+ ParameterId["RenderOnTop"] = "renderOnTop";
+ // DPI_RepeatHeadersLegends, having type bool
+ ParameterId["RepeatHeadersLegends"] = "repeatHeadersLegends";
+ // DPI_ReplaceActiveConfig, having type bool
+ ParameterId["ReplaceActiveConfig"] = "replaceActiveConfig";
+ // DPI_ReplaceDatasourceAfterPublish, having type bool
+ ParameterId["ReplaceDatasourceAfterPublish"] = "replaceDatasourceAfterPublish";
+ // DPI_ReplaceDatasourceFailed, having type bool
+ ParameterId["ReplaceDatasourceFailed"] = "replaceDatasourceFailed";
+ // DPI_ReplaceTde, having type bool
+ ParameterId["ReplaceTde"] = "replaceTde";
+ // DPI_RequireSelection, having type bool
+ ParameterId["RequireSelection"] = "requireSelection";
+ // DPI_RequiresDBVariables, having type bool
+ ParameterId["RequiresDBVariables"] = "requiresDbVariables";
+ // DPI_RequiresFieldList, having type bool
+ ParameterId["RequiresFieldList"] = "requiresFieldList";
+ // DPI_RestartEveryFieldIsInvalid, having type bool
+ ParameterId["RestartEveryFieldIsInvalid"] = "restartEveryFieldIsInvalid";
+ // DPI_RightJustify, having type bool
+ ParameterId["RightJustify"] = "rightJustify";
+ // DPI_SaveEnabled, having type bool
+ ParameterId["SaveEnabled"] = "saveEnabled";
+ // DPI_SavePasswordAllowed, having type bool
+ ParameterId["SavePasswordAllowed"] = "savePasswordAllowed";
+ // DPI_ScopeIsolation, having type bool
+ ParameterId["ScopeIsolation"] = "scopeIsolation";
+ // DPI_SelectionRequired, having type bool
+ ParameterId["SelectionRequired"] = "selectionRequired";
+ // DPI_SendNotifications, having type bool
+ ParameterId["SendNotifications"] = "sendNotifications";
+ // DPI_SetActive, having type bool
+ ParameterId["SetActive"] = "setActive";
+ // DPI_SetDefaultSort, having type bool
+ ParameterId["SetDefaultSort"] = "setDefault";
+ // DPI_SheetIsDashboard, having type bool
+ ParameterId["SheetIsDashboard"] = "isDashboard";
+ // DPI_SheetIsStoryboard, having type bool
+ ParameterId["SheetIsStoryboard"] = "isStory";
+ // DPI_ShouldAlwaysDisplayAlias, having type bool
+ ParameterId["ShouldAlwaysDisplayAlias"] = "shouldAlwaysDisplayAlias";
+ // DPI_ShouldAutoCapture, having type bool
+ ParameterId["ShouldAutoCapture"] = "shouldAutoCapture";
+ // DPI_ShouldAutoRevert, having type bool
+ ParameterId["ShouldAutoRevert"] = "shouldAutoRevert";
+ // DPI_ShouldChangeUIMode, having type bool
+ ParameterId["ShouldChangeUIMode"] = "shouldChangeUiMode";
+ // DPI_ShouldDisplay, having type bool
+ ParameterId["ShouldDisplay"] = "shouldDisplay";
+ // DPI_ShouldDrill, having type bool
+ ParameterId["ShouldDrill"] = "shouldDrill";
+ // DPI_ShouldForceConnectionAttempt, having type bool
+ ParameterId["ShouldForceConnectionAttempt"] = "shouldForceConnectionAttempt";
+ // DPI_ShouldRefreshDS, having type bool
+ ParameterId["ShouldRefreshDS"] = "shouldRefreshDs";
+ // DPI_ShouldScaleMarksInAxisUnits, having type bool
+ ParameterId["ShouldScaleMarksInAxisUnits"] = "shouldScaleMarksInAxisUnits";
+ // DPI_ShouldSeedCredentials, having type bool
+ ParameterId["ShouldSeedCredentials"] = "shouldSeedCredentials";
+ // DPI_ShouldShowDataSourceConnectionError, having type bool
+ ParameterId["ShouldShowDataSourceConnectionError"] = "shouldShowDataSourceConnectionError";
+ // DPI_ShouldShowDistance, having type bool
+ ParameterId["ShouldShowDistance"] = "shouldShowDistance";
+ // DPI_ShouldShowHiddenField, having type bool
+ ParameterId["ShouldShowHiddenField"] = "shouldShowHiddenField";
+ // DPI_ShouldShowMapScale, having type bool
+ ParameterId["ShouldShowMapScale"] = "shouldShowMapScale";
+ // DPI_ShouldURLEscape, having type bool
+ ParameterId["ShouldURLEscape"] = "shouldUrlEscape";
+ // DPI_ShouldUpdateDomainInfo, having type bool
+ ParameterId["ShouldUpdateDomainInfo"] = "shouldUpdateDomInfo";
+ // DPI_ShowAddToFilter, having type bool
+ ParameterId["ShowAddToFilter"] = "showAddToFilterButton";
+ // DPI_ShowAliases, having type bool
+ ParameterId["ShowAliases"] = "showAliases";
+ // DPI_ShowAllPages, having type bool
+ ParameterId["ShowAllPages"] = "showAllPages";
+ // DPI_ShowApply, having type bool
+ ParameterId["ShowApply"] = "showApplyButton";
+ // DPI_ShowApplyAndCancelButtons, having type bool
+ ParameterId["ShowApplyAndCancelButtons"] = "showApplyAndCancelButtons";
+ // DPI_ShowAuthenticationOptions, having type bool
+ ParameterId["ShowAuthenticationOptions"] = "showAuthenticationOptions";
+ // DPI_ShowAuthenticationSetting, having type bool
+ ParameterId["ShowAuthenticationSetting"] = "showAuthenticationSetting";
+ // DPI_ShowAuto, having type bool
+ ParameterId["ShowAuto"] = "showAuto";
+ // DPI_ShowBold, having type bool
+ ParameterId["ShowBold"] = "showBoldOption";
+ // DPI_ShowButtons, having type bool
+ ParameterId["ShowButtons"] = "showButtons";
+ // DPI_ShowCaption, having type bool
+ ParameterId["ShowCaption"] = "showCaption";
+ // DPI_ShowColorLegend, having type bool
+ ParameterId["ShowColorLegend"] = "showColorLegend";
+ // DPI_ShowDataGridInlineRename, having type bool
+ ParameterId["ShowDataGridInlineRename"] = "showDataGridInlineRename";
+ // DPI_ShowDetailMessages, having type bool
+ ParameterId["ShowDetailMessages"] = "showDetailMessages";
+ // DPI_ShowDate, having type bool
+ ParameterId["ShowDate"] = "showDate";
+ // DPI_ShowDragLabel, having type bool
+ ParameterId["ShowDragLabel"] = "showDragLabel";
+ // DPI_ShowDropMeasures, having type bool
+ ParameterId["ShowDropMeasures"] = "showDropMeasures";
+ // DPI_ShowEmbedAll, having type bool
+ ParameterId["ShowEmbedAll"] = "showEmbedAll";
+ // DPI_ShowEntireImage, having type bool
+ ParameterId["ShowEntireImage"] = "showEntireImage";
+ // DPI_ShowExclude, having type bool
+ ParameterId["ShowExclude"] = "showExcludeButton";
+ // DPI_ShowFloatingZoomToolbar, having type bool
+ ParameterId["ShowFloatingZoomToolbar"] = "showFloatingZoomToolbar";
+ // DPI_ShowFormatter, having type bool
+ ParameterId["ShowFormatter"] = "showFormatter";
+ // DPI_ShowFullSchedules, having type bool
+ ParameterId["ShowFullSchedules"] = "showFullSchedules";
+ // DPI_ShowGeographicSearch, having type bool
+ ParameterId["ShowGeographicSearch"] = "showGeographicSearch";
+ // DPI_ShowHiddenFields, having type bool
+ ParameterId["ShowHiddenFields"] = "showHiddenFields";
+ // DPI_ShowHistoryControls, having type bool
+ ParameterId["ShowHistoryControls"] = "showHistoryControls";
+ // DPI_ShowIncludeLocalFiles, having type bool
+ ParameterId["ShowIncludeLocalFiles"] = "showIncludeLocalFiles";
+ // DPI_ShowIncludeOtherOption, having type bool
+ ParameterId["ShowIncludeOtherOption"] = "showIncludeOtherOption";
+ // DPI_ShowIncludeSelections, having type bool
+ ParameterId["ShowIncludeSelections"] = "showIncludeSelections";
+ // DPI_ShowIncrSchedules, having type bool
+ ParameterId["ShowIncrSchedules"] = "showIncrSchedules";
+ // DPI_ShowInnerMostLevel, having type bool
+ ParameterId["ShowInnerMostLevel"] = "showInnermostLevel";
+ // DPI_ShowItalics, having type bool
+ ParameterId["ShowItalics"] = "showItalicsOption";
+ // DPI_ShowLegend, having type bool
+ ParameterId["ShowLegend"] = "showLegend";
+ // DPI_ShowLockedPermissionsIcon, having type bool
+ ParameterId["ShowLockedPermissionsIcon"] = "showLockedPermissionsIcon";
+ // DPI_ShowManageDatasources, having type bool
+ ParameterId["ShowManageDatasources"] = "showManageDatasources";
+ // DPI_ShowMapLegend, having type bool
+ ParameterId["ShowMapLegend"] = "showMapLegend";
+ // DPI_ShowMapScale, having type bool
+ ParameterId["ShowMapScale"] = "showMapScale";
+ // DPI_ShowMappedFilterCols, having type bool
+ ParameterId["ShowMappedFilterCols"] = "showMappedFilterColumns";
+ // DPI_ShowName, having type bool
+ ParameterId["ShowName"] = "showName";
+ // DPI_ShowNone, having type bool
+ ParameterId["ShowNone"] = "showNone";
+ // DPI_ShowPagePlayback, having type bool
+ ParameterId["ShowPagePlayback"] = "showPagePlayback";
+ // DPI_ShowPageReadout, having type bool
+ ParameterId["ShowPageReadout"] = "showPageReadout";
+ // DPI_ShowPageSlider, having type bool
+ ParameterId["ShowPageSlider"] = "showPageSlider";
+ // DPI_ShowParent, having type bool
+ ParameterId["ShowParent"] = "showParent";
+ // DPI_ShowPercentages, having type bool
+ ParameterId["ShowPercentages"] = "showPercentages";
+ // DPI_ShowPredictionIntervals, having type bool
+ ParameterId["ShowPredictionIntervals"] = "showPredictionIntervals";
+ // DPI_ShowPublishedDatasources, having type bool
+ ParameterId["ShowPublishedDatasources"] = "showPublishedDatasources";
+ // DPI_ShowRelDatePicker, having type bool
+ ParameterId["ShowRelDatePicker"] = "showRelDatePicker";
+ // DPI_ShowReplaceDatasource, having type bool
+ ParameterId["ShowReplaceDatasource"] = "showReplaceDatasource";
+ // DPI_ShowSeparator, having type bool
+ ParameterId["ShowSeparator"] = "showSeparator";
+ // DPI_ShowShapeLegend, having type bool
+ ParameterId["ShowShapeLegend"] = "showShapeLegend";
+ // DPI_ShowSizeLegend, having type bool
+ ParameterId["ShowSizeLegend"] = "showSizeLegend";
+ // DPI_ShowShelf, having type bool
+ ParameterId["ShowShelf"] = "showShelf";
+ // DPI_ShowStructure, having type bool
+ ParameterId["ShowStructure"] = "showStructure";
+ // DPI_ShowSyncClientOptions, having type bool
+ ParameterId["ShowSyncClientOptions"] = "showSyncClientOptions";
+ // DPI_ShowTabsAllowed, having type bool
+ ParameterId["ShowTabsAllowed"] = "showTabsAllowed";
+ // DPI_ShowTime, having type bool
+ ParameterId["ShowTime"] = "showTime";
+ // DPI_ShowTitle, having type bool
+ ParameterId["ShowTitle"] = "showTitle";
+ // DPI_ShowTransSlider, having type bool
+ ParameterId["ShowTransSlider"] = "showTransparencySlider";
+ // DPI_ShowUnderline, having type bool
+ ParameterId["ShowUnderline"] = "showUnderlineOption";
+ // DPI_ShowUserThumbnailOptions, having type bool
+ ParameterId["ShowUserThumbnailOptions"] = "showUserThumbnailOptions";
+ // DPI_ShowView, having type bool
+ ParameterId["ShowView"] = "showView";
+ // DPI_ShowViews, having type bool
+ ParameterId["ShowViews"] = "showViews";
+ // DPI_ShowingPageLoadError, having type bool
+ ParameterId["ShowingPageLoadError"] = "showingPageLoadError";
+ // DPI_SupressAliases, having type bool
+ ParameterId["SupressAliases"] = "suspressAliases";
+ // DPI_SupressThousandsSeparator, having type bool
+ ParameterId["SupressThousandsSeparator"] = "supressThousandsSeparator";
+ // DPI_SingleSelectOnly, having type bool
+ ParameterId["SingleSelectOnly"] = "singleSelectOnly";
+ // DPI_SkipIfActive, having type bool
+ ParameterId["SkipIfActive"] = "skipIfActive";
+ // DPI_SkipRefresh, having type bool
+ ParameterId["SkipRefresh"] = "skipRefresh";
+ // DPI_SkipValidation, having type bool
+ ParameterId["SkipValidation"] = "skipValidation";
+ // DPI_Skipped, having type bool
+ ParameterId["Skipped"] = "skipped";
+ // DPI_SortFieldIsInvalid, having type bool
+ ParameterId["SortFieldIsInvalid"] = "sortFieldIsInvalid";
+ // DPI_SortModeIsAuto, having type bool
+ ParameterId["SortModeIsAuto"] = "sortModeIsAuto";
+ // DPI_SplitOnEdgeSnap, having type bool
+ ParameterId["SplitOnEdgeSnap"] = "splitOnEdgeSnap";
+ // DPI_StandardDeviationAllowed, having type bool
+ ParameterId["StandardDeviationAllowed"] = "standardDeviationAllowed";
+ // DPI_State, having type bool
+ ParameterId["State"] = "state";
+ // DPI_StoredProcDisabled, having type bool
+ ParameterId["StoredProcDisabled"] = "storedProcDisabled";
+ // DPI_StoredProcsDropable, having type bool
+ ParameterId["StoredProcsDropable"] = "storedProcsDropable";
+ // DPI_StoryIsEmpty, having type bool
+ ParameterId["StoryIsEmpty"] = "storyIsEmpty";
+ // DPI_StoryPointIsEmpty, having type bool
+ ParameterId["StoryPointIsEmpty"] = "storyPointIsEmpty";
+ // DPI_SuccessfulSave, having type bool
+ ParameterId["SuccessfulSave"] = "successfulSave";
+ // DPI_SupportXAxis, having type bool
+ ParameterId["SupportXAxis"] = "supportXAxis";
+ // DPI_SupportYAxis, having type bool
+ ParameterId["SupportYAxis"] = "supportYAxis";
+ // DPI_SupportsCenterAlignment, having type bool
+ ParameterId["SupportsCenterAlignment"] = "supportsCenterAlignment";
+ // DPI_SupportsDBFilters, having type bool
+ ParameterId["SupportsDBFilters"] = "supportsDatabaseFilters";
+ // DPI_SupportsMultipleValues, having type bool
+ ParameterId["SupportsMultipleValues"] = "supportsMultipleValues";
+ // DPI_SupportsRightAlignment, having type bool
+ ParameterId["SupportsRightAlignment"] = "supportsRightAlignment";
+ // DPI_SupportsTableFilters, having type bool
+ ParameterId["SupportsTableFilters"] = "supportsTableFilters";
+ // DPI_Symmetric, having type bool
+ ParameterId["Symmetric"] = "symmetric";
+ // DPI_SyncAutomaticDrill, having type bool
+ ParameterId["SyncAutomaticDrill"] = "syncAutomaticDrill";
+ // DPI_TabsAllowed, having type bool
+ ParameterId["TabsAllowed"] = "tabsAllowed";
+ // DPI_TextDropdownState, having type bool
+ ParameterId["TextDropdownState"] = "toggleState";
+ // DPI_TitleInline, having type bool
+ ParameterId["TitleInline"] = "titleInline";
+ // DPI_ToggleHighlightStateChanged, having type bool
+ ParameterId["ToggleHighlightStateChanged"] = "toggleHighlight";
+ // DPI_Transformed80Format, having type bool
+ ParameterId["Transformed80Format"] = "oldFormat";
+ // DPI_TrendLineSelected, having type bool
+ ParameterId["TrendLineSelected"] = "trendLineSelected";
+ // DPI_TruncDate, having type bool
+ ParameterId["TruncDate"] = "truncDate";
+ // DPI_TupleSelected, having type bool
+ ParameterId["TupleSelected"] = "tupleSelected";
+ // DPI_UIAutomationDidPageLoad, having type bool
+ ParameterId["UIAutomationDidPageLoad"] = "uiAutomationDidPageLoad";
+ // DPI_UIAutomationIsChecked, having type bool
+ ParameterId["UIAutomationIsChecked"] = "uiAutomationIsChecked";
+ // DPI_UIAutomationIsEnabled, having type bool
+ ParameterId["UIAutomationIsEnabled"] = "uiAutomationIsEnabled";
+ // DPI_UIAutomationIsEventProcessed, having type bool
+ ParameterId["UIAutomationIsEventProcessed"] = "uiAutomationIsEventProcessed";
+ // DPI_UIAutomationIsFocused, having type bool
+ ParameterId["UIAutomationIsFocused"] = "uiAutomationIsFocused";
+ // DPI_UIAutomationIsFound, having type bool
+ ParameterId["UIAutomationIsFound"] = "uiAutomationIsFound";
+ // DPI_UIAutomationIsReadonly, having type bool
+ ParameterId["UIAutomationIsReadonly"] = "uiAutomationIsReadonly";
+ // DPI_UIAutomationIsSelected, having type bool
+ ParameterId["UIAutomationIsSelected"] = "uiAutomationIsSelected";
+ // DPI_UpdateAllPanes, having type bool
+ ParameterId["UpdateAllPanes"] = "updateAllPanes";
+ // DPI_UpdateDSCaptionOnly, having type bool
+ ParameterId["UpdateDSCaptionOnly"] = "updateDsCaptionOnly";
+ // DPI_UpdateModelFromParams, having type bool
+ ParameterId["UpdateModelFromParams"] = "updateModelFromParams";
+ // DPI_UpdateShelves, having type bool
+ ParameterId["UpdateShelves"] = "updateShelves";
+ // DPI_UpdatesUseContext, having type bool
+ ParameterId["UpdatesUseContext"] = "updatesUseContext";
+ // DPI_UpgradeDocumentVersion, having type bool
+ ParameterId["UpgradeDocumentVersion"] = "upgradeDocumentVersion";
+ // DPI_UseAliases, having type bool
+ ParameterId["UseAliases"] = "useAliases";
+ // DPI_UseBlankForNull, having type bool
+ ParameterId["UseBlankForNull"] = "useBlankForNull";
+ // DPI_UseCalculationEditor, having type bool
+ ParameterId["UseCalculationEditor"] = "useCalculationEditor";
+ // DPI_UseCenterValue, having type bool
+ ParameterId["UseCenterValue"] = "useCenterValue";
+ // DPI_UseColor, having type bool
+ ParameterId["UseColor"] = "useColor";
+ // DPI_UseCustomMarkSize, having type bool
+ ParameterId["UseCustomMarkSize"] = "useCustomMarkSize";
+ // DPI_UseDarkIcons, having type bool
+ ParameterId["UseDarkIcons"] = "useDarkIcons";
+ // DPI_UseDataStoreMinfiedNames, having type bool
+ ParameterId["UseDataStoreMinfiedNames"] = "useDatastoreMinNames";
+ // DPI_UseInitialDomainType, having type bool
+ ParameterId["UseInitialDomainType"] = "useInitialDomainType";
+ // DPI_UseEndValue, having type bool
+ ParameterId["UseEndValue"] = "useEndValue";
+ // DPI_UseForOverlayHitTest, having type bool
+ ParameterId["UseForOverlayHitTest"] = "useForOverlayHitTest";
+ // DPI_UseFullColorRange, having type bool
+ ParameterId["UseFullColorRange"] = "useFullColorRange";
+ // DPI_UseFullDomain, having type bool
+ ParameterId["UseFullDomain"] = "useFullDomain";
+ // DPI_UseInlineImages, having type bool
+ ParameterId["UseInlineImages"] = "useInlineImages";
+ // DPI_UseMeasures, having type bool
+ ParameterId["UseMeasures"] = "useMeasures";
+ // DPI_UseNewQuickFilters, having type bool
+ ParameterId["UseNewQuickFilters"] = "useNewQuickFilters";
+ // DPI_UseNotificationReturn, having type bool
+ ParameterId["UseNotificationReturn"] = "useNotificationReturn";
+ // DPI_UseParameters, having type bool
+ ParameterId["UseParameters"] = "useParameters";
+ // DPI_UseSelector, having type bool
+ ParameterId["UseSelector"] = "useSelector";
+ // DPI_UseSignificantDigits, having type bool
+ ParameterId["UseSignificantDigits"] = "useSignificantDigits";
+ // DPI_UseSpecialStrings, having type bool
+ ParameterId["UseSpecialStrings"] = "useSpecialStrings";
+ // DPI_UseStartValue, having type bool
+ ParameterId["UseStartValue"] = "useStartValue";
+ // DPI_UseTabs, having type bool
+ ParameterId["UseTabs"] = "useTabs";
+ // DPI_UseTabletAsDefaultPreview, having type bool
+ ParameterId["UseTabletAsDefaultPreview"] = "useTabletAsDefaultPreview";
+ // DPI_UseTargetPt, having type bool
+ ParameterId["UseTargetPt"] = "useTargetPoint";
+ // DPI_UseUSLocale, having type bool
+ ParameterId["UseUSLocale"] = "useUsLocale";
+ // DPI_UseYAxis, having type bool
+ ParameterId["UseYAxis"] = "useYAxis";
+ // DPI_Valid, having type bool
+ ParameterId["Valid"] = "valid";
+ // DPI_VizDataV82, having type bool
+ ParameterId["VizDataV82"] = "vizData82";
+ // DPI_WMSConnectionSuccessful, having type bool
+ ParameterId["WMSConnectionSuccessful"] = "wmsConnectionSuccessful";
+ // DPI_WMSShouldUseTiles, having type bool
+ ParameterId["WMSShouldUseTiles"] = "wmsShouldUseTiles";
+ // DPI_WantDomain, having type bool
+ ParameterId["WantDomain"] = "wantDomain";
+ // DPI_WorkbookModified, having type bool
+ ParameterId["WorkbookModified"] = "workbookModified";
+ // DPI_ZoomIn, having type bool
+ ParameterId["ZoomIn"] = "zoomIn";
+ // DPI_ShowMarkLabels, having type bool
+ ParameterId["ShowMarkLabels"] = "showMarkLabels";
+ // DPI_HasDuplicates, having type bool
+ ParameterId["HasDuplicates"] = "hasDuplicates";
+ // DPI_HasUserDefinedIncrement, having type bool
+ ParameterId["HasUserDefinedIncrement"] = "hasUserDefinedIncrement";
+ // DPI_HasUserDefinedMax, having type bool
+ ParameterId["HasUserDefinedMax"] = "hasUserDefinedMax";
+ // DPI_HasUserDefinedMin, having type bool
+ ParameterId["HasUserDefinedMin"] = "hasUserDefinedMin";
+ // DPI_IsDuplicate, having type bool
+ ParameterId["IsDuplicate"] = "isDuplicate";
+ // DPI_IsEditingValue, having type bool
+ ParameterId["IsEditingValue"] = "isEditingValue";
+ // DPI_ShouldRestrictDataType, having type bool
+ ParameterId["ShouldRestrictDataType"] = "restrictDataType";
+ // DPI_EnableIncludeZero, having type bool
+ ParameterId["EnableIncludeZero"] = "enableIncludeZero";
+ // DPI_EnableSyncDualAxes, having type bool
+ ParameterId["EnableSyncDualAxes"] = "enableSynchronizeDualAxes";
+ // DPI_EnableShowTimes, having type bool
+ ParameterId["EnableShowTimes"] = "enableShowTimes";
+ // DPI_EnableTickMarksTab, having type bool
+ ParameterId["EnableTickMarksTab"] = "enableTickMarksTab";
+ // DPI_IsTemporal, having type bool
+ ParameterId["IsTemporal"] = "isTemporal";
+ // DPI_ShouldIncludeZero, having type bool
+ ParameterId["ShouldIncludeZero"] = "shouldIncludeZero";
+ // DPI_ShouldReverseAxis, having type bool
+ ParameterId["ShouldReverseAxis"] = "shouldReverseAxis";
+ // DPI_ShouldShowTimes, having type bool
+ ParameterId["ShouldShowTimes"] = "shouldShowTimes";
+ // DPI_UseAutomaticAxisSubtitle, having type bool
+ ParameterId["UseAutomaticAxisSubtitle"] = "useAutomaticSubtitle";
+ // DPI_UseAutomaticAxisTitle, having type bool
+ ParameterId["UseAutomaticAxisTitle"] = "useAutomaticTitle";
+ // DPI_AllSelected, having type bool
+ ParameterId["AllSelected"] = "allSelected";
+ // DPI_AutoCommit, having type bool
+ ParameterId["AutoCommit"] = "autoCommit";
+ // DPI_CacheOnly, having type bool
+ ParameterId["CacheOnly"] = "cacheOnly";
+ // DPI_IncludeData, having type bool
+ ParameterId["IncludeData"] = "includeData";
+ // DPI_IsPatternExclusive, having type bool
+ ParameterId["IsPatternExclusive"] = "isPatternExclusive";
+ // DPI_IsSearchable, having type bool
+ ParameterId["IsSearchable"] = "isSearchable";
+ // DPI_IsSelectionExclusive, having type bool
+ ParameterId["IsSelectionExclusive"] = "isSelectionExclusive";
+ // DPI_ResetNewFilter, having type bool
+ ParameterId["ResetNewFilter"] = "resetNewFilter";
+ // DPI_UseAllWhenManualEmpty, having type bool
+ ParameterId["UseAllWhenManualEmpty"] = "useAllWhenManualEmpty";
+ // DPI_UseAllWhenPatternEmpty, having type bool
+ ParameterId["UseAllWhenPatternEmpty"] = "useAllWhenPatternEmpty";
+ // DPI_GroupByDrillDown, having type bool
+ ParameterId["GroupByDrillDown"] = "groupByDrillDown";
+ // DPI_GroupByTable, having type bool
+ ParameterId["GroupByTable"] = "groupByTable";
+ // DPI_IncludeGroups, having type bool
+ ParameterId["IncludeGroups"] = "includeGroups";
+ // DPI_IncludePendingState, having type bool
+ ParameterId["IncludePendingState"] = "includePendingState";
+ // DPI_IncludeFieldMenus, having type bool
+ ParameterId["IncludeFieldMenus"] = "includeFieldMenus";
+ // DPI_IncludeFormattedValues, having type bool
+ ParameterId["IncludeFormattedValues"] = "includeFormattedValues";
+ // DPI_IncludeColumnInstances, having type bool
+ ParameterId["IncludeColumnInstances"] = "includeColumnInstances";
+ // DPI_IncludeAdHocCalcs, having type bool
+ ParameterId["IncludeAdHocCalcs"] = "includeAdhocCalcs";
+ // DPI_IncludeHiddenInvalidFields, having type bool
+ ParameterId["IncludeHiddenInvalidFields"] = "includeHiddenInvalidFields";
+ // DPI_IncludeNonExtractedColumns, having type bool
+ ParameterId["IncludeNonExtractedColumns"] = "includeNonExtractedColumns";
+ // DPI_IncludeCalculatedFieldFormulas, having type bool
+ ParameterId["IncludeCalculatedFieldFormulas"] = "includeCalculatedFieldFormulas";
+ // DPI_SetDataPreviewCustomFieldOrder, having type bool
+ ParameterId["SetDataPreviewCustomFieldOrder"] = "setDataPreviewCustomFieldOrder";
+ // DPI_CustomSplitAllowSplitFromRight, having type bool
+ ParameterId["CustomSplitAllowSplitFromRight"] = "customSplitAllowSplitFromRight";
+ // DPI_IsChanged, having type bool
+ ParameterId["IsChanged"] = "isChanged";
+ // DPI_ShowFontColorPicker, having type bool
+ ParameterId["ShowFontColorPicker"] = "showFontColorPicker";
+ // DPI_ShowFontFamilyPicker, having type bool
+ ParameterId["ShowFontFamilyPicker"] = "showFontFamilyPicker";
+ // DPI_ShowFontSizePicker, having type bool
+ ParameterId["ShowFontSizePicker"] = "showFontSizePicker";
+ // DPI_ShowFontStyleButtons, having type bool
+ ParameterId["ShowFontStyleButtons"] = "showFontStyleButtons";
+ // DPI_ShowLineForAll, having type bool
+ ParameterId["ShowLineForAll"] = "showLineForAll";
+ // DPI_ShowLineForColumn, having type bool
+ ParameterId["ShowLineForColumn"] = "showLineForColumn";
+ // DPI_ShowLineForRow, having type bool
+ ParameterId["ShowLineForRow"] = "showLineForRow";
+ // DPI_ShowLinePatternPicker, having type bool
+ ParameterId["ShowLinePatternPicker"] = "showLinePatternPicker";
+ // DPI_ShowLineTransparency, having type bool
+ ParameterId["ShowLineTransparency"] = "showLineTransparency";
+ // DPI_ShowLineWidthPicker, having type bool
+ ParameterId["ShowLineWidthPicker"] = "showLineWidthPicker";
+ // DPI_CanBeAuto, having type bool
+ ParameterId["CanBeAuto"] = "canBeAuto";
+ // DPI_CanBeNone, having type bool
+ ParameterId["CanBeNone"] = "canBeNone";
+ // DPI_CanMatchMarkColor, having type bool
+ ParameterId["CanMatchMarkColor"] = "canMatchMarkColor";
+ // DPI_HasOpacity, having type bool
+ ParameterId["HasOpacity"] = "hasOpacity";
+ // DPI_IncludeAllHidden, having type bool
+ ParameterId["IncludeAllHidden"] = "includeAllHidden";
+ // DPI_IncludeCurrent, having type bool
+ ParameterId["IncludeCurrent"] = "includeCurrent";
+ // DPI_IsIncluded, having type bool
+ ParameterId["IsIncluded"] = "isIncluded";
+ // DPI_IsRelative, having type bool
+ ParameterId["IsRelative"] = "isRelative";
+ // DPI_IsSecondaryAllowed, having type bool
+ ParameterId["IsSecondaryAllowed"] = "isSecondaryAllowed";
+ // DPI_NullIfIncomplete, having type bool
+ ParameterId["NullIfIncomplete"] = "nullIfIncomplete";
+ // DPI_IsCalcAssistanceEnabled, having type bool
+ ParameterId["IsCalcAssistanceEnabled"] = "isCalcAssistanceEnabled";
+ // DPI_UseSecondaryCalc, having type bool
+ ParameterId["UseSecondaryCalc"] = "useSecondaryCalc";
+ // DPI_CanLoad, having type bool
+ ParameterId["CanLoad"] = "canLoad";
+ // DPI_DescriptionOnly, having type bool
+ ParameterId["DescriptionOnly"] = "descriptionOnly";
+ // DPI_AreAliasesSupported, having type bool
+ ParameterId["AreAliasesSupported"] = "areAliasesSupported";
+ // DPI_AreRefColumnsSupported, having type bool
+ ParameterId["AreRefColumnsSupported"] = "areRefColumnsSupported";
+ // DPI_IsAggregated, having type bool
+ ParameterId["IsAggregated"] = "isAggregated";
+ // DPI_IsExportSupported, having type bool
+ ParameterId["IsExportSupported"] = "isExportSupported";
+ // DPI_IsMeasureNames, having type bool
+ ParameterId["IsMeasureNames"] = "isMeasureNames";
+ // DPI_IsSummarySupported, having type bool
+ ParameterId["IsSummarySupported"] = "isSummarySupported";
+ // DPI_IsTopNSupported, having type bool
+ ParameterId["IsTopNSupported"] = "isTopNSupported";
+ // DPI_IsUnderlyingSupported, having type bool
+ ParameterId["IsUnderlyingSupported"] = "isUnderlyingSupported";
+ // DPI_OnlyExportSummary, having type bool
+ ParameterId["OnlyExportSummary"] = "onlyExportSummary";
+ // DPI_ShowAllFields, having type bool
+ ParameterId["ShowAllFields"] = "showAllFields";
+ // DPI_UseTablePtrs, having type bool
+ ParameterId["UseTablePtrs"] = "useTablePtrs";
+ // DPI_OnlyFetchSummary, having type bool
+ ParameterId["OnlyFetchSummary"] = "onlyFetchSummary";
+ // DPI_IsDeviceLayoutCustomized, having type bool
+ ParameterId["IsDeviceLayoutCustomized"] = "isDeviceLayoutCustomized";
+ // DPI_IsDeviceSizeCustomized, having type bool
+ ParameterId["IsDeviceSizeCustomized"] = "isDeviceSizeCustomized";
+ // DPI_IsDeviceSupportedByMobileApp, having type bool
+ ParameterId["IsDeviceSupportedByMobileApp"] = "isDeviceSupportedByMobileApp";
+ // DPI_IsPortrait, having type bool
+ ParameterId["IsPortrait"] = "isPortrait";
+ // DPI_IsPortraitByDefault, having type bool
+ ParameterId["IsPortraitByDefault"] = "isPortraitByDefault";
+ // DPI_IsUserCustomFormat, having type bool
+ ParameterId["IsUserCustomFormat"] = "isUserCustomFormat";
+ // DPI_ShouldDisplayRebuildExtractMessage, having type bool
+ ParameterId["ShouldDisplayRebuildExtractMessage"] = "shouldDisplayRebuildExtractMessage";
+ // DPI_SupportsCustomStartOfWeek, having type bool
+ ParameterId["SupportsCustomStartOfWeek"] = "supportsCustomStartOfWeek";
+ // DPI_NeedsConnectPrompt, having type bool
+ ParameterId["NeedsConnectPrompt"] = "needsConnectPrompt";
+ // DPI_NeedsCloseDataSourceErrorPrompt, having type bool
+ ParameterId["NeedsCloseDataSourceErrorPrompt"] = "needsCloseDsErrorPrompt";
+ // DPI_ClearCurrentSelection, having type bool
+ ParameterId["ClearCurrentSelection"] = "clearCurrentSelection";
+ // DPI_HasContains, having type bool
+ ParameterId["HasContains"] = "hasContains";
+ // DPI_HasEndsWith, having type bool
+ ParameterId["HasEndsWith"] = "hasEndsWith";
+ // DPI_HasReplaceSelection, having type bool
+ ParameterId["HasReplaceSelection"] = "hasReplaceSelection";
+ // DPI_HasStartsWith, having type bool
+ ParameterId["HasStartsWith"] = "hasStartsWith";
+ // DPI_IsLeafSelectionOnly, having type bool
+ ParameterId["IsLeafSelectionOnly"] = "isLeafSelectionOnly";
+ // DPI_ReplaceSelection, having type bool
+ ParameterId["ReplaceSelection"] = "replaceSelection";
+ // DPI_IsColorPaletteCustomized, having type bool
+ ParameterId["IsColorPaletteCustomized"] = "isColorPaletteCustomized";
+ // DPI_ReversePaletteOrder, having type bool
+ ParameterId["ReversePaletteOrder"] = "reversePaletteOrder";
+ // DPI_TriedToConnect, having type bool
+ ParameterId["TriedToConnect"] = "triedToConnect";
+ // DPI_ScaleMarksInAxisUnits, having type bool
+ ParameterId["ScaleMarksInAxisUnits"] = "scaleMarksInAxisUnits";
+ // DPI_ShowMarkSizingOptions, having type bool
+ ParameterId["ShowMarkSizingOptions"] = "showMarkSizingOptions";
+ // DPI_UseSizeFieldCaption, having type bool
+ ParameterId["UseSizeFieldCaption"] = "useSizeFieldCaption";
+ // DPI_IsLicensedAndRegistered, having type bool
+ ParameterId["IsLicensedAndRegistered"] = "isLicensedAndRegistered";
+ // DPI_SetNewDatasourceActive, having type bool
+ ParameterId["SetNewDatasourceActive"] = "setNewDatasourceActive";
+ // DPI_AllowCustomLabel, having type bool
+ ParameterId["AllowCustomLabel"] = "allowCustomLabel";
+ // DPI_IsMostRecentModeValid, having type bool
+ ParameterId["IsMostRecentModeValid"] = "isMostRecentModeValid";
+ // DPI_MustShowLabels, having type bool
+ ParameterId["MustShowLabels"] = "mustShowLabels";
+ // DPI_ShowRunningOrderLabels, having type bool
+ ParameterId["ShowRunningOrderLabels"] = "showRunningOrderLabels";
+ // DPI_IsDroppedFile, having type bool
+ ParameterId["IsDroppedFile"] = "isDroppedFile";
+ // DPI_IsInitialized, having type bool
+ ParameterId["IsInitialized"] = "isInitialized";
+ // DPI_IncludeDashboard, having type bool
+ ParameterId["IncludeDashboard"] = "includeDashboard";
+ // DPI_ChildrenCanResize, having type bool
+ ParameterId["ChildrenCanResize"] = "childrenCanResize";
+ // DPI_BoolMap, having type Dictionary(of bool)
+ ParameterId["BoolMap"] = "boolMap";
+ // DPI_CheckedMenuItems, having type bool[]
+ ParameterId["CheckedMenuItems"] = "checkedMenuItems";
+ // DPI_IncludedSheetValues, having type bool[]
+ ParameterId["IncludedSheetValues"] = "includedSheetValues";
+ // DPI_SortOrderVector, having type bool[]
+ ParameterId["SortOrderVector"] = "sortOrderVector";
+ // DPI_ActionName, having type string
+ ParameterId["ActionName"] = "actionName";
+ // DPI_ActionSourceText, having type string
+ ParameterId["ActionSourceText"] = "actionSourceText";
+ // DPI_ActionTypeAsString, having type string
+ ParameterId["ActionTypeAsString"] = "actionTypeAsString";
+ // DPI_ActiveTab, having type string
+ ParameterId["ActiveTab"] = "active_tab";
+ // DPI_AddInFeatureName, having type string
+ ParameterId["AddInFeatureName"] = "addInFeatureName";
+ // DPI_AddInId, having type string
+ ParameterId["AddInId"] = "addInId";
+ // DPI_AddInstanceId, having type string
+ ParameterId["AddInstanceId"] = "addInInstanceId";
+ // DPI_AddInName, having type string
+ ParameterId["AddInName"] = "addInName";
+ // DPI_AddInLocale, having type string
+ ParameterId["AddInLocale"] = "addInLocale";
+ // DPI_AddInLanguage, having type string
+ ParameterId["AddInLanguage"] = "addInLanguage";
+ // DPI_APIVersion, having type string
+ ParameterId["APIVersion"] = "apiVersion";
+ // DPI_Alias, having type string
+ ParameterId["Alias"] = "alias";
+ // DPI_AnchorDate, having type string
+ ParameterId["AnchorDate"] = "anchorDate";
+ // DPI_AnnotationRes, having type string
+ ParameterId["AnnotationRes"] = "annotationRes";
+ // DPI_ReadId, having type string
+ ParameterId["ReadId"] = "readId";
+ // DPI_AnnotationText, having type string
+ ParameterId["AnnotationText"] = "annotationText";
+ // DPI_ArchiveDirectory, having type string
+ ParameterId["ArchiveDirectory"] = "archiveDirectory";
+ // DPI_ArchiveFullPath, having type string
+ ParameterId["ArchiveFullPath"] = "archiveFullPath";
+ // DPI_AtTheLevelInvalidFieldCaption, having type string
+ ParameterId["AtTheLevelInvalidFieldCaption"] = "atTheLevelInvalidFieldCaption";
+ // DPI_AutoCompleteSubstring, having type string
+ ParameterId["AutoCompleteSubstring"] = "acSubstring";
+ // DPI_AutosaveFileId, having type string
+ ParameterId["AutosaveFileId"] = "autosaveFileId";
+ // DPI_AutosaveTimerInterval, having type string
+ ParameterId["AutosaveTimerInterval"] = "autosaveTimerInterval";
+ // DPI_BaseColumnCaption, having type string
+ ParameterId["BaseColumnCaption"] = "baseColumnCaption";
+ // DPI_ClearButtonText, having type string
+ ParameterId["ClearButtonText"] = "clearButtonText";
+ // DPI_ColorPaletteId, having type string
+ ParameterId["ColorPaletteId"] = "colorPaletteId";
+ // DPI_ColorPaletteName, having type string
+ ParameterId["ColorPaletteName"] = "colorPaletteName";
+ // DPI_ColorSwatch, having type string
+ ParameterId["ColorSwatch"] = "colorSwatch";
+ // DPI_CommandName, having type string
+ ParameterId["CommandName"] = "commandName";
+ // DPI_ConfidenceLevelValue, having type string
+ ParameterId["ConfidenceLevelValue"] = "confidenceLevelValue";
+ // DPI_CountDistinctStr, having type string
+ ParameterId["CountDistinctStr"] = "countDistinctStr";
+ // DPI_CrossTabFilepath, having type string
+ ParameterId["CrossTabFilepath"] = "crossTabFilepath";
+ // DPI_CSSMargin, having type string
+ ParameterId["CSSMargin"] = "cssMargin";
+ // DPI_CSSWhitespace, having type string
+ ParameterId["CSSWhitespace"] = "cssWhitespace";
+ // DPI_DBPassword, having type string
+ ParameterId["DBPassword"] = "dbPassword";
+ // DPI_DBUsername, having type string
+ ParameterId["DBUsername"] = "dbUsername";
+ // DPI_DataAlertConditionText, having type string
+ ParameterId["DataAlertConditionText"] = "dataAlertConditionText";
+ // DPI_DataAlertMeasureText, having type string
+ ParameterId["DataAlertMeasureText"] = "dataAlertMeasureText";
+ // DPI_DataAlertSpecSerializedText, having type string
+ ParameterId["DataAlertSpecSerializedText"] = "dataAlertSpecSerializedText";
+ // DPI_DataAlertDefaultSubject, having type string
+ ParameterId["DataAlertDefaultSubject"] = "dataAlertDefaultSubject";
+ // DPI_DataAlertThresholdText, having type string
+ ParameterId["DataAlertThresholdText"] = "dataAlertThresholdText";
+ // DPI_DataGridSortColumnName, having type string
+ ParameterId["DataGridSortColumnName"] = "datagridSortColumnName";
+ // DPI_DataServerConnectionError, having type string
+ ParameterId["DataServerConnectionError"] = "dataServerConnectionError";
+ // DPI_DatabaseFilter, having type string
+ ParameterId["DatabaseFilter"] = "databaseFilter";
+ // DPI_DatabaseFilterPrompt, having type string
+ ParameterId["DatabaseFilterPrompt"] = "databaseFilterPrompt";
+ // DPI_DatasourceRanking, having type string
+ ParameterId["DatasourceRanking"] = "datasourceRanking";
+ // DPI_DatasourceUrl, having type string
+ ParameterId["DatasourceUrl"] = "datasourceUrl";
+ // DPI_DatasourceUsername, having type string
+ ParameterId["DatasourceUsername"] = "datasourceUsername";
+ // DPI_DateFormat, having type string
+ ParameterId["DateFormat"] = "dateFormat";
+ // DPI_DatePart, having type string
+ ParameterId["DatePart"] = "datePart";
+ // DPI_DatePartAbbrev, having type string
+ ParameterId["DatePartAbbrev"] = "datePartAbbrev";
+ // DPI_DefaultHierarchyName, having type string
+ ParameterId["DefaultHierarchyName"] = "defaultHierarchyName";
+ // DPI_DefaultMenuItemKey, having type string
+ ParameterId["DefaultMenuItemKey"] = "defaultMenuItemKey";
+ // DPI_Delimiter, having type string
+ ParameterId["Delimiter"] = "delimiter";
+ // DPI_DeviceName, having type string
+ ParameterId["DeviceName"] = "deviceName";
+ // DPI_DeviceType, having type string
+ ParameterId["DeviceType"] = "deviceType";
+ // DPI_DisplayPath, having type string
+ ParameterId["DisplayPath"] = "displayPath";
+ // DPI_DistributionValueString, having type string
+ ParameterId["DistributionValueString"] = "distributionValueString";
+ // DPI_DrillPathName, having type string
+ ParameterId["DrillPathName"] = "drillPathName";
+ // DPI_EmbeddedTitle, having type string
+ ParameterId["EmbeddedTitle"] = "embeddedTitle";
+ // DPI_EnterValueText, having type string
+ ParameterId["EnterValueText"] = "enterValueText";
+ // DPI_EscapeString, having type string
+ ParameterId["EscapeString"] = "escapeString";
+ // DPI_ExtSvcConfigHost, having type string
+ ParameterId["ExtSvcConfigHost"] = "extSvcConfigHost";
+ // DPI_ExtSvcConfigPassword, having type string
+ ParameterId["ExtSvcConfigPassword"] = "extSvcConfigPassword";
+ // DPI_ExtSvcConfigPort, having type string
+ ParameterId["ExtSvcConfigPort"] = "extSvcConfigPort";
+ // DPI_ExtSvcConfigConnectTimeout, having type string
+ ParameterId["ExtSvcConfigConnectTimeout"] = "extSvcConnectTimeout";
+ // DPI_ExtSvcConfigPrevHost, having type string
+ ParameterId["ExtSvcConfigPrevHost"] = "extSvcConfigPrevHost";
+ // DPI_ExtSvcConfigUsername, having type string
+ ParameterId["ExtSvcConfigUsername"] = "extSvcConfigUsername";
+ // DPI_ExtractUpdateTime, having type string
+ ParameterId["ExtractUpdateTime"] = "extractUpdateTime";
+ // DPI_FieldFolderName, having type string
+ ParameterId["FieldFolderName"] = "fieldFolderName";
+ // DPI_FieldNameString, having type string
+ ParameterId["FieldNameString"] = "fieldName";
+ // DPI_FilterSearchDomain, having type string
+ ParameterId["FilterSearchDomain"] = "filterSearchDomain";
+ // DPI_FilterSpec, having type string
+ ParameterId["FilterSpec"] = "filterSpec";
+ // DPI_FirstValue, having type string
+ ParameterId["FirstValue"] = "firstValue";
+ // DPI_FolderName, having type string
+ ParameterId["FolderName"] = "folderName";
+ // DPI_FontName, having type string
+ ParameterId["FontName"] = "fontName";
+ // DPI_FormatString, having type string
+ ParameterId["FormatString"] = "formatString";
+ // DPI_FormattedDisplayString, having type string
+ ParameterId["FormattedDisplayString"] = "formattedDisplayString";
+ // DPI_FormattedIncrementValue, having type string
+ ParameterId["FormattedIncrementValue"] = "formattedIncrement";
+ // DPI_FormattedMaxValue, having type string
+ ParameterId["FormattedMaxValue"] = "formattedMax";
+ // DPI_FormattedMinValue, having type string
+ ParameterId["FormattedMinValue"] = "formattedMin";
+ // DPI_FormattedValue, having type string
+ ParameterId["FormattedValue"] = "formattedValue";
+ // DPI_FormattedCenterValue, having type string
+ ParameterId["FormattedCenterValue"] = "formattedCenter";
+ // DPI_FormattedEndValue, having type string
+ ParameterId["FormattedEndValue"] = "formattedEnd";
+ // DPI_FormattedStartValue, having type string
+ ParameterId["FormattedStartValue"] = "formattedStart";
+ // DPI_PairedFormattedValue, having type string
+ ParameterId["PairedFormattedValue"] = "pairedFormattedValue";
+ // DPI_FrameAttributes, having type string
+ ParameterId["FrameAttributes"] = "frameAttr";
+ // DPI_GUID, having type string
+ ParameterId["GUID"] = "guid";
+ // DPI_GeographicSearchCandidateDisplayName, having type string
+ ParameterId["GeographicSearchCandidateDisplayName"] = "geographicSearchCandidateDisplayName";
+ // DPI_GeographicSearchCandidateParentName, having type string
+ ParameterId["GeographicSearchCandidateParentName"] = "geographicSearchCandidateParentName";
+ // DPI_GeographicSearchCandidateType, having type string
+ ParameterId["GeographicSearchCandidateType"] = "geographicSearchCandidateType";
+ // DPI_GeographicSearchLocale, having type string
+ ParameterId["GeographicSearchLocale"] = "geographicSearchLocale";
+ // DPI_GeographicSearchQueryString, having type string
+ ParameterId["GeographicSearchQueryString"] = "geographicSearchSearchString";
+ // DPI_GeographicSearchUILocale, having type string
+ ParameterId["GeographicSearchUILocale"] = "geographicSearchUilocale";
+ // DPI_IconRes, having type string
+ ParameterId["IconRes"] = "iconRes";
+ // DPI_ImageHash, having type string
+ ParameterId["ImageHash"] = "imageHash";
+ // DPI_ImageName, having type string
+ ParameterId["ImageName"] = "imageName";
+ // DPI_ImageRes, having type string
+ ParameterId["ImageRes"] = "imageRes";
+ // DPI_IncludesSiblingsPrompt, having type string
+ ParameterId["IncludesSiblingsPrompt"] = "includesSiblingsPrompt";
+ // DPI_IncludesSubfoldersPrompt, having type string
+ ParameterId["IncludesSubfoldersPrompt"] = "includesSubfoldersPrompt";
+ // DPI_IncrementalScheduleIDs, having type string
+ ParameterId["IncrementalScheduleIDs"] = "incrementalScheduleIds";
+ // DPI_InvariantKeyword, having type string
+ ParameterId["InvariantKeyword"] = "invariantKeyword";
+ // DPI_JoinOperator, having type string
+ ParameterId["JoinOperator"] = "joinOperator";
+ // DPI_JoinExpression, having type string
+ ParameterId["JoinExpression"] = "joinExpression";
+ // DPI_Key, having type string
+ ParameterId["Key"] = "keyId";
+ // DPI_Label, having type string
+ ParameterId["Label"] = "label";
+ // DPI_PairedLabel, having type string
+ ParameterId["PairedLabel"] = "pairedLabel";
+ // DPI_LayoutID, having type string
+ ParameterId["LayoutID"] = "layoutId";
+ // DPI_LeftJoinExpression, having type string
+ ParameterId["LeftJoinExpression"] = "leftJoinExpression";
+ // DPI_LimitCountExpression, having type string
+ ParameterId["LimitCountExpression"] = "limitCountExpression";
+ // DPI_LinkTarget, having type string
+ ParameterId["LinkTarget"] = "linkTarget";
+ // DPI_Locale, having type string
+ ParameterId["Locale"] = "locale";
+ // DPI_LocalizedKeyword, having type string
+ ParameterId["LocalizedKeyword"] = "localizedKeyword";
+ // DPI_MapBoxGLStyleId, having type string
+ ParameterId["MapBoxGLStyleId"] = "mapboxGlStyleId";
+ // DPI_MapBoxStyleUrl, having type string
+ ParameterId["MapBoxStyleUrl"] = "mapboxStyleUrl";
+ // DPI_MapBoxUsername, having type string
+ ParameterId["MapBoxUsername"] = "mapboxUsername";
+ // DPI_MapScaleReadoutString, having type string
+ ParameterId["MapScaleReadoutString"] = "mapScaleReadoutString";
+ // DPI_MapScaleTooltipString, having type string
+ ParameterId["MapScaleTooltipString"] = "mapScaleTooltipString";
+ // DPI_MapSourceName, having type string
+ ParameterId["MapSourceName"] = "mapSourceName";
+ // DPI_MaxLabel, having type string
+ ParameterId["MaxLabel"] = "maxLabel";
+ // DPI_MinLabel, having type string
+ ParameterId["MinLabel"] = "minLabel";
+ // DPI_ModelDescriptionParagraph, having type string
+ ParameterId["ModelDescriptionParagraph"] = "modelDescriptionParagraph";
+ // DPI_NameTemplate, having type string
+ ParameterId["NameTemplate"] = "nameTemplate";
+ // DPI_NewDrillPath, having type string
+ ParameterId["NewDrillPath"] = "newDrillPath";
+ // DPI_NewFieldFolderName, having type string
+ ParameterId["NewFieldFolderName"] = "newFieldFolderName";
+ // DPI_NewTableAlias, having type string
+ ParameterId["NewTableAlias"] = "newTableAlias";
+ // DPI_NonFormattedValue, having type string
+ ParameterId["NonFormattedValue"] = "unformattedValue";
+ // DPI_OAuthUserName, having type string
+ ParameterId["OAuthUserName"] = "oauthUsername";
+ // DPI_ObjectName, having type string
+ ParameterId["ObjectName"] = "objectName";
+ // DPI_ObjectOverrideMessage, having type string
+ ParameterId["ObjectOverrideMessage"] = "objectOverrideMessage";
+ // DPI_OldTableAlias, having type string
+ ParameterId["OldTableAlias"] = "oldTableAlias";
+ // DPI_OperatingSystem, having type string
+ ParameterId["OperatingSystem"] = "operatingSystem";
+ // DPI_OriginalFilePath, having type string
+ ParameterId["OriginalFilePath"] = "originalFilePath";
+ // DPI_OriginalFileVersion, having type string
+ ParameterId["OriginalFileVersion"] = "originalFileVersion";
+ // DPI_PaneDescriptorKey, having type string
+ ParameterId["PaneDescriptorKey"] = "paneDescrKey";
+ // DPI_ParentName, having type string
+ ParameterId["ParentName"] = "parentName";
+ // DPI_ParentTable, having type string
+ ParameterId["ParentTable"] = "parentTable";
+ // DPI_PatternFilterString, having type string
+ ParameterId["PatternFilterString"] = "patternFilterString";
+ // DPI_PendingCalcName, having type string
+ ParameterId["PendingCalcName"] = "pendingCalcName";
+ // DPI_PercentilesString, having type string
+ ParameterId["PercentilesString"] = "percentilesString";
+ // DPI_ProjectName, having type string
+ ParameterId["ProjectName"] = "projectName";
+ // DPI_PropertyName, having type string
+ ParameterId["PropertyName"] = "propertyName";
+ // DPI_QuickFilterTitleCaption, having type string
+ ParameterId["QuickFilterTitleCaption"] = "quickFilterTitleCaption";
+ // DPI_RangeDiffStr, having type string
+ ParameterId["RangeDiffStr"] = "diffValue";
+ // DPI_RangeMaxStr, having type string
+ ParameterId["RangeMaxStr"] = "maxValue";
+ // DPI_RangeMinStr, having type string
+ ParameterId["RangeMinStr"] = "minValue";
+ // DPI_RecoveredFilePath, having type string
+ ParameterId["RecoveredFilePath"] = "recoveredFilePath";
+ // DPI_ReferenceLineSpecificationId, having type string
+ ParameterId["ReferenceLineSpecificationId"] = "referenceLineId";
+ // DPI_ReplaceFieldPrompt, having type string
+ ParameterId["ReplaceFieldPrompt"] = "replaceFieldPrompt";
+ // DPI_RightJoinExpression, having type string
+ ParameterId["RightJoinExpression"] = "rightJoinExpression";
+ // DPI_RootPath, having type string
+ ParameterId["RootPath"] = "rootPath";
+ // DPI_RuntimeFinalDatastore, having type string
+ ParameterId["RuntimeFinalDatastore"] = "runtimeFinalDatastore";
+ // DPI_RuntimeInitialDatastore, having type string
+ ParameterId["RuntimeInitialDatastore"] = "runtimeInitialDatastore";
+ // DPI_RuntimeVTL, having type string
+ ParameterId["RuntimeVTL"] = "runtimeVtl";
+ // DPI_SampleDataString, having type string
+ ParameterId["SampleDataString"] = "sampleData";
+ // DPI_ScheduleIDs, having type string
+ ParameterId["ScheduleIDs"] = "scheduleIds";
+ // DPI_SchemaFieldIconResource, having type string
+ ParameterId["SchemaFieldIconResource"] = "fieldIconRes";
+ // DPI_ScreenName, having type string
+ ParameterId["ScreenName"] = "screenName";
+ // DPI_ScriptCommand, having type string
+ ParameterId["ScriptCommand"] = "command";
+ // DPI_SecondValue, having type string
+ ParameterId["SecondValue"] = "secondValue";
+ // DPI_SelectedValue, having type string
+ ParameterId["SelectedValue"] = "selectedValue";
+ // DPI_ShapeName, having type string
+ ParameterId["ShapeName"] = "shapeName";
+ // DPI_SheetId, having type string
+ ParameterId["SheetId"] = "sheetId";
+ // DPI_ShowDataTable, having type string
+ ParameterId["ShowDataTable"] = "showDataTable";
+ // DPI_SimpleCommand, having type string
+ ParameterId["SimpleCommand"] = "simpleCommand";
+ // DPI_SortModeCaption, having type string
+ ParameterId["SortModeCaption"] = "sortModeCaption";
+ // DPI_SourceName, having type string
+ ParameterId["SourceName"] = "sourceName";
+ // DPI_SourceText, having type string
+ ParameterId["SourceText"] = "sourceText";
+ // DPI_SpecialValueText, having type string
+ ParameterId["SpecialValueText"] = "specialValueText";
+ // DPI_StaticImage, having type string
+ ParameterId["StaticImage"] = "staticImage";
+ // DPI_StoryPointBase, having type string
+ ParameterId["StoryPointBase"] = "storyPointBase";
+ // DPI_StoryPointCaption, having type string
+ ParameterId["StoryPointCaption"] = "storyPointCaption";
+ // DPI_Storyboard, having type string
+ ParameterId["Storyboard"] = "storyboard";
+ // DPI_StyledLabel, having type string
+ ParameterId["StyledLabel"] = "styledLabel";
+ // DPI_SummaryCaption, having type string
+ ParameterId["SummaryCaption"] = "summaryCaption";
+ // DPI_SummaryField, having type string
+ ParameterId["SummaryField"] = "summaryField";
+ // DPI_TableauVersion, having type string
+ ParameterId["TableauVersion"] = "tableauVersion";
+ // DPI_TableFilter, having type string
+ ParameterId["TableFilter"] = "tableFilter";
+ // DPI_TableFilterPrompt, having type string
+ ParameterId["TableFilterPrompt"] = "tableFilterPrompt";
+ // DPI_TagsLabel, having type string
+ ParameterId["TagsLabel"] = "tagsLabel";
+ // DPI_Target, having type string
+ ParameterId["Target"] = "target";
+ // DPI_ThumbnailGroup, having type string
+ ParameterId["ThumbnailGroup"] = "thumbnailGroup";
+ // DPI_ThumbnailUser, having type string
+ ParameterId["ThumbnailUser"] = "thumbnailUser";
+ // DPI_TimeFormat, having type string
+ ParameterId["TimeFormat"] = "timeFormat";
+ // DPI_TrendLineErrorString, having type string
+ ParameterId["TrendLineErrorString"] = "trendLineErrorString";
+ // DPI_TrendLineModelFormula, having type string
+ ParameterId["TrendLineModelFormula"] = "trendLineModelFormula";
+ // DPI_URLString, having type string
+ ParameterId["URLString"] = "urlString";
+ // DPI_URLTest, having type string
+ ParameterId["URLTest"] = "urlTest";
+ // DPI_ValidationMessage, having type string
+ ParameterId["ValidationMessage"] = "validationMessage";
+ // DPI_ValueStr, having type string
+ ParameterId["ValueStr"] = "valueString";
+ // DPI_VerifiedNonFormattedValue, having type string
+ ParameterId["VerifiedNonFormattedValue"] = "verifiedUnformattedValue";
+ // DPI_WorkbookFullPath, having type string
+ ParameterId["WorkbookFullPath"] = "workbookFullPath";
+ // DPI_WindowTitle, having type string
+ ParameterId["WindowTitle"] = "windowTitle";
+ // DPI_ZoneName, having type string
+ ParameterId["ZoneName"] = "zoneName";
+ // DPI_ZoneParam, having type string
+ ParameterId["ZoneParam"] = "zoneParam";
+ // DPI_DataAlertErrorText, having type string
+ ParameterId["DataAlertErrorText"] = "dataAlertErrorText";
+ // DPI_ExtractTempDirectory, having type string
+ ParameterId["ExtractTempDirectory"] = "extractTempDir";
+ // DPI_DSSubClass, having type string
+ ParameterId["DSSubClass"] = "dsSubClass";
+ // DPI_DbgCommandLine, having type string
+ ParameterId["DbgCommandLine"] = "debugCommandLine";
+ // DPI_DbgLogPath, having type string
+ ParameterId["DbgLogPath"] = "debugLogPath";
+ // DPI_DbgOSVersion, having type string
+ ParameterId["DbgOSVersion"] = "debugOsVersion";
+ // DPI_DbgUserName, having type string
+ ParameterId["DbgUserName"] = "debugUsername";
+ // DPI_ErrorMsg, having type string
+ ParameterId["ErrorMsg"] = "errorMessage";
+ // DPI_ErrorStackTrace, having type string
+ ParameterId["ErrorStackTrace"] = "errorStackTrace";
+ // DPI_ErrorStr, having type string
+ ParameterId["ErrorStr"] = "errorString";
+ // DPI_EventMessage, having type string
+ ParameterId["EventMessage"] = "eventMessage";
+ // DPI_EventTimestamp, having type string
+ ParameterId["EventTimestamp"] = "eventTimestamp";
+ // DPI_ExtractDeltaPath, having type string
+ ParameterId["ExtractDeltaPath"] = "extractDeltaPath";
+ // DPI_ExtractPath, having type string
+ ParameterId["ExtractPath"] = "extractPath";
+ // DPI_ExtractSuggestedPath, having type string
+ ParameterId["ExtractSuggestedPath"] = "suggestedExtractPath";
+ // DPI_ExtractTaskSummary, having type string
+ ParameterId["ExtractTaskSummary"] = "extractTaskSummary";
+ // DPI_FactorsString, having type string
+ ParameterId["FactorsString"] = "factorsStr";
+ // DPI_FormattedFamilyName, having type string
+ ParameterId["FormattedFamilyName"] = "formattedFamilyName";
+ // DPI_FunctionSignature, having type string
+ ParameterId["FunctionSignature"] = "funcSig";
+ // DPI_FunctionTooltip, having type string
+ ParameterId["FunctionTooltip"] = "funcTooltip";
+ // DPI_HelpContents, having type string
+ ParameterId["HelpContents"] = "helpContents";
+ // DPI_MapAttributionText, having type string
+ ParameterId["MapAttributionText"] = "mapAttributionText";
+ // DPI_MapAttributionTextSize, having type string
+ ParameterId["MapAttributionTextSize"] = "mapAttributionTextSize";
+ // DPI_MapAttributionUrl, having type string
+ ParameterId["MapAttributionUrl"] = "mapAttributionUrl";
+ // DPI_MapBoxErrorMessage, having type string
+ ParameterId["MapBoxErrorMessage"] = "mapboxErrorMessage";
+ // DPI_MapBoxOldStyleName, having type string
+ ParameterId["MapBoxOldStyleName"] = "mapboxOldStyleName";
+ // DPI_MapBoxSelectedStyle, having type string
+ ParameterId["MapBoxSelectedStyle"] = "mapboxSelectedStyle";
+ // DPI_MapBoxStyleName, having type string
+ ParameterId["MapBoxStyleName"] = "mapboxStyleName";
+ // DPI_MapLayerRequest, having type string
+ ParameterId["MapLayerRequest"] = "mapLayerRequest";
+ // DPI_MapServerKey, having type string
+ ParameterId["MapServerKey"] = "mapServerKey";
+ // DPI_MapTileServer, having type string
+ ParameterId["MapTileServer"] = "mapTileServer";
+ // DPI_MapTileUrl, having type string
+ ParameterId["MapTileUrl"] = "mapTileUrl";
+ // DPI_PercentagesString, having type string
+ ParameterId["PercentagesString"] = "percentagesStr";
+ // DPI_PublishErrorMessage, having type string
+ ParameterId["PublishErrorMessage"] = "publishErrorMessage";
+ // DPI_TdePath, having type string
+ ParameterId["TdePath"] = "tdePath";
+ // DPI_UIAutomationComponentName, having type string
+ ParameterId["UIAutomationComponentName"] = "uiAutomationComponentName";
+ // DPI_UIAutomationEndTime, having type string
+ ParameterId["UIAutomationEndTime"] = "uiAutomationEndTime";
+ // DPI_UIAutomationName, having type string
+ ParameterId["UIAutomationName"] = "uiAutomationName";
+ // DPI_UIAutomationStartTime, having type string
+ ParameterId["UIAutomationStartTime"] = "uiAutomationStartTime";
+ // DPI_UIAutomationValue, having type string
+ ParameterId["UIAutomationValue"] = "uiAutomationValue";
+ // DPI_WMSConnectionName, having type string
+ ParameterId["WMSConnectionName"] = "wmsConnectionName";
+ // DPI_WMSOldConnectionName, having type string
+ ParameterId["WMSOldConnectionName"] = "wmsOldConnectionName";
+ // DPI_WMSServerUrl, having type string
+ ParameterId["WMSServerUrl"] = "wmsServerUrl";
+ // DPI_AboutBuildVersion, having type string
+ ParameterId["AboutBuildVersion"] = "aboutBuildVersion";
+ // DPI_ActionFields, having type string
+ ParameterId["ActionFields"] = "actionFields";
+ // DPI_AddVariableLabel, having type string
+ ParameterId["AddVariableLabel"] = "addVariableLabel";
+ // DPI_AddVariableTooltip, having type string
+ ParameterId["AddVariableTooltip"] = "addVariableTooltip";
+ // DPI_AllowedDataSourcesByName, having type string
+ ParameterId["AllowedDataSourcesByName"] = "allowedDataSourcesByName";
+ // DPI_AppAboutVersion, having type string
+ ParameterId["AppAboutVersion"] = "appAboutVersion";
+ // DPI_AppBuildBranchName, having type string
+ ParameterId["AppBuildBranchName"] = "appBuildBranchName";
+ // DPI_AppBuildVersion, having type string
+ ParameterId["AppBuildVersion"] = "appBuildVersion";
+ // DPI_AppExternalVersion, having type string
+ ParameterId["AppExternalVersion"] = "appExternalVersion";
+ // DPI_AppName, having type string
+ ParameterId["AppName"] = "appName";
+ // DPI_AppProductVersion, having type string
+ ParameterId["AppProductVersion"] = "appProductVersion";
+ // DPI_OriginalVersion, having type string
+ ParameterId["OriginalVersion"] = "originalVersion";
+ // DPI_AtTheLevelSpecialCaption, having type string
+ ParameterId["AtTheLevelSpecialCaption"] = "atTheLevelSpecialCaption";
+ // DPI_AutoCompleteCalc, having type string
+ ParameterId["AutoCompleteCalc"] = "acCalc";
+ // DPI_CSVPath, having type string
+ ParameterId["CSVPath"] = "csvPath";
+ // DPI_CommandNamespace, having type string
+ ParameterId["CommandNamespace"] = "commandNamespace";
+ // DPI_Condition, having type string
+ ParameterId["Condition"] = "condition";
+ // DPI_ConditionSummary, having type string
+ ParameterId["ConditionSummary"] = "conditionSummary";
+ // DPI_ConfirmationMsg, having type string
+ ParameterId["ConfirmationMsg"] = "confirmationMsg";
+ // DPI_DashboardTypeText, having type string
+ ParameterId["DashboardTypeText"] = "dashboardType";
+ // DPI_DataserverPublicAddress, having type string
+ ParameterId["DataserverPublicAddress"] = "dataserverPublicAddress";
+ // DPI_DatasourceFileName, having type string
+ ParameterId["DatasourceFileName"] = "datasourceFileName";
+ // DPI_DecimalMark, having type string
+ ParameterId["DecimalMark"] = "decimalMark";
+ // DPI_DeleteVariableTooltip, having type string
+ ParameterId["DeleteVariableTooltip"] = "deleteVariableTooltip";
+ // DPI_DialogTitle, having type string
+ ParameterId["DialogTitle"] = "dialogTitle";
+ // DPI_DisplayValue, having type string
+ ParameterId["DisplayValue"] = "displayValue";
+ // DPI_TooltipValue, having type string
+ ParameterId["TooltipValue"] = "tooltipValue";
+ // DPI_DstPath, having type string
+ ParameterId["DstPath"] = "dstPath";
+ // DPI_EditWidgetHeader, having type string
+ ParameterId["EditWidgetHeader"] = "editWidgetHeader";
+ // DPI_EditWidgetInstruction, having type string
+ ParameterId["EditWidgetInstruction"] = "editWidgetInstruction";
+ // DPI_EndSelectionCaption, having type string
+ ParameterId["EndSelectionCaption"] = "endSelectionCaption";
+ // DPI_ErrorDialogTitle, having type string
+ ParameterId["ErrorDialogTitle"] = "errorDialogTitle";
+ // DPI_ErrorHelpLink, having type string
+ ParameterId["ErrorHelpLink"] = "errorHelpLink";
+ // DPI_ErrorShortMessage, having type string
+ ParameterId["ErrorShortMessage"] = "errorShortMessage";
+ // DPI_FilterSearchQuery, having type string
+ ParameterId["FilterSearchQuery"] = "filterSearchQuery";
+ // DPI_FromLabel, having type string
+ ParameterId["FromLabel"] = "fromLabel";
+ // DPI_FunctionHelp, having type string
+ ParameterId["FunctionHelp"] = "functionHelp";
+ // DPI_Instructions, having type string
+ ParameterId["Instructions"] = "instructions";
+ // DPI_LargeUnitDisplay, having type string
+ ParameterId["LargeUnitDisplay"] = "largeUnitDisplay";
+ // DPI_Limit, having type string
+ ParameterId["Limit"] = "limit";
+ // DPI_ListViewNameLabel, having type string
+ ParameterId["ListViewNameLabel"] = "listViewNameLabel";
+ // DPI_ListViewValueLabel, having type string
+ ParameterId["ListViewValueLabel"] = "listViewValueLabel";
+ // DPI_MapScaleReadoutUnit, having type string
+ ParameterId["MapScaleReadoutUnit"] = "mapScaleReadoutUnit";
+ // DPI_MeasureDimension, having type string
+ ParameterId["MeasureDimension"] = "measuresDimension";
+ // DPI_MimeType, having type string
+ ParameterId["MimeType"] = "mimeType";
+ // DPI_MinimizedName, having type string
+ ParameterId["MinimizedName"] = "minName";
+ // DPI_NotificationMsg, having type string
+ ParameterId["NotificationMsg"] = "notificationMsg";
+ // DPI_OperationName, having type string
+ ParameterId["OperationName"] = "operationName";
+ // DPI_PageTitle, having type string
+ ParameterId["PageTitle"] = "pageTitle";
+ // DPI_PatternSummary, having type string
+ ParameterId["PatternSummary"] = "patternSummary";
+ // DPI_ReferenceLineId, having type string
+ ParameterId["ReferenceLineId"] = "refLineId";
+ // DPI_ReferenceLinePairedId, having type string
+ ParameterId["ReferenceLinePairedId"] = "refLinePairedId";
+ // DPI_ReplaceText, having type string
+ ParameterId["ReplaceText"] = "replaceText";
+ // DPI_RequiredVariableMessage, having type string
+ ParameterId["RequiredVariableMessage"] = "requiredVariableMessage";
+ // DPI_RestartEverySpecialCaption, having type string
+ ParameterId["RestartEverySpecialCaption"] = "restartEverySpecialCaption";
+ // DPI_Root, having type string
+ ParameterId["Root"] = "root";
+ // DPI_SelectionSummary, having type string
+ ParameterId["SelectionSummary"] = "selectionSummary";
+ // DPI_SessionAttributeKey, having type string
+ ParameterId["SessionAttributeKey"] = "sessionAttributeKey";
+ // DPI_SessionAttributeValue, having type string
+ ParameterId["SessionAttributeValue"] = "sessionAttributeValue";
+ // DPI_SheetAttributeKey, having type string
+ ParameterId["SheetAttributeKey"] = "baseSheetAttributeKey";
+ // DPI_SheetAttributeValue, having type string
+ ParameterId["SheetAttributeValue"] = "baseSheetAttributeValue";
+ // DPI_SmallUnitDisplay, having type string
+ ParameterId["SmallUnitDisplay"] = "smallUnitDisplay";
+ // DPI_SourceCaption, having type string
+ ParameterId["SourceCaption"] = "sourceCaption";
+ // DPI_SrcPath, having type string
+ ParameterId["SrcPath"] = "srcPath";
+ // DPI_StartSelectionCaption, having type string
+ ParameterId["StartSelectionCaption"] = "startSelectionCaption";
+ // DPI_Subtitle, having type string
+ ParameterId["Subtitle"] = "subtitle";
+ // DPI_TableauServerSiteName, having type string
+ ParameterId["TableauServerSiteName"] = "tableauServerSiteName";
+ // DPI_TargetCaption, having type string
+ ParameterId["TargetCaption"] = "targetCaption";
+ // DPI_ThumbnailPath, having type string
+ ParameterId["ThumbnailPath"] = "thumbnailPath";
+ // DPI_ToLabel, having type string
+ ParameterId["ToLabel"] = "toLabel";
+ // DPI_URLAddress, having type string
+ ParameterId["URLAddress"] = "urlAddress";
+ // DPI_ValuesTableHeader, having type string
+ ParameterId["ValuesTableHeader"] = "valuesTableHeader";
+ // DPI_ValuesTableHeader2, having type string
+ ParameterId["ValuesTableHeader2"] = "valuesTableHeader2";
+ // DPI_VariableDescription, having type string
+ ParameterId["VariableDescription"] = "variableDescription";
+ // DPI_VariableDisplayName, having type string
+ ParameterId["VariableDisplayName"] = "variableDisplayName";
+ // DPI_VariableGUID, having type string
+ ParameterId["VariableGUID"] = "variableGuid";
+ // DPI_VerboseName, having type string
+ ParameterId["VerboseName"] = "verboseName";
+ // DPI_ViewId, having type string
+ ParameterId["ViewId"] = "viewId";
+ // DPI_Warning1, having type string
+ ParameterId["Warning1"] = "warning1";
+ // DPI_Warning2, having type string
+ ParameterId["Warning2"] = "warning2";
+ // DPI_RefreshToken, having type string
+ ParameterId["RefreshToken"] = "refresh_token";
+ // DPI_TokenType, having type string
+ ParameterId["TokenType"] = "token_type";
+ // DPI_XSRFToken, having type string
+ ParameterId["XSRFToken"] = "xsrf_token";
+ // DPI_AxisSubtitle, having type string
+ ParameterId["AxisSubtitle"] = "axisSubtitle";
+ // DPI_AxisTitle, having type string
+ ParameterId["AxisTitle"] = "axisTitle";
+ // DPI_TickMarkOriginDataValue, having type string
+ ParameterId["TickMarkOriginDataValue"] = "tickMarkOriginDataValue";
+ // DPI_TickMarkOriginDataValueNoTime, having type string
+ ParameterId["TickMarkOriginDataValueNoTime"] = "tickMarkOriginDataValueNoTime";
+ // DPI_TickMarkSpacingDataValue, having type string
+ ParameterId["TickMarkSpacingDataValue"] = "tickMarkSpacingDataValue";
+ // DPI_ExtractActionLocalized, having type string
+ ParameterId["ExtractActionLocalized"] = "extractActionLocalized";
+ // DPI_ExtractSource, having type string
+ ParameterId["ExtractSource"] = "extractSource";
+ // DPI_FileContents, having type string
+ ParameterId["FileContents"] = "fileContents";
+ // DPI_SaveImagePath, having type string
+ ParameterId["SaveImagePath"] = "saveImagePath";
+ // DPI_WidgetUID, having type string
+ ParameterId["WidgetUID"] = "widgetUniqueId";
+ // DPI_DatePropertiesDisplayText, having type string
+ ParameterId["DatePropertiesDisplayText"] = "datePropertiesDisplayText";
+ // DPI_DatePropertiesHelperText, having type string
+ ParameterId["DatePropertiesHelperText"] = "datePropertiesHelperText";
+ // DPI_EventName, having type string
+ ParameterId["EventName"] = "eventName";
+ // DPI_ExceptionType, having type string
+ ParameterId["ExceptionType"] = "exceptionType";
+ // DPI_SearchPlaceholder, having type string
+ ParameterId["SearchPlaceholder"] = "searchPlaceholder";
+ // DPI_TargetVersion, having type string
+ ParameterId["TargetVersion"] = "targetVersion";
+ // DPI_DataValueDisplayString, having type string
+ ParameterId["DataValueDisplayString"] = "dataValueDisplayString";
+ // DPI_DomainString, having type string
+ ParameterId["DomainString"] = "domainString";
+ // DPI_RawDataValueString, having type string
+ ParameterId["RawDataValueString"] = "rawDataValueString";
+ // DPI_RichTextDialogTitle, having type string
+ ParameterId["RichTextDialogTitle"] = "richTextDialogTitle";
+ // DPI_RichTextContent, having type string
+ ParameterId["RichTextContent"] = "richTextContent";
+ // DPI_MarkSizeAsString, having type string
+ ParameterId["MarkSizeAsString"] = "markSizeAsString";
+ // DPI_UnitsLabel, having type string
+ ParameterId["UnitsLabel"] = "unitsLabel";
+ // DPI_EmailAddress, having type string
+ ParameterId["EmailAddress"] = "emailAddress";
+ // DPI_FirstName, having type string
+ ParameterId["FirstName"] = "firstName";
+ // DPI_LastName, having type string
+ ParameterId["LastName"] = "lastName";
+ // DPI_SummaryCardAvg, having type string
+ ParameterId["SummaryCardAvg"] = "summaryCardAvg";
+ // DPI_SummaryCardCaption, having type string
+ ParameterId["SummaryCardCaption"] = "summaryCardCaption";
+ // DPI_SummaryCardCount, having type string
+ ParameterId["SummaryCardCount"] = "summaryCardCount";
+ // DPI_SummaryCardKurtosis, having type string
+ ParameterId["SummaryCardKurtosis"] = "summaryCardKurtosis";
+ // DPI_SummaryCardMax, having type string
+ ParameterId["SummaryCardMax"] = "summaryCardMax";
+ // DPI_SummaryCardMedian, having type string
+ ParameterId["SummaryCardMedian"] = "summaryCardMedian";
+ // DPI_SummaryCardMin, having type string
+ ParameterId["SummaryCardMin"] = "summaryCardMin";
+ // DPI_SummaryCardQuart1, having type string
+ ParameterId["SummaryCardQuart1"] = "summaryCardQuart1";
+ // DPI_SummaryCardQuart3, having type string
+ ParameterId["SummaryCardQuart3"] = "summaryCardQuart3";
+ // DPI_SummaryCardSkewness, having type string
+ ParameterId["SummaryCardSkewness"] = "summaryCardSkewness";
+ // DPI_SummaryCardStdev, having type string
+ ParameterId["SummaryCardStdev"] = "summaryCardStdev";
+ // DPI_SummaryCardSum, having type string
+ ParameterId["SummaryCardSum"] = "summaryCardSum";
+ // DPI_ValueClassAttr, having type string
+ ParameterId["ValueClassAttr"] = "valueClassAttr";
+ // DPI_TrendLineDialogTitle, having type string
+ ParameterId["TrendLineDialogTitle"] = "trendLineDialogTitle";
+ // DPI_LinearFitTypeLabel, having type string
+ ParameterId["LinearFitTypeLabel"] = "linearFitTypeLabel";
+ // DPI_LogFitTypeLabel, having type string
+ ParameterId["LogFitTypeLabel"] = "logFitTypeLabel";
+ // DPI_ExpFitTypeLabel, having type string
+ ParameterId["ExpFitTypeLabel"] = "expFitTypeLabel";
+ // DPI_PowerFitTypeLabel, having type string
+ ParameterId["PowerFitTypeLabel"] = "powerFitTypeLabel";
+ // DPI_PolynomialFitTypeLabel, having type string
+ ParameterId["PolynomialFitTypeLabel"] = "polynomialFitTypeLabel";
+ // DPI_ExcludeColorLabel, having type string
+ ParameterId["ExcludeColorLabel"] = "excludeColorLabel";
+ // DPI_EnableConfidenceBandsLabel, having type string
+ ParameterId["EnableConfidenceBandsLabel"] = "enableConfidenceBandsLabel";
+ // DPI_ForceInterceptZeroLabel, having type string
+ ParameterId["ForceInterceptZeroLabel"] = "forceInterceptZero label";
+ // DPI_EnableInstantAnalyticsLabel, having type string
+ ParameterId["EnableInstantAnalyticsLabel"] = "enableInstantAnalyticsLabel";
+ // DPI_EnableTooltipsLabel, having type string
+ ParameterId["EnableTooltipsLabel"] = "enableTooltipLabel";
+ // DPI_AuthenticationSummary, having type string
+ ParameterId["AuthenticationSummary"] = "authenticationSummary";
+ // DPI_BtnCancelText, having type string
+ ParameterId["BtnCancelText"] = "btnCancelText";
+ // DPI_BtnOkText, having type string
+ ParameterId["BtnOkText"] = "btnOkText";
+ // DPI_ButtonText, having type string
+ ParameterId["ButtonText"] = "buttonText";
+ // DPI_CalculationCaption, having type string
+ ParameterId["CalculationCaption"] = "calculationCaption";
+ // DPI_CalculationDependencies, having type string
+ ParameterId["CalculationDependencies"] = "calculationDependencies";
+ // DPI_CalculationFormula, having type string
+ ParameterId["CalculationFormula"] = "calculationFormula";
+ // DPI_CheckPublishMessage, having type string
+ ParameterId["CheckPublishMessage"] = "checkPublishSummary";
+ // DPI_ClusterModelText, having type string
+ ParameterId["ClusterModelText"] = "clusterModelText";
+ // DPI_ClusterSummaryScaledText, having type string
+ ParameterId["ClusterSummaryScaledText"] = "clusterSummaryScaledText";
+ // DPI_ClusterSummaryText, having type string
+ ParameterId["ClusterSummaryText"] = "clusterSummaryText";
+ // DPI_ColumnCaption, having type string
+ ParameterId["ColumnCaption"] = "columnCaption";
+ // DPI_DatasourceCaption, having type string
+ ParameterId["DatasourceCaption"] = "datasourceCaption";
+ // DPI_DefaultCaption, having type string
+ ParameterId["DefaultCaption"] = "defaultCaption";
+ // DPI_DisplayString, having type string
+ ParameterId["DisplayString"] = "displayText";
+ // DPI_DragDescription, having type string
+ ParameterId["DragDescription"] = "dragDescription";
+ // DPI_ExceptionMessage, having type string
+ ParameterId["ExceptionMessage"] = "exceptionMessage";
+ // DPI_Explanation, having type string
+ ParameterId["Explanation"] = "explanation";
+ // DPI_FieldCaption, having type string
+ ParameterId["FieldCaption"] = "fieldCaption";
+ // DPI_FieldSummary, having type string
+ ParameterId["FieldSummary"] = "fieldSummary";
+ // DPI_FieldSummaryLabel, having type string
+ ParameterId["FieldSummaryLabel"] = "fieldSummaryLabel";
+ // DPI_FilterDescription, having type string
+ ParameterId["FilterDescription"] = "filterDescription";
+ // DPI_FilterName, having type string
+ ParameterId["FilterName"] = "filterName";
+ // DPI_ForecastModelText, having type string
+ ParameterId["ForecastModelText"] = "forecastModelText";
+ // DPI_ForecastSummaryPctText, having type string
+ ParameterId["ForecastSummaryPctText"] = "forecastSummaryPctText";
+ // DPI_ForecastSummaryText, having type string
+ ParameterId["ForecastSummaryText"] = "forecastSummaryText";
+ // DPI_HasActiveExtractText, having type string
+ ParameterId["HasActiveExtractText"] = "hasActiveExtractText";
+ // DPI_HtmlColor, having type string
+ ParameterId["HtmlColor"] = "htmlColor";
+ // DPI_IncludeLocalFilesCheckedWarning, having type string
+ ParameterId["IncludeLocalFilesCheckedWarning"] = "includeLocalFilesCheckedWarning";
+ // DPI_IncludeLocalFilesWarning, having type string
+ ParameterId["IncludeLocalFilesWarning"] = "includeLocalFilesWarning";
+ // DPI_InvalidFieldCaption, having type string
+ ParameterId["InvalidFieldCaption"] = "invalidFieldCaption";
+ // DPI_LimitSummary, having type string
+ ParameterId["LimitSummary"] = "limitSummary";
+ // DPI_LoadedExistingObjectWarning, having type string
+ ParameterId["LoadedExistingObjectWarning"] = "loadedExistingObjectWarning";
+ // DPI_ManageDatasourcesSummary, having type string
+ ParameterId["ManageDatasourcesSummary"] = "manageDatasourcesSummary";
+ // DPI_ModalDialog, having type string
+ ParameterId["ModalDialog"] = "modalDialog";
+ // DPI_NewDatasourceCaption, having type string
+ ParameterId["NewDatasourceCaption"] = "newDatasourceCaption";
+ // DPI_PermissionsButtonLabel, having type string
+ ParameterId["PermissionsButtonLabel"] = "permissionsButtonLabel";
+ // DPI_PermissionsEditorRoleId, having type string
+ ParameterId["PermissionsEditorRoleId"] = "permissionsEditorRoleId";
+ // DPI_PermissionsLabel, having type string
+ ParameterId["PermissionsLabel"] = "permissionsLabel";
+ // DPI_PerspectiveCaption, having type string
+ ParameterId["PerspectiveCaption"] = "perspectiveCaption";
+ // DPI_PublishButtonLabel, having type string
+ ParameterId["PublishButtonLabel"] = "publishButtonLabel";
+ // DPI_PublishChoiceLabel, having type string
+ ParameterId["PublishChoiceLabel"] = "publishChoiceLabel";
+ // DPI_PublishObjectViewsSummary, having type string
+ ParameterId["PublishObjectViewsSummary"] = "publishObjectViewsSummary";
+ // DPI_QualifiedFieldCaption, having type string
+ ParameterId["QualifiedFieldCaption"] = "qualifiedFieldCaption";
+ // DPI_RelationshipTooltipText, having type string
+ ParameterId["RelationshipTooltipText"] = "relationshipTooltipText";
+ // DPI_ResetObjectAttributesWarning, having type string
+ ParameterId["ResetObjectAttributesWarning"] = "resetObjectAttributesWarning";
+ // DPI_RowCountCaption, having type string
+ ParameterId["RowCountCaption"] = "rowCountCaption";
+ // DPI_ServerCaption, having type string
+ ParameterId["ServerCaption"] = "serverCaption";
+ // DPI_SizeModeName, having type string
+ ParameterId["SizeModeName"] = "sizeModeName";
+ // DPI_SummaryText, having type string
+ ParameterId["SummaryText"] = "summaryText";
+ // DPI_SyncClientUseExtractLabel, having type string
+ ParameterId["SyncClientUseExtractLabel"] = "syncClientUseExtractLabel";
+ // DPI_Text, having type string
+ ParameterId["Text"] = "text";
+ // DPI_TextDropdownControlLabel, having type string
+ ParameterId["TextDropdownControlLabel"] = "controlLabel";
+ // DPI_ThumbnailUserName, having type string
+ ParameterId["ThumbnailUserName"] = "thumbnailUserName";
+ // DPI_TitleString, having type string
+ ParameterId["TitleString"] = "titleString";
+ // DPI_TooltipText, having type string
+ ParameterId["TooltipText"] = "tooltipText";
+ // DPI_UpdatedCalcCaption, having type string
+ ParameterId["UpdatedCalcCaption"] = "updatedCalculationCaption";
+ // DPI_UpdatedCalcFormula, having type string
+ ParameterId["UpdatedCalcFormula"] = "updatedCalculationFormula";
+ // DPI_UserCaption, having type string
+ ParameterId["UserCaption"] = "userCaption";
+ // DPI_WarningTooltipText, having type string
+ ParameterId["WarningTooltipText"] = "warningTooltipText";
+ // DPI_DatasourceFile, having type string
+ ParameterId["DatasourceFile"] = "datasourceFile";
+ // DPI_File, having type string
+ ParameterId["File"] = "file";
+ // DPI_FileNameBase, having type string
+ ParameterId["FileNameBase"] = "filenameBase";
+ // DPI_NewFile, having type string
+ ParameterId["NewFile"] = "newFile";
+ // DPI_OriginalFile, having type string
+ ParameterId["OriginalFile"] = "originalFile";
+ // DPI_OutputFile, having type string
+ ParameterId["OutputFile"] = "outputFile";
+ // DPI_SampleFileName, having type string
+ ParameterId["SampleFileName"] = "sampleFilename";
+ // DPI_WorkbookFile, having type string
+ ParameterId["WorkbookFile"] = "workbookFile";
+ // DPI_ImageKey, having type string
+ ParameterId["ImageKey"] = "imageKey";
+ // DPI_OverlayImageKey, having type string
+ ParameterId["OverlayImageKey"] = "overlayImageKey";
+ // DPI_TempFileKey, having type string
+ ParameterId["TempFileKey"] = "tempfileKey";
+ // DPI_CapturedSheet, having type string
+ ParameterId["CapturedSheet"] = "capturedSheet";
+ // DPI_CurrentSheet, having type string
+ ParameterId["CurrentSheet"] = "currentSheet";
+ // DPI_Dashboard, having type string
+ ParameterId["Dashboard"] = "dashboard";
+ // DPI_EnsureSheet, having type string
+ ParameterId["EnsureSheet"] = "ensureSheetName";
+ // DPI_NewSheet, having type string
+ ParameterId["NewSheet"] = "newSheet";
+ // DPI_Sheet, having type string
+ ParameterId["Sheet"] = "sheet";
+ // DPI_SheetName, having type string
+ ParameterId["SheetName"] = "sheetName";
+ // DPI_SourceDashboard, having type string
+ ParameterId["SourceDashboard"] = "sourceDashboard";
+ // DPI_SourceSheet, having type string
+ ParameterId["SourceSheet"] = "sourceSheet";
+ // DPI_TargetSheet, having type string
+ ParameterId["TargetSheet"] = "targetSheet";
+ // DPI_WorkbookName, having type string
+ ParameterId["WorkbookName"] = "workbookName";
+ // DPI_Worksheet, having type string
+ ParameterId["Worksheet"] = "worksheet";
+ // DPI_BaseViewThumbLink, having type string
+ ParameterId["BaseViewThumbLink"] = "baseViewThumbLink";
+ // DPI_BlogLink, having type string
+ ParameterId["BlogLink"] = "blogLink";
+ // DPI_CacheUrl, having type string
+ ParameterId["CacheUrl"] = "cacheUrl";
+ // DPI_DownloadLink, having type string
+ ParameterId["DownloadLink"] = "downloadLink";
+ // DPI_RepositoryUrl, having type string
+ ParameterId["RepositoryUrl"] = "repositoryUrl";
+ // DPI_ShareLink, having type string
+ ParameterId["ShareLink"] = "shareLink";
+ // DPI_URL, having type string
+ ParameterId["URL"] = "url";
+ // DPI_ClusterModelHtml, having type string
+ ParameterId["ClusterModelHtml"] = "clusterModelHtml";
+ // DPI_ClusterSummaryHtml, having type string
+ ParameterId["ClusterSummaryHtml"] = "clusterSummaryHtml";
+ // DPI_ClusterSummaryScaledHtml, having type string
+ ParameterId["ClusterSummaryScaledHtml"] = "clusterSummaryScaledHtml";
+ // DPI_FieldDescription, having type string
+ ParameterId["FieldDescription"] = "fieldDescription";
+ // DPI_ForecastModelHtml, having type string
+ ParameterId["ForecastModelHtml"] = "forecastModelHtml";
+ // DPI_ForecastSummaryHtml, having type string
+ ParameterId["ForecastSummaryHtml"] = "forecastSummaryHtml";
+ // DPI_ForecastSummaryPctHtml, having type string
+ ParameterId["ForecastSummaryPctHtml"] = "forecastSummaryPctHtml";
+ // DPI_Html, having type string
+ ParameterId["Html"] = "html";
+ // DPI_HtmlSelection, having type string
+ ParameterId["HtmlSelection"] = "htmlSelection";
+ // DPI_HtmlTooltip, having type string
+ ParameterId["HtmlTooltip"] = "htmlTooltip";
+ // DPI_HtmlTooltipModified, having type string
+ ParameterId["HtmlTooltipModified"] = "htmlTooltipModified";
+ // DPI_TitleHtml, having type string
+ ParameterId["TitleHtml"] = "titleHtml";
+ // DPI_CacheUrlInfoJson, having type string
+ ParameterId["CacheUrlInfoJson"] = "cacheUrlInfoJson";
+ // DPI_FilterSearchJson, having type string
+ ParameterId["FilterSearchJson"] = "filterSearchJson";
+ // DPI_FilterSearchWithIndexJson, having type string
+ ParameterId["FilterSearchWithIndexJson"] = "filterSearchWithIndexJson";
+ // DPI_FilterShowChildrenJson, having type string
+ ParameterId["FilterShowChildrenJson"] = "filterShowChildrenJson";
+ // DPI_FiltersJson, having type string
+ ParameterId["FiltersJson"] = "filtersJson";
+ // DPI_FrameJson, having type string
+ ParameterId["FrameJson"] = "frameJson";
+ // DPI_GeometryJson, having type string
+ ParameterId["GeometryJson"] = "geometryJson";
+ // DPI_GetFilterItemsJson, having type string
+ ParameterId["GetFilterItemsJson"] = "getFilterItemsJson";
+ // DPI_KeepOnlyResponseJson, having type string
+ ParameterId["KeepOnlyResponseJson"] = "keepOnlyResponseJson";
+ // DPI_MenuCommandsJson, having type string
+ ParameterId["MenuCommandsJson"] = "menuCommandsJson";
+ // DPI_ModifiedSheetsJson, having type string
+ ParameterId["ModifiedSheetsJson"] = "modifiedSheetsJson";
+ // DPI_ParameterCtrlJson, having type string
+ ParameterId["ParameterCtrlJson"] = "parameterCtrlJson";
+ // DPI_ViewJson, having type string
+ ParameterId["ViewJson"] = "viewJson";
+ // DPI_CustomizedViewXML, having type string
+ ParameterId["CustomizedViewXML"] = "customizedViewXml";
+ // DPI_DatasourceDeltaXML, having type string
+ ParameterId["DatasourceDeltaXML"] = "datasourceDeltaXml";
+ // DPI_DatasourceXML, having type string
+ ParameterId["DatasourceXML"] = "datasourceXml";
+ // DPI_KeychainXML, having type string
+ ParameterId["KeychainXML"] = "keychainXml";
+ // DPI_PermissionsModelXML, having type string
+ ParameterId["PermissionsModelXML"] = "permissionsModelXml";
+ // DPI_SharedViewsXML, having type string
+ ParameterId["SharedViewsXML"] = "sharedViewsXml";
+ // DPI_TargetURL, having type string
+ ParameterId["TargetURL"] = "targetUrl";
+ // DPI_Anchor, having type string
+ ParameterId["Anchor"] = "anchor";
+ // DPI_CenterValue, having type string
+ ParameterId["CenterValue"] = "centerValue";
+ // DPI_ComputedBinSize, having type string
+ ParameterId["ComputedBinSize"] = "computedBinSize";
+ // DPI_ConstantValue, having type string
+ ParameterId["ConstantValue"] = "constantValue";
+ // DPI_PairedConstantValue, having type string
+ ParameterId["PairedConstantValue"] = "pairedConstantValue";
+ // DPI_CountDistinct, having type string
+ ParameterId["CountDistinct"] = "countDistinct";
+ // DPI_DataMax, having type string
+ ParameterId["DataMax"] = "dataMax";
+ // DPI_DataMin, having type string
+ ParameterId["DataMin"] = "dataMin";
+ // DPI_DataValueString, having type string
+ ParameterId["DataValueString"] = "dataValueStr";
+ // DPI_EndValue, having type string
+ ParameterId["EndValue"] = "endValue";
+ // DPI_RangeMax, having type string
+ ParameterId["RangeMax"] = "rangeMax";
+ // DPI_RangeMin, having type string
+ ParameterId["RangeMin"] = "rangeMin";
+ // DPI_RangeStepSize, having type string
+ ParameterId["RangeStepSize"] = "rangeStepSize";
+ // DPI_StartValue, having type string
+ ParameterId["StartValue"] = "startValue";
+ // DPI_TargetValue, having type string
+ ParameterId["TargetValue"] = "targetValue";
+ // DPI_ValueInc, having type string
+ ParameterId["ValueInc"] = "valueInc";
+ // DPI_ValueMax, having type string
+ ParameterId["ValueMax"] = "valueMax";
+ // DPI_ValueMin, having type string
+ ParameterId["ValueMin"] = "valueMin";
+ // DPI_QuantilesValue, having type string
+ ParameterId["QuantilesValue"] = "quantilesValue";
+ // DPI_UserInputBinSize, having type string
+ ParameterId["UserInputBinSize"] = "userBinSize";
+ // DPI_AddedDataSources, having type string[]
+ ParameterId["AddedDataSources"] = "addedDataSourceNames";
+ // DPI_AddressingCaptions, having type string[]
+ ParameterId["AddressingCaptions"] = "addressingCaptions";
+ // DPI_AggregationCaptions, having type string[]
+ ParameterId["AggregationCaptions"] = "aggregationCaptions";
+ // DPI_AtTheLevelCaptions, having type string[]
+ ParameterId["AtTheLevelCaptions"] = "atTheLevelCaptions";
+ // DPI_AuthenticationSettingLabels, having type string[]
+ ParameterId["AuthenticationSettingLabels"] = "authenticationSettingLabels";
+ // DPI_AutosaveFileIdsVector, having type string[]
+ ParameterId["AutosaveFileIdsVector"] = "autosaveFileIdsVector";
+ // DPI_ChangedTuples, having type string[]
+ ParameterId["ChangedTuples"] = "changedTuples";
+ // DPI_CharsetsAvailable, having type string[]
+ ParameterId["CharsetsAvailable"] = "charsetsAvailable";
+ // DPI_CharsetDisplayNames, having type string[]
+ ParameterId["CharsetDisplayNames"] = "charsetDisplayNames";
+ // DPI_ColorFactors, having type string[]
+ ParameterId["ColorFactors"] = "colorFactors";
+ // DPI_ColumnFullNames, having type string[]
+ ParameterId["ColumnFullNames"] = "columnFullNames";
+ // DPI_ConnectionNames, having type string[]
+ ParameterId["ConnectionNames"] = "connectionNames";
+ // DPI_ConnectionCaptions, having type string[]
+ ParameterId["ConnectionCaptions"] = "connectionCaptions";
+ // DPI_ConnectionBigQueryLegacySQLCheckBox, having type string[]
+ ParameterId["ConnectionBigQueryLegacySQLCheckBox"] = "connectionBigqueryLegacySqlCheckbox";
+ // DPI_CustomFieldOrder, having type string[]
+ ParameterId["CustomFieldOrder"] = "customFieldOrder";
+ // DPI_DataSourceClasses, having type string[]
+ ParameterId["DataSourceClasses"] = "dataSourceClasses";
+ // DPI_DataSourceNames, having type string[]
+ ParameterId["DataSourceNames"] = "dataSourceNames";
+ // DPI_DataSourceNames2, having type string[]
+ ParameterId["DataSourceNames2"] = "dataSourceNames2";
+ // DPI_DataSourcesWithEmptyRelation, having type string[]
+ ParameterId["DataSourcesWithEmptyRelation"] = "dataSourcesWithEmptyRelation";
+ // DPI_DateFormats, having type string[]
+ ParameterId["DateFormats"] = "dateFormats";
+ // DPI_DayNames, having type string[]
+ ParameterId["DayNames"] = "dayNames";
+ // DPI_DrillPathVector, having type string[]
+ ParameterId["DrillPathVector"] = "drillpathVector";
+ // DPI_ErrorDetails, having type string[]
+ ParameterId["ErrorDetails"] = "errorDetails";
+ // DPI_ExceptionMessageParams, having type string[]
+ ParameterId["ExceptionMessageParams"] = "exceptionMessageParams";
+ // DPI_ExcludedSheets, having type string[]
+ ParameterId["ExcludedSheets"] = "excludeSheets";
+ // DPI_FieldDisplayNames, having type string[]
+ ParameterId["FieldDisplayNames"] = "fieldDisplayNames";
+ // DPI_FieldFolderVector, having type string[]
+ ParameterId["FieldFolderVector"] = "fieldFolderVector";
+ // DPI_FileIds, having type string[]
+ ParameterId["FileIds"] = "fileIds";
+ // DPI_FilePaths, having type string[]
+ ParameterId["FilePaths"] = "filePaths";
+ // DPI_FileNames, having type string[]
+ ParameterId["FileNames"] = "fileNames";
+ // DPI_FilterAdd, having type string[]
+ ParameterId["FilterAdd"] = "filterAdd";
+ // DPI_FilterAliases, having type string[]
+ ParameterId["FilterAliases"] = "filterValues";
+ // DPI_FilterRemove, having type string[]
+ ParameterId["FilterRemove"] = "filterRemove";
+ // DPI_FixedCaptions, having type string[]
+ ParameterId["FixedCaptions"] = "fixedCaptions";
+ // DPI_FontFamilies, having type string[]
+ ParameterId["FontFamilies"] = "fontFamilies";
+ // DPI_FormatStrings, having type string[]
+ ParameterId["FormatStrings"] = "formatStrings";
+ // DPI_FormattedValues, having type string[]
+ ParameterId["FormattedValues"] = "formattedValues";
+ // DPI_FoundTuples, having type string[]
+ ParameterId["FoundTuples"] = "foundTuples";
+ // DPI_FullSchedulesLabels, having type string[]
+ ParameterId["FullSchedulesLabels"] = "fullSchedulesLabels";
+ // DPI_ImageResourceList, having type string[]
+ ParameterId["ImageResourceList"] = "imageResources";
+ // DPI_IncludeList, having type string[]
+ ParameterId["IncludeList"] = "includeList";
+ // DPI_IncrSchedulesLabels, having type string[]
+ ParameterId["IncrSchedulesLabels"] = "incrSchedulesLabels";
+ // DPI_InvalidDates, having type string[]
+ ParameterId["InvalidDates"] = "invalidDates";
+ // DPI_InvalidValues, having type string[]
+ ParameterId["InvalidValues"] = "invalidValues";
+ // DPI_ItemValues, having type string[]
+ ParameterId["ItemValues"] = "itemValues";
+ // DPI_JoinEditableProps, having type string[]
+ ParameterId["JoinEditableProps"] = "joinEditableProps";
+ // DPI_JoinFieldCaptions, having type string[]
+ ParameterId["JoinFieldCaptions"] = "joinFieldCaptions";
+ // DPI_LocaleOptions, having type string[]
+ ParameterId["LocaleOptions"] = "localeOptions";
+ // DPI_LocaleDisplayNames, having type string[]
+ ParameterId["LocaleDisplayNames"] = "localeDisplayNames";
+ // DPI_MapBoxStyleMaps, having type string[]
+ ParameterId["MapBoxStyleMaps"] = "mapboxStyleMaps";
+ // DPI_MapConnectionErrorDetails, having type string[]
+ ParameterId["MapConnectionErrorDetails"] = "mapConnectionErrorDetails";
+ // DPI_SheetNames, having type string[]
+ ParameterId["SheetNames"] = "sheetNames";
+ // DPI_MapSourceNames, having type string[]
+ ParameterId["MapSourceNames"] = "mapSourceNames";
+ // DPI_MarkGeometries, having type string[]
+ ParameterId["MarkGeometries"] = "markGeometries";
+ // DPI_MenuItems, having type string[]
+ ParameterId["MenuItems"] = "menuItems";
+ // DPI_Modes, having type string[]
+ ParameterId["Modes"] = "modes";
+ // DPI_MonthNames, having type string[]
+ ParameterId["MonthNames"] = "monthNames";
+ // DPI_NumberFormats, having type string[]
+ ParameterId["NumberFormats"] = "numberFormats";
+ // DPI_ObjectTextIDs, having type string[]
+ ParameterId["ObjectTextIDs"] = "objectTextIds";
+ // DPI_OldExtracts, having type string[]
+ ParameterId["OldExtracts"] = "oldExtracts";
+ // DPI_OrderingTypeCaptions, having type string[]
+ ParameterId["OrderingTypeCaptions"] = "orderingTypeCaptions";
+ // DPI_PageNames, having type string[]
+ ParameterId["PageNames"] = "pageNames";
+ // DPI_PaneDescriptorKeys, having type string[]
+ ParameterId["PaneDescriptorKeys"] = "paneDescriptorKeys";
+ // DPI_ParamCaptions, having type string[]
+ ParameterId["ParamCaptions"] = "paramCaptions";
+ // DPI_PrecannedDataValues, having type string[]
+ ParameterId["PrecannedDataValues"] = "precannedDataValues";
+ // DPI_PublishChoiceLabels, having type string[]
+ ParameterId["PublishChoiceLabels"] = "publishChoiceLabels";
+ // DPI_RankTypeCaptions, having type string[]
+ ParameterId["RankTypeCaptions"] = "rankTypeCaptions";
+ // DPI_RecentTags, having type string[]
+ ParameterId["RecentTags"] = "recentTags";
+ // DPI_RelativeCaptions, having type string[]
+ ParameterId["RelativeCaptions"] = "relativeCaptions";
+ // DPI_RemovedDataSources, having type string[]
+ ParameterId["RemovedDataSources"] = "removedDataSourceNames";
+ // DPI_RepresentativeTuple, having type string[]
+ ParameterId["RepresentativeTuple"] = "representativeTuple";
+ // DPI_RestartEveryCaptions, having type string[]
+ ParameterId["RestartEveryCaptions"] = "restartEveryCaptions";
+ // DPI_SchemaMemberGlobalNames, having type string[]
+ ParameterId["SchemaMemberGlobalNames"] = "schemaMemberGlobalNames";
+ // DPI_SelectValuesList, having type string[]
+ ParameterId["SelectValuesList"] = "selectValues";
+ // DPI_SelectionValueList, having type string[]
+ ParameterId["SelectionValueList"] = "selectionValueList";
+ // DPI_SortAggCaptions, having type string[]
+ ParameterId["SortAggCaptions"] = "sortAggCaptions";
+ // DPI_SortDirectionCaptions, having type string[]
+ ParameterId["SortDirectionCaptions"] = "sortDirectionCaptions";
+ // DPI_SortFieldCaptions, having type string[]
+ ParameterId["SortFieldCaptions"] = "sortFieldCaptions";
+ // DPI_SortFieldNameVector, having type string[]
+ ParameterId["SortFieldNameVector"] = "sortFieldnameVector";
+ // DPI_SupportedJoinOperators, having type string[]
+ ParameterId["SupportedJoinOperators"] = "supportedJoinOperators";
+ // DPI_TableCalcTypeCaptions, having type string[]
+ ParameterId["TableCalcTypeCaptions"] = "tableCalcTypeCaptions";
+ // DPI_Tags, having type string[]
+ ParameterId["Tags"] = "tags";
+ // DPI_TermVec, having type string[]
+ ParameterId["TermVec"] = "termVector";
+ // DPI_UIAutomationList, having type string[]
+ ParameterId["UIAutomationList"] = "uiAutomationList";
+ // DPI_ReferenceLineValidCustomLabelTags, having type string[]
+ ParameterId["ReferenceLineValidCustomLabelTags"] = "validReferenceLineCustomLabelTags";
+ // DPI_LocalizedKeywords, having type string[]
+ ParameterId["LocalizedKeywords"] = "localizedKeywords";
+ // DPI_AvailableCalendars, having type string[]
+ ParameterId["AvailableCalendars"] = "availableCalendars";
+ // DPI_SheetsToBeDeletedOrHidden, having type string[]
+ ParameterId["SheetsToBeDeletedOrHidden"] = "sheetsToBeDeletedOrHidden";
+ // DPI_AddSheets, having type string[]
+ ParameterId["AddSheets"] = "addSheets";
+ // DPI_NamesOfSubsheets, having type string[]
+ ParameterId["NamesOfSubsheets"] = "namesOfSubsheets";
+ // DPI_RemoveSheets, having type string[]
+ ParameterId["RemoveSheets"] = "removeSheets";
+ // DPI_ScrollOffsetSheets, having type string[]
+ ParameterId["ScrollOffsetSheets"] = "scrollOffsetSheets";
+ // DPI_Sheets, having type string[]
+ ParameterId["Sheets"] = "sheets";
+ // DPI_SourceWorksheets, having type string[]
+ ParameterId["SourceWorksheets"] = "sourceWorksheets";
+ // DPI_TargetExcludes, having type string[]
+ ParameterId["TargetExcludes"] = "targetExclude";
+ // DPI_TargetWorksheets, having type string[]
+ ParameterId["TargetWorksheets"] = "targetWorksheets";
+ // DPI_TileURLs, having type string[]
+ ParameterId["TileURLs"] = "tileUrls";
+ // DPI_Details, having type string[]
+ ParameterId["Details"] = "details";
+ // DPI_FieldCaptions, having type string[]
+ ParameterId["FieldCaptions"] = "fieldCaptions";
+ // DPI_HighlightCaptions, having type string[]
+ ParameterId["HighlightCaptions"] = "highlightCaptions";
+ // DPI_LevelCaptions, having type string[]
+ ParameterId["LevelCaptions"] = "levelCaptions";
+ // DPI_LevelLeafValues, having type string[]
+ ParameterId["LevelLeafValues"] = "levelLeafValues";
+ // DPI_SubstitutionVariables, having type string[]
+ ParameterId["SubstitutionVariables"] = "substitutionVariables";
+ // DPI_SubstitutionVariableValues, having type string[]
+ ParameterId["SubstitutionVariableValues"] = "substitutionVariableValues";
+ // DPI_HtmlTooltips, having type string[]
+ ParameterId["HtmlTooltips"] = "htmlTooltips";
+ // DPI_InvalidFields, having type string[]
+ ParameterId["InvalidFields"] = "invalidFields";
+ // DPI_NamesOfColumns, having type string[]
+ ParameterId["NamesOfColumns"] = "namesOfColumns";
+ // DPI_NamesOfFields, having type string[]
+ ParameterId["NamesOfFields"] = "namesOfFields";
+ // DPI_ReferencedDatasources, having type string[]
+ ParameterId["ReferencedDatasources"] = "referencedDataSourceList";
+ // DPI_CSSAttrs, having type Dictionary(of string)
+ ParameterId["CSSAttrs"] = "cssAttrs";
+ // DPI_DataSourceMap, having type Dictionary(of string)
+ ParameterId["DataSourceMap"] = "dataSourceMap";
+ // DPI_EventParameters, having type Dictionary(of string)
+ ParameterId["EventParameters"] = "eventParameters";
+ // DPI_ExceptionAttrs, having type Dictionary(of string)
+ ParameterId["ExceptionAttrs"] = "exceptionAttrs";
+ // DPI_InvalidSheetMessage, having type Dictionary(of string)
+ ParameterId["InvalidSheetMessage"] = "invalidSheetMessages";
+ // DPI_MapBoxDefaultStyle, having type Dictionary(of string)
+ ParameterId["MapBoxDefaultStyle"] = "mapboxDefaultStyles";
+ // DPI_PaneFormattings, having type Dictionary(of string)
+ ParameterId["PaneFormattings"] = "paneFormattings";
+ // DPI_SourceNameWithCaption, having type Dictionary(of string)
+ ParameterId["SourceNameWithCaption"] = "sourceNameWithCaption";
+ // DPI_ConnectionColorMap, having type Dictionary(of string)
+ ParameterId["ConnectionColorMap"] = "connectionColorMap";
+ // DPI_TargetNameWithCaption, having type Dictionary(of string)
+ ParameterId["TargetNameWithCaption"] = "targetNameWithCaption";
+ // DPI_ViewIds, having type Dictionary(of string)
+ ParameterId["ViewIds"] = "viewIds";
+ // DPI_AddInSettings, having type Dictionary(of string)
+ ParameterId["AddInSettings"] = "addInSettings";
+ // DPI_DatasourceIcons, having type Dictionary(of string)
+ ParameterId["DatasourceIcons"] = "datasourceIcons";
+ // DPI_FormattedText, having type string
+ ParameterId["FormattedText"] = "formattedText";
+ // DPI_IconTooltip, having type string
+ ParameterId["IconTooltip"] = "iconTooltip";
+ // DPI_Title, having type string
+ ParameterId["Title"] = "title";
+ // DPI_Tooltip, having type string
+ ParameterId["Tooltip"] = "tooltip";
+ // DPI_ZoneText, having type string
+ ParameterId["ZoneText"] = "zoneText";
+ // DPI_AlignmentFlags, having type int
+ ParameterId["AlignmentFlags"] = "alignmentFlags";
+ // DPI_AlphaLevel, having type int
+ ParameterId["AlphaLevel"] = "alphaLevel";
+ // DPI_AnovaDF, having type int
+ ParameterId["AnovaDF"] = "anovaDf";
+ // DPI_AtTheLevelIndex, having type int
+ ParameterId["AtTheLevelIndex"] = "atTheLevelIndex";
+ // DPI_AutomaticDrillIdxInVector, having type int
+ ParameterId["AutomaticDrillIdxInVector"] = "automaticDrillIdxVector";
+ // DPI_AutoSize, having type int
+ ParameterId["AutoSize"] = "automaticSize";
+ // DPI_BaseCoord, having type int
+ ParameterId["BaseCoord"] = "baseCoord";
+ // DPI_CalcEditorCursorPosPostDrop, having type int
+ ParameterId["CalcEditorCursorPosPostDrop"] = "calcEditorCursorPosPostDrop";
+ // DPI_CalcEditorDropPos, having type int
+ ParameterId["CalcEditorDropPos"] = "calcEditorDropPos";
+ // DPI_CalcEditorTextSelectionEndPos, having type int
+ ParameterId["CalcEditorTextSelectionEndPos"] = "calcEditorTextSelectionEndPos";
+ // DPI_CalcEditorTextSelectionStartPos, having type int
+ ParameterId["CalcEditorTextSelectionStartPos"] = "calcEditorTextSelectionStartPos";
+ // DPI_CategoricalBinId, having type int
+ ParameterId["CategoricalBinId"] = "categoricalBinId";
+ // DPI_CategoricalFindControllerId, having type int
+ ParameterId["CategoricalFindControllerId"] = "categoricalFindControllerId";
+ // DPI_ClauseToModifyIndex, having type int
+ ParameterId["ClauseToModifyIndex"] = "clauseToModifyIndex";
+ // DPI_ClientRenderPixelLimit, having type int
+ ParameterId["ClientRenderPixelLimit"] = "clientRenderPixelLimit";
+ // DPI_ColCount, having type int
+ ParameterId["ColCount"] = "colCount";
+ // DPI_ColWidth, having type int
+ ParameterId["ColWidth"] = "colWidth";
+ // DPI_ColumnLevels, having type int
+ ParameterId["ColumnLevels"] = "columnLevels";
+ // DPI_ColumnNumber, having type int
+ ParameterId["ColumnNumber"] = "columnNumber";
+ // DPI_ColumnWidth, having type int
+ ParameterId["ColumnWidth"] = "columnWidth";
+ // DPI_ContentHeight, having type int
+ ParameterId["ContentHeight"] = "contentH";
+ // DPI_ContentWidth, having type int
+ ParameterId["ContentWidth"] = "contentW";
+ // DPI_ContentX, having type int
+ ParameterId["ContentX"] = "contentX";
+ // DPI_ContentY, having type int
+ ParameterId["ContentY"] = "contentY";
+ // DPI_Coordinate, having type int
+ ParameterId["Coordinate"] = "coord";
+ // DPI_CurDateAgg, having type int
+ ParameterId["CurDateAgg"] = "curDateAgg";
+ // DPI_CurrentCustViewId, having type int
+ ParameterId["CurrentCustViewId"] = "currentCustomViewId";
+ // DPI_CustomSplitCharacterCountSeparator, having type int
+ ParameterId["CustomSplitCharacterCountSeparator"] = "customSplitCharacterCountSeparator";
+ // DPI_CustomSplitDesiredSplitCount, having type int
+ ParameterId["CustomSplitDesiredSplitCount"] = "customSplitDesiredSplitCount";
+ // DPI_DashboardGridSize, having type int
+ ParameterId["DashboardGridSize"] = "dashboardGridSize";
+ // DPI_DataIndex, having type int
+ ParameterId["DataIndex"] = "dataIndex";
+ // DPI_DecimalPlaces, having type int
+ ParameterId["DecimalPlaces"] = "decimalPlaces";
+ // DPI_DeltaTime, having type int
+ ParameterId["DeltaTime"] = "deltaTime";
+ // DPI_DestPix, having type int
+ ParameterId["DestPix"] = "destPix";
+ // DPI_DeviceIndex, having type int
+ ParameterId["DeviceIndex"] = "deviceIndex";
+ // DPI_Duration, having type int
+ ParameterId["Duration"] = "duration";
+ // DPI_EndPtX, having type int
+ ParameterId["EndPtX"] = "endX";
+ // DPI_EndPtY, having type int
+ ParameterId["EndPtY"] = "endY";
+ // DPI_ErrorLen, having type int
+ ParameterId["ErrorLen"] = "lengthOfCalcOfError";
+ // DPI_ErrorPos, having type int
+ ParameterId["ErrorPos"] = "startPositionForError";
+ // DPI_ExceptionErrorMessageId, having type int
+ ParameterId["ExceptionErrorMessageId"] = "exceptionErrorMessageId";
+ // DPI_ExtentsH, having type int
+ ParameterId["ExtentsH"] = "extentsHeight";
+ // DPI_ExtentsW, having type int
+ ParameterId["ExtentsW"] = "extentsWidth";
+ // DPI_ExtentsX, having type int
+ ParameterId["ExtentsX"] = "extentsX";
+ // DPI_ExtentsY, having type int
+ ParameterId["ExtentsY"] = "extentsY";
+ // DPI_FieldIndex, having type int
+ ParameterId["FieldIndex"] = "fieldIndex";
+ // DPI_FieldNameId, having type int
+ ParameterId["FieldNameId"] = "fieldNameId";
+ // DPI_FirstDayOfWeek, having type int
+ ParameterId["FirstDayOfWeek"] = "firstDayOfWeek";
+ // DPI_FirstValueIndex, having type int
+ ParameterId["FirstValueIndex"] = "firstValueIndex";
+ // DPI_FixedSizePresetIndex, having type int
+ ParameterId["FixedSizePresetIndex"] = "fixedSizePresetIndex";
+ // DPI_FocusItemIndex, having type int
+ ParameterId["FocusItemIndex"] = "focusItemIndex";
+ // DPI_FontSize, having type int
+ ParameterId["FontSize"] = "fontSize";
+ // DPI_ForecastIntRangeEnd, having type int
+ ParameterId["ForecastIntRangeEnd"] = "forecastIntRangeEnd";
+ // DPI_ForecastIntRangeStart, having type int
+ ParameterId["ForecastIntRangeStart"] = "forecastIntRangeStart";
+ // DPI_FunctionHelpIndex, having type int
+ ParameterId["FunctionHelpIndex"] = "functionHelpIndex";
+ // DPI_GeographicSearchMaxResults, having type int
+ ParameterId["GeographicSearchMaxResults"] = "geographicSearchMaxResults";
+ // DPI_Height, having type int
+ ParameterId["Height"] = "h";
+ // DPI_HierarchyLevel, having type int
+ ParameterId["HierarchyLevel"] = "hierarchyLevel";
+ // DPI_HierarchyLevelLoaded, having type int
+ ParameterId["HierarchyLevelLoaded"] = "hierarchyLevelLoaded";
+ // DPI_HierarchyLevelMinimum, having type int
+ ParameterId["HierarchyLevelMinimum"] = "hierarchyLevelMinimum";
+ // DPI_HierarchyLoadLimit, having type int
+ ParameterId["HierarchyLoadLimit"] = "hierarchyLoadLimit";
+ // DPI_HierarchySelectControllerId, having type int
+ ParameterId["HierarchySelectControllerId"] = "hierarchySelectControllerId";
+ // DPI_HorzTextCell, having type int
+ ParameterId["HorzTextCell"] = "horzTextCell";
+ // DPI_ImageIndex, having type int
+ ParameterId["ImageIndex"] = "imageIndex";
+ // DPI_ImageSizeLimit, having type int
+ ParameterId["ImageSizeLimit"] = "imageSizeLimit";
+ // DPI_TransparentLineMarksLimit, having type int
+ ParameterId["TransparentLineMarksLimit"] = "transparentLineMarksLimit";
+ // DPI_Indent, having type int
+ ParameterId["Indent"] = "indent";
+ // DPI_Index, having type int
+ ParameterId["Index"] = "idx";
+ // DPI_IndexFrom, having type int
+ ParameterId["IndexFrom"] = "indexFrom";
+ // DPI_IndexOffset, having type int
+ ParameterId["IndexOffset"] = "indexOffset";
+ // DPI_IndexTo, having type int
+ ParameterId["IndexTo"] = "indexTo";
+ // DPI_InlineConnectionRenameRow, having type int
+ ParameterId["InlineConnectionRenameRow"] = "inlineConnectionRenameRow";
+ // DPI_InsertPos, having type int
+ ParameterId["InsertPos"] = "insertPos";
+ // DPI_IsHasDataSupported, having type int
+ ParameterId["IsHasDataSupported"] = "isHasDataSupported";
+ // DPI_LeftMargin, having type int
+ ParameterId["LeftMargin"] = "leftMargin";
+ // DPI_LeftRightBorderWidth, having type int
+ ParameterId["LeftRightBorderWidth"] = "leftRightBorderWidth";
+ // DPI_LowerBound, having type int
+ ParameterId["LowerBound"] = "lowerBound";
+ // DPI_MapRequestPixels, having type int
+ ParameterId["MapRequestPixels"] = "mapRequestPixels";
+ // DPI_MapScaleFontSizePixels, having type int
+ ParameterId["MapScaleFontSizePixels"] = "mapScaleFontSizePixels";
+ // DPI_MapScaleReadoutNumber, having type int
+ ParameterId["MapScaleReadoutNumber"] = "mapScaleReadoutNumber";
+ // DPI_MapScaleWidth, having type int
+ ParameterId["MapScaleWidth"] = "mapScaleWidth";
+ // DPI_MapTileSize, having type int
+ ParameterId["MapTileSize"] = "mapTileSize";
+ // DPI_Margin, having type int
+ ParameterId["Margin"] = "margin";
+ // DPI_MarginBottom, having type int
+ ParameterId["MarginBottom"] = "marginBottom";
+ // DPI_MarginLeft, having type int
+ ParameterId["MarginLeft"] = "marginLeft";
+ // DPI_MarginRight, having type int
+ ParameterId["MarginRight"] = "marginRight";
+ // DPI_MarginTop, having type int
+ ParameterId["MarginTop"] = "marginTop";
+ // DPI_MaxCell, having type int
+ ParameterId["MaxCell"] = "maxCell";
+ // DPI_MaxItemSpan, having type int
+ ParameterId["MaxItemSpan"] = "maxItemSpan";
+ // DPI_MaxPolynomialDegree, having type int
+ ParameterId["MaxPolynomialDegree"] = "maxDegree";
+ // DPI_MaxPosition, having type int
+ ParameterId["MaxPosition"] = "maxPosition";
+ // DPI_MaxSize, having type int
+ ParameterId["MaxSize"] = "maxSize";
+ // DPI_MinCell, having type int
+ ParameterId["MinCell"] = "minCell";
+ // DPI_MinPolynomialDegree, having type int
+ ParameterId["MinPolynomialDegree"] = "minDegree";
+ // DPI_MinPosition, having type int
+ ParameterId["MinPosition"] = "minPosition";
+ // DPI_MinSize, having type int
+ ParameterId["MinSize"] = "minSize";
+ // DPI_ModelDF, having type int
+ ParameterId["ModelDF"] = "modelDf";
+ // DPI_NewIndex, having type int
+ ParameterId["NewIndex"] = "newIndex";
+ // DPI_NumDataSourcesUsingServer, having type int
+ ParameterId["NumDataSourcesUsingServer"] = "numDataSourcesUsingServer";
+ // DPI_NumFilteredObs, having type int
+ ParameterId["NumFilteredObs"] = "filteredObservations";
+ // DPI_NumModeledObs, having type int
+ ParameterId["NumModeledObs"] = "modeledObservations";
+ // DPI_NumNotClustered, having type int
+ ParameterId["NumNotClustered"] = "numNotClustered";
+ // DPI_NumNumericFields, having type int
+ ParameterId["NumNumericFields"] = "numNumericFields";
+ // DPI_NumOutliers, having type int
+ ParameterId["NumOutliers"] = "numOutliers";
+ // DPI_NumRows, having type int
+ ParameterId["NumRows"] = "numRows";
+ // DPI_NumSelected, having type int
+ ParameterId["NumSelected"] = "numSelected";
+ // DPI_OffsetX, having type int
+ ParameterId["OffsetX"] = "offsetX";
+ // DPI_OffsetY, having type int
+ ParameterId["OffsetY"] = "offsetY";
+ // DPI_Padding, having type int
+ ParameterId["Padding"] = "padding";
+ // DPI_PaddingBottom, having type int
+ ParameterId["PaddingBottom"] = "paddingBottom";
+ // DPI_PaddingLeft, having type int
+ ParameterId["PaddingLeft"] = "paddingLeft";
+ // DPI_PaddingRight, having type int
+ ParameterId["PaddingRight"] = "paddingRight";
+ // DPI_PaddingTop, having type int
+ ParameterId["PaddingTop"] = "paddingTop";
+ // DPI_PageLoadPercentage, having type int
+ ParameterId["PageLoadPercentage"] = "pageLoadPercentage";
+ // DPI_PaletteIndex, having type int
+ ParameterId["PaletteIndex"] = "paletteIndex";
+ // DPI_PaneSpecificationId, having type int
+ ParameterId["PaneSpecificationId"] = "paneSpec";
+ // DPI_ParameterCtrlIncrementsPerTick, having type int
+ ParameterId["ParameterCtrlIncrementsPerTick"] = "parameterControlIncrementMultiplier";
+ // DPI_PolynomialDegree, having type int
+ ParameterId["PolynomialDegree"] = "degree";
+ // DPI_Port, having type int
+ ParameterId["Port"] = "datasourcePort";
+ // DPI_Position, having type int
+ ParameterId["Position"] = "position";
+ // DPI_ParentProjectId, having type int
+ ParameterId["ParentProjectId"] = "parentProjectId";
+ // DPI_PublishResultStringId, having type int
+ ParameterId["PublishResultStringId"] = "publishResultStringId";
+ // DPI_Radius, having type int
+ ParameterId["Radius"] = "radius";
+ // DPI_ReadoutOffset, having type int
+ ParameterId["ReadoutOffset"] = "readoutOffset";
+ // DPI_ReferenceIndex, having type int
+ ParameterId["ReferenceIndex"] = "referenceIndex";
+ // DPI_RegionHeight, having type int
+ ParameterId["RegionHeight"] = "regionHeight";
+ // DPI_RegionWidth, having type int
+ ParameterId["RegionWidth"] = "regionWidth";
+ // DPI_RemovedDatasourceCount, having type int
+ ParameterId["RemovedDatasourceCount"] = "removedDatasourceCount";
+ // DPI_RemovedSheetCount, having type int
+ ParameterId["RemovedSheetCount"] = "removedSheetCount";
+ // DPI_ResidualDF, having type int
+ ParameterId["ResidualDF"] = "residualDf";
+ // DPI_ResizeColumn, having type int
+ ParameterId["ResizeColumn"] = "resizeColumn";
+ // DPI_RestartEveryIndex, having type int
+ ParameterId["RestartEveryIndex"] = "restartEveryIndex";
+ // DPI_RightMargin, having type int
+ ParameterId["RightMargin"] = "rightMargin";
+ // DPI_RowCount, having type int
+ ParameterId["RowCount"] = "rowCount";
+ // DPI_RowHeight, having type int
+ ParameterId["RowHeight"] = "rowHeight";
+ // DPI_RowInnerLevels, having type int
+ ParameterId["RowInnerLevels"] = "rowInnerLevels";
+ // DPI_RowLevels, having type int
+ ParameterId["RowLevels"] = "rowLevels";
+ // DPI_RowNumber, having type int
+ ParameterId["RowNumber"] = "rowNumber";
+ // DPI_RowWidth, having type int
+ ParameterId["RowWidth"] = "rowWidth";
+ // DPI_SecondValueIndex, having type int
+ ParameterId["SecondValueIndex"] = "secondValueIndex";
+ // DPI_SecondsAgo, having type int
+ ParameterId["SecondsAgo"] = "secondsAgo";
+ // DPI_SelectionEnd, having type int
+ ParameterId["SelectionEnd"] = "selectionEnd";
+ // DPI_SelectionStart, having type int
+ ParameterId["SelectionStart"] = "selectionStart";
+ // DPI_ShapePaletteID, having type int
+ ParameterId["ShapePaletteID"] = "shapePaletteId";
+ // DPI_SheetIndex, having type int
+ ParameterId["SheetIndex"] = "sheetIndex";
+ // DPI_ShelfPositionIndex, having type int
+ ParameterId["ShelfPositionIndex"] = "shelfPosIndex";
+ // DPI_Size, having type int
+ ParameterId["Size"] = "size";
+ // DPI_SizeDifference, having type int
+ ParameterId["SizeDifference"] = "sizeDelta";
+ // DPI_SnapDistance, having type int
+ ParameterId["SnapDistance"] = "snapDistance";
+ // DPI_SnapLocation, having type int
+ ParameterId["SnapLocation"] = "snapLocation";
+ // DPI_SolveOrder, having type int
+ ParameterId["SolveOrder"] = "solveOrder";
+ // DPI_SpaceBetweenPoints, having type int
+ ParameterId["SpaceBetweenPoints"] = "spaceBetweenPoints";
+ // DPI_StepSize, having type int
+ ParameterId["StepSize"] = "stepSize";
+ // DPI_Steps, having type int
+ ParameterId["Steps"] = "steps";
+ // DPI_StoryPointIndex, having type int
+ ParameterId["StoryPointIndex"] = "currentStorypointIndex";
+ // DPI_StyleLen, having type int
+ ParameterId["StyleLen"] = "tokenLengthForStyle";
+ // DPI_StylePos, having type int
+ ParameterId["StylePos"] = "tokenPositionForStyle";
+ // DPI_SwatchAreaWidth, having type int
+ ParameterId["SwatchAreaWidth"] = "swatchWidth";
+ // DPI_TargetBinId, having type int
+ ParameterId["TargetBinId"] = "targetBinId";
+ // DPI_TargetPtX, having type int
+ ParameterId["TargetPtX"] = "targetX";
+ // DPI_TargetPtY, having type int
+ ParameterId["TargetPtY"] = "targetY";
+ // DPI_TileFactor, having type int
+ ParameterId["TileFactor"] = "tileFactor";
+ // DPI_TitleHeight, having type int
+ ParameterId["TitleHeight"] = "titleHeight";
+ // DPI_TitleWidth, having type int
+ ParameterId["TitleWidth"] = "titleWidth";
+ // DPI_TopBottomBorderWidth, having type int
+ ParameterId["TopBottomBorderWidth"] = "topBottomBorderWidth";
+ // DPI_UIAutomationLineSize, having type int
+ ParameterId["UIAutomationLineSize"] = "uiAutomationLineSize";
+ // DPI_UIAutomationPageSize, having type int
+ ParameterId["UIAutomationPageSize"] = "uiAutomationPageSize";
+ // DPI_UID, having type int
+ ParameterId["UID"] = "uid";
+ // DPI_UpperBound, having type int
+ ParameterId["UpperBound"] = "upperBound";
+ // DPI_VertTextCell, having type int
+ ParameterId["VertTextCell"] = "vertTextCell";
+ // DPI_Width, having type int
+ ParameterId["Width"] = "w";
+ // DPI_X, having type int
+ ParameterId["X"] = "x";
+ // DPI_Y, having type int
+ ParameterId["Y"] = "y";
+ // DPI_ZOrder, having type int
+ ParameterId["ZOrder"] = "zOrder";
+ // DPI_ZoneIconIndex, having type int
+ ParameterId["ZoneIconIndex"] = "zoneIconIndex";
+ // DPI_AliasIndices, having type int[]
+ ParameterId["AliasIndices"] = "aliasIndices";
+ // DPI_AnovaDFVec, having type int[]
+ ParameterId["AnovaDFVec"] = "anovaDfVector";
+ // DPI_ColumnIndices, having type int[]
+ ParameterId["ColumnIndices"] = "columnIndices";
+ // DPI_DrillFieldIndices, having type int[]
+ ParameterId["DrillFieldIndices"] = "drillFieldIndices";
+ // DPI_FilterMaxIndices, having type int[]
+ ParameterId["FilterMaxIndices"] = "filterMaxIndices";
+ // DPI_FilterMinIndices, having type int[]
+ ParameterId["FilterMinIndices"] = "filterMinIndices";
+ // DPI_FilterValuesIndices, having type int[]
+ ParameterId["FilterValuesIndices"] = "filterValueIndices";
+ // DPI_FormatStringIndices, having type int[]
+ ParameterId["FormatStringIndices"] = "formatstrIndices";
+ // DPI_FormattedValIndices, having type int[]
+ ParameterId["FormattedValIndices"] = "formatValIdxs";
+ // DPI_PaletteIndices, having type int[]
+ ParameterId["PaletteIndices"] = "palettesIndices";
+ // DPI_PaneIndices, having type int[]
+ ParameterId["PaneIndices"] = "paneIndices";
+ // DPI_Points, having type int[]
+ ParameterId["Points"] = "points";
+ // DPI_QuickFilterSettings, having type int[]
+ ParameterId["QuickFilterSettings"] = "quickFilterSettings";
+ // DPI_SelectedIndices, having type int[]
+ ParameterId["SelectedIndices"] = "selectedIndices";
+ // DPI_ShelfPositionIndices, having type int[]
+ ParameterId["ShelfPositionIndices"] = "shelfPosIndices";
+ // DPI_TileBox, having type int[]
+ ParameterId["TileBox"] = "tileBox";
+ // DPI_TrailOverride, having type int[]
+ ParameterId["TrailOverride"] = "trailOverride";
+ // DPI_UIDs, having type int[]
+ ParameterId["UIDs"] = "uids";
+ // DPI_ValueIndices, having type int[]
+ ParameterId["ValueIndices"] = "valueIndices";
+ // DPI_XCellOffsets, having type int[]
+ ParameterId["XCellOffsets"] = "xCellOffsets";
+ // DPI_XPixelOffsets, having type int[]
+ ParameterId["XPixelOffsets"] = "xPixelOffsets";
+ // DPI_YCellOffsets, having type int[]
+ ParameterId["YCellOffsets"] = "yCellOffsets";
+ // DPI_YPixelOffsets, having type int[]
+ ParameterId["YPixelOffsets"] = "yPixelOffsets";
+ // DPI_IntMap, having type Dictionary(of int)
+ ParameterId["IntMap"] = "intMap";
+ // DPI_SelectedAuthSettingIndices, having type Dictionary(of int)
+ ParameterId["SelectedAuthSettingIndices"] = "selectedAuthSettingIndices";
+ // DPI_ActiveStoryPointID, having type uint
+ ParameterId["ActiveStoryPointID"] = "activeStoryPointId";
+ // DPI_ActiveZoneID, having type uint
+ ParameterId["ActiveZoneID"] = "activeZoneId";
+ // DPI_ActualSize, having type uint
+ ParameterId["ActualSize"] = "actualSize";
+ // DPI_AddInDebugPort, having type uint
+ ParameterId["AddInDebugPort"] = "addInDebugPort";
+ // DPI_AggregationIndex, having type uint
+ ParameterId["AggregationIndex"] = "aggregationIndex";
+ // DPI_AnnotationID, having type uint
+ ParameterId["AnnotationID"] = "annotationId";
+ // DPI_AssignedAliasCount, having type uint
+ ParameterId["AssignedAliasCount"] = "assignedAliasCount";
+ // DPI_CapabilityId, having type uint
+ ParameterId["CapabilityId"] = "capabilityId";
+ // DPI_CaretIndex, having type uint
+ ParameterId["CaretIndex"] = "caretIndex";
+ // DPI_CellID, having type uint
+ ParameterId["CellID"] = "cellId";
+ // DPI_ColumnIndex, having type uint
+ ParameterId["ColumnIndex"] = "columnIndex";
+ // DPI_CommandID, having type uint
+ ParameterId["CommandID"] = "id";
+ // DPI_CommandIndex, having type uint
+ ParameterId["CommandIndex"] = "index";
+ // DPI_ControllerId, having type uint
+ ParameterId["ControllerId"] = "controllerId";
+ // DPI_Count, having type uint
+ ParameterId["Count"] = "count";
+ // DPI_URowCount, having type uint
+ ParameterId["URowCount"] = "uRowCount";
+ // DPI_UColumnCount, having type uint
+ ParameterId["UColumnCount"] = "uColumnCount";
+ // DPI_CurrentPage, having type uint
+ ParameterId["CurrentPage"] = "currentPage";
+ // DPI_DatePeriodsCount, having type uint
+ ParameterId["DatePeriodsCount"] = "datePeriodsCount";
+ // DPI_Decimals, having type uint
+ ParameterId["Decimals"] = "decimals";
+ // DPI_DefaultHeight, having type uint
+ ParameterId["DefaultHeight"] = "defaultHeight";
+ // DPI_DefaultItem, having type uint
+ ParameterId["DefaultItem"] = "defaultItem";
+ // DPI_DefaultWidth, having type uint
+ ParameterId["DefaultWidth"] = "defaultWidth";
+ // DPI_Depth, having type uint
+ ParameterId["Depth"] = "depth";
+ // DPI_DetailID, having type uint
+ ParameterId["DetailID"] = "detailId";
+ // DPI_DrillLevel, having type uint
+ ParameterId["DrillLevel"] = "drillLevel";
+ // DPI_DuplicateIndex, having type uint
+ ParameterId["DuplicateIndex"] = "duplicateIndex";
+ // DPI_EndIndex, having type uint
+ ParameterId["EndIndex"] = "endIndex";
+ // DPI_FieldIconIdx, having type uint
+ ParameterId["FieldIconIdx"] = "fieldIconIdx";
+ // DPI_FilterLevel, having type uint
+ ParameterId["FilterLevel"] = "filterLevel";
+ // DPI_FilterTileSize, having type uint
+ ParameterId["FilterTileSize"] = "filterTileSize";
+ // DPI_FiscalYearStart, having type uint
+ ParameterId["FiscalYearStart"] = "fiscalYearStart";
+ // DPI_FitPagesAcross, having type uint
+ ParameterId["FitPagesAcross"] = "pageFitHorizontal";
+ // DPI_FitPagesDown, having type uint
+ ParameterId["FitPagesDown"] = "pageFitVertical";
+ // DPI_FixedIndex, having type uint
+ ParameterId["FixedIndex"] = "fixedIndex";
+ // DPI_FlipboardZoneID, having type uint
+ ParameterId["FlipboardZoneID"] = "flipboardZoneId";
+ // DPI_ForecastAutoRangeSize, having type uint
+ ParameterId["ForecastAutoRangeSize"] = "forecastAutoRangeSize";
+ // DPI_ForecastEndOfRange, having type uint
+ ParameterId["ForecastEndOfRange"] = "forecastEndOfRange";
+ // DPI_ForecastIgnoreLast, having type uint
+ ParameterId["ForecastIgnoreLast"] = "forecastIgnoreLast";
+ // DPI_ForecastNextRangeSize, having type uint
+ ParameterId["ForecastNextRangeSize"] = "forecastNextRangeSize";
+ // DPI_GroupFlags, having type uint
+ ParameterId["GroupFlags"] = "groupFlag";
+ // DPI_HierarchyLevels, having type uint
+ ParameterId["HierarchyLevels"] = "hierarchyLevels";
+ // DPI_HierarchyMemberId, having type uint
+ ParameterId["HierarchyMemberId"] = "hierarchyMemberId";
+ // DPI_HitTestFlags, having type uint
+ ParameterId["HitTestFlags"] = "hitTestFlags";
+ // DPI_ImageHeight, having type uint
+ ParameterId["ImageHeight"] = "imageHeight";
+ // DPI_ImageWidth, having type uint
+ ParameterId["ImageWidth"] = "imageWidth";
+ // DPI_ItemIndex, having type uint
+ ParameterId["ItemIndex"] = "itemIndex";
+ // DPI_ItemIndex1, having type uint
+ ParameterId["ItemIndex1"] = "itemIndex1";
+ // DPI_LineHeight, having type uint
+ ParameterId["LineHeight"] = "lineHeight";
+ // DPI_MapIntermediateLevels, having type uint
+ ParameterId["MapIntermediateLevels"] = "mapIntermediateLevels";
+ // DPI_MapWorldRepeats, having type uint
+ ParameterId["MapWorldRepeats"] = "mapWorldRepeats";
+ // DPI_MaxAlpha, having type uint
+ ParameterId["MaxAlpha"] = "maxAlpha";
+ // DPI_MaxHeight, having type uint
+ ParameterId["MaxHeight"] = "maxHeight";
+ // DPI_MaxNumberWebListItems, having type uint
+ ParameterId["MaxNumberWebListItems"] = "maxNumberWebListItems";
+ // DPI_MaxPrevOrNextValues, having type uint
+ ParameterId["MaxPrevOrNextValues"] = "maxPrevOrNextValues";
+ // DPI_MaxRows, having type uint
+ ParameterId["MaxRows"] = "maxRows";
+ // DPI_MaxTransparency, having type uint
+ ParameterId["MaxTransparency"] = "colorMaxTransparencyValue";
+ // DPI_MaxWidth, having type uint
+ ParameterId["MaxWidth"] = "maxWidth";
+ // DPI_MinColumns, having type uint
+ ParameterId["MinColumns"] = "minColumns";
+ // DPI_MinHeight, having type uint
+ ParameterId["MinHeight"] = "minHeight";
+ // DPI_MinPrevOrNextValues, having type uint
+ ParameterId["MinPrevOrNextValues"] = "minPrevOrNextValues";
+ // DPI_MinTransparency, having type uint
+ ParameterId["MinTransparency"] = "colorMinTransparencyValue";
+ // DPI_MinWidth, having type uint
+ ParameterId["MinWidth"] = "minWidth";
+ // DPI_NestedCalcsIndex, having type uint
+ ParameterId["NestedCalcsIndex"] = "nestedCalcsIndex";
+ // DPI_NextValues, having type uint
+ ParameterId["NextValues"] = "nextValues";
+ // DPI_NodeLevel, having type uint
+ ParameterId["NodeLevel"] = "nodeLevel";
+ // DPI_NumHighlighted, having type uint
+ ParameterId["NumHighlighted"] = "numHighlighted";
+ // DPI_NumberOfNextValues, having type uint
+ ParameterId["NumberOfNextValues"] = "numberOfNextValues";
+ // DPI_NumberOfPrevValues, having type uint
+ ParameterId["NumberOfPrevValues"] = "numberOfPrevValues";
+ // DPI_ObjectID, having type uint
+ ParameterId["ObjectID"] = "objectId";
+ // DPI_OrderingTypeIndex, having type uint
+ ParameterId["OrderingTypeIndex"] = "orderingTypeIndex";
+ // DPI_PageCount, having type uint
+ ParameterId["PageCount"] = "pageCount";
+ // DPI_PageFadeEnd, having type uint
+ ParameterId["PageFadeEnd"] = "fadeEnd";
+ // DPI_PageFadeStart, having type uint
+ ParameterId["PageFadeStart"] = "fadeStart";
+ // DPI_PageIndex, having type uint
+ ParameterId["PageIndex"] = "pageIndex";
+ // DPI_PageNumber, having type uint
+ ParameterId["PageNumber"] = "pageNumber";
+ // DPI_PageScalePercent, having type uint
+ ParameterId["PageScalePercent"] = "pageScalePercent";
+ // DPI_PageTrailLength, having type uint
+ ParameterId["PageTrailLength"] = "historyLength";
+ // DPI_PaletteFlagsVal, having type uint
+ ParameterId["PaletteFlagsVal"] = "paletteFlagsVal";
+ // DPI_PaneIndex, having type uint
+ ParameterId["PaneIndex"] = "paneIndex";
+ // DPI_ParamCtrlDisplayFlags, having type uint
+ ParameterId["ParamCtrlDisplayFlags"] = "paramDisplayFlags";
+ // DPI_ParentZoneID, having type uint
+ ParameterId["ParentZoneID"] = "parentZoneId";
+ // DPI_PercentileParam, having type uint
+ ParameterId["PercentileParam"] = "percentileParam";
+ // DPI_PrevValues, having type uint
+ ParameterId["PrevValues"] = "prevValues";
+ // DPI_QRGBColor, having type uint
+ ParameterId["QRGBColor"] = "qrgbColor";
+ // DPI_RangeN, having type uint
+ ParameterId["RangeN"] = "rangeN";
+ // DPI_RankTypeIndex, having type uint
+ ParameterId["RankTypeIndex"] = "rankTypeIndex";
+ // DPI_RenderComplexity, having type uint
+ ParameterId["RenderComplexity"] = "renderComplexityLimit";
+ // DPI_RowIndex, having type uint
+ ParameterId["RowIndex"] = "rowIndex";
+ // DPI_SelectedAuthSettingIndex, having type uint
+ ParameterId["SelectedAuthSettingIndex"] = "selectedAuthSettingIndex";
+ // DPI_SelectedFullScheduleIndex, having type uint
+ ParameterId["SelectedFullScheduleIndex"] = "selectedFullScheduleIndex";
+ // DPI_SelectedIncrScheduleIndex, having type uint
+ ParameterId["SelectedIncrScheduleIndex"] = "selectedIncrScheduleIndex";
+ // DPI_SelectedPublishChoiceIndex, having type uint
+ ParameterId["SelectedPublishChoiceIndex"] = "selectedPublishChoiceIndex";
+ // DPI_SelectedMemberCount, having type uint
+ ParameterId["SelectedMemberCount"] = "selectedMemberCount";
+ // DPI_ShapeID, having type uint
+ ParameterId["ShapeID"] = "shapeId";
+ // DPI_SheetUseCount, having type uint
+ ParameterId["SheetUseCount"] = "useCount";
+ // DPI_ShelfItemID, having type uint
+ ParameterId["ShelfItemID"] = "shelfItemId";
+ // DPI_SigFigs, having type uint
+ ParameterId["SigFigs"] = "sigFigs";
+ // DPI_SortAggIndex, having type uint
+ ParameterId["SortAggIndex"] = "sortAggIndvValues";
+ // DPI_SortColumnIndex, having type uint
+ ParameterId["SortColumnIndex"] = "sortColumnIndex";
+ // DPI_SortDirectionIndex, having type uint
+ ParameterId["SortDirectionIndex"] = "sortDirectionIndex";
+ // DPI_SortFieldIndex, having type uint
+ ParameterId["SortFieldIndex"] = "sortFieldIndex";
+ // DPI_StartIndex, having type uint
+ ParameterId["StartIndex"] = "startIndex";
+ // DPI_StartOfWeek, having type uint
+ ParameterId["StartOfWeek"] = "startOfWeek";
+ // DPI_StoryPointID, having type uint
+ ParameterId["StoryPointID"] = "storyPointId";
+ // DPI_TableCalcTypeIndex, having type uint
+ ParameterId["TableCalcTypeIndex"] = "tableCalcTypeIndex";
+ // DPI_TableCalcTypesUsed, having type uint
+ ParameterId["TableCalcTypesUsed"] = "tableCalcTypesUsed";
+ // DPI_TemplateIndex, having type uint
+ ParameterId["TemplateIndex"] = "templateIndex";
+ // DPI_TileCount, having type uint
+ ParameterId["TileCount"] = "tileCount";
+ // DPI_TimeoutSeconds, having type uint
+ ParameterId["TimeoutSeconds"] = "timeoutSeconds";
+ // DPI_TopN, having type uint
+ ParameterId["TopN"] = "topN";
+ // DPI_TotalNumberOfItemsInSet, having type uint
+ ParameterId["TotalNumberOfItemsInSet"] = "totalNumberOfItemsInSet";
+ // DPI_TotalMemberCount, having type uint
+ ParameterId["TotalMemberCount"] = "totalMemberCount";
+ // DPI_Transparency, having type uint
+ ParameterId["Transparency"] = "colorTransparencyValue";
+ // DPI_TupleID, having type uint
+ ParameterId["TupleID"] = "tupleId";
+ // DPI_UIndex, having type uint
+ ParameterId["UIndex"] = "uindex";
+ // DPI_UndoPosition, having type uint
+ ParameterId["UndoPosition"] = "undoPosition";
+ // DPI_UnsignedWidth, having type uint
+ ParameterId["UnsignedWidth"] = "uw";
+ // DPI_UnsignedWidthBottom, having type uint
+ ParameterId["UnsignedWidthBottom"] = "uwb";
+ // DPI_UnsignedWidthLeft, having type uint
+ ParameterId["UnsignedWidthLeft"] = "uwl";
+ // DPI_UnsignedWidthRight, having type uint
+ ParameterId["UnsignedWidthRight"] = "uwr";
+ // DPI_UnsignedWidthTop, having type uint
+ ParameterId["UnsignedWidthTop"] = "uwt";
+ // DPI_ValueIndex, having type uint
+ ParameterId["ValueIndex"] = "valueIndex";
+ // DPI_ValueInt, having type uint
+ ParameterId["ValueInt"] = "valueInt";
+ // DPI_WorldOffset, having type uint
+ ParameterId["WorldOffset"] = "worldOffset";
+ // DPI_XDuplicateIndex, having type uint
+ ParameterId["XDuplicateIndex"] = "xDuplicateIndex";
+ // DPI_XIndex, having type uint
+ ParameterId["XIndex"] = "xIndex";
+ // DPI_YDuplicateIndex, having type uint
+ ParameterId["YDuplicateIndex"] = "yDuplicateIndex";
+ // DPI_YIndex, having type uint
+ ParameterId["YIndex"] = "yIndex";
+ // DPI_ZoneID, having type uint
+ ParameterId["ZoneID"] = "zoneId";
+ // DPI_ZoneZOrder, having type uint
+ ParameterId["ZoneZOrder"] = "zoneZOrder";
+ // DPI_ComponentID, having type uint
+ ParameterId["ComponentID"] = "componentId";
+ // DPI_NonThreadPoolUseCount, having type uint
+ ParameterId["NonThreadPoolUseCount"] = "nonThreadPoolUseCount";
+ // DPI_AddressingIndices, having type uint[]
+ ParameterId["AddressingIndices"] = "addressingIndices";
+ // DPI_AddressingInvalidIndices, having type uint[]
+ ParameterId["AddressingInvalidIndices"] = "addressingInvalidIndices";
+ // DPI_ChildZoneIds, having type uint[]
+ ParameterId["ChildZoneIds"] = "childZoneIds";
+ // DPI_ColorList, having type uint[]
+ ParameterId["ColorList"] = "colorList";
+ // DPI_DuplicateIndices, having type uint[]
+ ParameterId["DuplicateIndices"] = "duplicateIndices";
+ // DPI_FilterAddIndices, having type uint[]
+ ParameterId["FilterAddIndices"] = "filterAddIndices";
+ // DPI_FilterIndices, having type uint[]
+ ParameterId["FilterIndices"] = "filterIndices";
+ // DPI_FilterLevelAdd, having type uint[]
+ ParameterId["FilterLevelAdd"] = "filterLevelAdd";
+ // DPI_FilterLevelRemove, having type uint[]
+ ParameterId["FilterLevelRemove"] = "filterLevelRemove";
+ // DPI_FilterLevels, having type uint[]
+ ParameterId["FilterLevels"] = "filterLevels";
+ // DPI_FilterRemoveIndices, having type uint[]
+ ParameterId["FilterRemoveIndices"] = "filterRemoveIndices";
+ // DPI_FixedValues, having type uint[]
+ ParameterId["FixedValues"] = "fixedValues";
+ // DPI_HierarchyMemberIdList, having type uint[]
+ ParameterId["HierarchyMemberIdList"] = "hierarchyMemberIdList";
+ // DPI_InvalidIndices, having type uint[]
+ ParameterId["InvalidIndices"] = "invalidIndices";
+ // DPI_ItemIndices, having type uint[]
+ ParameterId["ItemIndices"] = "itemIndices";
+ // DPI_LineTupleIDs, having type uint[]
+ ParameterId["LineTupleIDs"] = "lineTupleIds";
+ // DPI_ObjectIDs, having type uint[]
+ ParameterId["ObjectIDs"] = "objectIds";
+ // DPI_PageIndices, having type uint[]
+ ParameterId["PageIndices"] = "pageIndices";
+ // DPI_QRGB, having type uint[]
+ ParameterId["QRGB"] = "qrgbList";
+ // DPI_QRGBColors, having type uint[]
+ ParameterId["QRGBColors"] = "qrgbColors";
+ // DPI_RefLineID, having type uint[]
+ ParameterId["RefLineID"] = "reflineId";
+ // DPI_ShapeIDs, having type uint[]
+ ParameterId["ShapeIDs"] = "shapeIds";
+ // DPI_ShelfSelection, having type uint[]
+ ParameterId["ShelfSelection"] = "shelfSelection";
+ // DPI_StoryPointIDs, having type uint[]
+ ParameterId["StoryPointIDs"] = "storyPointIds";
+ // DPI_TupleIDs, having type uint[]
+ ParameterId["TupleIDs"] = "tupleIds";
+ // DPI_Widths, having type uint[]
+ ParameterId["Widths"] = "widths";
+ // DPI_UintMap, having type Dictionary(of uint32_t)
+ ParameterId["UintMap"] = "uintMap";
+ // DPI_Alpha, having type float
+ ParameterId["Alpha"] = "alpha";
+ // DPI_Angle, having type float
+ ParameterId["Angle"] = "angle";
+ // DPI_BreakPointValue, having type float
+ ParameterId["BreakPointValue"] = "breakPointValue";
+ // DPI_DevicePixelRatio, having type float
+ ParameterId["DevicePixelRatio"] = "devicePixelRatio";
+ // DPI_Distance, having type float
+ ParameterId["Distance"] = "distance";
+ // DPI_FloatX, having type float
+ ParameterId["FloatX"] = "floatX";
+ // DPI_FloatY, having type float
+ ParameterId["FloatY"] = "floatY";
+ // DPI_FogDesaturation, having type float
+ ParameterId["FogDesaturation"] = "fogDesaturation";
+ // DPI_MarkScale, having type float
+ ParameterId["MarkScale"] = "markScale";
+ // DPI_MarkSizeInPixelUnits, having type float
+ ParameterId["MarkSizeInPixelUnits"] = "markSizeInPixelUnits";
+ // DPI_PointSize, having type float
+ ParameterId["PointSize"] = "pointSize";
+ // DPI_StrokeWidth, having type float
+ ParameterId["StrokeWidth"] = "strokeWidth";
+ // DPI_TextRegionOrientation, having type float
+ ParameterId["TextRegionOrientation"] = "orientation";
+ // DPI_TransformAngle, having type float
+ ParameterId["TransformAngle"] = "transformAngle";
+ // DPI_ZoomLevel, having type float
+ ParameterId["ZoomLevel"] = "zoomLevel";
+ // DPI_OldZoomLevel, having type float
+ ParameterId["OldZoomLevel"] = "oldZoomLevel";
+ // DPI_NewZoomLevel, having type float
+ ParameterId["NewZoomLevel"] = "newZoomLevel";
+ // DPI_AspectRatio, having type float
+ ParameterId["AspectRatio"] = "aspectRatio";
+ // DPI_BottomPrintMargin, having type float
+ ParameterId["BottomPrintMargin"] = "bottomPrintMargin";
+ // DPI_EarthRadius, having type float
+ ParameterId["EarthRadius"] = "earthRadius";
+ // DPI_FloatHeight, having type float
+ ParameterId["FloatHeight"] = "floatHeight";
+ // DPI_FloatLeft, having type float
+ ParameterId["FloatLeft"] = "floatLeft";
+ // DPI_FloatRadius, having type float
+ ParameterId["FloatRadius"] = "floatRadius";
+ // DPI_FloatTop, having type float
+ ParameterId["FloatTop"] = "floatTop";
+ // DPI_FloatWidth, having type float
+ ParameterId["FloatWidth"] = "floatWidth";
+ // DPI_LeftPrintMargin, having type float
+ ParameterId["LeftPrintMargin"] = "leftPrintMargin";
+ // DPI_MapCenterLatitude, having type float
+ ParameterId["MapCenterLatitude"] = "mapCenterLatitude";
+ // DPI_MapCenterLongitude, having type float
+ ParameterId["MapCenterLongitude"] = "mapCenterLongitude";
+ // DPI_MapDisplayScale, having type float
+ ParameterId["MapDisplayScale"] = "mapDisplayScale";
+ // DPI_MapMaxStretch, having type float
+ ParameterId["MapMaxStretch"] = "mapMaxStretch";
+ // DPI_MapMaxZoom, having type float
+ ParameterId["MapMaxZoom"] = "mapMaxZoom";
+ // DPI_MapMinShrink, having type float
+ ParameterId["MapMinShrink"] = "mapMinShrink";
+ // DPI_MapMinZoom, having type float
+ ParameterId["MapMinZoom"] = "mapMinZoom";
+ // DPI_MapRequestZoom, having type float
+ ParameterId["MapRequestZoom"] = "mapRequestZoom";
+ // DPI_MapWashout, having type float
+ ParameterId["MapWashout"] = "mapWashout";
+ // DPI_MaxLatitude, having type float
+ ParameterId["MaxLatitude"] = "maxLatitude";
+ // DPI_MaxLongitude, having type float
+ ParameterId["MaxLongitude"] = "maxLongitude";
+ // DPI_MinLatitude, having type float
+ ParameterId["MinLatitude"] = "minLatitude";
+ // DPI_MinLongitude, having type float
+ ParameterId["MinLongitude"] = "minLongitude";
+ // DPI_RightPrintMargin, having type float
+ ParameterId["RightPrintMargin"] = "rightPrintMargin";
+ // DPI_TopPrintMargin, having type float
+ ParameterId["TopPrintMargin"] = "topPrintMargin";
+ // DPI_UIAutomationMaximum, having type float
+ ParameterId["UIAutomationMaximum"] = "uiAutomationMaximum";
+ // DPI_UIAutomationMinimum, having type float
+ ParameterId["UIAutomationMinimum"] = "uiAutomationMinimum";
+ // DPI_UIAutomationOffset, having type float
+ ParameterId["UIAutomationOffset"] = "uiAutomationOffset";
+ // DPI_UnitDivisor, having type float
+ ParameterId["UnitDivisor"] = "unitDivisor";
+ // DPI_UnitTransition, having type float
+ ParameterId["UnitTransition"] = "unitTransition";
+ // DPI_AutomaticDrillIdx, having type float[]
+ ParameterId["AutomaticDrillIdx"] = "automaticDrillIdx";
+ // DPI_DestinationBox, having type float[]
+ ParameterId["DestinationBox"] = "destBox";
+ // DPI_LowerEnd, having type float[]
+ ParameterId["LowerEnd"] = "lowerEnd";
+ // DPI_OppositeAxis, having type float[]
+ ParameterId["OppositeAxis"] = "oppositeAxis";
+ // DPI_PointsF, having type float[]
+ ParameterId["PointsF"] = "pointsF";
+ // DPI_SourceBox, having type float[]
+ ParameterId["SourceBox"] = "sourceBox";
+ // DPI_TransformOffset, having type float[]
+ ParameterId["TransformOffset"] = "transformOffset";
+ // DPI_TransformScale, having type float[]
+ ParameterId["TransformScale"] = "transformScale";
+ // DPI_UpperEnd, having type float[]
+ ParameterId["UpperEnd"] = "upperEnd";
+ // DPI_FloatMap, having type Dictionary(of float)
+ ParameterId["FloatMap"] = "floatMap";
+ // DPI_BGSS, having type double
+ ParameterId["BGSS"] = "betweenGroupSumOfSquares";
+ // DPI_ConfidenceLevel, having type double
+ ParameterId["ConfidenceLevel"] = "confidenceLevel";
+ // DPI_ConfidencePercentage, having type double
+ ParameterId["ConfidencePercentage"] = "confidencePercentage";
+ // DPI_DoubleLeft, having type double
+ ParameterId["DoubleLeft"] = "doubleLeft";
+ // DPI_DoubleTop, having type double
+ ParameterId["DoubleTop"] = "doubleTop";
+ // DPI_DoubleValue, having type double
+ ParameterId["DoubleValue"] = "doubleValue";
+ // DPI_DoubleX, having type double
+ ParameterId["DoubleX"] = "doubleX";
+ // DPI_DoubleY, having type double
+ ParameterId["DoubleY"] = "doubleY";
+ // DPI_FStatistic, having type double
+ ParameterId["FStatistic"] = "fStatistic";
+ // DPI_FilterRangeMax, having type double
+ ParameterId["FilterRangeMax"] = "filterRangeMax";
+ // DPI_FilterRangeMin, having type double
+ ParameterId["FilterRangeMin"] = "filterRangeMin";
+ // DPI_GeographicSearchCandidateScore, having type double
+ ParameterId["GeographicSearchCandidateScore"] = "geographicSearchCandidateScore";
+ // DPI_HeightD, having type double
+ ParameterId["HeightD"] = "height";
+ // DPI_InflectionFraction, having type double
+ ParameterId["InflectionFraction"] = "inflectionFraction";
+ // DPI_InflectionValue, having type double
+ ParameterId["InflectionValue"] = "inflectionValue";
+ // DPI_MSE, having type double
+ ParameterId["MSE"] = "meanSquaredError";
+ // DPI_MSM, having type double
+ ParameterId["MSM"] = "meanSquaredModel";
+ // DPI_MapScaleMarginOfError, having type double
+ ParameterId["MapScaleMarginOfError"] = "mapScaleMarginOfError";
+ // DPI_MarkSize, having type double
+ ParameterId["MarkSize"] = "markSize";
+ // DPI_MaxMarkSize, having type double
+ ParameterId["MaxMarkSize"] = "maxMarkSize";
+ // DPI_MinMarkSize, having type double
+ ParameterId["MinMarkSize"] = "minMarkSize";
+ // DPI_NotchPosition, having type double
+ ParameterId["NotchPosition"] = "notchPosition";
+ // DPI_NotchValue, having type double
+ ParameterId["NotchValue"] = "notchValue";
+ // DPI_PValue, having type double
+ ParameterId["PValue"] = "pValue";
+ // DPI_PercentDimensions, having type double
+ ParameterId["PercentDimensions"] = "percentDimensions";
+ // DPI_PercentGroups, having type double
+ ParameterId["PercentGroups"] = "percentGroups";
+ // DPI_PercentMeasures, having type double
+ ParameterId["PercentMeasures"] = "percentMeasures";
+ // DPI_RSquared, having type double
+ ParameterId["RSquared"] = "rSquared";
+ // DPI_SSE, having type double
+ ParameterId["SSE"] = "sumSquaredError";
+ // DPI_SSM, having type double
+ ParameterId["SSM"] = "sumSquaredModel";
+ // DPI_StandardError, having type double
+ ParameterId["StandardError"] = "standardError";
+ // DPI_TSS, having type double
+ ParameterId["TSS"] = "totalSumOfSquares";
+ // DPI_WGSS, having type double
+ ParameterId["WGSS"] = "withinGroupSumOfSquares";
+ // DPI_WidthD, having type double
+ ParameterId["WidthD"] = "width";
+ // DPI_ZoomFactor, having type double
+ ParameterId["ZoomFactor"] = "zoomFactor";
+ // DPI_CoefficientPValueVec, having type double[]
+ ParameterId["CoefficientPValueVec"] = "coefficientPValueVector";
+ // DPI_CoefficientStdErrVec, having type double[]
+ ParameterId["CoefficientStdErrVec"] = "coefficientStdErrorVector";
+ // DPI_CoefficientTValueVec, having type double[]
+ ParameterId["CoefficientTValueVec"] = "coefficientTValueVector";
+ // DPI_CoefficientVec, having type double[]
+ ParameterId["CoefficientVec"] = "coefficientVector";
+ // DPI_FStatisticVec, having type double[]
+ ParameterId["FStatisticVec"] = "trendLineFStatisticVector";
+ // DPI_Factors, having type double[]
+ ParameterId["Factors"] = "factors";
+ // DPI_MSEVec, having type double[]
+ ParameterId["MSEVec"] = "meanSquaredErrorVector";
+ // DPI_Means, having type double[]
+ ParameterId["Means"] = "means";
+ // DPI_PValueVec, having type double[]
+ ParameterId["PValueVec"] = "pValueVector";
+ // DPI_Percentages, having type double[]
+ ParameterId["Percentages"] = "percentages";
+ // DPI_Percentiles, having type double[]
+ ParameterId["Percentiles"] = "percentiles";
+ // DPI_SSEVec, having type double[]
+ ParameterId["SSEVec"] = "sumSquaredErrorVector";
+ // DPI_StDevs, having type double[]
+ ParameterId["StDevs"] = "stdev";
+ // DPI_UnscaledMeans, having type double[]
+ ParameterId["UnscaledMeans"] = "unscaledMeans";
+ // DPI_DeltaTimeMs, having type long
+ ParameterId["DeltaTimeMs"] = "deltaTimeMs";
+ // DPI_ExtractHistoryRowCount, having type long
+ ParameterId["ExtractHistoryRowCount"] = "extractRowCount";
+ // DPI_ExtractHistoryRowsRemoved, having type long
+ ParameterId["ExtractHistoryRowsRemoved"] = "extractRowsRemoved";
+ // DPI_ExtractsSize, having type long
+ ParameterId["ExtractsSize"] = "extractsSize";
+ // DPI_OldExtractSize, having type long
+ ParameterId["OldExtractSize"] = "oldExtractSize";
+ // DPI_RowsInserted, having type long
+ ParameterId["RowsInserted"] = "rowsInserted";
+ // DPI_SampleSize, having type long
+ ParameterId["SampleSize"] = "sampleSize";
+ // DPI_SampleSpace, having type long
+ ParameterId["SampleSpace"] = "sampleSpace";
+ // DPI_ThreadPoolUseCount, having type long
+ ParameterId["ThreadPoolUseCount"] = "threadPoolUseCount";
+ // DPI_ActionId, having type string
+ ParameterId["ActionId"] = "actionId";
+ // DPI_AxisColumn, having type string
+ ParameterId["AxisColumn"] = "axisColumn";
+ // DPI_BaseColumnName, having type string
+ ParameterId["BaseColumnName"] = "baseColumnName";
+ // DPI_BreakPointFieldName, having type string
+ ParameterId["BreakPointFieldName"] = "breakPointFieldName";
+ // DPI_PairedFieldName, having type string
+ ParameterId["PairedFieldName"] = "pairedFn";
+ // DPI_FieldNameAllowEmpty, having type string
+ ParameterId["FieldNameAllowEmpty"] = "fieldNameAllowEmpty";
+ // DPI_FieldNameDisAgg, having type string
+ ParameterId["FieldNameDisAgg"] = "fnDisagg";
+ // DPI_FieldNameLocal, having type string
+ ParameterId["FieldNameLocal"] = "fieldNameLocal";
+ // DPI_FieldNamePrev, having type string
+ ParameterId["FieldNamePrev"] = "fnPrev";
+ // DPI_FieldNameSource, having type string
+ ParameterId["FieldNameSource"] = "fnSource";
+ // DPI_FieldNameTarget, having type string
+ ParameterId["FieldNameTarget"] = "fnTarget";
+ // DPI_FieldNameX, having type string
+ ParameterId["FieldNameX"] = "fnX";
+ // DPI_FieldNameY, having type string
+ ParameterId["FieldNameY"] = "fnY";
+ // DPI_FieldToSort, having type string
+ ParameterId["FieldToSort"] = "fieldToSort";
+ // DPI_GlobalFieldName, having type string
+ ParameterId["GlobalFieldName"] = "globalFieldName";
+ // DPI_HierarchyName, having type string
+ ParameterId["HierarchyName"] = "hierarchyName";
+ // DPI_InvalidAggFieldName, having type string
+ ParameterId["InvalidAggFieldName"] = "invalidAggFieldName";
+ // DPI_InvalidFieldName, having type string
+ ParameterId["InvalidFieldName"] = "invalidFieldName";
+ // DPI_LimitParameterName, having type string
+ ParameterId["LimitParameterName"] = "limitParameterName";
+ // DPI_LocalBaseColumnName, having type string
+ ParameterId["LocalBaseColumnName"] = "localBaseColumnName";
+ // DPI_MeasureName, having type string
+ ParameterId["MeasureName"] = "measureName";
+ // DPI_NestedCalcField, having type string
+ ParameterId["NestedCalcField"] = "nestedCalcFn";
+ // DPI_ParameterName, having type string
+ ParameterId["ParameterName"] = "parameterName";
+ // DPI_ReferenceParam, having type string
+ ParameterId["ReferenceParam"] = "referenceParam";
+ // DPI_ReplacementFieldName, having type string
+ ParameterId["ReplacementFieldName"] = "replacementFieldName";
+ // DPI_RHSTableAlias, having type string
+ ParameterId["RHSTableAlias"] = "rhsTableAlias";
+ // DPI_SortMeasureName, having type string
+ ParameterId["SortMeasureName"] = "sortMeasureName";
+ // DPI_UniqueName, having type string
+ ParameterId["UniqueName"] = "uniqueName";
+ // DPI_ValueColumn, having type string
+ ParameterId["ValueColumn"] = "valueColumn";
+ // DPI_PairedValueColumn, having type string
+ ParameterId["PairedValueColumn"] = "pairedValueColumn";
+ // DPI_ActionIds, having type string[]
+ ParameterId["ActionIds"] = "actionIds";
+ // DPI_AddressingValues, having type string[]
+ ParameterId["AddressingValues"] = "addressingValues";
+ // DPI_AllColumns, having type string[]
+ ParameterId["AllColumns"] = "allColumns";
+ // DPI_AtTheLevelValues, having type string[]
+ ParameterId["AtTheLevelValues"] = "atTheLevelValues";
+ // DPI_AutomaticDrillFieldName, having type string[]
+ ParameterId["AutomaticDrillFieldName"] = "automaticDrillFieldName";
+ // DPI_BlendingFieldCandidates, having type string[]
+ ParameterId["BlendingFieldCandidates"] = "blendingFieldCandidates";
+ // DPI_Columns, having type string[]
+ ParameterId["Columns"] = "columns";
+ // DPI_CurrentBlendingFields, having type string[]
+ ParameterId["CurrentBlendingFields"] = "currentBlendingFields";
+ // DPI_DimensionsToSort, having type string[]
+ ParameterId["DimensionsToSort"] = "dimensionsToSort";
+ // DPI_DrillFieldVector, having type string[]
+ ParameterId["DrillFieldVector"] = "drillFieldVector";
+ // DPI_EncodingFieldVector, having type string[]
+ ParameterId["EncodingFieldVector"] = "encodingFieldVector";
+ // DPI_FieldVector, having type string[]
+ ParameterId["FieldVector"] = "fieldVector";
+ // DPI_FilterFields, having type string[]
+ ParameterId["FilterFields"] = "filterFields";
+ // DPI_LODFieldVector, having type string[]
+ ParameterId["LODFieldVector"] = "lodFieldVector";
+ // DPI_LegendColumns, having type string[]
+ ParameterId["LegendColumns"] = "legendColumns";
+ // DPI_LegendNames, having type string[]
+ ParameterId["LegendNames"] = "legendNames";
+ // DPI_NodeColumns, having type string[]
+ ParameterId["NodeColumns"] = "nodeColumns";
+ // DPI_PageFields, having type string[]
+ ParameterId["PageFields"] = "pageFields";
+ // DPI_ParamValues, having type string[]
+ ParameterId["ParamValues"] = "paramValues";
+ // DPI_RefLineFields, having type string[]
+ ParameterId["RefLineFields"] = "reflineFields";
+ // DPI_ReferencedColumns, having type string[]
+ ParameterId["ReferencedColumns"] = "referencedColumns";
+ // DPI_RelatedFieldNames, having type string[]
+ ParameterId["RelatedFieldNames"] = "relatedFieldNames";
+ // DPI_RemoveActionResults, having type string[]
+ ParameterId["RemoveActionResults"] = "removeActionResults";
+ // DPI_ResponseVector, having type string[]
+ ParameterId["ResponseVector"] = "responseVector";
+ // DPI_RestartEveryValues, having type string[]
+ ParameterId["RestartEveryValues"] = "restartEveryValues";
+ // DPI_ResultFields, having type string[]
+ ParameterId["ResultFields"] = "resultFields";
+ // DPI_SortFieldValues, having type string[]
+ ParameterId["SortFieldValues"] = "sortFieldValues";
+ // DPI_XFields, having type string[]
+ ParameterId["XFields"] = "xFields";
+ // DPI_YFields, having type string[]
+ ParameterId["YFields"] = "yFields";
+ // DPI_ConnectionFullName, having type string
+ ParameterId["ConnectionFullName"] = "connectionFullName";
+ // DPI_ConnectionFullNames, having type string[]
+ ParameterId["ConnectionFullNames"] = "connectionFullNames";
+ // DPI_BoundDataValue, having type object
+ ParameterId["BoundDataValue"] = "boundDataValue";
+ // DPI_DataValue, having type object
+ ParameterId["DataValue"] = "dataValue";
+ // DPI_DataValueIncrement, having type object
+ ParameterId["DataValueIncrement"] = "dataValueIncrement";
+ // DPI_DataValueLowerX, having type object
+ ParameterId["DataValueLowerX"] = "dataValueLowerX";
+ // DPI_DataValueLowerY, having type object
+ ParameterId["DataValueLowerY"] = "dataValueLowerY";
+ // DPI_DataValueUpperX, having type object
+ ParameterId["DataValueUpperX"] = "dataValueUpperX";
+ // DPI_DataValueUpperY, having type object
+ ParameterId["DataValueUpperY"] = "dataValueUpperY";
+ // DPI_DefaultDataValue, having type object
+ ParameterId["DefaultDataValue"] = "defaultDataValue";
+ // DPI_MaxDataValue, having type object
+ ParameterId["MaxDataValue"] = "maxDataValue";
+ // DPI_MinDataValue, having type object
+ ParameterId["MinDataValue"] = "minDataValue";
+ // DPI_ValidatedDataValue, having type object
+ ParameterId["ValidatedDataValue"] = "validatedDataValue";
+ // DPI_BinSize, having type object
+ ParameterId["BinSize"] = "binSize";
+ // DPI_LimitCount, having type object
+ ParameterId["LimitCount"] = "limitCount";
+ // DPI_DataValueList, having type object[]
+ ParameterId["DataValueList"] = "dataValueList";
+ // DPI_FieldCaptionPair, having type FieldCaptionPairPresModel
+ ParameterId["FieldCaptionPair"] = "fieldCaptionPair";
+ // DPI_FieldCaptionPairs, having type FieldCaptionPairPresModel[]
+ ParameterId["FieldCaptionPairs"] = "fieldCaptionPairs";
+ // DPI_ParameterCaptionPairs, having type FieldCaptionPairPresModel[]
+ ParameterId["ParameterCaptionPairs"] = "parameterCaptionPairs";
+ // DPI_VaryingAttributeDimensions, having type FieldCaptionPairPresModel[]
+ ParameterId["VaryingAttributeDimensions"] = "varyingAttributeDimensions";
+ // DPI_FieldCaptionPairState, having type FieldCaptionPairStatePresModel
+ ParameterId["FieldCaptionPairState"] = "fieldCaptionPairState";
+ // DPI_FieldCaptionPairStates, having type FieldCaptionPairStatePresModel[]
+ ParameterId["FieldCaptionPairStates"] = "fieldCaptionPairStates";
+ // DPI_DatasourceCaptionPair, having type DatasourceCaptionPairPresModel
+ ParameterId["DatasourceCaptionPair"] = "datasourceCaptionPair";
+ // DPI_DatasourceCaptionPairs, having type DatasourceCaptionPairPresModel[]
+ ParameterId["DatasourceCaptionPairs"] = "datasourceCaptionPairs";
+ // DPI_SheetNameInfoPair, having type SheetNameInfoPairPresModel
+ ParameterId["SheetNameInfoPair"] = "sheetNameInfoPair";
+ // DPI_SheetNameInfoPairs, having type SheetNameInfoPairPresModel[]
+ ParameterId["SheetNameInfoPairs"] = "sheetNameInfoPairs";
+ // DPI_BGActiveColor, having type string
+ ParameterId["BGActiveColor"] = "bgActiveColor";
+ // DPI_BGColor, having type string
+ ParameterId["BGColor"] = "bgColor";
+ // DPI_BGRestColor, having type string
+ ParameterId["BGRestColor"] = "bgRestColor";
+ // DPI_BorderColor, having type string
+ ParameterId["BorderColor"] = "borderColor";
+ // DPI_BorderColorBottom, having type string
+ ParameterId["BorderColorBottom"] = "borderColorBottom";
+ // DPI_BorderColorLeft, having type string
+ ParameterId["BorderColorLeft"] = "borderColorLeft";
+ // DPI_BorderColorRight, having type string
+ ParameterId["BorderColorRight"] = "borderColorRight";
+ // DPI_BorderColorTop, having type string
+ ParameterId["BorderColorTop"] = "borderColorTop";
+ // DPI_Color, having type string
+ ParameterId["Color"] = "color";
+ // DPI_Color1, having type string
+ ParameterId["Color1"] = "color1";
+ // DPI_Color2, having type string
+ ParameterId["Color2"] = "color2";
+ // DPI_DefaultColor, having type string
+ ParameterId["DefaultColor"] = "defaultColor";
+ // DPI_DistanceFontColor, having type string
+ ParameterId["DistanceFontColor"] = "distanceFontColor";
+ // DPI_FillColor, having type string
+ ParameterId["FillColor"] = "fillColor";
+ // DPI_FogColor, having type string
+ ParameterId["FogColor"] = "fogColor";
+ // DPI_HeaderColor, having type string
+ ParameterId["HeaderColor"] = "headerColor";
+ // DPI_HighlightBGColor, having type string
+ ParameterId["HighlightBGColor"] = "highlightBgColor";
+ // DPI_HighlightTextColor, having type string
+ ParameterId["HighlightTextColor"] = "highlightTextColor";
+ // DPI_HoverColor, having type string
+ ParameterId["HoverColor"] = "hoverColor";
+ // DPI_MapAttributionFill, having type string
+ ParameterId["MapAttributionFill"] = "mapAttributionFill";
+ // DPI_MapAttributionTextColor, having type string
+ ParameterId["MapAttributionTextColor"] = "mapAttributionTextColor";
+ // DPI_MapPaneBackgroundFill, having type string
+ ParameterId["MapPaneBackgroundFill"] = "mapPaneBackgroundFill";
+ // DPI_MapScaleBorderColor, having type string
+ ParameterId["MapScaleBorderColor"] = "mapScaleBorderColor";
+ // DPI_MapScaleColor, having type string
+ ParameterId["MapScaleColor"] = "mapScaleColor";
+ // DPI_MapWaitTileFill, having type string
+ ParameterId["MapWaitTileFill"] = "mapWaitTileFill";
+ // DPI_MarkColor, having type string
+ ParameterId["MarkColor"] = "markColor";
+ // DPI_NavArrowDisabledColor, having type string
+ ParameterId["NavArrowDisabledColor"] = "navArrowDisabledColor";
+ // DPI_NavArrowHoverColor, having type string
+ ParameterId["NavArrowHoverColor"] = "navArrowHoverColor";
+ // DPI_NavArrowIdleColor, having type string
+ ParameterId["NavArrowIdleColor"] = "navArrowIdleColor";
+ // DPI_NavArrowPressedColor, having type string
+ ParameterId["NavArrowPressedColor"] = "navArrowPressedColor";
+ // DPI_PaneColor, having type string
+ ParameterId["PaneColor"] = "paneColor";
+ // DPI_PressColor, having type string
+ ParameterId["PressColor"] = "pressColor";
+ // DPI_ResizeBorderColor, having type string
+ ParameterId["ResizeBorderColor"] = "resizeBorderColor";
+ // DPI_SelectBGColor, having type string
+ ParameterId["SelectBGColor"] = "selectBgColor";
+ // DPI_SelectionTextColor, having type string
+ ParameterId["SelectionTextColor"] = "selectionTextColor";
+ // DPI_SwatchBackgroundColor, having type string
+ ParameterId["SwatchBackgroundColor"] = "swatchBgColor";
+ // DPI_SwatchBorderColor, having type string
+ ParameterId["SwatchBorderColor"] = "swatchBorderColor";
+ // DPI_TabColor, having type string
+ ParameterId["TabColor"] = "tabColor";
+ // DPI_Colors, having type string[]
+ ParameterId["Colors"] = "colors";
+ // DPI_ColorMap, having type Dictionary(of string)
+ ParameterId["ColorMap"] = "colorMap";
+ // DPI_Pixmap, having type string
+ ParameterId["Pixmap"] = "pixmap";
+ // DPI_Image, having type string
+ ParameterId["Image"] = "image";
+ // DPI_OverlayImage, having type string
+ ParameterId["OverlayImage"] = "overlayImage";
+ // DPI_IconImage, having type string
+ ParameterId["IconImage"] = "iconImage";
+ // DPI_ImageList, having type string[]
+ ParameterId["ImageList"] = "imageList";
+ // DPI_ImageMap, having type Dictionary(of string)
+ ParameterId["ImageMap"] = "imageMap";
+ // DPI_UUID, having type object
+ ParameterId["UUID"] = "uuid";
+ // DPI_Nanoseconds, having type object
+ ParameterId["Nanoseconds"] = "nanoseconds";
+ // DPI_Microseconds, having type object
+ ParameterId["Microseconds"] = "microseconds";
+ // DPI_Milliseconds, having type object
+ ParameterId["Milliseconds"] = "milliseconds";
+ // DPI_TimeoutS, having type object
+ ParameterId["TimeoutS"] = "timeoutS";
+ // DPI_Minutes, having type object
+ ParameterId["Minutes"] = "minutes";
+ // DPI_Hours, having type object
+ ParameterId["Hours"] = "hours";
+ // DPI_CardType, having type CardType
+ ParameterId["CardType"] = "cardType";
+ // DPI_DocParameterID, having type string
+ ParameterId["DocParameterID"] = "type";
+ // DPI_ArgumentParam, having type string
+ ParameterId["ArgumentParam"] = "argumentParam";
+ // DPI_ArgumentParams, having type string[]
+ ParameterId["ArgumentParams"] = "argumentParams";
+ // DPI_ActionType, having type ActionType
+ ParameterId["ActionType"] = "actionType";
+ // DPI_AnnotateEnum, having type AnnotateEnum
+ ParameterId["AnnotateEnum"] = "annotateEnum";
+ // DPI_JoinType, having type SQLJoinType
+ ParameterId["JoinType"] = "joinType";
+ // DPI_SupportedJoinTypes, having type SQLJoinType[]
+ ParameterId["SupportedJoinTypes"] = "supportedJoinTypes";
+ // DPI_Rounding, having type Rounding
+ ParameterId["Rounding"] = "roundingEnum";
+ // DPI_BodyType, having type BodyType
+ ParameterId["BodyType"] = "bodyType";
+ // DPI_LineEnd, having type LineEnd
+ ParameterId["LineEnd"] = "lineEndEnum";
+ // DPI_LineEndSize, having type LineEndSize
+ ParameterId["LineEndSize"] = "lineEndSizeEnum";
+ // DPI_BrushSpecialFields, having type BrushSpecialFields
+ ParameterId["BrushSpecialFields"] = "specialFields";
+ // DPI_CellSizeChange, having type CellSizeChange
+ ParameterId["CellSizeChange"] = "cellSizeChange";
+ // DPI_CellType, having type CellType
+ ParameterId["CellType"] = "cellType";
+ // DPI_ConnectionAttemptResult, having type ConnectionAttemptResult
+ ParameterId["ConnectionAttemptResult"] = "connectionAttemptResult";
+ // DPI_ConnectionErrorStage, having type ConnectionErrorStage
+ ParameterId["ConnectionErrorStage"] = "connectionErrorStage";
+ // DPI_ConnectionErrorType, having type ConnectionErrorType
+ ParameterId["ConnectionErrorType"] = "connectionErrorType";
+ // DPI_DataServerConnectionResult, having type DataServerConnectionResult
+ ParameterId["DataServerConnectionResult"] = "dsConnectionResult";
+ // DPI_DropWhen, having type DropWhen
+ ParameterId["DropWhen"] = "dropWhen";
+ // DPI_DropType, having type DropFieldResult
+ ParameterId["DropType"] = "dropType";
+ // DPI_EncodingType, having type EncodingType
+ ParameterId["EncodingType"] = "encodingType";
+ // DPI_DropdownEncodingType, having type EncodingType
+ ParameterId["DropdownEncodingType"] = "dropdownEncodingType";
+ // DPI_EncodingTypes, having type EncodingType[]
+ ParameterId["EncodingTypes"] = "encodingTypes";
+ // DPI_FieldOrderType, having type FieldOrderType
+ ParameterId["FieldOrderType"] = "fieldOrderType";
+ // DPI_FilterIconType, having type FilterIconType
+ ParameterId["FilterIconType"] = "filterIconType";
+ // DPI_FilterIconTypes, having type FilterIconType[]
+ ParameterId["FilterIconTypes"] = "filterIconTypes";
+ // DPI_FloatingToolbarVis, having type FloatingToolbarVisibility
+ ParameterId["FloatingToolbarVis"] = "toolbarVisibility";
+ // DPI_FolderRole, having type FolderRole
+ ParameterId["FolderRole"] = "folderRole";
+ // DPI_LegendType, having type Enum
+ ParameterId["LegendType"] = "legendType";
+ // DPI_ForecastModelType, having type ForecastModelType
+ ParameterId["ForecastModelType"] = "forecastModelType";
+ // DPI_ForecastTrendType, having type ForecastComponentType
+ ParameterId["ForecastTrendType"] = "forecastTrendType";
+ // DPI_ForecastSeasonType, having type ForecastComponentType
+ ParameterId["ForecastSeasonType"] = "forecastSeasonType";
+ // DPI_ForecastRangeType, having type ForecastRangeType
+ ParameterId["ForecastRangeType"] = "forecastRangeType";
+ // DPI_ForecastStatus, having type ForecastStatus
+ ParameterId["ForecastStatus"] = "forecastStatus";
+ // DPI_SheetForecastStatus, having type ForecastStatus
+ ParameterId["SheetForecastStatus"] = "sheetForecastStatus";
+ // DPI_PDForecastStatusList, having type ForecastStatus[]
+ ParameterId["PDForecastStatusList"] = "paneDescriptorForecastStatusList";
+ // DPI_ForecastColumnType, having type ForecastColumnType
+ ParameterId["ForecastColumnType"] = "forecastColumnType";
+ // DPI_DataScaling, having type DataScaling
+ ParameterId["DataScaling"] = "dataScaling";
+ // DPI_GetFilterItemsJsonResponse, having type GetJsonResponseEnum
+ ParameterId["GetFilterItemsJsonResponse"] = "getFilterItemsJsonResponse";
+ // DPI_FilterSearchJsonResponse, having type GetJsonResponseEnum
+ ParameterId["FilterSearchJsonResponse"] = "filterSearchJsonResponse";
+ // DPI_FilterSearchWithIndexJsonResponse, having type GetJsonResponseEnum
+ ParameterId["FilterSearchWithIndexJsonResponse"] = "filterSearchWithIndexJsonResponse";
+ // DPI_FilterShowChildrenJsonResponse, having type GetJsonResponseEnum
+ ParameterId["FilterShowChildrenJsonResponse"] = "filterShowChildrenJsonResponse";
+ // DPI_HAlignment, having type LabelHAlignment
+ ParameterId["HAlignment"] = "horizontalLabelAlignment";
+ // DPI_JoinValidationError, having type JoinValidationError
+ ParameterId["JoinValidationError"] = "joinValidationError";
+ // DPI_NameConflictResolution, having type NameConflictResolution
+ ParameterId["NameConflictResolution"] = "nameConflictResolution";
+ // DPI_LabelDir, having type TextOrient
+ ParameterId["LabelDir"] = "labelDirection";
+ // DPI_LabelAlign, having type TextAlign
+ ParameterId["LabelAlign"] = "labelAlignment";
+ // DPI_LabelWrap, having type TextWrapMode
+ ParameterId["LabelWrap"] = "labelWrap";
+ // DPI_WrapMode, having type TextWrapMode
+ ParameterId["WrapMode"] = "wrapMode";
+ // DPI_MarkEnum, having type MarkEnum
+ ParameterId["MarkEnum"] = "markEnum";
+ // DPI_PercentMode, having type PercentMode
+ ParameterId["PercentMode"] = "percentageMode";
+ // DPI_ReferenceOptionsSet, having type ReferenceOptionsSet
+ ParameterId["ReferenceOptionsSet"] = "referenceOptionsSet";
+ // DPI_ReferenceOptionsSets, having type ReferenceOptionsSet[]
+ ParameterId["ReferenceOptionsSets"] = "referenceOptionsSets";
+ // DPI_RankType, having type RankType
+ ParameterId["RankType"] = "rankType";
+ // DPI_RankTypeValues, having type RankType[]
+ ParameterId["RankTypeValues"] = "rankTypeValues";
+ // DPI_SpecialValuesMode, having type SpecialValuesMode
+ ParameterId["SpecialValuesMode"] = "specialValuesMode";
+ // DPI_VAlignment, having type LabelVAlignment
+ ParameterId["VAlignment"] = "verticalLabelAlignment";
+ // DPI_ColorMode, having type ColorMode
+ ParameterId["ColorMode"] = "colorMode";
+ // DPI_MarkLabelsMode, having type MarkLabelsMode
+ ParameterId["MarkLabelsMode"] = "markLabelsMode";
+ // DPI_MarkLabelsScope, having type MarkLabelsScope
+ ParameterId["MarkLabelsScope"] = "markLabelsScope";
+ // DPI_MarkLabelsVisibility, having type MarkLabelsVisibility
+ ParameterId["MarkLabelsVisibility"] = "markLabelsVisibility";
+ // DPI_PrimitiveType, having type PrimitiveType
+ ParameterId["PrimitiveType"] = "primitiveType";
+ // DPI_ActualPrimitiveType, having type PrimitiveType
+ ParameterId["ActualPrimitiveType"] = "actualPrimitiveType";
+ // DPI_PrimitiveTypes, having type PrimitiveType[]
+ ParameterId["PrimitiveTypes"] = "primitiveTypes";
+ // DPI_ShapeType, having type ShapeType
+ ParameterId["ShapeType"] = "shapeType";
+ // DPI_SortType, having type SortType
+ ParameterId["SortType"] = "sortBy";
+ // DPI_SortEnd, having type SortEnd
+ ParameterId["SortEnd"] = "sortEnd";
+ // DPI_StackingMode, having type StackingMode
+ ParameterId["StackingMode"] = "stackingMode";
+ // DPI_StyleTheme, having type StyleTheme
+ ParameterId["StyleTheme"] = "styleTheme";
+ // DPI_TrendLineFitType, having type TrendLineFitType
+ ParameterId["TrendLineFitType"] = "fitType";
+ // DPI_UpdateScope, having type UpdateScope
+ ParameterId["UpdateScope"] = "updateScope";
+ // DPI_ParameterCtrlDisplayMode, having type DisplayMode
+ ParameterId["ParameterCtrlDisplayMode"] = "paramDisplayMode";
+ // DPI_ParameterCtrlDisplayFlag, having type ParameterCtrlDisplayFlag
+ ParameterId["ParameterCtrlDisplayFlag"] = "paramDisplayFlag";
+ // DPI_Included, having type QuantitativeIncludedValues
+ ParameterId["Included"] = "included";
+ // DPI_CommandsType, having type CommandsType
+ ParameterId["CommandsType"] = "commandsType";
+ // DPI_ParameterDomainType, having type DomainType
+ ParameterId["ParameterDomainType"] = "parameterDomainType";
+ // DPI_FilterDomainType, having type DomainType
+ ParameterId["FilterDomainType"] = "filterDomainType";
+ // DPI_FilterDomains, having type DomainType[]
+ ParameterId["FilterDomains"] = "filterDomains";
+ // DPI_CategoricalFilterType, having type CategoricalFilterType
+ ParameterId["CategoricalFilterType"] = "categoricalFilterType";
+ // DPI_DatePeriodType, having type DatePeriodType
+ ParameterId["DatePeriodType"] = "datePeriodType";
+ // DPI_FilterPatternType, having type PatternType
+ ParameterId["FilterPatternType"] = "filterPatternType";
+ // DPI_FilterConditionType, having type ConditionType
+ ParameterId["FilterConditionType"] = "filterConditionType";
+ // DPI_FiltersPresetType, having type PresetType
+ ParameterId["FiltersPresetType"] = "filtersPresetType";
+ // DPI_FiltersRangeType, having type RangeType
+ ParameterId["FiltersRangeType"] = "filtersRangeType";
+ // DPI_DateRangeType, having type RelativeDateRangeType
+ ParameterId["DateRangeType"] = "dateRangeType";
+ // DPI_PageFlag, having type PageNavFlags
+ ParameterId["PageFlag"] = "pageFlag";
+ // DPI_MarksToTrail, having type MarksToTrail
+ ParameterId["MarksToTrail"] = "marksToTrail";
+ // DPI_TrailType, having type TrailType
+ ParameterId["TrailType"] = "trailType";
+ // DPI_ChangePageDirection, having type ChangePageType
+ ParameterId["ChangePageDirection"] = "changeTo";
+ // DPI_AnimationControl, having type PageAnimationControl
+ ParameterId["AnimationControl"] = "animationControl";
+ // DPI_LinePattern, having type LinePattern
+ ParameterId["LinePattern"] = "linePattern";
+ // DPI_LineCap, having type LineCap
+ ParameterId["LineCap"] = "lineCap";
+ // DPI_LineJoin, having type LineJoin
+ ParameterId["LineJoin"] = "lineJoin";
+ // DPI_LineAlignment, having type LineAlignment
+ ParameterId["LineAlignment"] = "lineAlignment";
+ // DPI_FillMode, having type FillMode
+ ParameterId["FillMode"] = "fillMode";
+ // DPI_CursorShape, having type CursorShape
+ ParameterId["CursorShape"] = "cursorShape";
+ // DPI_ShowMeCommandType, having type ShowMeCommandType
+ ParameterId["ShowMeCommandType"] = "showMeCommandType";
+ // DPI_ShelfIconType, having type ShelfIconType
+ ParameterId["ShelfIconType"] = "shelfIconType";
+ // DPI_ShelfIconTypes, having type ShelfIconType[]
+ ParameterId["ShelfIconTypes"] = "shelfIconTypes";
+ // DPI_ItemDrawStyle, having type ItemDrawStyle
+ ParameterId["ItemDrawStyle"] = "itemDrawStyle";
+ // DPI_ScaleMode, having type ScaleMode
+ ParameterId["ScaleMode"] = "pageScaleMode";
+ // DPI_PageOrientationOption, having type PageOrientation
+ ParameterId["PageOrientationOption"] = "pageOrientationOption";
+ // DPI_PageSizeOption, having type PageSizeOption
+ ParameterId["PageSizeOption"] = "pageSizeOption";
+ // DPI_SortRegionType, having type SortRegionType
+ ParameterId["SortRegionType"] = "sortRegion";
+ // DPI_LegendItemLayout, having type LegendItemLayout
+ ParameterId["LegendItemLayout"] = "legendLayout";
+ // DPI_LegendItemOrder, having type LegendItemOrder
+ ParameterId["LegendItemOrder"] = "legendOrder";
+ // DPI_VizImageRegion, having type VizImageRegion
+ ParameterId["VizImageRegion"] = "r";
+ // DPI_LegacyMenuName, having type LegacyMenuName
+ ParameterId["LegacyMenuName"] = "legacyMenuName";
+ // DPI_LegacyMenuState, having type LegacyMenuState
+ ParameterId["LegacyMenuState"] = "legacyMenuState";
+ // DPI_LegacyMenuStateList, having type LegacyMenuState[]
+ ParameterId["LegacyMenuStateList"] = "legacyMenuStates";
+ // DPI_DimensionType, having type DimensionType
+ ParameterId["DimensionType"] = "dimensionType";
+ // DPI_LayoutType, having type LayoutType
+ ParameterId["LayoutType"] = "layoutType";
+ // DPI_ShelfType, having type ShelfType
+ ParameterId["ShelfType"] = "shelfType";
+ // DPI_LastSelectionShelf, having type ShelfType
+ ParameterId["LastSelectionShelf"] = "lastShelf";
+ // DPI_SchemaViewerDataSourceType, having type SchemaViewerDataSourceType
+ ParameterId["SchemaViewerDataSourceType"] = "schemaDatasourceType";
+ // DPI_SchemaItemType, having type SchemaItemType
+ ParameterId["SchemaItemType"] = "schemaItemType";
+ // DPI_HSMSelectionMode, having type SelectionMode
+ ParameterId["HSMSelectionMode"] = "hsmSelectionMode";
+ // DPI_HSMDefaultMemberType, having type DefaultMemberType
+ ParameterId["HSMDefaultMemberType"] = "hsmDefaultMemberType";
+ // DPI_HSMNotificationType, having type NotificationType
+ ParameterId["HSMNotificationType"] = "hsmNotificationType";
+ // DPI_HSMSelectionRequestType, having type SelectionRequestType
+ ParameterId["HSMSelectionRequestType"] = "hsmSelectionRequestType";
+ // DPI_HSMMemberSelectRequestType, having type MemberSelectRequestType
+ ParameterId["HSMMemberSelectRequestType"] = "hsmMemberSelectRequestType";
+ // DPI_PivotStrategy, having type FieldPivotStrategy
+ ParameterId["PivotStrategy"] = "pivotStrategy";
+ // DPI_AliasType, having type AliasType
+ ParameterId["AliasType"] = "aliasType";
+ // DPI_DSODimensionSortOrder, having type DataSourceOrder
+ ParameterId["DSODimensionSortOrder"] = "dsoDimensionSortOrder";
+ // DPI_DSOMeasureSortOrder, having type DataSourceOrder
+ ParameterId["DSOMeasureSortOrder"] = "dsoMeasureSortOrder";
+ // DPI_DSOSortOrder, having type DataSourceOrder
+ ParameterId["DSOSortOrder"] = "dsoSortOrder";
+ // DPI_VTAggType, having type VTAggType
+ ParameterId["VTAggType"] = "vtAggregation";
+ // DPI_FieldTypeIconSet, having type FieldTypeIconSet
+ ParameterId["FieldTypeIconSet"] = "fieldIconSet";
+ // DPI_VisualPart, having type VisualPart
+ ParameterId["VisualPart"] = "visualPart";
+ // DPI_DefaultMapToolEnum, having type MapToolSelection
+ ParameterId["DefaultMapToolEnum"] = "defaultMapToolEnum";
+ // DPI_DefaultMapUnitEnum, having type MapUnitSelectionEnum
+ ParameterId["DefaultMapUnitEnum"] = "defaultMapUnitEnum";
+ // DPI_SceneModelDetail, having type Detail
+ ParameterId["SceneModelDetail"] = "sceneModelDetailEnum";
+ // DPI_SceneModelHitType, having type HitType
+ ParameterId["SceneModelHitType"] = "sceneModelHitType";
+ // DPI_HitTestStyle, having type HitTestStyle
+ ParameterId["HitTestStyle"] = "hitTestStyle";
+ // DPI_MarkState, having type MarkState
+ ParameterId["MarkState"] = "markState";
+ // DPI_SheetType, having type SheetType
+ ParameterId["SheetType"] = "sheetType";
+ // DPI_DragSource, having type DragDropType
+ ParameterId["DragSource"] = "dragSource";
+ // DPI_DropTarget, having type DragDropType
+ ParameterId["DropTarget"] = "dropTarget";
+ // DPI_ShelfDropAction, having type ShelfDropAction
+ ParameterId["ShelfDropAction"] = "shelfDropAction";
+ // DPI_ShelfDropContext, having type ShelfDropContext
+ ParameterId["ShelfDropContext"] = "shelfDropContext";
+ // DPI_FilterSelectionTracking, having type SelectionTracking
+ ParameterId["FilterSelectionTracking"] = "filterSelectionTracking";
+ // DPI_FilterUpdateType, having type FilterUpdateType
+ ParameterId["FilterUpdateType"] = "filterUpdateType";
+ // DPI_FilterUpdateQualifierType, having type FilterUpdateQualifierType
+ ParameterId["FilterUpdateQualifierType"] = "filterUpdateQualifierType";
+ // DPI_ParameterError, having type ParameterError
+ ParameterId["ParameterError"] = "parameterError";
+ // DPI_SelectionType, having type SelectionType
+ ParameterId["SelectionType"] = "selectionType";
+ // DPI_SelectionUpdateType, having type SelectionUpdateType
+ ParameterId["SelectionUpdateType"] = "selectionUpdateType";
+ // DPI_SelectOptions, having type SelectOptions
+ ParameterId["SelectOptions"] = "selectOptions";
+ // DPI_WhitespaceSelectionBehavior, having type WhitespaceSelectionBehavior
+ ParameterId["WhitespaceSelectionBehavior"] = "whitespaceSelectionBehavior";
+ // DPI_AxisOrientation, having type Orientation
+ ParameterId["AxisOrientation"] = "axisOrientation";
+ // DPI_DecimalMode, having type DecimalMode
+ ParameterId["DecimalMode"] = "decimalMode";
+ // DPI_ActivationMethod, having type ActivationMethod
+ ParameterId["ActivationMethod"] = "activation";
+ // DPI_SourceType, having type SourceType
+ ParameterId["SourceType"] = "sourceType";
+ // DPI_OnClear, having type OnClear
+ ParameterId["OnClear"] = "onClear";
+ // DPI_MergeOrSplit, having type MergeOrSplit
+ ParameterId["MergeOrSplit"] = "mergeOrSplit";
+ // DPI_FilterMode, having type FilterMode
+ ParameterId["FilterMode"] = "filterMode";
+ // DPI_FilterType, having type FilterType
+ ParameterId["FilterType"] = "filterType";
+ // DPI_ZoneType, having type ZoneType
+ ParameterId["ZoneType"] = "zoneType";
+ // DPI_ZoneLayoutType, having type ZoneLayoutType
+ ParameterId["ZoneLayoutType"] = "zoneLayoutType";
+ // DPI_QuickTableCalcType, having type QuickTableCalcCommandType
+ ParameterId["QuickTableCalcType"] = "quickTableCalcType";
+ // DPI_TableCalcCommandType, having type TableCalcCommandType
+ ParameterId["TableCalcCommandType"] = "tableCalcCommandType";
+ // DPI_TableCalcAddressType, having type TableCalcAddressCommandType
+ ParameterId["TableCalcAddressType"] = "tableCalcAddressType";
+ // DPI_MarkLayoutPrimitive, having type Primitive
+ ParameterId["MarkLayoutPrimitive"] = "markLayoutPrimitive";
+ // DPI_MarkLayoutVizType, having type VizType
+ ParameterId["MarkLayoutVizType"] = "markLayoutVizType";
+ // DPI_MarkAlignment, having type MarkAlignment
+ ParameterId["MarkAlignment"] = "markAlignment";
+ // DPI_ModifyZoneZOrderType, having type ModifyZoneZOrderCommandType
+ ParameterId["ModifyZoneZOrderType"] = "modifyZoneZOrderType";
+ // DPI_TextRegionHAlign, having type TextRegionHAlign
+ ParameterId["TextRegionHAlign"] = "halign";
+ // DPI_TextRegionVAlign, having type TextRegionVAlign
+ ParameterId["TextRegionVAlign"] = "valign";
+ // DPI_PathElement, having type PathElement
+ ParameterId["PathElement"] = "pathElement";
+ // DPI_PathElements, having type PathElement[]
+ ParameterId["PathElements"] = "pathElements";
+ // DPI_RenderMode, having type RenderMode
+ ParameterId["RenderMode"] = "renderMode";
+ // DPI_FontStyle, having type TableauFontStyle
+ ParameterId["FontStyle"] = "fontStyle";
+ // DPI_FontWeight, having type FontWeight
+ ParameterId["FontWeight"] = "fontWeight";
+ // DPI_TextDecoration, having type TextDecoration
+ ParameterId["TextDecoration"] = "textDecoration";
+ // DPI_BorderStyle, having type BorderStyle
+ ParameterId["BorderStyle"] = "borderStyle";
+ // DPI_BorderStyleTop, having type BorderStyle
+ ParameterId["BorderStyleTop"] = "borderStyleTop";
+ // DPI_BorderStyleRight, having type BorderStyle
+ ParameterId["BorderStyleRight"] = "borderStyleRight";
+ // DPI_BorderStyleBottom, having type BorderStyle
+ ParameterId["BorderStyleBottom"] = "borderStyleBottom";
+ // DPI_BorderStyleLeft, having type BorderStyle
+ ParameterId["BorderStyleLeft"] = "borderStyleLeft";
+ // DPI_FloatingToolbarVisibility, having type FloatingToolbarVisibility
+ ParameterId["FloatingToolbarVisibility"] = "floatingToolbarVisibility";
+ // DPI_GeoSearchVisibility, having type GeoSearchVisibility
+ ParameterId["GeoSearchVisibility"] = "geographicSearchVisibility";
+ // DPI_MapScaleVisibility, having type MapScaleVisibility
+ ParameterId["MapScaleVisibility"] = "mapScaleVisibility";
+ // DPI_VizNavigationSetting, having type VizNavigationSetting
+ ParameterId["VizNavigationSetting"] = "vizNavigationSetting";
+ // DPI_AutoDrillVisibility, having type AutoDrillVisibility
+ ParameterId["AutoDrillVisibility"] = "autoDrillVisibility";
+ // DPI_ClientUIMetricType, having type ClientUIMetricType
+ ParameterId["ClientUIMetricType"] = "clientUiMetricType";
+ // DPI_SheetScrollDirection, having type SheetScrollDirection
+ ParameterId["SheetScrollDirection"] = "sheetScrollDirection";
+ // DPI_SizeMode, having type SizeMode
+ ParameterId["SizeMode"] = "sizeMode";
+ // DPI_PerspectiveAggregate, having type PerspectiveAggregate
+ ParameterId["PerspectiveAggregate"] = "perspectiveAggregation";
+ // DPI_StyleAttribute, having type StyleAttribute
+ ParameterId["StyleAttribute"] = "styleAttribute";
+ // DPI_StyleAttributes, having type StyleAttribute[]
+ ParameterId["StyleAttributes"] = "styleAttributes";
+ // DPI_StyleElement, having type StyleElement
+ ParameterId["StyleElement"] = "styleElement";
+ // DPI_StyleDataClass, having type StyleDataClass
+ ParameterId["StyleDataClass"] = "styleClass";
+ // DPI_StyleFieldScope, having type StyleFieldScope
+ ParameterId["StyleFieldScope"] = "styleScope";
+ // DPI_FormatControlType, having type FormatControlType
+ ParameterId["FormatControlType"] = "formatType";
+ // DPI_LineInterpolationMode, having type LineInterpolationMode
+ ParameterId["LineInterpolationMode"] = "lineInterpolationMode";
+ // DPI_LineMarkerPosition, having type LineMarkerPosition
+ ParameterId["LineMarkerPosition"] = "lineMarkerPosition";
+ // DPI_MarkersMode, having type MarkMarkersMode
+ ParameterId["MarkersMode"] = "markersMode";
+ // DPI_AppConfigEnum, having type AppConfigEnum
+ ParameterId["AppConfigEnum"] = "appConfigEnum";
+ // DPI_ColorPaletteType, having type ColorPaletteType
+ ParameterId["ColorPaletteType"] = "colorPaletteType";
+ // DPI_ExtractType, having type ExtractType
+ ParameterId["ExtractType"] = "extractType";
+ // DPI_ActivityDisposition, having type ActivityDisposition
+ ParameterId["ActivityDisposition"] = "activityDisposition";
+ // DPI_ActivityResult, having type ActivityResult
+ ParameterId["ActivityResult"] = "activityResult";
+ // DPI_TooltipMode, having type TooltipMode
+ ParameterId["TooltipMode"] = "tooltipMode";
+ // DPI_RuntimeOutput, having type RuntimeOutput
+ ParameterId["RuntimeOutput"] = "runtimeOutput";
+ // DPI_AnalyticsObjectType, having type AnalyticsObjectType
+ ParameterId["AnalyticsObjectType"] = "analyticsObjectType";
+ // DPI_UIAutomationStatus, having type UIAutomationCommandStatus
+ ParameterId["UIAutomationStatus"] = "uiAutomationStatus";
+ // DPI_TableViewDataType, having type TableViewDataType
+ ParameterId["TableViewDataType"] = "tableViewerDataType";
+ // DPI_UnitsFormat, having type UnitsFormatEnum
+ ParameterId["UnitsFormat"] = "unitsFormat";
+ // DPI_FilterLimitType, having type LimitType
+ ParameterId["FilterLimitType"] = "filterLimitType";
+ // DPI_DistributionSelectedType, having type DistributionType
+ ParameterId["DistributionSelectedType"] = "distributionSelectedType";
+ // DPI_DistributionType, having type DistributionType
+ ParameterId["DistributionType"] = "distributionType";
+ // DPI_TranslatedDistributionType, having type TranslatedDistributionTypePresModel
+ ParameterId["TranslatedDistributionType"] = "translatedDistributionType";
+ // DPI_TranslatedDistributionTypes, having type TranslatedDistributionTypePresModel[]
+ ParameterId["TranslatedDistributionTypes"] = "translatedDistributionTypes";
+ // DPI_RefLineFormulaGroup, having type FormulaGroup
+ ParameterId["RefLineFormulaGroup"] = "reflineFormulaGroup";
+ // DPI_ReferenceLineScopeType, having type ScopeType
+ ParameterId["ReferenceLineScopeType"] = "referenceLineScopeType";
+ // DPI_StDevType, having type StDevType
+ ParameterId["StDevType"] = "stdevType";
+ // DPI_ShowBounds, having type ShowBounds
+ ParameterId["ShowBounds"] = "showBounds";
+ // DPI_BoxplotWhiskerType, having type BoxplotWhiskerType
+ ParameterId["BoxplotWhiskerType"] = "boxplotWhiskerType";
+ // DPI_ReferenceLineLabelType, having type LabelType
+ ParameterId["ReferenceLineLabelType"] = "referenceLineLabelType";
+ // DPI_PairedReferenceLineLabelType, having type LabelType
+ ParameterId["PairedReferenceLineLabelType"] = "pairedReferenceLineLabelType";
+ // DPI_ConfidenceIntervalSelectedState, having type ConfidenceIntervalState
+ ParameterId["ConfidenceIntervalSelectedState"] = "confidenceIntervalSelectedState";
+ // DPI_ConfidenceIntervalState, having type ConfidenceIntervalState
+ ParameterId["ConfidenceIntervalState"] = "confidenceIntervalState";
+ // DPI_TranslatedLabelType, having type TranslatedLabelTypePresModel
+ ParameterId["TranslatedLabelType"] = "translatedLabelType";
+ // DPI_ReferenceLineValidLabelTypes, having type TranslatedLabelTypePresModel[]
+ ParameterId["ReferenceLineValidLabelTypes"] = "validReferenceLineLabelTypes";
+ // DPI_ReferenceLineFormulaType, having type FormulaType
+ ParameterId["ReferenceLineFormulaType"] = "referenceLineFormulaType";
+ // DPI_PairedReferenceLineFormulaType, having type FormulaType
+ ParameterId["PairedReferenceLineFormulaType"] = "pairedReferenceLineFormulaType";
+ // DPI_TranslatedFormulaType, having type TranslatedFormulaTypePresModel
+ ParameterId["TranslatedFormulaType"] = "translatedFormulaType";
+ // DPI_ReferenceLineValidFormulaTypes, having type TranslatedFormulaTypePresModel[]
+ ParameterId["ReferenceLineValidFormulaTypes"] = "validReferenceLineFormulaTypes";
+ // DPI_ReferenceLineValidPairedFormulaTypes, having type TranslatedFormulaTypePresModel[]
+ ParameterId["ReferenceLineValidPairedFormulaTypes"] = "validReferenceLinePairedFormulaTypes";
+ // DPI_TranslatedConfidenceIntervalState, having type TranslatedConfidenceIntervalStatePresModel
+ ParameterId["TranslatedConfidenceIntervalState"] = "translatedConfidenceIntervalState";
+ // DPI_TranslatedConfidenceIntervalStates, having type TranslatedConfidenceIntervalStatePresModel[]
+ ParameterId["TranslatedConfidenceIntervalStates"] = "translatedConfidenceIntervalStates";
+ // DPI_TranslatedStDevType, having type TranslatedStDevTypePresModel
+ ParameterId["TranslatedStDevType"] = "translatedStdevType";
+ // DPI_TranslatedStDevTypes, having type TranslatedStDevTypePresModel[]
+ ParameterId["TranslatedStDevTypes"] = "translatedStdevTypes";
+ // DPI_ReferenceLineLODCalcType, having type LODCalcType
+ ParameterId["ReferenceLineLODCalcType"] = "referenceLineLodCalcType";
+ // DPI_ValueDomainType, having type ValueDomainType
+ ParameterId["ValueDomainType"] = "valueDomainType";
+ // DPI_ValueDomainTypes, having type ValueDomainType[]
+ ParameterId["ValueDomainTypes"] = "valueDomainTypes";
+ // DPI_OperationType, having type OperationType
+ ParameterId["OperationType"] = "operationType";
+ // DPI_OperationTypes, having type OperationType[]
+ ParameterId["OperationTypes"] = "operationTypes";
+ // DPI_ConnectionTypeCategory, having type ConnectionTypeCategory
+ ParameterId["ConnectionTypeCategory"] = "connectionTypeCategory";
+ // DPI_ConnectionTypeGroup, having type ConnectionTypeGroup
+ ParameterId["ConnectionTypeGroup"] = "connectionTypeGroup";
+ // DPI_CommandRedirectType, having type CommandRedirectType
+ ParameterId["CommandRedirectType"] = "commandRedirectType";
+ // DPI_CustomSplitMode, having type SplitMode
+ ParameterId["CustomSplitMode"] = "customSplitMode";
+ // DPI_CustomSplitSeparatorType, having type SeparatorType
+ ParameterId["CustomSplitSeparatorType"] = "customSplitSeparatorType";
+ // DPI_LevelSelectionState, having type LevelSelectionState
+ ParameterId["LevelSelectionState"] = "levelSelectionState";
+ // DPI_LevelSelectionStates, having type LevelSelectionState[]
+ ParameterId["LevelSelectionStates"] = "levelSelectionStates";
+ // DPI_SourceDestIcon, having type SourceDestIcon
+ ParameterId["SourceDestIcon"] = "sourceDestIcon";
+ // DPI_LegendLayout, having type LegendLayout
+ ParameterId["LegendLayout"] = "pageLegendLayout";
+ // DPI_ImagesEditResultCode, having type ImagesEditResultCode
+ ParameterId["ImagesEditResultCode"] = "imagesEditResultCode";
+ // DPI_CalculationContext, having type CalculationContext
+ ParameterId["CalculationContext"] = "calculationContext";
+ // DPI_WorkgroupPublishErrorType, having type WorkgroupPublishErrorType
+ ParameterId["WorkgroupPublishErrorType"] = "workgroupPublishErrorType";
+ // DPI_IsParameter, having type TriBool
+ ParameterId["IsParameter"] = "isParameter";
+ // DPI_AddressingState, having type WidgetState
+ ParameterId["AddressingState"] = "addressingState";
+ // DPI_AllPagesState, having type WidgetState
+ ParameterId["AllPagesState"] = "allPagesState";
+ // DPI_AtTheLevelState, having type WidgetState
+ ParameterId["AtTheLevelState"] = "atTheLevelState";
+ // DPI_ComputeCompoundedRateState, having type WidgetState
+ ParameterId["ComputeCompoundedRateState"] = "computeCompoundedRateState";
+ // DPI_CustomNullIfIncompleteState, having type WidgetState
+ ParameterId["CustomNullIfIncompleteState"] = "customNullIfIncompleteState";
+ // DPI_NestedCalcsState, having type WidgetState
+ ParameterId["NestedCalcsState"] = "nestedCalcsState";
+ // DPI_RankTypeState, having type WidgetState
+ ParameterId["RankTypeState"] = "rankTypeState";
+ // DPI_ReferenceOptionsState, having type WidgetState
+ ParameterId["ReferenceOptionsState"] = "referenceOptionsState";
+ // DPI_RestartEveryState, having type WidgetState
+ ParameterId["RestartEveryState"] = "restartEveryState";
+ // DPI_SortAggState, having type WidgetState
+ ParameterId["SortAggState"] = "sortAggState";
+ // DPI_SortState, having type WidgetState
+ ParameterId["SortState"] = "sortState";
+ // DPI_TableCalcTypeState, having type WidgetState
+ ParameterId["TableCalcTypeState"] = "tableCalcTypeState";
+ // DPI_TableCalcAssistanceWidgetState, having type WidgetState
+ ParameterId["TableCalcAssistanceWidgetState"] = "tableCalcAssistanceWidgetState";
+ // DPI_CalcNestingLevel, having type CalcNestingLevel
+ ParameterId["CalcNestingLevel"] = "calcNestingLevel";
+ // DPI_DataProviderType, having type DataProviderType
+ ParameterId["DataProviderType"] = "dataProviderType";
+ // DPI_HeuristicCommandReinterpretation, having type HeuristicCommandReinterpretation
+ ParameterId["HeuristicCommandReinterpretation"] = "heuristicCommandReinterpretation";
+ // DPI_ExtractRefreshStatus, having type ExtractRefreshStatus
+ ParameterId["ExtractRefreshStatus"] = "extractRefreshStatus";
+ // DPI_RichTextEditorWidgetKey, having type RichTextEditorWidgetKey
+ ParameterId["RichTextEditorWidgetKey"] = "richTextEditorWidgetKey";
+ // DPI_RichTextWidgetKeys, having type RichTextEditorWidgetKey[]
+ ParameterId["RichTextWidgetKeys"] = "richTextWidgetKeys";
+ // DPI_TypeOfFormatItem, having type TypeOfFormatItem
+ ParameterId["TypeOfFormatItem"] = "typeOfFormatItem";
+ // DPI_TypeOfFormatContainer, having type TypeOfFormatContainer
+ ParameterId["TypeOfFormatContainer"] = "typeOfFormatContainer";
+ // DPI_TypeOfFormatControl, having type TypeOfFormatControl
+ ParameterId["TypeOfFormatControl"] = "typeOfFormatControl";
+ // DPI_FormatWidgetKey, having type FormatWidgetKey
+ ParameterId["FormatWidgetKey"] = "formatWidgetKey";
+ // DPI_ColorSwatchType, having type ColorSwatchType
+ ParameterId["ColorSwatchType"] = "formatColorSwatchType";
+ // DPI_PickerType, having type PickerType
+ ParameterId["PickerType"] = "pickerType";
+ // DPI_ExtractHistoryRefreshType, having type RefreshType
+ ParameterId["ExtractHistoryRefreshType"] = "extractHistoryRefreshTypeEnum";
+ // DPI_AxisFoldState, having type AxisFoldState
+ ParameterId["AxisFoldState"] = "axisFoldState";
+ // DPI_TickMarkSpacingUnits, having type TickSpacingUnits
+ ParameterId["TickMarkSpacingUnits"] = "tickSpacingUnits";
+ // DPI_TickMarkState, having type TickMarkState
+ ParameterId["TickMarkState"] = "tickMarkState";
+ // DPI_AxisRangeType, having type AxisRangeType
+ ParameterId["AxisRangeType"] = "axisRangeType";
+ // DPI_ScaleType, having type ScaleType
+ ParameterId["ScaleType"] = "scaleType";
+ // DPI_DashboardDeviceLayout, having type DashboardDeviceLayout
+ ParameterId["DashboardDeviceLayout"] = "dashboardDeviceLayout";
+ // DPI_ActivateDeviceLayout, having type DashboardDeviceLayout
+ ParameterId["ActivateDeviceLayout"] = "activateDeviceLayout";
+ // DPI_DashboardDeviceLayouts, having type DashboardDeviceLayout[]
+ ParameterId["DashboardDeviceLayouts"] = "dashboardDeviceLayouts";
+ // DPI_DeviceSource, having type DeviceSource
+ ParameterId["DeviceSource"] = "deviceSource";
+ // DPI_DashboardSizingDimension, having type DashboardSizingDimension
+ ParameterId["DashboardSizingDimension"] = "dashboardSizingDimension";
+ // DPI_GridOverlayMode, having type GridOverlayMode
+ ParameterId["GridOverlayMode"] = "gridOverlayMode";
+ // DPI_DashboardSizingMode, having type DashboardSizingMode
+ ParameterId["DashboardSizingMode"] = "dashboardSizingMode";
+ // DPI_FlipboardNavType, having type FlipboardNavType
+ ParameterId["FlipboardNavType"] = "flipboardNavType";
+ // DPI_FieldPickerDialogUseCase, having type FieldPickerDialogUseCase
+ ParameterId["FieldPickerDialogUseCase"] = "fieldPickerDialogUseCase";
+ // DPI_StartOfWeekEnum, having type SOWValue
+ ParameterId["StartOfWeekEnum"] = "startOfWeekEnum";
+ // DPI_StartOfFiscalYear, having type FYSValues
+ ParameterId["StartOfFiscalYear"] = "startOfFiscalYear";
+ // DPI_TotalsInclusionValue, having type TotalsInclusion
+ ParameterId["TotalsInclusionValue"] = "totalsInclusionValue";
+ // DPI_FormatCode, having type FormatCode
+ ParameterId["FormatCode"] = "formatCode";
+ // DPI_FindType, having type FindType
+ ParameterId["FindType"] = "findType";
+ // DPI_PerspectiveType, having type PerspectiveType
+ ParameterId["PerspectiveType"] = "perspectiveType";
+ // DPI_GeometryType, having type GeometryType
+ ParameterId["GeometryType"] = "geometryType";
+ // DPI_PaneLabelComposition, having type PaneLabelComposition
+ ParameterId["PaneLabelComposition"] = "paneLabelComposition";
+ // DPI_WarningType, having type WarningType
+ ParameterId["WarningType"] = "warningType";
+ // DPI_UIMode, having type WorkbookUIMode
+ ParameterId["UIMode"] = "uiMode";
+ // DPI_MenuItemId, having type TopLevelMenuItem
+ ParameterId["MenuItemId"] = "menuItemId";
+ // DPI_CommandReturn, having type object
+ ParameterId["CommandReturn"] = "commandReturn";
+ // DPI_LegacyPresModel, having type object
+ ParameterId["LegacyPresModel"] = "legacyPresModel";
+ // DPI_PresentationModel, having type object
+ ParameterId["PresentationModel"] = "presModelHolder";
+ // DPI_Event, having type object
+ ParameterId["Event"] = "eventContainer";
+ // DPI_LineStyle, having type Array
+ ParameterId["LineStyle"] = "lineStyle";
+ // DPI_StrokeStyle, having type Array
+ ParameterId["StrokeStyle"] = "strokeStyle";
+ // DPI_Schema, having type Array
+ ParameterId["Schema"] = "schema";
+ // DPI_StartTuple, having type Array
+ ParameterId["StartTuple"] = "startTuple";
+ // DPI_EndTuple, having type Array
+ ParameterId["EndTuple"] = "endTuple";
+ // DPI_Tuple, having type Array
+ ParameterId["Tuple"] = "tuple";
+ // DPI_Tuples, having type Array[]
+ ParameterId["Tuples"] = "tuples";
+ // DPI_CustomDomainTuples, having type Array[]
+ ParameterId["CustomDomainTuples"] = "customDomainTuples";
+ // DPI_UpdatedTuples, having type Array[]
+ ParameterId["UpdatedTuples"] = "updatedTuples";
+ // DPI_Table, having type Array
+ ParameterId["Table"] = "table";
+ // DPI_AliasedValue, having type Array
+ ParameterId["AliasedValue"] = "valueAlias";
+ // DPI_FirstAliasedValue, having type Array
+ ParameterId["FirstAliasedValue"] = "firstAlisedValue";
+ // DPI_MaximumRange, having type Array
+ ParameterId["MaximumRange"] = "maximumRangeValue";
+ // DPI_MinimumRange, having type Array
+ ParameterId["MinimumRange"] = "minimumRangeValue";
+ // DPI_SecondAliasedValue, having type Array
+ ParameterId["SecondAliasedValue"] = "secondAlisedValue";
+ // DPI_AliasedSelectionList, having type Array[]
+ ParameterId["AliasedSelectionList"] = "aliasedSelectionList";
+ // DPI_AliasedValues, having type Array[]
+ ParameterId["AliasedValues"] = "valuesAliases";
+ // DPI_VerboseAliasedRangeMax, having type Array
+ ParameterId["VerboseAliasedRangeMax"] = "verboseAliasedRangeMax";
+ // DPI_VerboseAliasedValue, having type Array
+ ParameterId["VerboseAliasedValue"] = "verboseAliasedValue";
+ // DPI_MultiBucket, having type MultiBucket
+ ParameterId["MultiBucket"] = "xValues";
+ // DPI_PageName, having type PageName
+ ParameterId["PageName"] = "pageName";
+ // DPI_Selector, having type object
+ ParameterId["Selector"] = "selector";
+ // DPI_PaneId, having type object
+ ParameterId["PaneId"] = "paneId";
+ // DPI_PaneIds, having type PaneId[]
+ ParameterId["PaneIds"] = "paneIds";
+ // DPI_ImageRegionInfo, having type object
+ ParameterId["ImageRegionInfo"] = "vizRegionRect";
+ // DPI_ImageRegionInfoList, having type object[]
+ ParameterId["ImageRegionInfoList"] = "vizRegionRectList";
+ // DPI_VisualID, having type VisualID
+ ParameterId["VisualID"] = "visualId";
+ // DPI_VisualIDPM, having type VisualIDPresModel
+ ParameterId["VisualIDPM"] = "visualIdPresModel";
+ // DPI_InvalidSheets, having type VisualIDPresModel[]
+ ParameterId["InvalidSheets"] = "invalidSheets";
+ // DPI_VisualIDPMs, having type VisualIDPresModel[]
+ ParameterId["VisualIDPMs"] = "visualIds";
+ // DPI_SheetPathPM, having type SheetPathPresModel
+ ParameterId["SheetPathPM"] = "sheetPath";
+ // DPI_CapturedSheetPM, having type SheetPathPresModel
+ ParameterId["CapturedSheetPM"] = "capturedSheetPm";
+ // DPI_CurrentSheetPM, having type SheetPathPresModel
+ ParameterId["CurrentSheetPM"] = "currentSheetPm";
+ // DPI_DashboardPM, having type SheetPathPresModel
+ ParameterId["DashboardPM"] = "dashboardPm";
+ // DPI_NewSheetPM, having type SheetPathPresModel
+ ParameterId["NewSheetPM"] = "newSheetPm";
+ // DPI_SheetNamePM, having type SheetPathPresModel
+ ParameterId["SheetNamePM"] = "sheetNamePm";
+ // DPI_SheetPM, having type SheetPathPresModel
+ ParameterId["SheetPM"] = "sheetPm";
+ // DPI_SourceDashboardPM, having type SheetPathPresModel
+ ParameterId["SourceDashboardPM"] = "sourceDashboardPm";
+ // DPI_SourceSheetPM, having type SheetPathPresModel
+ ParameterId["SourceSheetPM"] = "sourceSheetPm";
+ // DPI_TargetSheetPM, having type SheetPathPresModel
+ ParameterId["TargetSheetPM"] = "targetSheetPm";
+ // DPI_WorksheetPM, having type SheetPathPresModel
+ ParameterId["WorksheetPM"] = "worksheetPm";
+ // DPI_ModifiedSheets, having type SheetPathPresModel[]
+ ParameterId["ModifiedSheets"] = "modifiedSheets";
+ // DPI_DataColumn, having type DataColumnPresModel
+ ParameterId["DataColumn"] = "dataColumn";
+ // DPI_DataColumns, having type DataColumnPresModel[]
+ ParameterId["DataColumns"] = "dataColumns";
+ // DPI_Addresses, having type DataColumnPresModel[]
+ ParameterId["Addresses"] = "addresses";
+ // DPI_EncodingColumns, having type Dictionary(of DataColumnPresModel)
+ ParameterId["EncodingColumns"] = "encodingColumns";
+ // DPI_TextRunColumns, having type Dictionary(of DataColumnPresModel)
+ ParameterId["TextRunColumns"] = "textRunColumns";
+ // DPI_TextStyleColumns, having type Dictionary(of DataColumnPresModel)
+ ParameterId["TextStyleColumns"] = "textStyleColumns";
+ // DPI_NamedDataColumn, having type NamedDataColumnPresModel
+ ParameterId["NamedDataColumn"] = "namedDataColumn";
+ // DPI_NamedDataColumns, having type NamedDataColumnPresModel[]
+ ParameterId["NamedDataColumns"] = "namedDataColumns";
+ // DPI_DataTable, having type DataTablePresModel
+ ParameterId["DataTable"] = "dataTable";
+ // DPI_ActionSpecification, having type None
+ ParameterId["ActionSpecification"] = "actionSpec";
+ // DPI_Column, having type Column
+ ParameterId["Column"] = "columnContext";
+ // DPI_SetFunction, having type SetFunction
+ ParameterId["SetFunction"] = "setFunction";
+ // DPI_SetFunctions, having type SetFunctions
+ ParameterId["SetFunctions"] = "setFunctions";
+ // DPI_VisualProfileShowMe, having type VisualProfileShowMe
+ ParameterId["VisualProfileShowMe"] = "vpsm";
+ // DPI_DataSourcePtr, having type DataSource
+ ParameterId["DataSourcePtr"] = "datasourcePtr";
+ // DPI_WorkgroupConnection, having type WorkgroupConnection
+ ParameterId["WorkgroupConnection"] = "workgroupConnection";
+ // DPI_Authenticator, having type AuthenticatorRawPtr
+ ParameterId["Authenticator"] = "authenticator";
+ // DPI_UpgradeAttr, having type UpgradeAttr
+ ParameterId["UpgradeAttr"] = "upgradeAttr";
+ // DPI_ExtractAttr, having type ExtractAttr
+ ParameterId["ExtractAttr"] = "extractAttr";
+ // DPI_RefreshAttr, having type RefreshAttr
+ ParameterId["RefreshAttr"] = "refreshAttr";
+ // DPI_ContextSpecification, having type ContextSpecification
+ ParameterId["ContextSpecification"] = "contextSpecification";
+ // DPI_SchemaViewerSelector, having type SchemaViewerSelectorPtr
+ ParameterId["SchemaViewerSelector"] = "schemaViewerSelector";
+ // DPI_Buckets, having type Buckets
+ ParameterId["Buckets"] = "buckets";
+ // DPI_LegendItems, having type MultiBuckets
+ ParameterId["LegendItems"] = "legendItems";
+ // DPI_LegendItem, having type MultiBucket
+ ParameterId["LegendItem"] = "legendItem";
+ // DPI_SourceItem, having type MultiBucket
+ ParameterId["SourceItem"] = "sourceItem";
+ // DPI_DestItem, having type MultiBucket
+ ParameterId["DestItem"] = "destItem";
+ // DPI_IQuickSortState, having type IQuickSortState
+ ParameterId["IQuickSortState"] = "quickSortState";
+ // DPI_AppBuildDate, having type DateTime
+ ParameterId["AppBuildDate"] = "appBuildDate";
+ // DPI_ForecastDateRangeEnd, having type DateTime
+ ParameterId["ForecastDateRangeEnd"] = "forecastDateRangeEnd";
+ // DPI_ForecastDateRangeStart, having type DateTime
+ ParameterId["ForecastDateRangeStart"] = "forecastDateRangeStart";
+ // DPI_LastModified, having type DateTime
+ ParameterId["LastModified"] = "lastModified";
+ // DPI_SearchDomainPtr, having type MultiDomain
+ ParameterId["SearchDomainPtr"] = "searchDomainPtr";
+ // DPI_ResultsDomainPtr, having type MultiDomain
+ ParameterId["ResultsDomainPtr"] = "resultsDomainPtr";
+ // DPI_Actions, having type object
+ ParameterId["Actions"] = "actions";
+ // DPI_SRCommands, having type object
+ ParameterId["SRCommands"] = "selectionRelaxationCommands";
+ // DPI_Commands, having type object
+ ParameterId["Commands"] = "commands";
+ // DPI_DataTypeCommands, having type object
+ ParameterId["DataTypeCommands"] = "datatypeCommands";
+ // DPI_MultiSelectCommands, having type object
+ ParameterId["MultiSelectCommands"] = "multiselectCommands";
+ // DPI_NonVizCommands, having type object
+ ParameterId["NonVizCommands"] = "nonVizCommands";
+ // DPI_QuickFilterCommands, having type object
+ ParameterId["QuickFilterCommands"] = "quickFilterCommands";
+ // DPI_ShowMeCommands, having type object
+ ParameterId["ShowMeCommands"] = "showMeCommands";
+ // DPI_SortIndicatorMenu, having type object
+ ParameterId["SortIndicatorMenu"] = "sortIndicatorMenu";
+ // DPI_StandardCommands, having type object
+ ParameterId["StandardCommands"] = "standardCommands";
+ // DPI_VizCommands, having type object
+ ParameterId["VizCommands"] = "vizCommands";
+ // DPI_ZoneChromeCommands, having type object
+ ParameterId["ZoneChromeCommands"] = "zoneChromeCommands";
+ // DPI_CommandItem, having type CommandsItem
+ ParameterId["CommandItem"] = "commandItem";
+ // DPI_CommandItems, having type CommandsItem[]
+ ParameterId["CommandItems"] = "commandItems";
+ // DPI_Command, having type SimpleCommandsPresModel
+ ParameterId["Command"] = "simpleCommandModel";
+ // DPI_AddCommand, having type SimpleCommandsPresModel
+ ParameterId["AddCommand"] = "addSimpleCommandModel";
+ // DPI_RemoveCommand, having type SimpleCommandsPresModel
+ ParameterId["RemoveCommand"] = "removeSimpleCommandModel";
+ // DPI_AcceptCommand, having type SimpleCommandsPresModel
+ ParameterId["AcceptCommand"] = "acceptSimpleCommandModel";
+ // DPI_DeclineCommand, having type SimpleCommandsPresModel
+ ParameterId["DeclineCommand"] = "declineSimpleCommandModel";
+ // DPI_DropCommand, having type SimpleCommandsPresModel
+ ParameterId["DropCommand"] = "dropCommandModel";
+ // DPI_EditCaptionCommand, having type SimpleCommandsPresModel
+ ParameterId["EditCaptionCommand"] = "editCaptionCommandModel";
+ // DPI_FontCommand, having type SimpleCommandsPresModel
+ ParameterId["FontCommand"] = "fontCommandModel";
+ // DPI_LineStyleCommand, having type SimpleCommandsPresModel
+ ParameterId["LineStyleCommand"] = "lineStyleCommandModel";
+ // DPI_FormatCommand, having type SimpleCommandsPresModel
+ ParameterId["FormatCommand"] = "formatCommandModel";
+ // DPI_DestructorCommand, having type SimpleCommandsPresModel
+ ParameterId["DestructorCommand"] = "destructorCommand";
+ // DPI_ClearFormatCommand, having type SimpleCommandsPresModel
+ ParameterId["ClearFormatCommand"] = "clearFormatCommandModel";
+ // DPI_RichTextCommand, having type SimpleCommandsPresModel
+ ParameterId["RichTextCommand"] = "richTextCommandModel";
+ // DPI_SortIndicatorCommand, having type SimpleCommandsPresModel
+ ParameterId["SortIndicatorCommand"] = "sortIndicatorCommand";
+ // DPI_CommandList, having type SimpleCommandsPresModel[]
+ ParameterId["CommandList"] = "commandList";
+ // DPI_ParameterCtrl, having type ParameterCtrlPresModel
+ ParameterId["ParameterCtrl"] = "parameterControl";
+ // DPI_ParameterCtrls, having type ParameterCtrlPresModel[]
+ ParameterId["ParameterCtrls"] = "parameterControls";
+ // DPI_PageModel, having type PagePresModel
+ ParameterId["PageModel"] = "pageModel";
+ // DPI_PageTrailOptions, having type PageTrailOptionsPresModel
+ ParameterId["PageTrailOptions"] = "pageTrailOptions";
+ // DPI_Field, having type FieldPresModel
+ ParameterId["Field"] = "field";
+ // DPI_FieldList, having type FieldPresModel[]
+ ParameterId["FieldList"] = "fieldList";
+ // DPI_FieldColumn, having type FieldColumnPresModel
+ ParameterId["FieldColumn"] = "column";
+ // DPI_FieldColumnList, having type FieldColumnPresModel[]
+ ParameterId["FieldColumnList"] = "columnList";
+ // DPI_Parameter, having type ParameterPresModel
+ ParameterId["Parameter"] = "parameter";
+ // DPI_Dimension, having type DimensionPresModel
+ ParameterId["Dimension"] = "dimension";
+ // DPI_AttributeDimensionList, having type DimensionPresModel[]
+ ParameterId["AttributeDimensionList"] = "attributeDimensionList";
+ // DPI_RelationalTable, having type RelationalTablePresModel
+ ParameterId["RelationalTable"] = "relationalTable";
+ // DPI_DrillPath, having type DrillPathPresModel
+ ParameterId["DrillPath"] = "drillPath";
+ // DPI_FieldFolder, having type FieldFolderPresModel
+ ParameterId["FieldFolder"] = "fieldFolder";
+ // DPI_Group, having type GroupPresModel
+ ParameterId["Group"] = "group";
+ // DPI_Hierarchy, having type HierarchyPresModel
+ ParameterId["Hierarchy"] = "hierarchy";
+ // DPI_HierarchyList, having type HierarchyPresModel[]
+ ParameterId["HierarchyList"] = "hierarchyList";
+ // DPI_HierarchyMemberSelectedState, having type HierarchySelect_MemberSelectedStatePresModel
+ ParameterId["HierarchyMemberSelectedState"] = "hierarchyMemberSelectedState";
+ // DPI_HierarchySelectionChanges, having type HierarchySelect_MemberSelectedStatePresModel[]
+ ParameterId["HierarchySelectionChanges"] = "hierarchySelectionChanges";
+ // DPI_DisplayFolder, having type DisplayFolderPresModel
+ ParameterId["DisplayFolder"] = "displayFolder";
+ // DPI_DisplayFolderList, having type DisplayFolderPresModel[]
+ ParameterId["DisplayFolderList"] = "displayFolderList";
+ // DPI_DataSourceLayout, having type DataSourceLayoutPresModel
+ ParameterId["DataSourceLayout"] = "dataSourceLayout";
+ // DPI_BaseDataSource, having type BaseDataSourcePresModel
+ ParameterId["BaseDataSource"] = "baseDataSource";
+ // DPI_BaseDataSources, having type Dictionary(of BaseDataSourcePresModel)
+ ParameterId["BaseDataSources"] = "baseDataSources";
+ // DPI_DataSource, having type DataSourcePresModel
+ ParameterId["DataSource"] = "dataSource";
+ // DPI_DataSources, having type Dictionary(of DataSourcePresModel)
+ ParameterId["DataSources"] = "dataSources";
+ // DPI_SchemaViewerDataSource, having type SchemaViewerDataSourcePresModel
+ ParameterId["SchemaViewerDataSource"] = "schemaViewerDataSource";
+ // DPI_SchemaViewerDataSources, having type Dictionary(of SchemaViewerDataSourcePresModel)
+ ParameterId["SchemaViewerDataSources"] = "schemaViewerDataSources";
+ // DPI_BaseDataSchema, having type BaseDataSchemaPresModel
+ ParameterId["BaseDataSchema"] = "baseDataSchema";
+ // DPI_DataSchema, having type DataSchemaPresModel
+ ParameterId["DataSchema"] = "dataSchema";
+ // DPI_SchemaViewerDataSchema, having type SchemaViewerDataSchemaPresModel
+ ParameterId["SchemaViewerDataSchema"] = "schemaViewerDataSchema";
+ // DPI_SheetListItem, having type SheetListItemPresModel
+ ParameterId["SheetListItem"] = "sheetListItem";
+ // DPI_SheetListItems, having type SheetListItemPresModel[]
+ ParameterId["SheetListItems"] = "sheetListItems";
+ // DPI_SheetList, having type SheetListPresModel
+ ParameterId["SheetList"] = "sheetList";
+ // DPI_SizeModeOption, having type SizeModeOptionPresModel
+ ParameterId["SizeModeOption"] = "sizeModeOption";
+ // DPI_SizeModeOptions, having type SizeModeOptionPresModel[]
+ ParameterId["SizeModeOptions"] = "sizeModeOptions";
+ // DPI_DashboardSizeControl, having type DashboardSizeControlPresModel
+ ParameterId["DashboardSizeControl"] = "dashboardSizeControl";
+ // DPI_DeviceLayoutInfoItem, having type DeviceLayoutInfoItemPresModel
+ ParameterId["DeviceLayoutInfoItem"] = "deviceLayoutInfoItem";
+ // DPI_DeviceLayoutInfoItems, having type DeviceLayoutInfoItemPresModel[]
+ ParameterId["DeviceLayoutInfoItems"] = "deviceLayoutInfoItems";
+ // DPI_DeviceLayoutInfoList, having type DeviceLayoutInfoListPresModel
+ ParameterId["DeviceLayoutInfoList"] = "deviceLayoutInfoList";
+ // DPI_SpecializedDeviceLayoutItem, having type SpecializedDeviceLayoutItemPresModel
+ ParameterId["SpecializedDeviceLayoutItem"] = "specializedDeviceLayoutItem";
+ // DPI_SpecializedDeviceLayoutItems, having type SpecializedDeviceLayoutItemPresModel[]
+ ParameterId["SpecializedDeviceLayoutItems"] = "specializedDeviceLayoutItems";
+ // DPI_SpecializedDeviceLayoutList, having type SpecializedDeviceLayoutListPresModel
+ ParameterId["SpecializedDeviceLayoutList"] = "specializedDeviceLayoutList";
+ // DPI_SizeItem, having type SizeItemPresModel
+ ParameterId["SizeItem"] = "sizeItem";
+ // DPI_SizeItems, having type SizeItemPresModel[]
+ ParameterId["SizeItems"] = "sizeItems";
+ // DPI_DeviceSizesList, having type SizeItemListPresModel
+ ParameterId["DeviceSizesList"] = "deviceSizesList";
+ // DPI_PresetSizesList, having type SizeItemListPresModel
+ ParameterId["PresetSizesList"] = "presetSizesList";
+ // DPI_SizeItemList, having type SizeItemListPresModel
+ ParameterId["SizeItemList"] = "sizeItemList";
+ // DPI_SubstitutionKeyword, having type SubstitutionKeywordPresModel
+ ParameterId["SubstitutionKeyword"] = "substitutionKeyword";
+ // DPI_SubstitutionKeywords, having type SubstitutionKeywordPresModel[]
+ ParameterId["SubstitutionKeywords"] = "substitutionKeywords";
+ // DPI_SubstitutionKeywordSubList, having type SubstitutionKeywordSubListPresModel
+ ParameterId["SubstitutionKeywordSubList"] = "substitutionKeywordsSublist";
+ // DPI_SubstitutionKeywordSubLists, having type SubstitutionKeywordSubListPresModel[]
+ ParameterId["SubstitutionKeywordSubLists"] = "substitutionKeywordSublists";
+ // DPI_SubstitutionKeywordList, having type SubstitutionKeywordListPresModel
+ ParameterId["SubstitutionKeywordList"] = "substitutionKeywordsList";
+ // DPI_DeviceZoneListItem, having type DeviceZoneListItemPresModel
+ ParameterId["DeviceZoneListItem"] = "deviceZoneListItem";
+ // DPI_DeviceZoneListItems, having type DeviceZoneListItemPresModel[]
+ ParameterId["DeviceZoneListItems"] = "deviceZoneListItems";
+ // DPI_DeviceZoneList, having type DeviceZoneListPresModel
+ ParameterId["DeviceZoneList"] = "deviceZoneList";
+ // DPI_ZoneSnapLineListItem, having type ZoneSnapLineListItemPresModel
+ ParameterId["ZoneSnapLineListItem"] = "snapLineListItem";
+ // DPI_OuterHorizontalSnapLines, having type ZoneSnapLineListItemPresModel[]
+ ParameterId["OuterHorizontalSnapLines"] = "outerHorizontalSnapLines";
+ // DPI_OuterVerticalSnapLines, having type ZoneSnapLineListItemPresModel[]
+ ParameterId["OuterVerticalSnapLines"] = "outerVerticalSnapLines";
+ // DPI_InnerHorizontalSnapLines, having type ZoneSnapLineListItemPresModel[]
+ ParameterId["InnerHorizontalSnapLines"] = "innerHorizontalSnapLines";
+ // DPI_InnerVerticalSnapLines, having type ZoneSnapLineListItemPresModel[]
+ ParameterId["InnerVerticalSnapLines"] = "innerVerticalSnapLines";
+ // DPI_ZoneSnapLineList, having type ZoneSnapLineListPresModel
+ ParameterId["ZoneSnapLineList"] = "snapLineList";
+ // DPI_DashboardZoneHierarchy, having type DashboardZoneHierarchyPresModel
+ ParameterId["DashboardZoneHierarchy"] = "dashboardZoneHierarchy";
+ // DPI_DeviceZoneVisibilityListItem, having type DeviceZoneVisibilityListItemPresModel
+ ParameterId["DeviceZoneVisibilityListItem"] = "deviceZoneVisibilityListItem";
+ // DPI_DeviceZoneVisibilityListItems, having type DeviceZoneVisibilityListItemPresModel[]
+ ParameterId["DeviceZoneVisibilityListItems"] = "deviceZoneVisibilityListItems";
+ // DPI_DeviceZoneVisibilityList, having type DeviceZoneVisibilityListPresModel
+ ParameterId["DeviceZoneVisibilityList"] = "deviceZoneVisibilityList";
+ // DPI_WorksheetDataSchema, having type WorksheetDataSchemaPresModel
+ ParameterId["WorksheetDataSchema"] = "worksheetDataSchema";
+ // DPI_WorksheetDataSchemaMap, having type Dictionary(of WorksheetDataSchemaPresModel)
+ ParameterId["WorksheetDataSchemaMap"] = "worksheetDataSchemaMap";
+ // DPI_Shelf, having type ShelfPresModel
+ ParameterId["Shelf"] = "shelf";
+ // DPI_ShelfDetail, having type ShelfPresModel
+ ParameterId["ShelfDetail"] = "shelfDetail";
+ // DPI_ShelfList, having type ShelfPresModel[]
+ ParameterId["ShelfList"] = "shelfList";
+ // DPI_ShelfItem, having type ShelfItemPresModel
+ ParameterId["ShelfItem"] = "shelfItem";
+ // DPI_ShelfItems, having type ShelfItemPresModel[]
+ ParameterId["ShelfItems"] = "shelfItems";
+ // DPI_Shelves, having type ShelvesPresModel
+ ParameterId["Shelves"] = "shelves";
+ // DPI_FieldEncoding, having type FieldEncodingPresModel
+ ParameterId["FieldEncoding"] = "fieldEncoding";
+ // DPI_FieldEncodings, having type FieldEncodingPresModel[]
+ ParameterId["FieldEncodings"] = "fieldEncodings";
+ // DPI_UberTip, having type UberTipPresModel
+ ParameterId["UberTip"] = "uberTip";
+ // DPI_AnalyticsObjectDragInfo, having type AnalyticsObjectDragInfoPresModel
+ ParameterId["AnalyticsObjectDragInfo"] = "analyticsObjectDragInfo";
+ // DPI_TrendLine, having type TrendLinePresModel
+ ParameterId["TrendLine"] = "trendLine";
+ // DPI_TrendLineDialog, having type TrendLineDialogPresModel
+ ParameterId["TrendLineDialog"] = "trendLineDialog";
+ // DPI_TrendLineDescribePresModel, having type TrendLineDescribePresModel
+ ParameterId["TrendLineDescribePresModel"] = "trendLineDescribePresModel";
+ // DPI_TrendLineAOVModelPresModel, having type TrendLineAOVModelPresModel
+ ParameterId["TrendLineAOVModelPresModel"] = "trendLineAovModelPresModel";
+ // DPI_TrendLineAOVModelsPresModel, having type TrendLineAOVModelPresModel[]
+ ParameterId["TrendLineAOVModelsPresModel"] = "trendModelDescriptionVector";
+ // DPI_TrendLineLineCoefficientPresModel, having type TrendLineLineCoefficientPresModel
+ ParameterId["TrendLineLineCoefficientPresModel"] = "trendLineLineCoefficient";
+ // DPI_TrendLineLineCoefficientsPresModel, having type TrendLineLineCoefficientPresModel[]
+ ParameterId["TrendLineLineCoefficientsPresModel"] = "trendLineLineCoefficientsPresModel";
+ // DPI_TrendLineLinesPresModel, having type TrendLineLinesPresModel
+ ParameterId["TrendLineLinesPresModel"] = "trendLineLinesPresModel";
+ // DPI_TrendLineAOVPresModel, having type TrendLineAOVPresModel
+ ParameterId["TrendLineAOVPresModel"] = "trendLineAnovaPresModel";
+ // DPI_ReferenceLine, having type ReferenceLinePresModel
+ ParameterId["ReferenceLine"] = "referenceLine";
+ // DPI_ReferenceLines, having type ReferenceLinePresModel[]
+ ParameterId["ReferenceLines"] = "referenceLines";
+ // DPI_PercentileEditDataValue, having type EditDataValuePresModel
+ ParameterId["PercentileEditDataValue"] = "percentileEditDataValue";
+ // DPI_LimitEditDataValue, having type EditDataValuePresModel
+ ParameterId["LimitEditDataValue"] = "limitEditDataValue";
+ // DPI_ConfidenceLevelCombo, having type EditValueWidgetPresModel
+ ParameterId["ConfidenceLevelCombo"] = "confidenceLevelCombo";
+ // DPI_DistributionQuantilesCombo, having type EditValueWidgetPresModel
+ ParameterId["DistributionQuantilesCombo"] = "distributionQuantilesLevelCombo";
+ // DPI_PercentilesCombo, having type EditValueWidgetPresModel
+ ParameterId["PercentilesCombo"] = "distributionPercentilesLevelCombo";
+ // DPI_NumericBinSizeCombo, having type EditValueWidgetPresModel
+ ParameterId["NumericBinSizeCombo"] = "numericBinSizeCombo";
+ // DPI_FieldPickerField, having type FieldPickerFieldPresModel
+ ParameterId["FieldPickerField"] = "fieldPickerField";
+ // DPI_FieldPickerFields, having type FieldPickerFieldPresModel[]
+ ParameterId["FieldPickerFields"] = "fieldPickerFields";
+ // DPI_FieldPickerCombo, having type FieldPickerComboPresModel
+ ParameterId["FieldPickerCombo"] = "fieldPickerCombo";
+ // DPI_PairedFieldPickerCombo, having type FieldPickerComboPresModel
+ ParameterId["PairedFieldPickerCombo"] = "pairedFieldPickerCombo";
+ // DPI_ReferenceLineEditorPresModel, having type ReferenceLineEditorPresModel
+ ParameterId["ReferenceLineEditorPresModel"] = "referenceLineEditor";
+ // DPI_CloseDataSourceErrorDialogPresModel, having type CloseDataSourceErrorDialogPresModel
+ ParameterId["CloseDataSourceErrorDialogPresModel"] = "closeDsErrorDialog";
+ // DPI_EditReferenceLine, having type EditReferenceLinePresModel
+ ParameterId["EditReferenceLine"] = "editReferenceLine";
+ // DPI_EditReferenceBand, having type EditReferenceBandPresModel
+ ParameterId["EditReferenceBand"] = "editReferenceBand";
+ // DPI_EditDistribution, having type EditDistributionPresModel
+ ParameterId["EditDistribution"] = "editDistribution";
+ // DPI_DistributionPercentages, having type DistributionPercentagesPresModel
+ ParameterId["DistributionPercentages"] = "distributionPercentages";
+ // DPI_DistributionPercentiles, having type DistributionPercentilesPresModel
+ ParameterId["DistributionPercentiles"] = "distributionPercentiles";
+ // DPI_DistributionQuantiles, having type DistributionQuantilesPresModel
+ ParameterId["DistributionQuantiles"] = "distributionQuantiles";
+ // DPI_DistributionStandardDeviation, having type DistributionStandardDeviationPresModel
+ ParameterId["DistributionStandardDeviation"] = "distributionStddev";
+ // DPI_SortIndicators, having type SortIndicatorsPresModel
+ ParameterId["SortIndicators"] = "sortIndicators";
+ // DPI_SortIndicatorRegion, having type SortIndicatorRegionPresModel
+ ParameterId["SortIndicatorRegion"] = "sortIndicatorRegion";
+ // DPI_SortIndicatorRegions, having type SortIndicatorRegionPresModel[]
+ ParameterId["SortIndicatorRegions"] = "sortIndicatorRegions";
+ // DPI_SortIndicatorItem, having type SortIndicatorItemPresModel
+ ParameterId["SortIndicatorItem"] = "sortIndicatorItem";
+ // DPI_SortIndicatorItems, having type SortIndicatorItemPresModel[]
+ ParameterId["SortIndicatorItems"] = "sortIndicatorItems";
+ // DPI_BuilderConfig, having type BuilderConfigPresModel
+ ParameterId["BuilderConfig"] = "builderConfig";
+ // DPI_SheetLayoutInfo, having type SheetLayoutInfoPresModel
+ ParameterId["SheetLayoutInfo"] = "sheetLayoutInfo";
+ // DPI_AreaRect, having type RectanglePresModel
+ ParameterId["AreaRect"] = "areaRect";
+ // DPI_Border, having type RectanglePresModel
+ ParameterId["Border"] = "borderRect";
+ // DPI_BoundsRect, having type RectanglePresModel
+ ParameterId["BoundsRect"] = "boundsRect";
+ // DPI_ButtonRect, having type RectanglePresModel
+ ParameterId["ButtonRect"] = "buttonRect";
+ // DPI_DragRect, having type RectanglePresModel
+ ParameterId["DragRect"] = "dragRect";
+ // DPI_FocusRect, having type RectanglePresModel
+ ParameterId["FocusRect"] = "focusRect";
+ // DPI_ImageTileRect, having type RectanglePresModel
+ ParameterId["ImageTileRect"] = "tileRect";
+ // DPI_ItemRect, having type RectanglePresModel
+ ParameterId["ItemRect"] = "itemRect";
+ // DPI_LabelRect, having type RectanglePresModel
+ ParameterId["LabelRect"] = "labelRect";
+ // DPI_MarkRect, having type RectanglePresModel
+ ParameterId["MarkRect"] = "markRect";
+ // DPI_MarkTooltipRect, having type RectanglePresModel
+ ParameterId["MarkTooltipRect"] = "markTooltipRect";
+ // DPI_MenuButtonRect, having type RectanglePresModel
+ ParameterId["MenuButtonRect"] = "menuButtonRect";
+ // DPI_OutRegionRect, having type RectanglePresModel
+ ParameterId["OutRegionRect"] = "outRegionRect";
+ // DPI_PaneRect, having type RectanglePresModel
+ ParameterId["PaneRect"] = "paneRect";
+ // DPI_PixelExtents, having type RectanglePresModel
+ ParameterId["PixelExtents"] = "pixelExtents";
+ // DPI_RectMaxLabel, having type RectanglePresModel
+ ParameterId["RectMaxLabel"] = "rectMaxLabel";
+ // DPI_RectMinLabel, having type RectanglePresModel
+ ParameterId["RectMinLabel"] = "rectMinLabel";
+ // DPI_RectRamp, having type RectanglePresModel
+ ParameterId["RectRamp"] = "rectRamp";
+ // DPI_RectTitle, having type RectanglePresModel
+ ParameterId["RectTitle"] = "rectTitle";
+ // DPI_RegionRect, having type RectanglePresModel
+ ParameterId["RegionRect"] = "regionRect";
+ // DPI_SelectionRect, having type RectanglePresModel
+ ParameterId["SelectionRect"] = "selectionRect";
+ // DPI_UnusedRect, having type RectanglePresModel
+ ParameterId["UnusedRect"] = "unusedRect";
+ // DPI_ZoneEdgeRect, having type RectanglePresModel
+ ParameterId["ZoneEdgeRect"] = "zoneEdge";
+ // DPI_ZoneEdgeRectPix, having type RectanglePresModel
+ ParameterId["ZoneEdgeRectPix"] = "zoneEdgePix";
+ // DPI_ZoneEdgeRectPp, having type RectanglePresModel
+ ParameterId["ZoneEdgeRectPp"] = "zoneEdgePp";
+ // DPI_UIAutomationLinkRect, having type RectanglePresModel
+ ParameterId["UIAutomationLinkRect"] = "linkRect";
+ // DPI_Borders, having type RectanglePresModel[]
+ ParameterId["Borders"] = "borderRects";
+ // DPI_UIAutomationLinkRects, having type RectanglePresModel[]
+ ParameterId["UIAutomationLinkRects"] = "linkRects";
+ // DPI_DomainExtents, having type DoubleRectanglePresModel
+ ParameterId["DomainExtents"] = "domainExtents";
+ // DPI_MapDomainExtents, having type DoubleRectanglePresModel
+ ParameterId["MapDomainExtents"] = "mapDomainExtents";
+ // DPI_MapLatLongRect, having type MapRectPresModel
+ ParameterId["MapLatLongRect"] = "mapLatLongRect";
+ // DPI_Center, having type PointPresModel
+ ParameterId["Center"] = "center";
+ // DPI_CenterMarkLineBegin, having type PointPresModel
+ ParameterId["CenterMarkLineBegin"] = "centerMarkLineBegin";
+ // DPI_CenterMarkLineEnd, having type PointPresModel
+ ParameterId["CenterMarkLineEnd"] = "centerMarkLineEnd";
+ // DPI_DropLocation, having type PointPresModel
+ ParameterId["DropLocation"] = "dropLocation";
+ // DPI_EndPt, having type PointPresModel
+ ParameterId["EndPt"] = "endPoint";
+ // DPI_GrabLocation, having type PointPresModel
+ ParameterId["GrabLocation"] = "grabLocation";
+ // DPI_GridOrigin, having type PointPresModel
+ ParameterId["GridOrigin"] = "gridOrigin";
+ // DPI_LassoSelectionPoint, having type PointPresModel
+ ParameterId["LassoSelectionPoint"] = "lassoSelectionPoint";
+ // DPI_MenuLocation, having type PointPresModel
+ ParameterId["MenuLocation"] = "menuLocation";
+ // DPI_MoveOffset, having type PointPresModel
+ ParameterId["MoveOffset"] = "moveOffset";
+ // DPI_OverlayAnchor, having type PointPresModel
+ ParameterId["OverlayAnchor"] = "overlayAnchor";
+ // DPI_PanAmount, having type PointPresModel
+ ParameterId["PanAmount"] = "panAmount";
+ // DPI_PanLocation, having type PointPresModel
+ ParameterId["PanLocation"] = "panLocation";
+ // DPI_PaneResolverLocation, having type PointPresModel
+ ParameterId["PaneResolverLocation"] = "paneResolverLocation";
+ // DPI_PixelExtentsOffset, having type PointPresModel
+ ParameterId["PixelExtentsOffset"] = "extentsOffset";
+ // DPI_Point1, having type PointPresModel
+ ParameterId["Point1"] = "pt1";
+ // DPI_Point2, having type PointPresModel
+ ParameterId["Point2"] = "pt2";
+ // DPI_Point3, having type PointPresModel
+ ParameterId["Point3"] = "pt3";
+ // DPI_RegionPoint, having type PointPresModel
+ ParameterId["RegionPoint"] = "regionPoint";
+ // DPI_ScrollOffset, having type PointPresModel
+ ParameterId["ScrollOffset"] = "scrollOffset";
+ // DPI_SelectAtPoint, having type PointPresModel
+ ParameterId["SelectAtPoint"] = "selectAtPoint";
+ // DPI_SelectOffset, having type PointPresModel
+ ParameterId["SelectOffset"] = "selectOffset";
+ // DPI_TargetPt, having type PointPresModel
+ ParameterId["TargetPt"] = "targetPoint";
+ // DPI_TextOrigin, having type PointPresModel
+ ParameterId["TextOrigin"] = "textOrigin";
+ // DPI_TooltipAnchorPoint, having type PointPresModel
+ ParameterId["TooltipAnchorPoint"] = "tooltipAnchorPoint";
+ // DPI_TooltipOffset, having type PointPresModel
+ ParameterId["TooltipOffset"] = "tooltipOffset";
+ // DPI_VizLocation, having type PointPresModel
+ ParameterId["VizLocation"] = "vizLocation";
+ // DPI_ZoomAnchorPoint, having type PointPresModel
+ ParameterId["ZoomAnchorPoint"] = "zoomAnchorPoint";
+ // DPI_MenuAnchorPoint, having type PointPresModel
+ ParameterId["MenuAnchorPoint"] = "menuAnchorPoint";
+ // DPI_OverlayAnchors, having type PointPresModel[]
+ ParameterId["OverlayAnchors"] = "overlayAnchors";
+ // DPI_LassoSelection, having type PointPresModel[]
+ ParameterId["LassoSelection"] = "lassoSelection";
+ // DPI_ScrollOffsetPoints, having type PointPresModel[]
+ ParameterId["ScrollOffsetPoints"] = "scrollOffsetPoints";
+ // DPI_RadialSelection, having type CirclePresModel
+ ParameterId["RadialSelection"] = "radialSelection";
+ // DPI_DomainOrigin, having type FloatPointPresModel
+ ParameterId["DomainOrigin"] = "domainOrigin";
+ // DPI_FloatCenter, having type FloatPointPresModel
+ ParameterId["FloatCenter"] = "floatCenter";
+ // DPI_FloatPoint, having type FloatPointPresModel
+ ParameterId["FloatPoint"] = "floatPoint";
+ // DPI_ClientAvailableSpace, having type SizePresModel
+ ParameterId["ClientAvailableSpace"] = "clientAvailableSpace";
+ // DPI_DashboardPortSize, having type SizePresModel
+ ParameterId["DashboardPortSize"] = "dashboardPort";
+ // DPI_LegendSize, having type SizePresModel
+ ParameterId["LegendSize"] = "legendSize";
+ // DPI_StoryPortSize, having type SizePresModel
+ ParameterId["StoryPortSize"] = "storyPort";
+ // DPI_SwatchAreaSize, having type SizePresModel
+ ParameterId["SwatchAreaSize"] = "areaSize";
+ // DPI_SwatchImageSize, having type SizePresModel
+ ParameterId["SwatchImageSize"] = "imageSize";
+ // DPI_ViewportSize, having type SizePresModel
+ ParameterId["ViewportSize"] = "viewportSize";
+ // DPI_WorksheetPortSize, having type SizePresModel
+ ParameterId["WorksheetPortSize"] = "worksheetPort";
+ // DPI_ResizeEntity, having type ResizeEntityPresModel
+ ParameterId["ResizeEntity"] = "resizeEntity";
+ // DPI_RowResizers, having type ResizeEntityPresModel[]
+ ParameterId["RowResizers"] = "rowResizers";
+ // DPI_ColResizers, having type ResizeEntityPresModel[]
+ ParameterId["ColResizers"] = "colResizers";
+ // DPI_ResizeInfoPresModel, having type ResizeInfoPresModel
+ ParameterId["ResizeInfoPresModel"] = "resizeInfo";
+ // DPI_ServerSheet, having type ServerSheetPresModel
+ ParameterId["ServerSheet"] = "serverSheet";
+ // DPI_ServerSheets, having type ServerSheetPresModel[]
+ ParameterId["ServerSheets"] = "serverSheets";
+ // DPI_SheetInfo, having type SheetInfoPresModel
+ ParameterId["SheetInfo"] = "sheetInfo";
+ // DPI_SheetsInfo, having type SheetInfoPresModel[]
+ ParameterId["SheetsInfo"] = "sheetsInfo";
+ // DPI_ServerWorkbook, having type ServerWorkbookPresModel
+ ParameterId["ServerWorkbook"] = "serverWorkbook";
+ // DPI_PDFExportOptionsPresModel, having type PDFExportOptionsPresModel
+ ParameterId["PDFExportOptionsPresModel"] = "pdfExport";
+ // DPI_ExportFileResultPresModel, having type ExportFileResultPresModel
+ ParameterId["ExportFileResultPresModel"] = "pdfResult";
+ // DPI_PDFSheet, having type PDFSheetPresModel
+ ParameterId["PDFSheet"] = "pdfSheet";
+ // DPI_SheetOptions, having type PDFSheetPresModel[]
+ ParameterId["SheetOptions"] = "sheetOptions";
+ // DPI_ExportLayoutOptions, having type ExportLayoutOptionsPresModel
+ ParameterId["ExportLayoutOptions"] = "exportLayoutOptions";
+ // DPI_DataAlertConditionOperationType, having type DataAlertConditionOperationType
+ ParameterId["DataAlertConditionOperationType"] = "dataAlertConditionOp";
+ // DPI_DataAlertDialogPresModel, having type DataAlertDialogPresModel
+ ParameterId["DataAlertDialogPresModel"] = "dataAlertDialogPresModel";
+ // DPI_DataAlertMeasure, having type DataAlertMeasurePresModel
+ ParameterId["DataAlertMeasure"] = "dataAlertMeasure";
+ // DPI_DataAlertMeasures, having type DataAlertMeasurePresModel[]
+ ParameterId["DataAlertMeasures"] = "dataAlertMeasures";
+ // DPI_DataAlertConstantCondition, having type DataAlertConstantConditionPresModel
+ ParameterId["DataAlertConstantCondition"] = "dataAlertConstantCondition";
+ // DPI_DataAlertDialogMode, having type DataAlertDialogMode
+ ParameterId["DataAlertDialogMode"] = "dataAlertDialogMode";
+ // DPI_LightweightMapOptions, having type LightweightMapOptionsPresModel
+ ParameterId["LightweightMapOptions"] = "lightweightMapOptions";
+ // DPI_DataHighlighter, having type DataHighlighterPresModel
+ ParameterId["DataHighlighter"] = "dataHighlighter";
+ // DPI_DataHighlighterItemSet, having type DataHighlighterItemSetPresModel
+ ParameterId["DataHighlighterItemSet"] = "dataHighlighterItemSet";
+ // DPI_DataHighlighterItem, having type DataHighlighterItemPresModel
+ ParameterId["DataHighlighterItem"] = "dataHighlighterItem";
+ // DPI_DataHighlighterItems, having type DataHighlighterItemPresModel[]
+ ParameterId["DataHighlighterItems"] = "dataHighlighterItems";
+ // DPI_CategoricalLegendLayout, having type CategoricalLegendLayoutPresModel
+ ParameterId["CategoricalLegendLayout"] = "catLegendLayout";
+ // DPI_CategoricalLegend, having type CategoricalLegendPresModel
+ ParameterId["CategoricalLegend"] = "categoricalLegend";
+ // DPI_CategoricalLegends, having type CategoricalLegendPresModel[]
+ ParameterId["CategoricalLegends"] = "categoricalLegends";
+ // DPI_CategoricalColorLegend, having type CategoricalColorLegendPresModel
+ ParameterId["CategoricalColorLegend"] = "colorLegend";
+ // DPI_ColorLegendItem, having type CategoricalColorLegendItemPresModel
+ ParameterId["ColorLegendItem"] = "colorLegendItem";
+ // DPI_ColorLegendItems, having type CategoricalColorLegendItemPresModel[]
+ ParameterId["ColorLegendItems"] = "colorLegendItems";
+ // DPI_CategoricalShapeLegend, having type CategoricalShapeLegendPresModel
+ ParameterId["CategoricalShapeLegend"] = "categoricalShapeLegend";
+ // DPI_ShapeLegendItem, having type CategoricalShapeLegendItemPresModel
+ ParameterId["ShapeLegendItem"] = "shapeLegendItem";
+ // DPI_ShapeLegendItems, having type CategoricalShapeLegendItemPresModel[]
+ ParameterId["ShapeLegendItems"] = "shapeLegendItems";
+ // DPI_CategoricalHighlightLegend, having type CategoricalHighlightLegendPresModel
+ ParameterId["CategoricalHighlightLegend"] = "categoricalHighlightLegend";
+ // DPI_HighlightLegendItem, having type CategoricalLegendItemPresModel
+ ParameterId["HighlightLegendItem"] = "highlightLegendItem";
+ // DPI_HighlightLegendItems, having type CategoricalLegendItemPresModel[]
+ ParameterId["HighlightLegendItems"] = "highlightLegendItems";
+ // DPI_CategoricalSizeLegend, having type CategoricalSizeLegendPresModel
+ ParameterId["CategoricalSizeLegend"] = "categoricalSizeLegend";
+ // DPI_SizeLegendItem, having type CategoricalSizeLegendItemPresModel
+ ParameterId["SizeLegendItem"] = "sizeLegendItem";
+ // DPI_SizeLegendItems, having type CategoricalSizeLegendItemPresModel[]
+ ParameterId["SizeLegendItems"] = "sizeLegendItems";
+ // DPI_CategoricalMapLegend, having type CategoricalMapLegendPresModel
+ ParameterId["CategoricalMapLegend"] = "categoricalMapLegend";
+ // DPI_QuantitativeColorLegend, having type QuantitativeColorLegendPresModel
+ ParameterId["QuantitativeColorLegend"] = "quantitativeColorLegend";
+ // DPI_QuantitativeColorLegends, having type QuantitativeColorLegendPresModel[]
+ ParameterId["QuantitativeColorLegends"] = "quantitativeColorLegends";
+ // DPI_QuantitativeLegendLayout, having type QuantitativeLegendLayoutPresModel
+ ParameterId["QuantitativeLegendLayout"] = "quantitativeLegendLayout";
+ // DPI_ServerRenderedLegend, having type ServerRenderedLegendPresModel
+ ParameterId["ServerRenderedLegend"] = "serverRenderedLegend";
+ // DPI_CategoricalFilter, having type CategoricalFilterPresModel
+ ParameterId["CategoricalFilter"] = "categoricalFilter";
+ // DPI_CategoricalFilterRelational, having type CategoricalFilterRelationalPresModel
+ ParameterId["CategoricalFilterRelational"] = "categoricalFilterRelational";
+ // DPI_CategoricalFilterMemberDomainPage, having type CategoricalFilterMemberDomainPagePresModel
+ ParameterId["CategoricalFilterMemberDomainPage"] = "categoricalFilterMemberDomainPage";
+ // DPI_CategoricalFilterCacheInfo, having type CategoricalFilterCacheInfoPresModel
+ ParameterId["CategoricalFilterCacheInfo"] = "categoricalFilterCacheInfo";
+ // DPI_CategoricalFilterPatternDisplay, having type CategoricalFilterPatternDisplayPresModel
+ ParameterId["CategoricalFilterPatternDisplay"] = "categoricalFilterPatternDisplay";
+ // DPI_CategoricalFilterPatternUpdate, having type CategoricalFilterPatternUpdatePresModel
+ ParameterId["CategoricalFilterPatternUpdate"] = "categoricalFilterPatternUpdate";
+ // DPI_CategoricalFilterConditionDisplay, having type CategoricalFilterConditionDisplayPresModel
+ ParameterId["CategoricalFilterConditionDisplay"] = "categoricalFilterConditionDisplay";
+ // DPI_CategoricalFilterConditionUpdate, having type CategoricalFilterConditionUpdatePresModel
+ ParameterId["CategoricalFilterConditionUpdate"] = "categoricalFilterConditionUpdate";
+ // DPI_CategoricalFilterLimitDisplay, having type CategoricalFilterLimitDisplayPresModel
+ ParameterId["CategoricalFilterLimitDisplay"] = "categoricalFilterLimitDisplay";
+ // DPI_CategoricalFilterLimitUpdate, having type CategoricalFilterLimitUpdatePresModel
+ ParameterId["CategoricalFilterLimitUpdate"] = "categoricalFilterLimitUpdate";
+ // DPI_CategoricalFilterNew, having type CategoricalFilter_NewPresModel
+ ParameterId["CategoricalFilterNew"] = "categoricalFilterNew";
+ // DPI_CategoricalFilterHierarchy, having type CategoricalFilterHierarchyPresModel
+ ParameterId["CategoricalFilterHierarchy"] = "categoricalFilterHirerarchy";
+ // DPI_CategoricalFilterUpdate, having type CategoricalFilterUpdatePresModel
+ ParameterId["CategoricalFilterUpdate"] = "categoricalFilterUpdate";
+ // DPI_CategoricalFilterRelationalState, having type CategoricalFilterRelationalStatePresModel
+ ParameterId["CategoricalFilterRelationalState"] = "categoricalRelationalState";
+ // DPI_CategoricalFilterRelationalUpdatedState, having type CategoricalFilterRelationalStatePresModel
+ ParameterId["CategoricalFilterRelationalUpdatedState"] = "categoricalRelationalUpdatedState";
+ // DPI_CategoricalFilterRelationalDomainInfo, having type CategoricalFilterRelationalDomainInfoPresModel
+ ParameterId["CategoricalFilterRelationalDomainInfo"] = "categoricalFilterRelationalDomainInfo";
+ // DPI_CategoricalFilterRelationalDisplay, having type CategoricalFilterRelationalDisplayPresModel
+ ParameterId["CategoricalFilterRelationalDisplay"] = "categoricalFilterRelationalDisplay";
+ // DPI_ExpressionToken, having type ExpressionTokenPresModel
+ ParameterId["ExpressionToken"] = "expressionToken";
+ // DPI_ExpressionTokens, having type ExpressionTokenPresModel[]
+ ParameterId["ExpressionTokens"] = "expressionTokens";
+ // DPI_FormulaValidation, having type FormulaValidationPresModel
+ ParameterId["FormulaValidation"] = "formulaValidation";
+ // DPI_CaptionedFilterValue, having type FilterValuePresModel
+ ParameterId["CaptionedFilterValue"] = "captionedFilterValue";
+ // DPI_CaptionedRangeMin, having type FilterValuePresModel
+ ParameterId["CaptionedRangeMin"] = "captionedRangeMin";
+ // DPI_CaptionedRangeMax, having type FilterValuePresModel
+ ParameterId["CaptionedRangeMax"] = "captionedRangeMax";
+ // DPI_CaptionedAnchorDate, having type FilterValuePresModel
+ ParameterId["CaptionedAnchorDate"] = "captionedAnchorDate";
+ // DPI_CaptionedFilterValueList, having type FilterValuePresModel[]
+ ParameterId["CaptionedFilterValueList"] = "captionedFilterValueList";
+ // DPI_CategoricalFilterInfo, having type CategoricalFilterInfoPresModel
+ ParameterId["CategoricalFilterInfo"] = "categoricalFilterInfo";
+ // DPI_QuantitativeFilterInfo, having type QuantitativeFilterInfoPresModel
+ ParameterId["QuantitativeFilterInfo"] = "quantitativeFilterInfo";
+ // DPI_RelativeDateFilterInfo, having type RelativeDateFilterInfoPresModel
+ ParameterId["RelativeDateFilterInfo"] = "relativeDateFilterInfo";
+ // DPI_FilterInfo, having type FilterInfoPresModel
+ ParameterId["FilterInfo"] = "filterInfo";
+ // DPI_FiltersInfo, having type FilterInforPresModel[]
+ ParameterId["FiltersInfo"] = "filtersInfo";
+ // DPI_CategoricalDomain, having type CategoricalDomainPresModel
+ ParameterId["CategoricalDomain"] = "categoricalDomain";
+ // DPI_QuantitativeDomain, having type QuantitativeDomainPresModel
+ ParameterId["QuantitativeDomain"] = "quantitativeDomain";
+ // DPI_ValidationResults, having type ValidationResultsPresModel
+ ParameterId["ValidationResults"] = "validationResults";
+ // DPI_DomainMember, having type DomainMemberPresModel
+ ParameterId["DomainMember"] = "domainMember";
+ // DPI_DomainMembers, having type DomainMemberPresModel[]
+ ParameterId["DomainMembers"] = "domainMembers";
+ // DPI_QuickFilterDisplay, having type QuickFilterDisplayPresModel
+ ParameterId["QuickFilterDisplay"] = "quickFilterDisplay";
+ // DPI_QuickFilter, having type QuickFilterPresModel
+ ParameterId["QuickFilter"] = "quickFilter";
+ // DPI_QuantitativeQuickFilter, having type QuantitativeQuickFilterPresModel
+ ParameterId["QuantitativeQuickFilter"] = "quantitativeQuickFilter";
+ // DPI_RelativeDateQuickFilter, having type RelativeDateQuickFilterPresModel
+ ParameterId["RelativeDateQuickFilter"] = "relativeDateQuickFilter";
+ // DPI_CategoricalQuickFilter, having type CategoricalQuickFilterPresModel
+ ParameterId["CategoricalQuickFilter"] = "categoricalQuickFilter";
+ // DPI_HierarchicalQuickFilter, having type HierarchicalQuickFilterPresModel
+ ParameterId["HierarchicalQuickFilter"] = "hierarchicalQuickFilter";
+ // DPI_DomainTable, having type DomainTablePresModel
+ ParameterId["DomainTable"] = "domainTable";
+ // DPI_DomainTables, having type DomainTablePresModel[]
+ ParameterId["DomainTables"] = "domainTables";
+ // DPI_DomainTuples, having type Tuples
+ ParameterId["DomainTuples"] = "domainTuples";
+ // DPI_SearchTuples, having type Tuples
+ ParameterId["SearchTuples"] = "searchTuples";
+ // DPI_SelectedTuples, having type TupleHash
+ ParameterId["SelectedTuples"] = "selectedTuples";
+ // DPI_PendingTuples, having type TupleHash
+ ParameterId["PendingTuples"] = "pendingTuples";
+ // DPI_Domain, having type MultiDomain
+ ParameterId["Domain"] = "domain";
+ // DPI_DateOption, having type DateBinDialogOptionPresModel
+ ParameterId["DateOption"] = "dateOption";
+ // DPI_DateOptions, having type DateBinDialogOptionPresModel[]
+ ParameterId["DateOptions"] = "dateOptions";
+ // DPI_FilterRangeAdd, having type FilterRangePresModel
+ ParameterId["FilterRangeAdd"] = "filterRangeAdd";
+ // DPI_FilterRangeRemove, having type FilterRangePresModel
+ ParameterId["FilterRangeRemove"] = "filterRangeRemove";
+ // DPI_FilterOptions, having type FilterOptionsPresModel
+ ParameterId["FilterOptions"] = "filterOptions";
+ // DPI_Layer, having type LayerPresModel
+ ParameterId["Layer"] = "layer";
+ // DPI_Layers, having type LayerPresModel[]
+ ParameterId["Layers"] = "layers";
+ // DPI_MarksCardPresModel, having type MarksCardPresModel
+ ParameterId["MarksCardPresModel"] = "marksCardPresModel";
+ // DPI_UIItem, having type UIItemPresModel
+ ParameterId["UIItem"] = "uiItem";
+ // DPI_EncodingUIItem, having type EncodingUIItemPresModel
+ ParameterId["EncodingUIItem"] = "encodingUiItem";
+ // DPI_EncodingUIItems, having type EncodingUIItemPresModel[]
+ ParameterId["EncodingUIItems"] = "encodingUiItems";
+ // DPI_PrimTypeUIItem, having type PrimitiveTypeUIItemPresModel
+ ParameterId["PrimTypeUIItem"] = "primitiveTypeUiItem";
+ // DPI_PrimTypeUIItems, having type PrimitiveTypeUIItemPresModel[]
+ ParameterId["PrimTypeUIItems"] = "primitiveTypeUiItems";
+ // DPI_PrimitiveTypeUIItemOptions, having type PrimitiveTypeUIItemOptionsPresModel
+ ParameterId["PrimitiveTypeUIItemOptions"] = "primitiveTypeUiItemOptions";
+ // DPI_LineUIItemOptions, having type LineUIItemOptionsPresModel
+ ParameterId["LineUIItemOptions"] = "lineUiItemOptions";
+ // DPI_LineInterpolationModeUIItem, having type LineInterpolationModeUIItemPresModel
+ ParameterId["LineInterpolationModeUIItem"] = "lineInterpolationModeUiItem";
+ // DPI_LineInterpolationModeUIItemSet, having type LineInterpolationModeUIItemPresModel[]
+ ParameterId["LineInterpolationModeUIItemSet"] = "lineInterpolationModeUiItemSet";
+ // DPI_LineMarkerPositionUIItem, having type LineMarkerPositionUIItemPresModel
+ ParameterId["LineMarkerPositionUIItem"] = "lineMarkerPositionUiItem";
+ // DPI_LineMarkerPositionUIItemSet, having type LineMarkerPositionUIItemPresModel[]
+ ParameterId["LineMarkerPositionUIItemSet"] = "lineMarkerPositionUiItemSet";
+ // DPI_MarksCardDropdownItem, having type MarksCardDropdownItemPresModel
+ ParameterId["MarksCardDropdownItem"] = "marksCardDropdownItem";
+ // DPI_TooltipDropdownItem, having type TooltipDropdownItemPresModel
+ ParameterId["TooltipDropdownItem"] = "tooltipDropdownItem";
+ // DPI_TextDropdownItem, having type TextDropdownItemPresModel
+ ParameterId["TextDropdownItem"] = "textDropdownItem";
+ // DPI_ColorDropdownItem, having type ColorDropdownItemPresModel
+ ParameterId["ColorDropdownItem"] = "colorDropdownItem";
+ // DPI_SizeSliderPresModel, having type SizeSliderPresModel
+ ParameterId["SizeSliderPresModel"] = "sizeSliderPresModel";
+ // DPI_InflectionPoint, having type InflectionPointPresModel
+ ParameterId["InflectionPoint"] = "inflectionPoint";
+ // DPI_InflectionPoints, having type InflectionPointPresModel[]
+ ParameterId["InflectionPoints"] = "inflectionPoints";
+ // DPI_Notch, having type NotchPresModel
+ ParameterId["Notch"] = "notch";
+ // DPI_Notches, having type NotchPresModel[]
+ ParameterId["Notches"] = "notches";
+ // DPI_MarkSizeOptionsPresModel, having type MarkSizeOptionsPresModel
+ ParameterId["MarkSizeOptionsPresModel"] = "markSizeOptionsPresModel";
+ // DPI_ModifyMarksInSet, having type AddOrRemoveMarks
+ ParameterId["ModifyMarksInSet"] = "addOrRemoveMarks";
+ // DPI_MarkLabelsSpecification, having type MarkLabelsSpecificationPresModel
+ ParameterId["MarkLabelsSpecification"] = "markLabelsSpecification";
+ // DPI_ColorPalette, having type ColorPalettePresModel
+ ParameterId["ColorPalette"] = "colorPalette";
+ // DPI_SelectedColorPalette, having type ColorPalettePresModel
+ ParameterId["SelectedColorPalette"] = "selectedColorPalette";
+ // DPI_ColorPalettes, having type ColorPalettePresModel[]
+ ParameterId["ColorPalettes"] = "colorPalettes";
+ // DPI_ColorPaletteGroup, having type ColorPaletteGroupPresModel
+ ParameterId["ColorPaletteGroup"] = "colorPaletteGroup";
+ // DPI_CatColorPaletteGroups, having type ColorPaletteGroupPresModel[]
+ ParameterId["CatColorPaletteGroups"] = "catColorPaletteGroups";
+ // DPI_QColorPaletteGroups, having type ColorPaletteGroupPresModel[]
+ ParameterId["QColorPaletteGroups"] = "qColorPaletteGroups";
+ // DPI_ColorPaletteCollection, having type ColorPaletteCollectionPresModel
+ ParameterId["ColorPaletteCollection"] = "colorPaletteCollection";
+ // DPI_QuantitativeColor, having type QuantitativeColorPresModel
+ ParameterId["QuantitativeColor"] = "quantitativeColor";
+ // DPI_CategoricalColor, having type CategoricalColorPresModel
+ ParameterId["CategoricalColor"] = "categoricalColor";
+ // DPI_ItemColorPair, having type ItemColorPairPresModel
+ ParameterId["ItemColorPair"] = "itemColorPair";
+ // DPI_ItemColorPairs, having type ItemColorPairPresModel[]
+ ParameterId["ItemColorPairs"] = "itemColorPairs";
+ // DPI_VQLCommandResponse, having type VQLCommandResponsePresModel
+ ParameterId["VQLCommandResponse"] = "vqlCmdResponse";
+ // DPI_LayoutStatus, having type LayoutStatusPresModel
+ ParameterId["LayoutStatus"] = "layoutStatus";
+ // DPI_VizState, having type VizStatePresModel
+ ParameterId["VizState"] = "vizState";
+ // DPI_VizStateList, having type VizStatePresModel[]
+ ParameterId["VizStateList"] = "vizStateList";
+ // DPI_CommandResult, having type CommandResultPresModel
+ ParameterId["CommandResult"] = "cmdResult";
+ // DPI_CommandResultList, having type CommandResultPresModel[]
+ ParameterId["CommandResultList"] = "cmdResultList";
+ // DPI_URLAction, having type URLActionPresModel
+ ParameterId["URLAction"] = "urlAction";
+ // DPI_URLActionList, having type URLActionPresModel[]
+ ParameterId["URLActionList"] = "urlActionList";
+ // DPI_LegacyMenu, having type LegacyMenuPresModel
+ ParameterId["LegacyMenu"] = "legacyMenu";
+ // DPI_LegacyMenus, having type LegacyMenuPresModel[]
+ ParameterId["LegacyMenus"] = "legacyMenus";
+ // DPI_ConnectionAttemptInfo, having type ConnectionAttemptInfoPresModel
+ ParameterId["ConnectionAttemptInfo"] = "connectionAttemptInfo";
+ // DPI_DataSourceConnectionAttemptInfo, having type DataSourceConnectionAttemptInfoPresModel
+ ParameterId["DataSourceConnectionAttemptInfo"] = "dataSourceConnectionAttemptInfo";
+ // DPI_DataSourceConnectionAttemptInfos, having type DataSourceConnectionAttemptInfoPresModel[]
+ ParameterId["DataSourceConnectionAttemptInfos"] = "dataSourceConnectionAttemptInfos";
+ // DPI_CommandValidationPresModel, having type CommandValidationPresModel
+ ParameterId["CommandValidationPresModel"] = "commandValidationPresModel";
+ // DPI_WarningMessage, having type WarningMessagePresModel
+ ParameterId["WarningMessage"] = "warningMessagePresModel";
+ // DPI_ApplicationPresModel, having type ApplicationPresModel
+ ParameterId["ApplicationPresModel"] = "applicationPresModel";
+ // DPI_ToolbarPresModel, having type ToolbarPresModel
+ ParameterId["ToolbarPresModel"] = "toolbarPresModel";
+ // DPI_WorkbookPresModel, having type WorkbookPresModel
+ ParameterId["WorkbookPresModel"] = "workbookPresModel";
+ // DPI_ServerFonts, having type ServerFontsPresModel
+ ParameterId["ServerFonts"] = "serverFonts";
+ // DPI_PublishDataSourceMetadataPresModel, having type PublishDataSourceMetadataPresModel
+ ParameterId["PublishDataSourceMetadataPresModel"] = "publishDataSourceMetadataPresModel";
+ // DPI_DashboardPresModel, having type DashboardPresModel
+ ParameterId["DashboardPresModel"] = "dashboardPresModel";
+ // DPI_DashboardSizePresModel, having type DashboardSizePresModel
+ ParameterId["DashboardSizePresModel"] = "dashboardSizePresModel";
+ // DPI_DashboardSizeWithValidationPresModel, having type DashboardSizeWithValidationPresModel
+ ParameterId["DashboardSizeWithValidationPresModel"] = "dashboardSizeWithValidationPresModel";
+ // DPI_DashboardInfoPresModel, having type DashboardInfoPresModel
+ ParameterId["DashboardInfoPresModel"] = "dashboardInfoPresModel";
+ // DPI_VisualPresModel, having type VisualPresModel
+ ParameterId["VisualPresModel"] = "visual";
+ // DPI_VisualPresModels, having type VisualPresModel[]
+ ParameterId["VisualPresModels"] = "visuals";
+ // DPI_DropLinesPresModel, having type DropLinesPresModel
+ ParameterId["DropLinesPresModel"] = "dropLinesPresModel";
+ // DPI_DropFieldPresModel, having type DropFieldPresModel
+ ParameterId["DropFieldPresModel"] = "dropFieldPresModel";
+ // DPI_DropFieldResultPresModel, having type DropFieldResultPresModel
+ ParameterId["DropFieldResultPresModel"] = "dropFieldResultPresModel";
+ // DPI_CurrentAxisRange, having type DataValueRangePresModel
+ ParameterId["CurrentAxisRange"] = "currentAxisRange";
+ // DPI_CurrentAxisRangeNoTime, having type DataValueRangePresModel
+ ParameterId["CurrentAxisRangeNoTime"] = "currentAxisRangeNoTime";
+ // DPI_DefaultAxisRange, having type DataValueRangePresModel
+ ParameterId["DefaultAxisRange"] = "defaultAxisRange";
+ // DPI_NewAxisRange, having type DataValueRangePresModel
+ ParameterId["NewAxisRange"] = "newAxisRange";
+ // DPI_AxisOptions, having type AxisOptionsPresModel
+ ParameterId["AxisOptions"] = "axis";
+ // DPI_AxisMajorTicks, having type TickMarkInfoPresModel
+ ParameterId["AxisMajorTicks"] = "axisMajorTicks";
+ // DPI_AxisMinorTicks, having type TickMarkInfoPresModel
+ ParameterId["AxisMinorTicks"] = "axisMinorTicks";
+ // DPI_EditAxisDialog, having type EditAxisDialogPresModel
+ ParameterId["EditAxisDialog"] = "editAxisDialog";
+ // DPI_MarkLabels, having type ScenePresModel
+ ParameterId["MarkLabels"] = "markLabels";
+ // DPI_Scene, having type ScenePresModel
+ ParameterId["Scene"] = "scene";
+ // DPI_MapServer, having type MapServerPresModel
+ ParameterId["MapServer"] = "mapServer";
+ // DPI_VisualList, having type VisualListPresModel
+ ParameterId["VisualList"] = "visualList";
+ // DPI_DrawFirst, having type VisualListPresModel[]
+ ParameterId["DrawFirst"] = "drawFirst";
+ // DPI_DrawLast, having type VisualListPresModel[]
+ ParameterId["DrawLast"] = "drawLast";
+ // DPI_DrawPane, having type VisualListPresModel[]
+ ParameterId["DrawPane"] = "drawPane";
+ // DPI_UserPaneInfo, having type UserPaneInfoPresModel
+ ParameterId["UserPaneInfo"] = "userPaneInfo";
+ // DPI_AnalyticsPane, having type AnalyticsPanePresModel
+ ParameterId["AnalyticsPane"] = "analyticsPane";
+ // DPI_AnalyticsObjectItem, having type AnalyticsObjectItemPresModel
+ ParameterId["AnalyticsObjectItem"] = "analyticsObjectItem";
+ // DPI_AnalyticsObjectItems, having type AnalyticsObjectItemPresModel[]
+ ParameterId["AnalyticsObjectItems"] = "analyticsObjectItems";
+ // DPI_AnalyticsObjectGroup, having type AnalyticsObjectGroupPresModel
+ ParameterId["AnalyticsObjectGroup"] = "analyticsObjectGroup";
+ // DPI_AnalyticsObjectGroups, having type AnalyticsObjectGroupPresModel[]
+ ParameterId["AnalyticsObjectGroups"] = "analyticsObjectGroups";
+ // DPI_DropZoneItem, having type DropZoneItemPresModel
+ ParameterId["DropZoneItem"] = "dropZoneItem";
+ // DPI_DropZoneItems, having type DropZoneItemPresModel[]
+ ParameterId["DropZoneItems"] = "dropZoneItems";
+ // DPI_DropTargetInfo, having type DropTargetInfoPresModel
+ ParameterId["DropTargetInfo"] = "dropTargetInfo";
+ // DPI_Pane, having type PanePresModel
+ ParameterId["Pane"] = "pane";
+ // DPI_Panes, having type PanePresModel[]
+ ParameterId["Panes"] = "panes";
+ // DPI_RadialSelectionDistanceInfo, having type RadialSelectionDistanceInfoPresModel
+ ParameterId["RadialSelectionDistanceInfo"] = "radialSelectionDistanceInfo";
+ // DPI_MapScaleInfo, having type MapScaleInfoPresModel
+ ParameterId["MapScaleInfo"] = "mapScaleInfo";
+ // DPI_RenderNode, having type RenderNodePresModel
+ ParameterId["RenderNode"] = "renderNode";
+ // DPI_RenderNodes, having type RenderNodePresModel[]
+ ParameterId["RenderNodes"] = "renderNodes";
+ // DPI_PredictionBand, having type PredictionBandPresModel
+ ParameterId["PredictionBand"] = "predictionBand";
+ // DPI_PredictionWhisker, having type PredictionWhiskerPresModel
+ ParameterId["PredictionWhisker"] = "predictionWhisker";
+ // DPI_DrawGroup, having type DrawPointsPresModel
+ ParameterId["DrawGroup"] = "drawGroup";
+ // DPI_ClipReset, having type DrawItemPresModel
+ ParameterId["ClipReset"] = "clipReset";
+ // DPI_DrawItem, having type DrawItemPresModel
+ ParameterId["DrawItem"] = "drawItem";
+ // DPI_TransformPop, having type DrawItemPresModel
+ ParameterId["TransformPop"] = "transformPop";
+ // DPI_TransformPush, having type DrawItemPresModel
+ ParameterId["TransformPush"] = "transformPush";
+ // DPI_DrawItems, having type DrawItemPresModel[]
+ ParameterId["DrawItems"] = "drawItems";
+ // DPI_ClipRect, having type DrawPointsPresModel
+ ParameterId["ClipRect"] = "clipRect";
+ // DPI_DrawEllipse, having type DrawPointsPresModel
+ ParameterId["DrawEllipse"] = "drawEllipse";
+ // DPI_DrawFillEllipse, having type DrawPointsPresModel
+ ParameterId["DrawFillEllipse"] = "drawFillEllipse";
+ // DPI_DrawFillPolygon, having type DrawPointsPresModel
+ ParameterId["DrawFillPolygon"] = "drawFillPolygon";
+ // DPI_DrawFillRect, having type DrawPointsPresModel
+ ParameterId["DrawFillRect"] = "drawFillRect";
+ // DPI_DrawPolygon, having type DrawPointsPresModel
+ ParameterId["DrawPolygon"] = "drawPolygon";
+ // DPI_DrawPolyline, having type DrawPointsPresModel
+ ParameterId["DrawPolyline"] = "drawPolyline";
+ // DPI_DrawRect, having type DrawPointsPresModel
+ ParameterId["DrawRect"] = "drawRect";
+ // DPI_DrawFillPath, having type DrawPathPresModel
+ ParameterId["DrawFillPath"] = "drawFillPath";
+ // DPI_DrawPath, having type DrawPathPresModel
+ ParameterId["DrawPath"] = "drawPath";
+ // DPI_DrawText, having type DrawTextPresModel
+ ParameterId["DrawText"] = "drawText";
+ // DPI_DrawImage, having type DrawImagePresModel
+ ParameterId["DrawImage"] = "drawImage";
+ // DPI_ImageTileInfo, having type ImageTileInfoPresModel
+ ParameterId["ImageTileInfo"] = "tileInfo";
+ // DPI_ImageTileInfos, having type ImageTileInfoPresModel[]
+ ParameterId["ImageTileInfos"] = "tileInfos";
+ // DPI_DrawImageTiles, having type DrawImageTilesPresModel
+ ParameterId["DrawImageTiles"] = "drawImageTiles";
+ // DPI_DrawPen, having type DrawPenPresModel
+ ParameterId["DrawPen"] = "drawPen";
+ // DPI_DrawSolidBrush, having type DrawSolidBrushPresModel
+ ParameterId["DrawSolidBrush"] = "drawSolidBrush";
+ // DPI_DrawTextProperties, having type DrawTextPropertiesPresModel
+ ParameterId["DrawTextProperties"] = "drawTextProps";
+ // DPI_DrawGradientBrush, having type DrawGradientBrushPresModel
+ ParameterId["DrawGradientBrush"] = "drawGradientBrush";
+ // DPI_DrawTransform, having type DrawTransformPresModel
+ ParameterId["DrawTransform"] = "transform";
+ // DPI_DrawAntialias, having type DrawAntialiasPresModel
+ ParameterId["DrawAntialias"] = "drawAntialias";
+ // DPI_ImageDictionary, having type ImageDictionaryPresModel
+ ParameterId["ImageDictionary"] = "imageDictionary";
+ // DPI_ColorDictionary, having type ColorDictionaryPresModel
+ ParameterId["ColorDictionary"] = "colorDictionary";
+ // DPI_MarkShape, having type MarkShapePresModel
+ ParameterId["MarkShape"] = "markShape";
+ // DPI_MarkShapeList, having type MarkShapePresModel[]
+ ParameterId["MarkShapeList"] = "markShapeList";
+ // DPI_PaneDescriptor, having type PaneDescriptorPresModel
+ ParameterId["PaneDescriptor"] = "paneDescriptor";
+ // DPI_PDMarks, having type PDMarksPresModel
+ ParameterId["PDMarks"] = "pdMarks";
+ // DPI_PDMarksMap, having type Dictionary(of PDMarksPresModel)
+ ParameterId["PDMarksMap"] = "pdMarksMap";
+ // DPI_LabelTextTable, having type LabelTextTable
+ ParameterId["LabelTextTable"] = "labelTextTable";
+ // DPI_TextTableHelper, having type TextTableHelper
+ ParameterId["TextTableHelper"] = "textTableHelper";
+ // DPI_GeometryTable, having type GeometryTable
+ ParameterId["GeometryTable"] = "geometryTable";
+ // DPI_PaneMarks, having type PaneMarksPresModel
+ ParameterId["PaneMarks"] = "paneMarks";
+ // DPI_PaneMarksList, having type PaneMarksPresModel[]
+ ParameterId["PaneMarksList"] = "paneMarksList";
+ // DPI_BrushingSelection, having type SelectionPresModel
+ ParameterId["BrushingSelection"] = "brushing";
+ // DPI_Selection, having type SelectionPresModel
+ ParameterId["Selection"] = "selection";
+ // DPI_BrushingSelectionList, having type SelectionPresModel[]
+ ParameterId["BrushingSelectionList"] = "brushingSelectionList";
+ // DPI_SelectionList, having type SelectionPresModel[]
+ ParameterId["SelectionList"] = "selectionList";
+ // DPI_ShelfSelectionModel, having type ShelfSelectionPresModel
+ ParameterId["ShelfSelectionModel"] = "shelfSelectionModel";
+ // DPI_ShelfSelectionModels, having type ShelfSelectionPresModel[]
+ ParameterId["ShelfSelectionModels"] = "shelfSelectionModels";
+ // DPI_ShelfSelectionsModel, having type ShelfSelectionsPresModel
+ ParameterId["ShelfSelectionsModel"] = "shelfSelectionsModel";
+ // DPI_DimValSelectionModel, having type DimensionValueSelectionPresModel
+ ParameterId["DimValSelectionModel"] = "dimensionValueSelectionModel";
+ // DPI_DimValSelectionModels, having type DimensionValueSelectionPresModel[]
+ ParameterId["DimValSelectionModels"] = "dimensionValueSelectionModels";
+ // DPI_HierValSelectionModel, having type HierarchicalValueSelectionPresModel
+ ParameterId["HierValSelectionModel"] = "hierarchicalValueSelectionModel";
+ // DPI_HierValSelectionModels, having type HierarchicalValueSelectionPresModel[]
+ ParameterId["HierValSelectionModels"] = "hierarchicalValueSelectionModels";
+ // DPI_QuantRangeSelectionModel, having type QuantativeRangeSelectionPresModel
+ ParameterId["QuantRangeSelectionModel"] = "quantativeRangeSelectionModel";
+ // DPI_QuantRangeSelectionModels, having type QuantativeRangeSelectionPresModel[]
+ ParameterId["QuantRangeSelectionModels"] = "quantativeRangeSelectionModels";
+ // DPI_QuantValueSelectionModel, having type QuantativeValueSelectionPresModel
+ ParameterId["QuantValueSelectionModel"] = "quantativeValueSelectionModel";
+ // DPI_QuantValueSelectionModels, having type QuantativeValueSelectionPresModel[]
+ ParameterId["QuantValueSelectionModels"] = "quantativeValueSelectionModels";
+ // DPI_LegendSelectionInfo, having type LegendSelectionInfoPresModel
+ ParameterId["LegendSelectionInfo"] = "legendSelectionInfo";
+ // DPI_NodeReference, having type NodeReferencePresModel
+ ParameterId["NodeReference"] = "nodeReference";
+ // DPI_PageReference, having type PageReferencePresModel
+ ParameterId["PageReference"] = "pageReference";
+ // DPI_OrientedNodeReference, having type OrientedNodeReferencePresModel
+ ParameterId["OrientedNodeReference"] = "orientedNodeReference";
+ // DPI_OrientedNodeReferences, having type OrientedNodeReferencePresModel[]
+ ParameterId["OrientedNodeReferences"] = "orientedNodeReferences";
+ // DPI_SelectionData, having type SelectionDataPresModel
+ ParameterId["SelectionData"] = "selectionData";
+ // DPI_HighlightedData, having type HighlightedDataPresModel
+ ParameterId["HighlightedData"] = "highlightedData";
+ // DPI_Node, having type NodePresModel
+ ParameterId["Node"] = "node";
+ // DPI_Nodes, having type NodePresModel[]
+ ParameterId["Nodes"] = "nodes";
+ // DPI_SelectedNodes, having type NodePresModel[]
+ ParameterId["SelectedNodes"] = "selectedNodes";
+ // DPI_UserAction, having type ActionPresModel
+ ParameterId["UserAction"] = "userAction";
+ // DPI_UserActions, having type ActionPresModel[]
+ ParameterId["UserActions"] = "userActions";
+ // DPI_LinkSpec, having type LinkSpecPresModel
+ ParameterId["LinkSpec"] = "linkSpec";
+ // DPI_ActionSpecificationModel, having type ActionSpecificationPresModel
+ ParameterId["ActionSpecificationModel"] = "actionSpecification";
+ // DPI_LinkSpecification, having type LinkSpecificationPresModel
+ ParameterId["LinkSpecification"] = "linkSpecification";
+ // DPI_ScriptDescription, having type ScriptDescriptionPresModel
+ ParameterId["ScriptDescription"] = "scriptDescription";
+ // DPI_ActionSource, having type ActionSourcePresModel
+ ParameterId["ActionSource"] = "actionSource";
+ // DPI_FieldExprItem, having type FieldExprItemPresModel
+ ParameterId["FieldExprItem"] = "fieldExpressionItem";
+ // DPI_FieldExprVector, having type FieldExprItemPresModel[]
+ ParameterId["FieldExprVector"] = "fieldExpressionVector";
+ // DPI_ActionComboItem, having type ActionComboItemPresModel
+ ParameterId["ActionComboItem"] = "actionComboItem";
+ // DPI_ActionComboVector, having type ActionComboItemPresModel[]
+ ParameterId["ActionComboVector"] = "actionComboVector";
+ // DPI_ActionSourceCombo, having type ActionSourceComboPresModel
+ ParameterId["ActionSourceCombo"] = "actionSourceCombo";
+ // DPI_ActionDestCombo, having type ActionComboPresModel
+ ParameterId["ActionDestCombo"] = "actionDestCombo";
+ // DPI_ActionFieldList, having type ActionFieldListPresModel
+ ParameterId["ActionFieldList"] = "actionFieldList";
+ // DPI_EditBrushAction, having type EditBrushActionPresModel
+ ParameterId["EditBrushAction"] = "editBrushAction";
+ // DPI_UpdateActionSource, having type UpdateActionSourcePresModel
+ ParameterId["UpdateActionSource"] = "updateActionSource";
+ // DPI_UpdateBrushAction, having type UpdateBrushActionPresModel
+ ParameterId["UpdateBrushAction"] = "updateBrushAction";
+ // DPI_ActionWarnings, having type ActionWarningsPresModel
+ ParameterId["ActionWarnings"] = "actionWarnings";
+ // DPI_EditHyperlinkAction, having type EditHyperlinkActionPresModel
+ ParameterId["EditHyperlinkAction"] = "editHyperlinkAction";
+ // DPI_UpdateHyperlinkAction, having type UpdateHyperlinkActionPresModel
+ ParameterId["UpdateHyperlinkAction"] = "updateHyperlinkAction";
+ // DPI_EditSheetLinkAction, having type EditSheetLinkActionPresModel
+ ParameterId["EditSheetLinkAction"] = "editSheetlinkAction";
+ // DPI_UpdateSheetLinkAction, having type UpdateSheetLinkActionPresModel
+ ParameterId["UpdateSheetLinkAction"] = "updateSheetlinkAction";
+ // DPI_ActionItem, having type ActionItemPresModel
+ ParameterId["ActionItem"] = "actionItem";
+ // DPI_ActionItemList, having type ActionItemPresModel[]
+ ParameterId["ActionItemList"] = "actionItemList";
+ // DPI_DataSegment, having type DataSegmentPresModel
+ ParameterId["DataSegment"] = "dataSegment";
+ // DPI_DataSegments, having type Dictionary(of DataSegmentPresModel)
+ ParameterId["DataSegments"] = "dataSegments";
+ // DPI_DataDictionary, having type DataDictionaryPresModel
+ ParameterId["DataDictionary"] = "dataDictionary";
+ // DPI_VizData, having type VizDataPresModel
+ ParameterId["VizData"] = "vizData";
+ // DPI_VizColumn, having type VizColumnPresModel
+ ParameterId["VizColumn"] = "vizColumn";
+ // DPI_VizColumns, having type VizColumnPresModel[]
+ ParameterId["VizColumns"] = "vizColumns";
+ // DPI_VizDataColumn, having type VizDataColumnPresModel
+ ParameterId["VizDataColumn"] = "vizDataColumn";
+ // DPI_VizDataColumns, having type VizDataColumnPresModel[]
+ ParameterId["VizDataColumns"] = "vizDataColumns";
+ // DPI_VizPaneColumn, having type VizPaneColumnPresModel
+ ParameterId["VizPaneColumn"] = "vizPaneColumn";
+ // DPI_VizPaneColumns, having type VizPaneColumnPresModel[]
+ ParameterId["VizPaneColumns"] = "vizPaneColumns";
+ // DPI_PaneColumns, having type PaneColumnsPresModel
+ ParameterId["PaneColumns"] = "paneColumns";
+ // DPI_PaneColumnsList, having type PaneColumnsPresModel[]
+ ParameterId["PaneColumnsList"] = "paneColumnsList";
+ // DPI_PaneColumnsData, having type PaneColumnsDataPresModel
+ ParameterId["PaneColumnsData"] = "paneColumnsData";
+ // DPI_FilterContext, having type FilterContextPresModel
+ ParameterId["FilterContext"] = "filterContext";
+ // DPI_UberTipPaneData, having type UberTipPaneDataPresModel
+ ParameterId["UberTipPaneData"] = "ubertipPaneData";
+ // DPI_UberTipPaneDatas, having type UberTipPaneDataPresModel[]
+ ParameterId["UberTipPaneDatas"] = "ubertipPaneDatas";
+ // DPI_UberTipData, having type UberTipDataPresModel
+ ParameterId["UberTipData"] = "ubertipData";
+ // DPI_RefLineTip, having type RefLineTipPresModel
+ ParameterId["RefLineTip"] = "refLineTip";
+ // DPI_RefLineTips, having type RefLineTipPresModel[]
+ ParameterId["RefLineTips"] = "refLineTips";
+ // DPI_NumericBin, having type NumericBinPresModel
+ ParameterId["NumericBin"] = "numericBin";
+ // DPI_NumericBinDialog, having type NumericBinDialogPresModel
+ ParameterId["NumericBinDialog"] = "numericBinDialog";
+ // DPI_DomainRange, having type DomainRangePresModel
+ ParameterId["DomainRange"] = "domainRange";
+ // DPI_BinSizeInfo, having type BinSizeInfoPresModel
+ ParameterId["BinSizeInfo"] = "binSizeInfo";
+ // DPI_DetailedErrorDialog, having type DetailedErrorPresModel
+ ParameterId["DetailedErrorDialog"] = "detailedErrorDialog";
+ // DPI_DragSourcePosition, having type ShelfDropPositionPresModel
+ ParameterId["DragSourcePosition"] = "shelfDragSourcePosition";
+ // DPI_DropTargetPosition, having type ShelfDropPositionPresModel
+ ParameterId["DropTargetPosition"] = "shelfDropTargetPosition";
+ // DPI_ShelfDropPosition, having type ShelfDropPositionPresModel
+ ParameterId["ShelfDropPosition"] = "shelfDropPosition";
+ // DPI_ShelfDropPositions, having type ShelfDropPositionPresModel[]
+ ParameterId["ShelfDropPositions"] = "shelfDropPositions";
+ // DPI_ShelfDropModel, having type ShelfDropPresModel
+ ParameterId["ShelfDropModel"] = "shelfDropModel";
+ // DPI_ShelfDropModels, having type ShelfDropPresModel[]
+ ParameterId["ShelfDropModels"] = "shelfDropModels";
+ // DPI_Drag, having type DragPresModel
+ ParameterId["Drag"] = "drag";
+ // DPI_SceneElement, having type SceneElementPresModel
+ ParameterId["SceneElement"] = "sceneElement";
+ // DPI_SceneElements, having type SceneElementPresModel[]
+ ParameterId["SceneElements"] = "sceneElements";
+ // DPI_QuickFilterType, having type QuickFilterType
+ ParameterId["QuickFilterType"] = "quickFilterType";
+ // DPI_CatMode, having type QuickFilterCategoricalMode
+ ParameterId["CatMode"] = "categoricalMode";
+ // DPI_CatCtrl, having type QuickFilterCategoricalCtrl
+ ParameterId["CatCtrl"] = "categoricalControl";
+ // DPI_QuantMode, having type QuickFilterQuantitativeMode
+ ParameterId["QuantMode"] = "quantitativeMode";
+ // DPI_QuantCtrl, having type QuickFilterQuantitativeCtrl
+ ParameterId["QuantCtrl"] = "quantitativeControl";
+ // DPI_ZoneCommon, having type ZoneCommonPresModel
+ ParameterId["ZoneCommon"] = "zoneCommon";
+ // DPI_ZoneCommonListItems, having type ZoneCommonPresModel[]
+ ParameterId["ZoneCommonListItems"] = "zoneCommonListItems";
+ // DPI_Zone, having type ZonePresModel
+ ParameterId["Zone"] = "zone";
+ // DPI_Zones, having type Dictionary(of ZonePresModel)
+ ParameterId["Zones"] = "zones";
+ // DPI_ImageZone, having type ImageZonePresModel
+ ParameterId["ImageZone"] = "imageZone";
+ // DPI_WebZone, having type WebZonePresModel
+ ParameterId["WebZone"] = "webZone";
+ // DPI_ButtonZonePresModel, having type ButtonZonePresModel
+ ParameterId["ButtonZonePresModel"] = "buttonZone";
+ // DPI_ZoneEdgeMoveType, having type ZoneEdgeMove
+ ParameterId["ZoneEdgeMoveType"] = "zoneEdgeMoveType";
+ // DPI_ZoneSide, having type SideType
+ ParameterId["ZoneSide"] = "zoneSide";
+ // DPI_SnapPoint, having type SnapPointPresModel
+ ParameterId["SnapPoint"] = "snapPoint";
+ // DPI_SnapPoints, having type SnapPointPresModel[]
+ ParameterId["SnapPoints"] = "snapPoints";
+ // DPI_TargetPreviewPair, having type DragDropTargetPreviewPairPresModel
+ ParameterId["TargetPreviewPair"] = "targetPreviewPair";
+ // DPI_TargetPreviewPairs, having type DragDropTargetPreviewPairPresModel[]
+ ParameterId["TargetPreviewPairs"] = "targetPreviewPairs";
+ // DPI_ContainerGuide, having type DragDropContainerGuidePresModel
+ ParameterId["ContainerGuide"] = "containerGuide";
+ // DPI_ContainerGuides, having type DragDropContainerGuidePresModel[]
+ ParameterId["ContainerGuides"] = "containerGuides";
+ // DPI_ZoneBorder, having type DragDropZoneBorderPresModel
+ ParameterId["ZoneBorder"] = "zoneBorder";
+ // DPI_ZoneBorders, having type DragDropZoneBorderPresModel[]
+ ParameterId["ZoneBorders"] = "zoneBorders";
+ // DPI_DashboardDragDrop, having type DashboardDragDropPresModel
+ ParameterId["DashboardDragDrop"] = "zoneDragDrop";
+ // DPI_DragZoneResize, having type DragZoneResizePresModel
+ ParameterId["DragZoneResize"] = "zoneResize";
+ // DPI_DashboardText, having type TextRegionPresModel
+ ParameterId["DashboardText"] = "dashboardText";
+ // DPI_DashboardTitle, having type TextRegionPresModel
+ ParameterId["DashboardTitle"] = "dashboardTitle";
+ // DPI_QuickFilterTitle, having type TextRegionPresModel
+ ParameterId["QuickFilterTitle"] = "quickFilterTitle";
+ // DPI_VisualCaption, having type TextRegionPresModel
+ ParameterId["VisualCaption"] = "visualCaption";
+ // DPI_VisualTitle, having type TextRegionPresModel
+ ParameterId["VisualTitle"] = "visualTitle";
+ // DPI_ZoneTitleRegion, having type TextRegionPresModel
+ ParameterId["ZoneTitleRegion"] = "zoneTitle";
+ // DPI_ForecastOptions, having type ForecastPresModel
+ ParameterId["ForecastOptions"] = "forecastOptions";
+ // DPI_ForecastDescription, having type ForecastDescribePresModel
+ ParameterId["ForecastDescription"] = "forecastDescription";
+ // DPI_WorkgroupPublishObject, having type WorkgroupPublishObjectPresModel
+ ParameterId["WorkgroupPublishObject"] = "publishDataSource";
+ // DPI_PublishPermissionsSummary, having type PublishPermissionsSummaryPresModel
+ ParameterId["PublishPermissionsSummary"] = "publishPermissionsSummary";
+ // DPI_CheckNameResults, having type CheckNameResultsPresModel
+ ParameterId["CheckNameResults"] = "checkNameResults";
+ // DPI_ValidatePublishViewsResult, having type ValidatePublishViewsResultPresModel
+ ParameterId["ValidatePublishViewsResult"] = "validatePublishViewsResult";
+ // DPI_PublishAuthenticationSettings, having type PublishAuthenticationSettingsPresModel
+ ParameterId["PublishAuthenticationSettings"] = "publishAuthenticationSettings";
+ // DPI_ManageDatasources, having type ManageDatasourcesPresModel
+ ParameterId["ManageDatasources"] = "manageDatasources";
+ // DPI_CredentialsAuthSettings, having type CredentialsAuthSettingsPresModel
+ ParameterId["CredentialsAuthSettings"] = "credentialsAuthSettings";
+ // DPI_ConnectionCredentialsAuthSettings, having type ConnectionCredentialsAuthSettingsPresModel
+ ParameterId["ConnectionCredentialsAuthSettings"] = "connectionCredentialsAuthSettings";
+ // DPI_ConnectionCredentialsAuthSettingsList, having type ConnectionCredentialsAuthSettingsPresModel[]
+ ParameterId["ConnectionCredentialsAuthSettingsList"] = "connectionCredentialsAuthSettingsList";
+ // DPI_PublishDatasourceFromWorkbookInfo, having type PublishDatasourceFromWorkbookInfoPresModel
+ ParameterId["PublishDatasourceFromWorkbookInfo"] = "publishDatasourceFromWorkbookInfo";
+ // DPI_PublishDatasourcesFromWorkbookInfo, having type PublishDatasourceFromWorkbookInfoPresModel[]
+ ParameterId["PublishDatasourcesFromWorkbookInfo"] = "publishDatasourcesFromWorkbookInfo";
+ // DPI_PublishSheet, having type PublishSheetPresModel
+ ParameterId["PublishSheet"] = "publishSheet";
+ // DPI_PublishSheets, having type PublishSheetPresModel[]
+ ParameterId["PublishSheets"] = "publishSheets";
+ // DPI_PublishObjectViews, having type PublishObjectViewsPresModel
+ ParameterId["PublishObjectViews"] = "publishObjectViews";
+ // DPI_PublishObjectPublishSheetResults, having type PublishObjectPublishSheetResultsPresModel
+ ParameterId["PublishObjectPublishSheetResults"] = "publishObjectPublishSheetResults";
+ // DPI_RefreshExtractSchedulingSettings, having type RefreshExtractSchedulingSettingsPresModel
+ ParameterId["RefreshExtractSchedulingSettings"] = "refreshExtractSchedulingSettings";
+ // DPI_SetRefreshExtractScheduleResult, having type SetRefreshExtractScheduleResultPresModel
+ ParameterId["SetRefreshExtractScheduleResult"] = "setRefreshExtractScheduleResult";
+ // DPI_CheckPublishObjectNameWarningsResults, having type CheckPublishObjectNameWarningsResultsPresModel
+ ParameterId["CheckPublishObjectNameWarningsResults"] = "checkPublishObjectNameWarningsResults";
+ // DPI_PublishDatasourceOnWorkbookPublishResults, having type PublishDatasourceOnWorkbookPublishResultsPresModel
+ ParameterId["PublishDatasourceOnWorkbookPublishResults"] = "publishDatasourceOnWorkbookPublishResult";
+ // DPI_PublishDataSourceResult, having type PublishDataSourceResultPresModel
+ ParameterId["PublishDataSourceResult"] = "publishDataSourceResult";
+ // DPI_PublishWarningMessage, having type PublishWarningMessagePresModel
+ ParameterId["PublishWarningMessage"] = "publishWarningMessage";
+ // DPI_MustDowngradeToPublishWarningMessagePresModel, having type PublishWarningMessagePresModel
+ ParameterId["MustDowngradeToPublishWarningMessagePresModel"] = "mustDowngradeToPublishWarningMessagePresModel";
+ // DPI_PublishSelectedAttributes, having type PublishSelectedAttributesPresModel
+ ParameterId["PublishSelectedAttributes"] = "publishSelectedAttributes";
+ // DPI_AutosaveFile, having type AutosaveFilePresModel
+ ParameterId["AutosaveFile"] = "autosaveFile";
+ // DPI_AutosaveFiles, having type AutosaveFilePresModel[]
+ ParameterId["AutosaveFiles"] = "autosaveFiles";
+ // DPI_FunctionGroup, having type FunctionGroup
+ ParameterId["FunctionGroup"] = "funcGrp";
+ // DPI_FunctionGroups, having type FunctionGroup[]
+ ParameterId["FunctionGroups"] = "funcGrps";
+ // DPI_FunctionArgType, having type FunctionArgType
+ ParameterId["FunctionArgType"] = "funcArgType";
+ // DPI_FunctionArgTypes, having type FunctionArgType[]
+ ParameterId["FunctionArgTypes"] = "funcArgTypes";
+ // DPI_CalculationStyle, having type CalcStyle
+ ParameterId["CalculationStyle"] = "calculationStyle";
+ // DPI_Calculation, having type CalculationPresModel
+ ParameterId["Calculation"] = "calculation";
+ // DPI_TypeInPill, having type CalculationPresModel
+ ParameterId["TypeInPill"] = "typeInPill";
+ // DPI_CalcErrorInfo, having type CalcErrorInfoPresModel
+ ParameterId["CalcErrorInfo"] = "errorInfo";
+ // DPI_CalcErrorInfos, having type CalcErrorInfoPresModel[]
+ ParameterId["CalcErrorInfos"] = "errorInfoList";
+ // DPI_CalcualtionValidation, having type CalculationValidationPresModel
+ ParameterId["CalcualtionValidation"] = "calculationValidation";
+ // DPI_ExpressionFunction, having type ExpressionFunctionPresModel
+ ParameterId["ExpressionFunction"] = "expressionFunc";
+ // DPI_ExpressionFunctions, having type ExpressionFunctionPresModel[]
+ ParameterId["ExpressionFunctions"] = "expressionFuncList";
+ // DPI_ExpressionFunctionsPM, having type ExpressionFunctionsPresModel
+ ParameterId["ExpressionFunctionsPM"] = "expressionFuncPm";
+ // DPI_StyleToken, having type StyleTokenPresModel
+ ParameterId["StyleToken"] = "styleToken";
+ // DPI_StyleTokens, having type StyleTokenPresModel[]
+ ParameterId["StyleTokens"] = "styleTokenList";
+ // DPI_CalcEditorTextSelection, having type CalcEditorTextSelectionPresModel
+ ParameterId["CalcEditorTextSelection"] = "calcEditorTextSelection";
+ // DPI_AutoCompleteItemType, having type AutoCompleteItemType
+ ParameterId["AutoCompleteItemType"] = "autocompleteType";
+ // DPI_AutoCompleteItem, having type AutoCompleteItemPresModel
+ ParameterId["AutoCompleteItem"] = "autocompleteItem";
+ // DPI_AutoCompleteItems, having type AutoCompleteItemPresModel[]
+ ParameterId["AutoCompleteItems"] = "autocompleteItemList";
+ // DPI_CalculationAutoCompleteContextMenu, having type CalculationAutoCompleteContextMenuPresModel
+ ParameterId["CalculationAutoCompleteContextMenu"] = "calculationAutocompleteContextMenu";
+ // DPI_CalcApplyResult, having type CalcApplyResult
+ ParameterId["CalcApplyResult"] = "calculationApplyResult";
+ // DPI_RampBorderStyledBox, having type StyledBoxPresModel
+ ParameterId["RampBorderStyledBox"] = "rampBorderStyledBox";
+ // DPI_StyledBox, having type StyledBoxPresModel
+ ParameterId["StyledBox"] = "styledBox";
+ // DPI_GlobalStyledBox, having type StyledBoxPresModel
+ ParameterId["GlobalStyledBox"] = "globalStyledBox";
+ // DPI_StyleContext, having type StyleContextPresModel
+ ParameterId["StyleContext"] = "styleContext";
+ // DPI_CurrentTextStyle, having type TextStylePresModel
+ ParameterId["CurrentTextStyle"] = "currentTextStyle";
+ // DPI_LabelTextStyle, having type TextStylePresModel
+ ParameterId["LabelTextStyle"] = "labelTextStyle";
+ // DPI_OriginalTextStyle, having type TextStylePresModel
+ ParameterId["OriginalTextStyle"] = "originalTextStyle";
+ // DPI_SelectedTextStyleModel, having type TextStylePresModel
+ ParameterId["SelectedTextStyleModel"] = "selectedTextStyleModel";
+ // DPI_SwatchTextStyleModel, having type TextStylePresModel
+ ParameterId["SwatchTextStyleModel"] = "swatchTextStyle";
+ // DPI_TextStyleModel, having type TextStylePresModel
+ ParameterId["TextStyleModel"] = "textStyle";
+ // DPI_TitleStyleModel, having type TextStylePresModel
+ ParameterId["TitleStyleModel"] = "titleStyleModel";
+ // DPI_PropertyBag, having type PropertyBagPresModel
+ ParameterId["PropertyBag"] = "propBagWrapper";
+ // DPI_PresModelMap, having type Dictionary(of PropertyBagPresModel)
+ ParameterId["PresModelMap"] = "presModelMap";
+ // DPI_PresentationLayerNotifications, having type PresModelMapPresModel
+ ParameterId["PresentationLayerNotifications"] = "presentationLayerNotifications";
+ // DPI_SecondaryInfo, having type PresModelMapPresModel
+ ParameterId["SecondaryInfo"] = "secondaryInfo";
+ // DPI_ClientDashboardUIMetric, having type ClientDashboardUIMetricPresModel
+ ParameterId["ClientDashboardUIMetric"] = "clientDashboardUiMetric";
+ // DPI_ClientDashboardUIMetrics, having type ClientDashboardUIMetricPresModel[]
+ ParameterId["ClientDashboardUIMetrics"] = "clientDashboardUiMetrics";
+ // DPI_ClientDashboardUIMetricContainer, having type ClientDashboardUIMetricContainerPresModel
+ ParameterId["ClientDashboardUIMetricContainer"] = "clientDashboardUiMetricContainer";
+ // DPI_ExtSvcConfig, having type ExtSvcConfigPresModel
+ ParameterId["ExtSvcConfig"] = "extSvcConfig";
+ // DPI_StoryboardSheetItem, having type StoryboardSheetItemPresModel
+ ParameterId["StoryboardSheetItem"] = "storyboardSheetItem";
+ // DPI_StoryboardSheetItems, having type StoryboardSheetItemPresModel[]
+ ParameterId["StoryboardSheetItems"] = "storyboardSheetItems";
+ // DPI_StoryboardSheetList, having type StoryboardSheetListPresModel
+ ParameterId["StoryboardSheetList"] = "storyboardSheetList";
+ // DPI_FitToStoryBoardOptionItem, having type FitToStoryBoardOptionItemPresModel
+ ParameterId["FitToStoryBoardOptionItem"] = "fitToStoryboardOptionItem";
+ // DPI_FitToStoryBoardOptionItems, having type FitToStoryBoardOptionItemPresModel[]
+ ParameterId["FitToStoryBoardOptionItems"] = "fitToStoryboardOptionItems";
+ // DPI_FitToStoryBoardOptionList, having type FitToStoryBoardOptionListPresModel
+ ParameterId["FitToStoryBoardOptionList"] = "fitToStoryboardOptionList";
+ // DPI_StoryPointNavItem, having type StoryPointNavItemPresModel
+ ParameterId["StoryPointNavItem"] = "storypointNavItem";
+ // DPI_StoryPointNavItems, having type StoryPointNavItemPresModel[]
+ ParameterId["StoryPointNavItems"] = "storypointNavItems";
+ // DPI_FlipboardNav, having type FlipboardNavPresModel
+ ParameterId["FlipboardNav"] = "flipboardNav";
+ // DPI_ScrollBarStyle, having type ScrollBarStylePresModel
+ ParameterId["ScrollBarStyle"] = "scrollBarStyle";
+ // DPI_DashboardZoneLayoutPane, having type DashboardZoneLayoutPanePresModel
+ ParameterId["DashboardZoneLayoutPane"] = "dashboardZoneLayoutPane";
+ // DPI_SelectedStoryPointStyle, having type StoryPointCaptionStylePresModel
+ ParameterId["SelectedStoryPointStyle"] = "selectedStoryPointStyle";
+ // DPI_UnselectedStoryPointStyle, having type StoryPointCaptionStylePresModel
+ ParameterId["UnselectedStoryPointStyle"] = "unselectedStoryPointStyle";
+ // DPI_FlipboardNavStyle, having type FlipboardNavStylePresModel
+ ParameterId["FlipboardNavStyle"] = "flipboardNavStyle";
+ // DPI_StoryPoint, having type StoryPointPresModel
+ ParameterId["StoryPoint"] = "storyPoint";
+ // DPI_StoryPoints, having type Dictionary(of StoryPointPresModel)
+ ParameterId["StoryPoints"] = "storyPoints";
+ // DPI_Flipboard, having type FlipboardPresModel
+ ParameterId["Flipboard"] = "flipboard";
+ // DPI_StoryPair, having type StoryPairPresModel
+ ParameterId["StoryPair"] = "storyPair";
+ // DPI_StoryPairs, having type StoryPairPresModel[]
+ ParameterId["StoryPairs"] = "storyPairs";
+ // DPI_StoryboardPM, having type StoryboardPresModel
+ ParameterId["StoryboardPM"] = "storyboardPm";
+ // DPI_HiDpiIconDictionary, having type ImageCollectionPresModel
+ ParameterId["HiDpiIconDictionary"] = "hiDpiIconDictionary";
+ // DPI_IconDictionary, having type ImageCollectionPresModel
+ ParameterId["IconDictionary"] = "iconDictionary";
+ // DPI_IconResourceDictionary, having type ImageResourceCollectionPresModel
+ ParameterId["IconResourceDictionary"] = "iconResDictionary";
+ // DPI_DataPreviewWindowMessage, having type DataPreviewWindowMessagePresModel
+ ParameterId["DataPreviewWindowMessage"] = "dataPreviewWindowMessage";
+ // DPI_DataSourceData, having type DataSourceDataPresModel
+ ParameterId["DataSourceData"] = "dataSrcData";
+ // DPI_DataSourceSort, having type DataSourceSortPresModel
+ ParameterId["DataSourceSort"] = "dataSrcSort";
+ // DPI_ColumnInfo, having type DSColumnInfoPresModel
+ ParameterId["ColumnInfo"] = "columnInfo";
+ // DPI_ColumnInfos, having type DSColumnInfoPresModel[]
+ ParameterId["ColumnInfos"] = "columnInfos";
+ // DPI_DataFormatter, having type DVFormatter
+ ParameterId["DataFormatter"] = "dataFormatter";
+ // DPI_JoinDescription, having type JoinDescriptionPresModel
+ ParameterId["JoinDescription"] = "joinDescription";
+ // DPI_JoinDescriptions, having type Dictionary(of JoinDescriptionPresModel)
+ ParameterId["JoinDescriptions"] = "joinDescriptions";
+ // DPI_FileTableInfo, having type FileTableInfoPresModel
+ ParameterId["FileTableInfo"] = "fileTableInfo";
+ // DPI_FieldMapping, having type FieldMappingPresModel
+ ParameterId["FieldMapping"] = "fieldMapping";
+ // DPI_FieldMappingData, having type FieldMappingDataPresModel
+ ParameterId["FieldMappingData"] = "fieldMappingData";
+ // DPI_FieldMappingDataVector, having type FieldMappingDataPresModel[]
+ ParameterId["FieldMappingDataVector"] = "fieldMappingDataVector";
+ // DPI_FrameFinder, having type FrameFinderPresModel
+ ParameterId["FrameFinder"] = "frameFinder";
+ // DPI_SheetLinkFieldMapping, having type SheetLinkFieldMappingPresModel
+ ParameterId["SheetLinkFieldMapping"] = "sheetLinkFieldMapping";
+ // DPI_UnionInfo, having type UnionInfoPresModel
+ ParameterId["UnionInfo"] = "unionInfo";
+ // DPI_UnionTableInfo, having type UnionTableInfoPresMode
+ ParameterId["UnionTableInfo"] = "unionTableInfo";
+ // DPI_UnionTableInfos, having type UnionTableInfoPresModel[]
+ ParameterId["UnionTableInfos"] = "unionTableInfos";
+ // DPI_ConnectionPBUnionInfo, having type PBUnionInfoPresModel
+ ParameterId["ConnectionPBUnionInfo"] = "connectionPbunionInfo";
+ // DPI_ConnectionPBUnionInfos, having type PBUnionInfoPresModel[]
+ ParameterId["ConnectionPBUnionInfos"] = "connectionPbunionInfos";
+ // DPI_JoinClause, having type JoinClausePresModel
+ ParameterId["JoinClause"] = "joinClause";
+ // DPI_JoinClauses, having type JoinClausePresModel[]
+ ParameterId["JoinClauses"] = "joinClauses";
+ // DPI_JoinValidationResult, having type JoinValidationResultPresModel
+ ParameterId["JoinValidationResult"] = "joinValidationResult";
+ // DPI_JoinTableInfo, having type JoinTableInfoPresModel
+ ParameterId["JoinTableInfo"] = "joinTableInfo";
+ // DPI_ParameterInfo, having type JoinTableInfoPresModel
+ ParameterId["ParameterInfo"] = "parameterInfo";
+ // DPI_JoinTableInfos, having type JoinTableInfoPresModel[]
+ ParameterId["JoinTableInfos"] = "joinTableInfos";
+ // DPI_JoinOnCalcInfo, having type JoinOnCalcInfoPresModel
+ ParameterId["JoinOnCalcInfo"] = "joinOnCalcInfo";
+ // DPI_ConnectionSummary, having type ConnectionSummaryPresModel
+ ParameterId["ConnectionSummary"] = "connectionSummary";
+ // DPI_ConnectionSummaries, having type ConnectionSummaryPresModel[]
+ ParameterId["ConnectionSummaries"] = "connectionSummaries";
+ // DPI_TopLevelConnectionDescription, having type TopLevelConnectionDescriptionPresModel
+ ParameterId["TopLevelConnectionDescription"] = "topLevelConnectionDescription";
+ // DPI_DataConnectionTableViewMessages, having type DataConnectionTableViewMessagesPresModel
+ ParameterId["DataConnectionTableViewMessages"] = "dataConnectionTableViewMessages";
+ // DPI_TextTransformScript, having type TextTransformScriptPresModel
+ ParameterId["TextTransformScript"] = "textTransformScript";
+ // DPI_CalendarDateOptions, having type CalendarDateOptionsPresModel
+ ParameterId["CalendarDateOptions"] = "calendarDateOptions";
+ // DPI_GoToWorksheetTooltipPresModel, having type GoToWorksheetTooltipPresModel
+ ParameterId["GoToWorksheetTooltipPresModel"] = "goToWorksheetTooltipPresModel";
+ // DPI_TableCleaningPresModel, having type TableCleaningPresModel
+ ParameterId["TableCleaningPresModel"] = "tableCleaningPresModel";
+ // DPI_PivotPresModel, having type PivotPresModel
+ ParameterId["PivotPresModel"] = "pivotPresModel";
+ // DPI_PivotTreeItemPresModel, having type PivotTreeItemPresModel
+ ParameterId["PivotTreeItemPresModel"] = "pivotTreeItemPresModel";
+ // DPI_PivotTreeItems, having type PivotTreeItemPresModel[]
+ ParameterId["PivotTreeItems"] = "pivotTreeItemsPresModel";
+ // DPI_PivotDisplay, having type PivotDisplayPresModel
+ ParameterId["PivotDisplay"] = "pivotDisplay";
+ // DPI_PivotTag, having type NameColumnsPairPresModel
+ ParameterId["PivotTag"] = "pivotTag";
+ // DPI_PivotGroups, having type NameColumnsPairPresModel[]
+ ParameterId["PivotGroups"] = "pivotGroups";
+ // DPI_DataSourceDropdown, having type DataSourceDropdownPresModel
+ ParameterId["DataSourceDropdown"] = "dataSourceDropdown";
+ // DPI_ConnectionDropdown, having type ConnectionDropdownPresModel
+ ParameterId["ConnectionDropdown"] = "connectionDropdown";
+ // DPI_ActivityEvent, having type ActivityEventPresModel
+ ParameterId["ActivityEvent"] = "activityEvent";
+ // DPI_UIAutomation, having type UIAutomationPresModel
+ ParameterId["UIAutomation"] = "uiAutomation";
+ // DPI_UIAutomationIndex, having type UIAutomationIndexPresModel
+ ParameterId["UIAutomationIndex"] = "uiAutomationIndex";
+ // DPI_UIAutomationIndexList, having type UIAutomationIndexPresModel[]
+ ParameterId["UIAutomationIndexList"] = "uiAutomationIndexList";
+ // DPI_UIAutomationComponentInfo, having type UIAutomationComponentInfoPresModel
+ ParameterId["UIAutomationComponentInfo"] = "uiAutomationComponentInfo";
+ // DPI_UIAutomationComponentInfoList, having type UIAutomationComponentInfoPresModel[]
+ ParameterId["UIAutomationComponentInfoList"] = "uiAutomationComponentInfoList";
+ // DPI_Geometry, having type GeometryPresModel
+ ParameterId["Geometry"] = "geometry";
+ // DPI_MultiPoint, having type MultiPointPresModel
+ ParameterId["MultiPoint"] = "multiPoint";
+ // DPI_MultiLine, having type MultiLinePresModel
+ ParameterId["MultiLine"] = "multiLine";
+ // DPI_MultiPolygon, having type MultiPolygonPresModel
+ ParameterId["MultiPolygon"] = "multiPolygon";
+ // DPI_Polygon, having type PolygonPresModel
+ ParameterId["Polygon"] = "polygon";
+ // DPI_PolygonList, having type PolygonPresModel[]
+ ParameterId["PolygonList"] = "polygonList";
+ // DPI_Line, having type LinePresModel
+ ParameterId["Line"] = "line";
+ // DPI_LineList, having type LinePresModel[]
+ ParameterId["LineList"] = "lineList";
+ // DPI_TabbedAuthentication, having type TabbedAuthenticationPresModel
+ ParameterId["TabbedAuthentication"] = "tabbedAuthentication";
+ // DPI_TabbedAuthenticationTabInfo, having type TabbedAuthenticationTabInfoPresModel
+ ParameterId["TabbedAuthenticationTabInfo"] = "tabbedAuthenticationTabInfo";
+ // DPI_TabbedAuthenticationTabInfos, having type TabbedAuthenticationTabInfoPresModel[]
+ ParameterId["TabbedAuthenticationTabInfos"] = "tabbedAuthenticationTabInfos";
+ // DPI_GeographicSearchCandidate, having type GeographicSearchCandidatePresModel
+ ParameterId["GeographicSearchCandidate"] = "geographicSearchCandidate";
+ // DPI_GeographicSearchCandidateList, having type GeographicSearchCandidatePresModel[]
+ ParameterId["GeographicSearchCandidateList"] = "geographicSearchCandidateList";
+ // DPI_GeographicSearchResults, having type GeographicSearchPresModel
+ ParameterId["GeographicSearchResults"] = "geographicSearchResults";
+ // DPI_ParamInfo, having type ParameterInfoPresModel
+ ParameterId["ParamInfo"] = "paramInfo";
+ // DPI_ParamInfos, having type ParameterInfoPresModel[]
+ ParameterId["ParamInfos"] = "paramInfos";
+ // DPI_ParamNamespaceInfo, having type ParameterNamespaceInfoInfoPresModel
+ ParameterId["ParamNamespaceInfo"] = "paramNamespaceInfo";
+ // DPI_ParamNamespaceInfos, having type ParameterNamespaceInfoPresModel[]
+ ParameterId["ParamNamespaceInfos"] = "paramNamespaceInfos";
+ // DPI_ParamRegistryInfo, having type ParameterRegistryInfoPresModel
+ ParameterId["ParamRegistryInfo"] = "paramRegistryInfo";
+ // DPI_DataSourceProperties, having type DataSourcePropertiesPresModel
+ ParameterId["DataSourceProperties"] = "connectionProperties";
+ // DPI_ConnectionTypePresModel, having type ConnectionTypePresModel
+ ParameterId["ConnectionTypePresModel"] = "connectionTypePresModel";
+ // DPI_ConnectionTypes, having type ConnectionTypePresModel[]
+ ParameterId["ConnectionTypes"] = "connectionTypes";
+ // DPI_ConnectionTypeGroupPresModel, having type ConnectionTypeGroupPresModel
+ ParameterId["ConnectionTypeGroupPresModel"] = "connectionTypeGroupPresModel";
+ // DPI_SavedDataSourcePresModel, having type SavedDataSourcePresModel
+ ParameterId["SavedDataSourcePresModel"] = "savedDatasourcePresModel";
+ // DPI_SavedDataSources, having type SavedDataSourcePresModel[]
+ ParameterId["SavedDataSources"] = "savedDatasources";
+ // DPI_SavedDataSourcesPresModel, having type SavedDataSourcesPresModel
+ ParameterId["SavedDataSourcesPresModel"] = "savedDatasourcesPresModel";
+ // DPI_OpenPaneItemPresModel, having type OpenPaneItemPresModel
+ ParameterId["OpenPaneItemPresModel"] = "openPaneItemPresModel";
+ // DPI_OpenPaneItems, having type OpenPaneItemPresModel[]
+ ParameterId["OpenPaneItems"] = "openPaneItems";
+ // DPI_OpenPaneItemsPresModel, having type OpenPaneItemsPresModel
+ ParameterId["OpenPaneItemsPresModel"] = "openPaneItemsPresModel";
+ // DPI_VariableValue, having type VariableValuePresModel
+ ParameterId["VariableValue"] = "variableValue";
+ // DPI_VariableValues, having type VariableValuePresModel[]
+ ParameterId["VariableValues"] = "variableValues";
+ // DPI_ServerVariableValue, having type ServerVariableValuePresModel
+ ParameterId["ServerVariableValue"] = "serverVariableValue";
+ // DPI_EditableVariableValue, having type EditableVariableValuePresModel
+ ParameterId["EditableVariableValue"] = "editableVariableValue";
+ // DPI_ServerVariableMetadata, having type ServerVariableMetadataPresModel
+ ParameterId["ServerVariableMetadata"] = "serverVariableMetadata";
+ // DPI_PromptVariable, having type PromptVariablePresModel
+ ParameterId["PromptVariable"] = "promptVariable";
+ // DPI_PromptVariables, having type PromptVariablePresModel[]
+ ParameterId["PromptVariables"] = "promptVariables";
+ // DPI_VariablePromptDialog, having type VariablePromptDialogPresModel
+ ParameterId["VariablePromptDialog"] = "variablePromptDialog";
+ // DPI_VariableValueOperation, having type VariableValueOperationPresModel
+ ParameterId["VariableValueOperation"] = "variableValueOperation";
+ // DPI_VariableValueOperations, having type VariableValueOperationPresModel[]
+ ParameterId["VariableValueOperations"] = "variableValueOperations";
+ // DPI_TableOptionsPresModel, having type TableOptionsPresModel
+ ParameterId["TableOptionsPresModel"] = "tableOptionsPresModel";
+ // DPI_ClientInfoPresModel, having type ClientInfoPresModel
+ ParameterId["ClientInfoPresModel"] = "clientInfoPresModel";
+ // DPI_TableauFileInfoPresModel, having type TableauFileInfoPresModel
+ ParameterId["TableauFileInfoPresModel"] = "tableauFileInfoPresModel";
+ // DPI_DebuggingInfoPresModel, having type DebuggingInfoPresModel
+ ParameterId["DebuggingInfoPresModel"] = "debuggingInfoPresModel";
+ // DPI_RunningThreadInfoPresModel, having type RunningThreadInfoPresModel
+ ParameterId["RunningThreadInfoPresModel"] = "runningThreadInfoPresModel";
+ // DPI_AboutDialogInfoPresModel, having type AboutDialogInfoPresModel
+ ParameterId["AboutDialogInfoPresModel"] = "aboutDialogInfoPresModel";
+ // DPI_HybridUIShowcasePresModel, having type HybridUIShowcasePresModel
+ ParameterId["HybridUIShowcasePresModel"] = "hybridUiShowcasePresModel";
+ // DPI_MenuConfiguration, having type MenuConfigurationPresModel
+ ParameterId["MenuConfiguration"] = "menuConfiguration";
+ // DPI_MenuItem, having type MenuItemPresModel
+ ParameterId["MenuItem"] = "menuItem";
+ // DPI_MenuItemModels, having type MenuItemPresModel[]
+ ParameterId["MenuItemModels"] = "menuItemModels";
+ // DPI_DefaultTextFormat, having type DefaultTextFormatPresModel
+ ParameterId["DefaultTextFormat"] = "defaultTextFormat";
+ // DPI_MapBoxServerInfoPresModel, having type MapBoxServerInfoPresModel
+ ParameterId["MapBoxServerInfoPresModel"] = "mapboxServerInfoPresModel";
+ // DPI_WMSServerInfoPresModel, having type WMSServerInfoPresModel
+ ParameterId["WMSServerInfoPresModel"] = "wmsServerInfoPresModel";
+ // DPI_MapSourceConflictPresModel, having type MapSourceConflictPresModel
+ ParameterId["MapSourceConflictPresModel"] = "mapSourceConflictPresModel";
+ // DPI_EnumeratedSetDialogPresModel, having type EnumeratedSetDialogPresModel
+ ParameterId["EnumeratedSetDialogPresModel"] = "enumeratedSetDialogPresModel";
+ // DPI_EditAliasesDialog, having type EditAliasesDialogPresModel
+ ParameterId["EditAliasesDialog"] = "editAliasesDialogPresModel";
+ // DPI_AliasesPresModel, having type AliasesPresModel
+ ParameterId["AliasesPresModel"] = "aliasesPresModel";
+ // DPI_ClearAliasesPresModel, having type AliasesPresModel
+ ParameterId["ClearAliasesPresModel"] = "clearAliasesPresModel";
+ // DPI_NewAliasesPresModel, having type NewAliasesPresModel
+ ParameterId["NewAliasesPresModel"] = "newAliasesPresModel";
+ // DPI_AliasPresModel, having type AliasPresModel
+ ParameterId["AliasPresModel"] = "aliasPresModel";
+ // DPI_AliasItem, having type AliasItemPresModel
+ ParameterId["AliasItem"] = "aliasItem";
+ // DPI_DuplicateAliasItem, having type AliasItemPresModel
+ ParameterId["DuplicateAliasItem"] = "duplicateAliasItem";
+ // DPI_AliasList, having type AliasItemPresModel[]
+ ParameterId["AliasList"] = "aliasList";
+ // DPI_AliasResultItem, having type AliasResultItemPresModel
+ ParameterId["AliasResultItem"] = "aliasResultItem";
+ // DPI_AliasResultList, having type AliasResultItemPresModel[]
+ ParameterId["AliasResultList"] = "aliasResultList";
+ // DPI_AliasResults, having type AliasResultsPresModel
+ ParameterId["AliasResults"] = "aliasResults";
+ // DPI_EditSetDialogPresModel, having type EditSetDialogPresModel
+ ParameterId["EditSetDialogPresModel"] = "editSetDialogPresModel";
+ // DPI_ConfirmationPresModel, having type ConfirmationPresModel
+ ParameterId["ConfirmationPresModel"] = "confirmationPresModel";
+ // DPI_NotificationPresModel, having type NotificationPresModel
+ ParameterId["NotificationPresModel"] = "notificationPresModel";
+ // DPI_RetargetDataSourceDialogPresModel, having type RetargetDataSourceDialogPresModel
+ ParameterId["RetargetDataSourceDialogPresModel"] = "retargetDatasourceDialogPresModel";
+ // DPI_SharedFilterPresModel, having type SharedFilterPresModel
+ ParameterId["SharedFilterPresModel"] = "sharedFilterPresModel";
+ // DPI_SharedFilterWorksheetInfo, having type SharedFilterWorksheetInfoPresModel
+ ParameterId["SharedFilterWorksheetInfo"] = "sharedFilterWorksheetInfo";
+ // DPI_SharedFilterWorksheetInfoList, having type SharedFilterWorksheetInfoPresModel[]
+ ParameterId["SharedFilterWorksheetInfoList"] = "sharedFilterWorksheetInfoList";
+ // DPI_FieldPickerTreePresModel, having type FieldPickerTreePresModel
+ ParameterId["FieldPickerTreePresModel"] = "fieldPickerTreePresModel";
+ // DPI_FieldPickerTreePresModelSource, having type FieldPickerTreePresModel
+ ParameterId["FieldPickerTreePresModelSource"] = "fieldPickerTreePresModelSource";
+ // DPI_FieldPickerTreePresModelTarget, having type FieldPickerTreePresModel
+ ParameterId["FieldPickerTreePresModelTarget"] = "fieldPickerTreePresModelTarget";
+ // DPI_ErrorInfo, having type ErrorInfoPresModel
+ ParameterId["ErrorInfo"] = "errorInfoPresModel";
+ // DPI_CustomSplitPresModel, having type CustomSplitPresModel
+ ParameterId["CustomSplitPresModel"] = "customSplitPresModel";
+ // DPI_PageSetup, having type PageSetupPresModel
+ ParameterId["PageSetup"] = "pageSetup";
+ // DPI_ServerConnectStatus, having type ServerConnectionStatus
+ ParameterId["ServerConnectStatus"] = "serverConnectionStatus";
+ // DPI_GetFilterItemsResponse, having type GetFilterItemsResponsePresModel
+ ParameterId["GetFilterItemsResponse"] = "getFilterItemsResponse";
+ // DPI_FilterSearchResponse, having type FilterSearchResponsePresModel
+ ParameterId["FilterSearchResponse"] = "filterSearchResponse";
+ // DPI_FilterSearchWithIndexResponse, having type FilterSearchWithIndexResponsePresModel
+ ParameterId["FilterSearchWithIndexResponse"] = "filterSearchWithIndexResponse";
+ // DPI_FilterShowChildrenResponse, having type FilterShowChildrenResponsePresModel
+ ParameterId["FilterShowChildrenResponse"] = "filterShowChildrenResponse";
+ // DPI_EditDataServerConnection, having type EditDataServerConnectionPresModel
+ ParameterId["EditDataServerConnection"] = "editDataServerConnection";
+ // DPI_ImagesEdit, having type ImagesEditPresModel
+ ParameterId["ImagesEdit"] = "imagesEdit";
+ // DPI_BackgroundImage, having type BackgroundImagePresModel
+ ParameterId["BackgroundImage"] = "backgroundImage";
+ // DPI_BackgroundImages, having type BackgroundImagePresModel[]
+ ParameterId["BackgroundImages"] = "backgroundImages";
+ // DPI_Predicate, having type PredicatePresModel
+ ParameterId["Predicate"] = "predicate";
+ // DPI_Predicates, having type PredicatePresModel[]
+ ParameterId["Predicates"] = "predicates";
+ // DPI_ImagesEditResult, having type ImagesEditResultPresModel
+ ParameterId["ImagesEditResult"] = "imagesEditResult";
+ // DPI_SortDialogPresModel, having type SortDialogPresModel
+ ParameterId["SortDialogPresModel"] = "sortDialogPresModel";
+ // DPI_CompoundTableCalc, having type CompoundTableCalculationPresModel
+ ParameterId["CompoundTableCalc"] = "compoundTableCalculationPresModel";
+ // DPI_TableCalc, having type TableCalculationPresModel
+ ParameterId["TableCalc"] = "tableCalculationPresModel";
+ // DPI_TableCalcs, having type TableCalculationPresModel[]
+ ParameterId["TableCalcs"] = "tableCalculationPresModels";
+ // DPI_TableCalcIdentifier, having type TableCalcIdentifierPresModel
+ ParameterId["TableCalcIdentifier"] = "tableCalcIdentifier";
+ // DPI_NestedTableCalcInfo, having type NestedTableCalcInfoPresModel
+ ParameterId["NestedTableCalcInfo"] = "nestedTableCalcInfo";
+ // DPI_NestedTableCalcInfos, having type NestedTableCalcInfoPresModel[]
+ ParameterId["NestedTableCalcInfos"] = "nestedTableCalcInfos";
+ // DPI_Ordering, having type TableCalcOrderingPresModel
+ ParameterId["Ordering"] = "tableCalcOrderingPresModel";
+ // DPI_Cumulative, having type CumulativeTableCalcPresModel
+ ParameterId["Cumulative"] = "cumulativeTableCalcPresModel";
+ // DPI_ReferenceOptions, having type TableCalcReferenceOptionsPresModel
+ ParameterId["ReferenceOptions"] = "tableCalcReferenceOptionsPresModel";
+ // DPI_Difference, having type DifferenceTableCalcPresModel
+ ParameterId["Difference"] = "differenceTableCalcPresModel";
+ // DPI_Window, having type WindowTableCalcPresModel
+ ParameterId["Window"] = "windowTableCalcPresModel";
+ // DPI_PercentTotal, having type PercentTotalTableCalcPresModel
+ ParameterId["PercentTotal"] = "percentTotalTableCalcPresModel";
+ // DPI_Rank, having type RankTableCalcPresModel
+ ParameterId["Rank"] = "rankTableCalcPresModel";
+ // DPI_Custom, having type CustomTableCalcPresModel
+ ParameterId["Custom"] = "customTableCalcPresModel";
+ // DPI_WebDataUrl, having type WebDataUrlPresModel
+ ParameterId["WebDataUrl"] = "webDataUrl";
+ // DPI_VisitedWebDataConnectors, having type WebDataUrlPresModel[]
+ ParameterId["VisitedWebDataConnectors"] = "visitedWebDataConnectors";
+ // DPI_WebDataSessionUrls, having type WebDataUrlPresModel[]
+ ParameterId["WebDataSessionUrls"] = "webDataSessionUrls";
+ // DPI_WebDataUrls, having type WebDataUrlPresModel[]
+ ParameterId["WebDataUrls"] = "webDataUrls";
+ // DPI_FieldPicker, having type FieldPickerPresModel
+ ParameterId["FieldPicker"] = "fieldPicker";
+ // DPI_DescribeField, having type DescribeFieldPresModel
+ ParameterId["DescribeField"] = "describeField";
+ // DPI_ShowDataPresModel, having type ShowDataPresModel
+ ParameterId["ShowDataPresModel"] = "showDataPresModel";
+ // DPI_DataTablePresModel, having type ShowDataTablePresModel
+ ParameterId["DataTablePresModel"] = "dataTablePresModel";
+ // DPI_DataTablePresModels, having type ShowDataTablePresModel[]
+ ParameterId["DataTablePresModels"] = "dataTablePresModels";
+ // DPI_SummaryTablePresModels, having type ShowDataTablePresModel[]
+ ParameterId["SummaryTablePresModels"] = "summaryTablePresModels";
+ // DPI_RefreshAllExtractsPresModel, having type RefreshAllExtractsPresModel
+ ParameterId["RefreshAllExtractsPresModel"] = "refeshAllExtractsPresModel";
+ // DPI_RefreshExtractDataSourcePresModel, having type RefreshExtractDataSourcePresModel
+ ParameterId["RefreshExtractDataSourcePresModel"] = "refreshExtractDatasourcePresModel";
+ // DPI_RefreshExtractDataSourceList, having type RefreshExtractDataSourcePresModel[]
+ ParameterId["RefreshExtractDataSourceList"] = "refreshExtractDatasourceList";
+ // DPI_ExtractHistoryPresModel, having type ExtractHistoryPresModel
+ ParameterId["ExtractHistoryPresModel"] = "extractHistoryPresModel";
+ // DPI_ExtractHistoryItemPresModel, having type ExtractHistoryItemPresModel
+ ParameterId["ExtractHistoryItemPresModel"] = "extractHistoryItem";
+ // DPI_ExtractHistoryList, having type ExtractHistoryItemPresModel[]
+ ParameterId["ExtractHistoryList"] = "extractHistoryList";
+ // DPI_DataProviderPresModel, having type DataProviderPresModel
+ ParameterId["DataProviderPresModel"] = "dataProviderPresModel";
+ // DPI_FormatItem, having type FormatItemPresModel
+ ParameterId["FormatItem"] = "formatItem";
+ // DPI_FormatItemList, having type FormatItemPresModel[]
+ ParameterId["FormatItemList"] = "formatItemList";
+ // DPI_FormatContainer, having type FormatContainerPresModel
+ ParameterId["FormatContainer"] = "formatContainer";
+ // DPI_FormatPane, having type FormatPanePresModel
+ ParameterId["FormatPane"] = "formatPane";
+ // DPI_FormatSection, having type FormatSectionPresModel
+ ParameterId["FormatSection"] = "formatSection";
+ // DPI_CollapsibleSection, having type CollapsibleSectionPresModel
+ ParameterId["CollapsibleSection"] = "collapsibleSection";
+ // DPI_CompositeContainer, having type CompositeContainerPresModel
+ ParameterId["CompositeContainer"] = "compositeContainer";
+ // DPI_UnitContainer, having type UnitContainerPresModel
+ ParameterId["UnitContainer"] = "unitContainer";
+ // DPI_TabGroup, having type TabGroupPresModel
+ ParameterId["TabGroup"] = "tabGroup";
+ // DPI_Tab, having type TabPresModel
+ ParameterId["Tab"] = "tab";
+ // DPI_FormatControl, having type FormatControlPresModel
+ ParameterId["FormatControl"] = "formatControl";
+ // DPI_TextControl, having type TextControlPresModel
+ ParameterId["TextControl"] = "textControl";
+ // DPI_NumericControl, having type NumericControlPresModel
+ ParameterId["NumericControl"] = "numericControl";
+ // DPI_ColorControl, having type ColorControlPresModel
+ ParameterId["ColorControl"] = "colorControl";
+ // DPI_ToggleControl, having type ToggleControlPresModel
+ ParameterId["ToggleControl"] = "toggleControl";
+ // DPI_SelectorControl, having type SelectorControlPresModel
+ ParameterId["SelectorControl"] = "enumStringStyle";
+ // DPI_StatsAnalyticSpec, having type StatsAnalyticSpecPresModel
+ ParameterId["StatsAnalyticSpec"] = "statsAnalyticSpec";
+ // DPI_ClusterSpec, having type ClusterSpecPresModel
+ ParameterId["ClusterSpec"] = "clusteringSpec";
+ // DPI_ClusterResults, having type ClusterResultsPresModel
+ ParameterId["ClusterResults"] = "clusterResults";
+ // DPI_ClusterUnit, having type ClusterUnitPresModel
+ ParameterId["ClusterUnit"] = "cluster";
+ // DPI_ClusterUnits, having type ClusterUnitPresModel[]
+ ParameterId["ClusterUnits"] = "clusterUnitPresModels";
+ // DPI_ClusterFieldANOVA, having type ClusterFieldANOVAPresModel
+ ParameterId["ClusterFieldANOVA"] = "clusterFieldAnova";
+ // DPI_ClusterFieldANOVATable, having type ClusterFieldANOVAPresModel[]
+ ParameterId["ClusterFieldANOVATable"] = "clusterFieldAnovaTablePresModel";
+ // DPI_ClusterEdit, having type ClusterEditPresModel
+ ParameterId["ClusterEdit"] = "clusterEditPresModel";
+ // DPI_ClusterDescription, having type ClusterDescribePresModel
+ ParameterId["ClusterDescription"] = "clusterDescription";
+ // DPI_OutlierResults, having type OutlierResultsPresModel
+ ParameterId["OutlierResults"] = "outlierResults";
+ // DPI_ConnectToDataServerSourceResult, having type ConnectToDataServerSourceResultPresModel
+ ParameterId["ConnectToDataServerSourceResult"] = "connectToDataServerSourceResult";
+ // DPI_DataServerConnectionReturnStatus, having type ConnectToDataServerSourceResultPresModel
+ ParameterId["DataServerConnectionReturnStatus"] = "dataServerConnectionReturnStatus";
+ // DPI_WebQuantitativeColorDialog, having type WebQuantitativeColorDialogPresModel
+ ParameterId["WebQuantitativeColorDialog"] = "quantitativeColorDialog";
+ // DPI_WebCategoricalColorDialog, having type WebCategoricalColorDialogPresModel
+ ParameterId["WebCategoricalColorDialog"] = "categoricalColorDialog";
+ // DPI_WebSaveDatasourceDialog, having type WebSaveDatasourceDialogPresModel
+ ParameterId["WebSaveDatasourceDialog"] = "saveDatasourceDialog";
+ // DPI_BorderStyleSpec, having type StyleSpecPresModel
+ ParameterId["BorderStyleSpec"] = "borderStyleSpec";
+ // DPI_HaloStyleSpec, having type StyleSpecPresModel
+ ParameterId["HaloStyleSpec"] = "haloStyleSpec";
+ // DPI_MarksColorUberEffects, having type MarksColorUberEffectsPresModel
+ ParameterId["MarksColorUberEffects"] = "marksColorUberEffects";
+ // DPI_CategoricalColorEncoding, having type CategoricalColorEncodingPresModel
+ ParameterId["CategoricalColorEncoding"] = "categoricalColorEncoding";
+ // DPI_CategoricalShapeEncoding, having type CategoricalShapeEncodingPresModel
+ ParameterId["CategoricalShapeEncoding"] = "categoricalShapeEncoding";
+ // DPI_ShapePalettePresModel, having type ShapePalettePresModel
+ ParameterId["ShapePalettePresModel"] = "shapePalettePresModel";
+ // DPI_ShapePalettePresModels, having type ShapePalettePresModel[]
+ ParameterId["ShapePalettePresModels"] = "shapePalettePresModels";
+ // DPI_DataSourceDateProperties, having type DataSourceDatePropertiesPresModel
+ ParameterId["DataSourceDateProperties"] = "datasourceDateProperties";
+ // DPI_DatePropertiesDateFormat, having type DatePropertiesDateFormatPresModel
+ ParameterId["DatePropertiesDateFormat"] = "datePropertiesDateFormat";
+ // DPI_DatePropertiesDateFormats, having type DatePropertiesDateFormatPresModel[]
+ ParameterId["DatePropertiesDateFormats"] = "datePropertiesDateFormats";
+ // DPI_HierarchySelect, having type HierarchySelectModel
+ ParameterId["HierarchySelect"] = "hierarchySelect";
+ // DPI_HierarchySelectMember, having type HierarchySelectMemberPresModel
+ ParameterId["HierarchySelectMember"] = "hierarchySelectMember";
+ // DPI_HierarchySelectMemberList, having type HierarchySelectMemberPresModel[]
+ ParameterId["HierarchySelectMemberList"] = "hierarchySelectMemberList";
+ // DPI_HierarchySetDefaultMember, having type HierarchySetDefaultMemberPresModel
+ ParameterId["HierarchySetDefaultMember"] = "hierarchySetDefaultMember";
+ // DPI_SemiStructSchema, having type SemiStructSchemaPresModel
+ ParameterId["SemiStructSchema"] = "semiStructSchema";
+ // DPI_SemiStructSchemaMember, having type SemiStructSchemaMemberPresModel
+ ParameterId["SemiStructSchemaMember"] = "semiStructSchemaMember";
+ // DPI_SemiStructSchemaMemberList, having type SemiStructSchemaMemberPresModel[]
+ ParameterId["SemiStructSchemaMemberList"] = "semiStructSchemaMemberList";
+ // DPI_ParameterEditInfo, having type ParameterEditInfoPresModel
+ ParameterId["ParameterEditInfo"] = "parameterEditInfo";
+ // DPI_ProductParameterInfo, having type ProductParameterInfoPresModel
+ ParameterId["ProductParameterInfo"] = "productParameterInfo";
+ // DPI_CaptionedDatasourceField, having type CaptionedDatasourceInfoPresModel
+ ParameterId["CaptionedDatasourceField"] = "captionedDatasourceField";
+ // DPI_CaptionedDatasourceFields, having type CaptionedDatasourceInfoPresModel[]
+ ParameterId["CaptionedDatasourceFields"] = "captionedDatasourceFields";
+ // DPI_EditedParameterRangeDomain, having type ParameterRangeDomainPresModel
+ ParameterId["EditedParameterRangeDomain"] = "editedParameterRangeDomain";
+ // DPI_ParameterRangeDomain, having type ParameterRangeDomainPresModel
+ ParameterId["ParameterRangeDomain"] = "parameterRangeDomain";
+ // DPI_ParameterListDomain, having type ParameterListDomainPresModel
+ ParameterId["ParameterListDomain"] = "parameterListDomain";
+ // DPI_ParameterListDomainMember, having type ParameterListDomainMemberPresModel
+ ParameterId["ParameterListDomainMember"] = "parameterListDomainMember";
+ // DPI_ParameterListDomainMembers, having type ParameterListDomainMemberPresModel[]
+ ParameterId["ParameterListDomainMembers"] = "parameterListDomainMembers";
+ // DPI_IndexedDomainMember, having type IndexedDomainMemberPresModel
+ ParameterId["IndexedDomainMember"] = "indexedDomainMember";
+ // DPI_IndexedDomainMembers, having type IndexedDomainMemberPresModel[]
+ ParameterId["IndexedDomainMembers"] = "indexedDomainMembers";
+ // DPI_NewIndexedDomainMembers, having type IndexedDomainMemberPresModel[]
+ ParameterId["NewIndexedDomainMembers"] = "newIndexedDomainMembers";
+ // DPI_ParameterListDomainDiff, having type parameter-list-domain-diff
+ ParameterId["ParameterListDomainDiff"] = "parameterListDomainDiff";
+ // DPI_IndexRange, having type IndexRangePresModel
+ ParameterId["IndexRange"] = "indexRange";
+ // DPI_IndexRanges, having type IndexRangePresModel[]
+ ParameterId["IndexRanges"] = "indexRanges";
+ // DPI_CategoricalFind, having type CategoricalFindPresModel
+ ParameterId["CategoricalFind"] = "categoricalFind";
+ // DPI_CaptionedDataValue, having type CaptionedDataValuePresModel
+ ParameterId["CaptionedDataValue"] = "captionedDataValue";
+ // DPI_SelectedValueCaption, having type CaptionedDataValuePresModel
+ ParameterId["SelectedValueCaption"] = "selectedValueCaption";
+ // DPI_DataValueCaptionList, having type CaptionedDataValuePresModel[]
+ ParameterId["DataValueCaptionList"] = "dataValueCatpionList";
+ // DPI_RangeDataValue, having type RangeDataValuePresModel
+ ParameterId["RangeDataValue"] = "rangeDataValue";
+ // DPI_ParameterRangeDataValue, having type RangeDataValuePresModel
+ ParameterId["ParameterRangeDataValue"] = "parameterRangeDataValue";
+ // DPI_DataValueRangeCaptions, having type DataValueRangeCaptionsPresModel
+ ParameterId["DataValueRangeCaptions"] = "dataValueRangeCaptions";
+ // DPI_IndependentDimension, having type IndependentDimensionPresModel
+ ParameterId["IndependentDimension"] = "independentDimension";
+ // DPI_IndependentDimensions, having type IndependentDimensionPresModel[]
+ ParameterId["IndependentDimensions"] = "independentDimensions";
+ // DPI_AttributePerspective, having type PerspectivePresModel
+ ParameterId["AttributePerspective"] = "attributePerspective";
+ // DPI_CubePerspective, having type PerspectivePresModel
+ ParameterId["CubePerspective"] = "cubePerspective";
+ // DPI_AttributePerspectives, having type PerspectivePresModel[]
+ ParameterId["AttributePerspectives"] = "attributePerspectives";
+ // DPI_CalculatedMembersForEditingPresModel, having type EditCalculatedMembersPresModel
+ ParameterId["CalculatedMembersForEditingPresModel"] = "calculatedMembersForEditingPresmodel";
+ // DPI_CalculatedMember, having type CalculatedMemberPresModel
+ ParameterId["CalculatedMember"] = "calculatedMember";
+ // DPI_NewCalculatedMember, having type CalculatedMemberPresModel
+ ParameterId["NewCalculatedMember"] = "newCalculatedMember";
+ // DPI_UpdatedCalculatedMember, having type CalculatedMemberPresModel
+ ParameterId["UpdatedCalculatedMember"] = "updatedCalculatedMember";
+ // DPI_CalculatedMembersList, having type CalculatedMemberPresModel[]
+ ParameterId["CalculatedMembersList"] = "calculatedMembersList";
+ // DPI_CalculatedMemberHierarchyItem, having type CalculatedMemberHierarchyItemPresModel
+ ParameterId["CalculatedMemberHierarchyItem"] = "calculatedMemberHierarchyItem";
+ // DPI_CalculatedMemberHierarchyList, having type CalculatedMemberHierarchyItemPresModel[]
+ ParameterId["CalculatedMemberHierarchyList"] = "calculatedMemberHierarchyList";
+ // DPI_SummaryCardPresModel, having type SummaryCardPresModel
+ ParameterId["SummaryCardPresModel"] = "summaryCard";
+ // DPI_MeasureSummary, having type MeasureSummaryPresModel
+ ParameterId["MeasureSummary"] = "measureSummary";
+ // DPI_MeasureSummaryList, having type MeasureSummaryPresModel[]
+ ParameterId["MeasureSummaryList"] = "measureSummaryList";
+ // DPI_AnnotationPresModel, having type AnnotationPresModel
+ ParameterId["AnnotationPresModel"] = "annotation";
+ // DPI_AnnotationList, having type AnnotationPresModel[]
+ ParameterId["AnnotationList"] = "annotationList";
+ // DPI_AnnotationShapeStyle, having type AnnotationShapeStylePresModel
+ ParameterId["AnnotationShapeStyle"] = "annotationShapeStyle";
+ // DPI_Telemetry, having type TelemetryPresModel
+ ParameterId["Telemetry"] = "telemetry";
+ // DPI_DataSourceTelemetry, having type DataSourceTelemetryPresModel
+ ParameterId["DataSourceTelemetry"] = "dataSourceTelemetry";
+ // DPI_DataSourceTelemetryList, having type DataSourceTelemetryPresModel[]
+ ParameterId["DataSourceTelemetryList"] = "dataSourceTelemetryList";
+ // DPI_VisualSpecificationTelemetry, having type VisualSpecificationTelemetryPresModel
+ ParameterId["VisualSpecificationTelemetry"] = "visualSpecificationTelemetry";
+ // DPI_VisualSpecificationTelemetryList, having type VisualSpecificationTelemetryPresModel[]
+ ParameterId["VisualSpecificationTelemetryList"] = "visualSpecificationTelemetryList";
+ // DPI_UnderlyingDataTable, having type UnderlyingDataTablePresModel
+ ParameterId["UnderlyingDataTable"] = "underlyingDataTable";
+ // DPI_UnderlyingDataTables, having type UnderlyingDataTablePresModel[]
+ ParameterId["UnderlyingDataTables"] = "underlyingDataTables";
+ // DPI_UnderlyingDataTableColumn, having type UnderlyingDataTableColumnPresModel
+ ParameterId["UnderlyingDataTableColumn"] = "underlyingDataTableColumn";
+ // DPI_UnderlyingDataTableColumns, having type UnderlyingDataTableColumnPresModel[]
+ ParameterId["UnderlyingDataTableColumns"] = "underlyingDataTableColumns";
+ // DPI_PageCacheID, having type PageCacheIDPresModel
+ ParameterId["PageCacheID"] = "pageCacheId";
+ // DPI_RelationalPageCacheID, having type PageCacheIDPresModel
+ ParameterId["RelationalPageCacheID"] = "relationalPageCacheId";
+ // DPI_SearchResultsCacheID, having type PageCacheIDPresModel
+ ParameterId["SearchResultsCacheID"] = "searchResultsCacheId";
+ // DPI_PageInfo, having type PageInfoPresModel
+ ParameterId["PageInfo"] = "pageInfo";
+ // DPI_RowColPair, having type RowColPairPresModel
+ ParameterId["RowColPair"] = "rowColPair";
+ // DPI_TopLeftRowCol, having type RowColPairPresModel
+ ParameterId["TopLeftRowCol"] = "topLeftRowCol";
+ // DPI_BotRightRowCol, having type RowColPairPresModel
+ ParameterId["BotRightRowCol"] = "botRightRowCol";
+ // DPI_RowColPairs, having type RowColPairPresModel[]
+ ParameterId["RowColPairs"] = "rowColPairs";
+ // DPI_TableViewCacheInfo, having type TableViewCachePresModel
+ ParameterId["TableViewCacheInfo"] = "tableViewCacheInfo";
+ // DPI_TableViewInfo, having type tableViewInfoPresModel
+ ParameterId["TableViewInfo"] = "tableViewInfo";
+ // DPI_TableViewColumnInfo, having type TableViewColumnInfoPresModel
+ ParameterId["TableViewColumnInfo"] = "tableViewColumnInfo";
+ // DPI_TableViewColumns, having type TableViewColumnInfoPresModel[]
+ ParameterId["TableViewColumns"] = "tableViewColumns";
+ // DPI_TableViewPageItem, having type TableViewPageItemPresModel
+ ParameterId["TableViewPageItem"] = "tableViewPageItem";
+ // DPI_TableViewPageColumns, having type TableViewPageItemPresModel[]
+ ParameterId["TableViewPageColumns"] = "tableViewPageColumns";
+ // DPI_TableViewPageRow, having type TableViewPageRowPresModel
+ ParameterId["TableViewPageRow"] = "tableViewPageRow";
+ // DPI_TableViewPageRows, having type TableViewPageRowPresModel[]
+ ParameterId["TableViewPageRows"] = "tableViewPageRows";
+ // DPI_TableViewPage, having type TableViewPagePresModel
+ ParameterId["TableViewPage"] = "tableViewPage";
+ // DPI_CategoricalValuePicker, having type CategoricalValuePickerPresModel
+ ParameterId["CategoricalValuePicker"] = "categoricalValuePicker";
+ // DPI_AnnotationShapeBorderStyle, having type LineStylePresModel
+ ParameterId["AnnotationShapeBorderStyle"] = "annotationShapeBorderStyle";
+ // DPI_AnotationShapeStrokeStyle, having type LineStylePresModel
+ ParameterId["AnotationShapeStrokeStyle"] = "annotationShapeStrokeStyle";
+ // DPI_CategoricalBinEditorPresModel, having type CategoricalBinEditorPresModel
+ ParameterId["CategoricalBinEditorPresModel"] = "categoricalBinEditor";
+ // DPI_CategoricalBinItem, having type CategoricalBinItemPresModel
+ ParameterId["CategoricalBinItem"] = "categoricalBinItemPresModel";
+ // DPI_CategoricalBinItems, having type CategoricalBinItemPresModel[]
+ ParameterId["CategoricalBinItems"] = "categoricalBinItemPresModels";
+ // DPI_MeasurePickerFieldInfo, having type MeasurePickerFieldInfoPresModel
+ ParameterId["MeasurePickerFieldInfo"] = "measurePickerFieldInfo";
+ // DPI_MeasurePickerFields, having type MeasurePickerFieldInfoPresModel[]
+ ParameterId["MeasurePickerFields"] = "measurePickerFields";
+ // DPI_MeasureAggregationInfo, having type MeasureAggregationInfoPresModel
+ ParameterId["MeasureAggregationInfo"] = "measureAggregationInfo";
+ // DPI_MeasureAggregations, having type MeasureAggregationInfoPresModel[]
+ ParameterId["MeasureAggregations"] = "measureAggregations";
+ // DPI_TuplePair, having type TuplePairPresModel
+ ParameterId["TuplePair"] = "tuplePair";
+ // DPI_DimensionBound, having type DimensionBoundPresModel
+ ParameterId["DimensionBound"] = "dimensionBound";
+ // DPI_PerspectiveBounds, having type DimensionBoundPresModel[]
+ ParameterId["PerspectiveBounds"] = "perspectiveBounds";
+ // DPI_FilterPerspectiveInfoPresModel, having type FilterPerspectiveInfoPresModel
+ ParameterId["FilterPerspectiveInfoPresModel"] = "filterPerspectiveInfo";
+ // DPI_TableRelevance, having type TableRelevancePresModel
+ ParameterId["TableRelevance"] = "tableRelevance";
+ // DPI_AddInRegistrationPresModel, having type AddInRegistrationPresModel
+ ParameterId["AddInRegistrationPresModel"] = "addInRegistrationPresModel";
+ // DPI_AddInRegistrationPresModelList, having type AddInRegistrationPresModel[]
+ ParameterId["AddInRegistrationPresModelList"] = "addInRegistrationPresModelList";
+ // DPI_AddInDashboardAuthoringWidget, having type AddInDashboardWidgetPresModel
+ ParameterId["AddInDashboardAuthoringWidget"] = "addInDashboardAuthoringWidgetPresModel";
+ // DPI_AddInInstance, having type AddInInstancePresModel
+ ParameterId["AddInInstance"] = "addInInstancePresModel";
+ // DPI_AddInLocator, having type AddInLocatorPresModel
+ ParameterId["AddInLocator"] = "addInLocatorPresModel";
+ // DPI_AddInContext, having type AddInContext
+ ParameterId["AddInContext"] = "addInContext";
+ // DPI_AddInMode, having type AddInMode
+ ParameterId["AddInMode"] = "addInMode";
+ // DPI_SetAxisRangeResult, having type SetAxisRangeResult
+ ParameterId["SetAxisRangeResult"] = "setAxisRangeResult";
+ // DPI_SetTickOriginResult, having type SetTickOriginResult
+ ParameterId["SetTickOriginResult"] = "setTickOriginResult";
+ // DPI_SetTickSpacingResult, having type SetTickSpacingResult
+ ParameterId["SetTickSpacingResult"] = "setTickSpacingResult";
+ // DPI_AxisExtentStartType, having type AxisExtentType
+ ParameterId["AxisExtentStartType"] = "axisExtentStartType";
+ // DPI_AxisExtentEndType, having type AxisExtentType
+ ParameterId["AxisExtentEndType"] = "axisExtentEndType";
+ // DPI_AxisExtentsType, having type AxisExtentType
+ ParameterId["AxisExtentsType"] = "axisExtentsType";
+ // DPI_AddInEnvironment, having type AddInEnvironmentPresModel
+ ParameterId["AddInEnvironment"] = "addInEnvironmentPresModel";
+ // DPI_AddInDashboardInfo, having type AddInDashboardInfoPresModel
+ ParameterId["AddInDashboardInfo"] = "addInDashboardInfoPresModel";
+ // DPI_AddInSettingsInfo, having type AddInSettingsInfoPresModel
+ ParameterId["AddInSettingsInfo"] = "addInSettingsInfo";
+ // DPI_AddInBootstrapInfo, having type AddInBootstrapInfoPresModel
+ ParameterId["AddInBootstrapInfo"] = "addInBootstrapInfo";
+ // DPI_AddInDebugSettings, having type AddInDebugSettingsPresModel
+ ParameterId["AddInDebugSettings"] = "addInDebugSettings";
+ // DPI_RichText, having type RichTextPresModel
+ ParameterId["RichText"] = "richText";
+ // DPI_RichTextKeywordSubList, having type RichTextKeywordSubListPresModel
+ ParameterId["RichTextKeywordSubList"] = "richTextKeywordsSublist";
+ // DPI_RichTextKeywordSubLists, having type RichTextKeywordSubListPresModel[]
+ ParameterId["RichTextKeywordSubLists"] = "richTextKeywordSublists";
+ // DPI_RichTextKeywordList, having type RichTextKeywordListPresModel
+ ParameterId["RichTextKeywordList"] = "richTextKeywordsList";
+ // DPI_RichTextBlockStyle, having type RichTextBlockStylePresModel
+ ParameterId["RichTextBlockStyle"] = "richTextBlockStyle";
+ // DPI_RichTextContentStyle, having type RichTextContentStylePresModel
+ ParameterId["RichTextContentStyle"] = "richTextContentStyle";
+ })(ParameterId = exports.ParameterId || (exports.ParameterId = {}));
+
+
+/***/ },
+/* 71 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var api_internal_contract_1 = __webpack_require__(69);
+ var CommandIds_1 = __webpack_require__(72);
+ var Params_1 = __webpack_require__(70);
+ var CommandMappingRegistry_1 = __webpack_require__(73);
+ var CommandRegistration_1 = __webpack_require__(74);
+ var CommandMappingRegistryFactory = (function () {
+ function CommandMappingRegistryFactory() {
+ }
+ /**
+ * Creates and populates a new CommandMappingRegistry for the specific version number requested
+ *
+ * @static
+ * @param {VersionNumber} versionNumber
+ * @returns {CommandMappingRegistry}
+ * @memberof CommandMappingRegistryFactory
+ */
+ CommandMappingRegistryFactory.createCommandMappingRegistry = function (versionNumber) {
+ var result = new CommandMappingRegistry_1.CommandMappingRegistry();
+ result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.InitializeExtension, CommandIds_1.DocCommands.InitializeAddInInstance, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ExtensionLocator, Params_1.ParameterId.AddInLocator)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ExtensionBootstrapInfo, Params_1.ParameterId.AddInBootstrapInfo)));
+ result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetUnderlyingData, CommandIds_1.DocCommands.GetUnderlyingData, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IgnoreAliases, Params_1.ParameterId.IgnoreAliases),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IgnoreSelection, Params_1.ParameterId.IgnoreSelection),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IncludeAllColumns, Params_1.ParameterId.IncludeAllColumns),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.MaxRows, Params_1.ParameterId.MaxRows),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.UnderlyingDataTable, Params_1.ParameterId.UnderlyingDataTable)));
+ result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetDataSummaryData, CommandIds_1.DocCommands.GetSummaryData, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IgnoreAliases, Params_1.ParameterId.IgnoreAliases),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IgnoreSelection, Params_1.ParameterId.IgnoreSelection),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.UnderlyingSummaryDataTable, Params_1.ParameterId.UnderlyingDataTable)));
+ result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetDataSourceData, CommandIds_1.DocCommands.GetDataSourceData, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.DataSourceId, Params_1.ParameterId.Datasource),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IgnoreAliases, Params_1.ParameterId.IgnoreAliases),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.MaxRows, Params_1.ParameterId.MaxRows),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ColumnsToInclude, Params_1.ParameterId.FieldDisplayNames)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.DataSourceDataTable, Params_1.ParameterId.UnderlyingDataTable)));
+ result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.ApplyCategoricalFilter, CommandIds_1.DocCommands.CategoricalFilter, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.QualifiedFieldCaption),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FilterValues, Params_1.ParameterId.FilterAliases),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FilterUpdateType, Params_1.ParameterId.FilterUpdateType),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IsExcludeMode, Params_1.ParameterId.Exclude, true),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Worksheet),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Dashboard)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.FieldCaption)));
+ result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.ApplyRangeFilter, CommandIds_1.DocCommands.RangeFilter, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.QualifiedFieldCaption),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FilterRangeMin, Params_1.ParameterId.RangeMin, true),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FilterRangeMax, Params_1.ParameterId.RangeMax, true),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FilterRangeNullOption, Params_1.ParameterId.Included, true),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Worksheet),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Dashboard)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.FieldCaption)));
+ result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.ClearFilter, CommandIds_1.DocCommands.ClearExistingFilter, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.QualifiedFieldCaption),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Worksheet),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Dashboard)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.FieldCaption)));
+ result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetSelectedMarks, CommandIds_1.DocCommands.GetSelectionData, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.SelectedData, Params_1.ParameterId.SelectionData)));
+ result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetHighlightedMarks, CommandIds_1.DocCommands.GetHighlightedData, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.HighlightedData, Params_1.ParameterId.HighlightedData)));
+ result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.SaveExtensionSettings, CommandIds_1.DocCommands.SaveAddInSettings, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ExtensionLocator, Params_1.ParameterId.AddInLocator),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.SettingsValues, Params_1.ParameterId.AddInSettings)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ExtensionSettingsInfo, Params_1.ParameterId.AddInSettingsInfo)));
+ result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetParametersForSheet, CommandIds_1.DocCommands.GetParameterModels, [], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterInfos, Params_1.ParameterId.ParameterCtrls)));
+ result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.FindParameter, CommandIds_1.DocCommands.FindParameterModel, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterCaption, Params_1.ParameterId.FieldCaption, true),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterFieldName, Params_1.ParameterId.FieldNameString, true)],
+ // We might not get a response if the parameter isn't found
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterInfo, Params_1.ParameterId.ParameterCtrl, true)));
+ result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.ChangeParameterValue, CommandIds_1.DocCommands.SetParameterValue, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterFieldName, Params_1.ParameterId.GlobalFieldName),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterValue, Params_1.ParameterId.ValueStr)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterInfo, Params_1.ParameterId.ParameterCtrl)));
+ result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.ClearSelectedMarks, CommandIds_1.DocCommands.ClearSelectedMarks, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM)]));
+ result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.SelectByValue, CommandIds_1.DocCommands.SelectByValue, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.Selection, Params_1.ParameterId.Selection, true),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.SelectionUpdateType, Params_1.ParameterId.SelectionUpdateType),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.HierValSelectionModels, Params_1.ParameterId.HierValSelectionModels, true),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.DimValSelectionModels, Params_1.ParameterId.DimValSelectionModels, true),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.QuantRangeSelectionModels, Params_1.ParameterId.QuantRangeSelectionModels, true)]));
+ result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetDataSources, CommandIds_1.DocCommands.GetSchema, [], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.DataSchema, Params_1.ParameterId.DataSchema)));
+ result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.RefreshDataSource, CommandIds_1.UICommands.RefreshDataSourceUI, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.DataSourceId, Params_1.ParameterId.Datasource)], undefined, CommandRegistration_1.CommandNamespace.TabUI));
+ result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetFilters, CommandIds_1.DocCommands.GetWorksheetFilters, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.WorksheetFilters, Params_1.ParameterId.FiltersInfo)));
+ result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetCategoricalDomain, CommandIds_1.DocCommands.GetCategoricalDomain, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldId, Params_1.ParameterId.FieldName),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.DomainType, Params_1.ParameterId.FilterDomainType)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.CategoricalDomain, Params_1.ParameterId.CategoricalDomain)));
+ result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetRangeDomain, CommandIds_1.DocCommands.GetQuantitativeDomain, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldId, Params_1.ParameterId.FieldName),
+ new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.DomainType, Params_1.ParameterId.FilterDomainType)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.QuantitativeDomain, Params_1.ParameterId.QuantitativeDomain)));
+ return result;
+ };
+ return CommandMappingRegistryFactory;
+ }());
+ exports.CommandMappingRegistryFactory = CommandMappingRegistryFactory;
+
+
+/***/ },
+/* 72 */
+/***/ function(module, exports) {
+
+ "use strict";
+ /* tslint:disable */
+ // -----------------------------------------------------------------------------
+ //
+ // This file is the copyrighted property of Tableau Software and is protected
+ // by registered patents and other applicable U.S. and international laws and
+ // regulations.
+ //
+ // Unlicensed use of the contents of this file is prohibited. Please refer to
+ // the NOTICES.txt file for further details.
+ //
+ // -----------------------------------------------------------------------------
+ // WARNING: Computer generated file. Do not hand modify.
+ // DEPENDS ON: ['../typescript/js-api/api-core/node_modules/@tableau/preslayer-codegen-typescript/templates/commands-enum-ts.template', u'../typescript/js-api/api-core/temp-pres-layer/all-cmd-wrappers.data']
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var DocCommands;
+ (function (DocCommands) {
+ // Saves the settings for the specified add-in id
+ DocCommands["SaveAddInSettings"] = "save-add-in-settings";
+ // Gets the pres model for an add-in instance.
+ DocCommands["GetAddInInstancePresModel"] = "get-add-in-instance-pres-model";
+ // Gets the pres model for the dashboard authoring widget for add-ins.
+ DocCommands["GetAddInDashboardAuthoringWidgetPresModel"] = "get-add-in-dashboard-authoring-widget-pres-model";
+ // Gets the necessary information for an add-in to initialize itself.
+ DocCommands["InitializeAddInInstance"] = "initialize-add-in-instance";
+ // Enables or disable javascript debugging of an add-in.
+ DocCommands["SetAddInJsDebuggingEnabled"] = "set-add-in-js-debugging-enabled";
+ // Whether or not we should pause before loading. If missing, toggle the value
+ DocCommands["SetPauseBeforeLoadingAddIn"] = "set-pause-before-loading-add-in";
+ // Reloads the Add-In widget and web page.
+ DocCommands["ReloadAddIn"] = "reload-add-in";
+ // Retrieves the context menu for a dashboard add-in.
+ DocCommands["GetAddInZoneContextMenu"] = "get-add-in-zone-context-menu";
+ // Gets the pres model which indicates what the debug settings for add-ins is.
+ DocCommands["GetAddInDebugSettingsPresModel"] = "get-add-in-debug-settings-pres-model";
+ // Primary use is for building context menus
+ DocCommands["IsSelectionAnEditableParameter"] = "is-selection-an-editable-parameter";
+ // Check if selection can be used as base for creating a new parameter. Primary use is for building context menus
+ DocCommands["GetCreateParameterState"] = "get-create-parameter-state";
+ // Uses EditParameter to get and return info about the presmodel without maintaining the controller
+ DocCommands["GetParameterEditInfo"] = "get-parameter-edit-info";
+ // Initialize the controller and its stored parameter then return a populated presmodel
+ DocCommands["CreateParameter"] = "create-parameter";
+ // Same underlying logic as CreateParameter but edits rather than creating a new parameter
+ DocCommands["EditParameter_New"] = "edit-parameter-new";
+ // Add a member of a parameter domain. Changes are applied to intermediate state and saved on commit
+ DocCommands["AddParameterMember"] = "add-parameter-member";
+ // Edit a member of a parameter domain. Changes are applied to intermediate state and saved on commit
+ DocCommands["EditParameterMember"] = "edit-parameter-member";
+ // Delete a series of ranges of members from the parameter list.
+ DocCommands["DeleteParameterMembers"] = "delete-parameter-members";
+ // Copy a series of ranges of members of a parameter list
+ DocCommands["CopyParameterMembers"] = "copy-parameter-members";
+ // Move a series of ranges of members of a parameter list
+ DocCommands["MoveParameterMembers"] = "move-parameter-members";
+ // Change domain of a parameter. Changes are applied to intermediate state and saved on commit
+ DocCommands["EditParameterDomainType"] = "edit-parameter-domain-type";
+ // Change datatype of a parameter. Changes are applied to intermediate state and saved on commit
+ DocCommands["EditParameterDataType"] = "edit-parameter-data-type";
+ // Change display format of a parameter. Changes are applied to intermediate state and saved on commit
+ DocCommands["EditParameterFormat"] = "edit-parameter-format";
+ // Validate changes to a parameter's range domain and apply to intermediate state. Changes are saved on commit
+ DocCommands["EditParameterRange"] = "edit-parameter-range";
+ // Edit the value of a non-list domain parameter
+ DocCommands["EditParameterValue"] = "edit-parameter-value";
+ // Edit the value of a list domain parameter
+ DocCommands["EditParameterValueIndex"] = "edit-parameter-value-index";
+ // Update the parameter caption and description - used to keep backend in sync. No verification/return is requried.
+ DocCommands["EditParameterDisplayInfo"] = "edit-parameter-display-info";
+ // Update the domain of the parameter using a field (column or parameter) as a base
+ DocCommands["UpdateParameterFromField"] = "update-parameter-from-field";
+ // Update the list domain of a parameter from a plain text representation of values
+ DocCommands["ParseParameterListDomain"] = "parse-parameter-list-domain";
+ // Clears the parameter's domain of all members
+ DocCommands["ClearParameterListDomain"] = "clear-parameter-list-domain";
+ // Creates or edits parameter from intermediate state. Takes a few properties that are cached in dialog and applies them pre-commit.
+ DocCommands["CommitParameterEdits"] = "commit-parameter-edits";
+ // Gets the model for a particular parameter or returns an empty response if one is not found.
+ DocCommands["FindParameterModel"] = "find-parameter-model";
+ // Gets the pres model for the show data dialog
+ DocCommands["GetShowDataPresModel"] = "get-show-data-pres-model";
+ // Export underlying data from the ShowDataDialog to a CSV file
+ DocCommands["ShowDataExportToCSV"] = "show-data-export-to-csv";
+ // Gets the summary data for a worksheet
+ DocCommands["GetSummaryData"] = "get-summary-data";
+ // Gets the underlying data for a worksheet
+ DocCommands["GetUnderlyingData"] = "get-underlying-data";
+ // Gets the underlying data for a specific data source.
+ DocCommands["GetDataSourceData"] = "get-data-source-data";
+ // Select all marks that have the tuple's value for the given field .
+ DocCommands["SelectByTupleValue"] = "select-by-tuple-value";
+ // Clear all the selected marks for the given worksheet
+ DocCommands["ClearSelectedMarks"] = "clear-selected-marks";
+ // Creates or updates and existing filter based on the provided updates.
+ DocCommands["ApplyCategoricalFilterUpdates"] = "apply-categorical-filter-updates";
+ // Search filter domain for text and return any matching tuples.
+ DocCommands["CategoricalFilterSearch"] = "categorical-filter-search";
+ // Clear all members from the table of the identified cache.
+ DocCommands["CategoricalFilterClearRelationalCache"] = "categorical-filter-clear-relational-cache";
+ // Create tuples for an existing filter from supplied text.
+ DocCommands["GetCategoricalFilterTuplesFromText"] = "get-categorical-filter-tuples-from-text";
+ // Returns a presmodel backing a categorical filter, initializing a data cache for fast lookup of the filter's member domain.
+ DocCommands["GetCategoricalFilter"] = "get-categorical-filter";
+ // Retrieves a page of data to display in the filter's list domain
+ DocCommands["GetCategoricalFilterDomainPage"] = "get-categorical-filter-domain-page";
+ // Reset filter to committed state
+ DocCommands["ResetCategoricalFilterDeferred"] = "reset-categorical-filter-deferred";
+ // Use uncommitted state to reset the filter's controller
+ DocCommands["RecreateCategoricalFilterController"] = "recreate-categorical-filter-controller";
+ // Validates a Categroical Filter name.
+ DocCommands["ValidateCategoricalFilterName"] = "validate-categorical-filter-name";
+ // Gets a summary of the filter pattern.
+ DocCommands["GetCategoricalFilterPatternSummary"] = "get-categorical-filter-pattern-summary";
+ // Gets a summery of the filter condition.
+ DocCommands["GetCategoricalFilterConditionSummary"] = "get-categorical-filter-condition-summary";
+ // Load the current minimum and maximum data value range for the condition field.
+ DocCommands["LoadCategoricalFilterConditionFieldValueRange"] = "load-categorical-filter-condition-field-value-range";
+ // Validates a Categorical Filter's condition formula and re-writes it.
+ DocCommands["ValidateCategoricalFilterConditionFormula"] = "validate-categorical-filter-condition-formula";
+ // Gets a summery of the filter limit.
+ DocCommands["GetCategoricalFilterLimitSummary"] = "get-categorical-filter-limit-summary";
+ // Validates a Categorical Filter's limit count.
+ DocCommands["ValidateCategoricalFilterLimitCount"] = "validate-categorical-filter-limit-count";
+ // Validates a Categorical Filter's limit formula, and re-writes the formula.
+ DocCommands["ValidateCategoricalFilterLimitFormula"] = "validate-categorical-filter-limit-formula";
+ // Validates a Categorical Filter's limit.
+ DocCommands["ValidateCategoricalFilterLimit"] = "validate-categorical-filter-limit";
+ // Inform cache when a user changes the range
+ DocCommands["CategoricalFilterSetRangeTypeDeferred"] = "categorical-filter-set-range-type-deferred";
+ // Inform cache when a user changes whether the selection is exclusive
+ DocCommands["CategoricalFilterSetSelectionExclusiveDeferred"] = "categorical-filter-set-selection-exclusive-deferred";
+ // Inform cache when a user changes whether an empty selection should be considered a selection of 'All' in a Manual selection mode
+ DocCommands["CategoricalFilterSetUseAllWhenManualIsEmptyDeferred"] = "categorical-filter-set-use-all-when-manual-is-empty-deferred";
+ // Inform cache when a user alters the preset type
+ DocCommands["CategoricalFilterSetPresetTypeDeferred"] = "categorical-filter-set-preset-type-deferred";
+ // Inform cache the user has selected one or more members
+ DocCommands["CategoricalFilterSelectRelationalMembersDeferred"] = "categorical-filter-select-relational-members-deferred";
+ // Inform cache the user has deselected one or more members
+ DocCommands["CategoricalFilterDeselectRelationalMembersDeferred"] = "categorical-filter-deselect-relational-members-deferred";
+ // Inform cache when a user selects everything in the domain
+ DocCommands["CategoricalFilterSelectAllRelationalMembersDeferred"] = "categorical-filter-select-all-relational-members-deferred";
+ // Inform cache when a user deselects everything in the domain
+ DocCommands["CategoricalFilterDeselectAllRelationalMembersDeferred"] = "categorical-filter-deselect-all-relational-members-deferred";
+ // Inform cache the user wants to see a different domain (e.g. relevant values only)
+ DocCommands["CategoricalFilterSetDomainTypeDeferred"] = "categorical-filter-set-domain-type-deferred";
+ // Set whether filters apply to totals as well as non-totals table calcs
+ DocCommands["FilterApplyToTotalTableCalcs"] = "filter-apply-to-total-table-calcs";
+ // Gets the list of filters used in a worksheet
+ DocCommands["GetWorksheetFilters"] = "get-worksheet-filters";
+ // Gets the domain for a categorical Filter
+ DocCommands["GetCategoricalDomain"] = "get-categorical-domain";
+ // Gets the domain for a quantitative Filter
+ DocCommands["GetQuantitativeDomain"] = "get-quantitative-domain";
+ //
+ DocCommands["GetHighlightedData"] = "get-highlighted-data";
+ //
+ DocCommands["GetSelectionData"] = "get-selection";
+ //
+ DocCommands["Select"] = "select";
+ //
+ DocCommands["SelectAll"] = "select-all";
+ //
+ DocCommands["SelectByValue"] = "select-by-value";
+ //
+ DocCommands["SelectNoneIncludingMaster"] = "select-none-including-master";
+ //
+ DocCommands["AddManualItemsToFilter"] = "add-manual-items-to-filter";
+ //
+ DocCommands["CategoricalFilter"] = "categorical-filter";
+ //
+ DocCommands["CategoricalFilterByIndex"] = "categorical-filter-by-index";
+ //
+ DocCommands["ChangeSharedFilter"] = "change-shared-filter";
+ //
+ DocCommands["ClearContextFilters"] = "clear-context-filters";
+ //
+ DocCommands["ClearExistingFilter"] = "clear-existing-filter";
+ //
+ DocCommands["DefaultFilter"] = "default-filter";
+ //
+ DocCommands["FilterGeo"] = "filter-geo";
+ //
+ DocCommands["FilterNeg"] = "filter-neg";
+ //
+ DocCommands["FilterNulls"] = "filter-nulls";
+ //
+ DocCommands["FilterTargets"] = "filter-targets";
+ //
+ DocCommands["GetSharedFilterPresModel"] = "get-shared-filter-pres-model";
+ //
+ DocCommands["HierarchicalFilter"] = "hierarchical-filter";
+ //
+ DocCommands["KeepOnlyOrExclude"] = "keep-only-or-exclude";
+ //
+ DocCommands["RangeFilter"] = "range-filter";
+ //
+ DocCommands["RelDateFilter"] = "relative-date-filter";
+ //
+ DocCommands["ResetFilter"] = "reset-filter";
+ //
+ DocCommands["ShowGeoAtDefault"] = "show-geo-at-default";
+ //
+ DocCommands["ShowSVAtDefault"] = "show-sv-at-default";
+ //
+ DocCommands["ToggleLockQuickFilters"] = "toggle-lock-quick-filters";
+ //
+ DocCommands["AddDataConnection"] = "add-data-connection";
+ //
+ DocCommands["AddDrillPath"] = "add-drill-path";
+ //
+ DocCommands["AddCredentialsFromKeychain"] = "add-credentials-from-keychain";
+ //
+ DocCommands["AddCredentialsFromKeychainFile"] = "add-credentials-from-keychain-file";
+ //
+ DocCommands["AddFieldFolder"] = "add-field-folder";
+ //
+ DocCommands["AddSubtotals"] = "add-subtotals";
+ //
+ DocCommands["AddToDrillPath"] = "add-to-drill-path";
+ //
+ DocCommands["AddToFieldFolder"] = "add-to-field-folder";
+ //
+ DocCommands["AggregateMeasuresFlag"] = "aggregate-measures";
+ //
+ DocCommands["ApplyCalculation"] = "apply-calculation";
+ //
+ DocCommands["ApplyPageSetupOptions"] = "apply-page-setup-options";
+ //
+ DocCommands["ApplyTableOptions"] = "apply-table-options";
+ //
+ DocCommands["ApplyTypeInPill"] = "apply-type-in-pill";
+ //
+ DocCommands["Assert"] = "assert";
+ //
+ DocCommands["AttemptConnectDataSourcesOnSheet"] = "attempt-connect-datasources-on-sheet";
+ //
+ DocCommands["AttemptConnectWorkbook"] = "attempt-connect-workbook";
+ //
+ DocCommands["AttemptDataSourcesConnection"] = "attempt-datasources-connection";
+ //
+ DocCommands["AutoUpdates"] = "auto-update";
+ //
+ DocCommands["Brush"] = "highlight";
+ //
+ DocCommands["BrushSpecial"] = "highlight-special";
+ //
+ DocCommands["BuildDataSchemaDataSourceContextMenu"] = "build-data-schema-data-source-context-menu";
+ //
+ DocCommands["BuildDataSchemaContextMenu"] = "build-data-schema-context-menu";
+ //
+ DocCommands["BuildDataSchemaFieldContextMenu"] = "build-data-schema-field-context-menu";
+ //
+ DocCommands["BuildDataSchemaDrillPathContextMenu"] = "build-data-schema-drill-path-context-menu";
+ //
+ DocCommands["BuildFileTableInfoPresModel"] = "build-file-table-info-pres-model";
+ //
+ DocCommands["BuildSheetTabContextMenu"] = "build-sheet-tab-context-menu";
+ //
+ DocCommands["CancelDataSourcePresModel"] = "cancel-datasource-pres-model";
+ //
+ DocCommands["CatBinMergeSplitLabel"] = "categorical-bin-merge-split";
+ //
+ DocCommands["CategoricalQuickFilterEdit"] = "categorical-quick-filter-edit";
+ //
+ DocCommands["CategoricalQuickFilterExcludeValues"] = "categorical-quick-filter-exclude-values";
+ //
+ DocCommands["CategoricalQuickFilterIncludeAllWhenEmpty"] = "categorical-quick-filter-include-all-when-empty";
+ //
+ DocCommands["CategoricalQuickFilterMode"] = "categorical-quick-filter-mode";
+ //
+ DocCommands["CategoricalQuickFilterPattern"] = "categorical-quick-filter-pattern";
+ //
+ DocCommands["ChangeAggregation"] = "change-aggregation";
+ //
+ DocCommands["ChangeAlphaLevel"] = "change-alpha-level";
+ //
+ DocCommands["ChangeBorder"] = "change-border";
+ //
+ DocCommands["ChangeFieldType"] = "change-field-type";
+ //
+ DocCommands["ChangeForecastColumnType"] = "change-forecast-column-type";
+ //
+ DocCommands["ChangeHalo"] = "change-halo";
+ //
+ DocCommands["ChangeMarkers"] = "change-markers";
+ //
+ DocCommands["ChangeSize"] = "change-size";
+ //
+ DocCommands["ChangeSheetTabColor"] = "change-sheet-tab-color";
+ //
+ DocCommands["ClearAllAxisRanges"] = "clear-axis-ranges";
+ //
+ DocCommands["ClearCalcModel"] = "clear-calculation-model";
+ //
+ DocCommands["ClearFilters"] = "clear-filters";
+ //
+ DocCommands["ClearFormatting"] = "clear-formatting";
+ //
+ DocCommands["ClearFuture"] = "clear-future";
+ //
+ DocCommands["ClearLayout"] = "clear-layout";
+ //
+ DocCommands["ClearQuickFilter"] = "clear-quick-filter";
+ //
+ DocCommands["ClearSorts"] = "clear-sorts";
+ //
+ DocCommands["CloseConnection"] = "close-connection";
+ //
+ DocCommands["CloseDataSource"] = "close-data-source";
+ //
+ DocCommands["ConnectionAddGoogleAnalyticsDimension"] = "connection-add-google-analytics-dimension";
+ //
+ DocCommands["ConnectionAddGoogleAnalyticsMeasure"] = "connection-add-google-analytics-measure";
+ //
+ DocCommands["ConnectionAddNewTable"] = "connection-add-new-table";
+ //
+ DocCommands["ConnectionAddCoalesce"] = "connection-add-coalesce";
+ //
+ DocCommands["ConnectionAddPivot"] = "connection-add-pivot";
+ //
+ DocCommands["ConnectionConvertToUnionAndEdit"] = "connection-convert-to-union-and-edit";
+ //
+ DocCommands["ConnectionConvertToUnion"] = "connection-convert-to-union";
+ //
+ DocCommands["ConnectionEditUnion"] = "connection-edit-union";
+ //
+ DocCommands["ConnectionAddOrEditBatchUnion"] = "connection-add-or-edit-batch-union";
+ //
+ DocCommands["ConnectionChangeTableProperty"] = "connection-change-table-property";
+ //
+ DocCommands["ConnectionCountEntity"] = "connection-count-entity";
+ //
+ DocCommands["ConnectionDataServerFetchMoreDatasources"] = "connection-dataserver-fetch-more-datasources";
+ //
+ DocCommands["ConnectionDataServerProjectSelect"] = "connection-dataserver-change-selected-project";
+ //
+ DocCommands["ConnectionDataServerUpdateFetchParameters"] = "connection-dataserver-update-fetch-parameters";
+ //
+ DocCommands["ConnectionDataServerFlushCache"] = "connection-dataserver-flush-cache";
+ //
+ DocCommands["ConnectionDeleteAllTables"] = "connection-delete-all-tables";
+ //
+ DocCommands["ConnectionDeleteTable"] = "connection-delete-table";
+ //
+ DocCommands["ConnectionEditCaption"] = "connection-edit-caption";
+ //
+ DocCommands["ConnectionEditGoogleAnalyticsAccount"] = "connection-edit-google-analytics-account";
+ //
+ DocCommands["ConnectionEditGoogleAnalyticsDateRange"] = "connection-edit-google-analytics-date-range";
+ //
+ DocCommands["ConnectionEditGoogleAnalyticsMeasureGroup"] = "connection-edit-google-analytics-measure-group";
+ //
+ DocCommands["ConnectionToggleGAQueryPartitioning"] = "connection-toggle-ga-query-partitioning";
+ //
+ DocCommands["ConnectionEditGoogleAnalyticsProperty"] = "connection-edit-google-analytics-property";
+ //
+ DocCommands["ConnectionEditGoogleAnalyticsView"] = "connection-edit-google-analytics-view";
+ //
+ DocCommands["ConnectionEditGoogleAnalyticsSegment"] = "connection-edit-google-analytics-segment";
+ //
+ DocCommands["ConnectionEditJoinClauses"] = "connection-edit-join-clauses";
+ //
+ DocCommands["ConnectionEditJoinType"] = "connection-edit-join-type";
+ //
+ DocCommands["ConnectionEditSQLText"] = "connection-edit-sql-text";
+ //
+ DocCommands["ConnectionFetchEntity"] = "connection-fetch-entity";
+ //
+ DocCommands["ConnectionSetForceExtractRefresh"] = "connection-set-force-extract-refresh";
+ //
+ DocCommands["ConnectionPrepareDataSourceForEdit"] = "connection-prepare-datasource-for-edit";
+ //
+ DocCommands["ConnectionClearRefreshAttributes"] = "connection-clear-refresh-attributes";
+ //
+ DocCommands["ConnectionRemoveGoogleAnalyticsDimension"] = "connection-remove-google-analytics-dimension";
+ //
+ DocCommands["ConnectionRemoveGoogleAnalyticsMeasure"] = "connection-remove-google-analytics-measure";
+ //
+ DocCommands["ConnectionRemoveCoalesce"] = "connection-remove-coalesce";
+ //
+ DocCommands["ConnectionRemovePivot"] = "connection-remove-pivot";
+ //
+ DocCommands["ConnectionAddDateParseFormats"] = "connection-add-date-parse-formats";
+ //
+ DocCommands["ConnectionRenameTable"] = "connection-rename-table";
+ //
+ DocCommands["ConnectionReplaceRelationWithSQLText"] = "connection-replace-relation-with-sql-text";
+ //
+ DocCommands["ConnectionReplaceTable"] = "connection-replace-table";
+ //
+ DocCommands["ConnectionResetTableAlias"] = "connection-reset-table-alias";
+ //
+ DocCommands["ConnectionSelectCatalog"] = "connection-select-catalog";
+ //
+ DocCommands["ConnectionSelectCube"] = "connection-select-cube";
+ //
+ DocCommands["ConnectionSelectDatabase"] = "connection-select-database";
+ //
+ DocCommands["ConnectionSelectSchema"] = "connection-select-schema";
+ //
+ DocCommands["ConnectionSelectStoredProcedure"] = "connection-select-stored-procedure";
+ //
+ DocCommands["ConnectionSelectWarehouse"] = "connection-select-warehouse";
+ //
+ DocCommands["ConnectionSelectBigQueryLegacySQLCheckBox"] = "connection-select-bigquery-legacy-check";
+ //
+ DocCommands["ConnectionToggleHasHeaderRow"] = "connection-toggle-has-header-row";
+ //
+ DocCommands["ConnectionToggleTableCleaning"] = "connection-toggle-table-cleaning";
+ //
+ DocCommands["ConnectionToggleUseExtract"] = "connection-toggle-use-extract";
+ //
+ DocCommands["ConnectionViewTableCleaningResults"] = "connection-view-table-cleaning-results";
+ //
+ DocCommands["ConnectToDataServerSource"] = "connect-data-server-datasource";
+ //
+ DocCommands["ConsiderZerosEmptyFlag"] = "consider-zeros-empty";
+ //
+ DocCommands["ConvertUnnamedFields"] = "convert-unnamed-fields";
+ //
+ DocCommands["Crash"] = "crash";
+ //
+ DocCommands["CreateAggregateRole"] = "create-aggregate-role";
+ //
+ DocCommands["CreateConnection"] = "create-connection";
+ //
+ DocCommands["CreateDefaultQuickFilter"] = "create-default-quick-filter";
+ //
+ DocCommands["CreateTypeInPill"] = "create-type-in-pill";
+ //
+ DocCommands["CustomDataGridFieldOrder"] = "custom-datagrid-field-order";
+ //
+ DocCommands["CustomDateAggregation"] = "custom-date-aggregation";
+ //
+ DocCommands["CustomSplitField"] = "custom-split-field";
+ //
+ DocCommands["DebugAssertion"] = "debug-assertion";
+ //
+ DocCommands["DecrementParameterValue"] = "decr-parameter-value";
+ //
+ DocCommands["DeleteFields"] = "delete-calculation-fields-command";
+ //
+ DocCommands["DeleteSheet"] = "delete-sheet";
+ //
+ DocCommands["DescribeDrillPath"] = "describe-drill-path";
+ //
+ DocCommands["DescribeSortFilter"] = "describe-sort-filter";
+ //
+ DocCommands["DismissNullWart"] = "dismiss-null-wart";
+ //
+ DocCommands["DomainQuickFilter"] = "domain-quick-filter";
+ //
+ DocCommands["DoubleFreeCrash"] = "double-free";
+ //
+ DocCommands["DropNowhere"] = "drop-nowhere";
+ //
+ DocCommands["DropOnSchemaViewer"] = "drop-on-schema-viewer";
+ //
+ DocCommands["DropOnShelf"] = "drop-on-shelf";
+ //
+ DocCommands["DropOnCalcEditor"] = "drop-on-calc-editor";
+ //
+ DocCommands["DropOnShowMe"] = "drop-on-showme";
+ //
+ DocCommands["DropPrepare"] = "drop-prepare";
+ //
+ DocCommands["DualAxis"] = "dual-axis";
+ //
+ DocCommands["DuplicateSheet"] = "duplicate-sheet";
+ //
+ DocCommands["EditCopyCalc"] = "edit-copy-calc";
+ //
+ DocCommands["EditDropLines"] = "edit-drop-lines";
+ //
+ DocCommands["EditEnumeratedGroup"] = "edit-enumerated-group";
+ //
+ DocCommands["EditNestedGroup"] = "edit-nested-group";
+ //
+ DocCommands["EditPill"] = "edit-pill";
+ //
+ DocCommands["EditPrimitiveType"] = "edit-primitive-type";
+ //
+ DocCommands["EnableAllBrushing"] = "enable-all-highlights";
+ //
+ DocCommands["EnableQuickFilter"] = "enable-quick-filter";
+ //
+ DocCommands["EnableSheetBrushing"] = "enable-sheet-highlights";
+ //
+ DocCommands["EnableThemedBrushing"] = "enable-themed-highlights";
+ //
+ DocCommands["EnumerateVariables"] = "enumerate-variables";
+ //
+ DocCommands["EnumerateVariableSelectionValues"] = "enumerate-variable-selection-values";
+ //
+ DocCommands["EstablishConnection"] = "establish-connection";
+ //
+ DocCommands["EstablishMatchingConnections"] = "establish-matching-connections";
+ //
+ DocCommands["ExportDataToText"] = "export-data-to-text";
+ //
+ DocCommands["ExtSvcConfig"] = "ext-svc-config";
+ //
+ DocCommands["ExtSvcConfigConnect"] = "ext-svc-config-connect";
+ //
+ DocCommands["Extract"] = "extract";
+ //
+ DocCommands["SetDataGridCurrentTable"] = "set-data-grid-current-table";
+ //
+ DocCommands["FetchTableRelevance"] = "fetch-table-relevance";
+ //
+ DocCommands["FetchCachedTableRelevance"] = "fetch-cached-table-relevance";
+ //
+ DocCommands["FlipLabels"] = "flip-labels";
+ //
+ DocCommands["FloatingToolbar"] = "zoom-controls";
+ //
+ DocCommands["FloatingToolbarToggle"] = "zoom-controls-toggle";
+ //
+ DocCommands["ForecastConfig"] = "forecast-config";
+ //
+ DocCommands["ForecastToggle"] = "forecast-toggle";
+ //
+ DocCommands["FormatWorkbook"] = "format-workbook";
+ //
+ DocCommands["GeographicSearchQuery"] = "geographic-search-query";
+ //
+ DocCommands["GeographicSearchLoadData"] = "geographic-search-load-data";
+ //
+ DocCommands["GeographicSearchIsDataDoneLoading"] = "geographic-search-data-done-loading";
+ //
+ DocCommands["GeographicSearchToggleVisibility"] = "geographic-search-toggle-visibility";
+ //
+ DocCommands["GetEditConnectionPresModel"] = "get-edit-connection-pres-model";
+ //
+ DocCommands["GetEditEnumeratedGroupPresModel"] = "get-edit-enumerated-group-pres-model";
+ //
+ DocCommands["GetEditNestedGroupPresModel"] = "get-edit-nested-group-pres-model";
+ //
+ DocCommands["GetFrameFinderPresModel"] = "get-frame-finder-pres-model";
+ //
+ DocCommands["GetGoogleSheetsListPresModel"] = "get-google-sheets-list-pres-model";
+ //
+ DocCommands["GetGoogleSheetPanePresModel"] = "get-google-sheet-pane-pres-model";
+ //
+ DocCommands["GetInitialSQLPresModel"] = "get-initial-sql-pres-model";
+ //
+ DocCommands["GetQueryBandingPresModel"] = "get-query-banding-pres-model";
+ //
+ DocCommands["GetTabbedAuthenticationPresModel"] = "get-tabbed-authentication-pres-model";
+ //
+ DocCommands["GetActiveSheet"] = "get-active-sheet";
+ //
+ DocCommands["GetAlphaLevel"] = "get-alpha-level";
+ //
+ DocCommands["GetAppConfig"] = "get-app-config";
+ //
+ DocCommands["GetDisabledSecondaryDSFields"] = "get-disabled-secondaryds-fields";
+ //
+ DocCommands["GetBlendingFields"] = "get-blending-fields";
+ //
+ DocCommands["GetCalculationPresModel"] = "get-calculation-pres-model";
+ //
+ DocCommands["GetCategoricalColor"] = "get-categorical-color";
+ //
+ DocCommands["GetClientInfo"] = "get-client-info";
+ //
+ DocCommands["GetCommands"] = "get-commands";
+ //
+ DocCommands["GetConnectionDescriptionPresModel"] = "get-connection-description-pres-model";
+ //
+ DocCommands["GetDSDropdownPresModel"] = "get-ds-dropdown-pres-model";
+ //
+ DocCommands["GetDataPreviewWindowMessagePresModel"] = "get-data-preview-window-pres-model";
+ //
+ DocCommands["GetDataSourcePresModel"] = "get-datasource-pres-model";
+ //
+ DocCommands["GetDataSourceSortPresModel"] = "get-datasource-sort-pres-model";
+ //
+ DocCommands["GetDataSourcePropertiesPresModel"] = "get-datasource-properties-pres-model";
+ //
+ DocCommands["GetConnectionSettingsPresModel"] = "get-connection-settings-pres-model";
+ //
+ DocCommands["GetDashboard"] = "get-dashboard";
+ //
+ DocCommands["GetDataPreview"] = "get-data-preview";
+ //
+ DocCommands["GetDatabaseEnumerationPresModel"] = "get-database-enumeration-pres-model";
+ //
+ DocCommands["GetDefaultColor"] = "get-default-color";
+ //
+ DocCommands["GetDefaultShape"] = "get-default-shape";
+ //
+ DocCommands["GetDragPresModelForText"] = "get-drag-pres-model-for-text";
+ //
+ DocCommands["GetDropTargetPresModel"] = "get-drop-target-pres-model";
+ //
+ DocCommands["GetEditDataServerConnectionPresModel"] = "get-edit-data-server-connection-pres-model";
+ //
+ DocCommands["GetEditDropLinesModel"] = "get-edit-drop-lines-model";
+ //
+ DocCommands["GetEncodingState"] = "get-encoding-state";
+ //
+ DocCommands["GetEncodingTypeMenuModel"] = "get-encoding-type-menu";
+ //
+ DocCommands["GetExtSvcConfig"] = "get-ext-svc-config";
+ //
+ DocCommands["GetForecastPresModel"] = "get-forecast-pres-model";
+ //
+ DocCommands["GetJoinDescriptionPresModel"] = "get-join-description-pres-model";
+ //
+ DocCommands["GetQuickFilter"] = "get-quick-filter";
+ //
+ DocCommands["GetQuickFilters"] = "get-quick-filters";
+ //
+ DocCommands["GetReferenceLinePresModel"] = "get-reference-line-pres-model";
+ //
+ DocCommands["GetParameters"] = "get-parameters";
+ //
+ DocCommands["GetParameterModels"] = "get-parameter-models";
+ //
+ DocCommands["GetParametersRegistryInfo"] = "get-params-registry-info";
+ //
+ DocCommands["GetPivotPresModel"] = "get-pivot-pres-model";
+ //
+ DocCommands["GetScene"] = "get-scene";
+ //
+ DocCommands["GetSchemaEnumerationPresModel"] = "get-schema-enumeration-pres-model";
+ //
+ DocCommands["GetSheetsInfo"] = "get-sheets-info";
+ //
+ DocCommands["GetShowMe"] = "get-show-me";
+ //
+ DocCommands["GetStandardConnectionEnumerationPresModel"] = "get-standard-connection-enumeration-pres-model";
+ //
+ DocCommands["GetStoredProcedureEnumerationPresModel"] = "get-stored-procedure-enumeration-pres-model";
+ //
+ DocCommands["GetStoredProcedureParametersPresModel"] = "get-stored-procedure-parameters-pres-model";
+ //
+ DocCommands["GetTableEnumerationPresModel"] = "get-table-enumeration-pres-model";
+ //
+ DocCommands["GetTableCleaningPresModel"] = "get-table-cleaning-pres-model";
+ //
+ DocCommands["GetTargetFieldList"] = "get-target-field-list";
+ //
+ DocCommands["GetTopLevelConnectionDescriptionPresModel"] = "get-top-level-connection-description-pres-model";
+ //
+ DocCommands["GetTypeInPillPresModel"] = "get-type-in-pill-pres-model";
+ //
+ DocCommands["GetUberTipPresModel"] = "get-ubertip-pres-model";
+ //
+ DocCommands["GetUnionInfoPresModel"] = "get-union-info-pres-model";
+ //
+ DocCommands["GetVisual"] = "get-visual";
+ //
+ DocCommands["GetVizData"] = "get-viz-data";
+ //
+ DocCommands["GetWarehouseEnumerationPresModel"] = "get-warehouse-enumeration-pres-model";
+ //
+ DocCommands["GetWorkbook"] = "get-workbook";
+ //
+ DocCommands["GetWorldUpdate"] = "get-world-update";
+ //
+ DocCommands["GoToSheet"] = "goto-sheet";
+ //
+ DocCommands["HeapCorruptionCrash"] = "corrupt-heap";
+ //
+ DocCommands["HideColumnFieldLabel"] = "hide-column-field-label";
+ //
+ DocCommands["HideEmptyColsFlag"] = "hide-empty-cols";
+ //
+ DocCommands["HideEmptyRowsFlag"] = "hide-empty-rows";
+ //
+ DocCommands["HideLabel"] = "hide-label";
+ //
+ DocCommands["HideRowFieldLabel"] = "hide-row-field-label";
+ //
+ DocCommands["HierarchicalQuickFilterUpdateSetFunction"] = "hierarchical-quick-filter-update-set-function";
+ //
+ DocCommands["IncludeInTooltip"] = "include-in-tooltip";
+ //
+ DocCommands["IncludeOtherCategoricalBin"] = "include-other-cat-bin";
+ //
+ DocCommands["IncrementExtract"] = "increment-extract";
+ //
+ DocCommands["IncrementParameterValue"] = "incr-parameter-value";
+ //
+ DocCommands["CreateCalc"] = "create-calc";
+ //
+ DocCommands["EditCalc"] = "edit-calc";
+ //
+ DocCommands["InvokeHyperlink"] = "invoke-hyperlink";
+ //
+ DocCommands["KeepOnlyOrExcludeSelection"] = "keep-only-or-exclude-selection";
+ //
+ DocCommands["LabelDrill"] = "label-drill";
+ //
+ DocCommands["LabelDrillCtx"] = "label-drill-ctx";
+ //
+ DocCommands["LevelDrill"] = "level-drill";
+ //
+ DocCommands["LoadUrl"] = "load-url";
+ //
+ DocCommands["ListPublishedDataSources"] = "list-published-datasources";
+ //
+ DocCommands["MarkLabel"] = "mark-label";
+ //
+ DocCommands["MarkTrail"] = "mark-trail";
+ //
+ DocCommands["MemoryDumpObjectCounts"] = "memory-dump-object-counts";
+ //
+ DocCommands["MemoryLeak"] = "memory-leak";
+ //
+ DocCommands["Merge"] = "merge-or-split";
+ //
+ DocCommands["MigrateDataSource"] = "migrate-data-source";
+ //
+ DocCommands["ModifyMarksInSet"] = "add-or-remove-marks";
+ //
+ DocCommands["MoveAreaAnnotationText"] = "move-area-annotation-text";
+ //
+ DocCommands["MoveColumnTotals"] = "move-column-totals";
+ //
+ DocCommands["MoveMark"] = "move-mark";
+ //
+ DocCommands["MovePointAnnotation"] = "move-point-annotation";
+ //
+ DocCommands["MovePointAnnotationTarget"] = "move-point-annotation-target";
+ //
+ DocCommands["MoveReferenceLine"] = "move-reference-line";
+ //
+ DocCommands["MoveRowTotals"] = "move-row-totals";
+ //
+ DocCommands["NavigateToSheet"] = "navigate-to-sheet";
+ //
+ DocCommands["PostCalcJoinClauseResult"] = "post-calc-join-clause-result";
+ //
+ DocCommands["NewDocDashboard"] = "new-dashboard";
+ //
+ DocCommands["NewDocWorksheet"] = "new-worksheet";
+ //
+ DocCommands["NonRangedRemoveReferenceLine"] = "non-ranged-remove-reference-line";
+ //
+ DocCommands["OptimizeExtract"] = "optimize-extract";
+ //
+ DocCommands["OptOutActions"] = "opt-out-actions";
+ //
+ DocCommands["PageHistorySettings"] = "page-history-settings";
+ //
+ DocCommands["PageToggleTrails"] = "page-toggle-trails";
+ //
+ DocCommands["ParseUIName"] = "parse-ui-name";
+ //
+ DocCommands["Percentages"] = "percentages";
+ //
+ DocCommands["Perspectives"] = "perspectives";
+ //
+ DocCommands["PositionPointAnnotation"] = "position-point-annotation";
+ //
+ DocCommands["ProtocolPoolLog"] = "protocol-pool-log";
+ //
+ DocCommands["PublishDataSource"] = "publish-datasource";
+ //
+ DocCommands["PublishDataSourceFromData"] = "publish-data-source-from-data";
+ //
+ DocCommands["PublishDataSourceFromWorkbookData"] = "publish-data-source-from-workbook-data";
+ //
+ DocCommands["QuantitativeQuickFilterEdit"] = "quantitative-quick-filter-edit";
+ //
+ DocCommands["QuantitativeModeQuickFilter"] = "quantitative-mode-quick-filter";
+ //
+ DocCommands["QueryMigrateDataSources"] = "query-migrate-data-sources";
+ //
+ DocCommands["QuickSort"] = "quick-sort";
+ //
+ DocCommands["RangedByIndexMerge"] = "ranged-by-index-merge";
+ //
+ DocCommands["RangedByValueMerge"] = "ranged-by-value-merge";
+ //
+ DocCommands["Record"] = "record";
+ //
+ DocCommands["Redo"] = "redo";
+ //
+ DocCommands["RefreshExtract"] = "refresh-extract";
+ //
+ DocCommands["RefreshFromSource"] = "refresh-from-source";
+ //
+ DocCommands["RelativeDateQuickFilterEdit"] = "relative-date-quick-filter-edit";
+ //
+ DocCommands["RemoveAllReferenceLines"] = "remove-all-reference-lines";
+ //
+ DocCommands["RemoveDrillPath"] = "remove-drill-path";
+ //
+ DocCommands["RemoveExtract"] = "remove-extract";
+ //
+ DocCommands["RemoveFieldFolder"] = "remove-field-folder";
+ //
+ DocCommands["RemoveFieldLabel"] = "remove-field-label";
+ //
+ DocCommands["RemoveFields"] = "remove-fields";
+ //
+ DocCommands["RemoveFieldsFromShelf"] = "remove-fields-from-shelf";
+ //
+ DocCommands["RemoveFromDrillPath"] = "remove-from-drill-path";
+ //
+ DocCommands["RemoveFromFieldFolder"] = "remove-from-field-folder";
+ //
+ DocCommands["RemoveReferenceLine"] = "remove-reference-line";
+ //
+ DocCommands["RemoveSubtotals"] = "remove-subtotals";
+ //
+ DocCommands["RenameDataSource"] = "rename-data-source";
+ //
+ DocCommands["RenameDrillPath"] = "rename-drill-path";
+ //
+ DocCommands["RenameFieldFolder"] = "rename-field-folder";
+ //
+ DocCommands["RenameSheet"] = "rename-sheet";
+ //
+ DocCommands["ReorderLabels"] = "reorder-labels";
+ //
+ DocCommands["ReportBug"] = "report-bug";
+ //
+ DocCommands["RequestDataSourcePresModel"] = "request-datasource-pres-model";
+ //
+ DocCommands["ResetParameterCtrlTitle"] = "reset-parameter-ctrl-title";
+ //
+ DocCommands["ResetTooltip"] = "reset-tooltip";
+ //
+ DocCommands["ResizeAreaAnnotationText"] = "resize-area-annotation-text";
+ //
+ DocCommands["ResizeAxis"] = "resize-axis";
+ //
+ DocCommands["ResizeCell"] = "resize-cell";
+ //
+ DocCommands["ResizeHeader"] = "resize-header";
+ //
+ DocCommands["ResizePointAnnotation"] = "resize-point-annotation";
+ //
+ DocCommands["Revert"] = "revert";
+ //
+ DocCommands["RotateFieldLabel"] = "rotate-field-label";
+ //
+ DocCommands["RotateLabel"] = "rotate-label";
+ //
+ DocCommands["SplitFieldLabel"] = "split-field-label";
+ //
+ DocCommands["RunAction"] = "run-action";
+ //
+ DocCommands["RunScript"] = "run-script";
+ //
+ DocCommands["RunUpdates"] = "run-update";
+ //
+ DocCommands["SaveModel"] = "save-model";
+ //
+ DocCommands["SavePublishedDStoFile"] = "save-published-ds-to-file";
+ //
+ DocCommands["SelectDataSource"] = "select-data-source";
+ //
+ DocCommands["SelectFieldsInShelf"] = "select-fields-in-shelf";
+ //
+ DocCommands["SendDataConnectionTableViewMessage"] = "send-data-connection-tableview-message";
+ //
+ DocCommands["SetActiveDataSourceName"] = "set-active-data-source-name";
+ //
+ DocCommands["SetActiveConnectionName"] = "set-active-connection-name";
+ //
+ DocCommands["SetActiveDataSource"] = "set-active-datasource";
+ //
+ DocCommands["SetBasePalette"] = "set-base-palette";
+ //
+ DocCommands["SetCategoricalColor"] = "set-categorical-color";
+ //
+ DocCommands["SetDataCacheDelta"] = "set-data-cache-delta";
+ //
+ DocCommands["SetDataPreviewAutoUpdate"] = "set-data-preview-auto-update";
+ //
+ DocCommands["SetDataPreviewCustomFieldOrder"] = "set-data-preview-custom-field-order";
+ //
+ DocCommands["SetDefaultColor"] = "set-default-color";
+ //
+ DocCommands["SetDefaultShape"] = "set-default-shape";
+ //
+ DocCommands["SetFilterContext"] = "set-filter-context";
+ //
+ DocCommands["SetFilterShared"] = "set-filter-shared";
+ //
+ DocCommands["SetInitialSQL"] = "set-initial-sql";
+ //
+ DocCommands["SetItemColor"] = "set-item-color";
+ //
+ DocCommands["SetItemColorResetCustomization"] = "set-item-color-reset-customization";
+ //
+ DocCommands["SetItemEncodingType"] = "set-item-encoding-type";
+ //
+ DocCommands["SetMarkSize"] = "set-mark-size";
+ //
+ DocCommands["SetPageNavFlag"] = "set-page-flag";
+ //
+ DocCommands["SetParameterCtrlDisplayFlags"] = "set-parameter-ctrl-display-flags";
+ //
+ DocCommands["SetParameterCtrlDisplayMode"] = "set-parameter-ctrl-display-mode";
+ //
+ DocCommands["SetParameterCtrlTitle"] = "set-parameter-ctrl-title";
+ //
+ DocCommands["SetParameterValue"] = "set-parameter-value";
+ //
+ DocCommands["SetPrimitive"] = "set-primitive";
+ //
+ DocCommands["SetQueryBanding"] = "set-query-banding";
+ //
+ DocCommands["SetQuickFilterIncludedValues"] = "set-quick-filter-included";
+ //
+ DocCommands["SetReferenceLineFormula"] = "set-reference-line-formula";
+ //
+ DocCommands["SetReferenceLineConstantValue"] = "set-reference-line-constant-value";
+ //
+ DocCommands["SetSheetFormatting"] = "set-sheet-formatting";
+ //
+ DocCommands["SetSheetSize"] = "set-sheet-size";
+ //
+ DocCommands["SetTotalsType"] = "set-totals-type";
+ //
+ DocCommands["SetWorkbookLocale"] = "set-workbook-locale";
+ //
+ DocCommands["ShowCatCtrlQuickFilter"] = "show-cat-ctrl-quick-filter";
+ //
+ DocCommands["ShowColFieldNamesFlag"] = "show-col-field-names";
+ //
+ DocCommands["ShowColTotalsFlag"] = "show-col-totals";
+ //
+ DocCommands["ShowColumnFieldLabel"] = "show-column-field-label";
+ //
+ DocCommands["ShowEmptyColsFlag"] = "show-empty-cols";
+ //
+ DocCommands["ShowEmptyRowsFlag"] = "show-empty-rows";
+ //
+ DocCommands["ShowForecastEditor"] = "show-forecast-editor";
+ //
+ DocCommands["ShowFullRange"] = "show-full-range";
+ //
+ DocCommands["ShowHeader"] = "show-header";
+ //
+ DocCommands["ShowHiddenData"] = "show-hidden-data";
+ //
+ DocCommands["ShowMe"] = "show-me";
+ //
+ DocCommands["ShowQuantCtrlQuickFilter"] = "show-quant-ctrl-quick-filter";
+ //
+ DocCommands["ShowQuickFilterDoc"] = "show-quickfilter-doc";
+ //
+ DocCommands["ShowReferenceLineEditor"] = "show-reference-line-editor";
+ //
+ DocCommands["ShowReferenceLineConstantValueEditor"] = "show-reference-line-constant-value-editor";
+ //
+ DocCommands["ShowReferenceLineFormatter"] = "show-reference-line-formatter";
+ //
+ DocCommands["ShowRowFieldLabel"] = "show-row-field-label";
+ //
+ DocCommands["ShowRowFieldNamesFlag"] = "show-row-field-names";
+ //
+ DocCommands["ShowRowTotalsFlag"] = "show-row-totals";
+ //
+ DocCommands["SimpleCommandList"] = "simple-command-list";
+ //
+ DocCommands["Sleep"] = "sleep";
+ //
+ DocCommands["SleepBackgroundThread"] = "sleep-background-thread";
+ //
+ DocCommands["SortDataGridByColumn"] = "sort-datagrid-by-column";
+ //
+ DocCommands["SortDataGridFields"] = "sort-datagrid-fields";
+ //
+ DocCommands["SpecialValues"] = "special-values";
+ //
+ DocCommands["SplitField"] = "split-field";
+ //
+ DocCommands["StackMarks"] = "stack-marks";
+ //
+ DocCommands["StackOverflowCrash"] = "stack-overflow";
+ //
+ DocCommands["SubtotalAggregation"] = "subtotal-aggregation";
+ //
+ DocCommands["Subtotals"] = "subtotals";
+ //
+ DocCommands["SwapFields"] = "swap-fields";
+ //
+ DocCommands["SwapRowsAndColumns"] = "swap-rows-and-columns";
+ //
+ DocCommands["TableauException"] = "tableau-exception";
+ //
+ DocCommands["ToggleDropLines"] = "toggle-drop-lines";
+ //
+ DocCommands["ToggleFieldBlending"] = "toggle-field-blending";
+ //
+ DocCommands["ToggleMarkLabels"] = "toggle-mark-labels";
+ //
+ DocCommands["TogglePageTitle"] = "toggle-page-title";
+ //
+ DocCommands["ToggleParameterCtrlDisplayFlag"] = "toggle-parameter-ctrl-display-flag";
+ //
+ DocCommands["ToggleParameterCtrlTitle"] = "toggle-parameter-ctrl-title";
+ //
+ DocCommands["ToggleQuickFilterTitle"] = "toggle-quick-filter-title";
+ //
+ DocCommands["ToggleVizNavigationSetting"] = "toggle-viz-navigation-setting";
+ //
+ DocCommands["Undo"] = "undo";
+ //
+ DocCommands["UnhideData"] = "unhide-data";
+ //
+ DocCommands["UnhideLabel"] = "unhide-label";
+ //
+ DocCommands["UpdateAreaAnnotation"] = "update-area-annotation";
+ //
+ DocCommands["UpdateCalcScopeIsolation"] = "update-scope-isolation-for-calculation";
+ //
+ DocCommands["UpdateDataServerConnectionInfo"] = "update-data-server-connection-info";
+ //
+ DocCommands["UpdatePointAnnotationPullback"] = "update-point-annotation-pullback";
+ //
+ DocCommands["UpdateTableCalcInfo"] = "update-table-calc-infomation";
+ //
+ DocCommands["UpgradeExtract"] = "upgrade-extract";
+ //
+ DocCommands["UseExtract"] = "use-extract";
+ //
+ DocCommands["ValidateDrillPathName"] = "validate-drill-path-name";
+ //
+ DocCommands["ValidateFormula"] = "validate-formula";
+ //
+ DocCommands["ValidateInitialSQL"] = "validate-initial-sql";
+ //
+ DocCommands["ValidateQueryBanding"] = "validate-query-banding";
+ //
+ DocCommands["ValidateTypeInPill"] = "validate-type-in-pill";
+ //
+ DocCommands["ViewParameterCtrls"] = "view-param-ctrls";
+ //
+ DocCommands["ViewQuickFilters"] = "view-quick-filters";
+ //
+ DocCommands["GetSchema"] = "get-schema";
+ //
+ DocCommands["GetSchemaViewerDataSchema"] = "get-schema-viewer-data-schema";
+ //
+ DocCommands["ConvertToDimension"] = "convert-to-dimension";
+ //
+ DocCommands["ConvertToMeasure"] = "convert-to-measure";
+ //
+ DocCommands["ConvertToContinuous"] = "convert-to-continuous";
+ //
+ DocCommands["ConvertToDiscrete"] = "convert-to-discrete";
+ //
+ DocCommands["RenameField"] = "rename-field";
+ //
+ DocCommands["HideField"] = "hide-field";
+ //
+ DocCommands["UnhideField"] = "unhide-field";
+ //
+ DocCommands["HideUnusedFields"] = "hide-unused-fields";
+ //
+ DocCommands["DuplicateFields"] = "duplicate-fields";
+ //
+ DocCommands["CleanValues"] = "clean-values";
+ //
+ DocCommands["ParseDate"] = "parse-date";
+ //
+ DocCommands["MakeDate"] = "make-date";
+ //
+ DocCommands["SetQualifyNames"] = "set-qualify-names";
+ //
+ DocCommands["CreateMeasureFromColumn"] = "create-measure-from-column";
+ //
+ DocCommands["RemoveFromSchemaDrillPath"] = "remove-from-schema-drill-path";
+ //
+ DocCommands["AddToSchemaDrillPath"] = "add-to-schema-drill-path";
+ //
+ DocCommands["RemoveSchemaDrillPath"] = "remove-schema-drill-path";
+ //
+ DocCommands["ShowHiddenFields"] = "show-hidden-fields";
+ //
+ DocCommands["ShowAliases"] = "show-aliases";
+ //
+ DocCommands["SetRowDisplayCount"] = "set-row-display-count";
+ //
+ DocCommands["ShowStructure"] = "show-structure";
+ //
+ DocCommands["GroupByTable"] = "group-by-table";
+ //
+ DocCommands["ChangeDataType"] = "change-data-type";
+ //
+ DocCommands["ChangePivotStrategy"] = "change-pivot-strategy";
+ //
+ DocCommands["ChangeDisplayAlias"] = "change-display-alias";
+ //
+ DocCommands["SetIncludeSharedMembers"] = "set-include-shared-members";
+ //
+ DocCommands["SetUtilityDimension"] = "set-utility-dimension";
+ //
+ DocCommands["SetDefaultHierarchy"] = "set-default-hierarchy";
+ //
+ DocCommands["DataSourceSortOrder"] = "data-source-sort-order";
+ //
+ DocCommands["ClearUtilityDimension"] = "clear-utility-dimension";
+ //
+ DocCommands["ClearDefaultSort"] = "clear-default-sort";
+ //
+ DocCommands["SetDefaultAggregation"] = "set-default-aggregation";
+ //
+ DocCommands["SetDefaultVTAggregation"] = "set-default-vtaggregation";
+ //
+ DocCommands["ChangeFiscalYear"] = "change-fiscal-year";
+ //
+ DocCommands["ChangeSemanticRole"] = "change-semantic-role";
+ //
+ DocCommands["AddToSheet"] = "add-to-sheet";
+ //
+ DocCommands["DropSchemaSelOnShelf"] = "drop-schema-sel-on-shelf";
+ //
+ DocCommands["AddToSchemaFieldFolder"] = "add-to-schema-field-folder";
+ //
+ DocCommands["RemoveFromSchemaFieldFolder"] = "remove-from-schema-field-folder";
+ //
+ DocCommands["RemoveSchemaFieldFolder"] = "remove-schema-field-folder";
+ //
+ DocCommands["DefaultTextFormat"] = "default-text-format";
+ //
+ DocCommands["EditSchemaCaption"] = "edit-schema-caption";
+ //
+ DocCommands["ResetSchemaCaption"] = "reset-schema-caption";
+ //
+ DocCommands["CreateOutlierSet"] = "create-outlier-set";
+ })(DocCommands = exports.DocCommands || (exports.DocCommands = {}));
+ var UICommands;
+ (function (UICommands) {
+ //
+ UICommands["About"] = "about";
+ //
+ UICommands["AddDataServerDataSourceUI"] = "add-data-server-datasource-ui";
+ //
+ UICommands["SwitchToDocumentAndAddDataServerDataSourceUI"] = "switch-to-document-and-add-data-server-ds-ui";
+ //
+ UICommands["AddDrillPathUI"] = "add-drillpath-ui";
+ //
+ UICommands["AddFieldFolderUI"] = "add-field-folder-ui";
+ //
+ UICommands["AddFileToExtractUI"] = "add-file-to-extract-ui";
+ //
+ UICommands["AddDataSourceToExtractUI"] = "add-data-source-to-extract-ui";
+ //
+ UICommands["AddQCToSheetUI"] = "add-qc-to-sheet-ui";
+ //
+ UICommands["AddReferenceLineUI"] = "add-reference-line-ui";
+ //
+ UICommands["AddSchemaFieldFolderUI"] = "add-to-schema-field-folder-ui";
+ //
+ UICommands["AddTableauServerDSConnectionUI"] = "add-tableau-server-ds-connection-ui";
+ //
+ UICommands["AddToSchemaDrillPathUI"] = "add-to-schema-drillpath-ui";
+ //
+ UICommands["AddToSheetUI"] = "add-to-sheet-ui";
+ //
+ UICommands["AnnotateUI"] = "annotate-ui";
+ //
+ UICommands["AppendDataSourceToRemoteExtractUI"] = "append-data-source-to-remote-extract-ui";
+ //
+ UICommands["AttemptConnectDataSourcesOnSheetUI"] = "attempt-connect-datasources-on-sheet-ui";
+ //
+ UICommands["AttemptDataSourceConnectionUI"] = "attempt-datasource-connect-ui";
+ //
+ UICommands["AutoHideSheet"] = "auto-hide-sheet";
+ //
+ UICommands["AutomationClickMRUItem"] = "click-mru-item";
+ //
+ UICommands["CalculatedMembersUI"] = "calculated-members-ui";
+ //
+ UICommands["ChangeAggregationUI"] = "change-aggregation-ui";
+ //
+ UICommands["ChangeDataServerLogonUI"] = "change-data-server-logon-ui";
+ //
+ UICommands["ChangeEssbaseAliasFile"] = "change-essbase-alias-file";
+ //
+ UICommands["ChangeFieldTypeUI"] = "change-field-type-ui";
+ //
+ UICommands["ChangeTabColorSheet"] = "change-tab-color-sheet";
+ //
+ UICommands["CheckForProductUpdates"] = "check-for-product-updates";
+ //
+ UICommands["ClearDashboardUI"] = "clear-dashboard-ui";
+ //
+ UICommands["ClearSheetUI"] = "clear-sheet-ui";
+ //
+ UICommands["ClearStoryUI"] = "clear-story-ui";
+ //
+ UICommands["ClearVizUI"] = "clear-viz-ui";
+ //
+ UICommands["CloseCalculationUI"] = "close-calculation-ui";
+ //
+ UICommands["CloseDataSourceUI"] = "close-datasource-ui";
+ //
+ UICommands["CloseWorkbook"] = "close-workbook";
+ //
+ UICommands["ColorLegendEditUI"] = "color-legend-edit-ui";
+ //
+ UICommands["CommitPillEditUI"] = "commit-pill-edit-ui";
+ //
+ UICommands["ConnectDataSourceUI"] = "connect-datasource-ui";
+ //
+ UICommands["ConnectRepromptUI"] = "connect-reprompt-ui";
+ //
+ UICommands["ConnectVariablePromptUI"] = "connect-variable-prompt-ui";
+ //
+ UICommands["ConnectVariablePromptMatchingUI"] = "connect-variable-prompt-matching-ui";
+ //
+ UICommands["ConnectionAddNewCustomSQLUI"] = "connection-add-new-custom-sql-ui";
+ //
+ UICommands["ConnectionAddNewTableUI"] = "connection-add-new-table-ui";
+ //
+ UICommands["ConnectionDataGridCopyUI"] = "connection-data-grid-copy-ui";
+ //
+ UICommands["ConnectionEditCustomSQLUI"] = "connection-custom-sql-ui";
+ //
+ UICommands["ConnectionEditExtractUI"] = "connection-extract-ui";
+ //
+ UICommands["ConnectionEditDBVariablesUI"] = "connection-edit-db-variables-ui";
+ //
+ UICommands["ConnectionEditConnectionUI"] = "connection-edit-connection-ui";
+ //
+ UICommands["ConnectionFinalizeDataSourceUI"] = "connection-finalize-datasource-ui";
+ //
+ UICommands["ConnectionFinalizeExtractStatesUI"] = "connection-finalize-extract-states-ui";
+ //
+ UICommands["ConnectionGetTypeGroupPresModelUI"] = "connection-get-type-group-pres-model-ui";
+ //
+ UICommands["ConnectionGetSavedDataSourcesPresModelUI"] = "connection-get-saved-ds-pres-model-ui";
+ //
+ UICommands["ConnectionPartitioningFailureUI"] = "connection-partitioning-failure-ui";
+ //
+ UICommands["ConnectionReplaceTableUI"] = "connection-replace-table-ui";
+ //
+ UICommands["ConnectionSearchCatalogUI"] = "connection-search-catalog-ui";
+ //
+ UICommands["ConnectionSearchCubeUI"] = "connection-search-cube-ui";
+ //
+ UICommands["ConnectionSelectCatalogUI"] = "connection-select-catalog-ui";
+ //
+ UICommands["ConnectionSelectCubeUI"] = "connection-select-cube-ui";
+ //
+ UICommands["ConnectionSelectDatabaseUI"] = "connection-select-database-ui";
+ //
+ UICommands["ConnectionSelectStandardConnectionUI"] = "connection-select-standard-connection-ui";
+ //
+ UICommands["ConnectionSelectStoredProcedureUI"] = "connection-select-stored-procedure-ui";
+ //
+ UICommands["ConnectionShowEditTableDialogUI"] = "connection-show-edit-table-ui";
+ //
+ UICommands["ConnectionShowPivotDialogUI"] = "conneciton-show-pivot-dialog-ui";
+ //
+ UICommands["ConnectionSortCatalogUI"] = "connection-sort-catalog-ui";
+ //
+ UICommands["ConnectionSortCubeUI"] = "connection-sort-cube-ui";
+ //
+ UICommands["ConnectionValidateCustomSQLUI"] = "connection-validate-custom-sql-ui";
+ //
+ UICommands["ConnectToCloudFile"] = "connect-to-cloud-file";
+ //
+ UICommands["ConnectToDataServerSourceUI"] = "connect-data-server-datasource-ui";
+ //
+ UICommands["ConnectionConvertToSQLUI"] = "connection-convert-to-sql-ui";
+ //
+ UICommands["ConnectionRenameConnectionUI"] = "connection-rename-connection-ui";
+ //
+ UICommands["ExportUnderlyingDataToCSVUI"] = "export-to-csv-with-progress-ui";
+ //
+ UICommands["ConnectODBCUI"] = "connect-odbc-ui";
+ //
+ UICommands["CopyCrosstab"] = "copy-crosstab";
+ //
+ UICommands["CopyData"] = "copy-data";
+ //
+ UICommands["CopyDrillPathFieldsUI"] = "copy-drill-path-fields-ui";
+ //
+ UICommands["CopyFieldsDefnUI"] = "copy-fields-defn-ui";
+ //
+ UICommands["CopyImage"] = "copy-image";
+ //
+ UICommands["CopyImageDashboard"] = "copy-image-dashboard";
+ //
+ UICommands["CopyImageWorksheet"] = "copy-image-worksheet";
+ //
+ UICommands["CopyImageStory"] = "copy-image-story";
+ //
+ UICommands["CopyWorksheetFormatting"] = "copy-formatting";
+ //
+ UICommands["CreateCalculatedSetUI"] = "create-calculated-set-ui";
+ //
+ UICommands["CreateCalculationUI"] = "create-calculation-ui";
+ //
+ UICommands["CreateCombinedFieldUI"] = "create-combined-field-ui";
+ //
+ UICommands["CreateConnectionUI"] = "create-connection-ui";
+ //
+ UICommands["CreateDateBinUI"] = "create-Date-bin-ui";
+ //
+ UICommands["CreateGroupSelectionUI"] = "create-group-selection-ui";
+ //
+ UICommands["CreateGroupUI"] = "create-group-ui";
+ //
+ UICommands["CreateIdentitySet"] = "create-user-filter";
+ //
+ UICommands["CreateLeafConnectionUI"] = "create-leaf-connection-ui";
+ //
+ UICommands["CreateNumericBinsUI"] = "create-numeric-bins-ui";
+ //
+ UICommands["CreateSetUI"] = "create-set-ui";
+ //
+ UICommands["CustomDateAggregationUI"] = "custom-date-aggregation-ui";
+ //
+ UICommands["CutDrillPathFieldsUI"] = "cut-drill-path-fields-ui";
+ //
+ UICommands["CutFieldsDefnUI"] = "cut-fields-defn-ui";
+ //
+ UICommands["DeactivateDashboard"] = "deactivate-dashboard";
+ //
+ UICommands["DeleteCookies"] = "delete-cookies";
+ //
+ UICommands["DeleteFieldsUI"] = "delete-fields-ui";
+ //
+ UICommands["DeleteSheetUI"] = "delete-sheet-ui";
+ //
+ UICommands["DescribeAdhocClusterUI"] = "describe-adhoc-cluster-ui";
+ //
+ UICommands["DescribeDrillPathUI"] = "describe-drillpath-ui";
+ //
+ UICommands["DescribeFieldUI"] = "describe-field-ui";
+ //
+ UICommands["DescribeForecastUI"] = "describe-forecast-ui";
+ //
+ UICommands["DescribeSchemaDrillPathUI"] = "describe-schema-drillpath-ui";
+ //
+ UICommands["DescribeTrendLine"] = "describe-trend-line";
+ //
+ UICommands["DescribeTrendModel"] = "describe-trend-model";
+ //
+ UICommands["OpenDiscoverPaneLinks"] = "open-discover-pane-links";
+ //
+ UICommands["DismissGoToWorksheetTooltipUI"] = "dismiss-go-to-worksheet-tooltip-ui";
+ //
+ UICommands["DownloadCopyDataSource"] = "download-copy-data-source";
+ //
+ UICommands["DrilldownUI"] = "drilldown-ui";
+ //
+ UICommands["DropSchemaSelOnShelfUI"] = "drop-schema-sel-on-shelf-ui";
+ //
+ UICommands["DropUI"] = "drop-ui";
+ //
+ UICommands["DuplicateDataSourceUI"] = "duplicate-datasource-ui";
+ //
+ UICommands["DuplicateSheetAsCrosstab"] = "duplicate-sheet-as-crosstab";
+ //
+ UICommands["DuplicateSheetOrCrosstabUI"] = "duplicate-sheet-or-crosstab-ui";
+ //
+ UICommands["DuplicateSheetUI"] = "duplicate-sheet-ui";
+ //
+ UICommands["EditAliasesUI"] = "edit-aliases-ui";
+ //
+ UICommands["EditAnnotation"] = "edit-annotation";
+ //
+ UICommands["EditAxisUI"] = "edit-axis-ui";
+ //
+ UICommands["EditCalculatedSetUI"] = "edit-calculated-set-ui";
+ //
+ UICommands["EditCalculationUI"] = "edit-calculation-ui";
+ //
+ UICommands["EditCaptionUI"] = "edit-caption";
+ //
+ UICommands["EditCombinedFieldUI"] = "edit-combined-field";
+ //
+ UICommands["EditCopyFieldUI"] = "edit-copy-field-ui";
+ //
+ UICommands["EditDataSourceUI"] = "edit-datasource-ui";
+ //
+ UICommands["EditDataSourceFieldAliases"] = "edit-datasource-field-aliases";
+ //
+ UICommands["EditDataSourceFiltersUI"] = "edit-datasource-filters-ui";
+ //
+ UICommands["EditDataSourceSitePathsUI"] = "edit-datasource-site-paths-ui";
+ //
+ UICommands["EditDateBinUI"] = "edit-date-bin-ui";
+ //
+ UICommands["EditDefaultSortUI"] = "edit-default-sort-ui";
+ //
+ UICommands["EditDropLinesUI"] = "edit-drop-lines-ui";
+ //
+ UICommands["EditDropFieldUI"] = "edit-drop-field-ui";
+ //
+ UICommands["EditDataSourceRelationshipsUI"] = "edit-datasource-relationships-ui";
+ //
+ UICommands["EditEnumeratedSetUI"] = "edit-enumerated-set";
+ //
+ UICommands["EditFilterQuickFilter"] = "edit-filter-quick-filter";
+ //
+ UICommands["EditFilterUI"] = "edit-filter-ui";
+ //
+ UICommands["EditForecastUI"] = "edit-forecast-ui";
+ //
+ UICommands["EditGroupUI"] = "edit-group-ui";
+ //
+ UICommands["EditGroupValue"] = "edit-group-value";
+ //
+ UICommands["EditGroupValueLabel"] = "edit-group-value-label";
+ //
+ UICommands["EditLegendGroupValueUI"] = "edit-group-value-legend";
+ //
+ UICommands["EditImageUI"] = "edit-image-ui";
+ //
+ UICommands["EditLegendMemberAliasUI"] = "edit-legend-member-alias-ui";
+ //
+ UICommands["EditLegendTitleUI"] = "edit-legend-title-ui";
+ //
+ UICommands["EditMarkColorUI"] = "edit-mark-color-ui";
+ //
+ UICommands["EditMarkShapeUI"] = "edit-mark-shape-ui";
+ //
+ UICommands["EditMemberAlias"] = "edit-member-alias";
+ //
+ UICommands["EditMemberAliasLabel"] = "edit-member-alias-label";
+ //
+ UICommands["EditPageTitleUI"] = "edit-page-title-ui";
+ //
+ UICommands["EditParameterCtrlTitle"] = "edit-param-control-title";
+ //
+ UICommands["EditPdfPageSelectionUI"] = "edit-pdf-page-selection-ui";
+ //
+ UICommands["EditPrimaryAliasesUI"] = "edit-primary-aliases-ui";
+ //
+ UICommands["EditReferenceLine"] = "edit-reference-line";
+ //
+ UICommands["EditSchemaCalculationUI"] = "edit-schema-calculation-ui";
+ //
+ UICommands["EditSchemaCalculationRangeUI"] = "edit-schema-calculation-range-ui";
+ //
+ UICommands["EditSchemaCaptionUI"] = "edit-schema-caption-ui";
+ //
+ UICommands["EditSchemaFieldAliasUI"] = "edit-schema-field-alias-ui";
+ //
+ UICommands["ResetSchemaCaptionUI"] = "reset-schema-field-alias-ui";
+ //
+ UICommands["ResetMultipleSchemaCaptionsUI"] = "reset-multiple-schema-field-alias-ui";
+ //
+ UICommands["EditSchemaNumericBinsUI"] = "edit-schema-numeric-bins-ui";
+ //
+ UICommands["EditSetUI"] = "edit-set-ui";
+ //
+ UICommands["EditTitleQuickFilter"] = "edit-title-quick-filter";
+ //
+ UICommands["EditTitleUI"] = "edit-title";
+ //
+ UICommands["EditTooltipUI"] = "edit-tooltip";
+ //
+ UICommands["EditTrendLinesUI"] = "edit-trend-lines-ui";
+ //
+ UICommands["EditUserDescriptionUI"] = "edit-user-description-ui";
+ //
+ UICommands["EditWMSMapTileServer"] = "edit-wms-map-tile-server";
+ //
+ UICommands["EditZoneParam"] = "edit-zone-param";
+ //
+ UICommands["EditZoneUrl"] = "edit-zone-url";
+ //
+ UICommands["EstablishConnectionUI"] = "establish-connection-ui";
+ //
+ UICommands["EstablishTableauServerConnectionUI"] = "establish-tableau-server-connection-ui";
+ //
+ UICommands["ExecuteUIAutomationButton"] = "execute-ui-button-action";
+ //
+ UICommands["ExecuteUIAutomationComboBox"] = "execute-ui-combo-box-action";
+ //
+ UICommands["ExecuteUIAutomationGenericWidget"] = "execute-ui-generic-widget-action";
+ //
+ UICommands["ExecuteUIAutomationLabel"] = "execute-ui-label-action";
+ //
+ UICommands["ExecuteUIAutomationMenu"] = "execute-ui-menu-action";
+ //
+ UICommands["ExecuteUIAutomationItemView"] = "execute-ui-item-view-action";
+ //
+ UICommands["ExecuteUIAutomationTextBox"] = "execute-ui-text-box-action";
+ //
+ UICommands["ExecuteUIAutomationToggleButton"] = "execute-ui-toggle-button-action";
+ //
+ UICommands["ExecuteUIAutomationSlider"] = "execute-ui-slider-action";
+ //
+ UICommands["ExecuteUIAutomationWindow"] = "execute-ui-window-action";
+ //
+ UICommands["ExecuteUIAutomationWebView"] = "execute-ui-web-view-action";
+ //
+ UICommands["ExecuteUIAutomationTab"] = "execute-ui-tab-action";
+ //
+ UICommands["ExecuteUIAutomationTextBrowser"] = "execute-ui-text-browser-action";
+ //
+ UICommands["ExitApplication"] = "exit-application";
+ //
+ UICommands["ExportData"] = "export-data";
+ //
+ UICommands["ExportDataSourceUI"] = "export-datasource-ui";
+ //
+ UICommands["ExportPackagedWorkbook"] = "export-packaged";
+ //
+ UICommands["ExportWorkbookSheetsUI"] = "export-workbook-sheets-ui";
+ //
+ UICommands["ExtSvcConfigUI"] = "ext-svc-config-ui";
+ //
+ UICommands["ExtractHistory"] = "extract-history";
+ //
+ UICommands["ExtractPropertiesUI"] = "extract-properties-ui";
+ //
+ UICommands["ExtractUI"] = "extract-ui";
+ //
+ UICommands["FilterFieldLabelUI"] = "filter-field-label-ui";
+ //
+ UICommands["FormatAnnotation"] = "format-annotation";
+ //
+ UICommands["FormatAxisUI"] = "format-axis-ui";
+ //
+ UICommands["FormatCaptionTitleUI"] = "format-caption-title";
+ //
+ UICommands["FormatField"] = "format-pane";
+ //
+ UICommands["FormatFieldLabelUI"] = "format-field-label-ui";
+ //
+ UICommands["FormatLabel"] = "format-label";
+ //
+ UICommands["FormatLegendsUI"] = "format-legends-ui";
+ //
+ UICommands["FormatReferenceLine"] = "format-reference-line";
+ //
+ UICommands["FormatUI"] = "format-ui";
+ //
+ UICommands["FullScreen"] = "fullscreen";
+ //
+ UICommands["GetDashboardSidePaneMode"] = "get-dashboard-sidepane-mode";
+ //
+ UICommands["GetDebuggingInfo"] = "get-debugging-info";
+ //
+ UICommands["GetIconPathForEncodingType"] = "get-icon-path-for-encoding-type";
+ //
+ UICommands["GetIconPathForPrimitiveType"] = "get-icon-path-for-primitive-type";
+ //
+ UICommands["GetTableOptionsPresModel"] = "get-table-options-pres-model";
+ //
+ UICommands["GetWindowNameUI"] = "get-window-name";
+ //
+ UICommands["GetWorksheetSidePaneMode"] = "get-worksheet-sidepane-mode";
+ //
+ UICommands["GetHiddenSheets"] = "get-hidden-sheets";
+ //
+ UICommands["GetOpenPaneMRUs"] = "get-open-pane-mrus";
+ //
+ UICommands["GetOpenPaneSampleWorkbooks"] = "get-open-pane-sample-workbooks";
+ //
+ UICommands["GetRetargetDataSourcePresModelUI"] = "get-retarget-datasource-pres-model-ui";
+ //
+ UICommands["GetSchemaViewerPresModel"] = "get-schema-viewer-pres-model";
+ //
+ UICommands["GetSelectedSheets"] = "get-selected-sheets";
+ //
+ UICommands["GetSheetSorterThumbnail"] = "get-sheet-sorter-thumbnail";
+ //
+ UICommands["GetSheetTabUIThumbnail"] = "get-sheet-tab-ui-thumbnail";
+ //
+ UICommands["GetSheetTabUIText"] = "get-sheet-tab-ui-text";
+ //
+ UICommands["GetVisibleTreeItems"] = "get-visible-tree-items";
+ //
+ UICommands["GotoSheetRange"] = "goto";
+ //
+ UICommands["GotoURL"] = "goto-url";
+ //
+ UICommands["HideCaptionUI"] = "hide-caption";
+ //
+ UICommands["HideFilmstripUI"] = "hide-filmstrip-ui";
+ //
+ UICommands["HideTitleUI"] = "hide-title";
+ //
+ UICommands["HideZoneUI"] = "hide-zone-ui";
+ //
+ UICommands["HideAllSheetsUI"] = "hide-all-sheets-ui";
+ //
+ UICommands["UnhideAllSheetsUI"] = "unhide-all-sheets-ui";
+ //
+ UICommands["ImportLocalDataUI"] = "import-local-data-ui";
+ //
+ UICommands["ImportMapSource"] = "import-map-source";
+ //
+ UICommands["ImportMapSourceUI"] = "import-map-source-ui";
+ //
+ UICommands["ImportWorkbookUI"] = "import-workbook-ui";
+ //
+ UICommands["LoadDefaultFormattingUI"] = "load-formatting-ui";
+ //
+ UICommands["LocateFieldUI"] = "locate-field-ui";
+ //
+ UICommands["LogMemoryUsage"] = "log-memory-usage";
+ //
+ UICommands["ManageLicensing"] = "manage-licensing";
+ //
+ UICommands["ManageMapbox"] = "manage-mapbox";
+ //
+ UICommands["ManagePublicWorkbooks"] = "manage-public";
+ //
+ UICommands["ManageMapServices"] = "manage-map-services";
+ //
+ UICommands["MapLayersUI"] = "map-layers-ui";
+ //
+ UICommands["ManageWMS"] = "manage-wms";
+ //
+ UICommands["UpgradeDataSourcesUI"] = "upgrade-datasources-ui";
+ //
+ UICommands["UpgradeDataSourceUI"] = "upgrade-datasource-ui";
+ //
+ UICommands["MoveRepository"] = "move-repository";
+ //
+ UICommands["NewSchemaDrillPathUI"] = "new-schema-drill-path-ui";
+ //
+ UICommands["NewUIDashboard"] = "new-dashboard-ui";
+ //
+ UICommands["NewUIWorksheet"] = "new-worksheet-ui";
+ //
+ UICommands["NewUIStoryboard"] = "new-storyboard-ui";
+ //
+ UICommands["NewWorkbook"] = "new-workbook";
+ //
+ UICommands["NextSheet"] = "next-sheet";
+ //
+ UICommands["NonRangedEditReferenceLine"] = "non-ranged-edit-reference-line";
+ //
+ UICommands["OpenBookmark"] = "open-bookmark";
+ //
+ UICommands["OpenFromWorkgroup"] = "open-workbook-from-workgroup";
+ //
+ UICommands["OpenMapSource"] = "open-map-source";
+ //
+ UICommands["OpenMapSourceUI"] = "open-map-source-ui";
+ //
+ UICommands["OpenSampleWorkbook"] = "open-sample-workbook";
+ //
+ UICommands["OpenWorkbook"] = "open-workbook";
+ //
+ UICommands["OpenRecentWorkbook"] = "open-recent-workbook";
+ //
+ UICommands["OpenOtherFiles"] = "open-other-files";
+ //
+ UICommands["OptimizeExtractUI"] = "optimize-extract-ui";
+ //
+ UICommands["PageSetup"] = "page-setup";
+ //
+ UICommands["Paste"] = "paste";
+ //
+ UICommands["PasteFieldsDefnUI"] = "paste-fields-defn-ui";
+ //
+ UICommands["PasteWorksheetFormatting"] = "paste-formatting";
+ //
+ UICommands["PDFExport"] = "export-pdf";
+ //
+ UICommands["PerspectivesUI"] = "perspectives-ui";
+ //
+ UICommands["PresentationMode"] = "presentation-mode";
+ //
+ UICommands["Print"] = "print";
+ //
+ UICommands["PromptScript"] = "prompt-command";
+ //
+ UICommands["PropertiesDataSourceUI"] = "properties-datasource-ui";
+ //
+ UICommands["PublishDatasourceToWorkgroup"] = "publish-datasource-to-workgroup";
+ //
+ UICommands["PublishDatasourceToWorkgroupFromData"] = "publish-datasource-to-workgroup-from-data";
+ //
+ UICommands["PublishDatasourceToWorkgroupRange"] = "publish-datasource-to-workgroup-range";
+ //
+ UICommands["PublishWorkbookToWorkgroup"] = "publish-workbook-to-workgroup";
+ //
+ UICommands["PublishDatasourceToWorkgroupFromWorkbookData"] = "publish-datasource-to-workgroup-from-workbook-data";
+ //
+ UICommands["PromptForDataSourceFileUI"] = "prompt-for-datasource-file-ui";
+ //
+ UICommands["PromptUnknownWDCUrlUI"] = "prompt-unknown-wdc-url-ui";
+ //
+ UICommands["QueryDataSourceUI"] = "query-datasource-ui";
+ //
+ UICommands["QuickFilterFieldLabelUI"] = "quick-filter-field-label-ui";
+ //
+ UICommands["QuickTableCalcUI"] = "quick-table-calc-ui";
+ //
+ UICommands["ReconnectMapSourceUI"] = "reconnect-map-source-ui";
+ //
+ UICommands["RecordPerformance"] = "record-perf";
+ //
+ UICommands["RefreshAllExtractsUI"] = "refresh-all-extracts-ui";
+ //
+ UICommands["RefreshAllThumbnailsUI"] = "refresh-all-thumbnails";
+ //
+ UICommands["RefreshAutoExtractUI"] = "refresh-auto-extract-ui";
+ //
+ UICommands["RefreshDataSourceUI"] = "refresh-datasource-ui";
+ //
+ UICommands["RefreshExtractUI"] = "refresh-extract-ui";
+ //
+ UICommands["RefreshFromSourceUI"] = "refresh-from-source-ui";
+ //
+ UICommands["RefreshLocalDataUI"] = "refresh-local-data-ui";
+ //
+ UICommands["RefreshThumbnailUI"] = "refresh-thumbnail";
+ //
+ UICommands["ReleaseMemory"] = "release-memory";
+ //
+ UICommands["RemoveAnnotation"] = "remove-annotation";
+ //
+ UICommands["RemoveExtractUI"] = "remove-extract-ui";
+ //
+ UICommands["RemoveMRUItem"] = "remove-mru";
+ //
+ UICommands["RemoveSavedDataSourceUI"] = "remove-saved-datasource";
+ //
+ UICommands["RemoveSheetFromDashboardUI"] = "remove-sheet-from-dashboard-ui";
+ //
+ UICommands["RemoveTableUI"] = "remove-table-ui";
+ //
+ UICommands["RenameDataSourceUI"] = "rename-datasource-ui";
+ //
+ UICommands["RenameSchemaFieldFolderUI"] = "rename-field-folder-ui";
+ //
+ UICommands["RenameSchemaDrillPathUI"] = "rename-schema-drillpath-ui";
+ //
+ UICommands["RenameSheetUI"] = "rename-sheet-ui";
+ //
+ UICommands["ReorderSheetsUI"] = "reorder-sheets-ui";
+ //
+ UICommands["ReplaceDataSourceWithDataServerDataSourceUI"] = "replace-datasource-with-data-server-datasource-ui";
+ //
+ UICommands["ReplaceFieldUI"] = "replace-field-ui";
+ //
+ UICommands["ResetCaptionUI"] = "reset-caption-ui";
+ //
+ UICommands["ResetCards"] = "reset-cards";
+ //
+ UICommands["ResetLocalDataUI"] = "remove-local-data-ui";
+ //
+ UICommands["ResetMessages"] = "reset-messages";
+ //
+ UICommands["StartOnlineSyncClient"] = "start-online-sync-client";
+ //
+ UICommands["ResetTitleUI"] = "reset-title-ui";
+ //
+ UICommands["ResetToDefaultsMapCard"] = "reset-map-to-defaults";
+ //
+ UICommands["ResetWorkbook"] = "revert-workbook-ui";
+ //
+ UICommands["RetargetDataSource"] = "retarget-datasource";
+ //
+ UICommands["RetargetDataSourceUI"] = "retarget-datasource-ui";
+ //
+ UICommands["SaveAsWorkbook"] = "save-as-workbook";
+ //
+ UICommands["SaveBookmark"] = "save-bookmark";
+ //
+ UICommands["SaveDebuggingWorkbook"] = "save-debugging-workbook";
+ //
+ UICommands["SaveDefaultFormattingUI"] = "save-formatting-ui";
+ //
+ UICommands["SaveWorkbook"] = "save-workbook";
+ //
+ UICommands["SchemaDefaultMemberUI"] = "schema-default-member-ui";
+ //
+ UICommands["ScrollSheet"] = "scroll-sheet";
+ //
+ UICommands["SetAccountsDimension"] = "set-accounts-dimension";
+ //
+ UICommands["SetActiveConnectionUI"] = "set-active-connection-ui";
+ //
+ UICommands["SetAnalyticsDropTargetVisibility"] = "set-analytics-drop-target-visibility";
+ //
+ UICommands["SetDashboardSidePaneMode"] = "set-dashboard-sidepane-mode";
+ //
+ UICommands["SetDefaultDateFormatUI"] = "set-default-date-format-ui";
+ //
+ UICommands["SetDefaultLocationUI"] = "set-default-location-ui";
+ //
+ UICommands["SetDefaultMapSourceUI"] = "set-default-mapsource-ui";
+ //
+ UICommands["SetDefaultTextFormatUI"] = "set-default-text-format-ui";
+ //
+ UICommands["SetDefaultUtilityMember"] = "set-default-utility-member";
+ //
+ UICommands["SetFreeFormDashboardUI"] = "set-free-form-dashboard-ui";
+ //
+ UICommands["SetFilterSharedUI"] = "set-filter-shared-ui";
+ //
+ UICommands["SetKey"] = "set-key";
+ //
+ UICommands["SetProductAutoUpdate"] = "set-auto-update";
+ //
+ UICommands["SetQueryFailure"] = "set-query-failure";
+ //
+ UICommands["SetRendering"] = "set-rendering";
+ //
+ UICommands["SetRuntimeImmediateMode"] = "set-runtime-immediate-mode";
+ //
+ UICommands["SetUILanguage"] = "set-ui-language";
+ //
+ UICommands["SetWorkbookLocaleUI"] = "set-workbook-locale-ui";
+ //
+ UICommands["SetWorksheetSidePaneMode"] = "set-worksheet-sidepane-mode";
+ //
+ UICommands["SetZoneFixedSizeUI"] = "set-zone-fixed-size-ui";
+ //
+ UICommands["SetsInOutUI"] = "show-in-out-sets";
+ //
+ UICommands["ShapeLegendEditUI"] = "shape-legend-edit-ui";
+ //
+ UICommands["ShowCloudFileOAuthPromptAndSelectionUI"] = "show-cloudfile-oauth-prompt-and-selection-ui";
+ //
+ UICommands["ShowConnectionAuthUI"] = "show-connection-auth-ui";
+ //
+ UICommands["ShowConnectionAuthAndEstablishConnectionUI"] = "show-connection-auth-and-establish-connection-ui";
+ //
+ UICommands["ShowConnectTab"] = "show-connect-tab";
+ //
+ UICommands["ShowCustomSplitDialogUI"] = "show-custom-split-dialog-ui";
+ //
+ UICommands["ShowDocument"] = "document";
+ //
+ UICommands["ShowFeatureFlagDialog"] = "show-feature-flag-dialog";
+ //
+ UICommands["ShowFieldFormatUI"] = "show-field-format-ui";
+ //
+ UICommands["ShowFieldInSchemaUI"] = "show-field-in-schema";
+ //
+ UICommands["ShowFilmstripUI"] = "show-filmstrip-ui";
+ //
+ UICommands["ShowGoogleSheetsSelectionUI"] = "show-google-sheets-selection-ui";
+ //
+ UICommands["ShowHelp"] = "show-help";
+ //
+ UICommands["ShowHideDashboardSheetUI"] = "show-hide-dashboard-sheet-ui";
+ //
+ UICommands["ShowHideStoryboardSheetUI"] = "show-hide-storyboard-sheet-ui";
+ //
+ UICommands["ShowGraphicsAPI"] = "show-graphics-api-command";
+ //
+ UICommands["ShowMapOptionsDialog"] = "show-map-options-dialog";
+ //
+ UICommands["ShowMeasuresUI"] = "show-measures-ui";
+ //
+ UICommands["ShowMeCycleUI"] = "show-me-cycle-ui";
+ //
+ UICommands["ShowMeHideUI"] = "show-me-hide-ui";
+ //
+ UICommands["ShowMembersUI"] = "show-members-ui";
+ //
+ UICommands["ShowMeToggleUI"] = "show-me-toggle-ui";
+ //
+ UICommands["ShowOAuthPromptUI"] = "show-oauth-prompt-ui";
+ //
+ UICommands["ShowParameterControl"] = "show-parameter-control";
+ //
+ UICommands["ShowPublicStatusDialog"] = "show-public-status-dialog";
+ //
+ UICommands["ShowPublicQuotaExceededDialog"] = "show-public-quota-exceeded-dialog";
+ //
+ UICommands["ShowPublishDatasourceToWorkgroupDialog"] = "show-publish-datasource-to-workgroup-dialog";
+ //
+ UICommands["ShowQueryBandingAndInitialSQLDialogUI"] = "show-query-banding-and-initial-sql-dialog-ui";
+ //
+ UICommands["ShowQuickFilter"] = "show-quickfilter";
+ //
+ UICommands["ShowQuickFilterUI"] = "show-quickfilter-ui";
+ //
+ UICommands["ShowRuntimeIndicator"] = "show-runtime-indicator";
+ //
+ UICommands["ShowSheetSorter"] = "sheet-sorter";
+ //
+ UICommands["ShowTableOptionsDialog"] = "show-table-options-dialog";
+ //
+ UICommands["ShowWebDataConnectorUI"] = "show-web-data-connector-ui";
+ //
+ UICommands["ShowWidgetSandboxUI"] = "show-widget-sandbox-ui";
+ //
+ UICommands["SizeLegendEditUI"] = "size-legend-edit-ui";
+ //
+ UICommands["SleepUI"] = "sleep-ui";
+ //
+ UICommands["SortAscendingFieldLabelUI"] = "sort-ascending-field-label-ui";
+ //
+ UICommands["SortDescendingFieldLabelUI"] = "sort-descending-field-label-ui";
+ //
+ UICommands["SortFieldLabelUI"] = "sort-field-label-ui";
+ //
+ UICommands["SortUI"] = "sort-ui";
+ //
+ UICommands["SplitFieldUI"] = "split-field-ui";
+ //
+ UICommands["StackMarksUI"] = "stack-marks-ui";
+ //
+ UICommands["StartFileConnectionUI"] = "start-file-connection-ui";
+ //
+ UICommands["StartPillEditUI"] = "start-pill-edit-ui";
+ //
+ UICommands["SwitchToConnectTab"] = "switch-to-connect-tab";
+ //
+ UICommands["SwitchToDocument"] = "switch-to-document";
+ //
+ UICommands["SwitchToSheetSorter"] = "switch-to-sheet-sorter";
+ //
+ UICommands["TableCalcAddressUI"] = "table-calc-address-ui";
+ //
+ UICommands["TableCalcIgnoreUI"] = "table-calc-ignore-ui";
+ //
+ UICommands["TableCalcOrderingUI"] = "table-calc-ordering-ui";
+ //
+ UICommands["TableCalcUI"] = "table-calc-ui";
+ //
+ UICommands["ToggleConnectPaneUI"] = "toggle-connect-pane";
+ //
+ UICommands["ToggleFilmstripUI"] = "toggle-filmstrip-ui";
+ //
+ UICommands["ToggleINDJoinSemanticsUI"] = "toggle-ind-join-semantics-ui";
+ //
+ UICommands["TogglePinMRUItem"] = "toggle-pin-mru";
+ //
+ UICommands["ToggleReferentialIntegrityUI"] = "toggle-referential-integrity-ui";
+ //
+ UICommands["ToggleStartPageUI"] = "toggle-start-page";
+ //
+ UICommands["TrackMemory"] = "track-memory";
+ //
+ UICommands["TrendLinesFlagUI"] = "trend-lines-ui";
+ //
+ UICommands["UpdateDefaultsMapCard"] = "update-map-defaults";
+ //
+ UICommands["UpgradeExtractsUI"] = "upgrade-extracts-ui";
+ //
+ UICommands["UpgradeExtractUI"] = "upgrade-extract-ui";
+ //
+ UICommands["UseExtractUI"] = "use-extract-ui";
+ //
+ UICommands["UseMemory"] = "use-memory";
+ //
+ UICommands["UtilityDimensionUI"] = "utility-dimension-ui";
+ //
+ UICommands["ValidateExtractCredentialsUI"] = "validate-extract-credentials-ui";
+ //
+ UICommands["ViewCard"] = "view-card";
+ //
+ UICommands["ViewTitleCard"] = "view-title-card";
+ //
+ UICommands["ViewSummaryCard"] = "view-summary-card";
+ //
+ UICommands["ViewCaptionCard"] = "view-caption-card";
+ //
+ UICommands["ViewColumnsShelf"] = "view-columns-shelf";
+ //
+ UICommands["ViewRowsShelf"] = "view-rows-shelf";
+ //
+ UICommands["ViewPagesShelf"] = "view-pages-shelf";
+ //
+ UICommands["ViewFiltersShelf"] = "view-filters-shelf";
+ //
+ UICommands["ViewMeasuresShelf"] = "view-measures-shelf";
+ //
+ UICommands["ViewMarksShelf"] = "view-marks-shelf";
+ //
+ UICommands["ViewCurrentPageCard"] = "view-current-page-card";
+ //
+ UICommands["ViewData"] = "view-data";
+ //
+ UICommands["ViewSQLDataUI"] = "view-sql-data-ui";
+ //
+ UICommands["ViewDataSourceData"] = "view-datasource-data";
+ //
+ UICommands["ViewLegend"] = "view-legend";
+ //
+ UICommands["ViewSidePane"] = "view-side-pane";
+ //
+ UICommands["ViewStatusBar"] = "view-statusbar";
+ //
+ UICommands["ViewSummaryDetail"] = "view-summary-detail";
+ //
+ UICommands["ViewTableData"] = "view-table-data";
+ //
+ UICommands["ViewToolBar"] = "view-toolbar";
+ //
+ UICommands["WebViewEnableJavascript"] = "webview-enable-javascript";
+ //
+ UICommands["WebViewEnablePlugins"] = "webview-enable-plugins";
+ //
+ UICommands["WebViewBlockPopups"] = "webview-block-popups";
+ //
+ UICommands["WebViewEnableURLHoverActions"] = "webview-enable-url-hover-actions";
+ //
+ UICommands["WorkgroupChangeDataserver"] = "workgroup-change-dataserver";
+ //
+ UICommands["WorkgroupChangeServer"] = "workgroup-change-server";
+ //
+ UICommands["WorkgroupChangeUser"] = "workgroup-change-user";
+ //
+ UICommands["WorkgroupRemoveLastServer"] = "workgroup-remove-last-server";
+ })(UICommands = exports.UICommands || (exports.UICommands = {}));
+ (function (DocCommands) {
+ // Gets the axis options .
+ DocCommands["GetAxisOptions"] = "get-axis-options";
+ // Reset the axis options .
+ DocCommands["ResetAxisOptions"] = "reset-axis-options";
+ // Show axis edit dialog
+ DocCommands["ShowEditAxisDialog"] = "show-edit-axis-dialog";
+ // Sets the axis direction
+ DocCommands["SetAxisReversed"] = "set-axis-reversed";
+ // Sets the axis scale type
+ DocCommands["SetAxisScaleType"] = "set-axis-scale-type";
+ // Sets the main title of a quantitative axis
+ DocCommands["SetAxisTitle"] = "set-axis-title";
+ // Sets the subtitle of a quantitative axis
+ DocCommands["SetAxisSubtitle"] = "set-axis-subtitle";
+ // Sets whether we should use the automatic subtitle for a quantitative axis
+ DocCommands["SetAxisUseAutomaticSubtitle"] = "set-axis-use-automatic-subtitle";
+ // Sets the axis range type of a quantitative axis
+ DocCommands["SetAxisExtentStartType"] = "set-axis-extent-start-type";
+ // Sets the axis range type of a quantitative axis
+ DocCommands["SetAxisExtentEndType"] = "set-axis-extent-end-type";
+ // Sets the axis range type of a quantitative axis
+ DocCommands["SetBothAxisExtentsType"] = "set-both-axis-extents-type";
+ // Sets whether or not to force-include zero on a quantitative axis
+ DocCommands["SetAxisIncludeZero"] = "set-axis-include-zero";
+ // Sets new min/max range endings for axis
+ DocCommands["SetAxisRangeEnd"] = "set-axis-range-end";
+ // Sets new min/max range endings for axis
+ DocCommands["SetAxisRangeStart"] = "set-axis-range-start";
+ // Synchronize dual axes on a folded quantitative axis
+ DocCommands["SetAxisFoldState"] = "set-axis-fold-state";
+ // Set the major tick mark state
+ DocCommands["SetMajorTickMarkState"] = "set-major-tick-mark-state";
+ // Set the minor tick mark state
+ DocCommands["SetMinorTickMarkState"] = "set-minor-tick-mark-state";
+ // Set the major tick mark origin
+ DocCommands["SetMajorTickMarkOrigin"] = "set-major-tick-mark-origin";
+ // Set the minor tick mark origin
+ DocCommands["SetMinorTickMarkOrigin"] = "set-minor-tick-mark-origin";
+ // Set the major tick mark spacing
+ DocCommands["SetMajorTickMarkSpacing"] = "set-major-tick-mark-spacing";
+ // Set the minor tick mark spacing
+ DocCommands["SetMinorTickMarkSpacing"] = "set-minor-tick-mark-spacing";
+ // Set the major tick mark units
+ DocCommands["SetMajorTickMarkUnits"] = "set-major-tick-mark-units";
+ // Set the minor tick mark units
+ DocCommands["SetMinorTickMarkUnits"] = "set-minor-tick-mark-units";
+ //
+ DocCommands["BoundingBoxPan"] = "bounding-box-pan";
+ //
+ DocCommands["OnToggleAxisRanges"] = "on-toggle-axis-ranges";
+ //
+ DocCommands["PanePan"] = "pane-pan";
+ //
+ DocCommands["PaneZoom"] = "pane-zoom";
+ //
+ DocCommands["PaneZoomFactor"] = "pane-zoom-factor";
+ //
+ DocCommands["PaneZoomPan"] = "pane-zoom-pan";
+ //
+ DocCommands["ReorderFoldedAxes"] = "reorder-folded-axes";
+ //
+ DocCommands["ResetAxisRange"] = "reset-axis-range";
+ //
+ DocCommands["SelectAxisTuples"] = "select-axis-tuples";
+ //
+ DocCommands["SwapReferenceLineFields"] = "swap-reference-line-fields";
+ //
+ DocCommands["SynchronizeAxis"] = "synchronize-axis";
+ //
+ DocCommands["ToggleDualAxis"] = "toggle-dual-axis";
+ //
+ DocCommands["ZoomLevel"] = "zoom-level";
+ })(DocCommands = exports.DocCommands || (exports.DocCommands = {}));
+
+
+/***/ },
+/* 73 */
+/***/ function(module, exports) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ /**
+ * Registry which contains mappings from an Api VerbId to a pres-layer command.
+ * This includes the parameters and return values of the command as well
+ *
+ * @export
+ * @class CommandMappingRegistry
+ */
+ var CommandMappingRegistry = (function () {
+ /**
+ * Creates an instance of CommandMappingRegistry.
+ * @memberof CommandMappingRegistry
+ */
+ function CommandMappingRegistry() {
+ this._commands = {};
+ }
+ /**
+ * Adds a new command to the registry
+ *
+ * @param {CommandRegistration} command
+ * @memberof CommandMappingRegistry
+ */
+ CommandMappingRegistry.prototype.addCommand = function (command) {
+ this._commands[command.apiVerbId] = command;
+ };
+ /**
+ * Whether or not this registry contains a definition for this ApiVerbId
+ *
+ * @param {ApiVerbId} apiVerbId
+ * @returns {boolean}
+ * @memberof CommandMappingRegistry
+ */
+ CommandMappingRegistry.prototype.hasCommand = function (apiVerbId) {
+ if (!this._commands.hasOwnProperty(apiVerbId)) {
+ return false;
+ }
+ if (!this._commands[apiVerbId]) {
+ return false;
+ }
+ return true;
+ };
+ /**
+ * Gets the command registration for this command id or throws if it doesn't exist
+ *
+ * @param {ApiVerbId} apiVerbId
+ * @returns {CommandRegistration}
+ * @memberof CommandMappingRegistry
+ */
+ CommandMappingRegistry.prototype.getCommand = function (apiVerbId) {
+ if (!this.hasCommand(apiVerbId)) {
+ throw new Error('Unknown ApiVerb: ' + apiVerbId);
+ }
+ return this._commands[apiVerbId];
+ };
+ return CommandMappingRegistry;
+ }());
+ exports.CommandMappingRegistry = CommandMappingRegistry;
+
+
+/***/ },
+/* 74 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var api_internal_contract_1 = __webpack_require__(69);
+ /**
+ * This is an enum used only internally by the api-core project.
+ * This enum represents the difference namespaces available for commands.
+ */
+ var CommandNamespace;
+ (function (CommandNamespace) {
+ CommandNamespace["TabDoc"] = "tabdoc";
+ CommandNamespace["TabUI"] = "tabui";
+ })(CommandNamespace = exports.CommandNamespace || (exports.CommandNamespace = {}));
+ /**
+ * Represents an input or output paramter for a command.
+ *
+ * @export
+ * @class CommandParameter
+ */
+ var CommandParameter = (function () {
+ /**
+ * Creates an instance of CommandParameter.
+ * @param {ApiParameterId} apiId
+ * @param {PresLayerParameterId} presLayerId
+ * @param {boolean} [isOptional]
+ * @memberof CommandParameter
+ */
+ function CommandParameter(_apiId, _presLayerId, _isOptional) {
+ this._apiId = _apiId;
+ this._presLayerId = _presLayerId;
+ this._isOptional = _isOptional;
+ }
+ Object.defineProperty(CommandParameter.prototype, "apiId", {
+ /**
+ * The Id of the Api Parameter
+ *
+ * @readonly
+ * @type {ApiParameterId}
+ * @memberof CommandParameter
+ */
+ get: function () {
+ return this._apiId;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(CommandParameter.prototype, "presLayerId", {
+ /**
+ * The Id of the Pres Layer Parameter
+ *
+ * @readonly
+ * @type {PresLayerParameterId}
+ * @memberof CommandParameter
+ */
+ get: function () {
+ return this._presLayerId;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(CommandParameter.prototype, "isOptional", {
+ /**
+ * Whether or not this is an optional parameter
+ *
+ * @readonly
+ * @type {boolean}
+ * @memberof CommandParameter
+ */
+ get: function () {
+ return !!this._isOptional;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ return CommandParameter;
+ }());
+ exports.CommandParameter = CommandParameter;
+ /**
+ * Represents a the complete mapping of an ApiCommand to its corresponding pres-layer command
+ * and the conversion of the output value as well
+ *
+ * @export
+ * @class CommandRegistration
+ */
+ var CommandRegistration = (function () {
+ function CommandRegistration(_apiVerbId, _commandId, _inputParameters, _outputParameter, _namespace) {
+ this._apiVerbId = _apiVerbId;
+ this._commandId = _commandId;
+ this._inputParameters = _inputParameters;
+ this._outputParameter = _outputParameter;
+ this._namespace = _namespace;
+ }
+ Object.defineProperty(CommandRegistration.prototype, "apiVerbId", {
+ get: function () {
+ return this._apiVerbId;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(CommandRegistration.prototype, "commandId", {
+ get: function () {
+ return this._commandId;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(CommandRegistration.prototype, "inputs", {
+ get: function () {
+ return this._inputParameters || new Array();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(CommandRegistration.prototype, "output", {
+ get: function () {
+ return this._outputParameter;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(CommandRegistration.prototype, "namespace", {
+ get: function () {
+ return this._namespace || CommandNamespace.TabDoc;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(CommandRegistration.prototype, "needsAddInLocator", {
+ /**
+ * Whether or not this command requires an add-in locator to be injected into it
+ *
+ * @readonly
+ * @type {boolean}
+ * @memberof CommandRegistration
+ */
+ get: function () {
+ for (var _i = 0, _a = this.inputs; _i < _a.length; _i++) {
+ var input = _a[_i];
+ if (input.apiId === api_internal_contract_1.ParameterId.ExtensionLocator) {
+ return true;
+ }
+ }
+ return false;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * Creates a dictionary of pres-layer parameters from the input dictionary
+ * of api parameters.
+ *
+ * @param {ExecuteParameters} parameters - The parameters to convert
+ * @param {ApiToPresLayerMappingRegistry} apiToPresLayer - mapping to determine the conversion
+ * @returns {{ [paramId: string]: object; }} - parameters to send to the pres-layer
+ * @memberof CommandRegistration
+ */
+ CommandRegistration.prototype.createParams = function (parameters, apiToPresLayer) {
+ var result = {};
+ for (var _i = 0, _a = this.inputs; _i < _a.length; _i++) {
+ var inputParam = _a[_i];
+ // First make sure the parameter is there or that it's optional
+ if (!parameters.hasOwnProperty(inputParam.apiId)) {
+ if (inputParam.isOptional) {
+ continue;
+ }
+ else {
+ throw new Error('Missing parameter for command: ' + inputParam.apiId);
+ }
+ }
+ // Find the conversion function for this parameter
+ var conversionFn = apiToPresLayer.get(inputParam.apiId, inputParam.presLayerId);
+ // Convert the pres model and insert it into our results object
+ result[inputParam.presLayerId] = conversionFn(parameters[inputParam.apiId]);
+ }
+ return result;
+ };
+ /**
+ * Processes the result received back after executing a pres-layer command
+ *
+ * @param {{ [docParamId: string]: object; }} resultParameters
+ * @param {PresLayerToApiMappingRegistry} presLayerToApi
+ * @returns {Model}
+ * @memberof CommandRegistration
+ */
+ CommandRegistration.prototype.ProcessResult = function (resultParameters, presLayerToApi) {
+ // TODO: Add error handling
+ if (this.output === undefined) {
+ var noOutputModel = {};
+ return noOutputModel;
+ }
+ if (!resultParameters || !resultParameters.hasOwnProperty(this.output.presLayerId)) {
+ // if the output result is marked as optional, we don't consider this an error situation and just return an empty model
+ if (this.output.isOptional) {
+ return {};
+ }
+ throw new Error('Missing expected result parameter: ' + this.output.presLayerId);
+ }
+ var conversionFn = presLayerToApi.get(this.output.presLayerId, this.output.apiId);
+ return conversionFn(resultParameters[this.output.presLayerId]);
+ };
+ return CommandRegistration;
+ }());
+ exports.CommandRegistration = CommandRegistration;
+
+
+/***/ },
+/* 75 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var api_internal_contract_1 = __webpack_require__(69);
+ var Events_1 = __webpack_require__(76);
+ var PresLayerToApiConverter_1 = __webpack_require__(77);
+ /**
+ * Simple wrapper which holds a mapping to go from a pres-layer event to an API event
+ */
+ var EventMappingRegistration = (function () {
+ function EventMappingRegistration(_presLayerId, _apiId, _converter) {
+ this._presLayerId = _presLayerId;
+ this._apiId = _apiId;
+ this._converter = _converter;
+ }
+ Object.defineProperty(EventMappingRegistration.prototype, "presLayerId", {
+ get: function () {
+ return this._presLayerId;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(EventMappingRegistration.prototype, "apiId", {
+ get: function () {
+ return this._apiId;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(EventMappingRegistration.prototype, "converter", {
+ get: function () {
+ return this._converter;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ return EventMappingRegistration;
+ }());
+ exports.EventMappingRegistration = EventMappingRegistration;
+ var EventMappingRegistryFactory = (function () {
+ function EventMappingRegistryFactory() {
+ }
+ /**
+ * Creates and populates a new EventMappingRegistry for the specific version number requested
+ *
+ * @param {VersionNumber} versionNumber
+ * @returns {EventMappingRegistry}
+ */
+ EventMappingRegistryFactory.createEventMappingRegistry = function (versionNumber) {
+ var registry = {};
+ registry[Events_1.NotificationId.SelectionChanged] = new EventMappingRegistration(Events_1.NotificationId.SelectionChanged, api_internal_contract_1.NotificationId.SelectedMarksChanged, PresLayerToApiConverter_1.PresLayerToApiConverter.convertVisualId);
+ registry[Events_1.NotificationId.ParameterChanged] = new EventMappingRegistration(Events_1.NotificationId.ParameterChanged, api_internal_contract_1.NotificationId.ParameterChanged, PresLayerToApiConverter_1.PresLayerToApiConverter.convertFieldCaptionPair);
+ registry[Events_1.NotificationId.FilterChanged] = new EventMappingRegistration(Events_1.NotificationId.FilterChanged, api_internal_contract_1.NotificationId.FilterChanged, PresLayerToApiConverter_1.PresLayerToApiConverter.convertFilterEvent);
+ return registry;
+ };
+ return EventMappingRegistryFactory;
+ }());
+ exports.EventMappingRegistryFactory = EventMappingRegistryFactory;
+
+
+/***/ },
+/* 76 */
+/***/ function(module, exports) {
+
+ "use strict";
+ /* tslint:disable */
+ // -----------------------------------------------------------------------------
+ //
+ // This file is the copyrighted property of Tableau Software and is protected
+ // by registered patents and other applicable U.S. and international laws and
+ // regulations.
+ //
+ // Unlicensed use of the contents of this file is prohibited. Please refer to
+ // the NOTICES.txt file for further details.
+ //
+ // -----------------------------------------------------------------------------
+ // WARNING: Computer generated file. Do not hand modify.
+ // DEPENDS ON: ['../typescript/js-api/api-core/node_modules/@tableau/preslayer-codegen-typescript/templates/events-ts.template', u'../typescript/js-api/api-core/temp-pres-layer/all-events.data']
+ Object.defineProperty(exports, "__esModule", { value: true });
+ // Events you can register to receive presentation models
+ var NotificationId;
+ (function (NotificationId) {
+ // Triggered when aliases are to be edited. Used to launch a dialog.
+ NotificationId["EditAliasesDialogNotification"] = "edit-aliases-dialog-notification-event";
+ // for the calculation dialog
+ NotificationId["CalculationDialog"] = "calculation-dialog-event";
+ // update for an adhoc calc in a type in pill
+ NotificationId["TypeInPill"] = "type-in-pill-event";
+ // results of a validation command
+ NotificationId["CommandValidation"] = "command-validation-event";
+ // event for the groups dialog
+ NotificationId["UpdateCategoricalBinEditDialog"] = "update-categorical-bin-edit-dialog-event";
+ // for the categorical color dialog
+ NotificationId["CategoricalColor"] = "categorical-color-event";
+ // update the web categorical color dialog
+ NotificationId["WebCategoricalColorDialog"] = "web-categorical-color-dialog-event";
+ // user invoked action which requires a Data Alert Dialog
+ NotificationId["DataAlertDialog"] = "data-alert-dialog-event";
+ // event to select field(s) in the data schema
+ NotificationId["DataSchemaSelection"] = "data-schema-selection-event";
+ // event for when the data source being edited is updated
+ NotificationId["UpdateDataPreparation"] = "update-data-preparation-event";
+ // event for when the data source data is updated
+ NotificationId["UpdateDataSourceData"] = "update-data-source-data-event";
+ // event for when a client should request new data source or data source data pres models
+ NotificationId["DataSourceUpdateNeeded"] = "data-source-update-needed-event";
+ // event for getting the pres model to update file join table properties
+ NotificationId["TextFileProperties"] = "text-file-properties-event";
+ // event for the detailed error dialog
+ NotificationId["UpdateDetailedErrorDialog"] = "update-detailed-error-dialog-event";
+ // notify changes to the state of a filter's relational model
+ NotificationId["FilterRelationalStateChanged"] = "filter-relational-state-changed-event";
+ // notify changes to the size/selection count of a relational domain
+ NotificationId["FilterRelationalDomainChanged"] = "filter-relational-domain-changed-event";
+ // notify when filter cache was requested but not found
+ NotificationId["FilterCacheNotFound"] = "filter-cache-not-found-event";
+ // Hierarchy Select model observable notification.
+ NotificationId["HierarchyNotification"] = "hierarchy-notification-event";
+ // Hierarchy selection change notifications.
+ NotificationId["HierarchySelection"] = "hierarchy-selection-event";
+ // event for the map options dialog
+ NotificationId["MapOptionsDialog"] = "map-options-dialog-event";
+ // notify the Page UI(hide/show states, layout) needs to be updated
+ NotificationId["UpdatePageUINotification"] = "update-page-uinotification-event";
+ // notify to the SceneView has been drawn.
+ NotificationId["SceneViewDrawnNotification"] = "scene-view-drawn-notification-event";
+ // The AnimationControlChange event fires when the user clicks an animation playback button: forward, stop, slow, fast, etc.
+ NotificationId["AnimationControlChange"] = "animation-control-change-event";
+ // notify the sheet has been renamed
+ NotificationId["RenameSheetNotification"] = "rename-sheet-notification-event";
+ // update the web quantitative color dialog
+ NotificationId["WebQuantitativeColorDialog"] = "web-quantitative-color-dialog-event";
+ // update the axis edit dialog
+ NotificationId["UpdateEditAxisDialog"] = "update-edit-axis-dialog-event";
+ // event for the reference line dialog, which is only valid during web authoring
+ NotificationId["UpdateRefLineDialog"] = "update-ref-line-dialog-event";
+ // event to trigger other reference line dialogs to close
+ NotificationId["RefLineDialogOpening"] = "ref-line-dialog-opening-event";
+ // event for the close data source error dialog, which is only valid during web authoring
+ NotificationId["CloseDataSourceErrorDialog"] = "close-data-source-error-dialog-event";
+ // update the web Save Datasource dialog
+ NotificationId["WebSaveDatasourceDialog"] = "web-save-datasource-dialog-event";
+ // warning resulting from WarningMsg
+ NotificationId["WarningMessage"] = "warning-message-event";
+ // event for the table calc dialog, on web, this is only valid during web authoring
+ NotificationId["TableCalcDialog"] = "table-calc-dialog-event";
+ // user invoked action which requires Table Calc Dialog
+ NotificationId["TableCalcActivateDialog"] = "table-calc-activate-dialog-event";
+ // event for the trend line dialog
+ NotificationId["UpdateTrendLineEditDialog"] = "update-trend-line-edit-dialog-event";
+ // The table page cache has been refreshed; pages must be reloaded from the cache.
+ NotificationId["PageCacheRefresh"] = "page-cache-refresh-event";
+ // The table page cache has expired and all resources have been released.
+ NotificationId["PageCacheExpired"] = "page-cache-expired-event";
+ // All pages, identified by row/col, in the provided list have expired and should be reloaded.
+ NotificationId["PageCachePagesExpired"] = "page-cache-pages-expired-event";
+ // All pages betweem the range (inclusive) in the provided list have expired and should be reloaded.
+ NotificationId["PageCachePageRangeExpired"] = "page-cache-page-range-expired-event";
+ // Update for the rich text editor dialog
+ NotificationId["RichTextEditorDialog"] = "rich-text-editor-dialog-event";
+ // Triggered when the user wants to reload an add-in instance.
+ NotificationId["ReloadAddIn"] = "reload-add-in-event";
+ // Triggered when the selected marks have changed.
+ NotificationId["SelectionChanged"] = "selection-changed-event";
+ // Triggered when the value of a parameter has changed. Emits the name and caption of the parameter
+ NotificationId["ParameterChanged"] = "parameter-changed-event";
+ // Triggered when the filters have changed.
+ NotificationId["FilterChanged"] = "filter-changed-event";
+ // notification to launch the hybrid UI showcase
+ NotificationId["LaunchHybridUIShowcase"] = "launch-hybrid-uishowcase-event";
+ // notification of new echoed text for HybridUI showcase demo
+ NotificationId["HybridUIShowcaseEcho"] = "hybrid-uishowcase-echo-event";
+ // event for the bin dialog
+ NotificationId["UpdateNumericBinEditDialog"] = "update-numeric-bin-edit-dialog-event";
+ // a test event with a pres model
+ NotificationId["TestEventWithModel"] = "test-event-with-model-event";
+ // a test event without a pres model
+ NotificationId["TestEventWithoutModel"] = "test-event-without-model-event";
+ })(NotificationId = exports.NotificationId || (exports.NotificationId = {}));
+
+
+/***/ },
+/* 77 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var Api = __webpack_require__(69);
+ var api_utils_1 = __webpack_require__(78);
+ var EnumMappings_1 = __webpack_require__(79);
+ /**
+ * Class containing helper methods for converting from PresLayerPresModels to their ApiPresModels equivalents
+ *
+ * @export
+ * @class PresLayerToApiConverter
+ */
+ var PresLayerToApiConverter = (function () {
+ function PresLayerToApiConverter() {
+ }
+ PresLayerToApiConverter.convertSheetPath = function (plSheetPath) {
+ var result = {
+ sheetName: plSheetPath.sheetName,
+ isDashboard: plSheetPath.isDashboard,
+ storyboard: plSheetPath.storyboard,
+ flipboardZoneID: plSheetPath.flipboardZoneId,
+ storyPointID: plSheetPath.storyPointId,
+ };
+ return result;
+ };
+ PresLayerToApiConverter.convertVisualId = function (plVisualId) {
+ var result = {
+ worksheet: plVisualId.worksheet,
+ dashboard: plVisualId.dashboard,
+ storyboard: plVisualId.storyboard,
+ flipboardZoneID: plVisualId.flipboardZoneId,
+ storyPointID: plVisualId.storyPointId,
+ };
+ return result;
+ };
+ PresLayerToApiConverter.convertExtensionLocator = function (plAddInLocator) {
+ var dashboardPath = undefined;
+ if (plAddInLocator.sheetPath) {
+ dashboardPath = PresLayerToApiConverter.convertSheetPath(plAddInLocator.sheetPath);
+ }
+ var result = {
+ instanceId: plAddInLocator.addInInstanceId,
+ dashboardPath: dashboardPath
+ };
+ return result;
+ };
+ PresLayerToApiConverter.convertDashboardInZones = function (plDashboard) {
+ var result = new Array();
+ for (var _i = 0, _a = Object.keys(plDashboard.zones); _i < _a.length; _i++) {
+ var zoneKey = _a[_i];
+ var zone = plDashboard.zones[zoneKey];
+ var apiZone = {
+ name: zone.zoneCommon.name,
+ zoneId: zone.zoneId,
+ zoneType: EnumMappings_1.PresLayerToApiEnumMappings.zoneType.convert(zone.zoneCommon.zoneType),
+ height: zone.zoneCommon.h,
+ width: zone.zoneCommon.w,
+ x: zone.zoneCommon.x,
+ y: zone.zoneCommon.y
+ };
+ result.push(apiZone);
+ }
+ return result;
+ };
+ PresLayerToApiConverter.convertDashboardInfo = function (plDashboardInfo) {
+ var result = {
+ zones: PresLayerToApiConverter.convertDashboardInZones(plDashboardInfo.dashboardPresModel),
+ name: plDashboardInfo.dashboardPresModel.sheetPath.sheetName,
+ extensionZoneId: plDashboardInfo.zoneId,
+ size: plDashboardInfo.dashboardPresModel.viewportSize
+ };
+ return result;
+ };
+ PresLayerToApiConverter.convertExtensionInstance = function (plAddInInstance) {
+ var result = {
+ url: plAddInInstance.addInRegistrationPresModel.url,
+ locator: PresLayerToApiConverter.convertExtensionLocator(plAddInInstance.addInLocatorPresModel)
+ };
+ return result;
+ };
+ PresLayerToApiConverter.convertExtensionEnivrionment = function (plAddInEnvironment) {
+ var result = {
+ extensionContext: EnumMappings_1.PresLayerToApiEnumMappings.extensionContext.convert(plAddInEnvironment.addInContext),
+ extensionMode: EnumMappings_1.PresLayerToApiEnumMappings.extensionMode.convert(plAddInEnvironment.addInMode),
+ extensionLocale: plAddInEnvironment.addInLocale,
+ extensionLanguage: plAddInEnvironment.addInLanguage,
+ tableauVersion: plAddInEnvironment.tableauVersion,
+ operatingSystem: plAddInEnvironment.operatingSystem,
+ apiVersion: plAddInEnvironment.apiVersion
+ };
+ return result;
+ };
+ PresLayerToApiConverter.convertExtensionSettingsInfo = function (plAddInSettings) {
+ var result = {
+ // addInSettings is undefined during bootstrap initialization
+ settingsValues: plAddInSettings.addInSettings || {}
+ };
+ return result;
+ };
+ PresLayerToApiConverter.convertExtensionBootstrapInfo = function (plBootstrapInfo) {
+ var result = {
+ extensionDashboardInfo: PresLayerToApiConverter.convertDashboardInfo(plBootstrapInfo.addInDashboardInfoPresModel),
+ extensionEnvironment: PresLayerToApiConverter.convertExtensionEnivrionment(plBootstrapInfo.addInEnvironmentPresModel),
+ extensionInstance: PresLayerToApiConverter.convertExtensionInstance(plBootstrapInfo.addInInstancePresModel),
+ extensionSettingsInfo: PresLayerToApiConverter.convertExtensionSettingsInfo(plBootstrapInfo.addInSettingsInfo)
+ };
+ return result;
+ };
+ PresLayerToApiConverter.convertFieldCaptionPair = function (plFieldCaptionPair) {
+ return plFieldCaptionPair.fn;
+ };
+ PresLayerToApiConverter.convertFilterEvent = function (plFilterEvent) {
+ var result = {
+ visualId: PresLayerToApiConverter.convertVisualId(plFilterEvent.visualIdPresModel),
+ fieldName: plFilterEvent.fieldCaption
+ };
+ return result;
+ };
+ PresLayerToApiConverter.convertDataSchema = function (dataSchema) {
+ var apiDataSources = {};
+ api_utils_1.Param.verifyValue(dataSchema, 'dataSchema');
+ api_utils_1.Param.verifyValue(dataSchema.dataSources, 'dataSchema.dataSources');
+ // Convert each pres layer datasource in the schema to an Api datasource
+ Object.keys(dataSchema.dataSources).forEach(function (key) {
+ // Skip the default Parameters datasource we receive from the platform.
+ if (dataSchema.dataSources[key].datasource !== PresLayerToApiConverter.PARAMETERS_DB_NAME) {
+ apiDataSources[key] = PresLayerToApiConverter.convertDataSource(dataSchema.dataSources[key]);
+ }
+ });
+ var schemaMap = PresLayerToApiConverter.convertWorksheetDataSchemaMap(dataSchema.worksheetDataSchemaMap);
+ var result = {
+ dataSources: apiDataSources,
+ worksheetDataSchemaMap: schemaMap,
+ };
+ return result;
+ };
+ PresLayerToApiConverter.convertDataSource = function (dataSource) {
+ var extractUpdateTime = (dataSource.extractUpdateTime === '') ? undefined : dataSource.extractUpdateTime;
+ var dataSourceFields = new Array();
+ api_utils_1.Param.verifyValue(dataSource, 'dataSource');
+ api_utils_1.Param.verifyValue(dataSource.fieldList, 'dataSchema.fieldList');
+ dataSource.fieldList.forEach(function (plField) {
+ // If the datasource contains hierarchies or folders, the base field will contain
+ // a list of the fields grouped beneath it, we are interested in those.
+ // Tableau does not support nested folders or hierarchies, so this does not need to be recursive.
+ var hierarchyModel = plField;
+ if (hierarchyModel.columnList) {
+ hierarchyModel.columnList.forEach(function (field) { return dataSourceFields.push(PresLayerToApiConverter.convertField(field)); });
+ }
+ else {
+ // This is a bit brittle for now, but this value is not exposed via the platform FieldType Enum.
+ if (plField.type !== 'field-folder') {
+ dataSourceFields.push(PresLayerToApiConverter.convertField(plField));
+ }
+ }
+ });
+ var result = {
+ name: dataSource.datasourceCaption,
+ id: dataSource.datasource,
+ isExtract: (extractUpdateTime !== undefined),
+ extractUpdateTime: extractUpdateTime,
+ fields: dataSourceFields
+ };
+ return result;
+ };
+ PresLayerToApiConverter.convertWorksheetDataSchemaMap = function (schemaMap) {
+ var result = {};
+ Object.keys(schemaMap).forEach(function (key) {
+ // We need to remove any references to the "Parameters" datasource. This is treated as a separate
+ // datasource by the platform, but the Extensions API accesses Parameters directly.
+ var cleanReferencedDataSourceList = schemaMap[key].referencedDataSourceList.filter(function (dsName) {
+ return dsName !== PresLayerToApiConverter.PARAMETERS_DB_NAME;
+ });
+ var worksheetDataSourceInfo = {
+ primaryDataSource: schemaMap[key].primaryDatasource,
+ referencedDataSourceList: cleanReferencedDataSourceList
+ };
+ result[key] = worksheetDataSourceInfo;
+ });
+ return result;
+ };
+ PresLayerToApiConverter.convertField = function (plField) {
+ var fieldColumn = plField;
+ var groupColumn = plField;
+ var aggregation = Api.FieldAggregationType.None;
+ var role = Api.FieldRoleType.Unknown;
+ var isCalculated = false;
+ // We expect that every FieldPresModel we get back from the command that returns FieldPresModels
+ // is actually an instance of the derived FieldColumnPresModel.
+ if (fieldColumn.aggregation && fieldColumn.fieldRole) {
+ aggregation = EnumMappings_1.PresLayerToApiEnumMappings.fieldAggregationType.convert(fieldColumn.aggregation);
+ role = EnumMappings_1.PresLayerToApiEnumMappings.fieldRoleType.convert(fieldColumn.fieldRole);
+ isCalculated = fieldColumn.isCalculated || false;
+ }
+ else {
+ throw new Error('Unexpected Internal Error: field pres model is missing expected properties.');
+ }
+ var result = {
+ name: plField.description,
+ id: plField.name,
+ description: plField.userCaption,
+ aggregation: aggregation,
+ isHidden: !!(plField.isHidden),
+ isGenerated: plField.isGenerated,
+ isCalculatedField: isCalculated,
+ role: role,
+ isCombinedField: !!(groupColumn.isCombinedField)
+ };
+ return result;
+ };
+ PresLayerToApiConverter.PARAMETERS_DB_NAME = 'Parameters';
+ return PresLayerToApiConverter;
+ }());
+ exports.PresLayerToApiConverter = PresLayerToApiConverter;
+
+
+/***/ },
+/* 78 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ /**
+ * This is your main. This is where you re-export everything you want to be publicly available.
+ *
+ * The build enforces that the file has the same name as the global variable that is exported.
+ */
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var EnumConverter_1 = __webpack_require__(30);
+ exports.EnumConverter = EnumConverter_1.EnumConverter;
+ var Param_1 = __webpack_require__(31);
+ exports.Param = Param_1.Param;
+
+
+/***/ },
+/* 79 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var api_internal_contract_1 = __webpack_require__(69);
+ var api_utils_1 = __webpack_require__(78);
+ var Enums = __webpack_require__(80);
+ /* tslint:disable:typedef - Disable this to make declaring these classes a bit easier */
+ var PresLayerToApiEnumMappings = (function () {
+ function PresLayerToApiEnumMappings() {
+ }
+ PresLayerToApiEnumMappings.zoneType = new api_utils_1.EnumConverter((_a = {},
+ _a[Enums.ZoneType.ZT_Invalid] = api_internal_contract_1.DashboardObjectType.Blank,
+ _a[Enums.ZoneType.ZT_Viz] = api_internal_contract_1.DashboardObjectType.Worksheet,
+ _a[Enums.ZoneType.ZT_ColorLegend] = api_internal_contract_1.DashboardObjectType.Legend,
+ _a[Enums.ZoneType.ZT_ShapeLegend] = api_internal_contract_1.DashboardObjectType.Legend,
+ _a[Enums.ZoneType.ZT_SizeLegend] = api_internal_contract_1.DashboardObjectType.Legend,
+ _a[Enums.ZoneType.ZT_MapLegend] = api_internal_contract_1.DashboardObjectType.Legend,
+ _a[Enums.ZoneType.ZT_QuickFilter] = api_internal_contract_1.DashboardObjectType.QuickFilter,
+ _a[Enums.ZoneType.ZT_Highlighter] = api_internal_contract_1.DashboardObjectType.Blank,
+ _a[Enums.ZoneType.ZT_CurrPage] = api_internal_contract_1.DashboardObjectType.PageFilter,
+ _a[Enums.ZoneType.ZT_Empty] = api_internal_contract_1.DashboardObjectType.Blank,
+ _a[Enums.ZoneType.ZT_Title] = api_internal_contract_1.DashboardObjectType.Title,
+ _a[Enums.ZoneType.ZT_Text] = api_internal_contract_1.DashboardObjectType.Text,
+ _a[Enums.ZoneType.ZT_Bitmap] = api_internal_contract_1.DashboardObjectType.Image,
+ _a[Enums.ZoneType.ZT_Web] = api_internal_contract_1.DashboardObjectType.WebPage,
+ _a[Enums.ZoneType.ZT_AddIn] = api_internal_contract_1.DashboardObjectType.Extension,
+ _a[Enums.ZoneType.ZT_ParamCtrl] = api_internal_contract_1.DashboardObjectType.ParameterControl,
+ _a[Enums.ZoneType.ZT_FlipboardNav] = api_internal_contract_1.DashboardObjectType.Blank,
+ _a[Enums.ZoneType.ZT_Flipboard] = api_internal_contract_1.DashboardObjectType.Blank,
+ _a[Enums.ZoneType.ZT_LayoutBasic] = api_internal_contract_1.DashboardObjectType.Blank,
+ _a[Enums.ZoneType.ZT_LayoutFlow] = api_internal_contract_1.DashboardObjectType.Blank,
+ _a[Enums.ZoneType.ZT_LayoutFreeForm] = api_internal_contract_1.DashboardObjectType.Blank,
+ _a[Enums.ZoneType.ZT_End] = api_internal_contract_1.DashboardObjectType.Blank,
+ _a[Enums.ZoneType.ZT_Button] = api_internal_contract_1.DashboardObjectType.Blank,
+ _a), api_internal_contract_1.DashboardObjectType.Blank);
+ PresLayerToApiEnumMappings.extensionContext = new api_utils_1.EnumConverter((_b = {},
+ _b[Enums.AddInContext.Unknown] = api_internal_contract_1.ExtensionContext.Unknown,
+ _b[Enums.AddInContext.Desktop] = api_internal_contract_1.ExtensionContext.Desktop,
+ _b[Enums.AddInContext.Server] = api_internal_contract_1.ExtensionContext.Server,
+ _b));
+ PresLayerToApiEnumMappings.extensionMode = new api_utils_1.EnumConverter((_c = {},
+ _c[Enums.AddInMode.Unknown] = api_internal_contract_1.ExtensionMode.Unknown,
+ _c[Enums.AddInMode.Authoring] = api_internal_contract_1.ExtensionMode.Authoring,
+ _c[Enums.AddInMode.Viewing] = api_internal_contract_1.ExtensionMode.Viewing,
+ _c));
+ PresLayerToApiEnumMappings.dataType = new api_utils_1.EnumConverter((_d = {},
+ _d[Enums.DataType.DT_BOOLEAN] = api_internal_contract_1.DataType.Bool,
+ _d[Enums.DataType.DT_DATE] = api_internal_contract_1.DataType.Date,
+ _d[Enums.DataType.DT_DATETIME] = api_internal_contract_1.DataType.DateTime,
+ _d[Enums.DataType.DT_INTEGER] = api_internal_contract_1.DataType.Int,
+ _d[Enums.DataType.DT_REAL] = api_internal_contract_1.DataType.Float,
+ _d[Enums.DataType.DT_STRING] = api_internal_contract_1.DataType.String,
+ _d[Enums.DataType.DT_SPATIAL] = api_internal_contract_1.DataType.Spatial,
+ _d));
+ PresLayerToApiEnumMappings.fieldAggregationType = new api_utils_1.EnumConverter((_e = {},
+ _e[Enums.AggType.AGG_ATTR] = api_internal_contract_1.FieldAggregationType.Attr,
+ _e[Enums.AggType.AGG_AVG] = api_internal_contract_1.FieldAggregationType.Avg,
+ _e[Enums.AggType.AGG_COUNT] = api_internal_contract_1.FieldAggregationType.Count,
+ _e[Enums.AggType.AGG_COUNTD] = api_internal_contract_1.FieldAggregationType.Countd,
+ _e[Enums.AggType.AGG_DAY] = api_internal_contract_1.FieldAggregationType.Day,
+ _e[Enums.AggType.AGG_END] = api_internal_contract_1.FieldAggregationType.End,
+ _e[Enums.AggType.AGG_HOUR] = api_internal_contract_1.FieldAggregationType.Hour,
+ _e[Enums.AggType.AGG_INOUT] = api_internal_contract_1.FieldAggregationType.InOut,
+ _e[Enums.AggType.AGG_KURTOSIS] = api_internal_contract_1.FieldAggregationType.Kurtosis,
+ _e[Enums.AggType.AGG_MAX] = api_internal_contract_1.FieldAggregationType.Max,
+ _e[Enums.AggType.AGG_MDY] = api_internal_contract_1.FieldAggregationType.Mdy,
+ _e[Enums.AggType.AGG_MEDIAN] = api_internal_contract_1.FieldAggregationType.Median,
+ _e[Enums.AggType.AGG_MIN] = api_internal_contract_1.FieldAggregationType.Min,
+ _e[Enums.AggType.AGG_MINUTE] = api_internal_contract_1.FieldAggregationType.Minute,
+ _e[Enums.AggType.AGG_MONTHYEAR] = api_internal_contract_1.FieldAggregationType.MonthYear,
+ _e[Enums.AggType.AGG_NONE] = api_internal_contract_1.FieldAggregationType.None,
+ _e[Enums.AggType.AGG_QTR] = api_internal_contract_1.FieldAggregationType.Qtr,
+ _e[Enums.AggType.AGG_QUART1] = api_internal_contract_1.FieldAggregationType.Quart1,
+ _e[Enums.AggType.AGG_QUART3] = api_internal_contract_1.FieldAggregationType.Quart3,
+ _e[Enums.AggType.AGG_SECOND] = api_internal_contract_1.FieldAggregationType.Second,
+ _e[Enums.AggType.AGG_SKEWNESS] = api_internal_contract_1.FieldAggregationType.Skewness,
+ _e[Enums.AggType.AGG_STDEV] = api_internal_contract_1.FieldAggregationType.Stdev,
+ _e[Enums.AggType.AGG_STDEVP] = api_internal_contract_1.FieldAggregationType.Stdevp,
+ _e[Enums.AggType.AGG_SUM] = api_internal_contract_1.FieldAggregationType.Sum,
+ _e[Enums.AggType.TRUNC_DAY] = api_internal_contract_1.FieldAggregationType.TruncDay,
+ _e[Enums.AggType.TRUNC_HOUR] = api_internal_contract_1.FieldAggregationType.TruncHour,
+ _e[Enums.AggType.TRUNC_MINUTE] = api_internal_contract_1.FieldAggregationType.TruncMinute,
+ _e[Enums.AggType.TRUNC_MONTH] = api_internal_contract_1.FieldAggregationType.TruncMonth,
+ _e[Enums.AggType.TRUNC_QTR] = api_internal_contract_1.FieldAggregationType.TruncQtr,
+ _e[Enums.AggType.TRUNC_SECOND] = api_internal_contract_1.FieldAggregationType.TruncSecond,
+ _e[Enums.AggType.TRUNC_WEEK] = api_internal_contract_1.FieldAggregationType.TruncWeek,
+ _e[Enums.AggType.TRUNC_YEAR] = api_internal_contract_1.FieldAggregationType.TruncYear,
+ _e[Enums.AggType.AGG_USER] = api_internal_contract_1.FieldAggregationType.User,
+ _e[Enums.AggType.AGG_VAR] = api_internal_contract_1.FieldAggregationType.Var,
+ _e[Enums.AggType.AGG_VARP] = api_internal_contract_1.FieldAggregationType.Varp,
+ _e[Enums.AggType.AGG_WEEK] = api_internal_contract_1.FieldAggregationType.Week,
+ _e[Enums.AggType.AGG_WEEKDAY] = api_internal_contract_1.FieldAggregationType.Weekday,
+ _e[Enums.AggType.AGG_YEAR] = api_internal_contract_1.FieldAggregationType.Year,
+ _e));
+ PresLayerToApiEnumMappings.fieldRoleType = new api_utils_1.EnumConverter((_f = {},
+ _f[Enums.FieldRole.ROLE_DIMENSION] = api_internal_contract_1.FieldRoleType.Dimension,
+ _f[Enums.FieldRole.ROLE_MEASURE] = api_internal_contract_1.FieldRoleType.Measure,
+ _f));
+ PresLayerToApiEnumMappings.parameterTypesDomainType = new api_utils_1.EnumConverter((_g = {},
+ _g[Enums.ParameterTypesDomainType.Domain_Any] = api_internal_contract_1.DomainRestrictionType.All,
+ _g[Enums.ParameterTypesDomainType.Domain_List] = api_internal_contract_1.DomainRestrictionType.List,
+ _g[Enums.ParameterTypesDomainType.Domain_Range] = api_internal_contract_1.DomainRestrictionType.Range,
+ _g));
+ PresLayerToApiEnumMappings.dateStepPeriod = new api_utils_1.EnumConverter((_h = {},
+ _h[Enums.DatePeriodType.PeriodYear] = api_internal_contract_1.DateStepPeriod.Years,
+ _h[Enums.DatePeriodType.PeriodQuarter] = api_internal_contract_1.DateStepPeriod.Quarters,
+ _h[Enums.DatePeriodType.PeriodMonth] = api_internal_contract_1.DateStepPeriod.Months,
+ _h[Enums.DatePeriodType.PeriodWeek] = api_internal_contract_1.DateStepPeriod.Weeks,
+ _h[Enums.DatePeriodType.PeriodDay] = api_internal_contract_1.DateStepPeriod.Days,
+ _h[Enums.DatePeriodType.PeriodHour] = api_internal_contract_1.DateStepPeriod.Hours,
+ _h[Enums.DatePeriodType.PeriodMinute] = api_internal_contract_1.DateStepPeriod.Minutes,
+ _h[Enums.DatePeriodType.PeriodSecond] = api_internal_contract_1.DateStepPeriod.Seconds,
+ _h));
+ PresLayerToApiEnumMappings.dateRangeType = new api_utils_1.EnumConverter((_j = {},
+ _j[Enums.FiltersRelativeDateRangeType.RangeCurrent] = api_internal_contract_1.DateRangeType.Current,
+ _j[Enums.FiltersRelativeDateRangeType.RangeCurrentToDate] = api_internal_contract_1.DateRangeType.ToDate,
+ _j[Enums.FiltersRelativeDateRangeType.RangeLast1] = api_internal_contract_1.DateRangeType.Last,
+ _j[Enums.FiltersRelativeDateRangeType.RangeLastN] = api_internal_contract_1.DateRangeType.LastN,
+ _j[Enums.FiltersRelativeDateRangeType.RangeNext1] = api_internal_contract_1.DateRangeType.Next,
+ _j[Enums.FiltersRelativeDateRangeType.RangeNextN] = api_internal_contract_1.DateRangeType.NextN,
+ _j));
+ PresLayerToApiEnumMappings.filterDomainType = new api_utils_1.EnumConverter((_k = {},
+ _k[Enums.FiltersDomainType.Relevant] = api_internal_contract_1.FilterDomainType.Relevant,
+ _k[Enums.FiltersDomainType.Database] = api_internal_contract_1.FilterDomainType.Database,
+ _k));
+ return PresLayerToApiEnumMappings;
+ }());
+ exports.PresLayerToApiEnumMappings = PresLayerToApiEnumMappings;
+ var ApiToPresLayerEnumMappings = (function () {
+ function ApiToPresLayerEnumMappings() {
+ }
+ ApiToPresLayerEnumMappings.filterUpdateType = new api_utils_1.EnumConverter((_a = {},
+ _a[api_internal_contract_1.FilterUpdateType.Add] = Enums.FilterUpdateType.ADD,
+ _a[api_internal_contract_1.FilterUpdateType.All] = Enums.FilterUpdateType.ALL,
+ _a[api_internal_contract_1.FilterUpdateType.Replace] = Enums.FilterUpdateType.REPLACE,
+ _a[api_internal_contract_1.FilterUpdateType.Remove] = Enums.FilterUpdateType.REMOVE,
+ _a));
+ ApiToPresLayerEnumMappings.nullOption = new api_utils_1.EnumConverter((_b = {},
+ _b[api_internal_contract_1.FilterNullOption.AllValues] = Enums.FiltersQuantitativeIncludedValues.All,
+ _b[api_internal_contract_1.FilterNullOption.NonNullValues] = Enums.FiltersQuantitativeIncludedValues.NonNull,
+ _b[api_internal_contract_1.FilterNullOption.NullValues] = Enums.FiltersQuantitativeIncludedValues.Null,
+ _b));
+ ApiToPresLayerEnumMappings.filterDomainType = new api_utils_1.EnumConverter((_c = {},
+ _c[api_internal_contract_1.FilterDomainType.Relevant] = Enums.FiltersDomainType.Relevant,
+ _c[api_internal_contract_1.FilterDomainType.Database] = Enums.FiltersDomainType.Database,
+ _c));
+ return ApiToPresLayerEnumMappings;
+ }());
+ exports.ApiToPresLayerEnumMappings = ApiToPresLayerEnumMappings;
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _a, _b, _c;
+ /* tslint:enable:typedef */
+
+
+/***/ },
+/* 80 */
+/***/ function(module, exports) {
+
+ "use strict";
+ /* tslint:disable */
+ // -----------------------------------------------------------------------------
+ //
+ // This file is the copyrighted property of Tableau Software and is protected
+ // by registered patents and other applicable U.S. and international laws and
+ // regulations.
+ //
+ // Unlicensed use of the contents of this file is prohibited. Please refer to
+ // the NOTICES.txt file for further details.
+ //
+ // -----------------------------------------------------------------------------
+ // WARNING: Computer generated file. Do not hand modify.
+ // DEPENDS ON: ['../typescript/js-api/api-core/node_modules/@tableau/preslayer-codegen-typescript/templates/enum-ts.template', u'../typescript/js-api/api-core/temp-pres-layer/all-enums.data']
+ Object.defineProperty(exports, "__esModule", { value: true });
+ //
+ var DataScaling;
+ (function (DataScaling) {
+ //
+ DataScaling["SCALING_NONE"] = "none";
+ //
+ DataScaling["SCALING_STANDARDIZED"] = "standardized";
+ //
+ DataScaling["SCALING_NORMALIZED"] = "normalized";
+ })(DataScaling = exports.DataScaling || (exports.DataScaling = {}));
+ //
+ var ForecastModelType;
+ (function (ForecastModelType) {
+ //
+ ForecastModelType["ForecastModelTypeAutoSeason"] = "auto-season";
+ //
+ ForecastModelType["ForecastModelTypeAuto"] = "auto";
+ //
+ ForecastModelType["ForecastModelTypeCustom"] = "custom";
+ })(ForecastModelType = exports.ForecastModelType || (exports.ForecastModelType = {}));
+ //
+ var ForecastRangeType;
+ (function (ForecastRangeType) {
+ //
+ ForecastRangeType["ForecastRangeTypeAuto"] = "auto";
+ //
+ ForecastRangeType["ForecastRangeTypeNext"] = "next";
+ //
+ ForecastRangeType["ForecastRangeTypeEndOf"] = "end-of";
+ })(ForecastRangeType = exports.ForecastRangeType || (exports.ForecastRangeType = {}));
+ //
+ var ForecastStatus;
+ (function (ForecastStatus) {
+ //
+ ForecastStatus["FS_VALID"] = "fs-valid";
+ //
+ ForecastStatus["FS_INVALID_DATETIME"] = "fs-invalid-datetime";
+ //
+ ForecastStatus["FS_INVALID_RESPONSE"] = "fs-invalid-response";
+ //
+ ForecastStatus["FS_NEED_MORE_DATA"] = "fs-need-more-data";
+ //
+ ForecastStatus["FS_TIME_SERIES_TOO_SHORT"] = "fs-time-series-too-short";
+ //
+ ForecastStatus["FS_TIME_SERIES_IRREGULAR"] = "fs-time-series-irregular";
+ //
+ ForecastStatus["FS_NULL_DATETIME"] = "fs-null-datetime";
+ //
+ ForecastStatus["FS_NULL_RESPONSE"] = "fs-null-response";
+ //
+ ForecastStatus["FS_METADATA_INVALID"] = "fs-metadata-invalid";
+ //
+ ForecastStatus["FS_NO_RESPONSE"] = "fs-no-response";
+ //
+ ForecastStatus["FS_EXCESS_DATA"] = "fs-excess-data";
+ //
+ ForecastStatus["FS_EXCESS_PARTITIONS"] = "fs-excess-partitions";
+ //
+ ForecastStatus["FS_DIMENSION_INVALID"] = "fs-dimension-invalid";
+ //
+ ForecastStatus["FS_TABLECALC_INVALID"] = "fs-tablecalc-invalid";
+ //
+ ForecastStatus["FS_TIME_SERIES_TOO_IRREGULAR"] = "fs-time-series-too-irregular";
+ //
+ ForecastStatus["FS_AGGREGATE_FILTER"] = "fs-aggregate-filter";
+ //
+ ForecastStatus["FS_DISAGGREGATE_RESPONSE"] = "fs-disaggregate-response";
+ //
+ ForecastStatus["FS_PERCENTAGE_INVALID"] = "fs-percentage-invalid";
+ //
+ ForecastStatus["FS_TOTAL_INVALID"] = "fs-total-invalid";
+ //
+ ForecastStatus["FS_EXCESS_DATETIME"] = "fs-excess-datetime";
+ //
+ ForecastStatus["FS_DATE_AGG_INCOMPATIBLE"] = "fs-date-agg-incompatible";
+ //
+ ForecastStatus["FS_TIME_SERIES_NOT_POSITIVE"] = "fs-time-series-not-positive";
+ //
+ ForecastStatus["FS_REQUESTED_MODEL_INVALID"] = "fs-requested-model-invalid";
+ //
+ ForecastStatus["FS_TOO_SHORT_FOR_SEASON"] = "fs-too-short-for-season";
+ //
+ ForecastStatus["FS_REQUESTED_MODEL_UNSTABLE"] = "fs-requested-model-unstable";
+ //
+ ForecastStatus["FS_UNDEFINED"] = "fs-undefined";
+ })(ForecastStatus = exports.ForecastStatus || (exports.ForecastStatus = {}));
+ //
+ var StyleAttribute;
+ (function (StyleAttribute) {
+ //
+ StyleAttribute["saAlternateText"] = "saAlternateText";
+ //
+ StyleAttribute["saAltMarkColor"] = "saAltMarkColor";
+ //
+ StyleAttribute["saAspect"] = "saAspect";
+ //
+ StyleAttribute["saAutoSubtitle"] = "saAutoSubtitle";
+ //
+ StyleAttribute["saBackgroundColor"] = "saBackgroundColor";
+ //
+ StyleAttribute["saBackgroundTransparency"] = "saBackgroundTransparency";
+ //
+ StyleAttribute["saBandSize"] = "saBandSize";
+ //
+ StyleAttribute["saBandColor"] = "saBandColor";
+ //
+ StyleAttribute["saBandLevel"] = "saBandLevel";
+ //
+ StyleAttribute["saBodyType"] = "saBodyType";
+ //
+ StyleAttribute["saBorderColor"] = "saBorderColor";
+ //
+ StyleAttribute["saBorderColorTop"] = "saBorderColorTop";
+ //
+ StyleAttribute["saBorderColorRight"] = "saBorderColorRight";
+ //
+ StyleAttribute["saBorderColorBottom"] = "saBorderColorBottom";
+ //
+ StyleAttribute["saBorderColorLeft"] = "saBorderColorLeft";
+ //
+ StyleAttribute["saBorderStyle"] = "saBorderStyle";
+ //
+ StyleAttribute["saBorderStyleTop"] = "saBorderStyleTop";
+ //
+ StyleAttribute["saBorderStyleRight"] = "saBorderStyleRight";
+ //
+ StyleAttribute["saBorderStyleBottom"] = "saBorderStyleBottom";
+ //
+ StyleAttribute["saBorderStyleLeft"] = "saBorderStyleLeft";
+ //
+ StyleAttribute["saBorderWidth"] = "saBorderWidth";
+ //
+ StyleAttribute["saBorderWidthTop"] = "saBorderWidthTop";
+ //
+ StyleAttribute["saBorderWidthRight"] = "saBorderWidthRight";
+ //
+ StyleAttribute["saBorderWidthBottom"] = "saBorderWidthBottom";
+ //
+ StyleAttribute["saBorderWidthLeft"] = "saBorderWidthLeft";
+ //
+ StyleAttribute["saBoxplotStyle"] = "saBoxplotStyle";
+ //
+ StyleAttribute["saBreakOnSpecial"] = "saBreakOnSpecial";
+ //
+ StyleAttribute["saCell"] = "saCell";
+ //
+ StyleAttribute["saCellW"] = "saCellW";
+ //
+ StyleAttribute["saCellH"] = "saCellH";
+ //
+ StyleAttribute["saCellQ"] = "saCellQ";
+ //
+ StyleAttribute["saCellQMark"] = "saCellQMark";
+ //
+ StyleAttribute["saColor"] = "saColor";
+ //
+ StyleAttribute["saColorMode"] = "saColorMode";
+ //
+ StyleAttribute["saColLevels"] = "saColLevels";
+ //
+ StyleAttribute["saColVertLevels"] = "saColVertLevels";
+ //
+ StyleAttribute["saColHorizHeight"] = "saColHorizHeight";
+ //
+ StyleAttribute["saColVertHeight"] = "saColVertHeight";
+ // Deprecated
+ StyleAttribute["saColHeight"] = "saColHeight";
+ //
+ StyleAttribute["saColWidth"] = "saColWidth";
+ //
+ StyleAttribute["saContent"] = "saContent";
+ //
+ StyleAttribute["saDisplayFieldLabels"] = "saDisplayFieldLabels";
+ //
+ StyleAttribute["saDisplayHeader"] = "saDisplayHeader";
+ //
+ StyleAttribute["saDisplayAlternateText"] = "saDisplayAlternateText";
+ //
+ StyleAttribute["saDivLevel"] = "saDivLevel";
+ //
+ StyleAttribute["saEnabled"] = "saEnabled";
+ //
+ StyleAttribute["saFillAboveColor"] = "saFillAboveColor";
+ //
+ StyleAttribute["saFillBelowColor"] = "saFillBelowColor";
+ //
+ StyleAttribute["saFillColor"] = "saFillColor";
+ //
+ StyleAttribute["saFogBGColor"] = "saFogBGColor";
+ //
+ StyleAttribute["saFogDesaturationWithoutSelection"] = "saFogDesaturationWithoutSelection";
+ //
+ StyleAttribute["saFogDesaturationWithSelection"] = "saFogDesaturationWithSelection";
+ //
+ StyleAttribute["saFont"] = "saFont";
+ //
+ StyleAttribute["saFontFamily"] = "saFontFamily";
+ //
+ StyleAttribute["saFontSize"] = "saFontSize";
+ //
+ StyleAttribute["saFontStyle"] = "saFontStyle";
+ //
+ StyleAttribute["saFontWeight"] = "saFontWeight";
+ //
+ StyleAttribute["saGeographicAreaType"] = "saGeographicAreaType";
+ //
+ StyleAttribute["saHAlign"] = "saHAlign";
+ //
+ StyleAttribute["saHaloColor"] = "saHaloColor";
+ //
+ StyleAttribute["saHaloColorSelected"] = "saHaloColorSelected";
+ //
+ StyleAttribute["saHasFill"] = "saHasFill";
+ //
+ StyleAttribute["saHasHalo"] = "saHasHalo";
+ // Deprecated
+ StyleAttribute["saHasLabel"] = "saHasLabel";
+ //
+ StyleAttribute["saHasStroke"] = "saHasStroke";
+ //
+ StyleAttribute["saHeight"] = "saHeight";
+ //
+ StyleAttribute["saHeightHeader"] = "saHeightHeader";
+ //
+ StyleAttribute["saHighlightLegend"] = "saHighlightLegend";
+ //
+ StyleAttribute["saHnaxis"] = "saHnaxis";
+ //
+ StyleAttribute["saHnlabel"] = "saHnlabel";
+ //
+ StyleAttribute["saInTooltip"] = "saInTooltip";
+ //
+ StyleAttribute["saLineEnd"] = "saLineEnd";
+ //
+ StyleAttribute["saLineEndSize"] = "saLineEndSize";
+ //
+ StyleAttribute["saLineInterpolation"] = "saLineInterpolation";
+ //
+ StyleAttribute["saLineMarkerPosition"] = "saLineMarkerPosition";
+ //
+ StyleAttribute["saLinePattern"] = "saLinePattern";
+ //
+ StyleAttribute["saLinePatternOnly"] = "saLinePatternOnly";
+ //
+ StyleAttribute["saLineVisibility"] = "saLineVisibility";
+ //
+ StyleAttribute["saMap"] = "saMap";
+ //
+ StyleAttribute["saMapStyle"] = "saMapStyle";
+ //
+ StyleAttribute["saMargin"] = "saMargin";
+ //
+ StyleAttribute["saMarginTop"] = "saMarginTop";
+ //
+ StyleAttribute["saMarginRight"] = "saMarginRight";
+ //
+ StyleAttribute["saMarginBottom"] = "saMarginBottom";
+ //
+ StyleAttribute["saMarginLeft"] = "saMarginLeft";
+ //
+ StyleAttribute["saMarkColor"] = "saMarkColor";
+ //
+ StyleAttribute["saMarkTransparency"] = "saMarkTransparency";
+ //
+ StyleAttribute["saMarkLabelsShow"] = "saMarkLabelsShow";
+ //
+ StyleAttribute["saRunningOrderLabelsShow"] = "saRunningOrderLabelsShow";
+ //
+ StyleAttribute["saMarkLabelsMode"] = "saMarkLabelsMode";
+ //
+ StyleAttribute["saMarkLabelsCull"] = "saMarkLabelsCull";
+ //
+ StyleAttribute["saMarkLabelsLineEndFirst"] = "saMarkLabelsLineEndFirst";
+ //
+ StyleAttribute["saMarkLabelsLineEndLast"] = "saMarkLabelsLineEndLast";
+ //
+ StyleAttribute["saMarkLabelsRangeMin"] = "saMarkLabelsRangeMin";
+ //
+ StyleAttribute["saMarkLabelsRangeMax"] = "saMarkLabelsRangeMax";
+ //
+ StyleAttribute["saMarkLabelsRangeScope"] = "saMarkLabelsRangeScope";
+ //
+ StyleAttribute["saMarkLabelsRangeField"] = "saMarkLabelsRangeField";
+ //
+ StyleAttribute["saMarkMarkersMode"] = "saMarkMarkersMode";
+ //
+ StyleAttribute["saMaxHeight"] = "saMaxHeight";
+ //
+ StyleAttribute["saMaxFontSize"] = "saMaxFontSize";
+ //
+ StyleAttribute["saMaxStrokeWidth"] = "saMaxStrokeWidth";
+ //
+ StyleAttribute["saMaxWidth"] = "saMaxWidth";
+ //
+ StyleAttribute["saMidStrokeWidth"] = "saMidStrokeWidth";
+ //
+ StyleAttribute["saMinHeight"] = "saMinHeight";
+ //
+ StyleAttribute["saMinFontSize"] = "saMinFontSize";
+ //
+ StyleAttribute["saMinLength"] = "saMinLength";
+ //
+ StyleAttribute["saMinMapSize"] = "saMinMapSize";
+ //
+ StyleAttribute["saMinSize"] = "saMinSize";
+ //
+ StyleAttribute["saMinStrokeWidth"] = "saMinStrokeWidth";
+ //
+ StyleAttribute["saMinWidth"] = "saMinWidth";
+ //
+ StyleAttribute["saNonhighlightColor"] = "saNonhighlightColor";
+ //
+ StyleAttribute["saOmitOnSpecial"] = "saOmitOnSpecial";
+ //
+ StyleAttribute["saOpacity"] = "saOpacity";
+ //
+ StyleAttribute["saOrientation"] = "saOrientation";
+ //
+ StyleAttribute["saPadding"] = "saPadding";
+ //
+ StyleAttribute["saPaddingTop"] = "saPaddingTop";
+ //
+ StyleAttribute["saPaddingRight"] = "saPaddingRight";
+ //
+ StyleAttribute["saPaddingBottom"] = "saPaddingBottom";
+ //
+ StyleAttribute["saPaddingLeft"] = "saPaddingLeft";
+ //
+ StyleAttribute["saPalette"] = "saPalette";
+ //
+ StyleAttribute["saRenderFoldReversed"] = "saRenderFoldReversed";
+ //
+ StyleAttribute["saReversePalette"] = "saReversePalette";
+ //
+ StyleAttribute["saRounding"] = "saRounding";
+ //
+ StyleAttribute["saRowHorizLevels"] = "saRowHorizLevels";
+ //
+ StyleAttribute["saRowHorizWidth"] = "saRowHorizWidth";
+ //
+ StyleAttribute["saRowLevels"] = "saRowLevels";
+ //
+ StyleAttribute["saRowVertWidth"] = "saRowVertWidth";
+ //
+ StyleAttribute["saSeparator"] = "saSeparator";
+ //
+ StyleAttribute["saShape"] = "saShape";
+ // Deprecated
+ StyleAttribute["saShowLabels"] = "saShowLabels";
+ //
+ StyleAttribute["saSize"] = "saSize";
+ //
+ StyleAttribute["saSizeBar"] = "saSizeBar";
+ //
+ StyleAttribute["saSmartAutoAlignment"] = "saSmartAutoAlignment";
+ //
+ StyleAttribute["saSpace"] = "saSpace";
+ //
+ StyleAttribute["saStrokeColor"] = "saStrokeColor";
+ //
+ StyleAttribute["saStrokeSize"] = "saStrokeSize";
+ //
+ StyleAttribute["saSubtitle"] = "saSubtitle";
+ //
+ StyleAttribute["saTextAlign"] = "saTextAlign";
+ //
+ StyleAttribute["saTextAlignDefault"] = "saTextAlignDefault";
+ //
+ StyleAttribute["saTextDecoration"] = "saTextDecoration";
+ //
+ StyleAttribute["saTextIndent"] = "saTextIndent";
+ //
+ StyleAttribute["saTextOrientation"] = "saTextOrientation";
+ //
+ StyleAttribute["saTextFormat"] = "saTextFormat";
+ //
+ StyleAttribute["saTickColor"] = "saTickColor";
+ //
+ StyleAttribute["saTickLength"] = "saTickLength";
+ // Deprecated
+ StyleAttribute["saTickSpacing"] = "saTickSpacing";
+ //
+ StyleAttribute["saTitle"] = "saTitle";
+ //
+ StyleAttribute["saTotalLabel"] = "saTotalLabel";
+ //
+ StyleAttribute["saVAlign"] = "saVAlign";
+ //
+ StyleAttribute["saVerticalAlign"] = "saVerticalAlign";
+ //
+ StyleAttribute["saVerticalAlignDefault"] = "saVerticalAlignDefault";
+ //
+ StyleAttribute["saVnaxis"] = "saVnaxis";
+ //
+ StyleAttribute["saVnlabel"] = "saVnlabel";
+ //
+ StyleAttribute["saWarnOnSpecial"] = "saWarnOnSpecial";
+ //
+ StyleAttribute["saWashout"] = "saWashout";
+ //
+ StyleAttribute["saWhiskerEnd"] = "saWhiskerEnd";
+ //
+ StyleAttribute["saWhiskerStrokeColor"] = "saWhiskerStrokeColor";
+ //
+ StyleAttribute["saWhiskerStrokeSize"] = "saWhiskerStrokeSize";
+ //
+ StyleAttribute["saWidth"] = "saWidth";
+ //
+ StyleAttribute["saWidthHeader"] = "saWidthHeader";
+ //
+ StyleAttribute["saWrap"] = "saWrap";
+ //
+ StyleAttribute["saZoom"] = "saZoom";
+ // Special attributes used for matching
+ StyleAttribute["saNone"] = "saNone";
+ // Special attributes used for matching
+ StyleAttribute["saAny"] = "saAny";
+ })(StyleAttribute = exports.StyleAttribute || (exports.StyleAttribute = {}));
+ // lowest bit of enum value denotes two-tone styles; newly added styles should follow this pattern.
+ var BoxplotStyle;
+ (function (BoxplotStyle) {
+ // mask for checking if a style is two-tone
+ BoxplotStyle["BoxplotStyleTwoTone"] = "two-tone";
+ //
+ BoxplotStyle["BoxplotStyleModern"] = "modern";
+ //
+ BoxplotStyle["BoxplotStyleGlass"] = "glass";
+ //
+ BoxplotStyle["BoxplotStyleClassic"] = "classic";
+ //
+ BoxplotStyle["BoxplotStyleClassicTwoTone"] = "classic-two-tone";
+ })(BoxplotStyle = exports.BoxplotStyle || (exports.BoxplotStyle = {}));
+ // used for boxplots and prediction band whiskers
+ var WhiskerEnd;
+ (function (WhiskerEnd) {
+ //
+ WhiskerEnd["WhiskerEndNone"] = "none";
+ //
+ WhiskerEnd["WhiskerEndSmall"] = "small";
+ //
+ WhiskerEnd["WhiskerEndLarge"] = "large";
+ })(WhiskerEnd = exports.WhiskerEnd || (exports.WhiskerEnd = {}));
+ //
+ var StyleElement;
+ (function (StyleElement) {
+ //
+ StyleElement["elementAxis"] = "elementAxis";
+ //
+ StyleElement["elementCell"] = "elementCell";
+ //
+ StyleElement["elementDatalabel"] = "elementDatalabel";
+ //
+ StyleElement["elementDropspot"] = "elementDropspot";
+ //
+ StyleElement["elementHeader"] = "elementHeader";
+ //
+ StyleElement["elementFieldLabel"] = "elementFieldLabel";
+ //
+ StyleElement["elementFieldLabelDecoration"] = "elementFieldLabelDecoration";
+ //
+ StyleElement["elementFieldLabelSpanner"] = "elementFieldLabelSpanner";
+ //
+ StyleElement["elementLabel"] = "elementLabel";
+ //
+ StyleElement["elementMark"] = "elementMark";
+ //
+ StyleElement["elementPane"] = "elementPane";
+ //
+ StyleElement["elementTable"] = "elementTable";
+ //
+ StyleElement["elementWorksheet"] = "elementWorksheet";
+ //
+ StyleElement["elementBasesheet"] = "elementBasesheet";
+ //
+ StyleElement["elementDashboard"] = "elementDashboard";
+ //
+ StyleElement["elementStoryboard"] = "elementStoryboard";
+ //
+ StyleElement["elementCaption"] = "elementCaption";
+ //
+ StyleElement["elementDropline"] = "elementDropline";
+ //
+ StyleElement["elementRefline"] = "elementRefline";
+ //
+ StyleElement["elementRefBand"] = "elementRefBand";
+ //
+ StyleElement["elementRefBoxplot"] = "elementRefBoxplot";
+ //
+ StyleElement["elementGridline"] = "elementGridline";
+ //
+ StyleElement["elementZeroline"] = "elementZeroline";
+ //
+ StyleElement["elementTrendline"] = "elementTrendline";
+ //
+ StyleElement["elementTableDiv"] = "elementTableDiv";
+ //
+ StyleElement["elementHeaderDiv"] = "elementHeaderDiv";
+ //
+ StyleElement["elementMappedImage"] = "elementMappedImage";
+ //
+ StyleElement["elementAction"] = "elementAction";
+ //
+ StyleElement["elementTitle"] = "elementTitle";
+ //
+ StyleElement["elementLegend"] = "elementLegend";
+ //
+ StyleElement["elementLegendTitle"] = "elementLegendTitle";
+ //
+ StyleElement["elementLegendTitleText"] = "elementLegendTitleText";
+ //
+ StyleElement["elementAxisTitle"] = "elementAxisTitle";
+ //
+ StyleElement["elementAnnotation"] = "elementAnnotation";
+ //
+ StyleElement["elementDashTitle"] = "elementDashTitle";
+ //
+ StyleElement["elementDashSubtitle"] = "elementDashSubtitle";
+ //
+ StyleElement["elementDashText"] = "elementDashText";
+ //
+ StyleElement["elementDashZone"] = "elementDashZone";
+ //
+ StyleElement["elementDashContainer"] = "elementDashContainer";
+ //
+ StyleElement["elementScrollbar"] = "elementScrollbar";
+ // Static on/off map layers
+ StyleElement["elementMapLayer"] = "elementMapLayer";
+ // Contains washout
+ StyleElement["elementMap"] = "elementMap";
+ // Initially for UrbanMapping/Claritas data
+ StyleElement["elementMapDataLayer"] = "elementMapDataLayer";
+ //
+ StyleElement["elementQuickFilter"] = "elementQuickFilter";
+ //
+ StyleElement["elementQuickFilterTitle"] = "elementQuickFilterTitle";
+ //
+ StyleElement["elementParameterCtrl"] = "elementParameterCtrl";
+ //
+ StyleElement["elementParameterCtrlTitle"] = "elementParameterCtrlTitle";
+ //
+ StyleElement["elementPageCardTitle"] = "elementPageCardTitle";
+ //
+ StyleElement["elementStoryDescription"] = "elementStoryDescription";
+ //
+ StyleElement["elementStoryPointCaption"] = "elementStoryPointCaption";
+ //
+ StyleElement["elementStoryTitle"] = "elementStoryTitle";
+ //
+ StyleElement["elementTooltip"] = "elementTooltip";
+ //
+ StyleElement["elementAll"] = "elementAll";
+ //
+ StyleElement["elementPageCardBody"] = "elementPageCardBody";
+ //
+ StyleElement["elementDataHighlighter"] = "elementDataHighlighter";
+ //
+ StyleElement["elementDataHighlighterTitle"] = "elementDataHighlighterTitle";
+ // Special elements used for matching and organization
+ StyleElement["elementNone"] = "elementNone";
+ // Special elements used for matching and organization
+ StyleElement["elementAny"] = "elementAny";
+ // Special elements used for matching and organization
+ StyleElement["elementRoot"] = "elementRoot";
+ })(StyleElement = exports.StyleElement || (exports.StyleElement = {}));
+ // Do not mess with these values. They are sometimes used as array indexes/bounds
+ var StyleDataClass;
+ (function (StyleDataClass) {
+ //
+ StyleDataClass["dcNormal"] = "dcNormal";
+ //
+ StyleDataClass["dcTotal"] = "dcTotal";
+ //
+ StyleDataClass["dcSubtotal"] = "dcSubtotal";
+ //
+ StyleDataClass["dcCOUNT"] = "dcCOUNT";
+ })(StyleDataClass = exports.StyleDataClass || (exports.StyleDataClass = {}));
+ //
+ var StyleFieldScope;
+ (function (StyleFieldScope) {
+ //
+ StyleFieldScope["fsNone"] = "fsNone";
+ //
+ StyleFieldScope["fsRows"] = "fsRows";
+ //
+ StyleFieldScope["fsCols"] = "fsCols";
+ })(StyleFieldScope = exports.StyleFieldScope || (exports.StyleFieldScope = {}));
+ //
+ var StyleSwatch;
+ (function (StyleSwatch) {
+ //
+ StyleSwatch["ssUnspecified"] = "ssUnspecified";
+ //
+ StyleSwatch["ssLight"] = "ssLight";
+ //
+ StyleSwatch["ssDark"] = "ssDark";
+ })(StyleSwatch = exports.StyleSwatch || (exports.StyleSwatch = {}));
+ //
+ var TableauFontStyle;
+ (function (TableauFontStyle) {
+ //
+ TableauFontStyle["NormalStyle"] = "font-style-normal";
+ //
+ TableauFontStyle["Italic"] = "font-style-italic";
+ })(TableauFontStyle = exports.TableauFontStyle || (exports.TableauFontStyle = {}));
+ // Unsupported for Betsy
+ var TextDecoration;
+ (function (TextDecoration) {
+ //
+ TextDecoration["NoDecoration"] = "text-decoration-none";
+ //
+ TextDecoration["Underline"] = "text-decoration-underline";
+ // not yet supported
+ TextDecoration["Overline"] = "text-decoration-overline";
+ //
+ TextDecoration["Strikethrough"] = "text-decoration-strikethrough";
+ })(TextDecoration = exports.TextDecoration || (exports.TextDecoration = {}));
+ //
+ var FontWeight;
+ (function (FontWeight) {
+ //
+ FontWeight["NormalWeight"] = "font-weight-normal";
+ //
+ FontWeight["Bold"] = "font-weight-bold";
+ })(FontWeight = exports.FontWeight || (exports.FontWeight = {}));
+ //
+ var TextOrient;
+ (function (TextOrient) {
+ //
+ TextOrient["TO_Auto"] = "text-orient-auto";
+ //
+ TextOrient["TO_Horz"] = "text-orient-horizontal";
+ //
+ TextOrient["TO_VertUp"] = "text-orient-vertical-up";
+ //
+ TextOrient["TO_VertDown"] = "text-orient-vertical-down";
+ })(TextOrient = exports.TextOrient || (exports.TextOrient = {}));
+ //
+ var TextAlign;
+ (function (TextAlign) {
+ //
+ TextAlign["TA_Start"] = "text-align-start";
+ //
+ TextAlign["TA_Center"] = "text-align-center";
+ //
+ TextAlign["TA_End"] = "text-align-end";
+ })(TextAlign = exports.TextAlign || (exports.TextAlign = {}));
+ //
+ var TextWrapMode;
+ (function (TextWrapMode) {
+ //
+ TextWrapMode["TextWrapOff"] = "text-wrap-off";
+ //
+ TextWrapMode["TextWrapTruncate"] = "text-wrap-truncate";
+ //
+ TextWrapMode["TextWrapOn"] = "text-wrap-on";
+ //
+ TextWrapMode["TextWrapAuto"] = "text-wrap-auto";
+ })(TextWrapMode = exports.TextWrapMode || (exports.TextWrapMode = {}));
+ //
+ var TextWholeLineMode;
+ (function (TextWholeLineMode) {
+ //
+ TextWholeLineMode["TextWholeLineOff"] = "text-whole-line-off";
+ //
+ TextWholeLineMode["TextWholeLineOn"] = "text-whole-line-on";
+ //
+ TextWholeLineMode["TextWholeLineAuto"] = "text-whole-line-auto";
+ })(TextWholeLineMode = exports.TextWholeLineMode || (exports.TextWholeLineMode = {}));
+ //
+ var TextBreakMode;
+ (function (TextBreakMode) {
+ //
+ TextBreakMode["TextBreakWhitespaceOnly"] = "text-break-ws-only";
+ //
+ TextBreakMode["TextBreakAuto"] = "text-break-auto";
+ })(TextBreakMode = exports.TextBreakMode || (exports.TextBreakMode = {}));
+ // type of aggregation
+ var AggType;
+ (function (AggType) {
+ //
+ AggType["AGG_SUM"] = "sum";
+ //
+ AggType["AGG_AVG"] = "average";
+ //
+ AggType["AGG_MIN"] = "min";
+ //
+ AggType["AGG_MAX"] = "max";
+ //
+ AggType["AGG_STDEV"] = "std-dev";
+ //
+ AggType["AGG_STDEVP"] = "std-dev-p";
+ //
+ AggType["AGG_VAR"] = "var";
+ //
+ AggType["AGG_VARP"] = "var-p";
+ //
+ AggType["AGG_COUNT"] = "count";
+ //
+ AggType["AGG_COUNTD"] = "count-d";
+ //
+ AggType["AGG_MEDIAN"] = "median";
+ //
+ AggType["AGG_ATTR"] = "attr";
+ //
+ AggType["AGG_NONE"] = "none";
+ //
+ AggType["AGG_PERCENTILE"] = "percentile";
+ //
+ AggType["AGG_YEAR"] = "year";
+ //
+ AggType["AGG_QTR"] = "qtr";
+ //
+ AggType["AGG_MONTH"] = "month";
+ //
+ AggType["AGG_DAY"] = "day";
+ //
+ AggType["AGG_HOUR"] = "hour";
+ //
+ AggType["AGG_MINUTE"] = "minute";
+ //
+ AggType["AGG_SECOND"] = "second";
+ //
+ AggType["AGG_WEEK"] = "week";
+ //
+ AggType["AGG_WEEKDAY"] = "weekday";
+ //
+ AggType["AGG_MONTHYEAR"] = "month-year";
+ //
+ AggType["AGG_MDY"] = "mdy";
+ //
+ AggType["AGG_END"] = "end";
+ //
+ AggType["TRUNC_YEAR"] = "trunc-year";
+ //
+ AggType["TRUNC_QTR"] = "trunc-qtr";
+ //
+ AggType["TRUNC_MONTH"] = "trunc-month";
+ //
+ AggType["TRUNC_WEEK"] = "trunc-week";
+ //
+ AggType["TRUNC_DAY"] = "trunc-day";
+ //
+ AggType["TRUNC_HOUR"] = "trunc-hour";
+ //
+ AggType["TRUNC_MINUTE"] = "trunc-minute";
+ //
+ AggType["TRUNC_SECOND"] = "trunc-second";
+ //
+ AggType["AGG_QUART1"] = "quart1";
+ //
+ AggType["AGG_QUART3"] = "quart3";
+ //
+ AggType["AGG_SKEWNESS"] = "skewness";
+ //
+ AggType["AGG_KURTOSIS"] = "kurtosis";
+ //
+ AggType["AGG_INOUT"] = "in-out";
+ //
+ AggType["AGG_SUM_XSQR"] = "sum-xsqr";
+ //
+ AggType["AGG_USER"] = "user";
+ //
+ AggType["AGG_COLLECT"] = "collect";
+ //
+ AggType["AGG_COVAR"] = "covar";
+ //
+ AggType["AGG_COVARP"] = "covarp";
+ //
+ AggType["AGG_CORR"] = "corr";
+ })(AggType = exports.AggType || (exports.AggType = {}));
+ // DataValueFormatter::DataTypeEncodings has hardcoded values corresponding to following enum members. So any changes here should be done there too
+ var DataType;
+ (function (DataType) {
+ //
+ DataType["DT_INTEGER"] = "integer";
+ //
+ DataType["DT_REAL"] = "real";
+ //
+ DataType["DT_STRING"] = "cstring";
+ //
+ DataType["DT_DATETIME"] = "datetime";
+ //
+ DataType["DT_BOOLEAN"] = "boolean";
+ //
+ DataType["DT_DATE"] = "date";
+ //
+ DataType["DT_TUPLE"] = "tuple";
+ //
+ DataType["DT_SPATIAL"] = "spatial";
+ //
+ DataType["DT_UNKNOWN"] = "unknown";
+ //
+ DataType["DT_BINARY"] = "binary";
+ //
+ DataType["DT_TIME"] = "time";
+ })(DataType = exports.DataType || (exports.DataType = {}));
+ //
+ var SortDirection;
+ (function (SortDirection) {
+ // ascending
+ SortDirection["ST_ASC"] = "asc";
+ // descending
+ SortDirection["ST_DESC"] = "desc";
+ })(SortDirection = exports.SortDirection || (exports.SortDirection = {}));
+ //
+ var SortType;
+ (function (SortType) {
+ // Use the defined ordering
+ SortType["ST_NATURAL"] = "data-source-order";
+ // Alphabetic/numeric ordering of data
+ SortType["ST_ALPHABETIC"] = "alpha";
+ // Specify a secondary field
+ SortType["ST_COMPUTED"] = "field";
+ // Manually defined ordering
+ SortType["ST_MANUAL"] = "manual";
+ })(SortType = exports.SortType || (exports.SortType = {}));
+ //
+ var SortEnd;
+ (function (SortEnd) {
+ //
+ SortEnd["ST_TOP"] = "top";
+ //
+ SortEnd["ST_BOTTOM"] = "bottom";
+ })(SortEnd = exports.SortEnd || (exports.SortEnd = {}));
+ //
+ var ForecastColumnType;
+ (function (ForecastColumnType) {
+ //
+ ForecastColumnType["FORECAST_NONE"] = "none";
+ //
+ ForecastColumnType["FORECAST_VALUE"] = "value";
+ //
+ ForecastColumnType["FORECAST_INDICATOR"] = "indicator";
+ //
+ ForecastColumnType["FORECAST_PRECISION"] = "precision";
+ //
+ ForecastColumnType["FORECAST_QUALITY"] = "quality";
+ //
+ ForecastColumnType["FORECAST_FIT_TREND"] = "fit_trend";
+ //
+ ForecastColumnType["FORECAST_PRECISION_PERCENT"] = "precision_percent";
+ //
+ ForecastColumnType["FORECAST_PREDICTION_INTERVAL_UPPER"] = "prediction_upper";
+ //
+ ForecastColumnType["FORECAST_PREDICTION_INTERVAL_LOWER"] = "prediction_lower";
+ })(ForecastColumnType = exports.ForecastColumnType || (exports.ForecastColumnType = {}));
+ //
+ var MarkMarkersMode;
+ (function (MarkMarkersMode) {
+ //
+ MarkMarkersMode["MMM_Auto"] = "mmm-auto";
+ //
+ MarkMarkersMode["MMM_All"] = "mmm_all";
+ //
+ MarkMarkersMode["MMM_None"] = "mmm_none";
+ //
+ MarkMarkersMode["MMM_Default"] = "mmm_default";
+ })(MarkMarkersMode = exports.MarkMarkersMode || (exports.MarkMarkersMode = {}));
+ //
+ var PercentMode;
+ (function (PercentMode) {
+ //
+ PercentMode["PERCENT_CELL_IN_PANE"] = "cell-in-pane";
+ //
+ PercentMode["PERCENT_ROW_IN_PANE"] = "row-in-pane";
+ //
+ PercentMode["PERCENT_COLUMN_IN_PANE"] = "column-in-pane";
+ //
+ PercentMode["PERCENT_PANE"] = "pane";
+ //
+ PercentMode["PERCENT_ROW"] = "row";
+ //
+ PercentMode["PERCENT_COLUMN"] = "column";
+ //
+ PercentMode["PERCENT_TABLE"] = "table";
+ })(PercentMode = exports.PercentMode || (exports.PercentMode = {}));
+ //
+ var SpecialValuesMode;
+ (function (SpecialValuesMode) {
+ //
+ SpecialValuesMode["SPECIAL_VALUES_HIDE_AND_WARN"] = "hide-and-warn";
+ //
+ SpecialValuesMode["SPECIAL_VALUES_HIDE"] = "hide";
+ //
+ SpecialValuesMode["SPECIAL_VALUES_HIDE_BREAK_LINES"] = "hide-break-lines";
+ //
+ SpecialValuesMode["SPECIAL_VALUES_SHOW"] = "show";
+ })(SpecialValuesMode = exports.SpecialValuesMode || (exports.SpecialValuesMode = {}));
+ //
+ var LayoutType;
+ (function (LayoutType) {
+ //
+ LayoutType["LAYOUT_CARTESIAN"] = "cartesian";
+ //
+ LayoutType["LAYOUT_DEFAULT"] = "default";
+ })(LayoutType = exports.LayoutType || (exports.LayoutType = {}));
+ //
+ var ShelfType;
+ (function (ShelfType) {
+ //
+ ShelfType["ST_NONE"] = "none-shelf";
+ //
+ ShelfType["ST_COLUMNS_SHELF"] = "columns-shelf";
+ //
+ ShelfType["ST_ROWS_SHELF"] = "rows-shelf";
+ //
+ ShelfType["ST_PAGES_SHELF"] = "pages-shelf";
+ //
+ ShelfType["ST_FILTER_SHELF"] = "filter-shelf";
+ //
+ ShelfType["ST_IMAGE_SHELF"] = "image-shelf";
+ //
+ ShelfType["ST_MEASURES_SHELF"] = "measures-shelf";
+ //
+ ShelfType["ST_SHOWME_SHELF"] = "show-me-shelf";
+ //
+ ShelfType["ST_ENCODING_SHELF"] = "encoding-shelf";
+ //
+ ShelfType["ST_CLUSTER_SHELF"] = "cluster-shelf";
+ //
+ ShelfType["ST_GEOMETRY_SHELF"] = "geometry-shelf";
+ //
+ ShelfType["ST_END"] = "end-shelf";
+ //
+ ShelfType["ST_FINAL"] = "final-shelf";
+ })(ShelfType = exports.ShelfType || (exports.ShelfType = {}));
+ //
+ var RestrictType;
+ (function (RestrictType) {
+ //
+ RestrictType["RT_INTERSECT"] = "rt-intersection";
+ //
+ RestrictType["RT_UNION"] = "rt-union";
+ })(RestrictType = exports.RestrictType || (exports.RestrictType = {}));
+ //
+ var TooltipMode;
+ (function (TooltipMode) {
+ //
+ TooltipMode["TM_NONE"] = "none";
+ //
+ TooltipMode["TM_STICKY"] = "sticky";
+ //
+ TooltipMode["TM_SMOOTH"] = "smooth";
+ })(TooltipMode = exports.TooltipMode || (exports.TooltipMode = {}));
+ //
+ var ColumnGroups;
+ (function (ColumnGroups) {
+ // 0x01
+ ColumnGroups["COLS_IN_OUTPUT"] = "cols-in-output";
+ // 0x02
+ ColumnGroups["COLS_IN_FILTER_SHELF"] = "cols-in-filter-shelf";
+ // 0x04
+ ColumnGroups["COLS_REF_BY_FILTERS"] = "cols-ref-by-filters";
+ // 0x08
+ ColumnGroups["COLS_REF_BY_OMEASURES"] = "cols-ref-by-omeasures";
+ // 0x10
+ ColumnGroups["COLS_REF_BY_JOIN_LOD"] = "cols-ref-by-join-lod";
+ // 0x20
+ ColumnGroups["COLS_HIDDEN"] = "cols-hidden";
+ // 0x40
+ ColumnGroups["COLS_REF_BY_SORTS"] = "cols-ref-by-sorts";
+ //
+ ColumnGroups["COLS_REF_BY_FILTERS_OR_SORTS"] = "cols-ref-by-filters-or-sorts";
+ //
+ ColumnGroups["COLS_ON_SHELVES"] = "cols-on-shelves";
+ //
+ ColumnGroups["COLS_ALL"] = "cols-all";
+ })(ColumnGroups = exports.ColumnGroups || (exports.ColumnGroups = {}));
+ //
+ var ButtonsOption;
+ (function (ButtonsOption) {
+ //
+ ButtonsOption["BO_HIDE"] = "buttons-hide";
+ })(ButtonsOption = exports.ButtonsOption || (exports.ButtonsOption = {}));
+ //
+ var SelectionRelaxationOption;
+ (function (SelectionRelaxationOption) {
+ //
+ SelectionRelaxationOption["SRO_ALLOW"] = "selection-relaxation-allow";
+ //
+ SelectionRelaxationOption["SRO_DISALLOW"] = "selection-relaxation-disallow";
+ })(SelectionRelaxationOption = exports.SelectionRelaxationOption || (exports.SelectionRelaxationOption = {}));
+ //
+ var EncodingType;
+ (function (EncodingType) {
+ // a text encoding
+ EncodingType["ET_TEXT"] = "text-encoding";
+ // a color encoding
+ EncodingType["ET_COLOR"] = "color-encoding";
+ // a size encoding
+ EncodingType["ET_SIZE"] = "size-encoding";
+ // a shape encoding
+ EncodingType["ET_SHAPE"] = "shape-encoding";
+ // an image encoding
+ EncodingType["ET_IMAGE"] = "image-encoding";
+ // a sort (path) encoding (currently only for line or polygon charts)
+ EncodingType["ET_SORT"] = "sort-encoding";
+ // a wedge size (angle) encoding (currently only for pie charts)
+ EncodingType["ET_WEDGESIZE"] = "wedge-size-encoding";
+ // a geometry encoding
+ EncodingType["ET_GEOMETRY"] = "geometry-encoding";
+ // a level of detail encoding
+ EncodingType["ET_LOD"] = "level-of-detail-encoding";
+ // encoding used for the data highlighter/legend mechanism
+ EncodingType["ET_HIGHLIGHT"] = "highlight-encoding";
+ // a tooltip encoding
+ EncodingType["ET_TOOLTIP"] = "tooltip-encoding";
+ // a temporary label placed above marks for the table calc dialog
+ EncodingType["ET_RUNNINGORDER"] = "runningorder-encoding";
+ // the number of encodings, this is invalid input for an encoding presentation model
+ EncodingType["NUM_ENCODINGS"] = "num-encodings";
+ // an invalid encoding
+ EncodingType["ET_INVALID"] = "invalid-encoding";
+ })(EncodingType = exports.EncodingType || (exports.EncodingType = {}));
+ // Enumeration of valid horizontal alignments.
+ var LabelHAlignment;
+ (function (LabelHAlignment) {
+ //
+ LabelHAlignment["LHA_Left"] = "h-align-left";
+ //
+ LabelHAlignment["LHA_Center"] = "h-align-center";
+ //
+ LabelHAlignment["LHA_Right"] = "h-align-right";
+ //
+ LabelHAlignment["LHA_Automatic"] = "h-align-auto";
+ })(LabelHAlignment = exports.LabelHAlignment || (exports.LabelHAlignment = {}));
+ // Enumeration of valid vertical alignments.
+ var LabelVAlignment;
+ (function (LabelVAlignment) {
+ //
+ LabelVAlignment["LVA_Bottom"] = "v-align-bottom";
+ //
+ LabelVAlignment["LVA_Center"] = "v-align-center";
+ //
+ LabelVAlignment["LVA_Top"] = "v-align-top";
+ //
+ LabelVAlignment["LVA_Automatic"] = "v-align-auto";
+ })(LabelVAlignment = exports.LabelVAlignment || (exports.LabelVAlignment = {}));
+ // Enumeration of valid label positions.
+ var LabelPosition;
+ (function (LabelPosition) {
+ // Position each text run relative to the center of the original bbox. Use the original bbox as the height and width of the text mark. Used for non-stacked OO text marks.
+ LabelPosition["CenterInOriginalBbox"] = "label-position-center-in-original-box";
+ // Position each text run relative to the bottom left corner of the measured bbox. Use the measured bbox as the width and height of the label. Used for labels
+ LabelPosition["OriginAtLowerLeft"] = "label-position-origin-at-lower-left";
+ // Position each text run relative to the center of the measured bbox. Use the measured bbox as the width and height of the text mark. Used for most text marks.
+ LabelPosition["OriginAtCenter"] = "label-position-origin-at-center";
+ })(LabelPosition = exports.LabelPosition || (exports.LabelPosition = {}));
+ // Enumeration of ways to use color. Values can be or'ed together to make a mask for allowed options
+ var ColorMode;
+ (function (ColorMode) {
+ // Color user specified
+ ColorMode["CLRM_User"] = "clrm-user";
+ // Color selected automatically
+ ColorMode["CLRM_Auto"] = "clrm-auto";
+ // Color matches mark color
+ ColorMode["CLRM_Match"] = "clrm-match";
+ // No color (transparent or not drawn)
+ ColorMode["CLRM_None"] = "clrm-none";
+ })(ColorMode = exports.ColorMode || (exports.ColorMode = {}));
+ //
+ var MarkLabelsMode;
+ (function (MarkLabelsMode) {
+ //
+ MarkLabelsMode["MLM_All"] = "mlm-all";
+ //
+ MarkLabelsMode["MLM_Selection"] = "mlm-selection";
+ //
+ MarkLabelsMode["MLM_Highlight"] = "mlm-highlight";
+ //
+ MarkLabelsMode["MLM_LineEnds"] = "mlm-line-ends";
+ // min/max setting
+ MarkLabelsMode["MLM_Range"] = "mlm-range";
+ // most recent (only relevant when date field is in play)
+ MarkLabelsMode["MLM_MostRecent"] = "mlm-most-recent";
+ // ...this is " virtual " (runtime only, not saved, not shown as a user setting
+ MarkLabelsMode["MLM_MultipleValues"] = "mlm-multiple-values";
+ //
+ MarkLabelsMode["MLM_Default"] = "mlm-default";
+ })(MarkLabelsMode = exports.MarkLabelsMode || (exports.MarkLabelsMode = {}));
+ //
+ var MarkLabelsScope;
+ (function (MarkLabelsScope) {
+ //
+ MarkLabelsScope["MLS_Table"] = "mls-table";
+ //
+ MarkLabelsScope["MLS_Pane"] = "mls-pane";
+ //
+ MarkLabelsScope["MLS_Cell"] = "mls-cell";
+ //
+ MarkLabelsScope["MLS_MultiMark"] = "mls-multimark";
+ // ...this is " virtual " (runtime only, not saved, not shown as a user setting)
+ MarkLabelsScope["MLS_MultipleValues"] = "mls-multiple-values";
+ //
+ MarkLabelsScope["MLS_Default"] = "mls-default";
+ })(MarkLabelsScope = exports.MarkLabelsScope || (exports.MarkLabelsScope = {}));
+ //
+ var MarkLabelsVisibility;
+ (function (MarkLabelsVisibility) {
+ //
+ MarkLabelsVisibility["MLV_Hidden"] = "mlv-hidden";
+ //
+ MarkLabelsVisibility["MLV_Visible"] = "mlv-visible";
+ //
+ MarkLabelsVisibility["MLV_UseCurrent"] = "mlv-use-current";
+ })(MarkLabelsVisibility = exports.MarkLabelsVisibility || (exports.MarkLabelsVisibility = {}));
+ //
+ var StackingMode;
+ (function (StackingMode) {
+ //
+ StackingMode["StackingOff"] = "off";
+ //
+ StackingMode["StackingOn"] = "on";
+ //
+ StackingMode["StackingAuto"] = "auto";
+ })(StackingMode = exports.StackingMode || (exports.StackingMode = {}));
+ //
+ var MarkAlignment;
+ (function (MarkAlignment) {
+ //
+ MarkAlignment["MarkAlignmentLeft"] = "mark-alignment-left";
+ //
+ MarkAlignment["MarkAlignmentRight"] = "mark-alignment-right";
+ //
+ MarkAlignment["MarkAlignmentCenter"] = "mark-alignment-center";
+ })(MarkAlignment = exports.MarkAlignment || (exports.MarkAlignment = {}));
+ //
+ var PaneLabelComposition;
+ (function (PaneLabelComposition) {
+ //
+ PaneLabelComposition["PLC_None"] = "pane-label-composition-none";
+ //
+ PaneLabelComposition["PLC_Mixed"] = "pane-label-composition-mixed";
+ //
+ PaneLabelComposition["PLC_All"] = "pane-label-composition-all";
+ })(PaneLabelComposition = exports.PaneLabelComposition || (exports.PaneLabelComposition = {}));
+ // The user-specified mark type on the Marks Card
+ var PrimitiveType;
+ (function (PrimitiveType) {
+ //
+ PrimitiveType["PT_AUTOMATIC"] = "automatic";
+ //
+ PrimitiveType["PT_TEXT"] = "text";
+ //
+ PrimitiveType["PT_IMAGE"] = "image";
+ //
+ PrimitiveType["PT_SHAPE"] = "shape";
+ //
+ PrimitiveType["PT_RECTANGLE"] = "rectangle";
+ //
+ PrimitiveType["PT_BAR"] = "bar";
+ //
+ PrimitiveType["PT_GANTT"] = "gantt";
+ //
+ PrimitiveType["PT_SQUARE"] = "square";
+ //
+ PrimitiveType["PT_CIRCLE"] = "circle";
+ //
+ PrimitiveType["PT_POLYLINE"] = "polyline";
+ // line chart
+ PrimitiveType["PT_LINE"] = "line";
+ //
+ PrimitiveType["PT_POLYGON"] = "polygon";
+ // area chart
+ PrimitiveType["PT_AREA"] = "area";
+ //
+ PrimitiveType["PT_PIE"] = "pie";
+ //
+ PrimitiveType["PT_MULTIPOLYGON"] = "multipolygon";
+ // Not an actual primitive type. This is just used to flag the UI that multiple types are in play.
+ PrimitiveType["PT_MULTIPLE"] = "multiple";
+ // used for looping over all values
+ PrimitiveType["NUM_PRIMITIVES"] = "count";
+ // used to flag an unset or invalid state
+ PrimitiveType["PT_INVALID"] = "invalid";
+ })(PrimitiveType = exports.PrimitiveType || (exports.PrimitiveType = {}));
+ // Defines the way a given primitive behaves on a viz - for instance, a PT_CIRCLE is treated as a point, while a PT_POLYGON would be treated as an area.
+ var MarkType;
+ (function (MarkType) {
+ //
+ MarkType["MT_POINT"] = "point";
+ //
+ MarkType["MT_LINE"] = "line";
+ //
+ MarkType["MT_AREA"] = "area";
+ //
+ MarkType["MT_INVALID"] = "invalid";
+ })(MarkType = exports.MarkType || (exports.MarkType = {}));
+ // PaneAxis is used to describe which axis of a pane is the independent axis.
+ var PaneAxis;
+ (function (PaneAxis) {
+ // The independent axis is inferred from other properties of the pane.
+ PaneAxis["AXIS_AUTO"] = "auto";
+ //
+ PaneAxis["AXIS_X"] = "x";
+ //
+ PaneAxis["AXIS_Y"] = "y";
+ })(PaneAxis = exports.PaneAxis || (exports.PaneAxis = {}));
+ //
+ var Rounding;
+ (function (Rounding) {
+ //
+ Rounding["Rounding_None"] = "none";
+ //
+ Rounding["Rounding_Small"] = "small";
+ //
+ Rounding["Rounding_Medium"] = "medium";
+ //
+ Rounding["Rounding_Large"] = "large";
+ })(Rounding = exports.Rounding || (exports.Rounding = {}));
+ //
+ var LineEnd;
+ (function (LineEnd) {
+ //
+ LineEnd["LineEnd_None"] = "none";
+ //
+ LineEnd["LineEnd_Arrow"] = "arrow";
+ //
+ LineEnd["LineEnd_OpenArrow"] = "open-arrow";
+ //
+ LineEnd["LineEnd_Dot"] = "dot";
+ })(LineEnd = exports.LineEnd || (exports.LineEnd = {}));
+ //
+ var LineEndSize;
+ (function (LineEndSize) {
+ //
+ LineEndSize["LineEndSize_Smallest"] = "smallest";
+ //
+ LineEndSize["LineEndSize_Smaller"] = "smaller";
+ //
+ LineEndSize["LineEndSize_Small"] = "small";
+ //
+ LineEndSize["LineEndSize_Medium"] = "medium";
+ //
+ LineEndSize["LineEndSize_Large"] = "large";
+ //
+ LineEndSize["LineEndSize_Larger"] = "larger";
+ //
+ LineEndSize["LineEndSize_Largest"] = "largest";
+ })(LineEndSize = exports.LineEndSize || (exports.LineEndSize = {}));
+ //
+ var BodyType;
+ (function (BodyType) {
+ //
+ BodyType["BodyType_None"] = "none";
+ //
+ BodyType["BodyType_Box"] = "box";
+ //
+ BodyType["BodyType_Edge"] = "edge";
+ })(BodyType = exports.BodyType || (exports.BodyType = {}));
+ //
+ var StyleTheme;
+ (function (StyleTheme) {
+ //
+ StyleTheme["themeClassic"] = "classic";
+ //
+ StyleTheme["themeModern"] = "modern";
+ //
+ StyleTheme["themeClean"] = "clean";
+ //
+ StyleTheme["themeSmooth"] = "smooth";
+ //
+ StyleTheme["themeCustom"] = "custom";
+ })(StyleTheme = exports.StyleTheme || (exports.StyleTheme = {}));
+ //
+ var AxisFoldState;
+ (function (AxisFoldState) {
+ //
+ AxisFoldState["afNone"] = "none";
+ //
+ AxisFoldState["afFolded"] = "folded";
+ //
+ AxisFoldState["afSynchronized"] = "synchronized";
+ })(AxisFoldState = exports.AxisFoldState || (exports.AxisFoldState = {}));
+ //
+ var LinePattern;
+ (function (LinePattern) {
+ //
+ LinePattern["LinePatternNone"] = "none";
+ //
+ LinePattern["LinePatternSolid"] = "solid";
+ //
+ LinePattern["LinePatternDashed"] = "dashed";
+ //
+ LinePattern["LinePatternDotted"] = "dotted";
+ })(LinePattern = exports.LinePattern || (exports.LinePattern = {}));
+ //
+ var LineVisibility;
+ (function (LineVisibility) {
+ //
+ LineVisibility["LineVisibilityAuto"] = "automatic";
+ //
+ LineVisibility["LineVisibilityOn"] = "on";
+ //
+ LineVisibility["LineVisibilityOff"] = "off";
+ })(LineVisibility = exports.LineVisibility || (exports.LineVisibility = {}));
+ //
+ var StylesLinePattern;
+ (function (StylesLinePattern) {
+ //
+ StylesLinePattern["StylesLinePatternSolid"] = "solid";
+ //
+ StylesLinePattern["StylesLinePatternDashed"] = "dashed";
+ //
+ StylesLinePattern["StylesLinePatternDotted"] = "dotted";
+ })(StylesLinePattern = exports.StylesLinePattern || (exports.StylesLinePattern = {}));
+ //
+ var LineCap;
+ (function (LineCap) {
+ //
+ LineCap["LineCapFlat"] = "flat";
+ //
+ LineCap["LineCapSquare"] = "square";
+ //
+ LineCap["LineCapRound"] = "round";
+ //
+ LineCap["LineCapTriangle"] = "triangle";
+ })(LineCap = exports.LineCap || (exports.LineCap = {}));
+ //
+ var LineJoin;
+ (function (LineJoin) {
+ //
+ LineJoin["BevelJoin"] = "bevel";
+ //
+ LineJoin["MiterJoin"] = "miter";
+ //
+ LineJoin["RoundJoin"] = "round";
+ })(LineJoin = exports.LineJoin || (exports.LineJoin = {}));
+ //
+ var LineAlignment;
+ (function (LineAlignment) {
+ //
+ LineAlignment["AlignmentCenter"] = "center";
+ //
+ LineAlignment["AlignmentInset"] = "inset";
+ })(LineAlignment = exports.LineAlignment || (exports.LineAlignment = {}));
+ //
+ var FillMode;
+ (function (FillMode) {
+ //
+ FillMode["FillEvenOdd"] = "even-odd";
+ //
+ FillMode["FillWinding"] = "winding";
+ })(FillMode = exports.FillMode || (exports.FillMode = {}));
+ //
+ var BorderStyle;
+ (function (BorderStyle) {
+ // none
+ BorderStyle["BorderStyleNone"] = "bs-none";
+ // hidden
+ BorderStyle["BorderStyleHidden"] = "bs-hidden";
+ // dotted
+ BorderStyle["BorderStyleDotted"] = "bs-dotted";
+ // dashed
+ BorderStyle["BorderStyleDashed"] = "bs-dashed";
+ // solid
+ BorderStyle["BorderStyleSolid"] = "bs-solid";
+ // double
+ BorderStyle["BorderStyleDouble"] = "bs-double";
+ // groove
+ BorderStyle["BorderStyleGroove"] = "bs-groove";
+ // ridge
+ BorderStyle["BorderStyleRidge"] = "bs-ridge";
+ // inset
+ BorderStyle["BorderStyleInset"] = "bs-inset";
+ // outset
+ BorderStyle["BorderStyleOutset"] = "bs-outset";
+ // invalid
+ BorderStyle["BorderStyleInvalid"] = "bs-invalid";
+ })(BorderStyle = exports.BorderStyle || (exports.BorderStyle = {}));
+ //
+ var ColorPaletteType;
+ (function (ColorPaletteType) {
+ //
+ ColorPaletteType["ColorPaletteRegular"] = "color-palette-regular";
+ //
+ ColorPaletteType["ColorPaletteOrderedDiverging"] = "palette-ordered-diverging";
+ //
+ ColorPaletteType["ColorPaletteOrderedLinear"] = "palette-ordered-linear";
+ })(ColorPaletteType = exports.ColorPaletteType || (exports.ColorPaletteType = {}));
+ //
+ var PaletteFlags;
+ (function (PaletteFlags) {
+ //
+ PaletteFlags["PaletteFlagNone"] = "palette-flag-none";
+ //
+ PaletteFlags["PaletteFlagCustom"] = "palette-flag-custom";
+ //
+ PaletteFlags["PaletteFlagNotQuantitative"] = "palette-flag-not-quantitative";
+ //
+ PaletteFlags["PaletteFlagNotCategorical"] = "palette-flag-not-categorical";
+ //
+ PaletteFlags["PaletteFlagNotReferenceBand"] = "palette-flag-not-reference-band";
+ //
+ PaletteFlags["PaletteFlagNotBoxplot"] = "palette-flag-not-boxplot";
+ //
+ PaletteFlags["PaletteFlagNotFilledMapLight"] = "palette-flag-not-filled-map-light";
+ //
+ PaletteFlags["PaletteFlagNotFilledMapDark"] = "palette-flag-not-filled-map-dark";
+ //
+ PaletteFlags["PaletteFlagLegacy"] = "palette-flag-legacy";
+ })(PaletteFlags = exports.PaletteFlags || (exports.PaletteFlags = {}));
+ //
+ var DefaultPaletteType;
+ (function (DefaultPaletteType) {
+ //
+ DefaultPaletteType["SmallNominal"] = "palette-default-small-nominal";
+ //
+ DefaultPaletteType["LargeNominal"] = "palette-default-large-nominal";
+ //
+ DefaultPaletteType["Ordinal"] = "palette-default-ordinal";
+ //
+ DefaultPaletteType["QuantitativePositive"] = "palette-default-quant-pos";
+ //
+ DefaultPaletteType["QuantitativeNegative"] = "palette-default-quant-neg";
+ //
+ DefaultPaletteType["QuantitativeDiverging"] = "palette-default-quant-div";
+ //
+ DefaultPaletteType["QuantitativePositiveLight"] = "palette-default-quant-pos-light";
+ //
+ DefaultPaletteType["QuantitativeNegativeLight"] = "palette-default-quant-neg-light";
+ //
+ DefaultPaletteType["QuantitativeDivergingLight"] = "palette-default-quant-div-light";
+ //
+ DefaultPaletteType["QuantitativePositiveArea"] = "palette-default-quant-pos-area";
+ //
+ DefaultPaletteType["QuantitativeNegativeArea"] = "palette-default-quant-neg-area";
+ //
+ DefaultPaletteType["QuantitativeDivergingArea"] = "palette-default-quant-div-area";
+ })(DefaultPaletteType = exports.DefaultPaletteType || (exports.DefaultPaletteType = {}));
+ //
+ var ShowBounds;
+ (function (ShowBounds) {
+ //
+ ShowBounds["Both"] = "show-both";
+ //
+ ShowBounds["Upper"] = "show-upper";
+ //
+ ShowBounds["Lower"] = "show-lower";
+ })(ShowBounds = exports.ShowBounds || (exports.ShowBounds = {}));
+ // Sample vs. population standard deviation
+ var StDevType;
+ (function (StDevType) {
+ //
+ StDevType["Sample"] = "stdev-sample";
+ //
+ StDevType["Population"] = "stdev-population";
+ })(StDevType = exports.StDevType || (exports.StDevType = {}));
+ //
+ var ReferenceLineFormulaGroup;
+ (function (ReferenceLineFormulaGroup) {
+ //
+ ReferenceLineFormulaGroup["None"] = "none";
+ //
+ ReferenceLineFormulaGroup["Line"] = "line";
+ //
+ ReferenceLineFormulaGroup["Band"] = "band";
+ //
+ ReferenceLineFormulaGroup["Distribution"] = "distribution";
+ //
+ ReferenceLineFormulaGroup["Boxplot"] = "boxplot";
+ })(ReferenceLineFormulaGroup = exports.ReferenceLineFormulaGroup || (exports.ReferenceLineFormulaGroup = {}));
+ //
+ var ReferenceLineScopeType;
+ (function (ReferenceLineScopeType) {
+ //
+ ReferenceLineScopeType["PerCell"] = "per-cell";
+ //
+ ReferenceLineScopeType["PerPane"] = "per-pane";
+ //
+ ReferenceLineScopeType["PerTable"] = "per-table";
+ })(ReferenceLineScopeType = exports.ReferenceLineScopeType || (exports.ReferenceLineScopeType = {}));
+ // how should the line be labeled
+ var ReferenceLineLabelType;
+ (function (ReferenceLineLabelType) {
+ // no label
+ ReferenceLineLabelType["None"] = "none";
+ // an automatically generated label
+ ReferenceLineLabelType["Automatic"] = "automatic";
+ //
+ ReferenceLineLabelType["Value"] = "value";
+ //
+ ReferenceLineLabelType["Computation"] = "computation";
+ // a user defined label
+ ReferenceLineLabelType["Custom"] = "custom";
+ })(ReferenceLineLabelType = exports.ReferenceLineLabelType || (exports.ReferenceLineLabelType = {}));
+ // how should the line be computed
+ var ReferenceLineFormulaType;
+ (function (ReferenceLineFormulaType) {
+ // a user specified constant value
+ ReferenceLineFormulaType["Constant"] = "constant";
+ //
+ ReferenceLineFormulaType["Total"] = "total";
+ // total of all values at the given scope <- is this correct? looks like comment from FormulaTotal
+ ReferenceLineFormulaType["Sum"] = "sum";
+ // minimum value in the scope
+ ReferenceLineFormulaType["Min"] = "min";
+ // maximum value in the scope
+ ReferenceLineFormulaType["Max"] = "max";
+ // average value in the scope
+ ReferenceLineFormulaType["Average"] = "average";
+ // median value in the scope
+ ReferenceLineFormulaType["Median"] = "median";
+ // the n quantiles values in the scope
+ ReferenceLineFormulaType["Quantiles"] = "quantiles";
+ // a given percentile in the scope
+ ReferenceLineFormulaType["Percentile"] = "percentile";
+ // mean +- standard deviation
+ ReferenceLineFormulaType["StandardDeviation"] = "standard-deviation";
+ // a given confidence interval around the mean
+ ReferenceLineFormulaType["ConfidenceInterval"] = "confidence-interval";
+ //
+ ReferenceLineFormulaType["MedianConfidenceInterval"] = "median-confidence-interval";
+ })(ReferenceLineFormulaType = exports.ReferenceLineFormulaType || (exports.ReferenceLineFormulaType = {}));
+ // Line or confidence interval or both
+ var ReferenceLineConfidenceIntervalState;
+ (function (ReferenceLineConfidenceIntervalState) {
+ // display line only
+ ReferenceLineConfidenceIntervalState["LineOnly"] = "line-only";
+ // display the line and a confidence interval
+ ReferenceLineConfidenceIntervalState["LineAndConfidenceInterval"] = "line-and-interval";
+ // display confidence interval only
+ ReferenceLineConfidenceIntervalState["ConfidenceIntervalOnly"] = "interval-only";
+ })(ReferenceLineConfidenceIntervalState = exports.ReferenceLineConfidenceIntervalState || (exports.ReferenceLineConfidenceIntervalState = {}));
+ // type of distribution. i.e. Percentage, Percentile, Quantile, and Standard Deviation
+ var ReferenceLineDistributionType;
+ (function (ReferenceLineDistributionType) {
+ // distribution type percentage
+ ReferenceLineDistributionType["Percentages"] = "percentages";
+ // distribution type percentile
+ ReferenceLineDistributionType["Percentiles"] = "percentiles";
+ // distribution type quantile
+ ReferenceLineDistributionType["Quantiles"] = "quantiles";
+ // distribution type standard deviation
+ ReferenceLineDistributionType["StandardDeviation"] = "standard-deviation";
+ })(ReferenceLineDistributionType = exports.ReferenceLineDistributionType || (exports.ReferenceLineDistributionType = {}));
+ // the kind of LOD calc to use for a given reference line
+ var ReferenceLineLODCalcType;
+ (function (ReferenceLineLODCalcType) {
+ // Create a formula using a FIXED-like level-of-detail calculation, to which sheet filters apply, that will go onto a specific sheet
+ ReferenceLineLODCalcType["MeasureFormula"] = "measure-formula";
+ // Create a boolean formula that can be used as a filter
+ ReferenceLineLODCalcType["BooleanFilter"] = "boolean-filter";
+ })(ReferenceLineLODCalcType = exports.ReferenceLineLODCalcType || (exports.ReferenceLineLODCalcType = {}));
+ //
+ var BoxplotWhiskerType;
+ (function (BoxplotWhiskerType) {
+ //
+ BoxplotWhiskerType["Standard"] = "standard";
+ //
+ BoxplotWhiskerType["Minmax"] = "minmax";
+ })(BoxplotWhiskerType = exports.BoxplotWhiskerType || (exports.BoxplotWhiskerType = {}));
+ // categories of connection types displayed by the connection UI
+ var ConnectionTypeCategory;
+ (function (ConnectionTypeCategory) {
+ // standard database
+ ConnectionTypeCategory["CTC_Database"] = "database";
+ // 'More Items ...' meta item
+ ConnectionTypeCategory["CTC_More"] = "more";
+ // Other file types
+ ConnectionTypeCategory["CTC_Other"] = "other";
+ // invalid connection category
+ ConnectionTypeCategory["CTC_Invalid"] = "invalid";
+ })(ConnectionTypeCategory = exports.ConnectionTypeCategory || (exports.ConnectionTypeCategory = {}));
+ // a logical grouping of connection types displayed by the connection UI
+ var ConnectionTypeGroup;
+ (function (ConnectionTypeGroup) {
+ // in a file
+ ConnectionTypeGroup["CTG_File"] = "file";
+ // on a server
+ ConnectionTypeGroup["CTG_Server"] = "server";
+ // on a recent server
+ ConnectionTypeGroup["CTG_MruServer"] = "mru-server";
+ // invalid group
+ ConnectionTypeGroup["CTG_Invalid"] = "invalid";
+ })(ConnectionTypeGroup = exports.ConnectionTypeGroup || (exports.ConnectionTypeGroup = {}));
+ // The type of metadata a column contains
+ var CubeMetadataCategory;
+ (function (CubeMetadataCategory) {
+ // cube's name
+ CubeMetadataCategory["CMC_Name"] = "name";
+ // cube's description
+ CubeMetadataCategory["CMC_Description"] = "description";
+ // cube's last updated timestamp
+ CubeMetadataCategory["CMC_LastUpdated"] = "last-updated";
+ // invalid
+ CubeMetadataCategory["CMC_Invalid"] = "invalid";
+ })(CubeMetadataCategory = exports.CubeMetadataCategory || (exports.CubeMetadataCategory = {}));
+ // The type of widget to display to the user when they are specifying connection info
+ var ConnectionWidgetType;
+ (function (ConnectionWidgetType) {
+ // show the join area
+ ConnectionWidgetType["CWT_JoinArea"] = "join-area";
+ // show the cube selection ui
+ ConnectionWidgetType["CWT_CubeSelection"] = "cube-selection";
+ // show the google analytics ui
+ ConnectionWidgetType["CWT_GoogleAnalytics"] = "google-analytics";
+ // show the tableau server ui
+ ConnectionWidgetType["CWT_TableauServer"] = "tableau-server";
+ // do not show any connection widget
+ ConnectionWidgetType["CWT_NoWidget"] = "no-widget";
+ // invalid
+ ConnectionWidgetType["CWT_Invalid"] = "invalid";
+ })(ConnectionWidgetType = exports.ConnectionWidgetType || (exports.ConnectionWidgetType = {}));
+ // The type of google analytics basic info
+ var GoogleBasicInfoType;
+ (function (GoogleBasicInfoType) {
+ // google analytics account
+ GoogleBasicInfoType["GA_Account"] = "ga-account";
+ // google analytics property
+ GoogleBasicInfoType["GA_Property"] = "ga-property";
+ // google analytics view
+ GoogleBasicInfoType["GA_View"] = "ga-view";
+ // invalid
+ GoogleBasicInfoType["GA_Invalid"] = "invalid";
+ })(GoogleBasicInfoType = exports.GoogleBasicInfoType || (exports.GoogleBasicInfoType = {}));
+ // The way in which a piece of connection information is specified
+ var ConnectionSpecificationType;
+ (function (ConnectionSpecificationType) {
+ // Uses a combo box
+ ConnectionSpecificationType["CST_ComboBox"] = "combo-box";
+ // Uses a line edit
+ ConnectionSpecificationType["CST_LineEdit"] = "line-edit";
+ // Uses a line edit with a browse button next to it
+ ConnectionSpecificationType["CST_LineEditBrowse"] = "line-edit-browse";
+ // invalid
+ ConnectionSpecificationType["CST_Invalid"] = "invalid";
+ })(ConnectionSpecificationType = exports.ConnectionSpecificationType || (exports.ConnectionSpecificationType = {}));
+ // GA Date Range
+ var DateRange;
+ (function (DateRange) {
+ //
+ DateRange["DateRangeFirst"] = "date-range-first";
+ //
+ DateRange["DateRangeLast30Days"] = "date-range-last30";
+ //
+ DateRange["DateRangeToday"] = "date-range-today";
+ //
+ DateRange["DateRangeYesterday"] = "date-range-yesterday";
+ //
+ DateRange["DateRangeLastWeek"] = "date-range-last-week";
+ //
+ DateRange["DateRangeLastMonth"] = "date-range-last-month";
+ //
+ DateRange["DateRangeLastYear"] = "date-range-last-year";
+ //
+ DateRange["DateRangeThisWeekToYesterday"] = "date-range-this-week-to-yesterday";
+ //
+ DateRange["DateRangeThisMonthToYesterday"] = "date-range-this-month-to-yesterday";
+ //
+ DateRange["DateRangeThisYearToYesterday"] = "date-range-this-year-to-yesterday";
+ //
+ DateRange["DateRangeLastWeekToYesterday"] = "date-range-last-week-to-yesterday";
+ //
+ DateRange["DateRangeLastMonthToYesterday"] = "date-range-last-month-to-yesterday";
+ //
+ DateRange["DateRangeLastYearToYesterday"] = "date-range-last-year-to-yesterday";
+ //
+ DateRange["DateRangeFixedRange"] = "date-range-fixed-range";
+ //
+ DateRange["DateRangeFixedStart"] = "date-range-fixed-start";
+ //
+ DateRange["DateRangeCount"] = "date-range-count";
+ })(DateRange = exports.DateRange || (exports.DateRange = {}));
+ // Specifies the type of widget to show in ConnectServerWidget
+ var ConnectServerWidgetType;
+ (function (ConnectServerWidgetType) {
+ // invalid
+ ConnectServerWidgetType["CSWT_Invalid"] = "invalid";
+ // microsoft access
+ ConnectServerWidgetType["CSWT_Access"] = "access";
+ // generic odbc
+ ConnectServerWidgetType["CSWT_ODBC"] = "odbc";
+ // cubes
+ ConnectServerWidgetType["CSWT_Cube"] = "cube";
+ // relational data sources
+ ConnectServerWidgetType["CSWT_Relational"] = "relational";
+ })(ConnectServerWidgetType = exports.ConnectServerWidgetType || (exports.ConnectServerWidgetType = {}));
+ //
+ var AuthenticationEnumsMode;
+ (function (AuthenticationEnumsMode) {
+ // no authentication widget
+ AuthenticationEnumsMode["AuthModeNone"] = "auth-mode-none";
+ // username and password
+ AuthenticationEnumsMode["AuthModeBasic"] = "auth-mode-basic";
+ // username and password can be blank
+ AuthenticationEnumsMode["AuthModeBasicNoValidateFields"] = "auth-mode-basic-no-validate-fields";
+ // only username
+ AuthenticationEnumsMode["AuthModeBasicUserNameOnly"] = "auth-mode-basic-username-only";
+ // aws access key and secret ID
+ AuthenticationEnumsMode["AuthModeBasicAWS"] = "auth-mode-basic-aws";
+ // username, password, and a list of AuthOptions with radio buttons
+ AuthenticationEnumsMode["AuthModeRadio"] = "auth-mode-radio";
+ // Like AuthModeRadio, but enable username/password even for integrated auth
+ AuthenticationEnumsMode["AuthModeRadioUnindented"] = "auth-mode-radio-unindented";
+ // username, password, and a list of AuthOptions with a combobox
+ AuthenticationEnumsMode["AuthModeComboBox"] = "auth-mode-combobox";
+ // Like AuthModeCombobox, but with option not requiring username/password
+ AuthenticationEnumsMode["AuthModeComboBoxIntegrated"] = "auth-mode-combobox-integrated";
+ // driver, authentication, username, realm, etc
+ AuthenticationEnumsMode["AuthModeHive"] = "auth-mode-hive";
+ // none, azure marketplace account, explicit
+ AuthenticationEnumsMode["AuthModeOData"] = "auth-mode-odata";
+ // edition, authentication, sso domain, etc
+ AuthenticationEnumsMode["AuthModeSharePoint"] = "auth-mode-sharepoint";
+ // username, password, client, & language
+ AuthenticationEnumsMode["AuthModeSAPBW"] = "auth-mode-sapbw";
+ // Ability to switch between two different auth modes each in their own modal dialogs (basic and oauth)
+ AuthenticationEnumsMode["AuthModeSwitchModal"] = "auth-mode-switch-modal";
+ })(AuthenticationEnumsMode = exports.AuthenticationEnumsMode || (exports.AuthenticationEnumsMode = {}));
+ //
+ var AuthenticationEnumsReconnectMode;
+ (function (AuthenticationEnumsReconnectMode) {
+ // Auth not needed for reconnect
+ AuthenticationEnumsReconnectMode["ReconnectModeNone"] = "reconnect-mode-none";
+ // Username and password
+ AuthenticationEnumsReconnectMode["ReconnectModeBasic"] = "reconnect-mode-basic";
+ // Access file
+ AuthenticationEnumsReconnectMode["ReconnectModeAccess"] = "reconnect-mode-access";
+ // Microsoft Azure Data Market (OData)
+ AuthenticationEnumsReconnectMode["ReconnectModeDataMarket"] = "reconnect-mode-data-market";
+ // Google OAuth
+ AuthenticationEnumsReconnectMode["ReconnectModeGoogleOAuth"] = "reconnect-mode-google-oauth";
+ // SalesforceOAuth, with the option of username/password auth
+ AuthenticationEnumsReconnectMode["ReconnectModeSalesforceOAuth"] = "reconnect-mode-salesforce-oauth";
+ // Web data connector
+ AuthenticationEnumsReconnectMode["ReconnectModeWebData"] = "reconnect-mode-web-data";
+ })(AuthenticationEnumsReconnectMode = exports.AuthenticationEnumsReconnectMode || (exports.AuthenticationEnumsReconnectMode = {}));
+ //
+ var AuthenticationEnumsAuthOption;
+ (function (AuthenticationEnumsAuthOption) {
+ // FIRST
+ AuthenticationEnumsAuthOption["AuthExplicit"] = "auth-option-explicit";
+ //
+ AuthenticationEnumsAuthOption["AuthExplicitUnindented"] = "auth-option-explicit-unindented";
+ //
+ AuthenticationEnumsAuthOption["AuthUseWindows"] = "auth-option-use-windows";
+ //
+ AuthenticationEnumsAuthOption["AuthUseWindowsPreferred"] = "auth-option-windows-preferred";
+ //
+ AuthenticationEnumsAuthOption["AuthTeradata"] = "auth-option-teradata";
+ //
+ AuthenticationEnumsAuthOption["AuthLDAP"] = "auth-option-ldap";
+ //
+ AuthenticationEnumsAuthOption["AuthVirtualNode"] = "auth-option-virtual-node";
+ //
+ AuthenticationEnumsAuthOption["AuthODataAccount"] = "auth-option-odata";
+ //
+ AuthenticationEnumsAuthOption["AuthNone"] = "auth-option-none";
+ //
+ AuthenticationEnumsAuthOption["AuthKerberos"] = "auth-option-kerberos";
+ // Introduced for Kerberos with fallback, recognizing that the db may or may not be on Windows
+ AuthenticationEnumsAuthOption["AuthIntegrated"] = "auth-option-integrated";
+ //
+ AuthenticationEnumsAuthOption["AuthUsername"] = "auth-option-username";
+ //
+ AuthenticationEnumsAuthOption["AuthUsernameAndPassword"] = "auth-option-username-and-password";
+ //
+ AuthenticationEnumsAuthOption["AuthSSL"] = "auth-option-ssl";
+ //
+ AuthenticationEnumsAuthOption["AuthHDIEmulator"] = "auth-hdi-emulator";
+ //
+ AuthenticationEnumsAuthOption["AuthHDIService"] = "auth-hdi-service";
+ //
+ AuthenticationEnumsAuthOption["AuthHTTP"] = "auth-http";
+ //
+ AuthenticationEnumsAuthOption["AuthHTTPS"] = "auth-https";
+ //
+ AuthenticationEnumsAuthOption["AuthAccessNoSecurity"] = "auth-option-access-no";
+ //
+ AuthenticationEnumsAuthOption["AuthAccessYesSecurity"] = "auth-option-access-yes";
+ //
+ AuthenticationEnumsAuthOption["AuthOAuth"] = "auth-oauth";
+ //
+ AuthenticationEnumsAuthOption["AuthForms"] = "auth-forms";
+ //
+ AuthenticationEnumsAuthOption["AuthThirdPartySSO"] = "auth-third-party-SSO";
+ // LAST
+ AuthenticationEnumsAuthOption["AuthInvalid"] = "auth-option-invalid";
+ })(AuthenticationEnumsAuthOption = exports.AuthenticationEnumsAuthOption || (exports.AuthenticationEnumsAuthOption = {}));
+ // data source validation modes
+ var DataSourceParserValidationMode;
+ (function (DataSourceParserValidationMode) {
+ //
+ DataSourceParserValidationMode["WorkbookLoadValidation"] = "workbook-load-validation";
+ //
+ DataSourceParserValidationMode["AutoValidation"] = "auto-validation";
+ //
+ DataSourceParserValidationMode["ForceValidation"] = "force-validation";
+ //
+ DataSourceParserValidationMode["PreventValidation"] = "prevent-validation";
+ //
+ DataSourceParserValidationMode["PreventValidationAndThrow"] = "prevent-validation-and-throw";
+ })(DataSourceParserValidationMode = exports.DataSourceParserValidationMode || (exports.DataSourceParserValidationMode = {}));
+ // Enum for DataGrid/MetadataGrid fields reordering
+ var FieldOrderType;
+ (function (FieldOrderType) {
+ //
+ FieldOrderType["DATASOURCE_ORDER"] = "datasource-order";
+ //
+ FieldOrderType["ALPHA_PER_TABLE"] = "alpha-per-table";
+ //
+ FieldOrderType["ALPHABETICAL_ORDER"] = "alphabetical-order";
+ //
+ FieldOrderType["CUSTOM_ORDER"] = "custom-order";
+ })(FieldOrderType = exports.FieldOrderType || (exports.FieldOrderType = {}));
+ //
+ var LineInterpolationMode;
+ (function (LineInterpolationMode) {
+ //
+ LineInterpolationMode["LIM_Linear"] = "lim-linear";
+ //
+ LineInterpolationMode["LIM_Step"] = "lim-step";
+ //
+ LineInterpolationMode["LIM_Jump"] = "lim-jump";
+ })(LineInterpolationMode = exports.LineInterpolationMode || (exports.LineInterpolationMode = {}));
+ //
+ var LineMarkerPosition;
+ (function (LineMarkerPosition) {
+ //
+ LineMarkerPosition["LMP_Left"] = "lmp-left";
+ //
+ LineMarkerPosition["LMP_Center"] = "lmp-center";
+ //
+ LineMarkerPosition["LMP_Right"] = "lmp-right";
+ })(LineMarkerPosition = exports.LineMarkerPosition || (exports.LineMarkerPosition = {}));
+ // Enumeration for the type of join connecting two tables
+ var SQLJoinType;
+ (function (SQLJoinType) {
+ //
+ SQLJoinType["SQL_InnerJoin"] = "sql-inner-join";
+ //
+ SQLJoinType["SQL_LeftJoin"] = "sql-left-join";
+ //
+ SQLJoinType["SQL_RightJoin"] = "sql-right-join";
+ //
+ SQLJoinType["SQL_FullJoin"] = "sql-full-join";
+ //
+ SQLJoinType["SQL_CrossJoin"] = "sql-cross-join";
+ })(SQLJoinType = exports.SQLJoinType || (exports.SQLJoinType = {}));
+ //
+ var FolderRole;
+ (function (FolderRole) {
+ //
+ FolderRole["FOLDER_DIMENSIONS"] = "dimensions";
+ //
+ FolderRole["FOLDER_MEASURES"] = "measure";
+ //
+ FolderRole["FOLDER_GROUPS"] = "groups";
+ //
+ FolderRole["FOLDER_PARAMETERS"] = "parameters";
+ })(FolderRole = exports.FolderRole || (exports.FolderRole = {}));
+ //
+ var FieldTypeIconSet;
+ (function (FieldTypeIconSet) {
+ //
+ FieldTypeIconSet["FT_SET_ALL"] = "all";
+ //
+ FieldTypeIconSet["FT_SET_CUBE_MEASURES"] = "cube-measures";
+ //
+ FieldTypeIconSet["FT_SET_CUBE_DIMENSIONS"] = "cube-dimensions";
+ })(FieldTypeIconSet = exports.FieldTypeIconSet || (exports.FieldTypeIconSet = {}));
+ //
+ var FieldPivotStrategy;
+ (function (FieldPivotStrategy) {
+ //
+ FieldPivotStrategy["PIVOT_ON_KEY"] = "pivot-on-key";
+ //
+ FieldPivotStrategy["PIVOT_ON_ALIAS"] = "pivot-on-alias";
+ })(FieldPivotStrategy = exports.FieldPivotStrategy || (exports.FieldPivotStrategy = {}));
+ //
+ var AliasType;
+ (function (AliasType) {
+ //
+ AliasType["ALIAS_NOTSET"] = "alias-not-set";
+ //
+ AliasType["ALIAS_BEGIN"] = "alias-begin";
+ //
+ AliasType["ALIAS_KEY"] = "alias-key";
+ //
+ AliasType["ALIAS_KEY_NAME"] = "alias-key-name";
+ //
+ AliasType["ALIAS_KEY_MEDNAME"] = "alias-key-medname";
+ //
+ AliasType["ALIAS_KEY_LONGNAME"] = "alias-key-longname";
+ //
+ AliasType["ALIAS_NAME"] = "alias-name";
+ //
+ AliasType["ALIAS_NAME_KEY"] = "alias-name-key";
+ //
+ AliasType["ALIAS_MEDNAME"] = "alias-medname";
+ //
+ AliasType["ALIAS_MEDNAME_KEY"] = "alias-medname-key";
+ //
+ AliasType["ALIAS_LONGNAME"] = "alias-longname";
+ //
+ AliasType["ALIAS_LONGNAME_KEY"] = "alias-longname-key";
+ //
+ AliasType["ALIAS_END"] = "alias-end";
+ })(AliasType = exports.AliasType || (exports.AliasType = {}));
+ //
+ var AliasTypes;
+ (function (AliasTypes) {
+ //
+ AliasTypes["MASK_ALIAS_KEY"] = "mask-alias-key";
+ //
+ AliasTypes["MASK_ALIAS_NAME"] = "mask-alias-name";
+ //
+ AliasTypes["MASK_ALIAS_MEDNAME"] = "mask-alias-medname";
+ //
+ AliasTypes["MASK_ALIAS_LONGNAME"] = "mask-alias-longname";
+ })(AliasTypes = exports.AliasTypes || (exports.AliasTypes = {}));
+ //
+ var FieldRole;
+ (function (FieldRole) {
+ //
+ FieldRole["ROLE_DIMENSION"] = "dimension";
+ //
+ FieldRole["ROLE_MEASURE"] = "measure";
+ //
+ FieldRole["ROLE_UNKNOWN"] = "unknown";
+ })(FieldRole = exports.FieldRole || (exports.FieldRole = {}));
+ //
+ var FieldType;
+ (function (FieldType) {
+ //
+ FieldType["TYPE_QUANTITATIVE"] = "quantitative";
+ //
+ FieldType["TYPE_ORDINAL"] = "ordinal";
+ //
+ FieldType["TYPE_NOMINAL"] = "nominal";
+ //
+ FieldType["TYPE_UNKNOWN"] = "unknown";
+ })(FieldType = exports.FieldType || (exports.FieldType = {}));
+ //
+ var DataSourceOrder;
+ (function (DataSourceOrder) {
+ //
+ DataSourceOrder["DSO_ALPHABETIC"] = "dso-alphabetic";
+ //
+ DataSourceOrder["DSO_ORDINAL"] = "dso-ordinal";
+ })(DataSourceOrder = exports.DataSourceOrder || (exports.DataSourceOrder = {}));
+ // Where the column comes from
+ var ColumnClass;
+ (function (ColumnClass) {
+ // A metadata column (O or Q Measures)
+ ColumnClass["COL_METADATA"] = "col-metadata";
+ // A physical column on the database
+ ColumnClass["COL_DATABASE"] = "col-database";
+ // A numberic bin (a special kind of calculated column)
+ ColumnClass["COL_NUMERICBIN"] = "col-numericbin";
+ // A Categorical bin (group)
+ ColumnClass["COL_CATEGORICALBIN"] = "col-categoricalbin";
+ // A column instance
+ ColumnClass["COL_INSTANCE"] = "col-instance";
+ // A (raw) mdx calculated column
+ ColumnClass["COL_MDXCALC"] = "col-mdxcalc";
+ // A user-defined calculated column, Tableau expression syntax
+ ColumnClass["COL_USERCALC"] = "col-usercalc";
+ // A column that would have been COL_DATABASE, but the underlying database column does not exist
+ ColumnClass["COL_DANGLING"] = "col-dangling";
+ // A column that contains local supplied data (e.g. Latitude)
+ ColumnClass["COL_LOCALDATA"] = "col-localdata";
+ // A column that contains a visual model attribute (e.g. PaneIndex, Color, ...)
+ ColumnClass["COL_VISUALDATA"] = "col-visualdata";
+ // A column that's a Group (a " Set " in UI terminology)
+ ColumnClass["COL_GROUP"] = "col-group";
+ })(ColumnClass = exports.ColumnClass || (exports.ColumnClass = {}));
+ //
+ var VTAggType;
+ (function (VTAggType) {
+ //
+ VTAggType["VTAGG_SUM"] = "sum";
+ //
+ VTAggType["VTAGG_AVG"] = "avg";
+ //
+ VTAggType["VTAGG_MIN"] = "min";
+ //
+ VTAggType["VTAGG_MAX"] = "max";
+ //
+ VTAggType["VTAGG_SERVER"] = "server";
+ //
+ VTAggType["VTAGG_NONE"] = "none";
+ //
+ VTAggType["VTAGG_DEFAULT"] = "default";
+ })(VTAggType = exports.VTAggType || (exports.VTAggType = {}));
+ //
+ var EntityType;
+ (function (EntityType) {
+ //
+ EntityType["NoEnumerationEntity"] = "no-enumeration-entity";
+ //
+ EntityType["DatabaseEntity"] = "database-entity";
+ //
+ EntityType["SchemaEntity"] = "schema-entity";
+ //
+ EntityType["TableEntity"] = "table-entity";
+ })(EntityType = exports.EntityType || (exports.EntityType = {}));
+ //
+ var PickEntitySearchType;
+ (function (PickEntitySearchType) {
+ //
+ PickEntitySearchType["PickEntitySearchType_StartsWith"] = "starts-with";
+ //
+ PickEntitySearchType["PickEntitySearchType_Contains"] = "contains";
+ //
+ PickEntitySearchType["PickEntitySearchType_ExactMatch"] = "exact-match";
+ //
+ PickEntitySearchType["PickEntitySearchType_DEFAULT"] = "default";
+ })(PickEntitySearchType = exports.PickEntitySearchType || (exports.PickEntitySearchType = {}));
+ // Parsing methods and structures.
+ var ExpressionOp;
+ (function (ExpressionOp) {
+ //
+ ExpressionOp["LogicalOr"] = "op-logical-or";
+ //
+ ExpressionOp["LogicalAnd"] = "op-logical-and";
+ //
+ ExpressionOp["LogicalNot"] = "op-logical-not";
+ //
+ ExpressionOp["BitwiseXOr"] = "op-bitwise-xor";
+ //
+ ExpressionOp["BitwiseOr"] = "op-bitwise-or";
+ //
+ ExpressionOp["Equals"] = "op-equals";
+ //
+ ExpressionOp["Greater"] = "op-greater";
+ //
+ ExpressionOp["Less"] = "op-less";
+ //
+ ExpressionOp["GEqual"] = "op-gequal";
+ //
+ ExpressionOp["LEqual"] = "op-lequal";
+ //
+ ExpressionOp["NEqual"] = "op-nequal";
+ //
+ ExpressionOp["Plus"] = "op-plus";
+ //
+ ExpressionOp["Minus"] = "op-minus";
+ //
+ ExpressionOp["BitwiseAnd"] = "op-bitwise-and";
+ //
+ ExpressionOp["Multiply"] = "op-multiply";
+ //
+ ExpressionOp["Divide"] = "op-divide";
+ //
+ ExpressionOp["Modulo"] = "op-modulo";
+ //
+ ExpressionOp["Power"] = "op-power";
+ //
+ ExpressionOp["Positive"] = "op-positive";
+ //
+ ExpressionOp["Negative"] = "op-negative";
+ //
+ ExpressionOp["BitwiseNot"] = "op-bitwise-not";
+ //
+ ExpressionOp["Column"] = "op-column";
+ //
+ ExpressionOp["String"] = "op-string";
+ //
+ ExpressionOp["Number"] = "op-number";
+ //
+ ExpressionOp["Date"] = "op-date";
+ //
+ ExpressionOp["Boolean"] = "op-boolean";
+ //
+ ExpressionOp["Funcall"] = "op-funcall";
+ //
+ ExpressionOp["LParen"] = "op-lparen";
+ //
+ ExpressionOp["RParen"] = "op-rparen";
+ //
+ ExpressionOp["Comma"] = "op-comma";
+ //
+ ExpressionOp["Ident"] = "op-ident";
+ //
+ ExpressionOp["Null"] = "op-null";
+ //
+ ExpressionOp["If"] = "op-if";
+ //
+ ExpressionOp["Elseif"] = "op-elseif";
+ //
+ ExpressionOp["Case"] = "op-case";
+ //
+ ExpressionOp["When"] = "op-when";
+ //
+ ExpressionOp["Then"] = "op-then";
+ //
+ ExpressionOp["Else"] = "op-else";
+ //
+ ExpressionOp["EndExpr"] = "op-endexpr";
+ //
+ ExpressionOp["Whitespace"] = "op-whitespace";
+ //
+ ExpressionOp["Comment"] = "op-comment";
+ //
+ ExpressionOp["LBrace"] = "op-lbrace";
+ //
+ ExpressionOp["RBrace"] = "op-rbrace";
+ //
+ ExpressionOp["Colon"] = "op-colon";
+ //
+ ExpressionOp["Bar"] = "op-bar";
+ //
+ ExpressionOp["Txtype"] = "op-txtype";
+ //
+ ExpressionOp["End"] = "op-end";
+ //
+ ExpressionOp["RBrackets"] = "op-rbrackets";
+ // used to represent invalid tokens
+ ExpressionOp["Invalid"] = "op-invalid";
+ })(ExpressionOp = exports.ExpressionOp || (exports.ExpressionOp = {}));
+ // tri-state bool
+ var TriBool;
+ (function (TriBool) {
+ //
+ TriBool["TB_Invalid"] = "tribool-invalid";
+ //
+ TriBool["TB_False"] = "tribool-false";
+ //
+ TriBool["TB_True"] = "tribool-true";
+ })(TriBool = exports.TriBool || (exports.TriBool = {}));
+ // table calc reference options set
+ var ReferenceOptionsSet;
+ (function (ReferenceOptionsSet) {
+ //
+ ReferenceOptionsSet["ROS_Relative"] = "reference-options-set-relative";
+ //
+ ReferenceOptionsSet["ROS_Fixed"] = "reference-options-set-fixed";
+ //
+ ReferenceOptionsSet["ROS_Parameter"] = "reference-options-set-parameter";
+ //
+ ReferenceOptionsSet["ROS_None"] = "reference-options-set-none";
+ })(ReferenceOptionsSet = exports.ReferenceOptionsSet || (exports.ReferenceOptionsSet = {}));
+ // widget state
+ var WidgetState;
+ (function (WidgetState) {
+ //
+ WidgetState["Hidden"] = "widget-state-hidden";
+ //
+ WidgetState["Disabled"] = "widget-state-disabled";
+ //
+ WidgetState["Enabled"] = "widget-state-enabled";
+ })(WidgetState = exports.WidgetState || (exports.WidgetState = {}));
+ // rank type
+ var RankType;
+ (function (RankType) {
+ //
+ RankType["Competition"] = "rank-type-competition";
+ //
+ RankType["ModifiedCompetition"] = "rank-type-modified-competition";
+ //
+ RankType["Dense"] = "rank-type-dense";
+ //
+ RankType["Unique"] = "rank-type-unique";
+ })(RankType = exports.RankType || (exports.RankType = {}));
+ //
+ var TableCalcCommandType;
+ (function (TableCalcCommandType) {
+ //
+ TableCalcCommandType["TableCalcCommandClear"] = "clear";
+ })(TableCalcCommandType = exports.TableCalcCommandType || (exports.TableCalcCommandType = {}));
+ //
+ var CalcNestingLevel;
+ (function (CalcNestingLevel) {
+ //
+ CalcNestingLevel["Primary"] = "primary";
+ // used only for type != TC_CUSTOM
+ CalcNestingLevel["Secondary"] = "secondary";
+ // used only for type == TC_CUSTOM
+ CalcNestingLevel["Nested"] = "nested";
+ })(CalcNestingLevel = exports.CalcNestingLevel || (exports.CalcNestingLevel = {}));
+ //
+ var DecimalMode;
+ (function (DecimalMode) {
+ //
+ DecimalMode["DecimalModeAutomatic"] = "automatic";
+ //
+ DecimalMode["DecimalModeManual"] = "manual";
+ })(DecimalMode = exports.DecimalMode || (exports.DecimalMode = {}));
+ //
+ var TableCalcOrderingType;
+ (function (TableCalcOrderingType) {
+ // Advanced...
+ TableCalcOrderingType["OTField"] = "field";
+ // Table (Across)
+ TableCalcOrderingType["OTRows"] = "rows";
+ // Table (Down)
+ TableCalcOrderingType["OTColumns"] = "columns";
+ // Table (Across then Down)
+ TableCalcOrderingType["OTTable"] = "table";
+ // Table (Down then Across)
+ TableCalcOrderingType["OTTableColumnPrecedence"] = "table-column-precedence";
+ // Pane Across
+ TableCalcOrderingType["OTRowInPane"] = "row-in-pane";
+ // Pane (Down)
+ TableCalcOrderingType["OTColumnInPane"] = "column-in-pane";
+ // Pane (Across then Down)
+ TableCalcOrderingType["OTPane"] = "pane";
+ // Pane (Down then Across)
+ TableCalcOrderingType["OTPaneColumnPrecedence"] = "pane-column-precedence";
+ // Cell
+ TableCalcOrderingType["OTCellInPane"] = "cell-in-pane";
+ })(TableCalcOrderingType = exports.TableCalcOrderingType || (exports.TableCalcOrderingType = {}));
+ //
+ var TableCalcSortMode;
+ (function (TableCalcSortMode) {
+ //
+ TableCalcSortMode["SM_Automatic"] = "sort-mode-automatic";
+ //
+ TableCalcSortMode["SM_Custom"] = "sort-mode-custom";
+ })(TableCalcSortMode = exports.TableCalcSortMode || (exports.TableCalcSortMode = {}));
+ //
+ var TableCalcTableCalcType;
+ (function (TableCalcTableCalcType) {
+ // none (used to initialize variables)
+ TableCalcTableCalcType["TC_NONE"] = "none";
+ // Running Total
+ TableCalcTableCalcType["TC_CUMULATIVE"] = "cumulative";
+ // Moving Calculation
+ TableCalcTableCalcType["TC_WINDOW"] = "window";
+ // Difference From
+ TableCalcTableCalcType["TC_DIFF"] = "diff";
+ // Percent Difference From
+ TableCalcTableCalcType["TC_PCTDIFF"] = "pct-diff";
+ // Percent From
+ TableCalcTableCalcType["TC_PCTVALUE"] = "pct-value";
+ // Percent Of Total
+ TableCalcTableCalcType["TC_PCTTOTAL"] = "pct-total";
+ // Rank
+ TableCalcTableCalcType["TC_RANK"] = "rank";
+ // Percentile
+ TableCalcTableCalcType["TC_PCTRANK"] = "pct-rank";
+ // Custom
+ TableCalcTableCalcType["TC_CUSTOM"] = "custom";
+ })(TableCalcTableCalcType = exports.TableCalcTableCalcType || (exports.TableCalcTableCalcType = {}));
+ //
+ var QuickTableCalcCommandType;
+ (function (QuickTableCalcCommandType) {
+ //
+ QuickTableCalcCommandType["QuickTableCalcCommandRunTotal"] = "run-total";
+ //
+ QuickTableCalcCommandType["QuickTableCalcCommandDifference"] = "difference";
+ //
+ QuickTableCalcCommandType["QuickTableCalcCommandPctDiff"] = "pct-diff";
+ //
+ QuickTableCalcCommandType["QuickTableCalcCommandPctTotal"] = "pct-total";
+ //
+ QuickTableCalcCommandType["QuickTableCalcCommandRank"] = "rank";
+ //
+ QuickTableCalcCommandType["QuickTableCalcCommandPctRank"] = "pct-rank";
+ //
+ QuickTableCalcCommandType["QuickTableCalcCommandMovingAvg"] = "moving-avg";
+ //
+ QuickTableCalcCommandType["QuickTableCalcCommandYtd"] = "ytd";
+ //
+ QuickTableCalcCommandType["QuickTableCalcCommandCgr"] = "cgr";
+ //
+ QuickTableCalcCommandType["QuickTableCalcCommandYOverY"] = "y-over-y";
+ //
+ QuickTableCalcCommandType["QuickTableCalcCommandYtdGrowth"] = "ytd-growth";
+ //
+ QuickTableCalcCommandType["QuickTableCalcCommandCustom"] = "custom";
+ })(QuickTableCalcCommandType = exports.QuickTableCalcCommandType || (exports.QuickTableCalcCommandType = {}));
+ //
+ var TableCalcAddressCommandType;
+ (function (TableCalcAddressCommandType) {
+ //
+ TableCalcAddressCommandType["TableCalcAddressCommandRel"] = "rel";
+ //
+ TableCalcAddressCommandType["TableCalcAddressCommandAbs"] = "abs";
+ //
+ TableCalcAddressCommandType["TableCalcAddressCommandParam"] = "param";
+ //
+ TableCalcAddressCommandType["TableCalcAddressCommandMore"] = "more";
+ })(TableCalcAddressCommandType = exports.TableCalcAddressCommandType || (exports.TableCalcAddressCommandType = {}));
+ // relative addressing
+ var TableCalcRelativeAddress;
+ (function (TableCalcRelativeAddress) {
+ //
+ TableCalcRelativeAddress["RelAddrFirst"] = "relative-address-first";
+ //
+ TableCalcRelativeAddress["RelAddrPrevious"] = "relative-address-previous";
+ //
+ TableCalcRelativeAddress["RelAddrNext"] = "relative-address-next";
+ //
+ TableCalcRelativeAddress["RelAddrLast"] = "relative-address-last";
+ })(TableCalcRelativeAddress = exports.TableCalcRelativeAddress || (exports.TableCalcRelativeAddress = {}));
+ //
+ var CategoricalBinItemType;
+ (function (CategoricalBinItemType) {
+ //
+ CategoricalBinItemType["Unbinned"] = "unbinned";
+ //
+ CategoricalBinItemType["BinMember"] = "categorical-bin-member";
+ //
+ CategoricalBinItemType["Bin"] = "categorical-bin";
+ })(CategoricalBinItemType = exports.CategoricalBinItemType || (exports.CategoricalBinItemType = {}));
+ // The class properties
+ var CredentialTypePropertiesFlag;
+ (function (CredentialTypePropertiesFlag) {
+ //
+ CredentialTypePropertiesFlag["None"] = "none";
+ //
+ CredentialTypePropertiesFlag["GenericAuthClass"] = "generic-auth-class";
+ //
+ CredentialTypePropertiesFlag["ProviderClass"] = "provider-class";
+ //
+ CredentialTypePropertiesFlag["DataConnectionClass"] = "data-connection-class";
+ })(CredentialTypePropertiesFlag = exports.CredentialTypePropertiesFlag || (exports.CredentialTypePropertiesFlag = {}));
+ // The connector type
+ var ConnectorType;
+ (function (ConnectorType) {
+ //
+ ConnectorType["Invalid"] = "invalid";
+ //
+ ConnectorType["WebDataConnector"] = "web-data-connector";
+ //
+ ConnectorType["CloudFileConnector"] = "cloud-file-connector";
+ //
+ ConnectorType["LegacyConnector"] = "legacy-connector";
+ })(ConnectorType = exports.ConnectorType || (exports.ConnectorType = {}));
+ //
+ var TablePillIcon;
+ (function (TablePillIcon) {
+ //
+ TablePillIcon["ListItem"] = "list-item";
+ //
+ TablePillIcon["Sheet"] = "sheet";
+ //
+ TablePillIcon["FoundTable"] = "found-table";
+ //
+ TablePillIcon["NamedRange"] = "named-range";
+ //
+ TablePillIcon["StoredProcedure"] = "stored-procedure";
+ })(TablePillIcon = exports.TablePillIcon || (exports.TablePillIcon = {}));
+ //
+ var JoinValidationError;
+ (function (JoinValidationError) {
+ //
+ JoinValidationError["JVE_NoError"] = "no-error";
+ //
+ JoinValidationError["JVE_EmptyClause"] = "empty-clause";
+ //
+ JoinValidationError["JVE_TypeMismatch"] = "type-mismatch";
+ //
+ JoinValidationError["JVE_InvalidField"] = "invalid-field";
+ //
+ JoinValidationError["JVE_BadClause"] = "bad-clause";
+ //
+ JoinValidationError["JVE_BadInputRelation"] = "bad-input-relation";
+ //
+ JoinValidationError["JVE_RepeatedFieldReferences"] = "repeated-field-references";
+ //
+ JoinValidationError["JVE_UnsupportedJoinType"] = "unsupported-join-type";
+ //
+ JoinValidationError["JVE_InvalidCalculation"] = "invalid-calculation";
+ //
+ JoinValidationError["JVE_NonSpatialType"] = "non-spatial-type";
+ //
+ JoinValidationError["JVE_NonSpatialComparison"] = "non-spatial-comp";
+ //
+ JoinValidationError["JVE_Unknown"] = "unknown";
+ })(JoinValidationError = exports.JoinValidationError || (exports.JoinValidationError = {}));
+ //
+ var ConnectionTypeEnum;
+ (function (ConnectionTypeEnum) {
+ // -d-s is used to force the enum generator to generate DS with capital letters in .cs just like the .cpp
+ ConnectionTypeEnum["InvalidDS"] = "invalid-d-s";
+ //
+ ConnectionTypeEnum["FileDS"] = "file-d-s";
+ //
+ ConnectionTypeEnum["ServerDS"] = "server-d-s";
+ //
+ ConnectionTypeEnum["InternetDS"] = "internet-d-s";
+ //
+ ConnectionTypeEnum["TableauServerDS"] = "tableau-server-d-s";
+ })(ConnectionTypeEnum = exports.ConnectionTypeEnum || (exports.ConnectionTypeEnum = {}));
+ //
+ var ConnectionErrorStage;
+ (function (ConnectionErrorStage) {
+ //
+ ConnectionErrorStage["Unknown"] = "unknown";
+ //
+ ConnectionErrorStage["CreateProtocolFailed"] = "create-protocol-failed";
+ //
+ ConnectionErrorStage["LoadMetadataFailed"] = "load-metadata-failed";
+ })(ConnectionErrorStage = exports.ConnectionErrorStage || (exports.ConnectionErrorStage = {}));
+ //
+ var SetTickOriginResult;
+ (function (SetTickOriginResult) {
+ //
+ SetTickOriginResult["Success"] = "set-tick-origin-success-result";
+ //
+ SetTickOriginResult["ParseFailure"] = "set-tick-origin-parse-failure-result";
+ //
+ SetTickOriginResult["ValueFailure"] = "set-tick-origin-value-failure-result";
+ })(SetTickOriginResult = exports.SetTickOriginResult || (exports.SetTickOriginResult = {}));
+ //
+ var SetTickSpacingResult;
+ (function (SetTickSpacingResult) {
+ //
+ SetTickSpacingResult["Success"] = "set-tick-spacing-success-result";
+ //
+ SetTickSpacingResult["ParseFailure"] = "set-tick-spacing-parse-failure-result";
+ //
+ SetTickSpacingResult["ValueFailure"] = "set-tick-spacing-value-failure-result";
+ })(SetTickSpacingResult = exports.SetTickSpacingResult || (exports.SetTickSpacingResult = {}));
+ // The result of setting one end of an axis range
+ var SetAxisRangeResult;
+ (function (SetAxisRangeResult) {
+ //
+ SetAxisRangeResult["Success"] = "set-axis-range-success-result";
+ //
+ SetAxisRangeResult["Failure"] = "set-axis-range-failure-result";
+ })(SetAxisRangeResult = exports.SetAxisRangeResult || (exports.SetAxisRangeResult = {}));
+ // The type of an axis' extent
+ var AxisExtentType;
+ (function (AxisExtentType) {
+ //
+ AxisExtentType["Automatic"] = "axis-extent-automatic";
+ //
+ AxisExtentType["Uniform"] = "axis-extent-uniform";
+ //
+ AxisExtentType["Independent"] = "axis-extent-independent";
+ //
+ AxisExtentType["Fixed"] = "axis-extent-fixed";
+ })(AxisExtentType = exports.AxisExtentType || (exports.AxisExtentType = {}));
+ // Enumeration of units tick spacing can take
+ var TickSpacingUnits;
+ (function (TickSpacingUnits) {
+ //
+ TickSpacingUnits["NoUnits"] = "no-units";
+ //
+ TickSpacingUnits["Years"] = "years";
+ //
+ TickSpacingUnits["Quarters"] = "quarters";
+ //
+ TickSpacingUnits["Months"] = "months";
+ //
+ TickSpacingUnits["Weeks"] = "weeks";
+ //
+ TickSpacingUnits["Days"] = "days";
+ //
+ TickSpacingUnits["Hours"] = "hours";
+ //
+ TickSpacingUnits["Minutes"] = "minutes";
+ //
+ TickSpacingUnits["Seconds"] = "seconds";
+ })(TickSpacingUnits = exports.TickSpacingUnits || (exports.TickSpacingUnits = {}));
+ // Enumeration of whether totals are included in or excluded from the color encoding
+ var TotalsInclusion;
+ (function (TotalsInclusion) {
+ // Totals included in color encoding
+ TotalsInclusion["IncludeTotals"] = "include-totals";
+ // Totals excluded from color encoding
+ TotalsInclusion["ExcludeTotals"] = "exclude-totals";
+ })(TotalsInclusion = exports.TotalsInclusion || (exports.TotalsInclusion = {}));
+ // How tick marks are being calculated
+ var TickMarkState;
+ (function (TickMarkState) {
+ //
+ TickMarkState["TicksAutomatic"] = "ticks-automatic";
+ //
+ TickMarkState["TicksManual"] = "ticks-manual";
+ //
+ TickMarkState["TicksNone"] = "ticks-None";
+ })(TickMarkState = exports.TickMarkState || (exports.TickMarkState = {}));
+ // Setting for type of axis range
+ var AxisRangeType;
+ (function (AxisRangeType) {
+ //
+ AxisRangeType["AutomaticRange"] = "automatic-range";
+ //
+ AxisRangeType["UniformRange"] = "uniform-range";
+ //
+ AxisRangeType["IndependentRange"] = "independent-range";
+ //
+ AxisRangeType["FixedRange"] = "fixed-range";
+ //
+ AxisRangeType["FixedMin"] = "fixed-min";
+ //
+ AxisRangeType["FixedMax"] = "fixed-max";
+ //
+ AxisRangeType["FixedMinUniformMax"] = "fixed-min-uniform-max";
+ //
+ AxisRangeType["FixedMinIndependentMax"] = "fixed-min-independent-max";
+ //
+ AxisRangeType["FixedMaxUniformMin"] = "fixed-max-uniform-min";
+ //
+ AxisRangeType["FixedMaxIndependentMin"] = "fixed-max-independent-min";
+ //
+ AxisRangeType["FixedRangeOrdinal"] = "fixed-range-ordinal";
+ })(AxisRangeType = exports.AxisRangeType || (exports.AxisRangeType = {}));
+ // represents type of widget on the toolbar of rich text editor
+ var RichTextEditorWidgetKey;
+ (function (RichTextEditorWidgetKey) {
+ //
+ RichTextEditorWidgetKey["None"] = "none";
+ //
+ RichTextEditorWidgetKey["FontSize"] = "fontsize";
+ //
+ RichTextEditorWidgetKey["FontName"] = "fontname";
+ //
+ RichTextEditorWidgetKey["FontColor"] = "color";
+ //
+ RichTextEditorWidgetKey["Bold"] = "bold";
+ //
+ RichTextEditorWidgetKey["Italic"] = "italic";
+ //
+ RichTextEditorWidgetKey["Underline"] = "underline";
+ //
+ RichTextEditorWidgetKey["AlignLeft"] = "justifyleft";
+ //
+ RichTextEditorWidgetKey["AlignCenter"] = "justifycenter";
+ //
+ RichTextEditorWidgetKey["AlignRight"] = "justifyright";
+ //
+ RichTextEditorWidgetKey["ClearFormatting"] = "clearformatting";
+ //
+ RichTextEditorWidgetKey["TableauKeywords"] = "tableaukeywords";
+ })(RichTextEditorWidgetKey = exports.RichTextEditorWidgetKey || (exports.RichTextEditorWidgetKey = {}));
+ //
+ var CellSizeChange;
+ (function (CellSizeChange) {
+ //
+ CellSizeChange["CSC_Taller"] = "taller";
+ //
+ CellSizeChange["CSC_Shorter"] = "shorter";
+ //
+ CellSizeChange["CSC_Wider"] = "wider";
+ //
+ CellSizeChange["CSC_Narrower"] = "narrower";
+ //
+ CellSizeChange["CSC_Bigger"] = "bigger";
+ //
+ CellSizeChange["CSC_Smaller"] = "smaller";
+ })(CellSizeChange = exports.CellSizeChange || (exports.CellSizeChange = {}));
+ //
+ var CellTypeEnum;
+ (function (CellTypeEnum) {
+ //
+ CellTypeEnum["CLT_Square"] = "square";
+ //
+ CellTypeEnum["CLT_Text"] = "text";
+ })(CellTypeEnum = exports.CellTypeEnum || (exports.CellTypeEnum = {}));
+ // represents type of formatting pres model
+ var TypeOfFormatItem;
+ (function (TypeOfFormatItem) {
+ //
+ TypeOfFormatItem["FT_FormatItem"] = "formatItem";
+ //
+ TypeOfFormatItem["FT_FormatContainer"] = "formatContainer";
+ //
+ TypeOfFormatItem["FT_FormatControl"] = "formatControl";
+ })(TypeOfFormatItem = exports.TypeOfFormatItem || (exports.TypeOfFormatItem = {}));
+ // represents type of formatting container
+ var TypeOfFormatContainer;
+ (function (TypeOfFormatContainer) {
+ //
+ TypeOfFormatContainer["FT_FormatPane"] = "formatPane";
+ //
+ TypeOfFormatContainer["FT_FormatSection"] = "formatSection";
+ //
+ TypeOfFormatContainer["FT_CollapsibleSection"] = "collapsibleSection";
+ //
+ TypeOfFormatContainer["FT_CompositeContainer"] = "compositeContainer";
+ //
+ TypeOfFormatContainer["FT_UnitContainer"] = "unitContainer";
+ //
+ TypeOfFormatContainer["FT_Tab"] = "tab";
+ //
+ TypeOfFormatContainer["FT_TabGroup"] = "tabGroup";
+ })(TypeOfFormatContainer = exports.TypeOfFormatContainer || (exports.TypeOfFormatContainer = {}));
+ // represents type of formatting control
+ var TypeOfFormatControl;
+ (function (TypeOfFormatControl) {
+ //
+ TypeOfFormatControl["FT_None"] = "none";
+ //
+ TypeOfFormatControl["FT_NumericControl"] = "numeric-control";
+ //
+ TypeOfFormatControl["FT_TextControl"] = "text-control";
+ //
+ TypeOfFormatControl["FT_ColorControl"] = "color-control";
+ //
+ TypeOfFormatControl["FT_SelectorControl"] = "selector-control";
+ //
+ TypeOfFormatControl["FT_ToggleControl"] = "toggle-control";
+ })(TypeOfFormatControl = exports.TypeOfFormatControl || (exports.TypeOfFormatControl = {}));
+ // represents type of formatting widget
+ var FormatWidgetKey;
+ (function (FormatWidgetKey) {
+ //
+ FormatWidgetKey["FWK_None"] = "none";
+ //
+ FormatWidgetKey["FWK_FontFamily"] = "fontFamily";
+ //
+ FormatWidgetKey["FWK_FontSize"] = "fontSize";
+ //
+ FormatWidgetKey["FWK_ColorSwatch"] = "colorSwatch";
+ //
+ FormatWidgetKey["FWK_Bold"] = "bold";
+ //
+ FormatWidgetKey["FWK_Italics"] = "italics";
+ //
+ FormatWidgetKey["FWK_Underline"] = "underline";
+ //
+ FormatWidgetKey["FWK_LineVisibility"] = "lineVisibility";
+ //
+ FormatWidgetKey["FWK_LinePattern"] = "linePattern";
+ //
+ FormatWidgetKey["FWK_LineSize"] = "lineSize";
+ //
+ FormatWidgetKey["FWK_NumberType"] = "numericType";
+ //
+ FormatWidgetKey["FWK_DecimalPlaces"] = "decimalPlaces";
+ //
+ FormatWidgetKey["FWK_ThousandsSeparator"] = "thousandsSeparator";
+ //
+ FormatWidgetKey["FWK_NumericUnits"] = "numericUnits";
+ })(FormatWidgetKey = exports.FormatWidgetKey || (exports.FormatWidgetKey = {}));
+ // represents identifier for each node in format pane
+ var FormatNodeIdentifier;
+ (function (FormatNodeIdentifier) {
+ //
+ FormatNodeIdentifier["Format_None_Key"] = "none";
+ //
+ FormatNodeIdentifier["Format_Workbook_Key"] = "workbook";
+ //
+ FormatNodeIdentifier["Format_Font_Key"] = "font";
+ //
+ FormatNodeIdentifier["Format_Color_Key"] = "color";
+ //
+ FormatNodeIdentifier["Format_Lines_Key"] = "lines";
+ //
+ FormatNodeIdentifier["Format_FontAll_Key"] = "font-all";
+ //
+ FormatNodeIdentifier["Format_FontAllControls_Key"] = "font-all-controls";
+ //
+ FormatNodeIdentifier["Format_FontMore_Key"] = "font-more";
+ //
+ FormatNodeIdentifier["Format_FontWorksheetTitles_Key"] = "worksheet-titles";
+ //
+ FormatNodeIdentifier["Format_FontToolTip_Key"] = "font-tooltip";
+ //
+ FormatNodeIdentifier["Format_FontWorksheet_Key"] = "font-worksheet";
+ //
+ FormatNodeIdentifier["Format_FontDashTitles_Key"] = "dash-titles";
+ //
+ FormatNodeIdentifier["Format_FontStoryTitles_Key"] = "story-titles";
+ //
+ FormatNodeIdentifier["Format_FontTitlesControls_Key"] = "titles-controls";
+ //
+ FormatNodeIdentifier["Format_FontTooltipControls_Key"] = "tooltip-controls";
+ //
+ FormatNodeIdentifier["Format_FontWorksheetControls_Key"] = "worksheet-controls";
+ //
+ FormatNodeIdentifier["Format_LineMore_Key"] = "line-more";
+ //
+ FormatNodeIdentifier["Format_LineGrid_Key"] = "line-grid";
+ //
+ FormatNodeIdentifier["Format_LineGridTabs_Key"] = "line-grid-tabs";
+ //
+ FormatNodeIdentifier["Format_LineZero_Key"] = "line-zero";
+ //
+ FormatNodeIdentifier["Format_LineZeroTabs_Key"] = "line-zero-tabs";
+ //
+ FormatNodeIdentifier["Format_LineAxisTick_Key"] = "line-axis-tick";
+ //
+ FormatNodeIdentifier["Format_LineAxisTickTabs_Key"] = "line-axis-tick-tabs";
+ //
+ FormatNodeIdentifier["Format_LineAxisRuler_Key"] = "line-axis-ruler";
+ //
+ FormatNodeIdentifier["Format_LineAxisRulerTabs_Key"] = "line-axis-ruler-tabs";
+ //
+ FormatNodeIdentifier["Format_LineHeaderDivider_Key"] = "line-header-divider";
+ //
+ FormatNodeIdentifier["Format_LineHeaderDividerTabs_Key"] = "line-header-divider-tabs";
+ //
+ FormatNodeIdentifier["Format_LinePaneDivider_Key"] = "line-paneDivider";
+ //
+ FormatNodeIdentifier["Format_LinePaneDividerTabs_Key"] = "line-paneDivider-tabs";
+ //
+ FormatNodeIdentifier["Format_LineGridAll_Key"] = "line-grid-all";
+ //
+ FormatNodeIdentifier["Format_LineGridRow_Key"] = "line-grid-row";
+ //
+ FormatNodeIdentifier["Format_LineGridColumn_Key"] = "line-grid-column";
+ //
+ FormatNodeIdentifier["Format_LineZeroAll_Key"] = "line-zero-all";
+ //
+ FormatNodeIdentifier["Format_LineZeroRow_Key"] = "line-zero-row";
+ //
+ FormatNodeIdentifier["Format_LineZeroColumn_Key"] = "line-zero-column";
+ //
+ FormatNodeIdentifier["Format_LineAxisTickAll_Key"] = "line-axis-tick-all";
+ //
+ FormatNodeIdentifier["Format_LineAxisTickRow_Key"] = "line-axis-tick-row";
+ //
+ FormatNodeIdentifier["Format_LineAxisTickColumn_Key"] = "line-axis-tick-column";
+ //
+ FormatNodeIdentifier["Format_LineAxisRulerAll_Key"] = "line-axis-ruler-all";
+ //
+ FormatNodeIdentifier["Format_LineAxisRulerRow_Key"] = "line-axis-ruler-row";
+ //
+ FormatNodeIdentifier["Format_LineAxisRulerColumn_Key"] = "line-axis-ruler-column";
+ //
+ FormatNodeIdentifier["Format_LineReference_Key"] = "line-reference";
+ //
+ FormatNodeIdentifier["Format_LineDrop_Key"] = "line-drop";
+ //
+ FormatNodeIdentifier["Format_LineTrend_Key"] = "line-trend";
+ //
+ FormatNodeIdentifier["Format_LineVisibility_Key"] = "line-visibility";
+ //
+ FormatNodeIdentifier["Format_LinePattern_Key"] = "line-pattern";
+ //
+ FormatNodeIdentifier["Format_LineWidth_Key"] = "line-width";
+ //
+ FormatNodeIdentifier["Format_LineColor_Key"] = "line-color";
+ //
+ FormatNodeIdentifier["Format_TickColor_Key"] = "tick-color";
+ //
+ FormatNodeIdentifier["Format_BorderPattern_Key"] = "border-pattern";
+ //
+ FormatNodeIdentifier["Format_BorderColor_Key"] = "border-color";
+ //
+ FormatNodeIdentifier["Format_DividerColor_Key"] = "divider-color";
+ //
+ FormatNodeIdentifier["Format_FontFamily_Key"] = "font-family-key";
+ //
+ FormatNodeIdentifier["Format_FontSize_Key"] = "font-size-key";
+ //
+ FormatNodeIdentifier["Format_Bold_Key"] = "bold-key";
+ //
+ FormatNodeIdentifier["Format_Italics_Key"] = "italics-key";
+ //
+ FormatNodeIdentifier["Format_Underline_Key"] = "underline-key";
+ //
+ FormatNodeIdentifier["Format_FontColor_Key"] = "font-color-key";
+ //
+ FormatNodeIdentifier["Format_Number_Container_Key"] = "number-container";
+ //
+ FormatNodeIdentifier["Format_Number_Type_Key"] = "number-container-type";
+ //
+ FormatNodeIdentifier["Format_Number_Units_Key"] = "number-container-units";
+ //
+ FormatNodeIdentifier["Format_Number_Decimal_Key"] = "number-container-decimal";
+ //
+ FormatNodeIdentifier["Format_Number_Thousands_Separator_Key"] = "number-container-thousands-separator";
+ //
+ FormatNodeIdentifier["Format_FontPickerMinimal_Key"] = "font-picker-minimal";
+ //
+ FormatNodeIdentifier["Format_FontPickerDefault_Key"] = "font-picker-default";
+ //
+ FormatNodeIdentifier["Format_LinePickerDefault_Key"] = "line-picker-default";
+ //
+ FormatNodeIdentifier["Format_LinePickerNoVis_Key"] = "line-picker-no-visibility";
+ //
+ FormatNodeIdentifier["Format_LineAxisTickPicker_Key"] = "line-axis-tick-picker";
+ })(FormatNodeIdentifier = exports.FormatNodeIdentifier || (exports.FormatNodeIdentifier = {}));
+ // Format prepended to format strings to specify type
+ var FormatCode;
+ (function (FormatCode) {
+ //
+ FormatCode["AutoFormat"] = "auto-format";
+ //
+ FormatCode["SystemLongDate"] = "system-long-date";
+ //
+ FormatCode["SystemShortDate"] = "system-short-date";
+ //
+ FormatCode["SystemNumber"] = "system-number";
+ //
+ FormatCode["SystemCurrency"] = "system-currency";
+ //
+ FormatCode["SystemTime"] = "system-time";
+ //
+ FormatCode["Custom"] = "custom";
+ //
+ FormatCode["CustomICU"] = "custom-icu";
+ //
+ FormatCode["CustomNumber"] = "custom-number";
+ //
+ FormatCode["CustomCurrency"] = "custom-currency";
+ //
+ FormatCode["CustomScientific"] = "custom-scientific";
+ //
+ FormatCode["CustomPercentage"] = "custom-percentage";
+ })(FormatCode = exports.FormatCode || (exports.FormatCode = {}));
+ // Units specified in a format string
+ var UnitsFormatEnum;
+ (function (UnitsFormatEnum) {
+ //
+ UnitsFormatEnum["UnitsFmtNone"] = "units-none";
+ //
+ UnitsFormatEnum["UnitsFmtThousands"] = "units-thousands";
+ //
+ UnitsFormatEnum["UnitsFmtMillions"] = "units-millions";
+ //
+ UnitsFormatEnum["UnitsFmtBillionsEnglish"] = "units-billions-english";
+ //
+ UnitsFormatEnum["UnitsFmtBillionsStandard"] = "units-billions-standard";
+ })(UnitsFormatEnum = exports.UnitsFormatEnum || (exports.UnitsFormatEnum = {}));
+ // represents the color swatch that will be used in the ColorControlPresModel
+ var ColorSwatchType;
+ (function (ColorSwatchType) {
+ //
+ ColorSwatchType["CST_Dark"] = "dark-swatch";
+ //
+ ColorSwatchType["CST_Light"] = "light-swatch";
+ })(ColorSwatchType = exports.ColorSwatchType || (exports.ColorSwatchType = {}));
+ // represents the type of a style picker, affecting the preview rendering and, possibly, the layout
+ var PickerType;
+ (function (PickerType) {
+ //
+ PickerType["PT_None"] = "none";
+ //
+ PickerType["PT_Font"] = "font";
+ //
+ PickerType["PT_Line"] = "line";
+ //
+ PickerType["PT_Number"] = "number";
+ })(PickerType = exports.PickerType || (exports.PickerType = {}));
+ //
+ var UpdateScope;
+ (function (UpdateScope) {
+ //
+ UpdateScope["US_Worksheet"] = "worksheet";
+ //
+ UpdateScope["US_Dashboard"] = "dashboard";
+ //
+ UpdateScope["US_QuickFilters"] = "quick-filters";
+ //
+ UpdateScope["US_Story"] = "story";
+ })(UpdateScope = exports.UpdateScope || (exports.UpdateScope = {}));
+ //
+ var ParameterCtrlTypesDisplayMode;
+ (function (ParameterCtrlTypesDisplayMode) {
+ //
+ ParameterCtrlTypesDisplayMode["MODE_TYPE_IN"] = "type_in";
+ //
+ ParameterCtrlTypesDisplayMode["MODE_COMPACT_LIST"] = "compact";
+ //
+ ParameterCtrlTypesDisplayMode["MODE_LIST"] = "list";
+ //
+ ParameterCtrlTypesDisplayMode["MODE_SLIDER"] = "slider";
+ //
+ ParameterCtrlTypesDisplayMode["MODE_DATETIME"] = "datetime";
+ })(ParameterCtrlTypesDisplayMode = exports.ParameterCtrlTypesDisplayMode || (exports.ParameterCtrlTypesDisplayMode = {}));
+ // flags for display options
+ var ParameterCtrlTypesDisplayFlag;
+ (function (ParameterCtrlTypesDisplayFlag) {
+ //
+ ParameterCtrlTypesDisplayFlag["DISPLAY_CUSTOM_TITLE"] = "custom_title";
+ //
+ ParameterCtrlTypesDisplayFlag["DISPLAY_HIDE_SLIDER_SLIDER"] = "hide_slider_slider";
+ //
+ ParameterCtrlTypesDisplayFlag["DISPLAY_HIDE_SLIDER_READOUT"] = "hide_slider_readout";
+ //
+ ParameterCtrlTypesDisplayFlag["DISPLAY_HIDE_SLIDER_BUTTONS"] = "hide_slider_buttons";
+ })(ParameterCtrlTypesDisplayFlag = exports.ParameterCtrlTypesDisplayFlag || (exports.ParameterCtrlTypesDisplayFlag = {}));
+ // The follow supports 1024 custom palettes, each with 4m shapes. Encoding is palette << PaletteShift | shape.
+ var ShapeEncodeConstants;
+ (function (ShapeEncodeConstants) {
+ // Shift value for palette
+ ShapeEncodeConstants["EncodePaletteShift"] = "paletteShift";
+ // Mask for getting palette from encoded value. (Then shift down)
+ ShapeEncodeConstants["EncodePaletteMask"] = "paletteMask";
+ // Mask for getting shape from encoded value
+ ShapeEncodeConstants["EncodeShapeMask"] = "shapeMask";
+ })(ShapeEncodeConstants = exports.ShapeEncodeConstants || (exports.ShapeEncodeConstants = {}));
+ //
+ var ShapeType;
+ (function (ShapeType) {
+ //
+ ShapeType["ShapeCircle"] = "circle";
+ //
+ ShapeType["ShapeSquare"] = "square";
+ //
+ ShapeType["ShapePlus"] = "plus";
+ //
+ ShapeType["ShapeTimes"] = "times";
+ //
+ ShapeType["ShapeAsterisk"] = "asterisk";
+ //
+ ShapeType["ShapeDiamond"] = "diamond";
+ //
+ ShapeType["ShapeTriangle"] = "triangle";
+ //
+ ShapeType["ShapeDownTriangle"] = "down-triangle";
+ //
+ ShapeType["ShapeLeftTriangle"] = "left-triangle";
+ //
+ ShapeType["ShapeRightTriangle"] = "right-triangle";
+ //
+ ShapeType["MaxAllShapes"] = "invalid";
+ })(ShapeType = exports.ShapeType || (exports.ShapeType = {}));
+ //
+ var ShapePalette;
+ (function (ShapePalette) {
+ // built-in palette
+ ShapePalette["ShapePaletteFilled"] = "filled";
+ // custom palettes
+ ShapePalette["ShapePaletteCustom1"] = "custom1";
+ //
+ ShapePalette["ShapePaletteCustom2"] = "custom2";
+ //
+ ShapePalette["ShapePaletteCustom3"] = "custom3";
+ //
+ ShapePalette["ShapePaletteCustom4"] = "custom4";
+ //
+ ShapePalette["ShapePaletteCustom5"] = "custom5";
+ //
+ ShapePalette["ShapePaletteCustom6"] = "custom6";
+ //
+ ShapePalette["ShapePaletteCustom7"] = "custom7";
+ //
+ ShapePalette["ShapePaletteCustom8"] = "custom8";
+ //
+ ShapePalette["ShapePaletteCustom9"] = "custom9";
+ //
+ ShapePalette["ShapePaletteCustom10"] = "custom10";
+ //
+ ShapePalette["ShapePaletteCustom11"] = "custom11";
+ // and so on...
+ ShapePalette["ShapePaletteCustom12"] = "custom12";
+ //
+ ShapePalette["ShapePaletteHidden"] = "hidden";
+ })(ShapePalette = exports.ShapePalette || (exports.ShapePalette = {}));
+ // ShapeType and palette mapped into a single value. This enum depends on ShapeType and the implementation of ShapeManager::IntEncode.
+ var ShapeID;
+ (function (ShapeID) {
+ //
+ ShapeID["ShapeIDCircle"] = "shapeIDCircle";
+ //
+ ShapeID["ShapeIDSquare"] = "shapeIDSquare";
+ //
+ ShapeID["ShapeIDPlus"] = "shapeIDPlus";
+ //
+ ShapeID["ShapeIDTimes"] = "shapeIDTimes";
+ //
+ ShapeID["ShapeIDAsterisk"] = "shapeIDAsterisk";
+ //
+ ShapeID["ShapeIDDiamond"] = "shapeIDDiamond";
+ //
+ ShapeID["ShapeIDTriangle"] = "shapeIDTriangle";
+ //
+ ShapeID["ShapeIDDownTriangle"] = "shapeIDDownTriangle";
+ //
+ ShapeID["ShapeIDLeftTriangle"] = "shapeIDLeftTriangle";
+ //
+ ShapeID["ShapeIDRightTriangle"] = "shapeIDRightTriangle";
+ //
+ ShapeID["ShapeIDFilledCircle"] = "shapeIDFilledCircle";
+ //
+ ShapeID["ShapeIDFilledSquare"] = "shapeIDFilledSquare";
+ //
+ ShapeID["ShapeIDFilledPlus"] = "shapeIDFilledPlus";
+ //
+ ShapeID["ShapeIDFilledTimes"] = "shapeIDFilledTimes";
+ //
+ ShapeID["ShapeIDFilledStar"] = "shapeIDFilledStar";
+ //
+ ShapeID["ShapeIDFilledDiamond"] = "shapeIDFilledDiamond";
+ //
+ ShapeID["ShapeIDFilledTriangle"] = "shapeIDFilledTriangle";
+ //
+ ShapeID["ShapeIDFilledDownTriangle"] = "shapeIDFilledDownTriangle";
+ //
+ ShapeID["ShapeIDFilledLeftTriangle"] = "shapeIDFilledLeftTriangle";
+ //
+ ShapeID["ShapeIDFilledRightTriangle"] = "shapeIDFilledRightTriangle";
+ // 0+(ShapePaletteHidden< -1;
+ });
+ // Create a mapping of which index in the data dictionary our columns are in
+ var columnIndices = columns.map(function (vizDataColumn) {
+ // The columnIndex is in the same position as the paneIndex
+ var paneIndex = vizDataColumn.paneIndices.indexOf(i);
+ var columnIndex = vizDataColumn.columnIndices[paneIndex];
+ return columnIndex;
+ });
+ // Get the data for the pane we are processing
+ var vizPane = vizData.paneColumnsData.paneColumnsList[i];
+ if (vizPane.vizPaneColumns.length !== columns.length) {
+ throw new Error('Malformed data table');
+ }
+ var headers = new Array();
+ var rows = new Array();
+ // Column 0 will be the tuple id column. We can use this as a counter for how many rows we have
+ var tupleIds = vizPane.vizPaneColumns[0].tupleIds;
+ var marks = new Array();
+ for (var tupleIndex = 0; tupleIndex < tupleIds.length; tupleIndex++) {
+ // TODO Need to revaluate the place of this logic. If it turns out that we need a separate command
+ // call to get the marks info, then this logic should not be here but instead in a layer above somewhere
+ var mark = {
+ type: api_internal_contract_1.MarkType.Bar,
+ color: 'red',
+ tupleId: tupleIds[tupleIndex],
+ };
+ marks.push(mark);
+ // We will have 1 less value in this row since there's the tupleId column
+ var cells = new Array(vizPane.vizPaneColumns.length - 1);
+ for (var j = 1 /* skip the first which is tuple ids */; j < vizPane.vizPaneColumns.length; j++) {
+ // Next, we need to figure out which column we are reading data for
+ var column = columns[columnIndices[j]];
+ var vizPaneColumnData = vizPane.vizPaneColumns[j];
+ // Define the header when we are processing the first row
+ if (tupleIndex === 0) {
+ var header = {
+ dataType: EnumMappings_1.PresLayerToApiEnumMappings.dataType.convert(column.dataType),
+ fieldName: column.fn,
+ isReferenced: true,
+ index: j - 1,
+ fieldCaption: column.fieldCaption
+ };
+ headers.push(header);
+ }
+ var value = UnderlyingDataConverter_1.UnderlyingDataConverter.lookupValueFromDictionary(dataDictionary, column.dataType, vizPaneColumnData.valueIndices[tupleIndex]);
+ var aliasValue = UnderlyingDataConverter_1.UnderlyingDataConverter.lookupValueFromDictionary(dataDictionary, column.dataType, vizPaneColumnData.aliasIndices[tupleIndex]) || '';
+ var formattedValue = aliasValue; // TODO - Figure out how to use the formatStrings
+ var dataCell = {
+ value: value,
+ formattedValue: formattedValue,
+ aliasedValue: aliasValue
+ };
+ // Add our cell to this row
+ cells[j - 1] = dataCell;
+ }
+ rows.push(cells);
+ }
+ var dataTable = {
+ dataTable: rows,
+ headers: headers,
+ marks: marks
+ };
+ result.push(dataTable);
+ };
+ // The data model for the VizDataPresModel is a little strange, so this parsing takes some time to figure out.
+ // There can be multiple panes of data, so we must go through them one at a time to create data tables
+ for (var i = 0; i < vizData.paneColumnsData.paneColumnsList.length; i++) {
+ _loop_1(i);
+ }
+ return result;
+ };
+ return ActiveMarksDataConverter;
+ }());
+ exports.ActiveMarksDataConverter = ActiveMarksDataConverter;
+
+
+/***/ },
+/* 83 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var Enums = __webpack_require__(80);
+ var EnumMappings_1 = __webpack_require__(79);
+ /**
+ * Contains static helper methods for converting from an underlying data pres model into the api representation.
+ * Most of the code is a direct port from ApiUnderlyingDataHandler.cs
+ * https://opengrok/source/xref/teams_near/workgroup/vqlweb/scriptsharp/src/UI/Api/ApiUnderlyingDataHandler.cs
+ */
+ var UnderlyingDataConverter = (function () {
+ function UnderlyingDataConverter() {
+ }
+ UnderlyingDataConverter.lookupValueFromDictionary = function (dataDictionary, dt, index) {
+ if (index < 0) {
+ // per cl 280396 / bugzid 81197 negative data value index means that it is special
+ dt = Enums.DataType.DT_STRING;
+ index = -index - 1;
+ }
+ var result = null;
+ var rawValue = UnderlyingDataConverter.getRawValue(dataDictionary, dt, index);
+ if (rawValue !== null) {
+ result = rawValue.toString();
+ }
+ return result;
+ };
+ /* tslint:disable-next-line:no-any */
+ UnderlyingDataConverter.getRawValue = function (dataDictionary, dt, index) {
+ if (!dataDictionary.dataSegments) {
+ return null;
+ }
+ for (var _i = 0, _a = Object.keys(dataDictionary.dataSegments); _i < _a.length; _i++) {
+ var key = _a[_i];
+ var dataSegment = dataDictionary.dataSegments[key];
+ for (var _b = 0, _c = dataSegment.dataColumns; _b < _c.length; _b++) {
+ var dataColumn = _c[_b];
+ if (!dataColumn || dataColumn.dataType !== dt) {
+ continue;
+ }
+ if (index < dataColumn.dataValues.length) {
+ return dataColumn.dataValues[index];
+ }
+ index -= dataColumn.dataValues.length;
+ break;
+ }
+ }
+ return null;
+ };
+ UnderlyingDataConverter.buildDataTable = function (dataDictionary, columns) {
+ var result = {
+ dataTable: UnderlyingDataConverter.buildTable(dataDictionary, columns),
+ headers: columns.map(function (c, i) { return UnderlyingDataConverter.buildColumnModel(c, i); })
+ };
+ return result;
+ };
+ UnderlyingDataConverter.buildUnderlyingDataTable = function (isSummary, underlyingDataTable) {
+ var result = {
+ data: UnderlyingDataConverter.buildDataTable(underlyingDataTable.dataDictionary, underlyingDataTable.underlyingDataTableColumns),
+ isSummary: isSummary
+ };
+ return result;
+ };
+ UnderlyingDataConverter.buildActiveMarksTable = function (dataDictionary, vizData) {
+ throw new Error();
+ };
+ UnderlyingDataConverter.buildColumnModel = function (column, index) {
+ return {
+ dataType: EnumMappings_1.PresLayerToApiEnumMappings.dataType.convert(column.dataType),
+ fieldName: column.fn,
+ fieldCaption: column.fieldCaption,
+ isReferenced: !!column.isReferenced,
+ index: index
+ };
+ };
+ UnderlyingDataConverter.buildTable = function (dataDictionary, columns) {
+ if (columns.length === 0) {
+ return new Array();
+ }
+ var rowCount = columns[0].formatValIdxs.length;
+ var columnCount = columns.length;
+ var result = new Array(rowCount);
+ // Initialize all of our rows
+ for (var rowIndex = 0; rowIndex < rowCount; rowIndex++) {
+ result[rowIndex] = new Array(columnCount);
+ }
+ // Go through column-by-column and convert the values
+ for (var columnIndex = 0; columnIndex < columnCount; columnIndex++) {
+ var column = columns[columnIndex];
+ for (var rowIndex = 0; rowIndex < rowCount; rowIndex++) {
+ var formattedValue = UnderlyingDataConverter.lookupValueFromDictionary(dataDictionary, Enums.DataType.DT_STRING, column.formatValIdxs[rowIndex]);
+ if (formattedValue === null) {
+ throw new Error('formattedValue was null');
+ }
+ var value = {
+ value: UnderlyingDataConverter.lookupValueFromDictionary(dataDictionary, column.dataType, column.valueIndices[rowIndex]),
+ formattedValue: formattedValue,
+ aliasedValue: formattedValue
+ };
+ result[rowIndex][columnIndex] = value;
+ }
+ }
+ return result;
+ };
+ return UnderlyingDataConverter;
+ }());
+ exports.UnderlyingDataConverter = UnderlyingDataConverter;
+
+
+/***/ },
+/* 84 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var EnumMappings_1 = __webpack_require__(79);
+ /**
+ * Class containing helper methods for converting from ApiPresModels to their PresLayer equivalents
+ *
+ * @export
+ * @class ApiToPresLayerConverter
+ */
+ var ApiToPresLayerConverter = (function () {
+ function ApiToPresLayerConverter() {
+ }
+ ApiToPresLayerConverter.convertSheetPath = function (apiSheetPath) {
+ if (!apiSheetPath) {
+ throw new Error('sheetPath not defined');
+ }
+ var result = {
+ sheetName: apiSheetPath.sheetName,
+ isDashboard: apiSheetPath.isDashboard,
+ storyboard: apiSheetPath.storyboard || '',
+ flipboardZoneId: apiSheetPath.flipboardZoneID || 0,
+ storyPointId: apiSheetPath.storyPointID || 0,
+ };
+ return result;
+ };
+ ApiToPresLayerConverter.convertExtensionLocator = function (apiExtensionLocator) {
+ var result = {
+ addInInstanceId: apiExtensionLocator.instanceId,
+ sheetPath: ApiToPresLayerConverter.convertSheetPath(apiExtensionLocator.dashboardPath)
+ };
+ return result;
+ };
+ ApiToPresLayerConverter.convertVisualId = function (apiVisualid) {
+ var result = {
+ worksheet: apiVisualid.worksheet,
+ dashboard: apiVisualid.dashboard,
+ storyboard: apiVisualid.storyboard,
+ storyPointId: apiVisualid.storyPointID,
+ flipboardZoneId: apiVisualid.flipboardZoneID
+ };
+ return result;
+ };
+ ApiToPresLayerConverter.convertVisualIdToWorksheet = function (apiVisualId) {
+ return apiVisualId.worksheet;
+ };
+ ApiToPresLayerConverter.convertVisualIdToDashboard = function (apiVisualId) {
+ return apiVisualId.dashboard || '';
+ };
+ ApiToPresLayerConverter.convertFilterValues = function (filterValues) {
+ if (filterValues.length === 0) {
+ // platform code expects an empty string for clearing filter values
+ return [''];
+ }
+ return filterValues;
+ };
+ ApiToPresLayerConverter.convertFilterType = function (filterUpdateType) {
+ return EnumMappings_1.ApiToPresLayerEnumMappings.filterUpdateType.convert(filterUpdateType);
+ };
+ ApiToPresLayerConverter.ConvertNullOption = function (nullOption) {
+ return EnumMappings_1.ApiToPresLayerEnumMappings.nullOption.convert(nullOption);
+ };
+ ApiToPresLayerConverter.ConvertFilterDomainType = function (filterDomainType) {
+ return EnumMappings_1.ApiToPresLayerEnumMappings.filterDomainType.convert(filterDomainType);
+ };
+ return ApiToPresLayerConverter;
+ }());
+ exports.ApiToPresLayerConverter = ApiToPresLayerConverter;
+
+
+/***/ },
+/* 85 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var api_internal_contract_1 = __webpack_require__(69);
+ var Enums_1 = __webpack_require__(80);
+ var EnumMappings_1 = __webpack_require__(79);
+ var PresLayerToApiConverter_1 = __webpack_require__(77);
+ var FiltersConverter = (function () {
+ function FiltersConverter() {
+ }
+ FiltersConverter.convertFiltersPresModel = function (filterPms) {
+ var filters = [];
+ filterPms.forEach(function (filterPm) {
+ switch (filterPm.filterType) {
+ case Enums_1.FilterType.FLTR_Categorical: {
+ filters.push(FiltersConverter.convertCategoricalFilterPresModel(filterPm));
+ break;
+ }
+ case Enums_1.FilterType.FLTR_Quantitative: {
+ filters.push(FiltersConverter.convertQuantitativeFilterPresModel(filterPm));
+ break;
+ }
+ case Enums_1.FilterType.FLTR_RelativeDate: {
+ filters.push(FiltersConverter.convertRelativeDateFilterPresModel(filterPm));
+ break;
+ }
+ default:
+ return;
+ }
+ });
+ return filters;
+ };
+ FiltersConverter.convertCategoricalFilterPresModel = function (filterPm) {
+ var selectedValues = filterPm.categoricalFilterInfo.captionedFilterValueList.map(function (filterValue) {
+ return FiltersConverter.convertFilterValuePresModel(filterValue);
+ });
+ var filter = {
+ values: selectedValues,
+ isExclude: filterPm.categoricalFilterInfo.exclude,
+ filterType: api_internal_contract_1.FilterType.Categorical,
+ fieldCaption: filterPm.fieldCaption,
+ fieldName: filterPm.fn,
+ visualId: PresLayerToApiConverter_1.PresLayerToApiConverter.convertVisualId(filterPm.visualIdPresModel)
+ };
+ return filter;
+ };
+ FiltersConverter.convertQuantitativeFilterPresModel = function (filterPm) {
+ var minValue = FiltersConverter.convertFilterValuePresModel(filterPm.quantitativeFilterInfo.captionedRangeMin);
+ var maxValue = FiltersConverter.convertFilterValuePresModel(filterPm.quantitativeFilterInfo.captionedRangeMax);
+ var filter = {
+ filterType: api_internal_contract_1.FilterType.Range,
+ fieldCaption: filterPm.fieldCaption,
+ fieldName: filterPm.fn,
+ visualId: PresLayerToApiConverter_1.PresLayerToApiConverter.convertVisualId(filterPm.visualIdPresModel),
+ min: minValue,
+ max: maxValue,
+ includeNullValues: FiltersConverter.convertIncludedNullValues(filterPm.quantitativeFilterInfo.included)
+ };
+ return filter;
+ };
+ FiltersConverter.convertRelativeDateFilterPresModel = function (filterPm) {
+ var anchorDateValue = FiltersConverter.convertFilterValuePresModel(filterPm.relativeDateFilterInfo.captionedAnchorDate);
+ var filter = {
+ filterType: api_internal_contract_1.FilterType.RelativeDate,
+ fieldCaption: filterPm.fieldCaption,
+ fieldName: filterPm.fn,
+ visualId: PresLayerToApiConverter_1.PresLayerToApiConverter.convertVisualId(filterPm.visualIdPresModel),
+ anchorDate: anchorDateValue,
+ periodType: EnumMappings_1.PresLayerToApiEnumMappings.dateStepPeriod.convert(filterPm.relativeDateFilterInfo.datePeriodType),
+ rangeType: EnumMappings_1.PresLayerToApiEnumMappings.dateRangeType.convert(filterPm.relativeDateFilterInfo.dateRangeType),
+ rangeN: filterPm.relativeDateFilterInfo.rangeN
+ };
+ return filter;
+ };
+ FiltersConverter.convertCategoricalDomain = function (domainPm) {
+ var domainValues = domainPm.captionedFilterValueList.map(function (filterValue) {
+ return FiltersConverter.convertFilterValuePresModel(filterValue);
+ });
+ return { values: domainValues };
+ };
+ FiltersConverter.convertQuantitativeDomain = function (domainPm) {
+ var minValue = FiltersConverter.convertFilterValuePresModel(domainPm.captionedRangeMin);
+ var maxValue = FiltersConverter.convertFilterValuePresModel(domainPm.captionedRangeMax);
+ return {
+ max: maxValue,
+ min: minValue
+ };
+ };
+ FiltersConverter.convertFilterValuePresModel = function (dvPM) {
+ /*tslint:disable-next-line:no-any */
+ var value;
+ switch (dvPM.dataType) {
+ case Enums_1.DataType.DT_BOOLEAN: {
+ value = Boolean(dvPM.dataValueStr);
+ break;
+ }
+ case Enums_1.DataType.DT_DATE: {
+ value = new Date(dvPM.dataValueStr);
+ break;
+ }
+ case Enums_1.DataType.DT_DATETIME: {
+ value = new Date(dvPM.dataValueStr);
+ break;
+ }
+ case Enums_1.DataType.DT_INTEGER: {
+ value = Number.parseInt(dvPM.dataValueStr);
+ break;
+ }
+ case Enums_1.DataType.DT_REAL: {
+ value = Number.parseFloat(dvPM.dataValueStr);
+ break;
+ }
+ // default to string
+ default: {
+ value = dvPM.dataValueStr;
+ break;
+ }
+ }
+ return {
+ value: value,
+ // TODO: no easy way of getting back aliased value from platform, will need to investigate further
+ aliasedValue: '',
+ formattedValue: dvPM.dataValueDisplayString
+ };
+ };
+ FiltersConverter.convertIncludedNullValues = function (includeNull) {
+ return (includeNull === Enums_1.FiltersQuantitativeIncludedValues.InRangeOrNull ||
+ includeNull === Enums_1.FiltersQuantitativeIncludedValues.All ||
+ includeNull === Enums_1.FiltersQuantitativeIncludedValues.Null);
+ };
+ return FiltersConverter;
+ }());
+ exports.FiltersConverter = FiltersConverter;
+
+
+/***/ },
+/* 86 */
+/***/ function(module, exports) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ /**
+ * Simple registry class which creates a mapping based on two keys.
+ *
+ * @export
+ * @class MappingRegistry
+ * @template TInputEnumType
+ * @template TOutputEnumType
+ * @template TMappingStorageType
+ */
+ var MappingRegistry = (function () {
+ function MappingRegistry() {
+ this._registry = {};
+ }
+ MappingRegistry.prototype.has = function (inputType, outputType) {
+ var key = this.makeKey(inputType, outputType);
+ if (!this._registry.hasOwnProperty(key)) {
+ return false;
+ }
+ if (!this._registry[key]) {
+ return false;
+ }
+ return true;
+ };
+ MappingRegistry.prototype.get = function (inputType, outputType) {
+ if (!this.has(inputType, outputType)) {
+ throw new Error('Missing requested mapping: ' + inputType + ' to ' + outputType);
+ }
+ var key = this.makeKey(inputType, outputType);
+ return this._registry[key];
+ };
+ MappingRegistry.prototype.addRegistration = function (inputType, outputType, storageItem) {
+ var key = this.makeKey(inputType, outputType);
+ // Add this item
+ this._registry[key] = storageItem;
+ };
+ /**
+ * Combines the two keys into a unique string
+ *
+ * @private
+ * @param {TInputEnumType} inputType
+ * @param {TOutputEnumType} outputType
+ * @returns {string}
+ * @memberof MappingRegistry
+ */
+ MappingRegistry.prototype.makeKey = function (inputType, outputType) {
+ var keyObj = { input: inputType, output: outputType };
+ return JSON.stringify(keyObj);
+ };
+ return MappingRegistry;
+ }());
+ exports.MappingRegistry = MappingRegistry;
+
+
+/***/ },
+/* 87 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var api_internal_contract_1 = __webpack_require__(69);
+ var EnumMappings_1 = __webpack_require__(79);
+ /**
+ * Contains logic for converting Parameter models into their equivalent Api versions
+ */
+ var ParametersDataConverter = (function () {
+ function ParametersDataConverter() {
+ }
+ ParametersDataConverter.convertParameterList = function (parameters) {
+ return parameters.map(ParametersDataConverter.convertParameter);
+ };
+ // Converts a single parameter.
+ // Rough port of https://opengrok/source/xref/dev_nessie/workgroup/vqlweb/scriptsharp/src/UI/Api/ApiParameterHandler.cs#95
+ ParametersDataConverter.convertParameter = function (param) {
+ var currentValue = ParametersDataConverter.convertAliasedDataValue(param.valueAlias, param.formattedValue);
+ var allowableValuesType = EnumMappings_1.PresLayerToApiEnumMappings.parameterTypesDomainType.convert(param.parameterDomainType);
+ var result = {
+ name: param.fieldCaption,
+ fieldName: param.parameterName,
+ dataType: EnumMappings_1.PresLayerToApiEnumMappings.dataType.convert(param.dataType),
+ currentValue: currentValue,
+ allowableValuesType: allowableValuesType
+ };
+ if (allowableValuesType === api_internal_contract_1.DomainRestrictionType.List) {
+ var allowableValues = new Array();
+ for (var i = 0; i < param.valuesAliases.length; i++) {
+ var adv = param.valuesAliases[i];
+ var formattedValue = param.formattedValues[i];
+ allowableValues.push(ParametersDataConverter.convertAliasedDataValue(adv, formattedValue));
+ }
+ result.allowableValues = allowableValues;
+ }
+ else if (allowableValuesType === api_internal_contract_1.DomainRestrictionType.Range) {
+ result.minValue = ParametersDataConverter.makeDataValue(param.valueMin, param.formattedMin);
+ result.maxValue = ParametersDataConverter.makeDataValue(param.valueMax, param.formattedMax);
+ result.stepSize = ParametersDataConverter.convertNumber(result.dataType, param.valueInc);
+ result.dateStepPeriod = EnumMappings_1.PresLayerToApiEnumMappings.dateStepPeriod.convert(param.datePeriodType, false);
+ }
+ else {
+ // Nothing to do in the case that all values are allowed
+ }
+ return result;
+ };
+ ParametersDataConverter.convertNumber = function (dataType, value) {
+ if (value) {
+ if (dataType === api_internal_contract_1.DataType.Int || dataType === api_internal_contract_1.DataType.Date || dataType === api_internal_contract_1.DataType.DateTime) {
+ return parseInt(value, 10);
+ }
+ else if (dataType === api_internal_contract_1.DataType.Float) {
+ return parseFloat(value);
+ }
+ }
+ return undefined;
+ };
+ /*tslint:disable-next-line:no-any */
+ ParametersDataConverter.makeDataValue = function (value, formattedValue, alias) {
+ var result = {
+ value: value,
+ formattedValue: formattedValue,
+ aliasedValue: alias || formattedValue
+ };
+ return result;
+ };
+ /*tslint:disable-next-line:no-any */
+ ParametersDataConverter.convertAliasedDataValue = function (adv, formattedValue) {
+ // AliasedDataValues are serialized in kind of a strange way from the platform code. They are output
+ // as an array of 2 values. The first is the actual value, the second is the alias. See AliasedDataValueSerializer::ToSerializer
+ if (!adv || !(adv instanceof Array)) {
+ throw new Error('Invalid aliased data value');
+ }
+ var value = adv[0];
+ var alias = adv.length < 2 ? undefined : adv[1];
+ return ParametersDataConverter.makeDataValue(value, formattedValue, alias);
+ };
+ return ParametersDataConverter;
+ }());
+ exports.ParametersDataConverter = ParametersDataConverter;
+
+
+/***/ },
+/* 88 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ /**
+ * This is your main. This is where you re-export everything you want to be publicly available.
+ *
+ * The build enforces that the file has the same name as the global variable that is exported.
+ */
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ Object.defineProperty(exports, "__esModule", { value: true });
+ __export(__webpack_require__(4));
+ __export(__webpack_require__(5));
+ __export(__webpack_require__(6));
+ __export(__webpack_require__(7));
+ __export(__webpack_require__(8));
+
+
+/***/ },
+/* 89 */
+/***/ function(module, exports) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ /**
+ * Implemenation of the PresentationLayer contract with a bit of extra information
+ * added to work with add-ins. Most work is delegated down to the interopObject which
+ * communicates directly with the c++ layer via QWebChannel
+ *
+ * @class AddInApiPresLayerImpl
+ * @implements {contract.PresentationLayer}
+ */
+ var AddInApiPresLayerImpl = (function () {
+ function AddInApiPresLayerImpl(_interopObject) {
+ var _this = this;
+ this._interopObject = _interopObject;
+ this._notificationHandlers = {};
+ if (_interopObject && _interopObject.OnNotification) {
+ _interopObject.OnNotification.connect(function (notification) {
+ _this.dispatchNotification(notification);
+ });
+ }
+ }
+ Object.defineProperty(AddInApiPresLayerImpl.prototype, "AddInInstanceInfo", {
+ /**
+ * Gets the instance info for this particular add-in from the c++ code
+ *
+ * @readonly
+ * @type {AddInInstancePresModel}
+ * @memberof AddInApiPresLayerImpl
+ */
+ get: function () {
+ return this._interopObject.addInInstanceInfo;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * Invokes a command using the pres-layer interop
+ *
+ * @template T - The expected return type
+ * @param {string} commandNamespace
+ * @param {string} commandName
+ * @param {object} params
+ * @returns {Promise}
+ * @memberof AddInApiPresLayerImpl
+ */
+ AddInApiPresLayerImpl.prototype.invokeCommand = function (commandNamespace, commandName, params) {
+ var _this = this;
+ return new Promise(function (resolve, reject) {
+ try {
+ commandNamespace = commandNamespace || 'tabdoc';
+ _this._interopObject.ExecuteCommand(commandNamespace, commandName, params, function (response) {
+ if (!response.Success) {
+ var msg = 'ExecuteCommand failed, with result:' + JSON.stringify(response.Result);
+ reject(new Error(msg));
+ }
+ else {
+ resolve(response.Result);
+ }
+ });
+ }
+ catch (err) {
+ reject(err);
+ }
+ });
+ };
+ // This implementation will registration a single instance of a notification handler with the Native C++ object,
+ // and implement multi-dispatch to the web objects from h.ere
+ AddInApiPresLayerImpl.prototype.registerNotificationHandler = function (eventId, handler) {
+ var _this = this;
+ if (eventId in this._notificationHandlers) {
+ this._notificationHandlers[eventId].push(handler);
+ }
+ else {
+ this._notificationHandlers[eventId] = [handler];
+ try {
+ this._interopObject.RegisterNotificationHandler(eventId);
+ }
+ catch (err) {
+ // console.log('RegisterNotificationHandler failed: ' + err);
+ }
+ }
+ return function () { return _this.removeNotificationHandler(eventId, handler); };
+ };
+ AddInApiPresLayerImpl.prototype.removeNotificationHandler = function (eventId, handler) {
+ var handlerList = this._notificationHandlers[eventId];
+ if (!handlerList) {
+ return;
+ }
+ var foundIndex = handlerList.indexOf(handler);
+ if (foundIndex >= 0) {
+ handlerList.splice(foundIndex, 1);
+ }
+ if (handlerList.length === 0) {
+ delete this._notificationHandlers[eventId];
+ }
+ };
+ AddInApiPresLayerImpl.prototype.dispatchNotification = function (notification) {
+ // console.log('received notification: ' + JSON.stringify(notification));
+ var eventId = notification.eventId;
+ var presModel = notification.presModel;
+ if (eventId in this._notificationHandlers) {
+ var handlers = this._notificationHandlers[eventId];
+ for (var i = handlers.length - 1; i >= 0; i--) {
+ handlers[i](presModel);
+ }
+ }
+ };
+ return AddInApiPresLayerImpl;
+ }());
+ exports.AddInApiPresLayerImpl = AddInApiPresLayerImpl;
+
+
+/***/ },
+/* 90 */
+/***/ function(module, exports) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ /**
+ * Implementation of the InternalApiDispatcher for desktop. Since this will run in the same
+ * frame as the ApiEventHandler, this class mostly just marshalls down to that implementation
+ *
+ * @export
+ * @class DesktopApiDispatcher
+ * @implements {InternalApiDispatcher}
+ */
+ var DesktopApiDispatcher = (function () {
+ function DesktopApiDispatcher(_apiEventHandler) {
+ var _this = this;
+ this._apiEventHandler = _apiEventHandler;
+ this._notificationHandlers = [];
+ this._apiEventHandler.setEventHandler(function (notificationId, model) {
+ _this._notificationHandlers.forEach(function (handler) { return handler({
+ notificationId: notificationId,
+ data: model
+ }); });
+ });
+ }
+ DesktopApiDispatcher.prototype.setVersionNumber = function (versionNumber) {
+ this._apiEventHandler.setVersionNumber(versionNumber);
+ };
+ DesktopApiDispatcher.prototype.execute = function (verb, parameters) {
+ // Just pass this right through to the ApiEventHandler
+ return this._apiEventHandler.execute(verb, parameters);
+ };
+ DesktopApiDispatcher.prototype.registerNotificationHandler = function (handler) {
+ this._notificationHandlers.push(handler);
+ };
+ DesktopApiDispatcher.prototype.unregisterNotificationHandler = function (handler) {
+ this._notificationHandlers = this._notificationHandlers.filter(function (h) { return h !== handler; });
+ };
+ return DesktopApiDispatcher;
+ }());
+ exports.DesktopApiDispatcher = DesktopApiDispatcher;
+
+
+/***/ },
+/* 91 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ __webpack_require__(92);
+ var qwebchannel_1 = __webpack_require__(93);
+ /**
+ * Initializes the QWebChannel contract and returns the pres layer interop object
+ *
+ * @returns {Promise}
+ */
+ function initializeWebChannelPresLayer() {
+ return new Promise(function (resolve, reject) {
+ try {
+ // tslint:disable-next-line
+ new qwebchannel_1.QWebChannel(qt.webChannelTransport, function (channel) {
+ // tslint:disable-next-line
+ var addInPresLayer = channel.objects['addInPresLayer'];
+ resolve(addInPresLayer);
+ });
+ }
+ catch (e) {
+ reject(e);
+ }
+ });
+ }
+ exports.initializeWebChannelPresLayer = initializeWebChannelPresLayer;
+
+
+/***/ },
+/* 92 */
+/***/ function(module, exports) {
+
+
+
+/***/ },
+/* 93 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /****************************************************************************
+ **
+ ** Copyright (C) 2015 The Qt Company Ltd.
+ ** Copyright (C) 2014 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Milian Wolff
+ ** Contact: http://www.qt.io/licensing/
+ **
+ ** This file is part of the QtWebChannel module of the Qt Toolkit.
+ **
+ ** $QT_BEGIN_LICENSE:LGPL21$
+ ** Commercial License Usage
+ ** Licensees holding valid commercial Qt licenses may use this file in
+ ** accordance with the commercial license agreement provided with the
+ ** Software or, alternatively, in accordance with the terms contained in
+ ** a written agreement between you and The Qt Company. For licensing terms
+ ** and conditions see http://www.qt.io/terms-conditions. For further
+ ** information use the contact form at http://www.qt.io/contact-us.
+ **
+ ** GNU Lesser General Public License Usage
+ ** Alternatively, this file may be used under the terms of the GNU Lesser
+ ** General Public License version 2.1 or version 3 as published by the Free
+ ** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+ ** LICENSE.LGPLv3 included in the packaging of this file. Please review the
+ ** following information to ensure the GNU Lesser General Public License
+ ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+ ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+ **
+ ** As a special exception, The Qt Company gives you certain additional
+ ** rights. These rights are described in The Qt Company LGPL Exception
+ ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+ **
+ ** $QT_END_LICENSE$
+ **
+ ****************************************************************************/
+
+ "use strict";
+
+ var QWebChannelMessageTypes = {
+ signal: 1,
+ propertyUpdate: 2,
+ init: 3,
+ idle: 4,
+ debug: 5,
+ invokeMethod: 6,
+ connectToSignal: 7,
+ disconnectFromSignal: 8,
+ setProperty: 9,
+ response: 10,
+ };
+
+ var QWebChannel = function(transport, initCallback)
+ {
+ if (typeof transport !== "object" || typeof transport.send !== "function") {
+ console.error("The QWebChannel expects a transport object with a send function and onmessage callback property." +
+ " Given is: transport: " + typeof(transport) + ", transport.send: " + typeof(transport.send));
+ return;
+ }
+
+ var channel = this;
+ this.transport = transport;
+
+ this.send = function(data)
+ {
+ if (typeof(data) !== "string") {
+ data = JSON.stringify(data);
+ }
+ channel.transport.send(data);
+ }
+
+ this.transport.onmessage = function(message)
+ {
+ var data = message.data;
+ if (typeof data === "string") {
+ data = JSON.parse(data);
+ }
+ switch (data.type) {
+ case QWebChannelMessageTypes.signal:
+ channel.handleSignal(data);
+ break;
+ case QWebChannelMessageTypes.response:
+ channel.handleResponse(data);
+ break;
+ case QWebChannelMessageTypes.propertyUpdate:
+ channel.handlePropertyUpdate(data);
+ break;
+ default:
+ console.error("invalid message received:", message.data);
+ break;
+ }
+ }
+
+ this.execCallbacks = {};
+ this.execId = 0;
+ this.exec = function(data, callback)
+ {
+ if (!callback) {
+ // if no callback is given, send directly
+ channel.send(data);
+ return;
+ }
+ if (channel.execId === Number.MAX_VALUE) {
+ // wrap
+ channel.execId = Number.MIN_VALUE;
+ }
+ if (data.hasOwnProperty("id")) {
+ console.error("Cannot exec message with property id: " + JSON.stringify(data));
+ return;
+ }
+ data.id = channel.execId++;
+ channel.execCallbacks[data.id] = callback;
+ channel.send(data);
+ };
+
+ this.objects = {};
+
+ this.handleSignal = function(message)
+ {
+ var object = channel.objects[message.object];
+ if (object) {
+ object.signalEmitted(message.signal, message.args);
+ } else {
+ console.warn("Unhandled signal: " + message.object + "::" + message.signal);
+ }
+ }
+
+ this.handleResponse = function(message)
+ {
+ if (!message.hasOwnProperty("id")) {
+ console.error("Invalid response message received: ", JSON.stringify(message));
+ return;
+ }
+ channel.execCallbacks[message.id](message.data);
+ delete channel.execCallbacks[message.id];
+ }
+
+ this.handlePropertyUpdate = function(message)
+ {
+ for (var i in message.data) {
+ var data = message.data[i];
+ var object = channel.objects[data.object];
+ if (object) {
+ object.propertyUpdate(data.signals, data.properties);
+ } else {
+ console.warn("Unhandled property update: " + data.object + "::" + data.signal);
+ }
+ }
+ channel.exec({type: QWebChannelMessageTypes.idle});
+ }
+
+ this.debug = function(message)
+ {
+ channel.send({type: QWebChannelMessageTypes.debug, data: message});
+ };
+
+ channel.exec({type: QWebChannelMessageTypes.init}, function(data) {
+ for (var objectName in data) {
+ var object = new QObject(objectName, data[objectName], channel);
+ }
+ // now unwrap properties, which might reference other registered objects
+ for (var objectName in channel.objects) {
+ channel.objects[objectName].unwrapProperties();
+ }
+ if (initCallback) {
+ initCallback(channel);
+ }
+ channel.exec({type: QWebChannelMessageTypes.idle});
+ });
+ };
+
+ function QObject(name, data, webChannel)
+ {
+ this.__id__ = name;
+ webChannel.objects[name] = this;
+
+ // List of callbacks that get invoked upon signal emission
+ this.__objectSignals__ = {};
+
+ // Cache of all properties, updated when a notify signal is emitted
+ this.__propertyCache__ = {};
+
+ var object = this;
+
+ // ----------------------------------------------------------------------
+
+ this.unwrapQObject = function(response)
+ {
+ if (response instanceof Array) {
+ // support list of objects
+ var ret = new Array(response.length);
+ for (var i = 0; i < response.length; ++i) {
+ ret[i] = object.unwrapQObject(response[i]);
+ }
+ return ret;
+ }
+ if (!response
+ || !response["__QObject*__"]
+ || response["id"] === undefined) {
+ return response;
+ }
+
+ var objectId = response.id;
+ if (webChannel.objects[objectId])
+ return webChannel.objects[objectId];
+
+ if (!response.data) {
+ console.error("Cannot unwrap unknown QObject " + objectId + " without data.");
+ return;
+ }
+
+ var qObject = new QObject( objectId, response.data, webChannel );
+ qObject.destroyed.connect(function() {
+ if (webChannel.objects[objectId] === qObject) {
+ delete webChannel.objects[objectId];
+ // reset the now deleted QObject to an empty {} object
+ // just assigning {} though would not have the desired effect, but the
+ // below also ensures all external references will see the empty map
+ // NOTE: this detour is necessary to workaround QTBUG-40021
+ var propertyNames = [];
+ for (var propertyName in qObject) {
+ propertyNames.push(propertyName);
+ }
+ for (var idx in propertyNames) {
+ delete qObject[propertyNames[idx]];
+ }
+ }
+ });
+ // here we are already initialized, and thus must directly unwrap the properties
+ qObject.unwrapProperties();
+ return qObject;
+ }
+
+ this.unwrapProperties = function()
+ {
+ for (var propertyIdx in object.__propertyCache__) {
+ object.__propertyCache__[propertyIdx] = object.unwrapQObject(object.__propertyCache__[propertyIdx]);
+ }
+ }
+
+ function addSignal(signalData, isPropertyNotifySignal)
+ {
+ var signalName = signalData[0];
+ var signalIndex = signalData[1];
+ object[signalName] = {
+ connect: function(callback) {
+ if (typeof(callback) !== "function") {
+ console.error("Bad callback given to connect to signal " + signalName);
+ return;
+ }
+
+ object.__objectSignals__[signalIndex] = object.__objectSignals__[signalIndex] || [];
+ object.__objectSignals__[signalIndex].push(callback);
+
+ if (!isPropertyNotifySignal && signalName !== "destroyed") {
+ // only required for "pure" signals, handled separately for properties in propertyUpdate
+ // also note that we always get notified about the destroyed signal
+ webChannel.exec({
+ type: QWebChannelMessageTypes.connectToSignal,
+ object: object.__id__,
+ signal: signalIndex
+ });
+ }
+ },
+ disconnect: function(callback) {
+ if (typeof(callback) !== "function") {
+ console.error("Bad callback given to disconnect from signal " + signalName);
+ return;
+ }
+ object.__objectSignals__[signalIndex] = object.__objectSignals__[signalIndex] || [];
+ var idx = object.__objectSignals__[signalIndex].indexOf(callback);
+ if (idx === -1) {
+ console.error("Cannot find connection of signal " + signalName + " to " + callback.name);
+ return;
+ }
+ object.__objectSignals__[signalIndex].splice(idx, 1);
+ if (!isPropertyNotifySignal && object.__objectSignals__[signalIndex].length === 0) {
+ // only required for "pure" signals, handled separately for properties in propertyUpdate
+ webChannel.exec({
+ type: QWebChannelMessageTypes.disconnectFromSignal,
+ object: object.__id__,
+ signal: signalIndex
+ });
+ }
+ }
+ };
+ }
+
+ /**
+ * Invokes all callbacks for the given signalname. Also works for property notify callbacks.
+ */
+ function invokeSignalCallbacks(signalName, signalArgs)
+ {
+ var connections = object.__objectSignals__[signalName];
+ if (connections) {
+ connections.forEach(function(callback) {
+ callback.apply(callback, signalArgs);
+ });
+ }
+ }
+
+ this.propertyUpdate = function(signals, propertyMap)
+ {
+ // update property cache
+ for (var propertyIndex in propertyMap) {
+ var propertyValue = propertyMap[propertyIndex];
+ object.__propertyCache__[propertyIndex] = propertyValue;
+ }
+
+ for (var signalName in signals) {
+ // Invoke all callbacks, as signalEmitted() does not. This ensures the
+ // property cache is updated before the callbacks are invoked.
+ invokeSignalCallbacks(signalName, signals[signalName]);
+ }
+ }
+
+ this.signalEmitted = function(signalName, signalArgs)
+ {
+ invokeSignalCallbacks(signalName, signalArgs);
+ }
+
+ function addMethod(methodData)
+ {
+ var methodName = methodData[0];
+ var methodIdx = methodData[1];
+ object[methodName] = function() {
+ var args = [];
+ var callback;
+ for (var i = 0; i < arguments.length; ++i) {
+ if (typeof arguments[i] === "function")
+ callback = arguments[i];
+ else
+ args.push(arguments[i]);
+ }
+
+ webChannel.exec({
+ "type": QWebChannelMessageTypes.invokeMethod,
+ "object": object.__id__,
+ "method": methodIdx,
+ "args": args
+ }, function(response) {
+ if (response !== undefined) {
+ var result = object.unwrapQObject(response);
+ if (callback) {
+ (callback)(result);
+ }
+ }
+ });
+ };
+ }
+
+ function bindGetterSetter(propertyInfo)
+ {
+ var propertyIndex = propertyInfo[0];
+ var propertyName = propertyInfo[1];
+ var notifySignalData = propertyInfo[2];
+ // initialize property cache with current value
+ // NOTE: if this is an object, it is not directly unwrapped as it might
+ // reference other QObject that we do not know yet
+ object.__propertyCache__[propertyIndex] = propertyInfo[3];
+
+ if (notifySignalData) {
+ if (notifySignalData[0] === 1) {
+ // signal name is optimized away, reconstruct the actual name
+ notifySignalData[0] = propertyName + "Changed";
+ }
+ addSignal(notifySignalData, true);
+ }
+
+ Object.defineProperty(object, propertyName, {
+ get: function () {
+ var propertyValue = object.__propertyCache__[propertyIndex];
+ if (propertyValue === undefined) {
+ // This shouldn't happen
+ console.warn("Undefined value in property cache for property \"" + propertyName + "\" in object " + object.__id__);
+ }
+
+ return propertyValue;
+ },
+ set: function(value) {
+ if (value === undefined) {
+ console.warn("Property setter for " + propertyName + " called with undefined value!");
+ return;
+ }
+ object.__propertyCache__[propertyIndex] = value;
+ webChannel.exec({
+ "type": QWebChannelMessageTypes.setProperty,
+ "object": object.__id__,
+ "property": propertyIndex,
+ "value": value
+ });
+ }
+ });
+
+ }
+
+ // ----------------------------------------------------------------------
+
+ data.methods.forEach(addMethod);
+
+ data.properties.forEach(bindGetterSetter);
+
+ data.signals.forEach(function(signal) { addSignal(signal, false); });
+
+ for (var name in data.enums) {
+ object[name] = data.enums[name];
+ }
+ }
+
+ //required for use with nodejs
+ if (true) {
+ module.exports = {
+ QWebChannel: QWebChannel
+ };
+ }
+
+
+/***/ }
+/******/ ])
+});
+;
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCAzYjA5NTk3MDU1ZDNiYjYxZjE0YSIsIndlYnBhY2s6Ly8vLi4vc3JjL01haW4udHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9FeHRlbnNpb25zQXBpLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9leHRlbnNpb25zLWFwaS9zcmMvSW50ZXJuYWwvRXh0ZW5zaW9uc0ltcGwudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1pbnRlcm5hbC1jb250cmFjdC9zcmMvQXBpSW50ZXJuYWxDb250cmFjdC50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWludGVybmFsLWNvbnRyYWN0L3NyYy9pbnRlcmZhY2UvRW51bXMudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1pbnRlcm5hbC1jb250cmFjdC9zcmMvaW50ZXJmYWNlL0ludGVybmFsQXBpRGlzcGF0Y2hlci50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWludGVybmFsLWNvbnRyYWN0L3NyYy9pbnRlcmZhY2UvTm90aWZpY2F0aW9ucy50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWludGVybmFsLWNvbnRyYWN0L3NyYy9pbnRlcmZhY2UvUGFyYW1ldGVycy50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWludGVybmFsLWNvbnRyYWN0L3NyYy9pbnRlcmZhY2UvVmVyYnMudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL0FwaVNoYXJlZC50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLXNoYXJlZC9zcmMvRXZlbnRMaXN0ZW5lck1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1BhcmFtZXRlci50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLXNoYXJlZC9zcmMvUG9pbnQudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1NpemUudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL01vZGVscy9HZXREYXRhTW9kZWxzLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9FeGNlcHRpb25zL1RhYmxlYXVFeGNlcHRpb25zLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9FdmVudHMvRmlsdGVyQ2hhbmdlZEV2ZW50LnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktZXh0ZXJuYWwtY29udHJhY3Qvc3JjL0FwaUV4dGVybmFsQ29udHJhY3QudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1leHRlcm5hbC1jb250cmFjdC9zcmMvRW51bXMudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL0V2ZW50cy9UYWJsZWF1V29ya3NoZWV0RXZlbnQudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL0V2ZW50cy9UYWJsZWF1U2hlZXRFdmVudC50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLXNoYXJlZC9zcmMvRXZlbnRzL1RhYmxlYXVFdmVudC50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLXNoYXJlZC9zcmMvRXZlbnRzL01hcmtzU2VsZWN0ZWRFdmVudC50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLXNoYXJlZC9zcmMvSW50ZXJuYWwvU2luZ2xlRXZlbnRNYW5hZ2VySW1wbC50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLXNoYXJlZC9zcmMvU2VydmljZXMvR2V0RGF0YVNlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL1JlZ2lzdGVyQWxsU2hhcmVkU2VydmljZXMudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL2ltcGwvRGF0YVNvdXJjZVNlcnZpY2VJbXBsLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9pbXBsL0ZpbHRlclNlcnZpY2VJbXBsLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktdXRpbHMvc3JjL0FwaVV0aWxzLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktdXRpbHMvc3JjL0VudW1Db252ZXJ0ZXIudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS11dGlscy9zcmMvUGFyYW0udHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL0VudW1NYXBwaW5ncy9FeHRlcm5hbFRvSW50ZXJuYWxFbnVtTWFwcGluZ3MudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL0VudW1NYXBwaW5ncy9JbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL01vZGVscy9GaWx0ZXJNb2RlbHMudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL1NlcnZpY2VSZWdpc3RyeS50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLXNoYXJlZC9zcmMvU2VydmljZXMvaW1wbC9HZXREYXRhU2VydmljZUltcGwudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL2ltcGwvTm90aWZpY2F0aW9uU2VydmljZUltcGwudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL2ltcGwvUGFyYW1ldGVyc1NlcnZpY2VJbXBsLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9JbnRlcm5hbC9QYXJhbWV0ZXJJbXBsLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9FdmVudHMvUGFyYW1ldGVyQ2hhbmdlZEV2ZW50LnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9pbXBsL1NlbGVjdGlvblNlcnZpY2VJbXBsLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9Nb2RlbHMvU2VsZWN0aW9uTW9kZWxzLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9leHRlbnNpb25zLWFwaS9zcmMvRGFzaGJvYXJkLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9leHRlbnNpb25zLWFwaS9zcmMvU2hlZXQudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9OYW1lc3BhY2VzL0Rhc2hib2FyZENvbnRlbnQudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9OYW1lc3BhY2VzL0Vudmlyb25tZW50LnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9leHRlbnNpb25zLWFwaS9zcmMvTmFtZXNwYWNlcy9TZXR0aW5ncy50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL1NlcnZpY2VzL1JlZ2lzdGVyQWxsRXh0ZW5zaW9uc1NlcnZpY2VzLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9leHRlbnNpb25zLWFwaS9zcmMvU2VydmljZXMvSW1wbC9Jbml0aWFsaXphdGlvblNlcnZpY2VJbXBsLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9leHRlbnNpb25zLWFwaS9zcmMvU2VydmljZXMvSW1wbC9TZXR0aW5nc1NlcnZpY2VJbXBsLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9leHRlbnNpb25zLWFwaS9zcmMvVmVyc2lvbk51bWJlci50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL0ludGVybmFsL0Rhc2hib2FyZEltcGwudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9EYXNoYm9hcmRPYmplY3QudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9Xb3Jrc2hlZXQudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9JbnRlcm5hbC9TaGVldEltcGwudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9JbnRlcm5hbC9TaGVldEluZm9JbXBsLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9leHRlbnNpb25zLWFwaS9zcmMvSW50ZXJuYWwvV29ya3NoZWV0SW1wbC50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL0RhdGFTb3VyY2UudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9JbnRlcm5hbC9EYXRhU291cmNlSW1wbC50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL0ludGVybmFsL0ZpZWxkSW1wbC50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL0ZpZWxkLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9leHRlbnNpb25zLWFwaS9zcmMvSW50ZXJuYWwvU2V0dGluZ3NJbXBsLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9leHRlbnNpb25zLWFwaS9zcmMvTmFtZXNwYWNlcy9FeHRlbnNpb25zLnRzIiwid2VicGFjazovLy8uLi9zcmMvRnJlbGFyZERlc2t0b3BCb290c3RyYXAudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1jb3JlL3NyYy9BcGlDb3JlLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9zcmMvQXBpRXZlbnRIYW5kbGVyLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9nZW4tc3JjL3ByZXNsYXllci9QYXJhbXMudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1jb3JlL3NyYy9tYXBwaW5ncy9Db21tYW5kTWFwcGluZ1JlZ2lzdHJ5RmFjdG9yeS50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWNvcmUvZ2VuLXNyYy9wcmVzbGF5ZXIvQ29tbWFuZElkcy50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWNvcmUvc3JjL21hcHBpbmdzL0NvbW1hbmRNYXBwaW5nUmVnaXN0cnkudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1jb3JlL3NyYy9tYXBwaW5ncy9Db21tYW5kUmVnaXN0cmF0aW9uLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9zcmMvbWFwcGluZ3MvRXZlbnRNYXBwaW5nUmVnaXN0cnlGYWN0b3J5LnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9nZW4tc3JjL3ByZXNsYXllci9FdmVudHMudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1jb3JlL3NyYy9tYXBwaW5ncy9QcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWNvcmUvc3JjL21hcHBpbmdzL0VudW1NYXBwaW5ncy50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWNvcmUvZ2VuLXNyYy9wcmVzbGF5ZXIvRW51bXMudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1jb3JlL3NyYy9tYXBwaW5ncy9QYXJhbWV0ZXJNYXBwaW5nUmVnaXN0cnlGYWN0b3J5LnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9zcmMvbWFwcGluZ3MvQWN0aXZlTWFya3NEYXRhQ29udmVydGVyLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9zcmMvbWFwcGluZ3MvVW5kZXJseWluZ0RhdGFDb252ZXJ0ZXIudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1jb3JlL3NyYy9tYXBwaW5ncy9BcGlUb1ByZXNMYXllckNvbnZlcnRlci50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWNvcmUvc3JjL21hcHBpbmdzL0ZpbHRlcnNDb252ZXJ0ZXIudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1jb3JlL3NyYy9tYXBwaW5ncy9NYXBwaW5nUmVnaXN0cnkudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1jb3JlL3NyYy9tYXBwaW5ncy9QYXJhbWV0ZXJzRGF0YUNvbnZlcnRlci50cyIsIndlYnBhY2s6Ly8vLi4vc3JjL0FkZEluQXBpUHJlc0xheWVySW1wbC50cyIsIndlYnBhY2s6Ly8vLi4vc3JjL0Rlc2t0b3BBcGlEaXNwYXRjaGVyLnRzIiwid2VicGFjazovLy8uLi9zcmMvUXRXZWJDaGFubmVsSW1wbC50cyIsIndlYnBhY2s6Ly8vLi4vfi9xd2ViY2hhbm5lbC9xd2ViY2hhbm5lbC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsTztBQ1ZBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVCQUFlO0FBQ2Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7Ozs7Ozs7OztBQ3RDQSxzQ0FBbUQ7QUFFbkQseURBQXdEO0FBRXhELHFGQUFvRjtBQUNwRix5REFBd0Q7QUFDeEQsc0NBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFDO0tBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdEQsRUFBQyxDQUFDLENBQUM7QUFXSCxPQUFNLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQzs7Ozs7Ozs7QUNuQnpCOzs7O0lBSUc7O0FBRUgsMkZBQTBGO0FBQzFGLDZGQUE0RjtBQUM1RixtQkFBa0I7QUFFbEIsK0NBQTJEO0FBQzNELDRDQUFxRDtBQUVyRCxLQUFNLGFBQWEsR0FBRyxJQUFJLCtCQUFj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QyxDQUFDO1NBQ0wsQ0FBQztTQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDWCxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDWixDQUFDO0tBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxFQUFDO0FBZkQsdUVBZUM7Ozs7Ozs7Ozs7Ozs7QUMxQkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLHVCQUFzQixtQ0FBbUM7QUFDekQ7O0FBRUE7QUFDQTtBQUNBLHVCQUFzQixtREFBbUQ7QUFDekU7O0FBRUEsbUJBQWtCLG1DQUFtQztBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUFzQixtQ0FBbUM7QUFDekQsTUFBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTJCLHFCQUFxQjtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0VBQStEO0FBQy9ELHFDQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFxQjtBQUNyQjtBQUNBLGNBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYTtBQUNiO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTJCLHNCQUFzQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYTtBQUNiO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsY0FBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBaUI7QUFDakI7QUFDQSxVQUFTOztBQUVUOztBQUVBOztBQUVBOztBQUVBOztBQUVBLDRDQUEyQywwQkFBMEIsRUFBRTs7QUFFdkU7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImZyZWxhcmQtZGVza3RvcC1ib290c3RyYXAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJNYWluXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIk1haW5cIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCBmdW5jdGlvbigpIHtcbnJldHVybiBcblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiB3ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb25cbiAqKi8iLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcblxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0ZXhwb3J0czoge30sXG4gXHRcdFx0aWQ6IG1vZHVsZUlkLFxuIFx0XHRcdGxvYWRlZDogZmFsc2VcbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubG9hZGVkID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCIvZGlzdC9cIjtcblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIHdlYnBhY2svYm9vdHN0cmFwIDNiMDk1OTcwNTVkM2JiNjFmMTRhXG4gKiovIiwiaW1wb3J0ICogYXMgdGFibGVhdSBmcm9tICdAdGFibGVhdS9leHRlbnNpb25zLWFwaSc7XHJcblxyXG5pbXBvcnQgeyBkb0Jvb3RzdHJhcCB9IGZyb20gJy4vRnJlbGFyZERlc2t0b3BCb290c3RyYXAnO1xyXG5cclxuLy8gVGhpcyBNYWluIGZ1bmN0aW9uIHdpbGwgYmUgZXhlY3V0ZWQgd2hlbiB0aGlzIG1vZHVsZSBpcyBsb2FkZWQuIEF0dGVtcHQgdG8gZG8gb3VyXHJcbi8vIGJvb3RzdHJhcHBpbmcgd2l0aCBxdCBhbmQgbG9nIGFueSBlcnJvcnMgd2UgZW5jb3VudGVyXHJcbmRvQm9vdHN0cmFwKCkuY2F0Y2goZSA9PiB7XHJcbiAgY29uc29sZS5lcnJvcignRGVza3RvcCBib290c3RyYXBwaW5nIGZhaWxlZDogJyArIGUpO1xyXG59KTtcclxuXHJcbi8vIERlY2xhcmUgdGhlIGltcG9ydGVkIHRhYmxlYXUgb2JqZWN0IG9uIHRoZSBnbG9iYWwgbmFtZXNwYWNlXHJcbi8vIChUaGlzIG11c3QgZ28gYXdheSBvbmNlIHdlIGRvbid0IGltcG9ydCBhdCB0aGUgQVBJIG91cnNlbHZlcylcclxuZGVjbGFyZSBnbG9iYWwgIHtcclxuICBpbnRlcmZhY2UgV2luZG93IHtcclxuICAgIC8qdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueSAqL1xyXG4gICAgdGFibGVhdTogYW55O1xyXG4gIH1cclxufVxyXG5cclxud2luZG93LnRhYmxlYXUgPSB0YWJsZWF1O1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuLi9zcmMvTWFpbi50c1xuICoqLyIsIi8qKlxuICogVGhpcyBpcyB5b3VyIG1haW4uIFRoaXMgaXMgd2hlcmUgeW91IHJlLWV4cG9ydCBldmVyeXRoaW5nIHlvdSB3YW50IHRvIGJlIHB1YmxpY2x5IGF2YWlsYWJsZS5cbiAqXG4gKiBUaGUgYnVpbGQgZW5mb3JjZXMgdGhhdCB0aGUgZmlsZSBoYXMgdGhlIHNhbWUgbmFtZSBhcyB0aGUgZ2xvYmFsIHZhcmlhYmxlIHRoYXQgaXMgZXhwb3J0ZWQuXG4gKi9cblxuLy8gRHVlIHRvIHRoZSB3YXkgd2UgY29uZmlndXJlZCB3ZWJwYWNrLCB3ZSBzaG91bGQgYmUgZXhwb3J0aW5nIHRoaW5ncyB3aGljaCB3aWxsIGJlIHVuZGVyXG4vLyBhIGdsb2JhbCB2YXJpYWJsZSBjYWxsZWQgXCJ0YWJsZWF1XCIuIEV4cG9ydCBldmVyeXRoaW5nIHdlIHdhbnQgdG8gYmUgdmlzaWJsZSB1bmRlciB0YWJsZWF1XG4vLyBmcm9tIHRoaXMgZmlsZS5cblxuaW1wb3J0IHsgRXh0ZW5zaW9uc0ltcGwgfSBmcm9tICcuL0ludGVybmFsL0V4dGVuc2lvbnNJbXBsJztcbmltcG9ydCB7IEV4dGVuc2lvbnMgfSBmcm9tICcuL05hbWVzcGFjZXMvRXh0ZW5zaW9ucyc7XG5cbmNvbnN0IGV4dGVuc2lvbkltcGwgPSBuZXcgRXh0ZW5zaW9uc0ltcGwoKTtcbmV4cG9ydCBjb25zdCBleHRlbnNpb25zID0gbmV3IEV4dGVuc2lvbnMoZXh0ZW5zaW9uSW1wbCk7XG5cbi8vIEV4cG9ydCBFbnVtc1xuLy8gVGhlc2Ugc2hvdyB1cCB1bmRlciB0aGUgdGFibGVhdSBvYmplY3QuIEkuZS4gdGFibGVhdS5FeHRlbnNpb25Db250ZXh0LlNlcnZlclxuZXhwb3J0IHtcbiAgRXh0ZW5zaW9uQ29udGV4dCxcbiAgRXh0ZW5zaW9uTW9kZSxcbiAgQW5hbHl0aWNzT2JqZWN0VHlwZSxcbiAgQ29sdW1uVHlwZSxcbiAgRGFzaGJvYXJkT2JqZWN0VHlwZSxcbiAgRGF0YVR5cGUsXG4gIERhdGVSYW5nZVR5cGUsXG4gIERpYWxvZ0V2ZW50VHlwZSxcbiAgRW5jb2RpbmdUeXBlLFxuICBFcnJvckNvZGVzLFxuICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZSxcbiAgRmllbGRSb2xlVHlwZSxcbiAgRmlsdGVyRG9tYWluVHlwZSxcbiAgRmlsdGVyVHlwZSxcbiAgRmlsdGVyVXBkYXRlVHlwZSxcbiAgRmlsdGVyTnVsbE9wdGlvbixcbiAgTWFya1R5cGUsXG4gIFBhcmFtZXRlclZhbHVlVHlwZSxcbiAgUGVyaW9kVHlwZSxcbiAgUXVpY2tUYWJsZUNhbGNUeXBlLFxuICBTZWxlY3Rpb25VcGRhdGVUeXBlLFxuICBTaGVldFR5cGUsXG4gIFNvcnREaXJlY3Rpb24sXG4gIFRhYmxlYXVFdmVudFR5cGUsXG4gIFRyZW5kTGluZU1vZGVsVHlwZVxufSBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL0V4dGVuc2lvbnNBcGkudHNcbiAqKi8iLCJpbXBvcnQge1xuICBFeHRlbnNpb25EYXNoYm9hcmRJbmZvLFxuICBFeHRlbnNpb25TZXR0aW5nc0luZm8sXG4gIEludGVybmFsQXBpRGlzcGF0Y2hlcixcbiAgSW50ZXJuYWxBcGlEaXNwYXRjaGVySG9sZGVyLFxuICBTaGVldFBhdGgsXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5pbXBvcnQgeyBBcGlTZXJ2aWNlUmVnaXN0cnksIHJlZ2lzdGVyQWxsU2hhcmVkU2VydmljZXMgfSBmcm9tICdAdGFibGVhdS9hcGktc2hhcmVkJztcblxuaW1wb3J0IHsgRGFzaGJvYXJkIH0gZnJvbSAnLi4vRGFzaGJvYXJkJztcbmltcG9ydCB7IERhc2hib2FyZENvbnRlbnQgfSBmcm9tICcuLi9OYW1lc3BhY2VzL0Rhc2hib2FyZENvbnRlbnQnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi9OYW1lc3BhY2VzL0Vudmlyb25tZW50JztcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSAnLi4vTmFtZXNwYWNlcy9TZXR0aW5ncyc7XG5pbXBvcnQgeyBFeHRlbnNpb25zU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vU2VydmljZXMvRXh0ZW5zaW9uc1NlcnZpY2VOYW1lcyc7XG5pbXBvcnQgeyBJbml0aWFsaXphdGlvblNlcnZpY2UgfSBmcm9tICcuLi9TZXJ2aWNlcy9Jbml0aWFsaXphdGlvblNlcnZpY2UnO1xuaW1wb3J0IHsgcmVnaXN0ZXJBbGxFeHRlbnNpb25zU2VydmljZXMgfSBmcm9tICcuLi9TZXJ2aWNlcy9SZWdpc3RlckFsbEV4dGVuc2lvbnNTZXJ2aWNlcyc7XG5pbXBvcnQgeyBWZXJzaW9uTnVtYmVyIH0gZnJvbSAnLi4vVmVyc2lvbk51bWJlcic7XG5pbXBvcnQgeyBEYXNoYm9hcmRJbXBsIH0gZnJvbSAnLi9EYXNoYm9hcmRJbXBsJztcbmltcG9ydCB7IFNldHRpbmdzSW1wbCB9IGZyb20gJy4vU2V0dGluZ3NJbXBsJztcblxuZXhwb3J0IGNsYXNzIEV4dGVuc2lvbnNJbXBsIHtcbiAgcHJpdmF0ZSBfaW5pdGlhbGl6YXRpb25Qcm9taXNlOiBQcm9taXNlPHZvaWQ+O1xuXG4gIHB1YmxpYyBkYXNoYm9hcmRDb250ZW50OiBEYXNoYm9hcmRDb250ZW50O1xuICBwdWJsaWMgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50O1xuICBwdWJsaWMgc2V0dGluZ3M6IFNldHRpbmdzO1xuXG4gIHB1YmxpYyBpbml0aWFsaXplQXN5bmMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLl9pbml0aWFsaXphdGlvblByb21pc2UpIHtcbiAgICAgIHRoaXMuX2luaXRpYWxpemF0aW9uUHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgLy8gRmlyc3QgdGhpbmcgd2Ugd2FudCB0byBkbyBpcyBjaGVjayB0byBzZWUgaWYgdGhlcmUgaXMgYSBkZXNrdG9wIGRpc3BhdGNoZXIgYWxyZWFkeSByZWdpc3RlcmVkIGZvciB1c1xuICAgICAgICBpZiAoSW50ZXJuYWxBcGlEaXNwYXRjaGVySG9sZGVyLmhhc0Rlc2t0b3BBcGlEaXNwYXRjaGVyUHJvbWlzZSgpKSB7XG4gICAgICAgICAgLy8gUnVubmluZyBpbiBkZXNrdG9wLCB1c2UgdGhpcyBwcm9taXNlXG4gICAgICAgICAgY29uc3QgZGVza3RvcERpc3BhdGNoZXJQcm9taXNlID0gSW50ZXJuYWxBcGlEaXNwYXRjaGVySG9sZGVyLmdldERlc2t0b3BEaXNwYXRjaGVyUHJvbWlzZSgpO1xuICAgICAgICAgIGRlc2t0b3BEaXNwYXRjaGVyUHJvbWlzZS50aGVuKHRoaXMub25EaXNwYXRjaGVyUmVjZWl2ZWQuYmluZCh0aGlzKSkudGhlbigoKSA9PiB7IHJlc29sdmUoKTsgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVqZWN0KCdOb3QgcnVubmluZyBpbiBkZXNrdG9wLiBTZXJ2ZXIgc3VwcG9ydCBjb21pbmcgc29vbiEnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2luaXRpYWxpemF0aW9uUHJvbWlzZTtcbiAgfVxuXG4gIHByaXZhdGUgb25EaXNwYXRjaGVyUmVjZWl2ZWQoZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZGlzcGF0Y2hlci5zZXRWZXJzaW9uTnVtYmVyKFZlcnNpb25OdW1iZXIuSW5zdGFuY2UpO1xuXG4gICAgLy8gQ2FsbCB0byByZWdpc3RlciBhbGwgdGhlIHNlcnZpY2VzIHdoaWNoIHdpbGwgdXNlIHRoZSBuZXdseSBpbml0aWFsaXplZCBkaXNwYXRjaGVyXG4gICAgcmVnaXN0ZXJBbGxTaGFyZWRTZXJ2aWNlcyhkaXNwYXRjaGVyKTtcbiAgICByZWdpc3RlckFsbEV4dGVuc2lvbnNTZXJ2aWNlcyhkaXNwYXRjaGVyKTtcblxuICAgIC8vIEdldCB0aGUgaW5pdGlhbGl6YXRpb24gc2VydmljZSBhbmQgaW5pdGlhbGl6ZSB0aGlzIGV4dGVuc2lvblxuICAgIGNvbnN0IGluaXRpYWxpemF0aW9uU2VydmljZSA9IEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlPEluaXRpYWxpemF0aW9uU2VydmljZT4oXG4gICAgICBFeHRlbnNpb25zU2VydmljZU5hbWVzLkluaXRpYWxpemF0aW9uU2VydmljZSk7XG5cbiAgICByZXR1cm4gaW5pdGlhbGl6YXRpb25TZXJ2aWNlLmluaXRpYWxpemVEYXNoYm9hcmRFeHRlbnNpb25zQXN5bmMoKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICBpZiAoIXJlc3VsdC5leHRlbnNpb25JbnN0YW5jZS5sb2NhdG9yLmRhc2hib2FyZFBhdGgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEYXNoYm9hcmRQYXRoIGlzIHVuZGVmaW5lZCcpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRhc2hib2FyZENvbnRlbnQgPSB0aGlzLmluaXRpYWxpemVEYXNoYm9hcmRDb250ZW50KHJlc3VsdC5leHRlbnNpb25EYXNoYm9hcmRJbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuZXh0ZW5zaW9uSW5zdGFuY2UubG9jYXRvci5kYXNoYm9hcmRQYXRoKTtcbiAgICAgIHRoaXMuZW52aXJvbm1lbnQgPSBuZXcgRW52aXJvbm1lbnQocmVzdWx0LmV4dGVuc2lvbkVudmlyb25tZW50KTtcbiAgICAgIHRoaXMuc2V0dGluZ3MgPSB0aGlzLmluaXRpYWxpemVTZXR0aW5ncyhyZXN1bHQuZXh0ZW5zaW9uU2V0dGluZ3NJbmZvKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZURhc2hib2FyZENvbnRlbnQoaW5mbzogRXh0ZW5zaW9uRGFzaGJvYXJkSW5mbywgc2hlZXRQYXRoOiBTaGVldFBhdGgpOiBEYXNoYm9hcmRDb250ZW50IHtcbiAgICBjb25zdCBkYXNoYm9hcmRJbXBsID0gbmV3IERhc2hib2FyZEltcGwoaW5mbywgc2hlZXRQYXRoKTtcbiAgICBjb25zdCBkYXNoYm9hcmQgPSBuZXcgRGFzaGJvYXJkKGRhc2hib2FyZEltcGwpO1xuICAgIHJldHVybiBuZXcgRGFzaGJvYXJkQ29udGVudChkYXNoYm9hcmQpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplU2V0dGluZ3Moc2V0dGluZ3NJbmZvOiBFeHRlbnNpb25TZXR0aW5nc0luZm8pOiBTZXR0aW5ncyB7XG4gICAgY29uc3Qgc2V0dGluZ3NJbXBsID0gbmV3IFNldHRpbmdzSW1wbChzZXR0aW5nc0luZm8pO1xuICAgIHJldHVybiBuZXcgU2V0dGluZ3Moc2V0dGluZ3NJbXBsKTtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL0ludGVybmFsL0V4dGVuc2lvbnNJbXBsLnRzXG4gKiovIiwiLyoqXG4gKiBUaGlzIGlzIHlvdXIgbWFpbi4gVGhpcyBpcyB3aGVyZSB5b3UgcmUtZXhwb3J0IGV2ZXJ5dGhpbmcgeW91IHdhbnQgdG8gYmUgcHVibGljbHkgYXZhaWxhYmxlLlxuICpcbiAqIFRoZSBidWlsZCBlbmZvcmNlcyB0aGF0IHRoZSBmaWxlIGhhcyB0aGUgc2FtZSBuYW1lIGFzIHRoZSBnbG9iYWwgdmFyaWFibGUgdGhhdCBpcyBleHBvcnRlZC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZS9FbnVtcyc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZS9JbnRlcm5hbEFwaURpc3BhdGNoZXInO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2UvTW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlL05vdGlmaWNhdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2UvUGFyYW1ldGVycyc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZS9WZXJicyc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZS9WZXJzaW9uTnVtYmVyJztcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1pbnRlcm5hbC1jb250cmFjdC9zcmMvQXBpSW50ZXJuYWxDb250cmFjdC50c1xuICoqLyIsImV4cG9ydCBlbnVtIEV4dGVuc2lvbkNvbnRleHQge1xuICBEZXNrdG9wID0gJ2Rlc2t0b3AnLFxuICBTZXJ2ZXIgPSAnc2VydmVyJyxcbiAgVW5rbm93biA9ICd1bmtub3duJ1xufVxuXG5leHBvcnQgZW51bSBFeHRlbnNpb25Nb2RlIHtcbiAgQXV0aG9yaW5nID0gJ2F1dGhvcmluZycsXG4gIFZpZXdpbmcgPSAndmlld2luZycsXG4gIFVua25vd24gPSAndW5rbm93bidcbn1cblxuZXhwb3J0IGVudW0gQ29sdW1uVHlwZSB7XG4gIERpc2NyZXRlID0gJ2Rpc2NyZXRlJyxcbiAgQ29udGludW91cyA9ICdjb250aW51b3VzJ1xufVxuXG5leHBvcnQgZW51bSBEYXNoYm9hcmRPYmplY3RUeXBlIHtcbiAgQmxhbmsgPSAnYmxhbmsnLFxuICBXb3Jrc2hlZXQgPSAnd29ya3NoZWV0JyxcbiAgUXVpY2tGaWx0ZXIgPSAncXVpY2stZmlsdGVyJyxcbiAgUGFyYW1ldGVyQ29udHJvbCA9ICdwYXJhbWV0ZXItY29udHJvbCcsXG4gIFBhZ2VGaWx0ZXIgPSAncGFnZS1maWx0ZXInLFxuICBMZWdlbmQgPSAnbGVnZW5kJyxcbiAgVGl0bGUgPSAndGl0bGUnLFxuICBUZXh0ID0gJ3RleHQnLFxuICBJbWFnZSA9ICdpbWFnZScsXG4gIFdlYlBhZ2UgPSAnd2ViLXBhZ2UnLFxuICBFeHRlbnNpb24gPSAnZXh0ZW5zaW9uJ1xufVxuXG5leHBvcnQgZW51bSBEYXRhVHlwZSB7XG4gIFN0cmluZyA9ICdzdHJpbmcnLFxuICBJbnQgPSAnaW50JyxcbiAgRmxvYXQgPSAnZmxvYXQnLFxuICBCb29sID0gJ2Jvb2wnLFxuICBEYXRlID0gJ2RhdGUnLFxuICBEYXRlVGltZSA9ICdkYXRlLXRpbWUnLFxuICBTcGF0aWFsID0gJ3NwYXRpYWwnXG59XG5cbmV4cG9ydCBlbnVtIEVuY29kZWREYXRhVHlwZSB7XG4gIE51bWJlciA9ICdudW1iZXInLFxuICBTdHJpbmcgPSAnc3RyaW5nJyxcbiAgRGF0ZSA9ICdkYXRlJyxcbiAgQm9vbGVhbiA9ICdib29sZWFuJ1xufVxuXG5leHBvcnQgZW51bSBFcnJvckNvZGUge1xuICBTZXJ2ZXJFcnJvciA9ICdzZXJ2ZXItZXJyb3InLFxuICBJbnZhbGlkQWdncmVnYXRpb25GaWVsZE5hbWUgPSAnaW52YWxpZC1hZ2dyZWdhdGlvbi1maWVsZC1uYW1lJyxcbiAgSW52YWxpZEZpbHRlckZpZWxkTmFtZSA9ICdpbnZhbGlkLWZpbHRlci1maWVsZG5hbWUnLFxuICBJbnZhbGlkRmlsdGVyRmllbGRWYWx1ZSA9ICdpbnZhbGlkLWZpbHRlci1maWVsZC12YWx1ZSdcbn1cblxuZXhwb3J0IGVudW0gRmllbGRBZ2dyZWdhdGlvblR5cGUge1xuICBTdW0gPSAnc3VtJyxcbiAgQXZnID0gJ2F2ZycsXG4gIE1pbiA9ICdtaW4nLFxuICBNYXggPSAnbWF4JyxcbiAgU3RkZXYgPSAnc3RkZXYnLFxuICBTdGRldnAgPSAnc3RkZXZwJyxcbiAgVmFyID0gJ3ZhcicsXG4gIFZhcnAgPSAndmFycCcsXG4gIENvdW50ID0gJ2NvdW50JyxcbiAgQ291bnRkID0gJ2NvdW50ZCcsXG4gIE1lZGlhbiA9ICdtZWRpYW4nLFxuICBBdHRyID0gJ2F0dHInLFxuICBOb25lID0gJ25vbmUnLFxuICBZZWFyID0gJ3llYXInLFxuICBRdHIgPSAncXRyJyxcbiAgTW9udGggPSAnbW9udGgnLFxuICBEYXkgPSAnZGF5JyxcbiAgSG91ciA9ICdob3VyJyxcbiAgTWludXRlID0gJ21pbnV0ZScsXG4gIFNlY29uZCA9ICdzZWNvbmQnLFxuICBXZWVrID0gJ3dlZWsnLFxuICBXZWVrZGF5ID0gJ3dlZWtkYXknLFxuICBNb250aFllYXIgPSAnbW9udGgteWVhcicsXG4gIE1keSA9ICdtZHknLFxuICBFbmQgPSAnZW5kJyxcbiAgVHJ1bmNZZWFyID0gJ3RydW5jLXllYXInLFxuICBUcnVuY1F0ciA9ICd0cnVuYy1xdHInLFxuICBUcnVuY01vbnRoID0gJ3RydW5jLW1vbnRoJyxcbiAgVHJ1bmNXZWVrID0gJ3RydW5jLXdlZWsnLFxuICBUcnVuY0RheSA9ICd0cnVuYy1kYXknLFxuICBUcnVuY0hvdXIgPSAndHJ1bmMtaG91cicsXG4gIFRydW5jTWludXRlID0gJ3RydW5jLW1pbnV0ZScsXG4gIFRydW5jU2Vjb25kID0gJ3RydW5jLXNlY29uZCcsXG4gIFF1YXJ0MSA9ICdxdWFydDEnLFxuICBRdWFydDMgPSAncXVhcnQzJyxcbiAgU2tld25lc3MgPSAnc2tld25lc3MnLFxuICBLdXJ0b3NpcyA9ICdrdXJ0b3NpcycsXG4gIEluT3V0ID0gJ2luLW91dCcsXG4gIFVzZXIgPSAndXNlcidcbn1cblxuZXhwb3J0IGVudW0gRmllbGRSb2xlVHlwZSB7XG4gIERpbWVuc2lvbiA9ICdkaW1lbnNpb24nLFxuICBNZWFzdXJlID0gJ21lYXN1cmUnLFxuICBVbmtub3duID0gJ3Vua25vd24nXG59XG5cbi8qKlxuICogIFRoZSBkaWZmZXJlbnQgdXBkYXRlIHR5cGVzIGZvciBhcHBseWluZyBmaWx0ZXIuXG4gKi9cbmV4cG9ydCBlbnVtIEZpbHRlclVwZGF0ZVR5cGUge1xuICBBZGQgPSAnYWRkJyxcbiAgQWxsID0gJ2FsbCcsXG4gIFJlcGxhY2UgPSAncmVwbGFjZScsXG4gIFJlbW92ZSA9ICdyZW1vdmUnXG59XG5cbmV4cG9ydCBlbnVtIFNoZWV0VHlwZSB7XG4gIERhc2hib2FyZCA9ICdkYXNoYm9hcmQnLFxuICBTdG9yeSA9ICdzdG9yeScsXG4gIFdvcmtzaGVldCA9ICd3b3Jrc2hlZXQnXG59XG5cbmV4cG9ydCBlbnVtIERvbWFpblJlc3RyaWN0aW9uVHlwZSB7XG4gIEFsbCA9ICdhbGwnLFxuICBMaXN0ID0gJ2xpc3QnLFxuICBSYW5nZSA9ICdyYW5nZSdcbn1cblxuZXhwb3J0IGVudW0gRGF0ZVN0ZXBQZXJpb2Qge1xuICBZZWFycyA9ICd5ZWFycycsXG4gIFF1YXJ0ZXJzID0gJ3F1YXJ0ZXJzJyxcbiAgTW9udGhzID0gJ21vbnRocycsXG4gIFdlZWtzID0gJ3dlZWtzJyxcbiAgRGF5cyA9ICdkYXlzJyxcbiAgSG91cnMgPSAnaG91cnMnLFxuICBNaW51dGVzID0gJ21pbnV0ZXMnLFxuICBTZWNvbmRzID0gJ3NlY29uZHMnXG59XG5cbi8qKlxuICogVGhlIG9wdGlvbiBmb3Igc3BlY2lmeWluZyB3aGljaCB2YWx1ZXMgdG8gaW5jbHVkZSBmb3IgZmlsdGVyaW5nLlxuICovXG5leHBvcnQgZW51bSBGaWx0ZXJOdWxsT3B0aW9uIHtcbiAgTnVsbFZhbHVlcyA9ICdudWxsdmFsdWVzJyxcbiAgTm9uTnVsbFZhbHVlcyA9ICdub25udWxsdmFsdWVzJyxcbiAgQWxsVmFsdWVzID0gJ2FsbHZhbHVlcydcbn1cblxuLyoqXG4gKiBUaGUgdHlwZSBvZiBmaWx0ZXIgZG9tYWluXG4gKi9cbmV4cG9ydCBlbnVtIEZpbHRlckRvbWFpblR5cGUge1xuICBSZWxldmFudCA9ICdyZWxldmFudCcsXG4gIERhdGFiYXNlID0gJ2RhdGFiYXNlJ1xufVxuXG4vKipcbiAqIEludGVybmFsIGVudW0gZm9yIHNwZWNpZnlpbmcgdGhlIHNlbGVjdGlvbiB0eXBlIGZvciBzZWxlY3QgbWFya3MgYXBpLlxuICovXG5leHBvcnQgZW51bSBTZWxlY3Rpb25VcGRhdGVUeXBlIHtcbiAgUmVwbGFjZSA9ICdzZWxlY3QtcmVwbGFjZScsXG4gIEFkZCA9ICdzZWxlY3QtYWRkJyxcbiAgUmVtb3ZlID0gJ3NlbGVjdC1yZW1vdmUnXG59XG5cbi8qKlxuICogSW50ZXJuYWwgZW51bSBmb3Igc3BlY2lmeWluZyB0aGUgaW5jbHVkZWQgdmFsdWVzIHR5cGUgZm9yIHJhbmdlIHNlbGVjdGlvbi5cbiAqL1xuZXhwb3J0IGVudW0gUXVhbnRpdGF0aXZlSW5jbHVkZWRWYWx1ZXMge1xuICBJbmNsdWRlTnVsbCA9ICdpbmNsdWRlLW51bGwnLFxuICBJbmNsdWRlTm9uTnVsbCA9ICdpbmNsdWRlLW5vbi1udWxsJyxcbiAgSW5jbHVkZUFsbCA9ICdpbmNsdWRlLWFsbCdcbn1cblxuLyoqXG4gKiBUeXBlIG9mIG1hcmsgZm9yIGEgZ2l2ZW4gbWFya3MgY2FyZCBpbiBhIHZpei5cbiAqL1xuZXhwb3J0IGVudW0gTWFya1R5cGUge1xuICAgIEJhciA9ICdiYXInLFxuICAgIExpbmUgPSAnbGluZScsXG4gICAgQXJlYSA9ICdhcmVhJyxcbiAgICBTcXVhcmUgPSAnc3F1YXJlJyxcbiAgICBDaXJjbGUgPSAnY2lyY2xlJyxcbiAgICBTaGFwZSA9ICdzaGFwZScsXG4gICAgVGV4dCA9ICd0ZXh0JyxcbiAgICBNYXAgPSAnbWFwJyxcbiAgICBQaWUgPSAncGllJyxcbiAgICBHYW50dEJhciA9ICdnYW50dC1iYXInLFxuICAgIFBvbHlnb24gPSAncG9seWdvbicsXG59XG5cbi8qKlxuICogSW50ZXJuYWwgZW51bSBmb3Igc3BlY2lmeWluZyB0aGUgdHlwZSBvZiBmaWx0ZXJcbiAqL1xuZXhwb3J0IGVudW0gRmlsdGVyVHlwZSB7XG4gIENhdGVnb3JpY2FsID0gJ2NhdGVnb3JpY2FsJyxcbiAgUmFuZ2UgPSAncmFuZ2UnLFxuICBSZWxhdGl2ZURhdGUgPSAncmVsYXRpdmVEYXRlJyxcbiAgSGllcmFyY2hpY2FsID0gJ2hpZXJhcmNoaWNhbCdcbn1cblxuLyoqXG4gKiBJbnRlcm5hbCBlbnVtIGZvciBzcGVjaWZ5aW5nIHRoZSBEYXRlUmFuZ2VUeXBlIG9mIGEgcmVsYXRpdmUgZGF0ZSBmaWx0ZXJcbiAqL1xuZXhwb3J0IGVudW0gRGF0ZVJhbmdlVHlwZSB7XG4gIC8qKlxuICAgKiBSZWZlcnMgdG8gdGhlIGxhc3QgZGF5LCB3ZWVrLCBtb250aCwgZXRjLiBvZiB0aGUgZGF0ZSBwZXJpb2QuXG4gICAqL1xuICBMYXN0ID0gJ2xhc3QnLFxuICAvKipcbiAgICogUmVmZXJzIHRvIHRoZSBsYXN0IE4gZGF5cywgd2Vla3MsIG1vbnRocywgZXRjLiBvZiB0aGUgZGF0ZSBwZXJpb2QuXG4gICAqL1xuICBMYXN0TiA9ICdsYXN0TicsXG4gIC8qKlxuICAgKiBSZWZlcnMgdG8gdGhlIG5leHQgZGF5LCB3ZWVrLCBtb250aCwgZXRjLiBvZiB0aGUgZGF0ZSBwZXJpb2QuXG4gICAqL1xuICBOZXh0ID0gJ25leHQnLFxuICAvKipcbiAgICogUmVmZXJzIHRvIHRoZSBuZXh0IE4gZGF5cywgd2Vla3MsIG1vbnRocywgZXRjLiBvZiB0aGUgZGF0ZSBwZXJpb2QuXG4gICAqL1xuICBOZXh0TiA9ICduZXh0TicsXG4gIC8qKlxuICAgKiBSZWZlcnMgdG8gdGhlIGN1cnJlbnQgZGF5LCB3ZWVrLCBtb250aCwgZXRjLiBvZiB0aGUgZGF0ZSBwZXJpb2QuXG4gICAqL1xuICBDdXJyZW50ID0gJ2N1cnJlbnQnLFxuICAvKipcbiAgICogUmVmZXJzIHRvIGV2ZXJ5dGhpbmcgdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUgY3VycmVudCBkYXksIHdlZWssIG1vbnRoLCBldGMuIG9mIHRoZSBkYXRlIHBlcmlvZC5cbiAgICovXG4gIFRvRGF0ZSA9ICd0b0RhdGUnXG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktaW50ZXJuYWwtY29udHJhY3Qvc3JjL2ludGVyZmFjZS9FbnVtcy50c1xuICoqLyIsImltcG9ydCB7IE1vZGVsIH0gZnJvbSAnLi9Nb2RlbHMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uSWQgfSBmcm9tICcuL05vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgVmVyYklkIH0gZnJvbSAnLi9WZXJicyc7XG5pbXBvcnQgeyBWZXJzaW9uTnVtYmVyIH0gZnJvbSAnLi9WZXJzaW9uTnVtYmVyJztcblxuZXhwb3J0IHR5cGUgTm90aWZpY2F0aW9uSGFuZGxlciA9IChub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbikgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRlUGFyYW1ldGVycyB7XG4gIFtrZXk6IHN0cmluZ106IE1vZGVsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWN1dGVSZXNwb25zZSB7XG4gIHJlc3VsdDogTW9kZWw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uIHtcbiAgbm90aWZpY2F0aW9uSWQ6IE5vdGlmaWNhdGlvbklkO1xuICBkYXRhOiBNb2RlbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcm5hbEFwaURpc3BhdGNoZXIge1xuICBzZXRWZXJzaW9uTnVtYmVyKHZlcnNpb25OdW1iZXI6IFZlcnNpb25OdW1iZXIpOiB2b2lkO1xuICBleGVjdXRlKHZlcmI6IFZlcmJJZCwgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMpOiBQcm9taXNlPEV4ZWN1dGVSZXNwb25zZT47XG4gIHJlZ2lzdGVyTm90aWZpY2F0aW9uSGFuZGxlcihoYW5kbGVyOiBOb3RpZmljYXRpb25IYW5kbGVyKTogdm9pZDtcbiAgdW5yZWdpc3Rlck5vdGlmaWNhdGlvbkhhbmRsZXIoaGFuZGxlcjogTm90aWZpY2F0aW9uSGFuZGxlcik6IHZvaWQ7XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7IF9fdGFibGVhdURlc2t0b3BEaXNwYXRjaGVyOiBQcm9taXNlPEludGVybmFsQXBpRGlzcGF0Y2hlcj47IH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBJbnRlcm5hbEFwaURpc3BhdGNoZXJIb2xkZXIge1xuICBleHBvcnQgZnVuY3Rpb24gZ2V0RGVza3RvcERpc3BhdGNoZXJQcm9taXNlKCk6IFByb21pc2U8SW50ZXJuYWxBcGlEaXNwYXRjaGVyPiB7XG4gICAgcmV0dXJuIHdpbmRvdy5fX3RhYmxlYXVEZXNrdG9wRGlzcGF0Y2hlcjtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBoYXNEZXNrdG9wQXBpRGlzcGF0Y2hlclByb21pc2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhSW50ZXJuYWxBcGlEaXNwYXRjaGVySG9sZGVyLmdldERlc2t0b3BEaXNwYXRjaGVyUHJvbWlzZSgpO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIHNldERlc2t0b3BEaXNwYXRjaGVyUHJvbWlzZShkaXNwYXRjaGVyOiBQcm9taXNlPEludGVybmFsQXBpRGlzcGF0Y2hlcj4pOiB2b2lkIHtcbiAgICB3aW5kb3cuX190YWJsZWF1RGVza3RvcERpc3BhdGNoZXIgPSBkaXNwYXRjaGVyO1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktaW50ZXJuYWwtY29udHJhY3Qvc3JjL2ludGVyZmFjZS9JbnRlcm5hbEFwaURpc3BhdGNoZXIudHNcbiAqKi8iLCJleHBvcnQgZW51bSBOb3RpZmljYXRpb25JZCB7XG4gIFNlbGVjdGVkTWFya3NDaGFuZ2VkID0gJ3NlbGVjdGVkLW1hcmtzLWNoYW5nZWQnLFxuICBQYXJhbWV0ZXJDaGFuZ2VkID0gJ3BhcmFtZXRlci1jaGFuZ2VkJyxcbiAgRmlsdGVyQ2hhbmdlZCA9ICdmaWx0ZXItY2hhbmdlZCdcbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1pbnRlcm5hbC1jb250cmFjdC9zcmMvaW50ZXJmYWNlL05vdGlmaWNhdGlvbnMudHNcbiAqKi8iLCJleHBvcnQgZW51bSBQYXJhbWV0ZXJJZCB7XG4gIEV4dGVuc2lvbkxvY2F0b3IgPSAnZXh0ZW5zaW9uLWxvY2F0b3InLFxuICBFeHRlbnNpb25Cb290c3RyYXBJbmZvID0gJ2V4dGVuc2lvbi1ib290c3RyYXAtaW5mbycsXG4gIEV4dGVuc2lvblNldHRpbmdzSW5mbyA9ICdleHRlbnNpb24tc2V0dGluZ3MtaW5mbycsXG4gIFZpc3VhbElkID0gJ3Zpc3VhbC1pZCcsXG4gIFNoZWV0UGF0aCA9ICdzaGVldC1wYXRoJyxcbiAgSWdub3JlQWxpYXNlcyA9ICdpZ25vcmUtYWxpYXNlcycsXG4gIElnbm9yZVNlbGVjdGlvbiA9ICdpZ25vcmUtc2VsZWN0aW9uJyxcbiAgSW5jbHVkZUFsbENvbHVtbnMgPSAnaW5jbHVkZS1hbGwtY29sdW1ucycsXG4gIE1heFJvd3MgPSAnbWF4LXJvd3MnLFxuICBVbmRlcmx5aW5nRGF0YVRhYmxlID0gJ3VuZGVybHlpbmctZGF0YS10YWJsZScsXG4gIFVuZGVybHlpbmdTdW1tYXJ5RGF0YVRhYmxlID0gJ3VuZGVybHlpbmctc3VtbWFyeS1kYXRhLXRhYmxlJyxcbiAgRGF0YVNvdXJjZURhdGFUYWJsZSA9ICdkYXRhLXNvdXJjZS1kYXRhLXRhYmxlJyxcbiAgU2V0dGluZ3NWYWx1ZXMgPSAnc2V0dGluZ3MtdmFsdWVzJyxcbiAgU2VsZWN0ZWREYXRhID0gJ3NlbGVjdGVkLWRhdGEnLFxuICBIaWdobGlnaHRlZERhdGEgPSAnaGlnaGxpZ2h0ZWQtZGF0YScsXG5cbiAgIC8vIEZpbHRlciBQYXJhbXNcbiAgRmllbGROYW1lID0gJ2ZpZWxkLW5hbWUnLFxuICBGaWx0ZXJWYWx1ZXMgPSAnZmlsdGVyLXZhbHVlcycsXG4gIEZpbHRlclVwZGF0ZVR5cGUgPSAnZmlsdGVyLXVwZGF0ZS10eXBlJyxcbiAgSXNFeGNsdWRlTW9kZSA9ICdpcy1leGNsdWRlJyxcbiAgRmlsdGVyUmFuZ2VNaW4gPSAnZmlsdGVyLXJhbmdlLW1pbicsXG4gIEZpbHRlclJhbmdlTWF4ID0gJ2ZpbHRlci1yYW5nZS1tYXgnLFxuICBGaWx0ZXJSYW5nZU51bGxPcHRpb24gPSAnZmlsdGVyLXJhbmdlLW51bGwtb3B0aW9uJyxcbiAgV29ya3NoZWV0RmlsdGVycyA9ICd3b3Jrc2hlZXQtZmlsdGVycycsXG4gIEZpZWxkSWQgPSAnZmllbGQtaWQnLFxuICBEb21haW5UeXBlID0gJ2RvbWFpbi10eXBlJyxcbiAgQ2F0ZWdvcmljYWxEb21haW4gPSAnY2F0ZWdvcmljYWwtZG9tYWluJyxcbiAgUXVhbnRpdGF0aXZlRG9tYWluID0gJ3F1YW50aXRhdGl2ZS1kbWFpbicsXG5cbiAgV29ya3NoZWV0TmFtZSA9ICd3b3Jrc2hlZXQtbmFtZScsXG4gIERhc2hib2FyZE5hbWUgPSAnZGFzaGJvYXJkJyxcblxuICBQYXJhbWV0ZXJJbmZvID0gJ3BhcmFtZXRlci1pbmZvJyxcbiAgUGFyYW1ldGVySW5mb3MgPSAncGFyYW1ldGVyLWluZm9zJyxcbiAgUGFyYW1ldGVyQ2FwdGlvbiA9ICdwYXJlbWV0ZXItY2FwdGlvbicsXG4gIFBhcmFtZXRlckZpZWxkTmFtZSA9ICdwYXJhbWV0ZXItZmllbGQtbmFtZScsXG4gIFBhcmFtZXRlclZhbHVlID0gJ3BhcmFtZXRlci12YWx1ZScsXG4gIFNlbGVjdGlvbiA9ICdzZWxlY3Rpb24nLFxuICBTZWxlY3Rpb25VcGRhdGVUeXBlID0gJ3NlbGVjdGlvblVwZGF0ZVR5cGUnLFxuICBIaWVyVmFsU2VsZWN0aW9uTW9kZWxzID0gJ2hpZXJhcmNoaWNhbFZhbHVlU2VsZWN0aW9uTW9kZWxzJyxcbiAgUXVhbnRSYW5nZVNlbGVjdGlvbk1vZGVscyA9ICdxdWFudGF0aXZlUmFuZ2VTZWxlY3Rpb25Nb2RlbHMnLFxuICBEaW1WYWxTZWxlY3Rpb25Nb2RlbHMgPSAnZGltZW5zaW9uVmFsdWVTZWxlY3Rpb25Nb2RlbHMnLFxuXG4gIERhdGFTb3VyY2VJZCA9ICdkYXRhLXNvdXJjZS1pZCcsXG4gIERhdGFTY2hlbWEgPSAnZGF0YS1zY2hlbWEnLFxuICBEYXRhU291cmNlTmFtZSA9ICdkYXRhLXNvdXJjZS1uYW1lJyxcbiAgQ29sdW1uc1RvSW5jbHVkZSA9ICdjb2x1bW5zLXRvLWluY2x1ZGUnXG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktaW50ZXJuYWwtY29udHJhY3Qvc3JjL2ludGVyZmFjZS9QYXJhbWV0ZXJzLnRzXG4gKiovIiwiLy8gRGVjbGFyZSB0aGlzIGtleSB0eXBlIGFuZCBleHBvcnQgdGhlIE5vdGlmaWNhdGlvbklkIHRvIG1ha2UgdGhpcyBiZWhhdmUgbGlrZSBhIHN0cmluZyBlbnVtXG5leHBvcnQgZW51bSBWZXJiSWQge1xuICBBcHBseUNhdGVnb3JpY2FsRmlsdGVyID0gJ2NhdGVnb3JpY2FsLWZpbHRlcicsXG4gIEFwcGx5UmFuZ2VGaWx0ZXIgPSAncmFuZ2UtZmlsdGVyJyxcbiAgQ2xlYXJGaWx0ZXIgPSAnY2xlYXItZmlsdGVyJyxcbiAgSW5pdGlhbGl6ZUV4dGVuc2lvbiA9ICdpbml0aWFsaXplLWV4dGVuc2lvbicsXG4gIEdldERhdGFTdW1tYXJ5RGF0YSA9ICdnZXQtc3VtbWFyeS1kYXRhJyxcbiAgR2V0VW5kZXJseWluZ0RhdGEgPSAnZ2V0LXVuZGVybHlpbmctZGF0YScsXG4gIEdldERhdGFTb3VyY2VEYXRhID0gJ2dldC1kYXRhc291cmNlLWRhdGEnLFxuICBTYXZlRXh0ZW5zaW9uU2V0dGluZ3MgPSAnc2F2ZS1leHRlbnNpb24tc2V0dGluZ3MnLFxuICBHZXRTZWxlY3RlZE1hcmtzID0gJ2dldC1zZWxlY3RlZC1tYXJrcycsXG4gIEdldEhpZ2hsaWdodGVkTWFya3MgPSAnZ2V0LWhpZ2hsaWdodGVkLW1hcmtzJyxcbiAgR2V0UGFyYW1ldGVyc0ZvclNoZWV0ID0gJ2dldC1wYXJhbWV0ZXJzLWZvci1zaGVldCcsXG4gIEZpbmRQYXJhbWV0ZXIgPSAnZmluZC1wYXJhbWV0ZXInLFxuICBDaGFuZ2VQYXJhbWV0ZXJWYWx1ZSA9ICdjaGFuZ2UtcGFyYW1ldGVyLXZhbHVlJyxcbiAgQ2xlYXJTZWxlY3RlZE1hcmtzID0gJ2NsZWFyLXNlbGVjdGVkLW1hcmtzJyxcbiAgU2VsZWN0QnlWYWx1ZSA9ICdzZWxlY3QtYnktdmFsdWUnLFxuICBHZXREYXRhU291cmNlcyA9ICdnZXQtZGF0YS1zb3VyY2VzJyxcbiAgUmVmcmVzaERhdGFTb3VyY2UgPSAncmVmcmVzaC1kYXRhLXNvdXJjZScsXG4gIEdldEZpbHRlcnMgPSAnZ2V0LWZpbHRlcnMnLFxuICBHZXRDYXRlZ29yaWNhbERvbWFpbiA9ICdnZXQtY2F0ZWdvcmljYWwtZG9tYWluJyxcbiAgR2V0UmFuZ2VEb21haW4gPSAnZ2V0LXJhbmdlLWRvbWFpbidcbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1pbnRlcm5hbC1jb250cmFjdC9zcmMvaW50ZXJmYWNlL1ZlcmJzLnRzXG4gKiovIiwiLyoqXG4gKiBUaGlzIGlzIHlvdXIgbWFpbi4gVGhpcyBpcyB3aGVyZSB5b3UgcmUtZXhwb3J0IGV2ZXJ5dGhpbmcgeW91IHdhbnQgdG8gYmUgcHVibGljbHkgYXZhaWxhYmxlLlxuICpcbiAqIFRoZSBidWlsZCBlbmZvcmNlcyB0aGF0IHRoZSBmaWxlIGhhcyB0aGUgc2FtZSBuYW1lIGFzIHRoZSBnbG9iYWwgdmFyaWFibGUgdGhhdCBpcyBleHBvcnRlZC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL0V2ZW50TGlzdGVuZXJNYW5hZ2VyJztcbmV4cG9ydCAqIGZyb20gJy4vUGFyYW1ldGVyJztcbmV4cG9ydCB7IFBvaW50IH0gZnJvbSAnLi9Qb2ludCc7XG5leHBvcnQgKiBmcm9tICcuL1NpbmdsZUV2ZW50TWFuYWdlcic7XG5leHBvcnQgeyBTaXplIH0gZnJvbSAnLi9TaXplJztcbmV4cG9ydCAqIGZyb20gJy4vTW9kZWxzL0dldERhdGFNb2RlbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9FeGNlcHRpb25zL1RhYmxlYXVFeGNlcHRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vRXZlbnRzL0ZpbHRlckNoYW5nZWRFdmVudCc7XG5leHBvcnQgKiBmcm9tICcuL0V2ZW50cy9NYXJrc1NlbGVjdGVkRXZlbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9FdmVudHMvVGFibGVhdUV2ZW50JztcbmV4cG9ydCAqIGZyb20gJy4vRXZlbnRzL1RhYmxlYXVTaGVldEV2ZW50JztcbmV4cG9ydCAqIGZyb20gJy4vRXZlbnRzL1RhYmxlYXVXb3Jrc2hlZXRFdmVudCc7XG5leHBvcnQgKiBmcm9tICcuL0ludGVybmFsL1NpbmdsZUV2ZW50TWFuYWdlckltcGwnO1xuZXhwb3J0ICogZnJvbSAnLi9TZXJ2aWNlcy9EYXRhU291cmNlU2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL1NlcnZpY2VzL0dldERhdGFTZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vU2VydmljZXMvRmlsdGVyU2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL1NlcnZpY2VzL05vdGlmaWNhdGlvblNlcnZpY2UnO1xuZXhwb3J0IHsgUGFyYW1ldGVyc1NlcnZpY2UgfSBmcm9tICcuL1NlcnZpY2VzL1BhcmFtZXRlcnNTZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vU2VydmljZXMvUmVnaXN0ZXJBbGxTaGFyZWRTZXJ2aWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL1NlcnZpY2VzL1NlbGVjdGlvblNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9TZXJ2aWNlcy9TZXJ2aWNlUmVnaXN0cnknO1xuZXhwb3J0ICogZnJvbSAnLi9FbnVtTWFwcGluZ3MvSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzJztcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL0FwaVNoYXJlZC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5cbmltcG9ydCB7IFNpbmdsZUV2ZW50TWFuYWdlciB9IGZyb20gJy4vU2luZ2xlRXZlbnRNYW5hZ2VyJztcblxuLyoqXG4gKiBDbGFzcyBkZXNpZ25lZCB0byByZWdpc3RlciBhbmQgdW5yZWdpc3RlciBoYW5kbGVycyBmcm9tIGEgdXNlci4gT25seSB0aG9zZSBldmVudHNcbiAqIHdoaWNoIGFyZSBhZGRlZCB2aWEgQWRkTmV3RXZlbnRUeXBlIHdpbGwgYmUgc3VwcG9ydGVkIGJ5IHRoaXMgaW5zdGFuY2VcbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50TGlzdGVuZXJNYW5hZ2VyIGltcGxlbWVudHMgIENvbnRyYWN0LkV2ZW50TGlzdGVuZXJNYW5hZ2VyIHtcbiAgcHJpdmF0ZSBfZXZlbnRMaXN0ZW5lck1hbmFnZXJzOiB7IFt0YWJsZWF1RXZlbnRUeXBlOiBzdHJpbmddOiBTaW5nbGVFdmVudE1hbmFnZXI7IH07XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJNYW5hZ2VycyA9IHt9O1xuICB9XG5cbiAgcHVibGljIGFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlOiBDb250cmFjdC5UYWJsZWF1RXZlbnRUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyOiBDb250cmFjdC5UYWJsZWF1RXZlbnRIYW5kbGVyRm4pOiBDb250cmFjdC5UYWJsZWF1RXZlbnRVbnJlZ2lzdGVyRm4ge1xuICAgIGlmICghdGhpcy5fZXZlbnRMaXN0ZW5lck1hbmFnZXJzLmhhc093blByb3BlcnR5KGV2ZW50VHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgZXZlbnQgdHlwZSA6ICR7ZXZlbnRUeXBlfWApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9ldmVudExpc3RlbmVyTWFuYWdlcnNbZXZlbnRUeXBlXS5hZGRFdmVudExpc3RlbmVyKGhhbmRsZXIpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlOiBDb250cmFjdC5UYWJsZWF1RXZlbnRUeXBlLCBoYW5kbGVyOiBDb250cmFjdC5UYWJsZWF1RXZlbnRIYW5kbGVyRm4pOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuX2V2ZW50TGlzdGVuZXJNYW5hZ2Vycy5oYXNPd25Qcm9wZXJ0eShldmVudFR5cGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGV2ZW50IHR5cGUgOiAke2V2ZW50VHlwZX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fZXZlbnRMaXN0ZW5lck1hbmFnZXJzW2V2ZW50VHlwZV0ucmVtb3ZlRXZlbnRMaXN0ZW5lcihoYW5kbGVyKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhZGROZXdFdmVudFR5cGUoZXZlbnRNYW5hZ2VyOiBTaW5nbGVFdmVudE1hbmFnZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9ldmVudExpc3RlbmVyTWFuYWdlcnNbZXZlbnRNYW5hZ2VyLmV2ZW50VHlwZV0gPSBldmVudE1hbmFnZXI7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL0V2ZW50TGlzdGVuZXJNYW5hZ2VyLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcblxuaW1wb3J0IHsgRXZlbnRMaXN0ZW5lck1hbmFnZXIgfSBmcm9tICcuL0V2ZW50TGlzdGVuZXJNYW5hZ2VyJztcbmltcG9ydCB7IFBhcmFtZXRlckltcGwgfSBmcm9tICcuL0ludGVybmFsL1BhcmFtZXRlckltcGwnO1xuXG4vKipcbiAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBQYXJhbWV0ZXIgY29udHJhY3QuIENhbGxzIGRvd24gdG8gdGhlIGltcGxcbiAqIGNsYXNzIGZvciBhbG1vc3QgYWxsIG9mIHRoZSB3b3JrIGl0IGRvZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBQYXJhbWV0ZXIgZXh0ZW5kcyBFdmVudExpc3RlbmVyTWFuYWdlciBpbXBsZW1lbnRzIENvbnRyYWN0LlBhcmFtZXRlciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhcmFtZXRlckltcGw6IFBhcmFtZXRlckltcGwsIHNoZWV0OiBDb250cmFjdC5TaGVldCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBJbml0aWFsaXplIG91ciBldmVudCBoYW5kbGluZyBmb3IgdGhpcyBjbGFzc1xuICAgIHRoaXMucGFyYW1ldGVySW1wbC5pbml0aWFsaXplRXZlbnRzKHNoZWV0KS5mb3JFYWNoKGUgPT4gdGhpcy5hZGROZXdFdmVudFR5cGUoZSkpO1xuICB9XG5cbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1ldGVySW1wbC5uYW1lO1xuICB9XG5cbiAgcHVibGljIGdldCBjdXJyZW50VmFsdWUoKTogQ29udHJhY3QuRGF0YVZhbHVlIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJJbXBsLmN1cnJlbnRWYWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGF0YVR5cGUoKTogQ29udHJhY3QuRGF0YVR5cGUge1xuICAgIHJldHVybiB0aGlzLnBhcmFtZXRlckltcGwuZGF0YVR5cGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFsbG93YWJsZVZhbHVlcygpOiBDb250cmFjdC5QYXJhbWV0ZXJEb21haW5SZXN0cmljdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1ldGVySW1wbC5hbGxvd2FibGVWYWx1ZXM7XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlVmFsdWVBc3luYyhuZXdWYWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IERhdGUpOiBQcm9taXNlPENvbnRyYWN0LkRhdGFWYWx1ZT4ge1xuICAgIHJldHVybiB0aGlzLnBhcmFtZXRlckltcGwuY2hhbmdlVmFsdWVBc3luYyhuZXdWYWx1ZSk7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1BhcmFtZXRlci50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5cbmV4cG9ydCBjbGFzcyBQb2ludCBpbXBsZW1lbnRzIENvbnRyYWN0LlBvaW50IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgX3g6IG51bWJlciwgcHJpdmF0ZSBfeTogbnVtYmVyKSB7IH1cblxuICBwdWJsaWMgZ2V0IHgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5feDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgeSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl95O1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9Qb2ludC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5cbmV4cG9ydCBjbGFzcyBTaXplIGltcGxlbWVudHMgQ29udHJhY3QuU2l6ZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIF9oZWlnaHQ6IG51bWJlciwgcHJpdmF0ZSBfd2lkdGg6IG51bWJlcikgeyB9XG5cbiAgcHVibGljIGdldCBoZWlnaHQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5faGVpZ2h0O1xuICB9XG5cbiAgcHVibGljIGdldCB3aWR0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl93aWR0aDtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLXNoYXJlZC9zcmMvU2l6ZS50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5cbmV4cG9ydCBjbGFzcyBEYXRhVGFibGUgaW1wbGVtZW50cyBDb250cmFjdC5EYXRhVGFibGUge1xuICBwcml2YXRlIF9uYW1lOiBzdHJpbmc7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2RhdGE6IEFycmF5PEFycmF5PENvbnRyYWN0LkRhdGFWYWx1ZT4+LFxuICAgIHByaXZhdGUgX2NvbHVtbnM6IEFycmF5PENvbnRyYWN0LkNvbHVtbj4sXG4gICAgcHJpdmF0ZSBfdG90YWxSb3dDb3VudDogbnVtYmVyLFxuICAgIHByaXZhdGUgX2lzU3VtbWFyeURhdGE6IGJvb2xlYW4sXG4gICAgcHJpdmF0ZSBfbWFya3NJbmZvPzogQXJyYXk8TWFya0luZm8+KSB7XG4gICAgICAgIC8vIFRPRE86IGdldCByaWQgb2YgdGhpcyBpbiByZWRlc2lnbi5cbiAgICAgICAgdGhpcy5fbmFtZSA9IF9pc1N1bW1hcnlEYXRhID8gJ1N1bW1hcnkgRGF0YSBUYWJsZScgOiAnVW5kZXJseWluZyBEYXRhIFRhYmxlJztcbiAgICB9XG5cbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRhdGEoKTogQXJyYXk8QXJyYXk8Q29udHJhY3QuRGF0YVZhbHVlPj4ge1xuICAgIHJldHVybiB0aGlzLl9kYXRhO1xuICB9XG5cbiAgcHVibGljIGdldCBjb2x1bW5zKCk6IEFycmF5PENvbnRyYWN0LkNvbHVtbj4ge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5zO1xuICB9XG5cbiAgcHVibGljIGdldCBtYXJrc0luZm8oKTogQXJyYXk8Q29udHJhY3QuTWFya0luZm8+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fbWFya3NJbmZvO1xuICB9XG5cbiAgcHVibGljIGdldCB0b3RhbFJvd0NvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3RvdGFsUm93Q291bnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzU3VtbWFyeURhdGEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzU3VtbWFyeURhdGE7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1hcmtJbmZvIGltcGxlbWVudHMgQ29udHJhY3QuTWFya0luZm8ge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfdHlwZTogQ29udHJhY3QuTWFya1R5cGUsXG4gICAgcHJpdmF0ZSBfY29sb3I6IHN0cmluZyxcbiAgICBwcml2YXRlIF90dXBsZUlkPzogTnVtYmVyXG4gICkge31cblxuICBwdWJsaWMgZ2V0IHR5cGUoKTogQ29udHJhY3QuTWFya1R5cGUge1xuICAgIHJldHVybiB0aGlzLl90eXBlO1xuICB9XG5cbiAgcHVibGljIGdldCBjb2xvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jb2xvcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdHVwbGVJZCgpOiBOdW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl90dXBsZUlkO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb2x1bW4gaW1wbGVtZW50cyBDb250cmFjdC5Db2x1bW4ge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfZmllbGROYW1lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBfZGF0YVR5cGU6IENvbnRyYWN0LkRhdGFUeXBlLCAvLyBUT0RPOiB0aGlzIHNob3VkbCBiZSBhbiBlbnVtIHR5cGVcbiAgICBwcml2YXRlIF9pc1JlZmVyZW5jZWQ6IGJvb2xlYW4sXG4gICAgcHJpdmF0ZSBfaW5kZXg6IG51bWJlcikge31cblxuICBwdWJsaWMgZ2V0IGZpZWxkTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9maWVsZE5hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRhdGFUeXBlKCk6IENvbnRyYWN0LkRhdGFUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVR5cGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzUmVmZXJlbmNlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNSZWZlcmVuY2VkO1xuICB9XG5cbiAgcHVibGljIGdldCBpbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9pbmRleDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGF0YVZhbHVlIGltcGxlbWVudHMgQ29udHJhY3QuRGF0YVZhbHVlIHtcbiAgLyogdHNsaW50OmRpc2FibGU6bm8tYW55ICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF92YWx1ZTogYW55LFxuICAgIHByaXZhdGUgX2Zvcm1hdHRlZFZhbHVlOiBzdHJpbmcpIHt9XG5cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZm9ybWF0dGVkVmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybWF0dGVkVmFsdWU7XG4gIH1cbiAgLyogdHNsaW50OmVuYWJsZTpuby1hbnkgKi9cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL01vZGVscy9HZXREYXRhTW9kZWxzLnRzXG4gKiovIiwiZXhwb3J0IGNsYXNzIFRhYmxlYXVFeGNlcHRpb25zIHtcbiAgLy8gVE9ETywgQXBpRXJyb3JDb2RlcyBuZWVkIHRvIGJlIGFkZGVkIHRvIGV4dGVybmFsIGludGVyZmFjZXMuXG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9FeGNlcHRpb25zL1RhYmxlYXVFeGNlcHRpb25zLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcblxuaW1wb3J0IHsgVGFibGVhdVdvcmtzaGVldEV2ZW50IH0gZnJvbSAnLi9UYWJsZWF1V29ya3NoZWV0RXZlbnQnO1xuXG5leHBvcnQgY2xhc3MgRmlsdGVyQ2hhbmdlZEV2ZW50IGV4dGVuZHMgVGFibGVhdVdvcmtzaGVldEV2ZW50IGltcGxlbWVudHMgQ29udHJhY3QuRmlsdGVyQ2hhbmdlZEV2ZW50IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHdvcmtzaGVldDogQ29udHJhY3QuV29ya3NoZWV0LCBwcml2YXRlIF9maWVsZE5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKENvbnRyYWN0LlRhYmxlYXVFdmVudFR5cGUuRmlsdGVyQ2hhbmdlZCwgd29ya3NoZWV0KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmllbGROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkTmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGaWx0ZXJBc3luYygpOiBQcm9taXNlPENvbnRyYWN0LkZpbHRlcj4ge1xuICAgIHJldHVybiB0aGlzLl93b3Jrc2hlZXQuZ2V0RmlsdGVyc0FzeW5jKCkudGhlbjxDb250cmFjdC5GaWx0ZXI+KGZpbHRlcnMgPT4ge1xuICAgICAgLy8gVE9ETzogRmlsdGVyaW5nIG9mIHRoZSBmaWx0ZXJzIHNob3VsZCBldmVudHVhbGx5IGJlIGRvbmUgcGxhdGZvcm0gc2lkZS5cbiAgICAgIGNvbnN0IGV2ZW50ZWRGaWx0ZXIgPSBmaWx0ZXJzLmZpbmQoKGZpbHRlcikgPT4gKGZpbHRlci5maWVsZE5hbWUgPT09IHRoaXMuX2ZpZWxkTmFtZSkpO1xuXG4gICAgICBpZiAoIWV2ZW50ZWRGaWx0ZXIpIHtcbiAgICAgICAgLy8gV2Ugc2hvdWxkbid0IGhpdCB0aGlzIHVubGVzcyB0aGUgZmlsdGVyIHdhcyByZW1vdmVkIGZyb20gdGhlIHdvcmtzaGVldFxuICAgICAgICAvLyBhZnRlciB0aGUgZXZlbnQgd2FzIHJhaXNlZC5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnRlcm5hbCBFcnJvcjogRmlsdGVyIG5vIGxvbmdlciBmb3VuZCBpbiB3b3Jrc2hlZXQuJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBldmVudGVkRmlsdGVyO1xuICAgIH0pO1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9FdmVudHMvRmlsdGVyQ2hhbmdlZEV2ZW50LnRzXG4gKiovIiwiLyoqXG4gKiBUaGlzIGlzIHlvdXIgbWFpbi4gVGhpcyBpcyB3aGVyZSB5b3UgcmUtZXhwb3J0IGV2ZXJ5dGhpbmcgeW91IHdhbnQgdG8gYmUgcHVibGljbHkgYXZhaWxhYmxlLlxuICpcbiAqIFRoZSBidWlsZCBlbmZvcmNlcyB0aGF0IHRoZSBmaWxlIGhhcyB0aGUgc2FtZSBuYW1lIGFzIHRoZSBnbG9iYWwgdmFyaWFibGUgdGhhdCBpcyBleHBvcnRlZC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL0FuYWx5dGljc0ludGVyZmFjZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9EYXRhU291cmNlSW50ZXJmYWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL0RhdGFUYWJsZUludGVyZmFjZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9FbmNvZGluZ0ludGVyZmFjZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9FbnVtcyc7XG5leHBvcnQgKiBmcm9tICcuL0V2ZW50SW50ZXJmYWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL0ZpbHRlckludGVyZmFjZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9TZWxlY3Rpb25JbnRlcmZhY2VzJztcbmV4cG9ydCAqIGZyb20gJy4vUGFyYW1ldGVySW50ZXJmYWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL1NlbGVjdGlvbkludGVyZmFjZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9TaGVldEludGVyZmFjZXMnO1xuXG5leHBvcnQgeyBFeHRlbnNpb25zIH0gZnJvbSAnLi9OYW1lc3BhY2VzL0V4dGVuc2lvbnMnO1xuZXhwb3J0IHsgRGFzaGJvYXJkQ29udGVudCB9IGZyb20gJy4vTmFtZXNwYWNlcy9EYXNoYm9hcmRDb250ZW50JztcbmV4cG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi9OYW1lc3BhY2VzL0Vudmlyb25tZW50JztcbmV4cG9ydCB7IFNldHRpbmdzIH0gZnJvbSAnLi9OYW1lc3BhY2VzL1NldHRpbmdzJztcbmV4cG9ydCB7IFVJIH0gZnJvbSAnLi9OYW1lc3BhY2VzL1VJJztcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1leHRlcm5hbC1jb250cmFjdC9zcmMvQXBpRXh0ZXJuYWxDb250cmFjdC50c1xuICoqLyIsIi8vIEFsbCBlbnVtIHZhbHVlcyBtYWRlIGF2YWlsYWJsZSB0byBFeHRlbnNpb25zIGRldmVsb3BlcnMuXG4vLyBFbnVtcyBzaG91bGQgYmUga2VwdCBpbiBhbHBoYWJldGljYWwgb3JkZXIuXG5cbi8qKlxuICogVGhlIGNvbnRleHQgaW4gd2hpY2ggdGhlIEV4dGVuc2lvbnMgaXMgY3VycmVudGx5IHJ1bm5pbmcuXG4gKi9cbmV4cG9ydCBlbnVtIEV4dGVuc2lvbkNvbnRleHQge1xuICBEZXNrdG9wID0gJ2Rlc2t0b3AnLFxuICBTZXJ2ZXIgPSAnc2VydmVyJ1xufVxuXG4vKipcbiAqIFRoZSBtb2RlIGluIHdoaWNoIHRoZSBFeHRlbnNpb25zIGlzIGN1cnJlbnRseSBydW5uaW5nLlxuICovXG5leHBvcnQgZW51bSBFeHRlbnNpb25Nb2RlIHtcbiAgQXV0aG9yaW5nID0gJ2F1dGhvcmluZycsXG4gIFZpZXdpbmcgPSAndmlld2luZydcbn1cblxuZXhwb3J0IGVudW0gQW5hbHl0aWNzT2JqZWN0VHlwZSB7XG4gIENsdXN0ZXIgPSAnY2x1c3RlcicsXG4gIEZvcmVjYXN0ID0gJ2ZvcmVjYXN0JyxcbiAgVHJlbmRMaW5lID0gJ3RyZW5kLWxpbmUnXG59XG5cbmV4cG9ydCBlbnVtIENvbHVtblR5cGUge1xuICBEaXNjcmV0ZSA9ICdkaXNjcmV0ZScsXG4gIENvbnRpbnVvdXMgPSAnY29udGludW91cydcbn1cblxuLyoqXG4gKiBXaGF0IHRoZSBvYmplY3QgcmVwcmVzZW50cyBpbiBhIGRhc2hib2FyZC5cbiAqL1xuZXhwb3J0IGVudW0gRGFzaGJvYXJkT2JqZWN0VHlwZSB7XG4gIEJsYW5rID0gJ2JsYW5rJyxcbiAgV29ya3NoZWV0ID0gJ3dvcmtzaGVldCcsXG4gIFF1aWNrRmlsdGVyID0gJ3F1aWNrLWZpbHRlcicsXG4gIFBhcmFtZXRlckNvbnRyb2wgPSAncGFyYW1ldGVyLWNvbnRyb2wnLFxuICBQYWdlRmlsdGVyID0gJ3BhZ2UtZmlsdGVyJyxcbiAgTGVnZW5kID0gJ2xlZ2VuZCcsXG4gIFRpdGxlID0gJ3RpdGxlJyxcbiAgVGV4dCA9ICd0ZXh0JyxcbiAgSW1hZ2UgPSAnaW1hZ2UnLFxuICBXZWJQYWdlID0gJ3dlYi1wYWdlJyxcbiAgRXh0ZW5zaW9uID0gJ2V4dGVuc2lvbidcbn1cblxuLyoqXG4gKiBUaGUgZGlmZmVyZW50IHR5cGVzIG9mIGRhdGEgYSB2YWx1ZSBjYW4gaGF2ZVxuICovXG5leHBvcnQgZW51bSBEYXRhVHlwZSB7XG4gIFN0cmluZyA9ICdzdHJpbmcnLFxuICBJbnQgPSAnaW50JyxcbiAgRmxvYXQgPSAnZmxvYXQnLFxuICBCb29sID0gJ2Jvb2wnLFxuICBEYXRlID0gJ2RhdGUnLFxuICBEYXRlVGltZSA9ICdkYXRlLXRpbWUnLFxuICBTcGF0aWFsID0gJ3NwYXRpYWwnXG59XG5cbi8qKlxuICogVmFsaWQgZGF0ZSByYW5nZXMgZm9yIGEgcmVsYXRpdmUgZGF0ZSBmaWx0ZXIuXG4gKi9cbmV4cG9ydCBlbnVtIERhdGVSYW5nZVR5cGUge1xuICBMYXN0ID0gJ2xhc3QnLFxuICBMYXN0TiA9ICdsYXN0LW4nLFxuICBOZXh0ID0gJ25leHQnLFxuICBOZXh0TiA9ICduZXh0LW4nLFxuICBDdXJyZW50ID0gJ2N1cnJlbnQnLFxuICBUb0RhdGUgPSAndG8tZGF0ZSdcbn1cblxuLyoqXG4gKiBUeXBlcyBvZiBkaWFsb2cgZXZlbnQgZm9yIGV2ZW50IGxpc3RlbmluZyBiZXR3ZWVuIGEgcGFyZW50IEV4dGVuc2lvbnMgYW5kIGEgcG9wdXAgZGlhbG9nLlxuICovXG5leHBvcnQgZW51bSBEaWFsb2dFdmVudFR5cGUge1xuICBEaWFsb2dNZXNzYWdlID0gJ2RpYWxvZy1tZXNzYWdlJyxcbiAgRGlhbG9nRXZlbnQgPSAnZGlhbG9nLWV2ZW50J1xufVxuXG5leHBvcnQgZW51bSBFbmNvZGluZ1R5cGUge1xuICBDb2x1bW4gPSAnY29sdW1uJyxcbiAgUm93ID0gJ3JvdycsXG4gIFBhZ2UgPSAncGFnZScsXG4gIEZpbHRlciA9ICdmaWx0ZXInLFxuICBNYXJrc1R5cGUgPSAnbWFya3MtdHlwZScsXG4gIE1lYXN1cmVWYWx1ZXMgPSAnbWVhc3VyZS12YWx1ZXMnLFxuICBDb2xvciA9ICdjb2xvcicsXG4gIFNpemUgPSAnc2l6ZScsXG4gIExhYmVsID0gJ2xhYmVsJyxcbiAgRGV0YWlsID0gJ2RldGFpbCcsXG4gIFRvb2x0aXAgPSAndG9vbHRpcCcsXG4gIFNoYXBlID0gJ3NoYXBlJyxcbiAgUGF0aCA9ICdwYXRoJyxcbiAgQW5nbGUgPSAnYW5nbGUnXG59XG5cbi8qKlxuICogQWxsIGVycm9yIGNvZGVzIHVzZWQgYnkgdGhlIEV4dGVuc2lvbnMgQVBJLlxuICovXG5leHBvcnQgZW51bSBFcnJvckNvZGVzIHtcbiAgLyoqXG4gICAqIE9ubHkgb25lIGRpYWxvZyBjYW4gYmUgb3BlbmVkIGF0IHRpbWUgd2l0aCB0aGUgVUkgbmFtZXNwYWNlIGZ1bmN0aW9uYWxpdHkuXG4gICAqL1xuICBEaWFsb2dBbHJlYWR5T3BlbiA9ICdkaWFsb2ctYWxyZWFkeS1vcGVuJyxcbiAgLyoqXG4gICAqIFRoZSBvcGVuIGRpYWxvZyB3YXMgY2xvc2VkIGJ5IHRoZSB1c2VyLlxuICAgKi9cbiAgRGlhbG9nQ2xvc2VkQnlVc2VyID0gJ2RpYWxvZy1jbG9zZWQtYnktdXNlcicsXG4gIC8qKlxuICAgKiBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIHBlcmZvcm0gYSBmaWx0ZXIgb3BlcmF0aW9uLlxuICAgKi9cbiAgRmlsdGVyQ2Fubm90QmVQZXJmb3JtZWQgPSAnZmlsdGVyLWNhbm5vdC1iZS1wZXJmb3JtZWQnLFxuICAvKipcbiAgICogQW4gZXJyb3Igb2NjdXJyZWQgd2l0aGluIHRoZSBUYWJsZWF1IEV4dGVuc2lvbnMgQVBJLiBDb250YWN0IFRhYmxlYXUgU3VwcG9ydC5cbiAgICovXG4gIEludGVybmFsRXJyb3IgPSAnaW50ZXJuYWwtZXJyb3InLFxuICAvKipcbiAgICogQW4gaW52YWxpZCBhZ2dyZWdhdGlvbiB3YXMgc3BlY2lmaWVkIGZvciB0aGUgZmlsdGVyLCBzdWNoIGFzIHNldHRpbmcgYSByYW5nZSBmaWx0ZXIgdG8gXCJTVU0oU2FsZXMpXCIgaW5zdGVhZCBvZiBcIlNhbGVzXCIuXG4gICAqL1xuICBJbnZhbGlkQWdncmVnYXRpb25GaWVsZE5hbWUgPSAnaW52YWxpZC1hZ2dyZWdhdGlvbi1maWVsZC1uYW1lJyxcbiAgLyoqXG4gICAqIEEgZGlhbG9nIG11c3QgZmlyc3QgbGF1bmNoIHRvLCBhbmQgc2VuZCBtZXNzYWdlcyBmcm9tLCB0aGUgc2FtZSBkb21haW4gYXMgdGhlIHBhcmVudCBFeHRlbnNpb25zLlxuICAgKi9cbiAgSW52YWxpZERvbWFpbkRpYWxvZyA9ICdpbnZhbGlkLWRpYWxvZy1kb21haW4nLFxuICAvKipcbiAgICogQW4gaW52YWxpZCBkYXRlIHdhcyBzcGVjaWZpZWQgaW4gYSBtZXRob2QgdGhhdCByZXF1aXJlZCBhIGRhdGUgcGFyYW1ldGVyLlxuICAgKi9cbiAgSW52YWxpZERhdGVQYXJhbWV0ZXIgPSAnaW52YWxpZC1kYXRlLXBhcmFtZXRlcicsXG4gIC8qKlxuICAgKiBBIGZpbHRlciBvcGVyYXRpb24gd2FzIGF0dGVtcHRlZCBvbiBhIGZpZWxkIHRoYXQgZG9lcyBub3QgZXhpc3QgaW4gdGhlIGRhdGEgc291cmNlLlxuICAgKi9cbiAgSW52YWxpZEZpbHRlckZpZWxkTmFtZSA9ICdpbnZhbGlkLWZpbHRlci1maWVsZC1uYW1lJyxcbiAgLyoqXG4gICAqIEEgZmlsdGVyIG9wZXJhdGlvbiB3YXMgYXR0ZW1wdGVkIHVzaW5nIGEgdmFsdWUgdGhhdCBpcyB0aGUgd3JvbmcgZGF0YSB0eXBlIG9yIGZvcm1hdC5cbiAgICovXG4gIEludmFsaWRGaWx0ZXJGaWVsZFZhbHVlID0gJ2ludmFsaWQtZmlsdGVyLWZpZWxkLXZhbHVlJyxcbiAgLyoqXG4gICAqIEEgcGFyYW1ldGVyIGlzIG5vdCB0aGUgY29ycmVjdCBkYXRhIHR5cGUgb3IgZm9ybWF0LiBUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBpbiB0aGUgRXJyb3IubWVzc2FnZSBmaWVsZC5cbiAgICovXG4gIEludmFsaWRQYXJhbWV0ZXIgPSAnaW52YWxpZC1wYXJhbWV0ZXInLFxuICAvKipcbiAgICogQW4gaW52YWxpZCBkYXRlIHZhbHVlIHdhcyBzcGVjaWZpZWQgaW4gYSBTaGVldC5zZWxlY3RNYXJrc0FzeW5jKCkgY2FsbCBmb3IgYSBkYXRlIGZpZWxkLlxuICAgKi9cbiAgSW52YWxpZFNlbGVjdGlvbkRhdGUgPSAnaW52YWxpZC1zZWxlY3Rpb24tZGF0ZScsXG4gIC8qKlxuICAgKiBBIGZpZWxkIHdhcyBzcGVjaWZpZWQgaW4gYSBTaGVldC5zZWxlY3RNYXJrc0FzeW5jKCkgY2FsbCB0aGF0IGRvZXMgbm90IGV4aXN0IGluIHRoZSBkYXRhIHNvdXJjZS5cbiAgICovXG4gIEludmFsaWRTZWxlY3Rpb25GaWVsZE5hbWUgPSAnaW52YWxpZC1zZWxlY3Rpb24tZmllbGQtbmFtZScsXG4gIC8qKlxuICAgKiBBbiBpbnZhbGlkIHZhbHVlIHdhcyBzcGVjaWZpZWQgaW4gYSBTaGVldC5zZWxlY3RNYXJrc0FzeW5jKCkgY2FsbC5cbiAgICovXG4gIEludmFsaWRTZWxlY3Rpb25WYWx1ZSA9ICdpbnZhbGlkLXNlbGVjdGlvbi12YWx1ZScsXG4gIC8qKlxuICAgKiBBIHJlcXVpcmVkIHBhcmFtZXRlciB3YXMgbm90IHNwZWNpZmllZCwgbnVsbCwgb3IgYW4gZW1wdHkgc3RyaW5nL2FycmF5LlxuICAgKi9cbiAgTnVsbE9yRW1wdHlQYXJhbWV0ZXIgPSAnbnVsbC1vci1lbXB0eS1wYXJhbWV0ZXInLFxuICAvKipcbiAgICogQW4gdW5rbm93biBldmVudCBuYW1lIHdhcyBzcGVjaWZpZWQgaW4gdGhlIGNhbGwgdG8gVml6LmFkZEV2ZW50TGlzdGVuZXJvciBWaXoucmVtb3ZlRXZlbnRMaXN0ZW5lci5cbiAgICovXG4gIFVuc3VwcG9ydGVkRXZlbnROYW1lID0gJ3Vuc3VwcG9ydGVkLWV2ZW50LW5hbWUnXG59XG5cbi8qKlxuICogIFR5cGUgb2YgYWdncmVnYXRpb24gb24gYSBmaWVsZC5cbiAqL1xuZXhwb3J0IGVudW0gRmllbGRBZ2dyZWdhdGlvblR5cGUge1xuICBTdW0gPSAnc3VtJyxcbiAgQXZnID0gJ2F2ZycsXG4gIE1pbiA9ICdtaW4nLFxuICBNYXggPSAnbWF4JyxcbiAgU3RkZXYgPSAnc3RkZXYnLFxuICBTdGRldnAgPSAnc3RkZXZwJyxcbiAgVmFyID0gJ3ZhcicsXG4gIFZhcnAgPSAndmFycCcsXG4gIENvdW50ID0gJ2NvdW50JyxcbiAgQ291bnRkID0gJ2NvdW50ZCcsXG4gIE1lZGlhbiA9ICdtZWRpYW4nLFxuICBBdHRyID0gJ2F0dHInLFxuICBOb25lID0gJ25vbmUnLFxuICBZZWFyID0gJ3llYXInLFxuICBRdHIgPSAncXRyJyxcbiAgTW9udGggPSAnbW9udGgnLFxuICBEYXkgPSAnZGF5JyxcbiAgSG91ciA9ICdob3VyJyxcbiAgTWludXRlID0gJ21pbnV0ZScsXG4gIFNlY29uZCA9ICdzZWNvbmQnLFxuICBXZWVrID0gJ3dlZWsnLFxuICBXZWVrZGF5ID0gJ3dlZWtkYXknLFxuICBNb250aFllYXIgPSAnbW9udGgteWVhcicsXG4gIE1keSA9ICdtZHknLFxuICBFbmQgPSAnZW5kJyxcbiAgVHJ1bmNZZWFyID0gJ3RydW5jLXllYXInLFxuICBUcnVuY1F0ciA9ICd0cnVuYy1xdHInLFxuICBUcnVuY01vbnRoID0gJ3RydW5jLW1vbnRoJyxcbiAgVHJ1bmNXZWVrID0gJ3RydW5jLXdlZWsnLFxuICBUcnVuY0RheSA9ICd0cnVuYy1kYXknLFxuICBUcnVuY0hvdXIgPSAndHJ1bmMtaG91cicsXG4gIFRydW5jTWludXRlID0gJ3RydW5jLW1pbnV0ZScsXG4gIFRydW5jU2Vjb25kID0gJ3RydW5jLXNlY29uZCcsXG4gIFF1YXJ0MSA9ICdxdWFydDEnLFxuICBRdWFydDMgPSAncXVhcnQzJyxcbiAgU2tld25lc3MgPSAnc2tld25lc3MnLFxuICBLdXJ0b3NpcyA9ICdrdXJ0b3NpcycsXG4gIEluT3V0ID0gJ2luLW91dCcsXG4gIFVzZXIgPSAndXNlcidcbn1cblxuLyoqXG4gKiBSb2xlIG9mIGEgZmllbGQuXG4gKi9cbmV4cG9ydCBlbnVtIEZpZWxkUm9sZVR5cGUge1xuICBEaW1lbnNpb24gPSAnZGltZW5zaW9uJyxcbiAgTWVhc3VyZSA9ICdtZWFzdXJlJyxcbiAgVW5rbm93biA9ICd1bmtub3duJ1xufVxuXG4vKipcbiAqIEFuIGVudW1lcmF0aW9uIG9mIHRoZSB2YWxpZCB0eXBlcyBvZiBmaWx0ZXJzIHRoYXQgY2FuIGJlIGFwcGxpZWQuXG4gKi9cbmV4cG9ydCBlbnVtIEZpbHRlclR5cGUge1xuICBDYXRlZ29yaWNhbCA9ICdjYXRlZ29yaWNhbCcsXG4gIFJhbmdlID0gJ3JhbmdlJyxcbiAgSGllcmFyY2hpY2FsID0gJ2hpZXJhcmNoaWNhbCcsXG4gIFJlbGF0aXZlRGF0ZSA9ICdyZWxhdGl2ZS1kYXRlJ1xufVxuXG4vKipcbiAqIFRoZSBkaWZmZXJlbnQgdXBkYXRlIHR5cGVzIGZvciBhcHBseWluZyBmaWx0ZXJcbiAqL1xuZXhwb3J0IGVudW0gRmlsdGVyVXBkYXRlVHlwZSB7XG4gIEFkZCA9ICdhZGQnLFxuICBBbGwgPSAnYWxsJyxcbiAgUmVwbGFjZSA9ICdyZXBsYWNlJyxcbiAgUmVtb3ZlID0gJ3JlbW92ZSdcbn1cblxuLyoqXG4gKiBUaGUgZG9tYWluIHR5cGUgZm9yIGEgZmlsdGVyXG4gKi9cbmV4cG9ydCBlbnVtIEZpbHRlckRvbWFpblR5cGUge1xuICAvKipcbiAgICogVGhlIGRvbWFpbiB2YWx1ZXMgdGhhdCBhcmUgcmVsZXZhbnQgdG8gdGhlIHNwZWNpZmllZCBmaWx0ZXJcbiAgICogaS5lLiB0aGUgZG9tYWluIGlzIHJlc3RyaWN0ZWQgYnkgYSBwcmV2aW91cyBmaWx0ZXJcbiAgICovXG4gIFJlbGV2YW50ID0gJ3JlbGV2YW50JyxcbiAgLyoqXG4gICAqIGxpc3Qgb2YgYWxsIHBvc3NpYmxlIGRvbWFpbiB2YWx1ZXMgZnJvbSBkYXRhYmFzZVxuICAgKi9cbiAgRGF0YWJhc2UgPSAnZGF0YWJhc2UnXG59XG5cbi8qKlxuICogVGhlIG9wdGlvbiBmb3Igc3BlY2lmeWluZyB3aGljaCB2YWx1ZXMgdG8gaW5jbHVkZSBmb3IgZmlsdGVyaW5nXG4gKiBJbmRpY2F0ZXMgd2hhdCB0byBkbyB3aXRoIG51bGwgdmFsdWVzIGZvciBhIGdpdmVuIGZpbHRlciBvciBtYXJrIHNlbGVjdGlvbiBjYWxsLlxuICovXG5leHBvcnQgZW51bSBGaWx0ZXJOdWxsT3B0aW9uIHtcbiAgTnVsbFZhbHVlcyA9ICdudWxsLXZhbHVlcycsXG4gIE5vbk51bGxWYWx1ZXMgPSAnbm9uLW51bGwtdmFsdWVzJyxcbiAgQWxsVmFsdWVzID0gJ2FsbC12YWx1ZXMnXG59XG5cbi8qKlxuICogVHlwZSBvZiBtYXJrIGZvciBhIGdpdmVuIG1hcmtzIGNhcmQgaW4gYSB2aXouXG4gKi9cbmV4cG9ydCBlbnVtIE1hcmtUeXBlIHtcbiAgQmFyID0gJ2JhcicsXG4gIExpbmUgPSAnbGluZScsXG4gIEFyZWEgPSAnYXJlYScsXG4gIFNxdWFyZSA9ICdzcXVhcmUnLFxuICBDaXJjbGUgPSAnY2lyY2xlJyxcbiAgU2hhcGUgPSAnc2hhcGUnLFxuICBUZXh0ID0gJ3RleHQnLFxuICBNYXAgPSAnbWFwJyxcbiAgUGllID0gJ3BpZScsXG4gIEdhbnR0QmFyID0gJ2dhbnR0LWJhcicsXG4gIFBvbHlnb24gPSAncG9seWdvbidcbn1cblxuLyoqXG4gKiBBbiBlbnVtZXJhdGlvbiBkZXNjcmliaW5nIHRoZSBkaWZmZXJlbnQgdHlwZXMgb2YgYWxsb3dhYmxlIHZhbHVlcy5cbiAqIFRoaXMgaXMgdXNlZCBmb3IgcmVzdHJpY3RpbmcgdGhlIGRvbWFpbiBvZiBhIHBhcmFtZXRlclxuICovXG5leHBvcnQgZW51bSBQYXJhbWV0ZXJWYWx1ZVR5cGUge1xuICBBbGwgPSAnYWxsJyxcbiAgTGlzdCA9ICdsaXN0JyxcbiAgUmFuZ2UgPSAncmFuZ2UnXG59XG5cbi8qKlxuICogRGF0ZSBwZXJpb2QgdXNlZCBpbiBmaWx0ZXJzIGFuZCBpbiBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgZW51bSBQZXJpb2RUeXBlIHtcbiAgWWVhcnMgPSAneWVhcnMnLFxuICBRdWFydGVycyA9ICdxdWFydGVycycsXG4gIE1vbnRocyA9ICdtb250aHMnLFxuICBXZWVrcyA9ICd3ZWVrcycsXG4gIERheXMgPSAnZGF5cycsXG4gIEhvdXJzID0gJ2hvdXJzJyxcbiAgTWludXRlcyA9ICdtaW51dGVzJyxcbiAgU2Vjb25kcyA9ICdzZWNvbmRzJ1xufVxuXG5leHBvcnQgZW51bSBRdWlja1RhYmxlQ2FsY1R5cGUge1xuICBSdW5uaW5nVG90YWwgPSAncnVubmluZy10b3RhbCcsXG4gIERpZmZlcmVuY2UgPSAnZGlmZmVyZW5jZScsXG4gIFBlcmNlbnREaWZmZXJlbmNlID0gJ3BlcmNlbnQtZGlmZmVyZW5jZScsXG4gIFBlcmNlbnRPZlRvdGFsID0gJ3BlcmNlbnQtb2YtdG90YWwnLFxuICBSYW5rID0gJ3JhbmsnLFxuICBQZXJjZW50aWxlID0gJ3BlcmNlbnRpbGUnLFxuICBNb3ZpbmdBdmVyYWdlID0gJ21vdmluZy1hdmVyYWdlJyxcbiAgWVREVG90YWwgPSAneXRkLXRvdGFsJyxcbiAgQ29tcG91bmRHcm93dGhSYXRlID0gJ2NvbXBvdW5kLWdyb3d0aC1yYXRlJyxcbiAgWWVhck92ZXJZZWFyR3Jvd3RoID0gJ3llYXItb3Zlci15ZWFyLWdyb3d0aCcsXG4gIFlUREdyb3d0aCA9ICd5dGQtZ3Jvd3RoJyxcbiAgVW5kZWZpbmVkID0gJ3VuZGVmaW5lZCdcbn1cblxuLyoqXG4gKiBFbnVtIGZvciBzcGVjaWZ5aW5nIHRoZSBzZWxlY3Rpb24gdHlwZSBmb3Igc2VsZWN0IG1hcmtzIGFwaS5cbiAqL1xuZXhwb3J0IGVudW0gU2VsZWN0aW9uVXBkYXRlVHlwZSB7XG4gIFJlcGxhY2UgPSAnc2VsZWN0LXJlcGxhY2UnLFxuICBBZGQgPSAnc2VsZWN0LWFkZCcsXG4gIFJlbW92ZSA9ICdzZWxlY3QtcmVtb3ZlJ1xufVxuXG4vKipcbiAqIFRoZSB0eXBlIG9mIHNoZWV0IGEgU2hlZXQgb2JqZWN0IHJlcHJlc2VudHNcbiAqL1xuZXhwb3J0IGVudW0gU2hlZXRUeXBlIHtcbiAgRGFzaGJvYXJkID0gJ2Rhc2hib2FyZCcsXG4gIFN0b3J5ID0gJ3N0b3J5JyxcbiAgV29ya3NoZWV0ID0gJ3dvcmtzaGVldCdcbn1cblxuZXhwb3J0IGVudW0gU29ydERpcmVjdGlvbiB7XG4gIEluY3JlYXNpbmcgPSAnaW5jcmVhc2luZycsXG4gIERlY3JlYXNpbmcgPSAnZGVjcmVhc2luZydcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgY2VydGFpbiB0eXBlIG9mIGV2ZW50IHdoaWNoIGNhbiBiZSBsaXN0ZW5lZCBmb3JcbiAqL1xuZXhwb3J0IGVudW0gVGFibGVhdUV2ZW50VHlwZSB7XG4gIC8qKiBSYWlzZWQgd2hlbiBhbnkgZmlsdGVyIGhhcyBjaGFuZ2VkIHN0YXRlLiovXG4gIEZpbHRlckNoYW5nZWQgPSAnZmlsdGVyLWNoYW5nZWQnLFxuXG4gIC8qKiBUaGUgc2VsZWN0ZWQgbWFya3Mgb24gYSB2aXN1YWxpemF0aW9uIGhhcyBjaGFuZ2VkICovXG4gIE1hcmtTZWxlY3Rpb25DaGFuZ2VkID0gJ21hcmstc2VsZWN0aW9uLWNoYW5nZWQnLFxuXG4gIC8qKiBBIHBhcmFtZXRlciBoYXMgaGFkIGl0cyB2YWx1ZSBtb2RpZmllZCAqL1xuICBQYXJhbWV0ZXJDaGFuZ2VkID0gJ3BhcmFtZXRlci1jaGFuZ2VkJ1xufVxuXG5leHBvcnQgZW51bSBUcmVuZExpbmVNb2RlbFR5cGUge1xuICBMaW5lYXIgPSAnbGluZWFyJyxcbiAgTG9nYXJpdGhtaWMgPSAnbG9nYXJpdGhtaWMnLFxuICBFeHBvbmVudGlhbCA9ICdleHBvbmVudGlhbCcsXG4gIFBvbHlub21pYWwgPSAncG9seW5vbWlhbCdcbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1leHRlcm5hbC1jb250cmFjdC9zcmMvRW51bXMudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xuXG5pbXBvcnQgeyBUYWJsZWF1U2hlZXRFdmVudCB9IGZyb20gJy4vVGFibGVhdVNoZWV0RXZlbnQnO1xuXG5leHBvcnQgY2xhc3MgVGFibGVhdVdvcmtzaGVldEV2ZW50IGV4dGVuZHMgVGFibGVhdVNoZWV0RXZlbnQgaW1wbGVtZW50cyBDb250cmFjdC5UYWJsZWF1V29ya3NoZWV0RXZlbnQge1xuICBwdWJsaWMgZ2V0IHdvcmtzaGVldCgpOiBDb250cmFjdC5Xb3Jrc2hlZXQge1xuICAgIHJldHVybiB0aGlzLl93b3Jrc2hlZXQ7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IodHlwZTogQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZSwgcHJvdGVjdGVkIF93b3Jrc2hlZXQ6IENvbnRyYWN0LldvcmtzaGVldCkge1xuICAgIHN1cGVyKHR5cGUsIF93b3Jrc2hlZXQpO1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9FdmVudHMvVGFibGVhdVdvcmtzaGVldEV2ZW50LnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcblxuaW1wb3J0IHsgVGFibGVhdUV2ZW50IH0gZnJvbSAnLi9UYWJsZWF1RXZlbnQnO1xuXG5leHBvcnQgY2xhc3MgVGFibGVhdVNoZWV0RXZlbnQgZXh0ZW5kcyBUYWJsZWF1RXZlbnQgaW1wbGVtZW50cyBDb250cmFjdC5UYWJsZWF1U2hlZXRFdmVudCB7XG4gIHByaXZhdGUgX3NoZWV0OiBDb250cmFjdC5TaGVldDtcblxuICBwdWJsaWMgZ2V0IHNoZWV0KCk6IENvbnRyYWN0LlNoZWV0IHtcbiAgICByZXR1cm4gdGhpcy5fc2hlZXQ7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IodHlwZTogQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZSwgc2hlZXQ6IENvbnRyYWN0LlNoZWV0KSB7XG4gICAgc3VwZXIodHlwZSk7XG5cbiAgICB0aGlzLl9zaGVldCA9IHNoZWV0O1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9FdmVudHMvVGFibGVhdVNoZWV0RXZlbnQudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xuXG5leHBvcnQgY2xhc3MgVGFibGVhdUV2ZW50IGltcGxlbWVudHMgQ29udHJhY3QuVGFibGVhdUV2ZW50IHtcbiAgcHJpdmF0ZSBfdHlwZTogQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IodHlwZTogQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZSkge1xuICAgIHRoaXMuX3R5cGUgPSB0eXBlO1xuICB9XG5cbiAgcHVibGljIGdldCB0eXBlKCk6IENvbnRyYWN0LlRhYmxlYXVFdmVudFR5cGUge1xuICAgIHJldHVybiB0aGlzLl90eXBlO1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9FdmVudHMvVGFibGVhdUV2ZW50LnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcblxuaW1wb3J0IHsgVGFibGVhdVdvcmtzaGVldEV2ZW50IH0gZnJvbSAnLi9UYWJsZWF1V29ya3NoZWV0RXZlbnQnO1xuXG5leHBvcnQgY2xhc3MgTWFya3NTZWxlY3RlZEV2ZW50IGV4dGVuZHMgVGFibGVhdVdvcmtzaGVldEV2ZW50IGltcGxlbWVudHMgQ29udHJhY3QuTWFya3NTZWxlY3RlZEV2ZW50IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHdvcmtzaGVldDogQ29udHJhY3QuV29ya3NoZWV0KSB7XG4gICAgc3VwZXIoQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZS5NYXJrU2VsZWN0aW9uQ2hhbmdlZCwgd29ya3NoZWV0KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNYXJrc0FzeW5jKCk6IFByb21pc2U8Q29udHJhY3QuTWFya3NDb2xsZWN0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMud29ya3NoZWV0LmdldFNlbGVjdGVkTWFya3NBc3luYygpO1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9FdmVudHMvTWFya3NTZWxlY3RlZEV2ZW50LnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcblxuaW1wb3J0IHsgU2luZ2xlRXZlbnRNYW5hZ2VyIH0gZnJvbSAnLi4vU2luZ2xlRXZlbnRNYW5hZ2VyJztcblxuLyoqXG4gKiBUaGlzIGNsYXNzIGltcGxlbWVudHMgdGhlIFNpbmdsZUV2ZW50TWFuYWdlciBpbnRlcmZhY2UgZm9yIGEgc2luZ2xlIHR5cGUgb2YgVGFibGVhdSBldmVudFxuICpcbiAqIEB0ZW1wbGF0ZSBURXZlbnRUeXBlIFRoZSBUYWJsZWF1IGV2ZW50IHR5cGUgdGhpcyBjbGFzcyBzcGVjaWFsaXplc1xuICovXG5leHBvcnQgY2xhc3MgU2luZ2xlRXZlbnRNYW5hZ2VySW1wbDxURXZlbnRUeXBlIGV4dGVuZHMgQ29udHJhY3QuVGFibGVhdUV2ZW50PiBpbXBsZW1lbnRzIFNpbmdsZUV2ZW50TWFuYWdlciB7XG4gIHByaXZhdGUgX2V2ZW50VHlwZTogQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZTtcbiAgcHJpdmF0ZSBfaGFuZGxlcnM6IEFycmF5PChldmVudE9iajogVEV2ZW50VHlwZSkgPT4gdm9pZD47XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGV2ZW50VHlwZTogQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZSkge1xuICAgIHRoaXMuX2V2ZW50VHlwZSA9IGV2ZW50VHlwZTtcbiAgICB0aGlzLl9oYW5kbGVycyA9IFtdO1xuICB9XG5cbiAgcHVibGljIGdldCBldmVudFR5cGUoKTogQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50VHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRFdmVudExpc3RlbmVyKGhhbmRsZXI6IChldmVudE9iajogVEV2ZW50VHlwZSkgPT4gdm9pZCk6IENvbnRyYWN0LlRhYmxlYXVFdmVudFVucmVnaXN0ZXJGbiB7XG4gICAgdGhpcy5faGFuZGxlcnMucHVzaChoYW5kbGVyKTtcbiAgICByZXR1cm4gKCkgPT4gdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGhhbmRsZXIpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUV2ZW50TGlzdGVuZXIoaGFuZGxlcjogKGV2ZW50T2JqOiBURXZlbnRUeXBlKSA9PiB2b2lkKTogYm9vbGVhbiB7XG4gICAgY29uc3QgYmVmb3JlQ291bnQgPSB0aGlzLl9oYW5kbGVycy5sZW5ndGg7XG4gICAgdGhpcy5faGFuZGxlcnMgPSB0aGlzLl9oYW5kbGVycy5maWx0ZXIoaCA9PiBoICE9PSBoYW5kbGVyKTtcbiAgICByZXR1cm4gYmVmb3JlQ291bnQgPiB0aGlzLl9oYW5kbGVycy5sZW5ndGg7XG4gIH1cblxuICBwdWJsaWMgdHJpZ2dlckV2ZW50KGV2ZW50R2VuZXJhdG9yOiAoKSA9PiBURXZlbnRUeXBlKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBoYW5kbGVyIG9mIHRoaXMuX2hhbmRsZXJzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBldmVudE1vZGVsID0gZXZlbnRHZW5lcmF0b3IoKTtcbiAgICAgICAgaGFuZGxlcihldmVudE1vZGVsKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gU2luY2UgdGhpcyBoYW5kbGVyIGNvdWxkIGJlIG91dHNpZGUgb3VyIGNvbnRyb2wsIGp1c3QgY2F0Y2ggYW55dGhpbmcgaXQgdGhyb3dzIGFuZCBjb250aW51ZSBvblxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL0ludGVybmFsL1NpbmdsZUV2ZW50TWFuYWdlckltcGwudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xuaW1wb3J0IHsgVmlzdWFsSWQgfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xuXG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi9TZXJ2aWNlUmVnaXN0cnknO1xuXG4vKipcbiAqIERlZmluZXMgd2hpY2ggdHlwZSBvZiBnZXREYXRhIGNhbGwgdG8gbWFrZS5cbiAqL1xuZXhwb3J0IGVudW0gR2V0RGF0YVR5cGUge1xuICBTdW1tYXJ5ID0gJ3N1bW1hcnknLFxuICBVbmRlcmx5aW5nID0gJ3VuZGVybHlpbmcnXG59XG5cbi8qKlxuICogU2VydmljZSBmb3IgaW1wbGVtZW50aW5nIHRoZSBsb2dpYyBmb3IgdmFyaW91cyBnZXREYXRhIGNhbGxzXG4gKlxuICogQGludGVyZmFjZSBHZXREYXRhU2VydmljZVxuICogQGV4dGVuZHMge0FwaVNlcnZpY2V9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0RGF0YVNlcnZpY2UgZXh0ZW5kcyBBcGlTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIEdldHMgdGhlIHVuZGVybHlpbmcgZGF0YSBmb3IgYSBwYXJ0aWN1bGFyIHZpc3VhbFxuICAgKlxuICAgKiBAcGFyYW0ge1Zpc3VhbElkfSB2aXN1YWxJZCAgVGhlIHZpc3VhbCB0byBnZXQgZGF0YSBmb3JcbiAgICogQHBhcmFtIHtHZXREYXRhVHlwZX0gZ2V0VHlwZSAgVGhlIHR5cGUgb2YgZ2V0RGF0YSBjYWxsIHRvIG1ha2VcbiAgICogQHBhcmFtIHtib29sZWFufSBpZ25vcmVBbGlhc2VzICBXaGV0aGVyIG9yIG5vdCBhbGlhc2VzIHNob3VsZCBiZSBpZ25vcmVkXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gaWdub3JlU2VsZWN0aW9uICBXaGV0aGVyIG9yIG5vdCBzZWxlY3Rpb24gc2hvdWxkIGJlIGlnbm9yZWRcbiAgICogQHBhcmFtIHtib29sZWFufSBpbmNsdWRlQWxsQ29sdW1ucyAgU2hvdWxkIGFsbCBjb2x1bW5zIGJlIGluY2x1ZGVkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtYXhSb3dzICBNYXhpbXVtIG51bWJlciBvZiByb3dzIHRvIHJldHVyblxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxDb250cmFjdC5EYXRhVGFibGU+fSAgRGF0YSB0YWJsZSB3aXRoIHRoZSByZXF1ZXN0ZWQgZGF0YVxuICAgKi9cbiAgICBnZXRVbmRlcmx5aW5nRGF0YUFzeW5jKFxuICAgICAgdmlzdWFsSWQ6IFZpc3VhbElkLFxuICAgICAgZ2V0VHlwZTogR2V0RGF0YVR5cGUsXG4gICAgICBpZ25vcmVBbGlhc2VzOiBib29sZWFuLFxuICAgICAgaWdub3JlU2VsZWN0aW9uOiBib29sZWFuLFxuICAgICAgaW5jbHVkZUFsbENvbHVtbnM6IGJvb2xlYW4sXG4gICAgICBtYXhSb3dzOiBudW1iZXIpOiBQcm9taXNlPENvbnRyYWN0LkRhdGFUYWJsZT47XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgbWFya3MgZm9yIGEgZ2l2ZW4gdmlzdWFsXG4gICAgICpcbiAgICAqIEBwYXJhbSB7VmlzdWFsSWR9IHZpc3VhbElkICBUaGUgdmlzdWFsIHRvIGdldCBkYXRhIGZvclxuICAgICogQHJldHVybnMge1Byb21pc2U8QWN0aXZlTWFya3M+fSAgQ29sbGVjdGlvbiBvZiBkYXRhIHRhYmxlcyB3aXRoIHRoZSBhY3RpdmUgbWFya3NcbiAgICAqL1xuICAgIGdldFNlbGVjdGVkTWFya3NBc3luYyh2aXN1YWxJZDogVmlzdWFsSWQpOiBQcm9taXNlPENvbnRyYWN0Lk1hcmtzQ29sbGVjdGlvbj47XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBjdXJyZW50bHkgaGlnaGxpZ2h0ZWQgbWFya3MgZm9yIGEgZ2l2ZW4gdmlzdWFsXG4gICAgICpcbiAgICAqIEBwYXJhbSB7VmlzdWFsSWR9IHZpc3VhbElkICBUaGUgdmlzdWFsIHRvIGdldCBkYXRhIGZvclxuICAgICogQHJldHVybnMge1Byb21pc2U8QWN0aXZlTWFya3M+fSAgQ29sbGVjdGlvbiBvZiBkYXRhIHRhYmxlcyB3aXRoIHRoZSBhY3RpdmUgbWFya3NcbiAgICAqL1xuICAgIGdldEhpZ2hsaWdodGVkTWFya3NBc3luYyh2aXN1YWxJZDogVmlzdWFsSWQpOiBQcm9taXNlPENvbnRyYWN0Lk1hcmtzQ29sbGVjdGlvbj47XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YXNvdXJjZUlkICBUaGUgaWQgb2YgdGhlIGRhdGFzb3VyY2UgdG8gZ2V0IGRhdGEgZm9yXG4gICAgICogQHBhcmFtIHtib29sZWFufSBpZ25vcmVBbGlhc2VzICBXaGV0aGVyIGFsaWFzIHZhbHVlcyBzaG91bGQgYmUgaWdub3JlZCBpbiB0aGUgcmV0dXJuZWQgZGF0YVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtYXhSb3dzIFRoZSBtYXhpbXVtIG51bWJlciBvZiByb3dzIHRvIHJldHJpZXZlXG4gICAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBjb2x1bW5zVG9JbmNsdWRlICBDb2xsZWN0aW9uIG9mIGNvbHVtbiBjYXB0aW9ucyB3aGljaCBzaG91bGQgYmUgcmV0dXJuZWQuIEVtcHR5IG1lYW5zIGFsbCBjb2x1bW5zXG4gICAgICogQHJldHVybnMge1Byb21pc2U8Q29udHJhY3QuRGF0YVRhYmxlPn0gIERhdGEgdGFibGUgd2l0aCB0aGUgcmVxdWVzdGVkIGRhdGFcbiAgICAgKi9cbiAgICBnZXREYXRhU291cmNlRGF0YUFzeW5jKFxuICAgICAgZGF0YXNvdXJjZUlkOiBzdHJpbmcsXG4gICAgICBpZ25vcmVBbGlhc2VzOiBib29sZWFuLFxuICAgICAgbWF4Um93czogbnVtYmVyLFxuICAgICAgY29sdW1uc1RvSW5jbHVkZTogQXJyYXk8c3RyaW5nPik6IFByb21pc2U8Q29udHJhY3QuRGF0YVRhYmxlPjtcbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL0dldERhdGFTZXJ2aWNlLnRzXG4gKiovIiwiaW1wb3J0IHsgSW50ZXJuYWxBcGlEaXNwYXRjaGVyIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcblxuaW1wb3J0IHsgRGF0YVNvdXJjZVNlcnZpY2VJbXBsIH0gZnJvbSAnLi9pbXBsL0RhdGFTb3VyY2VTZXJ2aWNlSW1wbCc7XG5pbXBvcnQgeyBGaWx0ZXJTZXJ2aWNlSW1wbCB9IGZyb20gJy4vaW1wbC9GaWx0ZXJTZXJ2aWNlSW1wbCc7XG5pbXBvcnQgeyBHZXREYXRhU2VydmljZUltcGwgfSBmcm9tICcuL2ltcGwvR2V0RGF0YVNlcnZpY2VJbXBsJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2VJbXBsIH0gZnJvbSAnLi9pbXBsL05vdGlmaWNhdGlvblNlcnZpY2VJbXBsJztcbmltcG9ydCB7IFBhcmFtZXRlcnNTZXJ2aWNlSW1wbCB9IGZyb20gJy4vaW1wbC9QYXJhbWV0ZXJzU2VydmljZUltcGwnO1xuaW1wb3J0IHsgU2VsZWN0aW9uU2VydmljZUltcGwgfSBmcm9tICcuL2ltcGwvU2VsZWN0aW9uU2VydmljZUltcGwnO1xuaW1wb3J0IHsgQXBpU2VydmljZVJlZ2lzdHJ5IH0gZnJvbSAnLi9TZXJ2aWNlUmVnaXN0cnknO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJBbGxTaGFyZWRTZXJ2aWNlcyhkaXNwYXRjaGVyOiBJbnRlcm5hbEFwaURpc3BhdGNoZXIpOiB2b2lkIHtcbiAgQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLnJlZ2lzdGVyU2VydmljZShuZXcgRGF0YVNvdXJjZVNlcnZpY2VJbXBsKGRpc3BhdGNoZXIpKTtcbiAgQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLnJlZ2lzdGVyU2VydmljZShuZXcgR2V0RGF0YVNlcnZpY2VJbXBsKGRpc3BhdGNoZXIpKTtcbiAgQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLnJlZ2lzdGVyU2VydmljZShuZXcgRmlsdGVyU2VydmljZUltcGwoZGlzcGF0Y2hlcikpO1xuICBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UucmVnaXN0ZXJTZXJ2aWNlKG5ldyBOb3RpZmljYXRpb25TZXJ2aWNlSW1wbChkaXNwYXRjaGVyKSk7XG4gIEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5yZWdpc3RlclNlcnZpY2UobmV3IFBhcmFtZXRlcnNTZXJ2aWNlSW1wbChkaXNwYXRjaGVyKSk7XG4gIEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5yZWdpc3RlclNlcnZpY2UobmV3IFNlbGVjdGlvblNlcnZpY2VJbXBsKGRpc3BhdGNoZXIpKTtcbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL1JlZ2lzdGVyQWxsU2hhcmVkU2VydmljZXMudHNcbiAqKi8iLCJpbXBvcnQge1xuICBEYXRhU2NoZW1hLFxuICBFeGVjdXRlUGFyYW1ldGVycyxcbiAgSW50ZXJuYWxBcGlEaXNwYXRjaGVyLFxuICBQYXJhbWV0ZXJJZCxcbiAgVmVyYklkXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5cbmltcG9ydCB7IERhdGFTb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi4vRGF0YVNvdXJjZVNlcnZpY2UnO1xuaW1wb3J0IHsgU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vU2VydmljZVJlZ2lzdHJ5JztcblxuZXhwb3J0IGNsYXNzIERhdGFTb3VyY2VTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIERhdGFTb3VyY2VTZXJ2aWNlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgX2Rpc3BhdGNoZXI6IEludGVybmFsQXBpRGlzcGF0Y2hlcikgeyB9XG5cbiAgcHVibGljIGdldCBzZXJ2aWNlTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTZXJ2aWNlTmFtZXMuRGF0YVNvdXJjZVNlcnZpY2U7XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaEFzeW5jKGRhdGFTb3VyY2VJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMgPSB7W1BhcmFtZXRlcklkLkRhdGFTb3VyY2VJZF06IGRhdGFTb3VyY2VJZH07XG5cbiAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5leGVjdXRlKFZlcmJJZC5SZWZyZXNoRGF0YVNvdXJjZSwgcGFyYW1ldGVycykudGhlbjx2b2lkPihyZXNwb25zZSA9PiB7XG4gICAgICByZXR1cm47XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF0YVNvdXJjZXNBc3luYygpOiBQcm9taXNlPERhdGFTY2hlbWE+IHtcbiAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5leGVjdXRlKFZlcmJJZC5HZXREYXRhU291cmNlcywge30pLnRoZW48RGF0YVNjaGVtYT4ocmVzcG9uc2UgPT4ge1xuICAgICAgY29uc3QgZGF0YVNjaGVtYSA9IHJlc3BvbnNlLnJlc3VsdCBhcyBEYXRhU2NoZW1hO1xuICAgICAgcmV0dXJuIGRhdGFTY2hlbWE7XG4gICAgfSk7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL2ltcGwvRGF0YVNvdXJjZVNlcnZpY2VJbXBsLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcbmltcG9ydCAqIGFzIEludGVybmFsQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcbmltcG9ydCB7XG4gIENvbW1hbmRFcnJvcixcbiAgRXhlY3V0ZVBhcmFtZXRlcnMsXG4gIEZpbHRlclR5cGUsXG4gIEludGVybmFsQXBpRGlzcGF0Y2hlcixcbiAgUGFyYW1ldGVySWQsXG4gIFZlcmJJZCxcbiAgVmlzdWFsSWRcbn0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcbmltcG9ydCB7IFBhcmFtIH0gZnJvbSAnQHRhYmxlYXUvYXBpLXV0aWxzJztcblxuaW1wb3J0IHsgRXh0ZXJuYWxUb0ludGVybmFsRW51bU1hcHBpbmdzIGFzIEV4dGVybmFsRW51bUNvbnZlcnRlciB9IGZyb20gJy4uLy4uL0VudW1NYXBwaW5ncy9FeHRlcm5hbFRvSW50ZXJuYWxFbnVtTWFwcGluZ3MnO1xuaW1wb3J0IHsgSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzIGFzIEludGVybmFsRW51bUNvbnZlcnRlciB9IGZyb20gJy4uLy4uL0VudW1NYXBwaW5ncy9JbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MnO1xuaW1wb3J0IHtcbiAgQ2F0ZWdvcmljYWxEb21haW4sXG4gIENhdGVnb3JpY2FsRmlsdGVyLFxuICBSYW5nZURvbWFpbixcbiAgUmFuZ2VGaWx0ZXIsXG4gIFJlbGF0aXZlRGF0ZUZpbHRlclxufSBmcm9tICcuLi8uLi9Nb2RlbHMvRmlsdGVyTW9kZWxzJztcbmltcG9ydCB7IERhdGFWYWx1ZSB9IGZyb20gJy4uLy4uL01vZGVscy9HZXREYXRhTW9kZWxzJztcblxuaW1wb3J0IHsgRmlsdGVyU2VydmljZSB9IGZyb20gJy4uL0ZpbHRlclNlcnZpY2UnO1xuaW1wb3J0IHsgU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vU2VydmljZVJlZ2lzdHJ5JztcblxuZXhwb3J0IGNsYXNzIEZpbHRlclNlcnZpY2VJbXBsIGltcGxlbWVudHMgRmlsdGVyU2VydmljZSB7XG4gIHByaXZhdGUgX2Rpc3BhdGNoZXI6IEludGVybmFsQXBpRGlzcGF0Y2hlcjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyKSB7XG4gICAgdGhpcy5fZGlzcGF0Y2hlciA9IGRpc3BhdGNoZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlcnZpY2VOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFNlcnZpY2VOYW1lcy5GaWx0ZXI7XG4gIH1cblxuICBwdWJsaWMgYXBwbHlGaWx0ZXJBc3luYyhcbiAgICB2aXN1YWxJZDogVmlzdWFsSWQsXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXG4gICAgdmFsdWVzOiBBcnJheTxzdHJpbmc+LFxuICAgIHVwZGF0ZVR5cGU6IENvbnRyYWN0LkZpbHRlclVwZGF0ZVR5cGUsXG4gICAgZmlsdGVyT3B0aW9uczogQ29udHJhY3QuRmlsdGVyT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICBpZiAoIVBhcmFtLmlzVmFsaWRFbnVtVmFsdWU8Q29udHJhY3QuRmlsdGVyVXBkYXRlVHlwZT4odXBkYXRlVHlwZSwgQ29udHJhY3QuRmlsdGVyVXBkYXRlVHlwZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZhbHVlIGZvciBwYXJhbWV0ZXIgRmlsdGVyVXBkYXRlVHlwZScpO1xuICAgICAgfVxuICAgICAgY29uc3QgdmVyYiA9IFZlcmJJZC5BcHBseUNhdGVnb3JpY2FsRmlsdGVyO1xuICAgICAgY29uc3QgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMgPSB7fTtcbiAgICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuVmlzdWFsSWRdID0gdmlzdWFsSWQ7XG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLkZpZWxkTmFtZV0gPSBmaWVsZE5hbWU7XG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLkZpbHRlclZhbHVlc10gPSB2YWx1ZXM7XG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLkZpbHRlclVwZGF0ZVR5cGVdID0gdXBkYXRlVHlwZTtcbiAgICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuSXNFeGNsdWRlTW9kZV0gPVxuICAgICAgICAoZmlsdGVyT3B0aW9ucyA9PT0gdW5kZWZpbmVkIHx8IGZpbHRlck9wdGlvbnMuaXNFeGNsdWRlTW9kZSA9PT0gdW5kZWZpbmVkKSA/IGZhbHNlIDogZmlsdGVyT3B0aW9ucy5pc0V4Y2x1ZGVNb2RlO1xuXG4gICAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5leGVjdXRlKHZlcmIsIHBhcmFtZXRlcnMpLnRoZW48c3RyaW5nPihyZXNwb25zZSA9PiB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gcmVzcG9uc2UucmVzdWx0IGFzIENvbW1hbmRFcnJvcjtcbiAgICAgICAgaWYgKCEoZXJyb3IuZXJyb3JDb2RlID09PSBudWxsIHx8IGVycm9yLmVycm9yQ29kZSA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICAgIC8vIFRPRE86IGNvbWUgYmFjayBhbmQgaW1wbGVtZW50IGVycm9yIGhhbmRsaW5nIGxvZ2ljXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciBBcHBseWluZyBGaWx0ZXI6ICcgKyBlcnJvci5lcnJvckNvZGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWVsZE5hbWU7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgcHVibGljIGFwcGx5UmFuZ2VGaWx0ZXJBc3luYyh2aXN1YWxJZDogVmlzdWFsSWQsIGZpZWxkTmFtZTogc3RyaW5nLCBmaWx0ZXJPcHRpb25zOiBDb250cmFjdC5SYW5nZUZpbHRlck9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICghZmlsdGVyT3B0aW9ucykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIFBhcmFtZXRlcjogUmFuZ2VGaWx0ZXJPcHRpb25zJyk7XG4gICAgfVxuICAgIFBhcmFtLnZlcmlmeVJhbmdlUGFyYW1UeXBlKGZpbHRlck9wdGlvbnMubWluLCBmaWx0ZXJPcHRpb25zLm1heCk7XG5cbiAgICBjb25zdCB2ZXJiID0gVmVyYklkLkFwcGx5UmFuZ2VGaWx0ZXI7XG4gICAgY29uc3QgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMgPSB7fTtcblxuICAgIGlmIChmaWx0ZXJPcHRpb25zLm1pbikge1xuICAgICAgbGV0IG1pbjogc3RyaW5nIHwgbnVtYmVyO1xuICAgICAgaWYgKGZpbHRlck9wdGlvbnMubWluIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICBtaW4gPSBQYXJhbS5zZXJpYWxpemVEYXRlRm9yUGxhdGZvcm0oZmlsdGVyT3B0aW9ucy5taW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWluID0gZmlsdGVyT3B0aW9ucy5taW47XG4gICAgICB9XG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLkZpbHRlclJhbmdlTWluXSA9IG1pbjtcbiAgICB9XG5cbiAgICBpZiAoZmlsdGVyT3B0aW9ucy5tYXgpIHtcbiAgICAgIGxldCBtYXg6IHN0cmluZyB8IG51bWJlcjtcbiAgICAgIGlmIChmaWx0ZXJPcHRpb25zLm1heCBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgbWF4ID0gUGFyYW0uc2VyaWFsaXplRGF0ZUZvclBsYXRmb3JtKGZpbHRlck9wdGlvbnMubWF4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1heCA9IGZpbHRlck9wdGlvbnMubWF4O1xuICAgICAgfVxuICAgICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5GaWx0ZXJSYW5nZU1heF0gPSBtYXg7XG4gICAgfVxuXG4gICAgaWYgKGZpbHRlck9wdGlvbnMubnVsbE9wdGlvbikge1xuICAgICAgaWYgKCFQYXJhbS5pc1ZhbGlkRW51bVZhbHVlPENvbnRyYWN0LkZpbHRlck51bGxPcHRpb24+KGZpbHRlck9wdGlvbnMubnVsbE9wdGlvbiwgQ29udHJhY3QuRmlsdGVyTnVsbE9wdGlvbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZhbHVlIGZvciBwYXJhbWV0ZXIgTnVsbE9wdGlvbicpO1xuICAgICAgfVxuICAgICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5GaWx0ZXJSYW5nZU51bGxPcHRpb25dID0gRXh0ZXJuYWxFbnVtQ29udmVydGVyLm51bGxPcHRpb25zLmNvbnZlcnQoZmlsdGVyT3B0aW9ucy5udWxsT3B0aW9uKTtcbiAgICB9XG4gICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5GaWVsZE5hbWVdID0gZmllbGROYW1lO1xuICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuVmlzdWFsSWRdID0gdmlzdWFsSWQ7XG5cbiAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5leGVjdXRlKHZlcmIsIHBhcmFtZXRlcnMpLnRoZW48c3RyaW5nPihyZXNwb25zZSA9PiB7XG4gICAgICByZXR1cm4gZmllbGROYW1lO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGNsZWFyRmlsdGVyQXN5bmModmlzdWFsSWQ6IFZpc3VhbElkLCBmaWVsZE5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgdmVyYiA9IFZlcmJJZC5DbGVhckZpbHRlcjtcbiAgICBsZXQgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMgPSB7fTtcbiAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLlZpc3VhbElkXSA9IHZpc3VhbElkO1xuICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuRmllbGROYW1lXSA9IGZpZWxkTmFtZTtcbiAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5leGVjdXRlKHZlcmIsIHBhcmFtZXRlcnMpLnRoZW48c3RyaW5nPihyZXNwb3NuZSA9PiB7XG4gICAgICByZXR1cm4gZmllbGROYW1lO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldEZpbHRlcnNBc3luYyh2aXN1YWxJZDogVmlzdWFsSWQpOiBQcm9taXNlPENvbnRyYWN0LkZpbHRlcltdPiB7XG4gICAgY29uc3QgdmVyYiA9IFZlcmJJZC5HZXRGaWx0ZXJzO1xuICAgIGxldCBwYXJhbWV0ZXJzOiBFeGVjdXRlUGFyYW1ldGVycyA9IHt9O1xuICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuVmlzdWFsSWRdID0gdmlzdWFsSWQ7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc3BhdGNoZXIuZXhlY3V0ZSh2ZXJiLCBwYXJhbWV0ZXJzKS50aGVuPENvbnRyYWN0LkZpbHRlcltdPihyZXNwb25zZSA9PiB7XG4gICAgICBsZXQgZmlsdGVycyA9IHJlc3BvbnNlLnJlc3VsdCBhcyBJbnRlcm5hbENvbnRyYWN0LkZpbHRlcltdO1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydERvbWFpbkZpbHRlcnMoZmlsdGVycyk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2F0ZWdvcmljYWxEb21haW5Bc3luYyhcbiAgICB3b3Jrc2hlZXROYW1lOiBzdHJpbmcsXG4gICAgZmllbGRJZDogc3RyaW5nLFxuICAgIGRvbWFpblR5cGU6IENvbnRyYWN0LkZpbHRlckRvbWFpblR5cGUpOiBQcm9taXNlPENvbnRyYWN0LkNhdGVnb3JpY2FsRG9tYWluPiB7XG4gICAgaWYgKCFQYXJhbS5pc1ZhbGlkRW51bVZhbHVlPENvbnRyYWN0LkZpbHRlckRvbWFpblR5cGU+KGRvbWFpblR5cGUsIENvbnRyYWN0LkZpbHRlckRvbWFpblR5cGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdmFsdWUgZm9yIHBhcmFtZXRlciBGaWx0ZXJEb21haW5UeXBlJyk7XG4gICAgfVxuICAgIGNvbnN0IHZlcmIgPSBWZXJiSWQuR2V0Q2F0ZWdvcmljYWxEb21haW47XG4gICAgbGV0IHBhcmFtZXRlcnM6IEV4ZWN1dGVQYXJhbWV0ZXJzID0ge307XG4gICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5WaXN1YWxJZF0gPSB7XG4gICAgICB3b3Jrc2hlZXQ6IHdvcmtzaGVldE5hbWVcbiAgICB9O1xuICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuRmllbGRJZF0gPSBmaWVsZElkO1xuICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuRG9tYWluVHlwZV0gPSBkb21haW5UeXBlO1xuICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaGVyLmV4ZWN1dGUodmVyYiwgcGFyYW1ldGVycykudGhlbjxDb250cmFjdC5DYXRlZ29yaWNhbERvbWFpbj4ocmVzcG9uc2UgPT4ge1xuICAgICAgbGV0IGRvbWFpbiA9IHJlc3BvbnNlLnJlc3VsdCBhcyBJbnRlcm5hbENvbnRyYWN0LkNhdGVnb3JpY2FsRG9tYWluO1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydENhdGVnb3JpY2FsRG9tYWluKGRvbWFpbiwgZG9tYWluVHlwZSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmFuZ2VEb21haW5Bc3luYyh3b3Jrc2hlZXROYW1lOiBzdHJpbmcsIGZpZWxkSWQ6IHN0cmluZywgZG9tYWluVHlwZTogQ29udHJhY3QuRmlsdGVyRG9tYWluVHlwZSk6IFByb21pc2U8Q29udHJhY3QuUmFuZ2VEb21haW4+IHtcbiAgICBpZiAoIVBhcmFtLmlzVmFsaWRFbnVtVmFsdWU8Q29udHJhY3QuRmlsdGVyRG9tYWluVHlwZT4oZG9tYWluVHlwZSwgQ29udHJhY3QuRmlsdGVyRG9tYWluVHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB2YWx1ZSBmb3IgcGFyYW1ldGVyIEZpbHRlckRvbWFpblR5cGUnKTtcbiAgICB9XG4gICAgY29uc3QgdmVyYiA9IFZlcmJJZC5HZXRSYW5nZURvbWFpbjtcbiAgICBsZXQgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMgPSB7fTtcbiAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLlZpc3VhbElkXSA9IHtcbiAgICAgIHdvcmtzaGVldDogd29ya3NoZWV0TmFtZVxuICAgIH07XG4gICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5GaWVsZElkXSA9IGZpZWxkSWQ7XG4gICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5Eb21haW5UeXBlXSA9IEV4dGVybmFsRW51bUNvbnZlcnRlci5maWx0ZXJEb21haW5UeXBlLmNvbnZlcnQoZG9tYWluVHlwZSk7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc3BhdGNoZXIuZXhlY3V0ZSh2ZXJiLCBwYXJhbWV0ZXJzKS50aGVuPENvbnRyYWN0LlJhbmdlRG9tYWluPihyZXNwb25zZSA9PiB7XG4gICAgICBsZXQgZG9tYWluID0gcmVzcG9uc2UucmVzdWx0IGFzIEludGVybmFsQ29udHJhY3QuUmFuZ2VEb21haW47XG5cbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRSYW5nZURvbWFpbihkb21haW4sIGRvbWFpblR5cGUpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gSGVscGVyIE1ldGhvZHNcbiAgcHJpdmF0ZSBjb252ZXJ0RG9tYWluRmlsdGVycyhkb21haW5GaWx0ZXJzOiBJbnRlcm5hbENvbnRyYWN0LkZpbHRlcltdKTogQ29udHJhY3QuRmlsdGVyW10ge1xuICAgIGxldCBmaWx0ZXJzOiBDb250cmFjdC5GaWx0ZXJbXSA9IFtdO1xuICAgIGRvbWFpbkZpbHRlcnMuZm9yRWFjaChkb21haW5GaWx0ZXIgPT4ge1xuICAgICAgc3dpdGNoIChkb21haW5GaWx0ZXIuZmlsdGVyVHlwZSkge1xuICAgICAgICBjYXNlIEZpbHRlclR5cGUuQ2F0ZWdvcmljYWw6IHtcbiAgICAgICAgICBsZXQgZmlsdGVyID0gZG9tYWluRmlsdGVyIGFzIEludGVybmFsQ29udHJhY3QuQ2F0ZWdvcmljYWxGaWx0ZXI7XG4gICAgICAgICAgaWYgKGZpbHRlcikge1xuICAgICAgICAgICAgZmlsdGVycy5wdXNoKHRoaXMuY29udmVydENhdGVnb3JpY2FsRmlsdGVyKGZpbHRlcikpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgQ2F0ZWdvcmljYWwgRmlsdGVyJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBGaWx0ZXJUeXBlLlJhbmdlOiB7XG4gICAgICAgICAgbGV0IGZpbHRlciA9IGRvbWFpbkZpbHRlciBhcyBJbnRlcm5hbENvbnRyYWN0LlJhbmdlRmlsdGVyO1xuICAgICAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgICAgIGZpbHRlcnMucHVzaCh0aGlzLmNvbnZlcnRSYW5nZUZpbHRlcihmaWx0ZXIpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFJhbmdlIEZpbHRlcicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgRmlsdGVyVHlwZS5SZWxhdGl2ZURhdGU6IHtcbiAgICAgICAgICBsZXQgZmlsdGVyID0gZG9tYWluRmlsdGVyIGFzIEludGVybmFsQ29udHJhY3QuUmVsYXRpdmVEYXRlRmlsdGVyO1xuICAgICAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgICAgIGZpbHRlcnMucHVzaCh0aGlzLmNvbnZlcnRSZWxhdGl2ZURhdGVGaWx0ZXIoZmlsdGVyKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBSZWxhdGl2ZSBEYXRlIEZpbHRlcicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmaWx0ZXJzO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0Q2F0ZWdvcmljYWxGaWx0ZXIoZG9tYWluRmlsdGVyOiBJbnRlcm5hbENvbnRyYWN0LkNhdGVnb3JpY2FsRmlsdGVyKTogQ29udHJhY3QuQ2F0ZWdvcmljYWxGaWx0ZXIge1xuICAgIGxldCBhcHBsaWVkVmFsdWVzOiBDb250cmFjdC5EYXRhVmFsdWVbXSA9IGRvbWFpbkZpbHRlci52YWx1ZXMubWFwKGR2ID0+IHtcbiAgICAgIHJldHVybiBuZXcgRGF0YVZhbHVlKGR2LnZhbHVlLCBkdi5mb3JtYXR0ZWRWYWx1ZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmV3IENhdGVnb3JpY2FsRmlsdGVyKFxuICAgICAgZG9tYWluRmlsdGVyLnZpc3VhbElkLndvcmtzaGVldCxcbiAgICAgIGRvbWFpbkZpbHRlci5maWVsZENhcHRpb24sXG4gICAgICBkb21haW5GaWx0ZXIuZmllbGROYW1lLFxuICAgICAgQ29udHJhY3QuRmlsdGVyVHlwZS5DYXRlZ29yaWNhbCxcbiAgICAgIGFwcGxpZWRWYWx1ZXMsXG4gICAgICBkb21haW5GaWx0ZXIuaXNFeGNsdWRlKTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydFJhbmdlRmlsdGVyKGRvbWFpbkZpbHRlcjogSW50ZXJuYWxDb250cmFjdC5SYW5nZUZpbHRlcik6IENvbnRyYWN0LlJhbmdlRmlsdGVyIHtcbiAgICBsZXQgbWluVmFsdWU6IERhdGFWYWx1ZSA9IG5ldyBEYXRhVmFsdWUoZG9tYWluRmlsdGVyLm1pbi52YWx1ZSwgZG9tYWluRmlsdGVyLm1pbi5mb3JtYXR0ZWRWYWx1ZSk7XG4gICAgbGV0IG1heFZhbHVlOiBEYXRhVmFsdWUgPSBuZXcgRGF0YVZhbHVlKGRvbWFpbkZpbHRlci5tYXgudmFsdWUsIGRvbWFpbkZpbHRlci5tYXguZm9ybWF0dGVkVmFsdWUpO1xuICAgIHJldHVybiBuZXcgUmFuZ2VGaWx0ZXIoXG4gICAgICBkb21haW5GaWx0ZXIudmlzdWFsSWQud29ya3NoZWV0LFxuICAgICAgZG9tYWluRmlsdGVyLmZpZWxkQ2FwdGlvbixcbiAgICAgIGRvbWFpbkZpbHRlci5maWVsZE5hbWUsXG4gICAgICBDb250cmFjdC5GaWx0ZXJUeXBlLlJhbmdlLFxuICAgICAgbWluVmFsdWUsXG4gICAgICBtYXhWYWx1ZSxcbiAgICAgIGRvbWFpbkZpbHRlci5pbmNsdWRlTnVsbFZhbHVlc1xuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRSZWxhdGl2ZURhdGVGaWx0ZXIoZG9tYWluRmlsdGVyOiBJbnRlcm5hbENvbnRyYWN0LlJlbGF0aXZlRGF0ZUZpbHRlcik6IENvbnRyYWN0LlJlbGF0aXZlRGF0ZUZpbHRlciB7XG4gICAgbGV0IGFuY2hvckRhdGVWYWx1ZTogRGF0YVZhbHVlID0gbmV3IERhdGFWYWx1ZShkb21haW5GaWx0ZXIuYW5jaG9yRGF0ZS52YWx1ZSwgZG9tYWluRmlsdGVyLmFuY2hvckRhdGUuZm9ybWF0dGVkVmFsdWUpO1xuICAgIHJldHVybiBuZXcgUmVsYXRpdmVEYXRlRmlsdGVyIChcbiAgICAgIGRvbWFpbkZpbHRlci52aXN1YWxJZC53b3Jrc2hlZXQsXG4gICAgICBkb21haW5GaWx0ZXIuZmllbGRDYXB0aW9uLFxuICAgICAgZG9tYWluRmlsdGVyLmZpZWxkTmFtZSxcbiAgICAgIENvbnRyYWN0LkZpbHRlclR5cGUuUmVsYXRpdmVEYXRlLFxuICAgICAgYW5jaG9yRGF0ZVZhbHVlLFxuICAgICAgSW50ZXJuYWxFbnVtQ29udmVydGVyLmRhdGVTdGVwUGVyaW9kLmNvbnZlcnQoZG9tYWluRmlsdGVyLnBlcmlvZFR5cGUpLFxuICAgICAgSW50ZXJuYWxFbnVtQ29udmVydGVyLmRhdGVSYW5nZVR5cGUuY29udmVydChkb21haW5GaWx0ZXIucmFuZ2VUeXBlKSxcbiAgICAgIGRvbWFpbkZpbHRlci5yYW5nZU5cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0Q2F0ZWdvcmljYWxEb21haW4oXG4gICAgZG9tYWluOiBJbnRlcm5hbENvbnRyYWN0LkNhdGVnb3JpY2FsRG9tYWluLFxuICAgIGRvbWFpblR5cGU6IENvbnRyYWN0LkZpbHRlckRvbWFpblR5cGUpOiBDb250cmFjdC5DYXRlZ29yaWNhbERvbWFpbiB7XG4gICAgbGV0IHZhbHVlczogRGF0YVZhbHVlW10gPSBkb21haW4udmFsdWVzLm1hcCgoZG9tYWluRHYpID0+IHtcbiAgICAgIHJldHVybiBuZXcgRGF0YVZhbHVlKGRvbWFpbkR2LnZhbHVlLCBkb21haW5Edi5mb3JtYXR0ZWRWYWx1ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ldyBDYXRlZ29yaWNhbERvbWFpbih2YWx1ZXMsIGRvbWFpblR5cGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0UmFuZ2VEb21haW4oZG9tYWluOiBJbnRlcm5hbENvbnRyYWN0LlJhbmdlRG9tYWluLCBkb21haW5UeXBlOiBDb250cmFjdC5GaWx0ZXJEb21haW5UeXBlKTogQ29udHJhY3QuUmFuZ2VEb21haW4ge1xuICAgIGxldCBtaW46IERhdGFWYWx1ZSA9IG5ldyBEYXRhVmFsdWUoZG9tYWluLm1pbi52YWx1ZSwgZG9tYWluLm1pbi5mb3JtYXR0ZWRWYWx1ZSk7XG4gICAgbGV0IG1heDogRGF0YVZhbHVlID0gbmV3IERhdGFWYWx1ZShkb21haW4ubWF4LnZhbHVlLCBkb21haW4ubWF4LmZvcm1hdHRlZFZhbHVlKTtcbiAgICByZXR1cm4gbmV3IFJhbmdlRG9tYWluKFxuICAgICAgbWluLFxuICAgICAgbWF4LFxuICAgICAgZG9tYWluVHlwZVxuICAgICk7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL2ltcGwvRmlsdGVyU2VydmljZUltcGwudHNcbiAqKi8iLCIvKipcbiAqIFRoaXMgaXMgeW91ciBtYWluLiBUaGlzIGlzIHdoZXJlIHlvdSByZS1leHBvcnQgZXZlcnl0aGluZyB5b3Ugd2FudCB0byBiZSBwdWJsaWNseSBhdmFpbGFibGUuXG4gKlxuICogVGhlIGJ1aWxkIGVuZm9yY2VzIHRoYXQgdGhlIGZpbGUgaGFzIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGdsb2JhbCB2YXJpYWJsZSB0aGF0IGlzIGV4cG9ydGVkLlxuICovXG5cbmV4cG9ydCB7IEVudW1Db252ZXJ0ZXIgfSBmcm9tICcuL0VudW1Db252ZXJ0ZXInO1xuZXhwb3J0IHsgUGFyYW0gfSBmcm9tICcuL1BhcmFtJztcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS11dGlscy9zcmMvQXBpVXRpbHMudHNcbiAqKi8iLCIvKipcbiAqIFRoaXMgY2xhc3MgY29udmVydHMgZnJvbSBhIHNvdXJjZSBlbnVtIHZhbHVlIHRvIGRlc3RpbmF0aW9uIGVudW1cbiAqIHZhbHVlIGdpdmVuIGEgbWFwcGluZyBmcm9tIHNvdXJjZSB0byBkZXN0aW5hdGlvbiB3aGVuIGNvbnN0cnVjdGVkLlxuICovXG5leHBvcnQgY2xhc3MgRW51bUNvbnZlcnRlcjxUU291cmNlVHlwZSBleHRlbmRzIHN0cmluZywgVERlc3RpbmF0aW9uVHlwZT4ge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfbWFwcGluZ3M6IHsgW2VudW1WYWw6IHN0cmluZ106IFREZXN0aW5hdGlvblR5cGU7IH0sXG4gICAgcHJpdmF0ZSBfZGVmYXVsdFZhbD86IFREZXN0aW5hdGlvblR5cGUpIHsgfVxuXG4gIHB1YmxpYyBjb252ZXJ0KGVudW1WYWw6IFRTb3VyY2VUeXBlLCB0aHJvd0lmTWlzc2luZz86IGJvb2xlYW4pOiBURGVzdGluYXRpb25UeXBlIHtcbiAgICBpZiAodGhpcy5fbWFwcGluZ3MuaGFzT3duUHJvcGVydHkoZW51bVZhbCkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9tYXBwaW5nc1tlbnVtVmFsIGFzIHN0cmluZ107XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2RlZmF1bHRWYWwgIT09IHVuZGVmaW5lZCAmJiAhdGhyb3dJZk1pc3NpbmcpIHtcbiAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VmFsO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignTWFwcGluZyBub3QgZm91bmQgZm9yICcgKyBlbnVtVmFsKTtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLXV0aWxzL3NyYy9FbnVtQ29udmVydGVyLnRzXG4gKiovIiwiZXhwb3J0IGNsYXNzIFBhcmFtIHtcbiAgLyoqXG4gICAqIFZlcmlmaWVzIHRoYXQgYW4gaW5jb21pbmcgcGFyYW1ldGVyIGlzICd0cnV0aHknIGFuZCB0aHJvd3NcbiAgICogYW4gZXJyb3IgaWYgaXQncyBub3QuIFRoaXMgd2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgdmFsdWVcbiAgICogaXMgbnVsbCwgdW5kZWZpbmVkLCBOYU4sIHRoZSBlbXB0eSBzdHJpbmcsIDAsIG9yIGZhbHNlLlxuICAgKlxuICAgKiBAcGFyYW0gYXJndW1lbnRWYWx1ZSB2YWx1ZSB0byB2ZXJpZnlcbiAgICogQHBhcmFtIGFyZ3VtZW50TmFtZSBuYW1lIG9mIGFyZ3VtZW50IHRvIHZlcmlmeVxuICAgKi9cbiAgLyp0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgKi9cbiAgcHVibGljIHN0YXRpYyB2ZXJpZnlWYWx1ZShhcmd1bWVudFZhbHVlOiBhbnksIGFyZ3VtZW50TmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFhcmd1bWVudFZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZhbHVlIGlzIGludmFsaWQgZm9yIGFyZ3VtZW50OiAnICsgYXJndW1lbnROYW1lKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpZXMgdGhhdCBhIHN0cmluZyBpcyB2YWxpZC4gIFRocm93cyBhbiBlcnJvciBpZiB0aGUgc3RyaW5nIGlzXG4gICAqIG51bGwsIHVuZGVmaW5lZCwgb3IgTmFOLlxuICAgKlxuICAgKiBAcGFyYW0gYXJndW1lbnRWYWx1ZSB2YWx1ZSB0byB2ZXJpZnlcbiAgICogQHBhcmFtIGFyZ3VtZW50TmFtZSBuYW1lIG9mIGFyZ3VtZW50IHRvIHZlcmlmeVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB2ZXJpZnlTdHJpbmcoYXJndW1lbnRWYWx1ZTogc3RyaW5nLCBhcmd1bWVudE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChhcmd1bWVudFZhbHVlID09PSBudWxsIHx8IGFyZ3VtZW50VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdHJpbmcgdmFsdWUgaXMgaW52YWxpZCBmb3IgYXJndW1lbnQ6ICcgKyBhcmd1bWVudE5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyB0aGUgdmFsdWUgaXMgcGFydCBvZiB0aGUgRW51bVxuICAgKlxuICAgKiBTdHJpbmcgZW51bXMgYXJlIHtzdHJpbmcgOiBzdHJpbmd9IGRpY3Rpb25hcmllcyB3aGljaCBhcmUgbm90IHJldmVyc2UgbWFwcGFibGVcbiAgICogVGhpcyBpcyBhbiB1Z2x5IHdvcmthcm91bmRcbiAgICogQHBhcmFtIHZhbHVlIHZhbHVlIHRvIHZlcmlmeVxuICAgKiBAcGFyYW0gZW51bVR5cGUgZW51bSB0byB2ZXJpZnkgYWdhaW5zdFxuICAgKi9cbiAgLyogdHNsaW50OmRpc2FibGU6bm8tYW55ICovXG4gIHB1YmxpYyBzdGF0aWMgaXNWYWxpZEVudW1WYWx1ZTxFbnVtVHlwZT4odmFsdWU6IEVudW1UeXBlLCBlbnVtVHlwZTogYW55KTogYm9vbGVhbiB7XG4gICAgbGV0IGlzVmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBPYmplY3Qua2V5cyhlbnVtVHlwZSkuZm9yRWFjaCgoZW51bUtleSkgPT4ge1xuICAgICAgaWYgKGVudW1UeXBlW2VudW1LZXldID09PSB2YWx1ZS50b1N0cmluZygpKSB7XG4gICAgICAgIGlzVmFsaWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBpc1ZhbGlkO1xuICB9XG4gIC8qIHRzbGludDplbmFibGU6bm8tYW55ICovXG5cbiAgLyoqXG4gICAqIHNlcmlhbGl6ZXMgdGhlIGRhdGUgaW50byB0aGUgZm9ybWF0IHRoYXQgdGhlIHNlcnZlciBleHBlY3RzLlxuICAgKiBAcGFyYW0gZGF0ZSB0aGUgZGF0ZSB0byBzZXJpYWxpemVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2VyaWFsaXplRGF0ZUZvclBsYXRmb3JtKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IHllYXI6IG51bWJlciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICBjb25zdCBtb250aDogbnVtYmVyID0gZGF0ZS5nZXRVVENNb250aCgpICsgMTtcbiAgICBjb25zdCBkYXk6IG51bWJlciA9IGRhdGUuZ2V0VVRDRGF0ZSgpO1xuICAgIGNvbnN0IGhoOiBudW1iZXIgPSBkYXRlLmdldFVUQ0hvdXJzKCk7XG4gICAgY29uc3QgbW06IG51bWJlciA9IGRhdGUuZ2V0VVRDTWludXRlcygpO1xuICAgIGNvbnN0IHNlYzogbnVtYmVyID0gZGF0ZS5nZXRVVENTZWNvbmRzKCk7XG4gICAgcmV0dXJuIHllYXIgKyAnLScgKyBtb250aCArICctJyArIGRheSArICcgJyArIGhoICsgJzonICsgbW0gKyAnOicgKyBzZWM7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHNlcmlhbGl6ZUJvb2xlYW5Gb3JQbGF0Zm9ybShib29sOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYm9vbCA/ICd0cnVlJyA6ICdmYWxzZSc7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHNlcmlhbGl6ZU51bWJlckZvclBsYXRmb3JtKG51bTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbnVtLnRvU3RyaW5nKDEwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyB0aGUgcGFyYW1zIG1pbiBhbmQgbWF4IGZvciBhcHBseWluZyByYW5nZSBmaWx0ZXJcbiAgICogQHBhcmFtIG1pbiByYW5nZSBtaW5cbiAgICogQHBhcmFtIG1heCByYW5nZSBtYXhcbiAgICovXG4gIC8qIHRzbGludDpkaXNhYmxlOm5vLWFueSAqL1xuICBwdWJsaWMgc3RhdGljIHZlcmlmeVJhbmdlUGFyYW1UeXBlKG1pbjogYW55LCBtYXg6IGFueSk6IHZvaWQge1xuICAvKiB0c2xpbnQ6ZW5hYmxlOm5vLWFueSAqL1xuICAgIGlmICghbWluICYmICFtYXgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBQYXJhbWV0ZXI6IEF0IGxlYXN0IG9uZSBvZiBtaW4gb3IgbWF4IGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgaWYgKCFQYXJhbS5pc1R5cGVOdW1iZXIobWluKSAmJiAhUGFyYW0uaXNUeXBlRGF0ZShtaW4pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUGFyYW1ldGVyIFR5cGU6IE9ubHkgRGF0ZSBhbmQgbnVtYmVyIGFyZSBhbGxvd2VkIGZvciBwYXJhbWV0ZXIgbWluJyk7XG4gICAgfVxuXG4gICAgaWYgKCFQYXJhbS5pc1R5cGVOdW1iZXIobWF4KSAmJiAhUGFyYW0uaXNUeXBlRGF0ZShtYXgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUGFyYW1ldGVyIFR5cGU6IE9ubHkgRGF0ZSBhbmQgbnVtYmVyIGFyZSBhbGxvd2VkIGZvciBwYXJhbWV0ZXIgbWF4Jyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZihtaW4pICE9PSB0eXBlb2YobWF4KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFBhcmFtZXRlciBUeXBlOiBQYXJhbWV0ZXJzIG1pbiBhbmQgbWF4IHNob3VsZCBiZSBvZiB0aGUgc2FtZSB0eXBlJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIHRoZSBpbnB1dCBpcyBhIG51bWJlclxuICAgKi9cbiAgLyogdHNsaW50OmRpc2FibGU6bm8tYW55ICovXG4gIHB1YmxpYyBzdGF0aWMgaXNUeXBlTnVtYmVyKGlucHV0OiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mKGlucHV0KSA9PT0gJ251bWJlcicgfHwgaW5wdXQgaW5zdGFuY2VvZiBOdW1iZXI7XG4gIH1cbiAgLyogdHNsaW50OmVuYWJsZTpuby1hbnkgKi9cblxuICAvKipcbiAgICogVmVyaWZpZXMgdGhlIGlucHV0IGlzIGEgRGF0ZVxuICAgKi9cbiAgLyogdHNsaW50OmRpc2FibGU6bm8tYW55ICovXG4gIHB1YmxpYyBzdGF0aWMgaXNUeXBlRGF0ZShpbnB1dDogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlucHV0IGluc3RhbmNlb2YgRGF0ZTtcbiAgfVxuICAvKiB0c2xpbnQ6ZW5hYmxlOm5vLWFueSAqL1xuXG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnkgKi9cbiAgcHVibGljIHN0YXRpYyBpc1R5cGVTdHJpbmcoaW5wdXQ6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YoaW5wdXQpID09PSAnc3RyaW5nJyB8fCBpbnB1dCBpbnN0YW5jZW9mIFN0cmluZztcbiAgfVxuXG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnkgKi9cbiAgcHVibGljIHN0YXRpYyBpc1R5cGVCb29sKGlucHV0OiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mKGlucHV0KSA9PT0gJ2Jvb2xlYW4nIHx8IGlucHV0IGluc3RhbmNlb2YgQm9vbGVhbjtcbiAgfVxuXG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnkgKi9cbiAgcHVibGljIHN0YXRpYyBzZXJpYWxpemVQYXJhbXRlclZhbHVlKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmIChQYXJhbS5pc1R5cGVOdW1iZXIodmFsdWUpKSB7XG4gICAgICByZXR1cm4gUGFyYW0uc2VyaWFsaXplTnVtYmVyRm9yUGxhdGZvcm0odmFsdWUgYXMgbnVtYmVyKTtcbiAgICB9IGVsc2UgaWYgKFBhcmFtLmlzVHlwZURhdGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gUGFyYW0uc2VyaWFsaXplRGF0ZUZvclBsYXRmb3JtKHZhbHVlIGFzIERhdGUpO1xuICAgIH0gZWxzZSBpZiAoUGFyYW0uaXNUeXBlQm9vbCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBQYXJhbS5zZXJpYWxpemVCb29sZWFuRm9yUGxhdGZvcm0odmFsdWUgYXMgYm9vbGVhbik7XG4gICAgfSBlbHNlIGlmIChQYXJhbS5pc1R5cGVTdHJpbmcodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVmFsdWUgaXMgaW52YWxpZCBmb3IgYXJndW1lbnQ6IHZhbHVlJyk7XG4gICAgfVxuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktdXRpbHMvc3JjL1BhcmFtLnRzXG4gKiovIiwiaW1wb3J0IHtcbiAgRmlsdGVyRG9tYWluVHlwZSBhcyBFeHRlcm5hbERvbWFpblR5cGUsXG4gIEZpbHRlck51bGxPcHRpb24gYXMgRXh0ZXJuYWxOdWxsT3B0aW9uXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5pbXBvcnQge1xuICBGaWx0ZXJEb21haW5UeXBlIGFzIEludGVybmFsRG9tYWluVHlwZSxcbiAgRmlsdGVyTnVsbE9wdGlvbiBhcyBJbnRlcm5hbE51bGxPcHRpb25cbn0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcblxuaW1wb3J0IHsgRW51bUNvbnZlcnRlciB9IGZyb20gJ0B0YWJsZWF1L2FwaS11dGlscyc7XG5cbi8qIHRzbGludDpkaXNhYmxlOnR5cGVkZWYgLSBEaXNhYmxlIHRoaXMgdG8gbWFrZSBkZWNsYXJpbmcgdGhlc2UgY2xhc3NlcyBhIGJpdCBlYXNpZXIgKi9cbi8qKlxuICogTWFwcyBlbnVtcyB1c2VkIGJ5IHRoZSBleHRlcm5hbC1hcGktY29udHJhY3QgdG8gdGhlIGVudW1zIHVzZWRcbiAqIGluIHRoZSBpbnRlcm5hbC1hcGktY29udHJhY3QsIHdoaWNoIGRldmVsb3BlcnMgY29kZSBhZ2FpbnN0LlxuICovXG5leHBvcnQgY2xhc3MgRXh0ZXJuYWxUb0ludGVybmFsRW51bU1hcHBpbmdzIHtcbiAgcHVibGljIHN0YXRpYyBudWxsT3B0aW9ucyA9IG5ldyBFbnVtQ29udmVydGVyPEV4dGVybmFsTnVsbE9wdGlvbiwgSW50ZXJuYWxOdWxsT3B0aW9uPih7XG4gICAgW0V4dGVybmFsTnVsbE9wdGlvbi5BbGxWYWx1ZXNdOiBJbnRlcm5hbE51bGxPcHRpb24uQWxsVmFsdWVzLFxuICAgIFtFeHRlcm5hbE51bGxPcHRpb24uTm9uTnVsbFZhbHVlc106IEludGVybmFsTnVsbE9wdGlvbi5Ob25OdWxsVmFsdWVzLFxuICAgIFtFeHRlcm5hbE51bGxPcHRpb24uTm9uTnVsbFZhbHVlc106IEludGVybmFsTnVsbE9wdGlvbi5OdWxsVmFsdWVzXG4gIH0pO1xuXG4gIHB1YmxpYyBzdGF0aWMgZmlsdGVyRG9tYWluVHlwZSA9IG5ldyBFbnVtQ29udmVydGVyPEV4dGVybmFsRG9tYWluVHlwZSwgSW50ZXJuYWxEb21haW5UeXBlPih7XG4gICAgW0V4dGVybmFsRG9tYWluVHlwZS5SZWxldmFudF06IEludGVybmFsRG9tYWluVHlwZS5SZWxldmFudCxcbiAgICBbRXh0ZXJuYWxEb21haW5UeXBlLkRhdGFiYXNlXTogSW50ZXJuYWxEb21haW5UeXBlLkRhdGFiYXNlXG4gIH0pO1xufVxuLyogdHNsaW50OmVuYWJsZTp0eXBlZGVmICovXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9FbnVtTWFwcGluZ3MvRXh0ZXJuYWxUb0ludGVybmFsRW51bU1hcHBpbmdzLnRzXG4gKiovIiwiaW1wb3J0IHtcbiAgQ29sdW1uVHlwZSBhcyBFeHRlcm5hbENvbHVtblR5cGUsXG4gIERhc2hib2FyZE9iamVjdFR5cGUgYXMgRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLFxuICBEYXRhVHlwZSBhcyBFeHRlcm5hbERhdGFUeXBlLFxuICBEYXRlUmFuZ2VUeXBlIGFzIEV4dGVybmFsRGF0ZVJhbmdlVHlwZSxcbiAgRXh0ZW5zaW9uQ29udGV4dCBhcyBFeHRlcm5hbEV4dGVuc2lvbnNDb250ZXh0LFxuICBFeHRlbnNpb25Nb2RlIGFzIEV4dGVybmFsRXh0ZW5zaW9uc01vZGUsXG4gIEZpZWxkQWdncmVnYXRpb25UeXBlIGFzIEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUsXG4gIEZpZWxkUm9sZVR5cGUgYXMgRXh0ZXJuYWxGaWVsZFJvbGVUeXBlLFxuICBGaWx0ZXJUeXBlIGFzIEV4dGVybmFsRmlsdGVyVHlwZSxcbiAgRmlsdGVyVXBkYXRlVHlwZSBhcyBFeHRlcm5hbEZpbHRlclVwZGF0ZVR5cGUsXG4gIFBhcmFtZXRlclZhbHVlVHlwZSBhcyBFeHRlcm5hbFBhcmFtZXRlclZhbHVlVHlwZSxcbiAgUGVyaW9kVHlwZSBhcyBFeHRlcm5hbERhdGVQZXJpb2QsXG4gIFNoZWV0VHlwZSBhcyBFeHRlcm5hbFNoZWV0VHlwZSxcbn0gZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcblxuaW1wb3J0IHtcbiAgQ29sdW1uVHlwZSBhcyBJbnRlcm5hbENvbHVtblR5cGUsXG4gIERhc2hib2FyZE9iamVjdFR5cGUgYXMgSW50ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLFxuICBEYXRhVHlwZSBhcyBJbnRlcm5hbERhdGFUeXBlLFxuICBEYXRlUmFuZ2VUeXBlIGFzIEludGVybmFsRGF0ZVJhbmdlVHlwZSxcbiAgRGF0ZVN0ZXBQZXJpb2QgYXMgSW50ZXJuYWxEYXRlU3RlcFBlcmlvZCxcbiAgRG9tYWluUmVzdHJpY3Rpb25UeXBlIGFzIEludGVybmFsRG9tYWluUmVzdHJpY3Rpb25UeXBlLFxuICBFeHRlbnNpb25Db250ZXh0IGFzIEludGVybmFsRXh0ZW5zaW9uc0NvbnRleHQsXG4gIEV4dGVuc2lvbk1vZGUgYXMgSW50ZXJuYWxFeHRlbnNpb25zTW9kZSxcbiAgRmllbGRBZ2dyZWdhdGlvblR5cGUgYXMgSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZSxcbiAgRmllbGRSb2xlVHlwZSBhcyBJbnRlcm5hbEZpZWxkUm9sZVR5cGUsXG4gIEZpbHRlclR5cGUgYXMgSW50ZXJuYWxGaWx0ZXJUeXBlLFxuICBGaWx0ZXJVcGRhdGVUeXBlIGFzIEludGVybmFsRmlsdGVyVXBkYXRlVHlwZSxcbiAgU2hlZXRUeXBlIGFzIEludGVybmFsU2hlZXRUeXBlLFxufSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xuXG5pbXBvcnQgeyBFbnVtQ29udmVydGVyIH0gZnJvbSAnQHRhYmxlYXUvYXBpLXV0aWxzJztcblxuLyogdHNsaW50OmRpc2FibGU6dHlwZWRlZiAtIERpc2FibGUgdGhpcyB0byBtYWtlIGRlY2xhcmluZyB0aGVzZSBjbGFzc2VzIGEgYml0IGVhc2llciAqL1xuLyoqXG4gKiBNYXBzIGVudW1zIHVzZWQgYnkgdGhlIGludGVybmFsLWFwaS1jb250cmFjdCB0byB0aGUgZW51bXMgdXNlZFxuICogaW4gdGhlIGV4dGVybmFsLWFwaS1jb250cmFjdCwgd2hpY2ggZGV2ZWxvcGVycyBjb2RlIGFnYWluc3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3Mge1xuICBwdWJsaWMgc3RhdGljIGV4dGVuc2lvbkNvbnRleHQgPSBuZXcgRW51bUNvbnZlcnRlcjxJbnRlcm5hbEV4dGVuc2lvbnNDb250ZXh0LCBFeHRlcm5hbEV4dGVuc2lvbnNDb250ZXh0Pih7XG4gICAgW0ludGVybmFsRXh0ZW5zaW9uc0NvbnRleHQuRGVza3RvcF06IEV4dGVybmFsRXh0ZW5zaW9uc0NvbnRleHQuRGVza3RvcCxcbiAgICBbSW50ZXJuYWxFeHRlbnNpb25zQ29udGV4dC5TZXJ2ZXJdOiBFeHRlcm5hbEV4dGVuc2lvbnNDb250ZXh0LlNlcnZlclxuICB9KTtcblxuICBwdWJsaWMgc3RhdGljIGV4dGVuc2lvbk1vZGUgPSBuZXcgRW51bUNvbnZlcnRlcjxJbnRlcm5hbEV4dGVuc2lvbnNNb2RlLCBFeHRlcm5hbEV4dGVuc2lvbnNNb2RlPih7XG4gICAgW0ludGVybmFsRXh0ZW5zaW9uc01vZGUuQXV0aG9yaW5nXTogRXh0ZXJuYWxFeHRlbnNpb25zTW9kZS5BdXRob3JpbmcsXG4gICAgW0ludGVybmFsRXh0ZW5zaW9uc01vZGUuVmlld2luZ106IEV4dGVybmFsRXh0ZW5zaW9uc01vZGUuVmlld2luZ1xuICB9KTtcblxuICBwdWJsaWMgc3RhdGljIGNvbHVtblR5cGUgPSBuZXcgRW51bUNvbnZlcnRlcjxJbnRlcm5hbENvbHVtblR5cGUsIEV4dGVybmFsQ29sdW1uVHlwZT4oe1xuICAgIFtJbnRlcm5hbENvbHVtblR5cGUuQ29udGludW91c106IEV4dGVybmFsQ29sdW1uVHlwZS5Db250aW51b3VzLFxuICAgIFtJbnRlcm5hbENvbHVtblR5cGUuRGlzY3JldGVdOiBFeHRlcm5hbENvbHVtblR5cGUuRGlzY3JldGVcbiAgfSk7XG5cbiAgcHVibGljIHN0YXRpYyBmaWVsZEFnZ3JlZ2F0aW9uVHlwZSA9IG5ldyBFbnVtQ29udmVydGVyPEludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUsIEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGU+KHtcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5BdHRyXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5BdHRyLFxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLkF2Z106IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuQXZnLFxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLkNvdW50XTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Db3VudCxcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Db3VudGRdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLkNvdW50ZCxcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5EYXldOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLkRheSxcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5FbmRdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLkVuZCxcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Ib3VyXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Ib3VyLFxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLkluT3V0XTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Jbk91dCxcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5LdXJ0b3Npc106IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuS3VydG9zaXMsXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuTWF4XTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5NYXgsXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuTWR5XTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5NZHksXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuTWVkaWFuXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5NZWRpYW4sXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuTWluXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5NaW4sXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuTWludXRlXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5NaW51dGUsXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuTW9udGhZZWFyXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Nb250aFllYXIsXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuTm9uZV06IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuTm9uZSxcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5RdHJdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlF0cixcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5RdWFydDFdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlF1YXJ0MSxcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5RdWFydDNdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlF1YXJ0MyxcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5TZWNvbmRdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlNlY29uZCxcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Ta2V3bmVzc106IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuU2tld25lc3MsXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuU3RkZXZdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlN0ZGV2LFxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlN0ZGV2cF06IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuU3RkZXZwLFxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlN1bV06IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuU3VtLFxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jRGF5XTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5UcnVuY0RheSxcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5UcnVuY0hvdXJdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jSG91cixcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5UcnVuY01pbnV0ZV06IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNNaW51dGUsXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNNb250aF06IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNNb250aCxcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5UcnVuY1F0cl06IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNRdHIsXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNTZWNvbmRdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jU2Vjb25kLFxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jV2Vla106IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNXZWVrLFxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jWWVhcl06IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNZZWFyLFxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlVzZXJdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlVzZXIsXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuVmFyXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5WYXIsXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuVmFycF06IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuVmFycCxcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5XZWVrXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5XZWVrLFxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLldlZWtkYXldOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLldlZWtkYXksXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuWWVhcl06IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuWWVhcixcbiAgfSk7XG5cbiAgcHVibGljIHN0YXRpYyBmaWVsZFJvbGVUeXBlID0gbmV3IEVudW1Db252ZXJ0ZXI8SW50ZXJuYWxGaWVsZFJvbGVUeXBlLCBFeHRlcm5hbEZpZWxkUm9sZVR5cGU+KHtcbiAgICBbSW50ZXJuYWxGaWVsZFJvbGVUeXBlLkRpbWVuc2lvbl06IEV4dGVybmFsRmllbGRSb2xlVHlwZS5EaW1lbnNpb24sXG4gICAgW0ludGVybmFsRmllbGRSb2xlVHlwZS5NZWFzdXJlXTogRXh0ZXJuYWxGaWVsZFJvbGVUeXBlLk1lYXN1cmUsXG4gICAgW0ludGVybmFsRmllbGRSb2xlVHlwZS5Vbmtub3duXTogRXh0ZXJuYWxGaWVsZFJvbGVUeXBlLlVua25vd24sXG4gIH0pO1xuXG4gIHB1YmxpYyBzdGF0aWMgc2hlZXRUeXBlID0gbmV3IEVudW1Db252ZXJ0ZXI8SW50ZXJuYWxTaGVldFR5cGUsIEV4dGVybmFsU2hlZXRUeXBlPih7XG4gICAgW0ludGVybmFsU2hlZXRUeXBlLkRhc2hib2FyZF06IEV4dGVybmFsU2hlZXRUeXBlLkRhc2hib2FyZCxcbiAgICBbSW50ZXJuYWxTaGVldFR5cGUuU3RvcnldOiBFeHRlcm5hbFNoZWV0VHlwZS5TdG9yeSxcbiAgICBbSW50ZXJuYWxTaGVldFR5cGUuV29ya3NoZWV0XTogRXh0ZXJuYWxTaGVldFR5cGUuV29ya3NoZWV0XG4gIH0pO1xuXG4gIHB1YmxpYyBzdGF0aWMgZGFzaGJvYXJkT2JqZWN0VHlwZSA9IG5ldyBFbnVtQ29udmVydGVyPEludGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZSwgRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlPih7XG4gICAgW0ludGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5FeHRlbnNpb25dOiBFeHRlcm5hbERhc2hib2FyZE9iamVjdFR5cGUuRXh0ZW5zaW9uLFxuICAgIFtJbnRlcm5hbERhc2hib2FyZE9iamVjdFR5cGUuQmxhbmtdOiBFeHRlcm5hbERhc2hib2FyZE9iamVjdFR5cGUuQmxhbmssXG4gICAgW0ludGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5JbWFnZV06IEV4dGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5JbWFnZSxcbiAgICBbSW50ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLkxlZ2VuZF06IEV4dGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5MZWdlbmQsXG4gICAgW0ludGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5QYWdlRmlsdGVyXTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlBhZ2VGaWx0ZXIsXG4gICAgW0ludGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5QYXJhbWV0ZXJDb250cm9sXTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlBhcmFtZXRlckNvbnRyb2wsXG4gICAgW0ludGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5RdWlja0ZpbHRlcl06IEV4dGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5RdWlja0ZpbHRlcixcbiAgICBbSW50ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlRleHRdOiBFeHRlcm5hbERhc2hib2FyZE9iamVjdFR5cGUuVGV4dCxcbiAgICBbSW50ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlRpdGxlXTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlRpdGxlLFxuICAgIFtJbnRlcm5hbERhc2hib2FyZE9iamVjdFR5cGUuV2ViUGFnZV06IEV4dGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5XZWJQYWdlLFxuICAgIFtJbnRlcm5hbERhc2hib2FyZE9iamVjdFR5cGUuV29ya3NoZWV0XTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLldvcmtzaGVldFxuICB9KTtcblxuICBwdWJsaWMgc3RhdGljIGRhdGFUeXBlID0gbmV3IEVudW1Db252ZXJ0ZXI8SW50ZXJuYWxEYXRhVHlwZSwgRXh0ZXJuYWxEYXRhVHlwZT4oe1xuICAgIFtJbnRlcm5hbERhdGFUeXBlLkJvb2xdOiBFeHRlcm5hbERhdGFUeXBlLkJvb2wsXG4gICAgW0ludGVybmFsRGF0YVR5cGUuRGF0ZV06IEV4dGVybmFsRGF0YVR5cGUuRGF0ZSxcbiAgICBbSW50ZXJuYWxEYXRhVHlwZS5EYXRlVGltZV06IEV4dGVybmFsRGF0YVR5cGUuRGF0ZVRpbWUsXG4gICAgW0ludGVybmFsRGF0YVR5cGUuRmxvYXRdOiBFeHRlcm5hbERhdGFUeXBlLkZsb2F0LFxuICAgIFtJbnRlcm5hbERhdGFUeXBlLkludF06IEV4dGVybmFsRGF0YVR5cGUuSW50LFxuICAgIFtJbnRlcm5hbERhdGFUeXBlLlN0cmluZ106IEV4dGVybmFsRGF0YVR5cGUuU3RyaW5nXG4gIH0pO1xuXG4gIHB1YmxpYyBzdGF0aWMgZmlsdGVyVXBkYXRlVHlwZSA9IG5ldyBFbnVtQ29udmVydGVyPEludGVybmFsRmlsdGVyVXBkYXRlVHlwZSwgRXh0ZXJuYWxGaWx0ZXJVcGRhdGVUeXBlPih7XG4gICAgW0ludGVybmFsRmlsdGVyVXBkYXRlVHlwZS5BZGRdOiBFeHRlcm5hbEZpbHRlclVwZGF0ZVR5cGUuQWRkLFxuICAgIFtJbnRlcm5hbEZpbHRlclVwZGF0ZVR5cGUuQWxsXTogRXh0ZXJuYWxGaWx0ZXJVcGRhdGVUeXBlLkFsbCxcbiAgICBbSW50ZXJuYWxGaWx0ZXJVcGRhdGVUeXBlLlJlbW92ZV06IEV4dGVybmFsRmlsdGVyVXBkYXRlVHlwZS5SZW1vdmUsXG4gICAgW0ludGVybmFsRmlsdGVyVXBkYXRlVHlwZS5SZXBsYWNlXTogRXh0ZXJuYWxGaWx0ZXJVcGRhdGVUeXBlLlJlcGxhY2VcbiAgfSk7XG5cbiAgcHVibGljIHN0YXRpYyBhbGxvd2FibGVWYWx1ZXMgPSBuZXcgRW51bUNvbnZlcnRlcjxJbnRlcm5hbERvbWFpblJlc3RyaWN0aW9uVHlwZSwgRXh0ZXJuYWxQYXJhbWV0ZXJWYWx1ZVR5cGU+KHtcbiAgICBbSW50ZXJuYWxEb21haW5SZXN0cmljdGlvblR5cGUuQWxsXTogRXh0ZXJuYWxQYXJhbWV0ZXJWYWx1ZVR5cGUuQWxsLFxuICAgIFtJbnRlcm5hbERvbWFpblJlc3RyaWN0aW9uVHlwZS5MaXN0XTogRXh0ZXJuYWxQYXJhbWV0ZXJWYWx1ZVR5cGUuTGlzdCxcbiAgICBbSW50ZXJuYWxEb21haW5SZXN0cmljdGlvblR5cGUuUmFuZ2VdOiBFeHRlcm5hbFBhcmFtZXRlclZhbHVlVHlwZS5SYW5nZVxuICB9KTtcblxuICBwdWJsaWMgc3RhdGljIGRhdGVTdGVwUGVyaW9kID0gbmV3IEVudW1Db252ZXJ0ZXI8SW50ZXJuYWxEYXRlU3RlcFBlcmlvZCwgRXh0ZXJuYWxEYXRlUGVyaW9kPih7XG4gICAgW0ludGVybmFsRGF0ZVN0ZXBQZXJpb2QuWWVhcnNdOiBFeHRlcm5hbERhdGVQZXJpb2QuWWVhcnMsXG4gICAgW0ludGVybmFsRGF0ZVN0ZXBQZXJpb2QuUXVhcnRlcnNdOiBFeHRlcm5hbERhdGVQZXJpb2QuUXVhcnRlcnMsXG4gICAgW0ludGVybmFsRGF0ZVN0ZXBQZXJpb2QuTW9udGhzXTogRXh0ZXJuYWxEYXRlUGVyaW9kLk1vbnRocyxcbiAgICBbSW50ZXJuYWxEYXRlU3RlcFBlcmlvZC5XZWVrc106IEV4dGVybmFsRGF0ZVBlcmlvZC5XZWVrcyxcbiAgICBbSW50ZXJuYWxEYXRlU3RlcFBlcmlvZC5EYXlzXTogRXh0ZXJuYWxEYXRlUGVyaW9kLkRheXMsXG4gICAgW0ludGVybmFsRGF0ZVN0ZXBQZXJpb2QuSG91cnNdOiBFeHRlcm5hbERhdGVQZXJpb2QuSG91cnMsXG4gICAgW0ludGVybmFsRGF0ZVN0ZXBQZXJpb2QuTWludXRlc106IEV4dGVybmFsRGF0ZVBlcmlvZC5NaW51dGVzLFxuICAgIFtJbnRlcm5hbERhdGVTdGVwUGVyaW9kLlNlY29uZHNdOiBFeHRlcm5hbERhdGVQZXJpb2QuU2Vjb25kc1xuICB9KTtcblxuICBwdWJsaWMgc3RhdGljIGRhdGVSYW5nZVR5cGUgPSBuZXcgRW51bUNvbnZlcnRlcjxJbnRlcm5hbERhdGVSYW5nZVR5cGUsIEV4dGVybmFsRGF0ZVJhbmdlVHlwZT4oe1xuICAgIFtJbnRlcm5hbERhdGVSYW5nZVR5cGUuQ3VycmVudF06IEV4dGVybmFsRGF0ZVJhbmdlVHlwZS5DdXJyZW50LFxuICAgIFtJbnRlcm5hbERhdGVSYW5nZVR5cGUuTGFzdF06IEV4dGVybmFsRGF0ZVJhbmdlVHlwZS5MYXN0LFxuICAgIFtJbnRlcm5hbERhdGVSYW5nZVR5cGUuTGFzdE5dOiBFeHRlcm5hbERhdGVSYW5nZVR5cGUuTGFzdE4sXG4gICAgW0ludGVybmFsRGF0ZVJhbmdlVHlwZS5OZXh0XTogRXh0ZXJuYWxEYXRlUmFuZ2VUeXBlLk5leHQsXG4gICAgW0ludGVybmFsRGF0ZVJhbmdlVHlwZS5OZXh0Tl06IEV4dGVybmFsRGF0ZVJhbmdlVHlwZS5OZXh0TixcbiAgICBbSW50ZXJuYWxEYXRlUmFuZ2VUeXBlLlRvRGF0ZV06IEV4dGVybmFsRGF0ZVJhbmdlVHlwZS5Ub0RhdGVcbiAgfSk7XG5cbiAgcHVibGljIHN0YXRpYyBmaWx0ZXJUeXBlID0gbmV3IEVudW1Db252ZXJ0ZXI8SW50ZXJuYWxGaWx0ZXJUeXBlLCBFeHRlcm5hbEZpbHRlclR5cGU+KHtcbiAgICBbSW50ZXJuYWxGaWx0ZXJUeXBlLkNhdGVnb3JpY2FsXTogRXh0ZXJuYWxGaWx0ZXJUeXBlLkNhdGVnb3JpY2FsLFxuICAgIFtJbnRlcm5hbEZpbHRlclR5cGUuUmFuZ2VdIDogRXh0ZXJuYWxGaWx0ZXJUeXBlLlJhbmdlLFxuICAgIFtJbnRlcm5hbEZpbHRlclR5cGUuUmVsYXRpdmVEYXRlXTogRXh0ZXJuYWxGaWx0ZXJUeXBlLlJlbGF0aXZlRGF0ZSxcbiAgICBbSW50ZXJuYWxGaWx0ZXJUeXBlLkhpZXJhcmNoaWNhbF06IEV4dGVybmFsRmlsdGVyVHlwZS5IaWVyYXJjaGljYWxcbiAgfSk7XG59XG4vKiB0c2xpbnQ6ZW5hYmxlOnR5cGVkZWYgKi9cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL0VudW1NYXBwaW5ncy9JbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xuXG5pbXBvcnQgeyBGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vU2VydmljZXMvRmlsdGVyU2VydmljZSc7XG5pbXBvcnQgeyBBcGlTZXJ2aWNlUmVnaXN0cnksIFNlcnZpY2VOYW1lcyB9IGZyb20gJy4uL1NlcnZpY2VzL1NlcnZpY2VSZWdpc3RyeSc7XG5cbmV4cG9ydCBjbGFzcyBGaWx0ZXIgaW1wbGVtZW50cyBDb250cmFjdC5GaWx0ZXIge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIF93b3Jrc2hlZXROYW1lOiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIF9maWVsZE5hbWU6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgX2ZpbHRlclR5cGU6IENvbnRyYWN0LkZpbHRlclR5cGUsXG4gICAgcHJvdGVjdGVkIF9maWVsZElkOiBzdHJpbmcpIHtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgd29ya3NoZWV0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl93b3Jrc2hlZXROYW1lO1xuICB9XG5cbiAgcHVibGljIGdldCBmaWVsZE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGROYW1lO1xuICB9XG5cbiAgcHVibGljIGdldCBmaWVsZElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkSWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZpbHRlclR5cGUoKTogQ29udHJhY3QuRmlsdGVyVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlclR5cGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0RmllbGRBc3luYygpOiBQcm9taXNlPENvbnRyYWN0LkZpZWxkPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENhdGVnb3JpY2FsRmlsdGVyIGV4dGVuZHMgRmlsdGVyIGltcGxlbWVudHMgQ29udHJhY3QuQ2F0ZWdvcmljYWxGaWx0ZXIge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgd29ya3NoZWV0TmFtZTogc3RyaW5nLFxuICAgIGZpZWxkTmFtZTogc3RyaW5nLFxuICAgIGZpZWxkSWQ6IHN0cmluZyxcbiAgICBmaWx0ZXJUeXBlOiBDb250cmFjdC5GaWx0ZXJUeXBlLFxuICAgIHByaXZhdGUgX2FwcGxpZWRWYWx1ZXM6IENvbnRyYWN0LkRhdGFWYWx1ZVtdLFxuICAgIHByaXZhdGUgX2lzRXhjbHVkZU1vZGU6IGJvb2xlYW4pIHtcbiAgICAgIHN1cGVyKHdvcmtzaGVldE5hbWUsIGZpZWxkTmFtZSwgZmlsdGVyVHlwZSwgZmllbGRJZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFwcGxpZWRWYWx1ZXMoKTogQ29udHJhY3QuRGF0YVZhbHVlW10ge1xuICAgIHJldHVybiB0aGlzLl9hcHBsaWVkVmFsdWVzO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0V4Y2x1ZGVNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0V4Y2x1ZGVNb2RlO1xuICB9XG5cbiAgcHVibGljIGdldERvbWFpbkFzeW5jKGRvbWFpblR5cGU/OiBDb250cmFjdC5GaWx0ZXJEb21haW5UeXBlKTogUHJvbWlzZTxDb250cmFjdC5DYXRlZ29yaWNhbERvbWFpbj4ge1xuICAgIGlmICghZG9tYWluVHlwZSkge1xuICAgICAgZG9tYWluVHlwZSA9IENvbnRyYWN0LkZpbHRlckRvbWFpblR5cGUuUmVsZXZhbnQ7XG4gICAgfVxuICAgIGNvbnN0IHNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxGaWx0ZXJTZXJ2aWNlPihTZXJ2aWNlTmFtZXMuRmlsdGVyKTtcbiAgICByZXR1cm4gc2VydmljZS5nZXRDYXRlZ29yaWNhbERvbWFpbkFzeW5jKHRoaXMuX3dvcmtzaGVldE5hbWUsIHRoaXMuX2ZpZWxkSWQsIGRvbWFpblR5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSYW5nZUZpbHRlciBleHRlbmRzIEZpbHRlciBpbXBsZW1lbnRzIENvbnRyYWN0LlJhbmdlRmlsdGVyIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHdvcmtzaGVldE5hbWU6IHN0cmluZyxcbiAgICBmaWVsZE5hbWU6IHN0cmluZyxcbiAgICBmaWVsZElkOiBzdHJpbmcsXG4gICAgZmlsdGVyVHlwZTogQ29udHJhY3QuRmlsdGVyVHlwZSxcbiAgICBwcml2YXRlIF9taW46IENvbnRyYWN0LkRhdGFWYWx1ZSxcbiAgICBwcml2YXRlIF9tYXg6IENvbnRyYWN0LkRhdGFWYWx1ZSxcbiAgICBwcml2YXRlIF9pbmNsdWRlTnVsbFZhbHVlczogYm9vbGVhbikge1xuICAgICAgc3VwZXIod29ya3NoZWV0TmFtZSwgZmllbGROYW1lLCBmaWx0ZXJUeXBlLCBmaWVsZElkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWluVmFsdWUoKTogQ29udHJhY3QuRGF0YVZhbHVlIHtcbiAgICByZXR1cm4gdGhpcy5fbWluO1xuICB9XG5cbiAgcHVibGljIGdldCBtYXhWYWx1ZSgpOiBDb250cmFjdC5EYXRhVmFsdWUge1xuICAgIHJldHVybiB0aGlzLl9tYXg7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGluY2x1ZGVOdWxsVmFsdWVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pbmNsdWRlTnVsbFZhbHVlcztcbiAgfVxuXG4gIHB1YmxpYyAgZ2V0RG9tYWluQXN5bmMoZG9tYWluVHlwZT86IENvbnRyYWN0LkZpbHRlckRvbWFpblR5cGUpOiBQcm9taXNlPENvbnRyYWN0LlJhbmdlRG9tYWluPiB7XG4gICAgY29uc3Qgc2VydmljZSA9IEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlPEZpbHRlclNlcnZpY2U+KFNlcnZpY2VOYW1lcy5GaWx0ZXIpO1xuICAgIGlmICghZG9tYWluVHlwZSkge1xuICAgICAgZG9tYWluVHlwZSA9IENvbnRyYWN0LkZpbHRlckRvbWFpblR5cGUuUmVsZXZhbnQ7XG4gICAgfVxuICAgIHJldHVybiBzZXJ2aWNlLmdldFJhbmdlRG9tYWluQXN5bmModGhpcy5fd29ya3NoZWV0TmFtZSwgdGhpcy5fZmllbGRJZCwgZG9tYWluVHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlbGF0aXZlRGF0ZUZpbHRlciBleHRlbmRzIEZpbHRlciBpbXBsZW1lbnRzIENvbnRyYWN0LlJlbGF0aXZlRGF0ZUZpbHRlciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICB3b3Jrc2hlZXROYW1lOiBzdHJpbmcsXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXG4gICAgZmllbGRJZDogc3RyaW5nLFxuICAgIGZpbHRlclR5cGU6IENvbnRyYWN0LkZpbHRlclR5cGUsXG4gICAgcHJpdmF0ZSBfYW5jaG9yRGF0ZTogQ29udHJhY3QuRGF0YVZhbHVlLFxuICAgIHByaXZhdGUgX3BlcmlvZFR5cGU6IENvbnRyYWN0LlBlcmlvZFR5cGUsXG4gICAgcHJpdmF0ZSBfcmFuZ2VUeXBlOiBDb250cmFjdC5EYXRlUmFuZ2VUeXBlLFxuICAgIHByaXZhdGUgX3JhbmdlTjogbnVtYmVyKSB7XG4gICAgICBzdXBlcih3b3Jrc2hlZXROYW1lLCBmaWVsZE5hbWUsIGZpbHRlclR5cGUsIGZpZWxkSWQpO1xuICB9XG5cbiAgcHVibGljIGdldCBhbmNob3JEYXRlKCk6IENvbnRyYWN0LkRhdGFWYWx1ZSB7XG4gICAgcmV0dXJuIHRoaXMuX2FuY2hvckRhdGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBlcmlvZFR5cGUoKTogQ29udHJhY3QuUGVyaW9kVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3BlcmlvZFR5cGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJhbmdlVHlwZSgpOiBDb250cmFjdC5EYXRlUmFuZ2VUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2VUeXBlO1xuICB9XG5cbiAgcHVibGljIGdldCByYW5nZU4oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2VOO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDYXRlZ29yaWNhbERvbWFpbiBpbXBsZW1lbnRzIENvbnRyYWN0LkNhdGVnb3JpY2FsRG9tYWluIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3ZhbHVlczogQ29udHJhY3QuRGF0YVZhbHVlW10sXG4gICAgcHJpdmF0ZSBfZG9tYWluVHlwZTogQ29udHJhY3QuRmlsdGVyRG9tYWluVHlwZSkge1xuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZXMoKTogQ29udHJhY3QuRGF0YVZhbHVlW10ge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHR5cGUoKTogQ29udHJhY3QuRmlsdGVyRG9tYWluVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX2RvbWFpblR5cGU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJhbmdlRG9tYWluIGltcGxlbWVudHMgQ29udHJhY3QuUmFuZ2VEb21haW4ge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfbWluOiBDb250cmFjdC5EYXRhVmFsdWUsXG4gICAgcHJpdmF0ZSBfbWF4OiBDb250cmFjdC5EYXRhVmFsdWUsXG4gICAgcHJpdmF0ZSBfZG9tYWluVHlwZTogQ29udHJhY3QuRmlsdGVyRG9tYWluVHlwZSkge1xuICB9XG5cbiAgcHVibGljIGdldCB0eXBlKCk6IENvbnRyYWN0LkZpbHRlckRvbWFpblR5cGUge1xuICAgIHJldHVybiB0aGlzLl9kb21haW5UeXBlO1xuICB9XG5cbiAgcHVibGljIGdldCBtaW4oKTogQ29udHJhY3QuRGF0YVZhbHVlIHtcbiAgICByZXR1cm4gdGhpcy5fbWluO1xuICB9XG5cbiAgcHVibGljIGdldCBtYXgoKTogQ29udHJhY3QuRGF0YVZhbHVlIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4O1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9Nb2RlbHMvRmlsdGVyTW9kZWxzLnRzXG4gKiovIiwiLyoqXG4gKiBCYXNlIGludGVyZmFjZSBmb3IgYW4gYXBpIHNlcnZpY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcGlTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIEdldHMgdGhlIG5hbWUgZm9yIHRoaXMgc2VydmljZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29sbGVjdGlvbiBvZiBzZXJ2aWNlIG5hbWUgd2hpY2ggd2lsbCBiZSByZWdpc3RlcmVkIGluIHRoZSBhcGktc2hhcmVkIHByb2plY3RcbiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gU2VydmljZU5hbWVzIHtcbiAgRGF0YVNvdXJjZVNlcnZpY2UgPSAnZGF0YS1zb3VyY2Utc2VydmljZScsXG4gIEdldERhdGEgPSAnZ2V0LWRhdGEtc2VydmljZScsXG4gIEZpbHRlciA9ICdmaWx0ZXItc2VydmljZScsXG4gIE5vdGlmaWNhdGlvbiA9ICdub3RpZmljYXRpb24tc2VydmljZScsXG4gIFBhcmFtZXRlcnMgPSAncGFyYW1ldGVycy1zZXJ2aWNlJyxcbiAgU2VsZWN0aW9uID0gJ3NlbGVjdGlvbi1zZXJ2aWNlJ1xufVxuXG4vKipcbiAqIERvIHNvbWUgZ2xvYmFibCBkZWNsYXJhdGlvbnMgc28gd2UgY2FuIGNyZWF0ZSBhIHNpbmdsZXRvbiBvbiB0aGUgd2luZG93IG9iamVjdFxuICovXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cgeyBfX3RhYmxlYXVBcGlTZXJ2aWNlUmVnaXN0cnk6IFNlcnZpY2VSZWdpc3RyeSB8IHVuZGVmaW5lZDsgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VSZWdpc3RyeSB7XG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBuZXcgc2VydmljZSBpbnRvIHRoZSBzZXJ2aWNlIHJlZ2lzdHJ5LiBBbnkgZXhpc3Rpbmcgb25lIHdpbGxcbiAgICogYmUgb3ZlcndyaXR0ZW4uIHRoZSBzZXJ2aWNlIGlzIHJlZ2lzdGVyZWQgdW5kZXIgc2VydmljZS5zZXJ2aWNlTmFtZVxuICAgKlxuICAgKiBAcGFyYW0ge0FwaVNlcnZpY2V9IHNlcnZpY2UgVGhlIHNlcnZpdmUgdG8gcmVnaXN0ZXJcbiAgICovXG4gIHJlZ2lzdGVyU2VydmljZShzZXJ2aWNlOiBBcGlTZXJ2aWNlKTogdm9pZDtcblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBnaXZlbiBzZXJ2aWNlIGZyb20gdGhlIHJlZ2lzdHJ5LiBJZiB0aGVyZSBpcyBub3QgYVxuICAgKiBzZXJ2aWNlIHJlZ2lzdGVyZWQgdW5kZXIgdGhhdCBuYW1lLCB0aHJvd3MgYW5kIGVycm9yXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSBUIFRoZSB0eXBlIG9mIHRoZSBzZXJ2aWNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZXJ2aWNlTmFtZSBUaGUgbmFtZSBvZiB0aGUgc2VydmljZS5cbiAgICogQHJldHVybnMge1R9IFRoZSByZXF1ZXN0ZWQgc2VydmljZVxuICAgKi9cbiAgZ2V0U2VydmljZTxUIGV4dGVuZHMgQXBpU2VydmljZT4oc2VydmljZU5hbWU6IHN0cmluZyk6IFQ7XG59XG5cbmNsYXNzIFNlcnZpY2VSZWdpc3RyeUltcGwgaW1wbGVtZW50cyBTZXJ2aWNlUmVnaXN0cnkge1xuICBwcml2YXRlIF9zZXJ2aWNlczogeyBbc2VydmljZU5hbWU6IHN0cmluZ106IEFwaVNlcnZpY2U7IH07XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX3NlcnZpY2VzID0ge307XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJTZXJ2aWNlKHNlcnZpY2U6IEFwaVNlcnZpY2UpOiB2b2lkIHtcbiAgICB0aGlzLl9zZXJ2aWNlc1tzZXJ2aWNlLnNlcnZpY2VOYW1lXSA9IHNlcnZpY2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2VydmljZTxUIGV4dGVuZHMgQXBpU2VydmljZT4oc2VydmljZU5hbWU6IHN0cmluZyk6IFQge1xuICAgIGlmICghdGhpcy5fc2VydmljZXMuaGFzT3duUHJvcGVydHkoc2VydmljZU5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIFNlcnZpY2UgJHtzZXJ2aWNlTmFtZX0gaXMgcmVnaXN0ZXJlZGApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zZXJ2aWNlc1tzZXJ2aWNlTmFtZV0gYXMgVDtcbiAgfVxufVxuXG4vKipcbiAqIHN0YXRpYyBjbGFzcyB1c2VkIGZvciBnZXR0aW5nIGFjY2VzcyB0byB0aGUgc2luZ2xlIGluc3RhbmNlXG4gKiBvZiB0aGUgQXBpU2VydmljZVJlZ2lzdHJ5XG4gKi9cbmV4cG9ydCBjbGFzcyBBcGlTZXJ2aWNlUmVnaXN0cnkge1xuICAvKipcbiAgICogR2V0cyB0aGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBTZXJ2aWNlUmVnaXN0cnlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGluc3RhbmNlKCk6IFNlcnZpY2VSZWdpc3RyeSB7XG4gICAgaWYgKCF3aW5kb3cuX190YWJsZWF1QXBpU2VydmljZVJlZ2lzdHJ5KSB7XG4gICAgICBBcGlTZXJ2aWNlUmVnaXN0cnkuc2V0SW5zdGFuY2UobmV3IFNlcnZpY2VSZWdpc3RyeUltcGwoKSk7XG4gICAgfVxuXG4gICAgaWYgKCF3aW5kb3cuX190YWJsZWF1QXBpU2VydmljZVJlZ2lzdHJ5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fzc2lnbmluZyBzZXJ2aWNlIHJlZ2lzdHJ5IGZhaWxlZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB3aW5kb3cuX190YWJsZWF1QXBpU2VydmljZVJlZ2lzdHJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gb3ZlcnJpZGUgdGhlIHJlZ2lzdHJ5IGluc3RhbmNlLiBDYW4gYmUgdXNlZCBieSB1bml0IHRlc3RzXG4gICAqXG4gICAqIEBwYXJhbSB7U2VydmljZVJlZ2lzdHJ5fSBzZXJ2aWNlUmVnaXN0cnkgVGhlIG5ldyByZWdpc3RyeVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzZXRJbnN0YW5jZShzZXJ2aWNlUmVnaXN0cnk/OiBTZXJ2aWNlUmVnaXN0cnkpOiB2b2lkIHtcbiAgICB3aW5kb3cuX190YWJsZWF1QXBpU2VydmljZVJlZ2lzdHJ5ID0gc2VydmljZVJlZ2lzdHJ5O1xuICB9XG5cbiAgLy8gUHJpdmF0ZSB0byBhdm9pZCBhbnlvbmUgY29uc3RydWN0aW5nIHRoaXNcbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9TZXJ2aWNlUmVnaXN0cnkudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xuaW1wb3J0IHtcbiAgRGF0YVRhYmxlIGFzIERhdGFUYWJsZUludGVybmFsQ29udHJhY3QsXG4gIEV4ZWN1dGVQYXJhbWV0ZXJzLFxuICBIaWdobGlnaHRlZE1hcmtzVGFibGUsXG4gIEludGVybmFsQXBpRGlzcGF0Y2hlcixcbiAgUGFyYW1ldGVySWQsXG4gIFNlbGVjdGVkTWFya3NUYWJsZSxcbiAgVW5kZXJseWluZ0RhdGFUYWJsZSxcbiAgVmVyYklkLFxuICBWaXN1YWxJZCxcbn0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcblxuaW1wb3J0IHsgQ29sdW1uLCBEYXRhVGFibGUsIERhdGFWYWx1ZSwgTWFya0luZm8gfSBmcm9tICcuLi8uLi9Nb2RlbHMvR2V0RGF0YU1vZGVscyc7XG5pbXBvcnQgeyBHZXREYXRhU2VydmljZSwgR2V0RGF0YVR5cGUgfSBmcm9tICcuLi9HZXREYXRhU2VydmljZSc7XG5pbXBvcnQgeyBTZXJ2aWNlTmFtZXMgfSBmcm9tICcuLi9TZXJ2aWNlUmVnaXN0cnknO1xuXG5leHBvcnQgY2xhc3MgR2V0RGF0YVNlcnZpY2VJbXBsIGltcGxlbWVudHMgR2V0RGF0YVNlcnZpY2Uge1xuICBwcml2YXRlIF9kaXNwYXRjaGVyOiBJbnRlcm5hbEFwaURpc3BhdGNoZXI7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGRpc3BhdGNoZXI6IEludGVybmFsQXBpRGlzcGF0Y2hlcikge1xuICAgIHRoaXMuX2Rpc3BhdGNoZXIgPSBkaXNwYXRjaGVyO1xuICB9XG5cbiAgcHVibGljIGdldCBzZXJ2aWNlTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTZXJ2aWNlTmFtZXMuR2V0RGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVbmRlcmx5aW5nRGF0YUFzeW5jKFxuICAgIHZpc3VhbElkOiBWaXN1YWxJZCxcbiAgICBnZXRUeXBlOiBHZXREYXRhVHlwZSxcbiAgICBpZ25vcmVBbGlhc2VzOiBib29sZWFuLFxuICAgIGlnbm9yZVNlbGVjdGlvbjogYm9vbGVhbixcbiAgICBpbmNsdWRlQWxsQ29sdW1uczogYm9vbGVhbixcbiAgICBtYXhSb3dzOiBudW1iZXIpOiBQcm9taXNlPERhdGFUYWJsZT4ge1xuICAgICAgLy8gQ3JlYXRlIGFsbCBvZiBvdXIgcGFyYW1ldGVyc1xuICAgICAgY29uc3QgdmVyYiA9IGdldFR5cGUgPT09IEdldERhdGFUeXBlLlN1bW1hcnkgPyBWZXJiSWQuR2V0RGF0YVN1bW1hcnlEYXRhIDogVmVyYklkLkdldFVuZGVybHlpbmdEYXRhO1xuICAgICAgY29uc3QgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMgPSB7fTtcbiAgICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuVmlzdWFsSWRdID0gdmlzdWFsSWQ7XG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLklnbm9yZUFsaWFzZXNdID0gaWdub3JlQWxpYXNlcztcbiAgICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuSWdub3JlU2VsZWN0aW9uXSA9IGlnbm9yZVNlbGVjdGlvbjtcbiAgICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuSW5jbHVkZUFsbENvbHVtbnNdID0gaW5jbHVkZUFsbENvbHVtbnM7XG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLk1heFJvd3NdID0gbWF4Um93cztcblxuICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BhdGNoZXIuZXhlY3V0ZSh2ZXJiLCBwYXJhbWV0ZXJzKS50aGVuPERhdGFUYWJsZT4ocmVzcG9uc2UgPT4ge1xuICAgICAgICBjb25zdCByZXNwb25zZURhdGEgPSByZXNwb25zZS5yZXN1bHQgYXMgVW5kZXJseWluZ0RhdGFUYWJsZTtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1Jlc3VsdHNUYWJsZShyZXNwb25zZURhdGEuZGF0YSwgcmVzcG9uc2VEYXRhLmlzU3VtbWFyeSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgcHVibGljIGdldFNlbGVjdGVkTWFya3NBc3luYyh2aXN1YWxJZDogVmlzdWFsSWQpOiBQcm9taXNlPENvbnRyYWN0Lk1hcmtzQ29sbGVjdGlvbj4ge1xuICAgIGNvbnN0IHBhcmFtZXRlcnM6IEV4ZWN1dGVQYXJhbWV0ZXJzID0geyBbUGFyYW1ldGVySWQuVmlzdWFsSWRdOiB2aXN1YWxJZCB9O1xuICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaGVyLmV4ZWN1dGUoVmVyYklkLkdldFNlbGVjdGVkTWFya3MsIHBhcmFtZXRlcnMpLnRoZW48Q29udHJhY3QuTWFya3NDb2xsZWN0aW9uPihyZXNwb25zZSA9PiB7XG4gICAgICBjb25zdCByZXNwb25zZURhdGEgPSByZXNwb25zZS5yZXN1bHQgYXMgU2VsZWN0ZWRNYXJrc1RhYmxlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YTogcmVzcG9uc2VEYXRhLmRhdGEubWFwKHRhYmxlID0+IHRoaXMucHJvY2Vzc1Jlc3VsdHNUYWJsZSh0YWJsZSwgdHJ1ZSkpXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldEhpZ2hsaWdodGVkTWFya3NBc3luYyh2aXN1YWxJZDogVmlzdWFsSWQpOiBQcm9taXNlPENvbnRyYWN0Lk1hcmtzQ29sbGVjdGlvbj4ge1xuICAgIGNvbnN0IHBhcmFtZXRlcnM6IEV4ZWN1dGVQYXJhbWV0ZXJzID0geyBbUGFyYW1ldGVySWQuVmlzdWFsSWRdOiB2aXN1YWxJZCB9O1xuICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaGVyLmV4ZWN1dGUoVmVyYklkLkdldEhpZ2hsaWdodGVkTWFya3MsIHBhcmFtZXRlcnMpLnRoZW48Q29udHJhY3QuTWFya3NDb2xsZWN0aW9uPihyZXNwb25zZSA9PiB7XG4gICAgICBjb25zdCByZXNwb25zZURhdGEgPSByZXNwb25zZS5yZXN1bHQgYXMgSGlnaGxpZ2h0ZWRNYXJrc1RhYmxlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YTogcmVzcG9uc2VEYXRhLmRhdGEubWFwKHRhYmxlID0+IHRoaXMucHJvY2Vzc1Jlc3VsdHNUYWJsZSh0YWJsZSwgdHJ1ZSkpXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldERhdGFTb3VyY2VEYXRhQXN5bmMoXG4gICAgZGF0YVNvdXJjZUlkOiBzdHJpbmcsXG4gICAgaWdub3JlQWxpYXNlczogYm9vbGVhbixcbiAgICBtYXhSb3dzOiBudW1iZXIsXG4gICAgY29sdW1uc1RvSW5jbHVkZTogQXJyYXk8c3RyaW5nPik6IFByb21pc2U8RGF0YVRhYmxlPiB7XG4gICAgICBjb25zdCBwYXJhbWV0ZXJzOiBFeGVjdXRlUGFyYW1ldGVycyA9IHtcbiAgICAgICAgW1BhcmFtZXRlcklkLkRhdGFTb3VyY2VJZF06IGRhdGFTb3VyY2VJZCxcbiAgICAgICAgW1BhcmFtZXRlcklkLklnbm9yZUFsaWFzZXNdOiBpZ25vcmVBbGlhc2VzLFxuICAgICAgICBbUGFyYW1ldGVySWQuTWF4Um93c106IG1heFJvd3MsXG4gICAgICAgIFtQYXJhbWV0ZXJJZC5Db2x1bW5zVG9JbmNsdWRlXTogY29sdW1uc1RvSW5jbHVkZSxcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaGVyLmV4ZWN1dGUoVmVyYklkLkdldERhdGFTb3VyY2VEYXRhLCBwYXJhbWV0ZXJzKS50aGVuPERhdGFUYWJsZT4ocmVzcG9uc2UgPT4ge1xuICAgICAgICBjb25zdCByZXNwb25zZURhdGEgPSByZXNwb25zZS5yZXN1bHQgYXMgVW5kZXJseWluZ0RhdGFUYWJsZTtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1Jlc3VsdHNUYWJsZShyZXNwb25zZURhdGEuZGF0YSwgZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gIHByb3RlY3RlZCBwcm9jZXNzUmVzdWx0c1RhYmxlKHJlc3BvbnNlRGF0YTogRGF0YVRhYmxlSW50ZXJuYWxDb250cmFjdCwgaXNTdW1tYXJ5OiBib29sZWFuKTogRGF0YVRhYmxlIHtcbiAgICBjb25zdCBoZWFkZXJzID0gcmVzcG9uc2VEYXRhLmhlYWRlcnMubWFwKGggPT4gbmV3IENvbHVtbihoLmZpZWxkQ2FwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRyYWN0LkRhdGFUeXBlLlN0cmluZyAvKmguRGF0YVR5cGUqLyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGguaXNSZWZlcmVuY2VkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaC5pbmRleCkpO1xuICAgIC8vIFRPRE8gVGhpcyBzaG91bGQgYmUgY29udHJvbGxlZCBieSBhIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoaXMgYXBpIHdpbGwgcmVzcG9uZCBtYXJrcyBpbmZvIG9yIG5vdFxuICAgIGxldCBtYXJrcztcbiAgICBpZiAocmVzcG9uc2VEYXRhLm1hcmtzKSB7XG4gICAgICBtYXJrcyA9IHJlc3BvbnNlRGF0YS5tYXJrcy5tYXAoaCA9PiBuZXcgTWFya0luZm8oaC50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLmNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLnR1cGxlSWQpKTtcbiAgICB9XG4gICAgY29uc3QgdGFibGUgPSByZXNwb25zZURhdGEuZGF0YVRhYmxlLm1hcChyb3cgPT4ge1xuICAgICAgcmV0dXJuIHJvdy5tYXAoY2VsbCA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0YVZhbHVlKGNlbGwudmFsdWUsIGNlbGwuZm9ybWF0dGVkVmFsdWUpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpZiAobWFya3MpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0YVRhYmxlKHRhYmxlLCBoZWFkZXJzLCB0YWJsZS5sZW5ndGgsIGlzU3VtbWFyeSwgbWFya3MpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IERhdGFUYWJsZSh0YWJsZSwgaGVhZGVycywgdGFibGUubGVuZ3RoLCBpc1N1bW1hcnkpO1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9pbXBsL0dldERhdGFTZXJ2aWNlSW1wbC50c1xuICoqLyIsImltcG9ydCB7IEludGVybmFsQXBpRGlzcGF0Y2hlciwgTW9kZWwsIE5vdGlmaWNhdGlvbiwgTm90aWZpY2F0aW9uSWQgfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xuXG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlLCBVbnJlZ2lzdGVyRm4gfSBmcm9tICcuLi9Ob3RpZmljYXRpb25TZXJ2aWNlJztcbmltcG9ydCB7IFNlcnZpY2VOYW1lcyB9IGZyb20gJy4uL1NlcnZpY2VSZWdpc3RyeSc7XG5cbmNsYXNzIFJlZ2lzdHJhdGlvbiB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9maWx0ZXJGbjogKG5vdGlmaWNhdGlvbk1vZGVsOiBNb2RlbCkgPT4gYm9vbGVhbixcbiAgICBwcml2YXRlIF9jYWxsYmFja0ZuOiAobm90aWZpY2F0aW9uTW9kZWw6IE1vZGVsKSA9PiB2b2lkKSB7XG4gICAgICAvLyBOb3RoaW5nIEhlcmVcbiAgfVxuXG4gIHB1YmxpYyBvbk5vdGlmaWNhdGlvbihub3RpZmljYXRpb25Nb2RlbDogTW9kZWwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZmlsdGVyRm4obm90aWZpY2F0aW9uTW9kZWwpKSB7XG4gICAgICB0aGlzLl9jYWxsYmFja0ZuKG5vdGlmaWNhdGlvbk1vZGVsKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvblNlcnZpY2VJbXBsIGltcGxlbWVudHMgTm90aWZpY2F0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgX2hhbmRsZXJzOiB7IFtub3RpZmljYXRpb25JZDogc3RyaW5nXTogQXJyYXk8UmVnaXN0cmF0aW9uPiB9O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpc3BhdGNoZXI6IEludGVybmFsQXBpRGlzcGF0Y2hlcikge1xuICAgIHRoaXMuX2hhbmRsZXJzID0ge307XG4gICAgdGhpcy5kaXNwYXRjaGVyLnJlZ2lzdGVyTm90aWZpY2F0aW9uSGFuZGxlcih0aGlzLm9uTm90aWZpY2F0aW9uLmJpbmQodGhpcykpO1xuICB9XG5cbiAgcHVibGljIGdldCBzZXJ2aWNlTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTZXJ2aWNlTmFtZXMuTm90aWZpY2F0aW9uO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVySGFuZGxlcihpZDogTm90aWZpY2F0aW9uSWQsIGZpbHRlckZuOiAobW9kZWw6IE1vZGVsKSA9PiBib29sZWFuLCBoYW5kbGVyOiAobW9kZWw6IE1vZGVsKSA9PiB2b2lkKTogVW5yZWdpc3RlckZuIHtcbiAgICBjb25zdCBoYW5kbGVycyA9IHRoaXMuX2hhbmRsZXJzW2lkXSB8fCBuZXcgQXJyYXk8UmVnaXN0cmF0aW9uPigpO1xuICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IG5ldyBSZWdpc3RyYXRpb24oZmlsdGVyRm4sIGhhbmRsZXIpO1xuICAgIGhhbmRsZXJzLnB1c2gocmVnaXN0cmF0aW9uKTtcbiAgICB0aGlzLl9oYW5kbGVyc1tpZF0gPSBoYW5kbGVycztcbiAgICByZXR1cm4gKCkgPT4gdGhpcy5yZW1vdmVSZWdpc3RyYXRpb24oaWQsIHJlZ2lzdHJhdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGhhc0hhbmRsZXJzRm9yTm90aWZpY2F0aW9uVHlwZShpZDogTm90aWZpY2F0aW9uSWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faGFuZGxlcnMuaGFzT3duUHJvcGVydHkoaWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbk5vdGlmaWNhdGlvbihub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbik6IHZvaWQge1xuICAgIGlmICghdGhpcy5oYXNIYW5kbGVyc0Zvck5vdGlmaWNhdGlvblR5cGUobm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbklkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdvIHRocm91Z2ggYW5kIGNoZWNrIGZvciBhbGwgdGhlIGhhbmRsZXJzIG9mIHRoaXMgcGFydGljdWxhciBub3RpZmljYXRpb25cbiAgICB0aGlzLl9oYW5kbGVyc1tub3RpZmljYXRpb24ubm90aWZpY2F0aW9uSWRdLmZvckVhY2goaCA9PiBoLm9uTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi5kYXRhKSk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZVJlZ2lzdHJhdGlvbihpZDogTm90aWZpY2F0aW9uSWQsIHJlZ2lzdHJhdGlvbjogUmVnaXN0cmF0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmhhc0hhbmRsZXJzRm9yTm90aWZpY2F0aW9uVHlwZShpZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9oYW5kbGVyc1tpZF0gPSB0aGlzLl9oYW5kbGVyc1tpZF0uZmlsdGVyKHJlZyA9PiByZWcgIT09IHJlZ2lzdHJhdGlvbik7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL2ltcGwvTm90aWZpY2F0aW9uU2VydmljZUltcGwudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xuaW1wb3J0IHtcbiAgRXhlY3V0ZVBhcmFtZXRlcnMsXG4gIEludGVybmFsQXBpRGlzcGF0Y2hlcixcbiAgTW9kZWwsXG4gIFBhcmFtZXRlcklkLFxuICBQYXJhbWV0ZXJJbmZvLFxuICBTaGVldFBhdGgsXG4gIFZlcmJJZCxcbn0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcblxuaW1wb3J0IHsgUGFyYW1ldGVySW1wbCB9IGZyb20gJy4uLy4uL0ludGVybmFsL1BhcmFtZXRlckltcGwnO1xuaW1wb3J0IHsgUGFyYW1ldGVyIH0gZnJvbSAnLi4vLi4vUGFyYW1ldGVyJztcbmltcG9ydCB7IFBhcmFtZXRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vUGFyYW1ldGVyc1NlcnZpY2UnO1xuaW1wb3J0IHsgU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vU2VydmljZVJlZ2lzdHJ5JztcblxuZXhwb3J0IGNsYXNzIFBhcmFtZXRlcnNTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIFBhcmFtZXRlcnNTZXJ2aWNlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyKSB7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlcnZpY2VOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFNlcnZpY2VOYW1lcy5QYXJhbWV0ZXJzO1xuICB9XG5cbiAgcHVibGljIGdldFBhcmFtZXRlcnNGb3JTaGVldEFzeW5jKHNoZWV0UGF0aDogU2hlZXRQYXRoLCBzaGVldDogQ29udHJhY3QuU2hlZXQpOiBQcm9taXNlPEFycmF5PFBhcmFtZXRlcj4+IHtcbiAgICBjb25zdCBwYXJhbWV0ZXJzID0ge1xuICAgICAgW1BhcmFtZXRlcklkLlNoZWV0UGF0aF06IHNoZWV0UGF0aFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5kaXNwYXRjaGVyLmV4ZWN1dGUoVmVyYklkLkdldFBhcmFtZXRlcnNGb3JTaGVldCwgcGFyYW1ldGVycykudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAvLyBUT0RPIC0gQ2hlY2sgZm9yIGVycm9yXG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdCBhcyBBcnJheTxQYXJhbWV0ZXJJbmZvPjtcbiAgICAgIHJldHVybiByZXN1bHQubWFwKHBhcmFtZXRlckluZm8gPT4ge1xuICAgICAgICBjb25zdCBpbXBsID0gbmV3IFBhcmFtZXRlckltcGwocGFyYW1ldGVySW5mbyk7XG4gICAgICAgIHJldHVybiBuZXcgUGFyYW1ldGVyKGltcGwsIHNoZWV0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZVBhcmFtZXRlclZhbHVlQXN5bmMoZmllbGROYW1lOiBzdHJpbmcsIG5ld1ZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPFBhcmFtZXRlckluZm8+IHtcbiAgICBjb25zdCBwYXJhbWV0ZXJzID0ge1xuICAgICAgW1BhcmFtZXRlcklkLlBhcmFtZXRlckZpZWxkTmFtZV06IGZpZWxkTmFtZSxcbiAgICAgIFtQYXJhbWV0ZXJJZC5QYXJhbWV0ZXJWYWx1ZV06IG5ld1ZhbHVlXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoZXIuZXhlY3V0ZShWZXJiSWQuQ2hhbmdlUGFyYW1ldGVyVmFsdWUsIHBhcmFtZXRlcnMpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0IGFzIFBhcmFtZXRlckluZm87XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGZpbmRQYXJhbWV0ZXJCeU5hbWVBc3luYyhuYW1lOiBzdHJpbmcsIHNoZWV0OiBDb250cmFjdC5TaGVldCk6IFByb21pc2U8UGFyYW1ldGVyIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuZmluZFBhcmFtZXRlckFzeW5jKHNoZWV0LCBuYW1lLCB1bmRlZmluZWQpO1xuICB9XG5cbiAgcHVibGljIGZpbmRQYXJhbWV0ZXJCeUdsb2JhbEZpZWxkTmFtZUFzeW5jKGZpZWxkTmFtZTogc3RyaW5nLCBzaGVldDogQ29udHJhY3QuU2hlZXQpOiBQcm9taXNlPFBhcmFtZXRlciB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLmZpbmRQYXJhbWV0ZXJBc3luYyhzaGVldCwgdW5kZWZpbmVkLCBmaWVsZE5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kUGFyYW1ldGVyQXN5bmMoXG4gICAgc2hlZXQ6IENvbnRyYWN0LlNoZWV0LFxuICAgIG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBmaWVsZE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IFByb21pc2U8UGFyYW1ldGVyIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMgPSB7fTtcbiAgICBpZiAobmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLlBhcmFtZXRlckNhcHRpb25dID0gbmFtZTtcbiAgICB9IGVsc2UgaWYgKGZpZWxkTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLlBhcmFtZXRlckZpZWxkTmFtZV0gPSBmaWVsZE5hbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyByZXF1aXJlIGZpZWxkIG5hbWUgb3IgY2FwdGlvbicpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoZXIuZXhlY3V0ZShWZXJiSWQuRmluZFBhcmFtZXRlciwgcGFyYW1ldGVycykudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICBjb25zdCBpbnN0YW5jZU9mUGFyYW1ldGVySW5mbyA9IChvYmplY3Q6IE1vZGVsKTogb2JqZWN0IGlzIFBhcmFtZXRlckluZm8gPT4ge1xuICAgICAgICByZXR1cm4gJ2ZpZWxkTmFtZScgaW4gb2JqZWN0O1xuICAgICAgfTtcblxuICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayB0byBzZWUgaWYgd2UgZ290IGEgdmFsaWQgcmVzcG9uc2UgYmFjayBhZ2FpblxuICAgICAgaWYgKGluc3RhbmNlT2ZQYXJhbWV0ZXJJbmZvKHJlc3BvbnNlLnJlc3VsdCkpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0IGFzIFBhcmFtZXRlckluZm87XG4gICAgICAgIGNvbnN0IGltcGwgPSBuZXcgUGFyYW1ldGVySW1wbChyZXN1bHQpO1xuICAgICAgICByZXR1cm4gbmV3IFBhcmFtZXRlcihpbXBsLCBzaGVldCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9pbXBsL1BhcmFtZXRlcnNTZXJ2aWNlSW1wbC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25JZCwgUGFyYW1ldGVySW5mbyB9IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5pbXBvcnQgeyBQYXJhbSB9IGZyb20gJ0B0YWJsZWF1L2FwaS11dGlscyc7XG5cbmltcG9ydCB7IEludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5ncyB9IGZyb20gJy4uL0VudW1NYXBwaW5ncy9JbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MnO1xuaW1wb3J0IHsgUGFyYW1ldGVyQ2hhbmdlZEV2ZW50IH0gZnJvbSAnLi4vRXZlbnRzL1BhcmFtZXRlckNoYW5nZWRFdmVudCc7XG5pbXBvcnQgeyBEYXRhVmFsdWUgfSBmcm9tICcuLi9Nb2RlbHMvR2V0RGF0YU1vZGVscyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vU2VydmljZXMvTm90aWZpY2F0aW9uU2VydmljZSc7XG5pbXBvcnQgeyBQYXJhbWV0ZXJzU2VydmljZSB9IGZyb20gJy4uL1NlcnZpY2VzL1BhcmFtZXRlcnNTZXJ2aWNlJztcbmltcG9ydCB7IEFwaVNlcnZpY2VSZWdpc3RyeSwgU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vU2VydmljZXMvU2VydmljZVJlZ2lzdHJ5JztcbmltcG9ydCB7IFNpbmdsZUV2ZW50TWFuYWdlciB9IGZyb20gJy4uL1NpbmdsZUV2ZW50TWFuYWdlcic7XG5pbXBvcnQgeyBTaW5nbGVFdmVudE1hbmFnZXJJbXBsIH0gZnJvbSAnLi9TaW5nbGVFdmVudE1hbmFnZXJJbXBsJztcblxuZXhwb3J0IGNsYXNzIFBhcmFtZXRlckltcGwge1xuICBwcml2YXRlIF9hbGxvd2FibGVWYWx1ZXM6IENvbnRyYWN0LlBhcmFtZXRlckRvbWFpblJlc3RyaWN0aW9uO1xuICBwcml2YXRlIF9nbG9iYWxGaWVsZE5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBfcGFyYW1ldGVySW5mbzogUGFyYW1ldGVySW5mbztcblxuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1ldGVySW5mbzogUGFyYW1ldGVySW5mbykge1xuICAgIHRoaXMuc2V0UGFyYW1ldGVySW5mbyhwYXJhbWV0ZXJJbmZvKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wYXJhbWV0ZXJJbmZvLm5hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1cnJlbnRWYWx1ZSgpOiBEYXRhVmFsdWUge1xuICAgIHJldHVybiBuZXcgRGF0YVZhbHVlKHRoaXMuX3BhcmFtZXRlckluZm8uY3VycmVudFZhbHVlLnZhbHVlLCB0aGlzLl9wYXJhbWV0ZXJJbmZvLmN1cnJlbnRWYWx1ZS5mb3JtYXR0ZWRWYWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRhdGFUeXBlKCk6IENvbnRyYWN0LkRhdGFUeXBlIHtcbiAgICByZXR1cm4gSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzLmRhdGFUeXBlLmNvbnZlcnQodGhpcy5fcGFyYW1ldGVySW5mby5kYXRhVHlwZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFsbG93YWJsZVZhbHVlcygpOiBDb250cmFjdC5QYXJhbWV0ZXJEb21haW5SZXN0cmljdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX2FsbG93YWJsZVZhbHVlcztcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VWYWx1ZUFzeW5jKG5ld1ZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgRGF0ZSk6IFByb21pc2U8RGF0YVZhbHVlPiB7XG4gICAgbGV0IGNvZXJjZWRWYWx1ZSA9IFBhcmFtLnNlcmlhbGl6ZVBhcmFtdGVyVmFsdWUobmV3VmFsdWUpO1xuICAgIGNvbnN0IHBhcmFtZXRlcnNTZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8UGFyYW1ldGVyc1NlcnZpY2U+KFNlcnZpY2VOYW1lcy5QYXJhbWV0ZXJzKTtcbiAgICByZXR1cm4gcGFyYW1ldGVyc1NlcnZpY2UuY2hhbmdlUGFyYW1ldGVyVmFsdWVBc3luYyh0aGlzLl9nbG9iYWxGaWVsZE5hbWUsIGNvZXJjZWRWYWx1ZSkudGhlbihwYXJhbWV0ZXJJbmZvID0+IHtcbiAgICAgIHRoaXMuc2V0UGFyYW1ldGVySW5mbyhwYXJhbWV0ZXJJbmZvKTtcbiAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRWYWx1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHdoaWNoIGdvZXMgdGhyb3VnaCBhbmQgcmVnaXN0ZXJzIGVhY2ggZXZlbnQgdHlwZSB0aGlzIGltcGwga25vd3MgYWJvdXRcbiAgICogd2l0aCB0aGUgTm90aWZpY2F0aW9uU2VydmljZS4gSXQgcmV0dXJucyBhbiBhcnJheSBvZiBTaW5nbGVFdmVudE1hbmFnZXIgb2JqZWN0cyB3aGljaFxuICAgKiBjYW4gdGhlbiBiZSBwYXNzZWQgdG8gYW4gRXZlbnRMaXN0ZW5lck1hbmFnZXIgdG8gaGFuZGxlIHVzZXIgcmVnaXN0cmF0aW9uIC8gdW5yZWdpc3RyYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBzaGVldCBUaGUgc2hlZXQgb2JqZWN0IHdoaWNoIHdpbGwgYmUgaW5jbHVkZWQgd2l0aCB0aGUgZXZlbnQgbm90aWZpY2F0aW9uc1xuICAgKiBAcmV0dXJucyB7QXJyYXk8U2luZ2xlRXZlbnRNYW5hZ2VyPn0gQ29sbGVjdGlvbiBvZiBldmVudCBtYW5hZ2VycyB0byBwYXNzIHRvIGFuIEV2ZW50TGlzdGVuZXJNYW5hZ2VyXG4gICAqL1xuICBwdWJsaWMgaW5pdGlhbGl6ZUV2ZW50cyhzaGVldDogQ29udHJhY3QuU2hlZXQpOiBBcnJheTxTaW5nbGVFdmVudE1hbmFnZXI+IHtcbiAgICBjb25zdCByZXN1bHRzID0gbmV3IEFycmF5PFNpbmdsZUV2ZW50TWFuYWdlcj4oKTtcbiAgICBsZXQgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZTtcblxuICAgIHRyeSB7XG4gICAgICBub3RpZmljYXRpb25TZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8Tm90aWZpY2F0aW9uU2VydmljZT4oU2VydmljZU5hbWVzLk5vdGlmaWNhdGlvbik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSB0aGlzIHNlcnZpY2UgcmVnaXN0ZXJlZCwganVzdCByZXR1cm5cbiAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgYWxsIG9mIHRoZSBldmVudCBtYW5hZ2VycyB3ZSdsbCBuZWVkIChvbmUgZm9yIGVhY2ggZXZlbnQgdHlwZSlcbiAgICBjb25zdCBwYXJhbWV0ZXJFdmVudCA9IG5ldyBTaW5nbGVFdmVudE1hbmFnZXJJbXBsPFBhcmFtZXRlckNoYW5nZWRFdmVudD4oQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZS5QYXJhbWV0ZXJDaGFuZ2VkKTtcbiAgICBub3RpZmljYXRpb25TZXJ2aWNlLnJlZ2lzdGVySGFuZGxlcihOb3RpZmljYXRpb25JZC5QYXJhbWV0ZXJDaGFuZ2VkLCAobW9kZWwpID0+IHtcbiAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IG1vZGVsIGFzIHN0cmluZztcbiAgICAgIHJldHVybiBmaWVsZE5hbWUgPT09IHRoaXMuX2dsb2JhbEZpZWxkTmFtZTtcbiAgICB9LCAoZmllbGROYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIHBhcmFtZXRlckV2ZW50LnRyaWdnZXJFdmVudCgoKSA9PiBuZXcgUGFyYW1ldGVyQ2hhbmdlZEV2ZW50KGZpZWxkTmFtZSwgc2hlZXQpKTtcbiAgICB9KTtcblxuICAgIHJlc3VsdHMucHVzaChwYXJhbWV0ZXJFdmVudCk7XG5cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxuXG4gIHByaXZhdGUgc2V0UGFyYW1ldGVySW5mbyhwYXJhbWV0ZXJJbmZvOiBQYXJhbWV0ZXJJbmZvKTogdm9pZCB7XG4gICAgdGhpcy5fcGFyYW1ldGVySW5mbyA9IHBhcmFtZXRlckluZm87XG4gICAgdGhpcy5fZ2xvYmFsRmllbGROYW1lID0gcGFyYW1ldGVySW5mby5maWVsZE5hbWU7XG5cbiAgICBjb25zdCB0eXBlID0gSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzLmFsbG93YWJsZVZhbHVlcy5jb252ZXJ0KHBhcmFtZXRlckluZm8uYWxsb3dhYmxlVmFsdWVzVHlwZSk7XG4gICAgbGV0IGxpc3RWYWx1ZXM6IEFycmF5PERhdGFWYWx1ZT4gfCB1bmRlZmluZWQ7XG4gICAgbGV0IG1pblZhbHVlOiBEYXRhVmFsdWUgfCB1bmRlZmluZWQ7XG4gICAgbGV0IG1heFZhbHVlOiBEYXRhVmFsdWUgfCB1bmRlZmluZWQ7XG4gICAgbGV0IHN0ZXBTaXplOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGRhdGVTdGVwUGVyaW9kOiBDb250cmFjdC5QZXJpb2RUeXBlIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKHR5cGUgPT09IENvbnRyYWN0LlBhcmFtZXRlclZhbHVlVHlwZS5MaXN0KSB7XG4gICAgICBjb25zdCB2YWx1ZXMgPSBwYXJhbWV0ZXJJbmZvLmFsbG93YWJsZVZhbHVlcyB8fCBbXTtcbiAgICAgIGxpc3RWYWx1ZXMgPSB2YWx1ZXMubWFwKHZhbCA9PiBuZXcgRGF0YVZhbHVlKHZhbC52YWx1ZSwgdmFsLmZvcm1hdHRlZFZhbHVlKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSBDb250cmFjdC5QYXJhbWV0ZXJWYWx1ZVR5cGUuUmFuZ2UpIHtcbiAgICAgIG1pblZhbHVlID0gcGFyYW1ldGVySW5mby5taW5WYWx1ZSAmJiBuZXcgRGF0YVZhbHVlKHBhcmFtZXRlckluZm8ubWluVmFsdWUudmFsdWUsIHBhcmFtZXRlckluZm8ubWluVmFsdWUuZm9ybWF0dGVkVmFsdWUpO1xuICAgICAgbWF4VmFsdWUgPSBwYXJhbWV0ZXJJbmZvLm1heFZhbHVlICYmIG5ldyBEYXRhVmFsdWUocGFyYW1ldGVySW5mby5tYXhWYWx1ZS52YWx1ZSwgcGFyYW1ldGVySW5mby5tYXhWYWx1ZS5mb3JtYXR0ZWRWYWx1ZSk7XG4gICAgICBzdGVwU2l6ZSA9IHBhcmFtZXRlckluZm8uc3RlcFNpemU7XG4gICAgICBkYXRlU3RlcFBlcmlvZCA9IHBhcmFtZXRlckluZm8uZGF0ZVN0ZXBQZXJpb2QgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzLmRhdGVTdGVwUGVyaW9kLmNvbnZlcnQocGFyYW1ldGVySW5mby5kYXRlU3RlcFBlcmlvZCk7XG4gICAgfVxuXG4gICAgdGhpcy5fYWxsb3dhYmxlVmFsdWVzID0ge1xuICAgICAgdHlwZTogdHlwZSxcbiAgICAgIGFsbG93YWJsZVZhbHVlczogbGlzdFZhbHVlcyxcbiAgICAgIG1pblZhbHVlOiBtaW5WYWx1ZSxcbiAgICAgIG1heFZhbHVlOiBtYXhWYWx1ZSxcbiAgICAgIHN0ZXBTaXplOiBzdGVwU2l6ZSxcbiAgICAgIGRhdGVTdGVwUGVyaW9kOiBkYXRlU3RlcFBlcmlvZFxuICAgIH07XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL0ludGVybmFsL1BhcmFtZXRlckltcGwudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xuXG5pbXBvcnQgeyBQYXJhbWV0ZXJzU2VydmljZSB9IGZyb20gJy4uL1NlcnZpY2VzL1BhcmFtZXRlcnNTZXJ2aWNlJztcbmltcG9ydCB7IEFwaVNlcnZpY2VSZWdpc3RyeSwgU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vU2VydmljZXMvU2VydmljZVJlZ2lzdHJ5JztcbmltcG9ydCB7IFRhYmxlYXVTaGVldEV2ZW50IH0gZnJvbSAnLi9UYWJsZWF1U2hlZXRFdmVudCc7XG5cbmV4cG9ydCBjbGFzcyBQYXJhbWV0ZXJDaGFuZ2VkRXZlbnQgZXh0ZW5kcyBUYWJsZWF1U2hlZXRFdmVudCBpbXBsZW1lbnRzIENvbnRyYWN0LlBhcmFtZXRlckNoYW5nZWRFdmVudCB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIF9nbG9iYWxGaWVsZE5hbWU6IHN0cmluZywgc2hlZXQ6IENvbnRyYWN0LlNoZWV0KSB7XG4gICAgc3VwZXIoQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZS5QYXJhbWV0ZXJDaGFuZ2VkLCBzaGVldCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UGFyYW1ldGVyQXN5bmMoKTogUHJvbWlzZTxDb250cmFjdC5QYXJhbWV0ZXI+IHtcbiAgICAvLyBDYWxsIGRvd24gdG8gb3VyIHNlcnZpY2UgdG8gZ2V0IHRoZSBwYXJhbWV0ZXIgYmFjayB2aWEgaXRzIGZpZWxkIG5hbWVcbiAgICBjb25zdCBzZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8UGFyYW1ldGVyc1NlcnZpY2U+KFNlcnZpY2VOYW1lcy5QYXJhbWV0ZXJzKTtcbiAgICByZXR1cm4gc2VydmljZS5maW5kUGFyYW1ldGVyQnlHbG9iYWxGaWVsZE5hbWVBc3luYyh0aGlzLl9nbG9iYWxGaWVsZE5hbWUsIHRoaXMuc2hlZXQpLnRoZW4ocGFyYW1ldGVyID0+IHtcbiAgICAgIGlmIChwYXJhbWV0ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBmaW5kIHBhcmFtZXRlcicpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcGFyYW1ldGVyO1xuICAgIH0pO1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9FdmVudHMvUGFyYW1ldGVyQ2hhbmdlZEV2ZW50LnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcbmltcG9ydCB7XG4gIEV4ZWN1dGVQYXJhbWV0ZXJzLFxuICBJbnRlcm5hbEFwaURpc3BhdGNoZXIsXG4gIFBhcmFtZXRlcklkLFxuICBRdWFudGl0YXRpdmVJbmNsdWRlZFZhbHVlcyxcbiAgU2VsZWN0aW9uVXBkYXRlVHlwZSBhcyBTZWxlY3Rpb25VcGRhdGVUeXBlSW50ZXJuYWwsXG4gIFZlcmJJZCxcbiAgVmlzdWFsSWRcbn0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcbmltcG9ydCB7IERpbWVuc2lvblNlbGVjdGlvbk1vZGVsLFxuICBIaWVyYXJjaGljYWxTZWxlY3Rpb25Nb2RlbCxcbiAgUmFuZ2VTZWxlY3Rpb25Nb2RlbCxcbiAgU2VsZWN0aW9uTW9kZWxzQ29udGFpbmVyLFxuICBUdXBsZVNlbGVjdGlvbk1vZGVsLFxuICBWYWx1ZVNlbGVjdGlvbk1vZGVsXG59IGZyb20gJy4uLy4uL01vZGVscy9TZWxlY3Rpb25Nb2RlbHMnO1xuaW1wb3J0IHsgU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4uL1NlbGVjdGlvblNlcnZpY2UnO1xuaW1wb3J0IHsgU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vU2VydmljZVJlZ2lzdHJ5JztcblxuZXhwb3J0IGNsYXNzIFNlbGVjdGlvblNlcnZpY2VJbXBsIGltcGxlbWVudHMgU2VsZWN0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgX2Rpc3BhdGNoZXI6IEludGVybmFsQXBpRGlzcGF0Y2hlcjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyKSB7XG4gICAgdGhpcy5fZGlzcGF0Y2hlciA9IGRpc3BhdGNoZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlcnZpY2VOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFNlcnZpY2VOYW1lcy5TZWxlY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIGNsZWFyIGFsbCB0aGUgc2VsZWN0ZWQgbWFya3MgZm9yIHRoZSBnaXZlbiB3b3Jrc2hlZXQuXG4gICAqXG4gICAqIEBwYXJhbSB2aXN1YWxJZFxuICAgKi9cbiAgcHVibGljIGNsZWFyU2VsZWN0ZWRNYXJrc0FzeW5jKHZpc3VhbElkOiBWaXN1YWxJZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHBhcmFtZXRlcnM6IEV4ZWN1dGVQYXJhbWV0ZXJzID0ge1tQYXJhbWV0ZXJJZC5WaXN1YWxJZF06IHZpc3VhbElkfTtcbiAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5leGVjdXRlKFZlcmJJZC5DbGVhclNlbGVjdGVkTWFya3MsIHBhcmFtZXRlcnMpLnRoZW48dm9pZD4ocmVzcG9uc2UgPT4ge1xuICAgICAgcmV0dXJuIDsgLy8gRXhwZWN0aW5nIGFuIGVtcHR5IG1vZGVsIGFuZCBoZW5jZSB0aGUgdm9pZCByZXNwb25zZS5cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gc2VsZWN0IG1hcmtzIGZvciB0aGUgZ2l2ZW4gd29ya3NoZWV0LlxuICAgKlxuICAgKiBAcGFyYW0gdmlzdWFsSWRcbiAgICogQHBhcmFtIHNlbGVjdGlvbkNyaXRlcmlhXG4gICAqIEBwYXJhbSBzZWxlY3Rpb25VcGRhdGVUeXBlXG4gICAqL1xuICBwdWJsaWMgc2VsZWN0TWFya3NCeVZhbHVlQXN5bmModmlzdWFsSWQ6IFZpc3VhbElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uQ3JpdGVyaWFzOiBBcnJheTxDb250cmFjdC5TZWxlY3Rpb25Dcml0ZXJpYT4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25VcGRhdGVUeXBlOiBDb250cmFjdC5TZWxlY3Rpb25VcGRhdGVUeXBlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHNlbGVjdGlvbkNyaXRlcmlhcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzZWxlY3Rpb24gY3JpdGVyaWEuIFNlbGVjdGlvbnMgbWlzc2luZy4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3Rpb25UeXBlOiBzdHJpbmcgPSB0aGlzLnZhbGlkYXRlU2VsZWN0aW9uVXBkYXRlVHlwZShzZWxlY3Rpb25VcGRhdGVUeXBlKTtcbiAgICBsZXQgc2VsZWN0aW9uQ3JpdGVyaWFUeXBlOiBTZWxlY3Rpb25Dcml0ZXJpYVR5cGUgPSB0aGlzLnZhbGlkYXRlU2VsZWN0aW9uQ3JpdGVyaWEoc2VsZWN0aW9uQ3JpdGVyaWFzWzBdKTtcbiAgICBsZXQgc2VsZWN0aW9uTW9kZWxDb250YWluZXI6IFNlbGVjdGlvbk1vZGVsc0NvbnRhaW5lciA9IHRoaXMucGFyc2VTZWxlY3Rpb25NYXJrcyhzZWxlY3Rpb25Dcml0ZXJpYXMsIHNlbGVjdGlvbkNyaXRlcmlhVHlwZSk7XG5cbiAgICBjb25zdCBwYXJhbWV0ZXJzOiBFeGVjdXRlUGFyYW1ldGVycyA9IHtcbiAgICAgIFtQYXJhbWV0ZXJJZC5WaXN1YWxJZF06IHZpc3VhbElkLFxuICAgICAgW1BhcmFtZXRlcklkLlNlbGVjdGlvblVwZGF0ZVR5cGVdOiBzZWxlY3Rpb25UeXBlXG4gICAgfTtcblxuICAgIHN3aXRjaCAoc2VsZWN0aW9uQ3JpdGVyaWFUeXBlKSB7XG4gICAgICBjYXNlIFNlbGVjdGlvbkNyaXRlcmlhVHlwZS5IaWVyYXJjaGljYWxUeXBlOiB7XG4gICAgICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuSGllclZhbFNlbGVjdGlvbk1vZGVsc10gPSBzZWxlY3Rpb25Nb2RlbENvbnRhaW5lci5oaWVyTW9kZWxBcnI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBTZWxlY3Rpb25Dcml0ZXJpYVR5cGUuUmFuZ2VUeXBlOiB7XG4gICAgICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuUXVhbnRSYW5nZVNlbGVjdGlvbk1vZGVsc10gPSBzZWxlY3Rpb25Nb2RlbENvbnRhaW5lci5xdWFudE1vZGVsQXJyO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgU2VsZWN0aW9uQ3JpdGVyaWFUeXBlLkRpbWVuc2lvblR5cGU6IHtcbiAgICAgICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5EaW1WYWxTZWxlY3Rpb25Nb2RlbHNdID0gc2VsZWN0aW9uTW9kZWxDb250YWluZXIuZGltTW9kZWxBcnI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaGVyLmV4ZWN1dGUoVmVyYklkLlNlbGVjdEJ5VmFsdWUsIHBhcmFtZXRlcnMpLnRoZW48dm9pZD4ocmVzcG9uc2UgPT4ge1xuICAgICAgLy8gRXhwZWN0aW5nIGFuIGVtcHR5IG1vZGVsIGFuZCBoZW5jZSB0aGUgdm9pZCByZXNwb25zZS5cbiAgICAgIHJldHVybjtcbiAgICAgIC8vIFRPRE8gSW52ZXN0aWdhdGUgdGhlIGVycm9yIHJlc3BvbnNlIHdpdGggbXVsdGlwbGUgb3V0cHV0IHBhcmFtcyBhbmQgdGhyb3cgZXJyb3IgYWNjb3JkaW5nbHkuXG4gICAgfSk7XG4gIH1cblxuICAgIC8qKlxuICAgKiBNZXRob2QgdG8gc2VsZWN0IG1hcmtzIGZvciB0aGUgZ2l2ZW4gd29ya3NoZWV0LlxuICAgKlxuICAgKiBAcGFyYW0gdmlzdWFsSWRcbiAgICogQHBhcmFtIE1hcmtJbmZvXG4gICAqIEBwYXJhbSBzZWxlY3Rpb25VcGRhdGVUeXBlXG4gICAqL1xuICBwdWJsaWMgc2VsZWN0TWFya3NCeUlkQXN5bmModmlzdWFsSWQ6IFZpc3VhbElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya3M6IEFycmF5PENvbnRyYWN0Lk1hcmtJbmZvPixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblVwZGF0ZVR5cGU6IENvbnRyYWN0LlNlbGVjdGlvblVwZGF0ZVR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAobWFya3MubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc2VsZWN0aW9uLiBNYXJrcyBpbmZvIG1pc3NpbmcuJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0aW9uVHlwZTogc3RyaW5nID0gdGhpcy52YWxpZGF0ZVNlbGVjdGlvblVwZGF0ZVR5cGUoc2VsZWN0aW9uVXBkYXRlVHlwZSk7XG4gICAgbGV0IHNlbGVjdGlvbk1vZGVsQ29udGFpbmVyOiBTZWxlY3Rpb25Nb2RlbHNDb250YWluZXIgPSB0aGlzLnBhcnNlU2VsZWN0aW9uSWRzKG1hcmtzKTtcblxuICAgIGNvbnN0IHBhcmFtZXRlcnM6IEV4ZWN1dGVQYXJhbWV0ZXJzID0ge1xuICAgICAgW1BhcmFtZXRlcklkLlZpc3VhbElkXTogdmlzdWFsSWQsXG4gICAgICBbUGFyYW1ldGVySWQuU2VsZWN0aW9uVXBkYXRlVHlwZV06IHNlbGVjdGlvblR5cGUsXG4gICAgICBbUGFyYW1ldGVySWQuU2VsZWN0aW9uXTogc2VsZWN0aW9uTW9kZWxDb250YWluZXIuc2VsZWN0aW9uXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5leGVjdXRlKFZlcmJJZC5TZWxlY3RCeVZhbHVlLCBwYXJhbWV0ZXJzKS50aGVuPHZvaWQ+KHJlc3BvbnNlID0+IHtcbiAgICAgIC8vIEV4cGVjdGluZyBhbiBlbXB0eSBtb2RlbCBhbmQgaGVuY2UgdGhlIHZvaWQgcmVzcG9uc2UuXG4gICAgICByZXR1cm47XG4gICAgICAvLyBUT0RPIEludmVzdGlnYXRlIHRoZSBlcnJvciByZXNwb25zZSB3aXRoIG11bHRpcGxlIG91dHB1dCBwYXJhbXMgYW5kIHRocm93IGVycm9yIGFjY29yZGluZ2x5LlxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBwcmVwYXJlIHRoZSBwcmVzIG1vZGVscyBmb3Igc2VsZWN0aW9uIGJ5IE1hcmtzSW5mb1xuICAgKiBAcGFyYW0gbWFya3NcbiAgICovXG4gIHByaXZhdGUgcGFyc2VTZWxlY3Rpb25JZHMobWFya3M6IEFycmF5PENvbnRyYWN0Lk1hcmtJbmZvPik6IFNlbGVjdGlvbk1vZGVsc0NvbnRhaW5lciB7XG4gICAgbGV0IGlkczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICAgIGxldCBzZWxlY3Rpb25Nb2RlbENvbnRhaW5lcjogU2VsZWN0aW9uTW9kZWxzQ29udGFpbmVyID0gbmV3IFNlbGVjdGlvbk1vZGVsc0NvbnRhaW5lcigpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWFya3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCB0dXBsZUlkOiBOdW1iZXIgfCB1bmRlZmluZWQgID0gbWFya3NbaV0udHVwbGVJZDtcbiAgICAgIGlmICh0dXBsZUlkICE9PSB1bmRlZmluZWQgJiYgdHVwbGVJZCAhPT0gbnVsbCkgeyAvLyBJZiB0dXBsZSBpZCBpcyBwcm92aWRlZCB1c2UgdGhhdCBpbnN0ZWFkIG9mIHBhaXJcbiAgICAgICAgIGlkcy5wdXNoKHR1cGxlSWQudG9TdHJpbmcoKSk7IC8vIGNvbGxlY3QgdGhlIHR1cGxlIGlkc1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHR1cGxlSWQgcHJvdmlkZWQuJyk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpZHMubGVuZ3RoICE9PSAwKSB7IC8vIHR1cGxlIGlkcyBiYXNlZCBzZWxlY3Rpb25cbiAgICAgIGxldCB0dXBsZVNlbGVjdGlvbk1vZGVsOiBUdXBsZVNlbGVjdGlvbk1vZGVsID0gbmV3IFR1cGxlU2VsZWN0aW9uTW9kZWwoKTtcbiAgICAgIHR1cGxlU2VsZWN0aW9uTW9kZWwuc2VsZWN0aW9uVHlwZSA9ICd0dXBsZXMnO1xuICAgICAgdHVwbGVTZWxlY3Rpb25Nb2RlbC5vYmplY3RJZHMgPSBpZHM7XG4gICAgICBzZWxlY3Rpb25Nb2RlbENvbnRhaW5lci5zZWxlY3Rpb24gPSB0dXBsZVNlbGVjdGlvbk1vZGVsO1xuICAgIH1cbiAgICByZXR1cm4gc2VsZWN0aW9uTW9kZWxDb250YWluZXI7XG4gIH1cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBwcmVwYXJlIHRoZSBwcmVzIG1vZGVscyBmb3Igc2VsZWN0aW9uIGJ5IHZhbHVlcy5cbiAgICpcbiAgICogU3VwcG9ydHMgMyB0eXBlcyBmb3Igc2VsZWN0aW9uOlxuICAgKiAxKSBoaWVyYXJjaGljYWwgdmFsdWUgYmFzZWQgc2VsZWN0aW9uXG4gICAqIDIpIHJhbmdlIHZhbHVlIGJhc2VkIHNlbGVjdGlvblxuICAgKiAzKSBEaW1lbnNpb24gdmFsdWUgYmFzZWQgc2VsZWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBtYXJrc1xuICAgKiBAcGFyYW0gaGllck1vZGVsQXJyXG4gICAqIEBwYXJhbSBkaW1Nb2RlbEFyclxuICAgKiBAcGFyYW0gcXVhbnRNb2RlbEFyclxuICAgKiBAcGFyYW0gc2VsZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHBhcnNlU2VsZWN0aW9uTWFya3Moc2VsZWN0aW9uQ3JpdGVyaWFzOiBBcnJheTxDb250cmFjdC5TZWxlY3Rpb25Dcml0ZXJpYT4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25UeXBlOiBTZWxlY3Rpb25Dcml0ZXJpYVR5cGUpOiBTZWxlY3Rpb25Nb2RlbHNDb250YWluZXIge1xuICAgIGxldCBzZWxlY3Rpb25Nb2RlbENvbnRhaW5lcjogU2VsZWN0aW9uTW9kZWxzQ29udGFpbmVyID0gbmV3IFNlbGVjdGlvbk1vZGVsc0NvbnRhaW5lcigpO1xuICAgIGxldCBtaXhlZFNlbGVjdGlvbnNFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWxlY3Rpb25Dcml0ZXJpYXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHN0ID0gc2VsZWN0aW9uQ3JpdGVyaWFzW2ldO1xuICAgICAgaWYgKHN0LmZpZWxkTmFtZSAmJiAoc3QudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBzdC52YWx1ZSAhPT0gbnVsbCkpIHtcbiAgICAgICAgbGV0IGNhdFJlZ2V4ID0gbmV3IFJlZ0V4cCgnKFxcW1tBLVphLXowLTldK10pLionLCAnZycpO1xuICAgICAgICBsZXQgcmFuZ2VPcHRpb246IENvbnRyYWN0LlJhbmdlVmFsdWUgPSBzdC52YWx1ZSBhcyBDb250cmFjdC5SYW5nZVZhbHVlO1xuICAgICAgICBpZiAoY2F0UmVnZXgudGVzdChzdC5maWVsZE5hbWUpKSB7IC8vIEhpZXJhcmNoaWNhbCB2YWx1ZSBzZWxlY3Rpb25cbiAgICAgICAgICBpZiAoc2VsZWN0aW9uVHlwZSA9PT0gU2VsZWN0aW9uQ3JpdGVyaWFUeXBlLkhpZXJhcmNoaWNhbFR5cGUpIHtcbiAgICAgICAgICAgIGxldCBoaWVyTW9kZWw6IEhpZXJhcmNoaWNhbFNlbGVjdGlvbk1vZGVsID0gPEhpZXJhcmNoaWNhbFNlbGVjdGlvbk1vZGVsPiB0aGlzLmFkZFRvUGFyYW1zTGlzdChzdC5maWVsZE5hbWUsIHN0LnZhbHVlKTtcbiAgICAgICAgICAgIHNlbGVjdGlvbk1vZGVsQ29udGFpbmVyLmhpZXJNb2RlbEFyci5wdXNoKGhpZXJNb2RlbCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1peGVkU2VsZWN0aW9uc0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICgoPENvbnRyYWN0LlJhbmdlVmFsdWU+IHJhbmdlT3B0aW9uKS5taW4gIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICYmICg8Q29udHJhY3QuUmFuZ2VWYWx1ZT4gcmFuZ2VPcHRpb24pLm1heCAhPT0gdW5kZWZpbmVkKSB7IC8vIFJhbmdlIHZhbHVlIHNlbGVjdGlvblxuICAgICAgICAgIGlmIChzZWxlY3Rpb25UeXBlID09PSBTZWxlY3Rpb25Dcml0ZXJpYVR5cGUuUmFuZ2VUeXBlKSB7XG4gICAgICAgICAgICBsZXQgcXVhbnRNb2RlbDogUmFuZ2VTZWxlY3Rpb25Nb2RlbCA9IHRoaXMuYWRkVG9SYW5nZVBhcmFtc0xpc3Qoc3QuZmllbGROYW1lLCByYW5nZU9wdGlvbik7XG4gICAgICAgICAgICBzZWxlY3Rpb25Nb2RlbENvbnRhaW5lci5xdWFudE1vZGVsQXJyLnB1c2gocXVhbnRNb2RlbCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1peGVkU2VsZWN0aW9uc0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHsgLy8gRGltZW5zaW9uIHZhbHVlIHNlbGVjdGlvblxuICAgICAgICAgIGlmIChzZWxlY3Rpb25UeXBlID09PSBTZWxlY3Rpb25Dcml0ZXJpYVR5cGUuRGltZW5zaW9uVHlwZSkge1xuICAgICAgICAgICAgbGV0IGRpbU1vZGVsOiBEaW1lbnNpb25TZWxlY3Rpb25Nb2RlbCA9IDxEaW1lbnNpb25TZWxlY3Rpb25Nb2RlbD4gdGhpcy5hZGRUb1BhcmFtc0xpc3Qoc3QuZmllbGROYW1lLCBzdC52YWx1ZSk7XG4gICAgICAgICAgICBzZWxlY3Rpb25Nb2RlbENvbnRhaW5lci5kaW1Nb2RlbEFyci5wdXNoKGRpbU1vZGVsKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWl4ZWRTZWxlY3Rpb25zRXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1peGVkU2VsZWN0aW9uc0Vycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RpZmZlcmVudCB0eXBlcyBvZiBzZWxlY3Rpb24gY3JpdGVyaWFzIHByb3ZpZGVkLicpO1xuICAgIH1cbiAgICByZXR1cm4gc2VsZWN0aW9uTW9kZWxDb250YWluZXI7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHNlbGVjdGlvbkNyaXRlcmlhcyBWYWxpZGF0ZSBhbmQgZGV0ZXJtaW5lIHRoZSBzZWxlY3Rpb24gY3JpdGVyaWFzIHR5cGUuXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlU2VsZWN0aW9uQ3JpdGVyaWEoc2VsZWN0aW9uQ3JpdGVyaWE6IENvbnRyYWN0LlNlbGVjdGlvbkNyaXRlcmlhKTogU2VsZWN0aW9uQ3JpdGVyaWFUeXBlIHtcbiAgICBsZXQgc2VsZWN0aW9uVHlwZTogU2VsZWN0aW9uQ3JpdGVyaWFUeXBlO1xuICAgIC8vIERldGVybWluZSB0aGUgdHlwZSBvZiBzZWxlY3Rpb24sIHRoaXMgY29tbWFuZCBpcyBieSBsb29raW5nIGF0IHRoZSBmaXJzdCBzZWxlY3Rpb25cbiAgICBsZXQgY3JpdDogQ29udHJhY3QuU2VsZWN0aW9uQ3JpdGVyaWEgPSBzZWxlY3Rpb25Dcml0ZXJpYTtcblxuICAgIGxldCBjYXRSZWdleCA9IG5ldyBSZWdFeHAoJyhcXFtbQS1aYS16MC05XStdKS4qJywgJ2cnKTtcbiAgICBsZXQgcmFuZ2VPcHRpb246IENvbnRyYWN0LlJhbmdlVmFsdWUgPSBjcml0LnZhbHVlIGFzIENvbnRyYWN0LlJhbmdlVmFsdWU7XG5cbiAgICBpZiAoY3JpdC5maWVsZE5hbWUgJiYgKGNyaXQudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBjcml0LnZhbHVlICE9PSBudWxsKSkge1xuICAgICAgaWYgKGNhdFJlZ2V4LnRlc3QoY3JpdC5maWVsZE5hbWUpKSB7IC8vIEhpZXJhcmNoaWNhbCB2YWx1ZSBzZWxlY3Rpb25cbiAgICAgICAgc2VsZWN0aW9uVHlwZSA9IFNlbGVjdGlvbkNyaXRlcmlhVHlwZS5IaWVyYXJjaGljYWxUeXBlO1xuICAgICAgfSBlbHNlIGlmICgoPENvbnRyYWN0LlJhbmdlVmFsdWU+IHJhbmdlT3B0aW9uKS5taW4gIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICYmICg8Q29udHJhY3QuUmFuZ2VWYWx1ZT4gcmFuZ2VPcHRpb24pLm1heCAhPT0gdW5kZWZpbmVkKSB7IC8vIFJhbmdlIHZhbHVlIHNlbGVjdGlvblxuICAgICAgICBzZWxlY3Rpb25UeXBlID0gU2VsZWN0aW9uQ3JpdGVyaWFUeXBlLlJhbmdlVHlwZTtcbiAgICAgIH0gZWxzZSB7IC8vIERpbWVyc2lvbiB2YWx1ZSBzZWxlY3Rpb25cbiAgICAgICAgc2VsZWN0aW9uVHlwZSA9IFNlbGVjdGlvbkNyaXRlcmlhVHlwZS5EaW1lbnNpb25UeXBlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IgKCdJbnZhbGlkIHNlbGVjdGlvbiBjcml0ZXJpYSBmb3JtYXQuJyk7XG4gICAgfVxuICAgIHJldHVybiBzZWxlY3Rpb25UeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byB0cmFuc2Zvcm0gdGhlIGtleSB2YWx1ZSBwYWlyIGludG8gdmFsdWUgYmFzZWQgcHJlcyBtb2RlbCBvYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZVNlbGVjdGlvbk1vZGVsXG4gICAqIEBwYXJhbSBmaWVsZE5hbWVcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuICBwcml2YXRlIGFkZFRvUGFyYW1zTGlzdChmaWVsZE5hbWU6IHN0cmluZywgdmFsdWU6IG9iamVjdCk6IFZhbHVlU2VsZWN0aW9uTW9kZWwge1xuICAgIGxldCB2YWx1ZVNlbGVjdGlvbk1vZGVsOiBWYWx1ZVNlbGVjdGlvbk1vZGVsID0gbmV3IFZhbHVlU2VsZWN0aW9uTW9kZWwoKTtcbiAgICBsZXQgbWFya1ZhbHVlczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGxldCB2YWx1ZUFycjogQXJyYXk8c3RyaW5nPiA9IHZhbHVlO1xuICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgdmFsdWVBcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbWFya1ZhbHVlcy5wdXNoKHZhbHVlQXJyW2ldLnRvU3RyaW5nKCkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBtYXJrVmFsdWVzLnB1c2godmFsdWUudG9TdHJpbmcoKSk7XG4gICAgfVxuXG4gICAgdmFsdWVTZWxlY3Rpb25Nb2RlbC5xdWFsaWZpZWRGaWVsZENhcHRpb24gPSBmaWVsZE5hbWU7XG4gICAgdmFsdWVTZWxlY3Rpb25Nb2RlbC5zZWxlY3RWYWx1ZXMgPSBtYXJrVmFsdWVzO1xuICAgIHJldHVybiB2YWx1ZVNlbGVjdGlvbk1vZGVsO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byB0cmFuc2Zvcm0gdGhlIGtleSB2YWx1ZSBwYWlyIGludG8gcmFuZ2UgYmFzZWQgc2VsZWN0aW9uIHByZXMgbW9kZWwuXG4gICAqXG4gICAqIFRPRE86IE5lZWQgdG8gaGFuZGxlIHRoZSBwYXJzaW5nIG9mIGRhdGUgdHlwZSB2YWx1ZXMuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZVNlbGVjdGlvbk1vZGVsXG4gICAqIEBwYXJhbSBmaWVsZE5hbWVcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuICBwcml2YXRlIGFkZFRvUmFuZ2VQYXJhbXNMaXN0KGZpZWxkTmFtZTogc3RyaW5nLCB2YWx1ZTogQ29udHJhY3QuUmFuZ2VWYWx1ZSk6IFJhbmdlU2VsZWN0aW9uTW9kZWwge1xuICAgIGxldCByYW5nZVNlbGVjdGlvbk1vZGVsOiBSYW5nZVNlbGVjdGlvbk1vZGVsID0gbmV3IFJhbmdlU2VsZWN0aW9uTW9kZWwoKTtcbiAgICByYW5nZVNlbGVjdGlvbk1vZGVsLnF1YWxpZmllZEZpZWxkQ2FwdGlvbiA9IGZpZWxkTmFtZTtcbiAgICBpZiAodmFsdWUubWF4ICE9PSB1bmRlZmluZWQgJiYgdmFsdWUubWF4ICE9PSBudWxsKSB7XG4gICAgICByYW5nZVNlbGVjdGlvbk1vZGVsLm1heFZhbHVlID0gdmFsdWUubWF4LnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5taW4gIT09IHVuZGVmaW5lZCAmJiB2YWx1ZS5taW4gIT09IG51bGwpIHtcbiAgICAgIHJhbmdlU2VsZWN0aW9uTW9kZWwubWluVmFsdWUgPSB2YWx1ZS5taW4udG9TdHJpbmcoKTtcbiAgICB9XG4gICAgcmFuZ2VTZWxlY3Rpb25Nb2RlbC5pbmNsdWRlZCA9IHRoaXMudmFsaWRhdGVOdWxsT3B0aW9uVHlwZSh2YWx1ZS5udWxsT3B0aW9uKTtcbiAgICByZXR1cm4gcmFuZ2VTZWxlY3Rpb25Nb2RlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gdmFsaWRhdGUgdGhlIHNlbGVjdGlvbiB1cGRhdGUgdHlwZS5cbiAgICpcbiAgICogQHBhcmFtIHNlbGVjdGlvblVwZGF0ZVR5cGVcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVTZWxlY3Rpb25VcGRhdGVUeXBlKHNlbGVjdGlvblVwZGF0ZVR5cGU6IENvbnRyYWN0LlNlbGVjdGlvblVwZGF0ZVR5cGUpOiBzdHJpbmcge1xuICAgIGlmIChzZWxlY3Rpb25VcGRhdGVUeXBlID09PSBDb250cmFjdC5TZWxlY3Rpb25VcGRhdGVUeXBlLlJlcGxhY2UpIHtcbiAgICAgIHJldHVybiBTZWxlY3Rpb25VcGRhdGVUeXBlSW50ZXJuYWwuUmVwbGFjZTtcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGlvblVwZGF0ZVR5cGUgPT09IENvbnRyYWN0LlNlbGVjdGlvblVwZGF0ZVR5cGUuQWRkKSB7XG4gICAgICByZXR1cm4gU2VsZWN0aW9uVXBkYXRlVHlwZUludGVybmFsLkFkZDtcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGlvblVwZGF0ZVR5cGUgPT09IENvbnRyYWN0LlNlbGVjdGlvblVwZGF0ZVR5cGUuUmVtb3ZlKSB7XG4gICAgICByZXR1cm4gU2VsZWN0aW9uVXBkYXRlVHlwZUludGVybmFsLlJlbW92ZTtcbiAgICB9XG4gICAgcmV0dXJuIFNlbGVjdGlvblVwZGF0ZVR5cGVJbnRlcm5hbC5SZXBsYWNlO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byB2YWxpZGF0ZSB0aGUgaW5jbHVkZSB0eXBlIGZvciByYW5nZSBzZWxlY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSBudWxsT3B0aW9uXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlTnVsbE9wdGlvblR5cGUobnVsbE9wdGlvbjogQ29udHJhY3QuRmlsdGVyTnVsbE9wdGlvbiB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gICAgaWYgKG51bGxPcHRpb24pIHtcbiAgICAgIGlmIChudWxsT3B0aW9uID09PSBDb250cmFjdC5GaWx0ZXJOdWxsT3B0aW9uLk51bGxWYWx1ZXMpIHtcbiAgICAgICAgcmV0dXJuIFF1YW50aXRhdGl2ZUluY2x1ZGVkVmFsdWVzLkluY2x1ZGVOdWxsO1xuICAgICAgfSBlbHNlIGlmIChudWxsT3B0aW9uID09PSBDb250cmFjdC5GaWx0ZXJOdWxsT3B0aW9uLk5vbk51bGxWYWx1ZXMpIHtcbiAgICAgICAgcmV0dXJuIFF1YW50aXRhdGl2ZUluY2x1ZGVkVmFsdWVzLkluY2x1ZGVOb25OdWxsO1xuICAgICAgfSBlbHNlIGlmIChudWxsT3B0aW9uID09PSBDb250cmFjdC5GaWx0ZXJOdWxsT3B0aW9uLkFsbFZhbHVlcykge1xuICAgICAgICByZXR1cm4gUXVhbnRpdGF0aXZlSW5jbHVkZWRWYWx1ZXMuSW5jbHVkZUFsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gUXVhbnRpdGF0aXZlSW5jbHVkZWRWYWx1ZXMuSW5jbHVkZUFsbDtcbiAgfVxuXG59XG5cbi8qKlxuICogRW51bSBmb3IgdGhlIGRpZmZlcmVudCBzZWxlY3Rpb24gY3JpdGVyaWEgdHlwZXMuXG4gKi9cbmVudW0gU2VsZWN0aW9uQ3JpdGVyaWFUeXBlIHtcbiAgSGllcmFyY2hpY2FsVHlwZSA9IDEsXG4gIFJhbmdlVHlwZSA9IDIsXG4gIERpbWVuc2lvblR5cGUgPSAzLFxuICBUdXBsZXNUeXBlID0gNCxcbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL2ltcGwvU2VsZWN0aW9uU2VydmljZUltcGwudHNcbiAqKi8iLCIvKipcbiAqIFNlbGVjdGlvbiBNb2RlbC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNlbGVjdGlvbk1vZGVsIHtcbiAgcXVhbGlmaWVkRmllbGRDYXB0aW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVmFsdWUgYmFzZWQgc2VsZWN0aW9uIG1vZGVsLiBNZWFudCBmb3IgaGllcmFyY2hpY2FsLCByYW5nZSBhbmQgY2F0ZWdvcmljYWwgc2VsZWN0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIFZhbHVlU2VsZWN0aW9uTW9kZWwgZXh0ZW5kcyBTZWxlY3Rpb25Nb2RlbCB7XG4gIHNlbGVjdFZhbHVlczogQXJyYXk8c3RyaW5nPiA9IFtdO1xufVxuXG4vKipcbiAqIEhpZXJhcmNoaWNhbCB2YWx1ZSBzZWxlY3Rpb24gbW9kZWxcbiAqL1xuZXhwb3J0IGNsYXNzIEhpZXJhcmNoaWNhbFNlbGVjdGlvbk1vZGVsIGV4dGVuZHMgVmFsdWVTZWxlY3Rpb25Nb2RlbCB7XG59XG5cbi8qKlxuICogUmFuZ2UgYmFzZWQgdmFsdWUgc2VsZWN0aW9uIG1vZGVsXG4gKi9cbmV4cG9ydCBjbGFzcyBSYW5nZVNlbGVjdGlvbk1vZGVsIGV4dGVuZHMgU2VsZWN0aW9uTW9kZWwge1xuICBtaW5WYWx1ZTogc3RyaW5nO1xuICBtYXhWYWx1ZTogc3RyaW5nO1xuICBpbmNsdWRlZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIERpbWVuc2lvbiB2YWx1ZSBzZWxlY3Rpb24gbW9kZWxcbiAqL1xuZXhwb3J0IGNsYXNzIERpbWVuc2lvblNlbGVjdGlvbk1vZGVsIGV4dGVuZHMgVmFsdWVTZWxlY3Rpb25Nb2RlbCB7XG59XG4vKipcbiAqIFR1cGxlIGJhc2VkIHNlbGVjdGlvbiBtb2RlbFxuICovXG5leHBvcnQgY2xhc3MgVHVwbGVTZWxlY3Rpb25Nb2RlbCB7XG4gIHNlbGVjdGlvblR5cGU6IHN0cmluZztcbiAgb2JqZWN0SWRzOiBBcnJheTxzdHJpbmc+ID0gW107XG59XG5cbi8qKlxuICogQ29udGFpbmVyIGNsYXNzIHRvIHBvcHVsYXRlIGFsbCB0aGUgc2VsZWN0aW9uIG1vZGVscyB3aGVuIHBhcnNpbmcgaW5wdXRcbiAqL1xuZXhwb3J0IGNsYXNzIFNlbGVjdGlvbk1vZGVsc0NvbnRhaW5lciB7XG4gIGhpZXJNb2RlbEFycjogQXJyYXk8SGllcmFyY2hpY2FsU2VsZWN0aW9uTW9kZWw+ID0gW107XG4gIGRpbU1vZGVsQXJyOiBBcnJheTxEaW1lbnNpb25TZWxlY3Rpb25Nb2RlbD4gPSBbXTtcbiAgcXVhbnRNb2RlbEFycjogQXJyYXk8UmFuZ2VTZWxlY3Rpb25Nb2RlbD4gPSBbXTtcbiAgc2VsZWN0aW9uOiBUdXBsZVNlbGVjdGlvbk1vZGVsO1xufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLXNoYXJlZC9zcmMvTW9kZWxzL1NlbGVjdGlvbk1vZGVscy50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5cbmltcG9ydCB7IERhc2hib2FyZEltcGwgfSBmcm9tICcuL0ludGVybmFsL0Rhc2hib2FyZEltcGwnO1xuaW1wb3J0IHsgU2hlZXQgfSBmcm9tICcuL1NoZWV0JztcblxuZXhwb3J0IGNsYXNzIERhc2hib2FyZCBleHRlbmRzIFNoZWV0IGltcGxlbWVudHMgQ29udHJhY3QuRGFzaGJvYXJkIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgX2Rhc2hib2FyZEltcGw6IERhc2hib2FyZEltcGwpIHtcbiAgICBzdXBlcihfZGFzaGJvYXJkSW1wbCk7XG4gICAgX2Rhc2hib2FyZEltcGwuaW5pdGlhbGl6ZVdpdGhQdWJsaWNJbnRlcmZhY2VzKHRoaXMpO1xuICB9XG5cbiAgcHVibGljIGdldCB3b3Jrc2hlZXRzKCk6IEFycmF5PENvbnRyYWN0LldvcmtzaGVldD4ge1xuICAgIHJldHVybiB0aGlzLl9kYXNoYm9hcmRJbXBsLndvcmtzaGVldHM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9iamVjdHMoKTogQXJyYXk8Q29udHJhY3QuRGFzaGJvYXJkT2JqZWN0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rhc2hib2FyZEltcGwub2JqZWN0cztcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL0Rhc2hib2FyZC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5cbmltcG9ydCB7IEV2ZW50TGlzdGVuZXJNYW5hZ2VyIH0gZnJvbSAnQHRhYmxlYXUvYXBpLXNoYXJlZCc7XG5cbmltcG9ydCB7IFNoZWV0SW1wbCB9IGZyb20gJy4vSW50ZXJuYWwvU2hlZXRJbXBsJztcblxuZXhwb3J0IGNsYXNzIFNoZWV0IGV4dGVuZHMgRXZlbnRMaXN0ZW5lck1hbmFnZXIgaW1wbGVtZW50cyBDb250cmFjdC5TaGVldCB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zaGVldEltcGw6IFNoZWV0SW1wbCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2hlZXRJbXBsLm5hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNoZWV0VHlwZSgpOiBDb250cmFjdC5TaGVldFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9zaGVldEltcGwuc2hlZXRUeXBlO1xuICB9XG5cbiAgcHVibGljIGdldCBzaXplKCk6IENvbnRyYWN0LlNpemUge1xuICAgIHJldHVybiB0aGlzLl9zaGVldEltcGwuc2l6ZTtcbiAgfVxuXG4gIHB1YmxpYyBmaW5kUGFyYW1ldGVyQXN5bmMocGFyYW1ldGVyTmFtZTogc3RyaW5nKTogUHJvbWlzZTxDb250cmFjdC5QYXJhbWV0ZXIgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fc2hlZXRJbXBsLmZpbmRQYXJhbWV0ZXJBc3luYyhwYXJhbWV0ZXJOYW1lLCB0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRQYXJhbWV0ZXJzQXN5bmMoKTogUHJvbWlzZTxBcnJheTxDb250cmFjdC5QYXJhbWV0ZXI+PiB7XG4gICAgcmV0dXJuIHRoaXMuX3NoZWV0SW1wbC5nZXRQYXJhbWV0ZXJzQXN5bmModGhpcyk7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9TaGVldC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5cbi8qKlxuICogSW1wbGVtZW50YXRpb24gb2YgdGhlIGV4dGVybmFsIERhc2hib2FyZENvbnRlbnQgbmFtZXNwYWNlLlxuICogVGhpcyBkb2VzIG5vdCBmb2xsb3cgdGhlIEltcGwgcGF0dGVybiBhcyBEYXNoYm9hcmRDb250ZW50IGlzXG4gKiBjdXJyZW50bHkganVzdCBhIChzaW5nbGUpIHByb3BlcnR5IGJhZy5cbiAqL1xuZXhwb3J0IGNsYXNzIERhc2hib2FyZENvbnRlbnQgaW1wbGVtZW50cyBDb250cmFjdC5EYXNoYm9hcmRDb250ZW50IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgX2Rhc2hib2FyZDogQ29udHJhY3QuRGFzaGJvYXJkKSB7IH1cblxuICBwdWJsaWMgZ2V0IGRhc2hib2FyZCgpOiBDb250cmFjdC5EYXNoYm9hcmQge1xuICAgIHJldHVybiB0aGlzLl9kYXNoYm9hcmQ7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9OYW1lc3BhY2VzL0Rhc2hib2FyZENvbnRlbnQudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xuXG5pbXBvcnQgeyBFeHRlbnNpb25FbnZpcm9ubWVudCB9IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5pbXBvcnQgeyBJbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MgYXMgRW51bU1hcHBpbmdzIH0gZnJvbSAnQHRhYmxlYXUvYXBpLXNoYXJlZCc7XG5cbi8qKlxuICogSW1wbGVtZW50YXRpb24gb2YgdGhlIGV4dGVybmFsIGVudmlyb25tZW50IG5hbWVzcGFjZS5cbiAqIEVudmlyb25tZW50IGRvZXMgbm90IGZvbGxvdyB0aGUgSW1wbCBwYXR0ZXJuIGFzIGl0IGlzXG4gKiBqdXN0IGEgcHJvcGVydHkgYmFnLlxuICovXG5leHBvcnQgY2xhc3MgRW52aXJvbm1lbnQgaW1wbGVtZW50cyBDb250cmFjdC5FbnZpcm9ubWVudCB7XG4gIHByaXZhdGUgX2FwaVZlcnNpb246IHN0cmluZztcbiAgcHJpdmF0ZSBfY29udGV4dDogQ29udHJhY3QuRXh0ZW5zaW9uQ29udGV4dDtcbiAgcHJpdmF0ZSBfbGFuZ3VhZ2U6IHN0cmluZztcbiAgcHJpdmF0ZSBfbG9jYWxlOiBzdHJpbmc7XG4gIHByaXZhdGUgX21vZGU6IENvbnRyYWN0LkV4dGVuc2lvbk1vZGU7XG4gIHByaXZhdGUgX29wZXJhdGluZ1N5c3RlbTogc3RyaW5nO1xuICBwcml2YXRlIF90YWJsZWF1VmVyc2lvbjogc3RyaW5nO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihleHRlbnNpb25FbnZpcm9ubWVudDogRXh0ZW5zaW9uRW52aXJvbm1lbnQpIHtcbiAgICB0aGlzLl9hcGlWZXJzaW9uID0gZXh0ZW5zaW9uRW52aXJvbm1lbnQuYXBpVmVyc2lvbjtcbiAgICB0aGlzLl9jb250ZXh0ID0gRW51bU1hcHBpbmdzLmV4dGVuc2lvbkNvbnRleHQuY29udmVydChleHRlbnNpb25FbnZpcm9ubWVudC5leHRlbnNpb25Db250ZXh0KTtcbiAgICB0aGlzLl9sYW5ndWFnZSA9IGV4dGVuc2lvbkVudmlyb25tZW50LmV4dGVuc2lvbkxhbmd1YWdlO1xuICAgIHRoaXMuX2xvY2FsZSA9IGV4dGVuc2lvbkVudmlyb25tZW50LmV4dGVuc2lvbkxvY2FsZTtcbiAgICB0aGlzLl9tb2RlID0gRW51bU1hcHBpbmdzLmV4dGVuc2lvbk1vZGUuY29udmVydChleHRlbnNpb25FbnZpcm9ubWVudC5leHRlbnNpb25Nb2RlKTtcbiAgICB0aGlzLl9vcGVyYXRpbmdTeXN0ZW0gPSBleHRlbnNpb25FbnZpcm9ubWVudC5vcGVyYXRpbmdTeXN0ZW07XG4gICAgdGhpcy5fdGFibGVhdVZlcnNpb24gPSBleHRlbnNpb25FbnZpcm9ubWVudC50YWJsZWF1VmVyc2lvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXBpVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hcGlWZXJzaW9uO1xuICB9XG5cbiAgcHVibGljIGdldCBjb250ZXh0KCk6IENvbnRyYWN0LkV4dGVuc2lvbkNvbnRleHQge1xuICAgIHJldHVybiB0aGlzLl9jb250ZXh0O1xuICB9XG5cbiAgcHVibGljIGdldCBsYW5ndWFnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9sYW5ndWFnZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbG9jYWxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2xvY2FsZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbW9kZSgpOiBDb250cmFjdC5FeHRlbnNpb25Nb2RlIHtcbiAgICByZXR1cm4gdGhpcy5fbW9kZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3BlcmF0aW5nU3lzdGVtKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX29wZXJhdGluZ1N5c3RlbTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGFibGVhdVZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGFibGVhdVZlcnNpb247XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9OYW1lc3BhY2VzL0Vudmlyb25tZW50LnRzXG4gKiovIiwiaW1wb3J0IHsgU2V0dGluZ3MgYXMgU2V0dGluZ3NDb250cmFjdCB9IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5cbmltcG9ydCB7IFNldHRpbmdzSW1wbCB9IGZyb20gJy4uL0ludGVybmFsL1NldHRpbmdzSW1wbCc7XG5pbXBvcnQgeyBTZXR0aW5nc0NvbGxlY3Rpb24gfSBmcm9tICcuLi9TZXJ2aWNlcy9TZXR0aW5nc1NlcnZpY2UnO1xuXG4vKipcbiAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBleHRlcm5hbCBzZXR0aW5ncyBuYW1lc3BhY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXR0aW5ncyBpbXBsZW1lbnRzIFNldHRpbmdzQ29udHJhY3Qge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBzZXR0aW5nc0ltcGw6IFNldHRpbmdzSW1wbCkgeyB9XG5cbiAgcHVibGljIGVyYXNlKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZXR0aW5nc0ltcGwuZXJhc2Uoa2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQoa2V5OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzSW1wbC5nZXQoa2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBbGwoKTogU2V0dGluZ3NDb2xsZWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5nc0ltcGwuZ2V0QWxsKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzTW9kaWZpZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3NJbXBsLmlzTW9kaWZpZWQ7XG4gIH1cblxuICBwdWJsaWMgc2F2ZUFzeW5jKCk6IFByb21pc2U8U2V0dGluZ3NDb2xsZWN0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3NJbXBsLnNhdmVBc3luYygpO1xuICB9XG5cbiAgcHVibGljIHNldChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2V0dGluZ3NJbXBsLnNldChrZXksIHZhbHVlKTtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL05hbWVzcGFjZXMvU2V0dGluZ3MudHNcbiAqKi8iLCJpbXBvcnQgeyBJbnRlcm5hbEFwaURpc3BhdGNoZXIgfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xuaW1wb3J0IHsgQXBpU2VydmljZVJlZ2lzdHJ5IH0gZnJvbSAnQHRhYmxlYXUvYXBpLXNoYXJlZCc7XG5cbmltcG9ydCB7IEluaXRpYWxpemF0aW9uU2VydmljZUltcGwgfSBmcm9tICcuL0ltcGwvSW5pdGlhbGl6YXRpb25TZXJ2aWNlSW1wbCc7XG5pbXBvcnQgeyBTZXR0aW5nc1NlcnZpY2VJbXBsIH0gZnJvbSAgJy4vSW1wbC9TZXR0aW5nc1NlcnZpY2VJbXBsJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyQWxsRXh0ZW5zaW9uc1NlcnZpY2VzKGRpc3BhdGNoZXI6IEludGVybmFsQXBpRGlzcGF0Y2hlcik6IHZvaWQge1xuICBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UucmVnaXN0ZXJTZXJ2aWNlKG5ldyBJbml0aWFsaXphdGlvblNlcnZpY2VJbXBsKGRpc3BhdGNoZXIpKTtcbiAgQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLnJlZ2lzdGVyU2VydmljZShuZXcgU2V0dGluZ3NTZXJ2aWNlSW1wbChkaXNwYXRjaGVyKSk7XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9leHRlbnNpb25zLWFwaS9zcmMvU2VydmljZXMvUmVnaXN0ZXJBbGxFeHRlbnNpb25zU2VydmljZXMudHNcbiAqKi8iLCJpbXBvcnQgeyBFeHRlbnNpb25Cb290c3RyYXBJbmZvLCBJbnRlcm5hbEFwaURpc3BhdGNoZXIsIFZlcmJJZCB9IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5cbmltcG9ydCB7IEV4dGVuc2lvbnNTZXJ2aWNlTmFtZXMgfSBmcm9tICcuLi9FeHRlbnNpb25zU2VydmljZU5hbWVzJztcbmltcG9ydCB7IEluaXRpYWxpemF0aW9uU2VydmljZSB9IGZyb20gJy4uL0luaXRpYWxpemF0aW9uU2VydmljZSc7XG5cbmV4cG9ydCBjbGFzcyBJbml0aWFsaXphdGlvblNlcnZpY2VJbXBsIGltcGxlbWVudHMgSW5pdGlhbGl6YXRpb25TZXJ2aWNlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyKSB7IH1cblxuICBwdWJsaWMgZ2V0IHNlcnZpY2VOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEV4dGVuc2lvbnNTZXJ2aWNlTmFtZXMuSW5pdGlhbGl6YXRpb25TZXJ2aWNlO1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemVEYXNoYm9hcmRFeHRlbnNpb25zQXN5bmMoKTogUHJvbWlzZTxFeHRlbnNpb25Cb290c3RyYXBJbmZvPiB7XG4gICAgLy8gV2UgZG9uJ3QgbmVlZCBhbnkgcGFyYW1ldGVycyBmb3IgdGhpcyBjYWxsIGJlY2F1c2UgdGhleSBhcmUgYWRkZWQgaW4gZm9yIHVzIGJ5IHRoZSBkaXNwYXRjaGVyXG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hlci5leGVjdXRlKFZlcmJJZC5Jbml0aWFsaXplRXh0ZW5zaW9uLCB7fSkudGhlbjxFeHRlbnNpb25Cb290c3RyYXBJbmZvPihyZXNwb25zZSA9PiB7XG4gICAgICAvLyBUT0RPIC0gVmFsaWRhdGUgcmV0dXJuIHZhbHVlXG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdCBhcyBFeHRlbnNpb25Cb290c3RyYXBJbmZvO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL1NlcnZpY2VzL0ltcGwvSW5pdGlhbGl6YXRpb25TZXJ2aWNlSW1wbC50c1xuICoqLyIsImltcG9ydCB7XG4gIEV4ZWN1dGVQYXJhbWV0ZXJzLFxuICBFeHRlbnNpb25TZXR0aW5nc0luZm8sXG4gIEludGVybmFsQXBpRGlzcGF0Y2hlcixcbiAgUGFyYW1ldGVySWQsXG4gIFZlcmJJZFxufSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xuXG5pbXBvcnQgeyBFeHRlbnNpb25zU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vRXh0ZW5zaW9uc1NlcnZpY2VOYW1lcyc7XG5pbXBvcnQgeyBTZXR0aW5nc0NvbGxlY3Rpb24sIFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4uL1NldHRpbmdzU2VydmljZSc7XG5cbmV4cG9ydCBjbGFzcyBTZXR0aW5nc1NlcnZpY2VJbXBsIGltcGxlbWVudHMgU2V0dGluZ3NTZXJ2aWNlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyKSB7IH1cblxuICBwdWJsaWMgZ2V0IHNlcnZpY2VOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEV4dGVuc2lvbnNTZXJ2aWNlTmFtZXMuU2V0dGluZ3NTZXJ2aWNlO1xuICB9XG5cbiAgcHVibGljIHNhdmVTZXR0aW5nc0FzeW5jKHNldHRpbmdzOiBTZXR0aW5nc0NvbGxlY3Rpb24pOiBQcm9taXNlPFNldHRpbmdzQ29sbGVjdGlvbj4ge1xuICAgIGNvbnN0IHBhcmFtZXRlcnM6IEV4ZWN1dGVQYXJhbWV0ZXJzID0ge1tQYXJhbWV0ZXJJZC5TZXR0aW5nc1ZhbHVlc106IHNldHRpbmdzfTtcblxuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoZXIuZXhlY3V0ZShWZXJiSWQuU2F2ZUV4dGVuc2lvblNldHRpbmdzLCBwYXJhbWV0ZXJzKS50aGVuPFNldHRpbmdzQ29sbGVjdGlvbj4odmFsdWUgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gdmFsdWUucmVzdWx0IGFzIEV4dGVuc2lvblNldHRpbmdzSW5mbztcblxuICAgICAgaWYgKCFyZXN1bHQgfHwgIXJlc3VsdC5zZXR0aW5nc1ZhbHVlcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludGVybmFsIGVycm9yIHNhdmluZyBzZXR0aW5ncy4nKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuKHJlc3VsdC5zZXR0aW5nc1ZhbHVlcyk7XG4gICAgfSk7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9TZXJ2aWNlcy9JbXBsL1NldHRpbmdzU2VydmljZUltcGwudHNcbiAqKi8iLCJpbXBvcnQgeyBWZXJzaW9uTnVtYmVyIGFzIFZlcnNpb25OdW1iZXJDb250cmFjdCB9IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5cbmRlY2xhcmUgdmFyIEFERElOX0FQSV9WRVJTSU9OX05VTUJFUjogc3RyaW5nO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgZXh0ZW5zaW9ucyBsaWJyYXJ5XG4gKi9cbmV4cG9ydCBjbGFzcyBWZXJzaW9uTnVtYmVyIGltcGxlbWVudHMgVmVyc2lvbk51bWJlckNvbnRyYWN0IHtcblxuICAvLyBVc2luZyBzb21lIHdlYnBhY2sgdHJpY2tzLCB3ZSBjYW4gaW5qZWN0IHRoaXMgdmVyc2lvbiBpbnRvIG91ciBjb2RlIChraW5kYSBsaWtlIGMrKyBwcmVwcm9jZXNzb3Igc3R1ZmYpXG4gIHByaXZhdGUgc3RhdGljIF9pbnN0YW5jZTogVmVyc2lvbk51bWJlciA9IG5ldyBWZXJzaW9uTnVtYmVyKEFERElOX0FQSV9WRVJTSU9OX05VTUJFUik7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgdmVyc2lvbiBudW1iZXIuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBJbnN0YW5jZSgpOiBWZXJzaW9uTnVtYmVyIHtcbiAgICByZXR1cm4gVmVyc2lvbk51bWJlci5faW5zdGFuY2U7XG4gIH1cblxuICBwcml2YXRlIF9tYWpvcjogbnVtYmVyO1xuICBwcml2YXRlIF9taW5vcjogbnVtYmVyO1xuICBwcml2YXRlIF9maXg6IG51bWJlcjtcblxuICAvLyBwcml2YXRlIGNvbnN0cnVjdG9yIHNvIGV2ZXJ5b25lIHVzZXMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZVxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZlcnNpb25TdHJpbmc6IHN0cmluZykge1xuICAgIGNvbnN0IHBhcnRzID0gdmVyc2lvblN0cmluZy5zcGxpdCgnLicpLm1hcChwID0+IHBhcnNlSW50KHAsIDEwKSk7XG4gICAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZlcnNpb24gbnVtYmVyOiAnICsgdmVyc2lvblN0cmluZyk7XG4gICAgfVxuXG4gICAgdGhpcy5fbWFqb3IgPSBwYXJ0c1swXTtcbiAgICB0aGlzLl9taW5vciA9IHBhcnRzWzFdO1xuICAgIHRoaXMuX2ZpeCA9IHBhcnRzWzJdO1xuICB9XG5cbiAgcHVibGljIGdldCBtYWpvcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9tYWpvcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWlub3IoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWlub3I7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZpeCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9maXg7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9WZXJzaW9uTnVtYmVyLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcbmltcG9ydCB7IERhc2hib2FyZE9iamVjdFR5cGUsIEV4dGVuc2lvbkRhc2hib2FyZEluZm8sIFNoZWV0UGF0aCwgVmlzdWFsSWQgfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xuaW1wb3J0IHsgSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzLCBQb2ludCwgU2l6ZSB9IGZyb20gJ0B0YWJsZWF1L2FwaS1zaGFyZWQnO1xuXG5pbXBvcnQgeyBEYXNoYm9hcmRPYmplY3QgfSBmcm9tICcuLi9EYXNoYm9hcmRPYmplY3QnO1xuaW1wb3J0IHsgV29ya3NoZWV0IH0gZnJvbSAnLi4vV29ya3NoZWV0JztcbmltcG9ydCB7IFNoZWV0SW1wbCB9IGZyb20gJy4vU2hlZXRJbXBsJztcbmltcG9ydCB7IFNoZWV0SW5mb0ltcGwgfSBmcm9tICcuL1NoZWV0SW5mb0ltcGwnO1xuaW1wb3J0IHsgV29ya3NoZWV0SW1wbCB9IGZyb20gJy4vV29ya3NoZWV0SW1wbCc7XG5cbmV4cG9ydCBjbGFzcyBEYXNoYm9hcmRJbXBsIGV4dGVuZHMgU2hlZXRJbXBsIHtcbiAgcHJpdmF0ZSBfd29ya3NoZWV0czogQXJyYXk8Q29udHJhY3QuV29ya3NoZWV0PjtcbiAgcHJpdmF0ZSBfb2JqZWN0czogQXJyYXk8Q29udHJhY3QuRGFzaGJvYXJkT2JqZWN0PjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfaW5mbzogRXh0ZW5zaW9uRGFzaGJvYXJkSW5mbywgcHJpdmF0ZSBfc2hlZXRQYXRoOiBTaGVldFBhdGgpIHtcbiAgICBzdXBlcihuZXcgU2hlZXRJbmZvSW1wbChfaW5mby5uYW1lLCBDb250cmFjdC5TaGVldFR5cGUuRGFzaGJvYXJkLCBuZXcgU2l6ZShfaW5mby5zaXplLmgsIF9pbmZvLnNpemUudykpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgd29ya3NoZWV0cygpOiBBcnJheTxDb250cmFjdC5Xb3Jrc2hlZXQ+IHtcbiAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0cztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb2JqZWN0cygpOiBBcnJheTxDb250cmFjdC5EYXNoYm9hcmRPYmplY3Q+IHtcbiAgICByZXR1cm4gdGhpcy5fb2JqZWN0cztcbiAgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXplV2l0aFB1YmxpY0ludGVyZmFjZXMoZGFzaGJvYXJkOiBDb250cmFjdC5EYXNoYm9hcmQpOiB2b2lkIHtcbiAgICB0aGlzLl93b3Jrc2hlZXRzID0gbmV3IEFycmF5PFdvcmtzaGVldD4oKTtcbiAgICB0aGlzLl9vYmplY3RzID0gbmV3IEFycmF5PENvbnRyYWN0LkRhc2hib2FyZE9iamVjdD4oKTtcblxuICAgIC8vIFByb2Nlc3MgYWxsIHRoZSB6b25lcyB3aGljaCBhcmUgY29udGFpbmVkIGluIHRoaXMgZGFzaGJvYXJkXG4gICAgZm9yIChjb25zdCB6b25lIG9mIHRoaXMuX2luZm8uem9uZXMpIHtcbiAgICAgIGxldCB3b3Jrc2hlZXQ6IFdvcmtzaGVldCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgICAgY29uc3Qgem9uZVNpemUgPSBuZXcgU2l6ZSh6b25lLmhlaWdodCwgem9uZS53aWR0aCk7XG5cbiAgICAgIGlmICh6b25lLnpvbmVUeXBlID09PSBEYXNoYm9hcmRPYmplY3RUeXBlLldvcmtzaGVldCkge1xuICAgICAgICBjb25zdCBzaGVldEluZm8gPSBuZXcgU2hlZXRJbmZvSW1wbCh6b25lLm5hbWUsIENvbnRyYWN0LlNoZWV0VHlwZS5Xb3Jrc2hlZXQsIHpvbmVTaXplKTtcbiAgICAgICAgY29uc3Qgdml6SWQ6IFZpc3VhbElkID0ge1xuICAgICAgICAgIHdvcmtzaGVldDogem9uZS5uYW1lLFxuICAgICAgICAgIGRhc2hib2FyZDogdGhpcy5faW5mby5uYW1lLFxuICAgICAgICAgIHN0b3J5Ym9hcmQ6IHRoaXMuX3NoZWV0UGF0aC5zdG9yeWJvYXJkLFxuICAgICAgICAgIGZsaXBib2FyZFpvbmVJRDogdGhpcy5fc2hlZXRQYXRoLmZsaXBib2FyZFpvbmVJRCxcbiAgICAgICAgICBzdG9yeVBvaW50SUQ6IHRoaXMuX3NoZWV0UGF0aC5zdG9yeVBvaW50SURcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCB3b3Jrc2hlZXRJbXBsID0gbmV3IFdvcmtzaGVldEltcGwoc2hlZXRJbmZvLCB2aXpJZCwgZGFzaGJvYXJkKTtcbiAgICAgICAgd29ya3NoZWV0ID0gbmV3IFdvcmtzaGVldCh3b3Jrc2hlZXRJbXBsKTtcbiAgICAgICAgdGhpcy5fd29ya3NoZWV0cy5wdXNoKHdvcmtzaGVldCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHpvbmVQb2ludCA9IG5ldyBQb2ludCh6b25lLngsIHpvbmUueSk7XG5cbiAgICAgIGNvbnN0IGRhc2hib2FyZE9iamVjdCA9IG5ldyBEYXNoYm9hcmRPYmplY3QoXG4gICAgICAgIGRhc2hib2FyZCxcbiAgICAgICAgSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzLmRhc2hib2FyZE9iamVjdFR5cGUuY29udmVydCh6b25lLnpvbmVUeXBlKSxcbiAgICAgICAgem9uZVBvaW50LFxuICAgICAgICB6b25lU2l6ZSxcbiAgICAgICAgd29ya3NoZWV0XG4gICAgICApO1xuXG4gICAgICB0aGlzLl9vYmplY3RzLnB1c2goZGFzaGJvYXJkT2JqZWN0KTtcbiAgICB9XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9JbnRlcm5hbC9EYXNoYm9hcmRJbXBsLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcblxuLyoqXG4gKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZGFzaGJvYXJkIG9iamVjdHMgLSB0aGUgem9uZXMgaW4gYSBkYXNoYm9hcmQuXG4gKiBUaGlzIGRvZXMgbm90IGZvbGxvdyB0aGUgSW1wbCBwYXR0ZXJuIGFzIGl0IGlzIGp1c3QgYSBwcm9wZXJ0eSBiYWcuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXNoYm9hcmRPYmplY3QgaW1wbGVtZW50cyBDb250cmFjdC5EYXNoYm9hcmRPYmplY3Qge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfZGFzaGJvYXJkOiBDb250cmFjdC5EYXNoYm9hcmQsXG4gICAgcHJpdmF0ZSBfdHlwZTogQ29udHJhY3QuRGFzaGJvYXJkT2JqZWN0VHlwZSxcbiAgICBwcml2YXRlIF9wb3NpdGlvbjogQ29udHJhY3QuUG9pbnQsXG4gICAgcHJpdmF0ZSBfc2l6ZTogQ29udHJhY3QuU2l6ZSxcbiAgICBwcml2YXRlIF93b3Jrc2hlZXQ6IENvbnRyYWN0LldvcmtzaGVldCB8IHVuZGVmaW5lZFxuICApIHsgfVxuXG4gIHB1YmxpYyBnZXQgZGFzaGJvYXJkKCk6IENvbnRyYWN0LkRhc2hib2FyZCB7XG4gICAgcmV0dXJuIHRoaXMuX2Rhc2hib2FyZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdHlwZSgpOiBDb250cmFjdC5EYXNoYm9hcmRPYmplY3RUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcG9zaXRpb24oKTogQ29udHJhY3QuUG9pbnQge1xuICAgIHJldHVybiB0aGlzLl9wb3NpdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2l6ZSgpOiBDb250cmFjdC5TaXplIHtcbiAgICByZXR1cm4gdGhpcy5fc2l6ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgd29ya3NoZWV0KCk6IENvbnRyYWN0LldvcmtzaGVldCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldDtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL0Rhc2hib2FyZE9iamVjdC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5cbmltcG9ydCB7IFNoZWV0IH0gZnJvbSAnLi9TaGVldCc7XG5cbmltcG9ydCB7IFdvcmtzaGVldEltcGwgfSBmcm9tICcuL0ludGVybmFsL1dvcmtzaGVldEltcGwnO1xuXG5leHBvcnQgY2xhc3MgV29ya3NoZWV0IGV4dGVuZHMgU2hlZXQgaW1wbGVtZW50cyBDb250cmFjdC5Xb3Jrc2hlZXQge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfd29ya3NoZWV0SW1wbDogV29ya3NoZWV0SW1wbCkge1xuICAgIHN1cGVyKF93b3Jrc2hlZXRJbXBsKTtcblxuICAgIC8vIENhbGwgdG8gaW5pdGlhbGl6ZSBldmVudHMgYW5kIHRoZW4gY2FsbCBkb3duIHRvIHRoZSBldmVudCBsaXN0ZW5lciBtYW5hZ2VyIHRvIGhhbmRsZSB0aGluZ3NcbiAgICB0aGlzLl93b3Jrc2hlZXRJbXBsLmluaXRpYWxpemVFdmVudHModGhpcykuZm9yRWFjaChlID0+IHRoaXMuYWRkTmV3RXZlbnRUeXBlKGUpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGFyZW50RGFzaGJvYXJkKCk6IENvbnRyYWN0LkRhc2hib2FyZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldEltcGwucGFyZW50RGFzaGJvYXJkO1xuICB9XG5cbiAgcHVibGljIGFwcGx5RmlsdGVyQXN5bmMoXG4gICAgZmllbGROYW1lOiBzdHJpbmcsIHZhbHVlczogQXJyYXk8c3RyaW5nPiwgdXBkYXRlVHlwZTogQ29udHJhY3QuRmlsdGVyVXBkYXRlVHlwZSwgb3B0aW9uczogQ29udHJhY3QuRmlsdGVyT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0SW1wbC5hcHBseUZpbHRlckFzeW5jKGZpZWxkTmFtZSwgdmFsdWVzLCB1cGRhdGVUeXBlLCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBhcHBseVJhbmdlRmlsdGVyQXN5bmMoZmllbGROYW1lOiBzdHJpbmcsIGZpbHRlck9wdGlvbnM6IENvbnRyYWN0LlJhbmdlRmlsdGVyT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldEltcGwuYXBwbHlSYW5nZUZpbHRlckFzeW5jKGZpZWxkTmFtZSwgZmlsdGVyT3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJGaWx0ZXJBc3luYyhmaWVsZE5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldEltcGwuY2xlYXJGaWx0ZXJBc3luYyhmaWVsZE5hbWUpO1xuICB9XG5cbiAgcHVibGljIGdldEFuYWx5dGljT2JqZWN0c0FzeW5jKCk6IFByb21pc2U8QXJyYXk8Q29udHJhY3QuQW5hbHl0aWNzT2JqZWN0Pj4ge1xuICAgIHRocm93IG5ldyBFcnJvcignQVBJIGNhbGwgbm90IHlldCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREYXRhU291cmNlc0FzeW5jKCk6IFByb21pc2U8QXJyYXk8Q29udHJhY3QuRGF0YVNvdXJjZT4+IHtcbiAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0SW1wbC5nZXREYXRhU291cmNlc0FzeW5jKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RW5jb2RpbmdzQXN5bmMoKTogUHJvbWlzZTxBcnJheTxDb250cmFjdC5FbmNvZGluZz4+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0FQSSBjYWxsIG5vdCB5ZXQgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RmlsdGVyc0FzeW5jKCk6IFByb21pc2U8Q29udHJhY3QuRmlsdGVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0SW1wbC5nZXRGaWx0ZXJzQXN5bmMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTZWxlY3RlZE1hcmtzQXN5bmMoKTogUHJvbWlzZTxDb250cmFjdC5NYXJrc0NvbGxlY3Rpb24+IHtcbiAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0SW1wbC5nZXRTZWxlY3RlZE1hcmtzQXN5bmMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRIaWdobGlnaHRlZE1hcmtzQXN5bmMoKTogUHJvbWlzZTxDb250cmFjdC5NYXJrc0NvbGxlY3Rpb24+IHtcbiAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0SW1wbC5nZXRIaWdobGlnaHRlZE1hcmtzQXN5bmMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTdW1tYXJ5RGF0YUFzeW5jKG9wdGlvbnM6IENvbnRyYWN0LkdldFN1bW1hcnlEYXRhT3B0aW9ucyk6IFByb21pc2U8Q29udHJhY3QuRGF0YVRhYmxlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldEltcGwuZ2V0U3VtbWFyeURhdGFBc3luYyhvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVbmRlcmx5aW5nRGF0YUFzeW5jKG9wdGlvbnM6IENvbnRyYWN0LkdldFVuZGVybHlpbmdEYXRhT3B0aW9ucyk6IFByb21pc2U8Q29udHJhY3QuRGF0YVRhYmxlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldEltcGwuZ2V0VW5kZXJseWluZ0RhdGFBc3luYyhvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhclNlbGVjdGVkTWFya3NBc3luYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0SW1wbC5jbGVhclNlbGVjdGVkTWFya3NBc3luYygpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdE1hcmtzQnlJREFzeW5jKG1hcmtzSW5mbzogQXJyYXk8Q29udHJhY3QuTWFya0luZm8+LCB1cGRhdGVUeXBlOiBDb250cmFjdC5TZWxlY3Rpb25VcGRhdGVUeXBlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBUEkgY2FsbCBub3QgeWV0IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdE1hcmtzQnlWYWx1ZUFzeW5jKHNlbGVjdGlvbnM6IEFycmF5PENvbnRyYWN0LlNlbGVjdGlvbkNyaXRlcmlhPixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblVwZGF0ZVR5cGU6IENvbnRyYWN0LlNlbGVjdGlvblVwZGF0ZVR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0SW1wbC5zZWxlY3RNYXJrc0J5VmFsdWVBc3luYyhzZWxlY3Rpb25zLCBzZWxlY3Rpb25VcGRhdGVUeXBlKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RNYXJrc0J5SWRBc3luYyhzZWxlY3Rpb25zOiBBcnJheTxDb250cmFjdC5NYXJrSW5mbz4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25VcGRhdGVUeXBlOiBDb250cmFjdC5TZWxlY3Rpb25VcGRhdGVUeXBlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldEltcGwuc2VsZWN0TWFya3NCeUlkQXN5bmMoc2VsZWN0aW9ucywgc2VsZWN0aW9uVXBkYXRlVHlwZSk7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9Xb3Jrc2hlZXQudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xuXG5pbXBvcnQgeyBTaGVldFBhdGggfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xuaW1wb3J0IHsgQXBpU2VydmljZVJlZ2lzdHJ5LCBQYXJhbWV0ZXJzU2VydmljZSwgU2VydmljZU5hbWVzIH0gZnJvbSAnQHRhYmxlYXUvYXBpLXNoYXJlZCc7XG5cbmltcG9ydCB7IFNoZWV0SW5mb0ltcGwgfSBmcm9tICcuL1NoZWV0SW5mb0ltcGwnO1xuXG5leHBvcnQgY2xhc3MgU2hlZXRJbXBsIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgX3NoZWV0SW5mb0ltcGw6IFNoZWV0SW5mb0ltcGwpIHtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zaGVldEluZm9JbXBsLm5hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNoZWV0VHlwZSgpOiBDb250cmFjdC5TaGVldFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9zaGVldEluZm9JbXBsLnNoZWV0VHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2hlZXRQYXRoKCk6IFNoZWV0UGF0aCB7XG4gICAgcmV0dXJuIHRoaXMuX3NoZWV0SW5mb0ltcGwuc2hlZXRQYXRoO1xuICB9XG5cbiAgcHVibGljIGdldCBzaXplKCk6IENvbnRyYWN0LlNpemUge1xuICAgIHJldHVybiB0aGlzLl9zaGVldEluZm9JbXBsLnNoZWV0U2l6ZTtcbiAgfVxuXG4gIHB1YmxpYyBmaW5kUGFyYW1ldGVyQXN5bmMocGFyYW1ldGVyTmFtZTogc3RyaW5nLCBzaGVldDogQ29udHJhY3QuU2hlZXQpOiBQcm9taXNlPENvbnRyYWN0LlBhcmFtZXRlciB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IHNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxQYXJhbWV0ZXJzU2VydmljZT4oU2VydmljZU5hbWVzLlBhcmFtZXRlcnMpO1xuICAgIHJldHVybiBzZXJ2aWNlLmZpbmRQYXJhbWV0ZXJCeU5hbWVBc3luYyhwYXJhbWV0ZXJOYW1lLCBzaGVldCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UGFyYW1ldGVyc0FzeW5jKHNoZWV0OiBDb250cmFjdC5TaGVldCk6IFByb21pc2U8QXJyYXk8Q29udHJhY3QuUGFyYW1ldGVyPj4ge1xuICAgIGNvbnN0IHNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxQYXJhbWV0ZXJzU2VydmljZT4oU2VydmljZU5hbWVzLlBhcmFtZXRlcnMpO1xuICAgIHJldHVybiBzZXJ2aWNlLmdldFBhcmFtZXRlcnNGb3JTaGVldEFzeW5jKHRoaXMuc2hlZXRQYXRoLCBzaGVldCk7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9JbnRlcm5hbC9TaGVldEltcGwudHNcbiAqKi8iLCJpbXBvcnQgeyBTaGVldFR5cGUsIFNpemUgfSBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xuaW1wb3J0IHsgU2hlZXRQYXRoIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcblxuZXhwb3J0IGNsYXNzIFNoZWV0SW5mb0ltcGwge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfbmFtZTogc3RyaW5nLFxuICAgIHByaXZhdGUgX3NoZWV0VHlwZTogU2hlZXRUeXBlLFxuICAgIHByaXZhdGUgX3NoZWV0U2l6ZTogU2l6ZVxuICApIHsgfVxuXG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICB9XG5cbiAgcHVibGljIGdldCBzaGVldFNpemUoKTogU2l6ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NoZWV0U2l6ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2hlZXRUeXBlKCk6IFNoZWV0VHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NoZWV0VHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2hlZXRQYXRoKCk6IFNoZWV0UGF0aCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNoZWV0TmFtZTogdGhpcy5uYW1lLFxuICAgICAgaXNEYXNoYm9hcmQ6IHRoaXMuc2hlZXRUeXBlID09PSBTaGVldFR5cGUuRGFzaGJvYXJkXG4gICAgICAvLyBUT0RPIC0gU3Rvcmllc1xuICAgIH07XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9JbnRlcm5hbC9TaGVldEluZm9JbXBsLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcbmltcG9ydCB7XG4gIERhdGFTY2hlbWEsXG4gIERhdGFTb3VyY2UgYXMgRGF0YVNvdXJjZUluZm8sXG4gIEZpbHRlckV2ZW50LCBOb3RpZmljYXRpb25JZCxcbiAgVmlzdWFsSWQsXG4gIFdvcmtzaGVldERhdGFTb3VyY2VJbmZvXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5cbmltcG9ydCB7XG4gIEFwaVNlcnZpY2VSZWdpc3RyeSxcbiAgRGF0YVNvdXJjZVNlcnZpY2UsXG4gIEZpbHRlckNoYW5nZWRFdmVudCxcbiAgRmlsdGVyU2VydmljZSxcbiAgR2V0RGF0YVNlcnZpY2UsXG4gIEdldERhdGFUeXBlLFxuICBNYXJrc1NlbGVjdGVkRXZlbnQsXG4gIE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gIFNlbGVjdGlvblNlcnZpY2UsXG4gIFNlcnZpY2VOYW1lcyxcbiAgU2luZ2xlRXZlbnRNYW5hZ2VyLFxuICBTaW5nbGVFdmVudE1hbmFnZXJJbXBsXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1zaGFyZWQnO1xuXG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnLi4vRGF0YVNvdXJjZSc7XG5pbXBvcnQgeyBXb3Jrc2hlZXQgfSBmcm9tICcuLi9Xb3Jrc2hlZXQnO1xuXG5pbXBvcnQgeyBEYXRhU291cmNlSW1wbCB9IGZyb20gJy4vRGF0YVNvdXJjZUltcGwnO1xuaW1wb3J0IHsgU2hlZXRJbXBsIH0gZnJvbSAnLi9TaGVldEltcGwnO1xuaW1wb3J0IHsgU2hlZXRJbmZvSW1wbCB9IGZyb20gJy4vU2hlZXRJbmZvSW1wbCc7XG5cbmNvbnN0IHZpc3VhbElkc0FyZUVxdWFsID0gZnVuY3Rpb24oYTogVmlzdWFsSWQsIGI6IFZpc3VhbElkKTogYm9vbGVhbiB7XG4gIHJldHVybiBhICYmIGIgJiZcbiAgICBhLndvcmtzaGVldCA9PT0gYi53b3Jrc2hlZXQgJiZcbiAgICBhLmRhc2hib2FyZCA9PT0gYi5kYXNoYm9hcmQgJiZcbiAgICBhLnN0b3J5Ym9hcmQgPT09IGIuc3Rvcnlib2FyZCAmJlxuICAgIGEuc3RvcnlQb2ludElEID09PSBiLnN0b3J5UG9pbnRJRCAmJlxuICAgIGEuZmxpcGJvYXJkWm9uZUlEID09PSBiLmZsaXBib2FyZFpvbmVJRDtcbn07XG5cbmV4cG9ydCBjbGFzcyBXb3Jrc2hlZXRJbXBsIGV4dGVuZHMgU2hlZXRJbXBsIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHNoZWV0SW5mb0ltcGw6IFNoZWV0SW5mb0ltcGwsXG4gICAgICAgICAgICAgICAgICAgICBwcml2YXRlIF92aXN1YWxJZDogVmlzdWFsSWQsXG4gICAgICAgICAgICAgICAgICAgICBwcml2YXRlIF9wYXJlbnREYXNoYm9hcmQ6IENvbnRyYWN0LkRhc2hib2FyZCkge1xuICAgIHN1cGVyKHNoZWV0SW5mb0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldCBwYXJlbnREYXNoYm9hcmQoKTogQ29udHJhY3QuRGFzaGJvYXJkIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyZW50RGFzaGJvYXJkO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2Qgd2hpY2ggZ29lcyB0aHJvdWdoIGFuZCByZWdpc3RlcnMgZWFjaCBldmVudCB0eXBlIHRoaXMgaW1wbCBrbm93cyBhYm91dFxuICAgKiB3aXRoIHRoZSBOb3RpZmljYXRpb25TZXJ2aWNlLiBJdCByZXR1cm5zIGFuIGFycmF5IG9mIFNpbmdsZUV2ZW50TWFuYWdlciBvYmplY3RzIHdoaWNoXG4gICAqIGNhbiB0aGVuIGJlIHBhc3NlZCB0byBhbiBFdmVudExpc3RlbmVyTWFuYWdlciB0byBoYW5kbGUgdXNlciByZWdpc3RyYXRpb24gLyB1bnJlZ2lzdHJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtXb3Jrc2hlZXR9IHdvcmtzaGVldCBUaGUgd29ya3NoZWV0IG9iamVjdCB3aGljaCB3aWxsIGJlIGluY2x1ZGVkIHdpdGggdGhlIGV2ZW50IG5vdGlmaWNhdGlvbnNcbiAgICogQHJldHVybnMge0FycmF5PFNpbmdsZUV2ZW50TWFuYWdlcj59IENvbGxlY3Rpb24gb2YgZXZlbnQgbWFuYWdlcnMgdG8gcGFzcyB0byBhbiBFdmVudExpc3RlbmVyTWFuYWdlclxuICAgKi9cbiAgcHVibGljIGluaXRpYWxpemVFdmVudHMod29ya3NoZWV0OiBXb3Jrc2hlZXQpOiBBcnJheTxTaW5nbGVFdmVudE1hbmFnZXI+IHtcbiAgICBjb25zdCByZXN1bHRzID0gbmV3IEFycmF5PFNpbmdsZUV2ZW50TWFuYWdlcj4oKTtcbiAgICBsZXQgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZTtcblxuICAgIHRyeSB7XG4gICAgICBub3RpZmljYXRpb25TZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8Tm90aWZpY2F0aW9uU2VydmljZT4oU2VydmljZU5hbWVzLk5vdGlmaWNhdGlvbik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSB0aGlzIHNlcnZpY2UgcmVnaXN0ZXJlZCwganVzdCByZXR1cm5cbiAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgYWxsIG9mIHRoZSBldmVudCBtYW5hZ2VycyB3ZSdsbCBuZWVkIChvbmUgZm9yIGVhY2ggZXZlbnQgdHlwZSlcbiAgICBjb25zdCBtYXJrc0V2ZW50ID0gbmV3IFNpbmdsZUV2ZW50TWFuYWdlckltcGw8TWFya3NTZWxlY3RlZEV2ZW50PihDb250cmFjdC5UYWJsZWF1RXZlbnRUeXBlLk1hcmtTZWxlY3Rpb25DaGFuZ2VkKTtcbiAgICBub3RpZmljYXRpb25TZXJ2aWNlLnJlZ2lzdGVySGFuZGxlcihOb3RpZmljYXRpb25JZC5TZWxlY3RlZE1hcmtzQ2hhbmdlZCwgKG1vZGVsKSA9PiB7XG4gICAgICBjb25zdCB2aXN1YWxJZCA9IG1vZGVsIGFzIFZpc3VhbElkO1xuICAgICAgcmV0dXJuIHZpc3VhbElkc0FyZUVxdWFsKHZpc3VhbElkLCB0aGlzLnZpc3VhbElkKTtcbiAgICB9LCAodml6OiBWaXN1YWxJZCkgPT4ge1xuICAgICAgbWFya3NFdmVudC50cmlnZ2VyRXZlbnQoKCkgPT4gbmV3IE1hcmtzU2VsZWN0ZWRFdmVudCh3b3Jrc2hlZXQpKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGZpbHRlckV2ZW50ID0gbmV3IFNpbmdsZUV2ZW50TWFuYWdlckltcGw8RmlsdGVyQ2hhbmdlZEV2ZW50PihDb250cmFjdC5UYWJsZWF1RXZlbnRUeXBlLkZpbHRlckNoYW5nZWQpO1xuICAgIG5vdGlmaWNhdGlvblNlcnZpY2UucmVnaXN0ZXJIYW5kbGVyKE5vdGlmaWNhdGlvbklkLkZpbHRlckNoYW5nZWQsIChtb2RlbCkgPT4ge1xuICAgICAgY29uc3QgZmlsdGVyRXZlbnRSZXNwb25zZSA9IG1vZGVsIGFzIEZpbHRlckV2ZW50O1xuICAgICAgcmV0dXJuIHRoaXMudmlzdWFsSWQud29ya3NoZWV0ID09PSBmaWx0ZXJFdmVudFJlc3BvbnNlLnZpc3VhbElkLndvcmtzaGVldDtcbiAgICB9LCAoZXZlbnQ6IEZpbHRlckV2ZW50KSA9PiB7XG4gICAgICBmaWx0ZXJFdmVudC50cmlnZ2VyRXZlbnQoKCkgPT4gbmV3IEZpbHRlckNoYW5nZWRFdmVudCh3b3Jrc2hlZXQsIGV2ZW50LmZpZWxkTmFtZSkpO1xuICAgIH0pO1xuXG4gICAgcmVzdWx0cy5wdXNoKG1hcmtzRXZlbnQpO1xuICAgIHJlc3VsdHMucHVzaChmaWx0ZXJFdmVudCk7XG5cbiAgICAvLyBUT0RPIC0gb3RoZXIgZXZlbnQgdHlwZXNcblxuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG5cbiAgcHVibGljIGdldCB2aXN1YWxJZCgpOiBWaXN1YWxJZCB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc3VhbElkO1xuICB9XG5cbiAgcHVibGljIGFwcGx5RmlsdGVyQXN5bmMoXG4gICAgZmllbGROYW1lOiBzdHJpbmcsIHZhbHVlczogQXJyYXk8c3RyaW5nPiwgdXBkYXRlVHlwZTogQ29udHJhY3QuRmlsdGVyVXBkYXRlVHlwZSwgb3B0aW9uczogQ29udHJhY3QuRmlsdGVyT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICBjb25zdCBzZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8RmlsdGVyU2VydmljZT4oU2VydmljZU5hbWVzLkZpbHRlcik7XG4gICAgICByZXR1cm4gc2VydmljZS5hcHBseUZpbHRlckFzeW5jKHRoaXMudmlzdWFsSWQsIGZpZWxkTmFtZSwgdmFsdWVzLCB1cGRhdGVUeXBlLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgcHVibGljIGFwcGx5UmFuZ2VGaWx0ZXJBc3luYyhmaWVsZE5hbWU6IHN0cmluZywgZmlsdGVyT3B0aW9uczogQ29udHJhY3QuUmFuZ2VGaWx0ZXJPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBzZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8RmlsdGVyU2VydmljZT4oU2VydmljZU5hbWVzLkZpbHRlcik7XG4gICAgcmV0dXJuIHNlcnZpY2UuYXBwbHlSYW5nZUZpbHRlckFzeW5jKHRoaXMudmlzdWFsSWQsIGZpZWxkTmFtZSwgZmlsdGVyT3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJGaWx0ZXJBc3luYyhmaWVsZE5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3Qgc2VydmljZSA9IEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlPEZpbHRlclNlcnZpY2U+KFNlcnZpY2VOYW1lcy5GaWx0ZXIpO1xuICAgIHJldHVybiBzZXJ2aWNlLmNsZWFyRmlsdGVyQXN5bmModGhpcy52aXN1YWxJZCwgZmllbGROYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREYXRhU291cmNlc0FzeW5jKCk6IFByb21pc2U8QXJyYXk8Q29udHJhY3QuRGF0YVNvdXJjZT4+IHtcbiAgICBjb25zdCBzZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8RGF0YVNvdXJjZVNlcnZpY2U+KFNlcnZpY2VOYW1lcy5EYXRhU291cmNlU2VydmljZSk7XG5cbiAgICByZXR1cm4gc2VydmljZS5nZXREYXRhU291cmNlc0FzeW5jKCkudGhlbjxBcnJheTxDb250cmFjdC5EYXRhU291cmNlPj4ocmVzdWx0ID0+IHtcbiAgICAgIGNvbnN0IGRhdGFTY2hlbWE6IERhdGFTY2hlbWEgPSByZXN1bHQgYXMgRGF0YVNjaGVtYTtcbiAgICAgIGNvbnN0IHdvcmtzaGVldERhdGFTb3VyY2VJbmZvOiBXb3Jrc2hlZXREYXRhU291cmNlSW5mbyA9IGRhdGFTY2hlbWEud29ya3NoZWV0RGF0YVNjaGVtYU1hcFt0aGlzLm5hbWVdO1xuXG4gICAgICBsZXQgZGF0YVNvdXJjZXM6IEFycmF5PENvbnRyYWN0LkRhdGFTb3VyY2U+ID0gW107XG5cbiAgICAgIC8vIEZpcnN0LCBhZGQgdGhlIHByaW1hcnkgZGF0YXNvdXJjZS4gIEJ5IGNvbnZlbnRpb24sIGl0IGNvbWVzIGZpcnN0IGluIHRoZSByZXR1cm5lZCBhcnJheS5cbiAgICAgIGxldCBwcmltYXJ5SWQ6IHN0cmluZyA9IHdvcmtzaGVldERhdGFTb3VyY2VJbmZvLnByaW1hcnlEYXRhU291cmNlO1xuICAgICAgZGF0YVNvdXJjZXMucHVzaCh0aGlzLmNyZWF0ZURhdGFTb3VyY2VGcm9tSW5mbyhkYXRhU2NoZW1hLmRhdGFTb3VyY2VzW3ByaW1hcnlJZF0pKTtcblxuICAgICAgLy8gVGhlbiwgbG9vcCB0aHJvdWdoIGFueSBzZWNvbmRhcnkgZGF0YSBzb3VyY2VzIGFuZCBhZGQgdGhlbS5cbiAgICAgIGZvciAobGV0IHNlY29uZGFyeUlkIG9mIHdvcmtzaGVldERhdGFTb3VyY2VJbmZvLnJlZmVyZW5jZWREYXRhU291cmNlTGlzdCkge1xuICAgICAgICBpZiAoc2Vjb25kYXJ5SWQgIT09IHByaW1hcnlJZCkge1xuICAgICAgICAgIGRhdGFTb3VyY2VzLnB1c2godGhpcy5jcmVhdGVEYXRhU291cmNlRnJvbUluZm8oZGF0YVNjaGVtYS5kYXRhU291cmNlc1tzZWNvbmRhcnlJZF0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZGF0YVNvdXJjZXM7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RmlsdGVyc0FzeW5jKCk6IFByb21pc2U8Q29udHJhY3QuRmlsdGVyW10+IHtcbiAgICBjb25zdCBzZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8RmlsdGVyU2VydmljZT4oU2VydmljZU5hbWVzLkZpbHRlcik7XG4gICAgcmV0dXJuIHNlcnZpY2UuZ2V0RmlsdGVyc0FzeW5jKHRoaXMudmlzdWFsSWQpO1xuICB9XG5cbiAgcHVibGljIGdldFNlbGVjdGVkTWFya3NBc3luYygpOiBQcm9taXNlPENvbnRyYWN0Lk1hcmtzQ29sbGVjdGlvbj4ge1xuICAgIGNvbnN0IHNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxHZXREYXRhU2VydmljZT4oU2VydmljZU5hbWVzLkdldERhdGEpO1xuICAgIHJldHVybiBzZXJ2aWNlLmdldFNlbGVjdGVkTWFya3NBc3luYyh0aGlzLnZpc3VhbElkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRIaWdobGlnaHRlZE1hcmtzQXN5bmMoKTogUHJvbWlzZTxDb250cmFjdC5NYXJrc0NvbGxlY3Rpb24+IHtcbiAgICBjb25zdCBzZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8R2V0RGF0YVNlcnZpY2U+KFNlcnZpY2VOYW1lcy5HZXREYXRhKTtcbiAgICByZXR1cm4gc2VydmljZS5nZXRIaWdobGlnaHRlZE1hcmtzQXN5bmModGhpcy52aXN1YWxJZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3VtbWFyeURhdGFBc3luYyhvcHRpb25zOiBDb250cmFjdC5HZXRTdW1tYXJ5RGF0YU9wdGlvbnMpOiBQcm9taXNlPENvbnRyYWN0LkRhdGFUYWJsZT4ge1xuICAgIGNvbnN0IHNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxHZXREYXRhU2VydmljZT4oU2VydmljZU5hbWVzLkdldERhdGEpO1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgcmV0dXJuIHNlcnZpY2UuZ2V0VW5kZXJseWluZ0RhdGFBc3luYyhcbiAgICAgIHRoaXMudmlzdWFsSWQsIEdldERhdGFUeXBlLlN1bW1hcnksICEhb3B0aW9ucy5pZ25vcmVBbGlhc2VzLCAhIW9wdGlvbnMuaWdub3JlU2VsZWN0aW9uLCB0cnVlLCAwKTtcbiAgICB9XG5cbiAgcHVibGljIGdldFVuZGVybHlpbmdEYXRhQXN5bmMob3B0aW9uczogQ29udHJhY3QuR2V0VW5kZXJseWluZ0RhdGFPcHRpb25zKTogUHJvbWlzZTxDb250cmFjdC5EYXRhVGFibGU+IHtcbiAgICBjb25zdCBzZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8R2V0RGF0YVNlcnZpY2U+KFNlcnZpY2VOYW1lcy5HZXREYXRhKTtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICByZXR1cm4gc2VydmljZS5nZXRVbmRlcmx5aW5nRGF0YUFzeW5jKFxuICAgICAgdGhpcy52aXN1YWxJZCxcbiAgICAgIEdldERhdGFUeXBlLlVuZGVybHlpbmcsXG4gICAgICAhIW9wdGlvbnMuaWdub3JlQWxpYXNlcyxcbiAgICAgICEhb3B0aW9ucy5pZ25vcmVTZWxlY3Rpb24sXG4gICAgICAhIW9wdGlvbnMuaW5jbHVkZUFsbENvbHVtbnMsXG4gICAgICBvcHRpb25zLm1heFJvd3MgfHwgMCk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJTZWxlY3RlZE1hcmtzQXN5bmMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc2VydmljZSA9IEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlPFNlbGVjdGlvblNlcnZpY2U+KFNlcnZpY2VOYW1lcy5TZWxlY3Rpb24pO1xuICAgIHJldHVybiBzZXJ2aWNlLmNsZWFyU2VsZWN0ZWRNYXJrc0FzeW5jKHRoaXMudmlzdWFsSWQpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdE1hcmtzQnlWYWx1ZUFzeW5jKHNlbGVjdGlvbnM6IEFycmF5PENvbnRyYWN0LlNlbGVjdGlvbkNyaXRlcmlhPixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblVwZGF0ZVR5cGU6IENvbnRyYWN0LlNlbGVjdGlvblVwZGF0ZVR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8U2VsZWN0aW9uU2VydmljZT4oU2VydmljZU5hbWVzLlNlbGVjdGlvbik7XG4gICAgcmV0dXJuIHNlcnZpY2Uuc2VsZWN0TWFya3NCeVZhbHVlQXN5bmModGhpcy52aXN1YWxJZCwgc2VsZWN0aW9ucywgc2VsZWN0aW9uVXBkYXRlVHlwZSk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0TWFya3NCeUlkQXN5bmMoc2VsZWN0aW9uczogQXJyYXk8Q29udHJhY3QuTWFya0luZm8+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uVXBkYXRlVHlwZTogQ29udHJhY3QuU2VsZWN0aW9uVXBkYXRlVHlwZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxTZWxlY3Rpb25TZXJ2aWNlPihTZXJ2aWNlTmFtZXMuU2VsZWN0aW9uKTtcbiAgICByZXR1cm4gc2VydmljZS5zZWxlY3RNYXJrc0J5SWRBc3luYyh0aGlzLnZpc3VhbElkLCBzZWxlY3Rpb25zLCBzZWxlY3Rpb25VcGRhdGVUeXBlKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRGF0YVNvdXJjZUZyb21JbmZvKGRhdGFTb3VyY2VJbmZvOiBEYXRhU291cmNlSW5mbyk6IENvbnRyYWN0LkRhdGFTb3VyY2Uge1xuICAgIGNvbnN0IGRhdGFTb3VyY2VJbXBsID0gbmV3IERhdGFTb3VyY2VJbXBsKGRhdGFTb3VyY2VJbmZvKTtcbiAgICBjb25zdCBkYXRhU291cmNlID0gbmV3IERhdGFTb3VyY2UoZGF0YVNvdXJjZUltcGwpO1xuICAgIGRhdGFTb3VyY2VJbXBsLmluaXRpYWxpemVXaXRoUHVibGljSW50ZXJmYWNlcyhkYXRhU291cmNlKTtcbiAgICByZXR1cm4gZGF0YVNvdXJjZTtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL0ludGVybmFsL1dvcmtzaGVldEltcGwudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xuXG5pbXBvcnQgeyBEYXRhU291cmNlSW1wbCB9IGZyb20gJy4vSW50ZXJuYWwvRGF0YVNvdXJjZUltcGwnO1xuXG5leHBvcnQgY2xhc3MgRGF0YVNvdXJjZSBpbXBsZW1lbnRzIENvbnRyYWN0LkRhdGFTb3VyY2Uge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfZGF0YVNvdXJjZUltcGw6IERhdGFTb3VyY2VJbXBsKSB7IH1cblxuICBwdWJsaWMgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZUltcGwubmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZUltcGwuaWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZpZWxkcygpOiBDb250cmFjdC5GaWVsZFtdIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZUltcGwuZmllbGRzO1xuICB9XG5cbiAgcHVibGljIGdldCBjb25uZWN0aW9uU3VtbWFyaWVzKCk6IENvbnRyYWN0LkNvbm5lY3Rpb25TdW1tYXJ5W10ge1xuICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlSW1wbC5jb25uZWN0aW9uU3VtbWFyaWVzO1xuICB9XG5cbiAgcHVibGljIGdldCBleHRyYWN0VXBkYXRlVGltZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlSW1wbC5leHRyYWN0VXBkYXRlVGltZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNFeHRyYWN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlSW1wbC5pc0V4dHJhY3Q7XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaEFzeW5jKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlSW1wbC5yZWZyZXNoQXN5bmMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVbmRlcmx5aW5nRGF0YUFzeW5jKG9wdGlvbnM/OiBDb250cmFjdC5EYXRhU291cmNlVW5kZXJseWluZ0RhdGFPcHRpb25zKTpcbiAgICBQcm9taXNlPENvbnRyYWN0LkRhdGFUYWJsZT4ge1xuICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlSW1wbC5nZXRVbmRlcmx5aW5nRGF0YUFzeW5jKG9wdGlvbnMpO1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9leHRlbnNpb25zLWFwaS9zcmMvRGF0YVNvdXJjZS50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5pbXBvcnQgKiBhcyBJbnRlcm5hbENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5pbXBvcnQgeyBBcGlTZXJ2aWNlUmVnaXN0cnksIERhdGFTb3VyY2VTZXJ2aWNlLCBHZXREYXRhU2VydmljZSwgU2VydmljZU5hbWVzIH0gZnJvbSAnQHRhYmxlYXUvYXBpLXNoYXJlZCc7XG5cbmltcG9ydCB7IEZpZWxkSW1wbCB9IGZyb20gJy4vRmllbGRJbXBsJztcblxuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuLi9GaWVsZCc7XG5cbmV4cG9ydCBjbGFzcyBEYXRhU291cmNlSW1wbCB7XG4gIHByaXZhdGUgX2ZpZWxkczogRmllbGRbXTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfZGF0YVNvdXJjZUluZm86IEludGVybmFsQ29udHJhY3QuRGF0YVNvdXJjZSkgeyB9XG5cbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2VJbmZvLm5hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2VJbmZvLmlkO1xuICB9XG5cbiAgcHVibGljIGdldCBleHRyYWN0VXBkYXRlVGltZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlSW5mby5leHRyYWN0VXBkYXRlVGltZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmllbGRzKCk6IENvbnRyYWN0LkZpZWxkW10ge1xuICAgIHJldHVybiB0aGlzLl9maWVsZHM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzRXh0cmFjdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZUluZm8uaXNFeHRyYWN0O1xuICB9XG5cbiAgcHVibGljIGdldCBjb25uZWN0aW9uU3VtbWFyaWVzKCk6IENvbnRyYWN0LkNvbm5lY3Rpb25TdW1tYXJ5W10ge1xuICAgIHRocm93IG5ldyBFcnJvcignRGF0YVNvdXJjZSBjb25uZWN0aW9uU3VtbWFyaWVzIEFQSSBub3QgeWV0IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgcHVibGljIHJlZnJlc2hBc3luYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBkYXRhU291cmNlU2VydmljZSA9IEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlPERhdGFTb3VyY2VTZXJ2aWNlPihcbiAgICAgIFNlcnZpY2VOYW1lcy5EYXRhU291cmNlU2VydmljZSk7XG5cbiAgICByZXR1cm4gZGF0YVNvdXJjZVNlcnZpY2UucmVmcmVzaEFzeW5jKHRoaXMuX2RhdGFTb3VyY2VJbmZvLmlkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVbmRlcmx5aW5nRGF0YUFzeW5jKG9wdGlvbnM/OiBDb250cmFjdC5EYXRhU291cmNlVW5kZXJseWluZ0RhdGFPcHRpb25zKTpcbiAgICBQcm9taXNlPENvbnRyYWN0LkRhdGFUYWJsZT4ge1xuICAgICAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgICAgICAgaWdub3JlQWxpYXNlczogZmFsc2UsXG4gICAgICAgICAgbWF4Um93czogMTAwMDAsXG4gICAgICAgICAgY29sdW1uc1RvSW5jbHVkZTogW10sXG4gICAgICB9O1xuXG4gICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgICAgY29uc3QgZ2V0RGF0YVNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxHZXREYXRhU2VydmljZT4oU2VydmljZU5hbWVzLkdldERhdGEpO1xuICAgICAgcmV0dXJuIGdldERhdGFTZXJ2aWNlLmdldERhdGFTb3VyY2VEYXRhQXN5bmMoXG4gICAgICAgIHRoaXMuaWQsXG4gICAgICAgICEhb3B0aW9ucy5pZ25vcmVBbGlhc2VzLFxuICAgICAgICBvcHRpb25zLm1heFJvd3MgfHwgZGVmYXVsdE9wdGlvbnMubWF4Um93cyxcbiAgICAgICAgb3B0aW9ucy5jb2x1bW5zVG9JbmNsdWRlIHx8IGRlZmF1bHRPcHRpb25zLmNvbHVtbnNUb0luY2x1ZGUpO1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemVXaXRoUHVibGljSW50ZXJmYWNlcyhkYXRhU291cmNlOiBDb250cmFjdC5EYXRhU291cmNlKTogdm9pZCB7XG4gICAgdGhpcy5fZmllbGRzID0gdGhpcy5fZGF0YVNvdXJjZUluZm8uZmllbGRzLm1hcChmaWVsZE1vZGVsID0+IHtcbiAgICAgIGNvbnN0IGZpZWxkSW1wbCA9IG5ldyBGaWVsZEltcGwoZmllbGRNb2RlbCwgZGF0YVNvdXJjZSk7XG4gICAgICByZXR1cm4gbmV3IEZpZWxkKGZpZWxkSW1wbCk7XG4gICAgfSk7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9JbnRlcm5hbC9EYXRhU291cmNlSW1wbC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5pbXBvcnQgKiBhcyBJbnRlcm5hbENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5pbXBvcnQgeyBJbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MgfSBmcm9tICdAdGFibGVhdS9hcGktc2hhcmVkJztcblxuZXhwb3J0IGNsYXNzIEZpZWxkSW1wbCB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIF9maWVsZEluZm86IEludGVybmFsQ29udHJhY3QuRmllbGQsXG4gICAgICAgICAgICAgICAgICAgICBwcml2YXRlIF9wYXJlbnREYXRhU291cmNlOiBDb250cmFjdC5EYXRhU291cmNlKSB7ICB9XG5cbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkSW5mby5uYW1lO1xuICB9XG5cbiAgcHVibGljIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9maWVsZEluZm8uaWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRlc2NyaXB0aW9uKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkSW5mby5kZXNjcmlwdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWdncmVnYXRpb24oKTogQ29udHJhY3QuRmllbGRBZ2dyZWdhdGlvblR5cGUge1xuICAgIHJldHVybiBJbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MuZmllbGRBZ2dyZWdhdGlvblR5cGUuY29udmVydCh0aGlzLl9maWVsZEluZm8uYWdncmVnYXRpb24pO1xuICB9XG5cbiAgcHVibGljIGdldCBkYXRhU291cmNlKCk6IENvbnRyYWN0LkRhdGFTb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLl9wYXJlbnREYXRhU291cmNlO1xuICB9XG5cbiAgcHVibGljIGdldCByb2xlKCk6IENvbnRyYWN0LkZpZWxkUm9sZVR5cGUge1xuICAgIHJldHVybiBJbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MuZmllbGRSb2xlVHlwZS5jb252ZXJ0KHRoaXMuX2ZpZWxkSW5mby5yb2xlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNIaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkSW5mby5pc0hpZGRlbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNHZW5lcmF0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkSW5mby5pc0dlbmVyYXRlZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNDYWxjdWxhdGVkRmllbGQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkSW5mby5pc0NhbGN1bGF0ZWRGaWVsZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNDb21iaW5lZEZpZWxkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9maWVsZEluZm8uaXNDb21iaW5lZEZpZWxkO1xuICB9XG5cbiAgcHVibGljIGdldENhbGN1bGF0ZWRGaWVsZEFzeW5jKCk6IFByb21pc2U8Q29udHJhY3QuQ2FsY3VsYXRlZEZpZWxkIHwgdW5kZWZpbmVkPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGaWVsZCBnZXRDYWxjdWxhdGVkRmllbGRBc3luYyBtZXRob2Qgbm90IHlldCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL0ludGVybmFsL0ZpZWxkSW1wbC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5cbmltcG9ydCB7IEZpZWxkSW1wbCB9IGZyb20gJy4vSW50ZXJuYWwvRmllbGRJbXBsJztcblxuZXhwb3J0IGNsYXNzIEZpZWxkIGltcGxlbWVudHMgQ29udHJhY3QuRmllbGQge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfZmllbGRJbXBsOiBGaWVsZEltcGwpIHsgfVxuXG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9maWVsZEltcGwubmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRJbXBsLmlkO1xuICB9XG5cbiAgcHVibGljIGdldCBkZXNjcmlwdGlvbigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9maWVsZEltcGwuZGVzY3JpcHRpb247XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFnZ3JlZ2F0aW9uKCk6IENvbnRyYWN0LkZpZWxkQWdncmVnYXRpb25UeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRJbXBsLmFnZ3JlZ2F0aW9uO1xuICB9XG5cbiAgcHVibGljIGdldCBkYXRhU291cmNlKCk6IENvbnRyYWN0LkRhdGFTb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLl9maWVsZEltcGwuZGF0YVNvdXJjZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcm9sZSgpOiBDb250cmFjdC5GaWVsZFJvbGVUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRJbXBsLnJvbGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzSGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9maWVsZEltcGwuaXNIaWRkZW47XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzR2VuZXJhdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9maWVsZEltcGwuaXNHZW5lcmF0ZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzQ2FsY3VsYXRlZEZpZWxkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9maWVsZEltcGwuaXNDYWxjdWxhdGVkRmllbGQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbHVtblR5cGUoKTogQ29udHJhY3QuQ29sdW1uVHlwZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGaWVsZC5jb2x1bW5UeXBlIG5vdCB5ZXQgaW1wbGVtZXRuZWQuJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzQ29tYmluZWRGaWVsZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRJbXBsLmlzQ29tYmluZWRGaWVsZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYWxjdWxhdGVkRmllbGRBc3luYygpOiBQcm9taXNlPENvbnRyYWN0LkNhbGN1bGF0ZWRGaWVsZCB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLl9maWVsZEltcGwuZ2V0Q2FsY3VsYXRlZEZpZWxkQXN5bmMoKTtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL0ZpZWxkLnRzXG4gKiovIiwiaW1wb3J0IHsgRXh0ZW5zaW9uU2V0dGluZ3NJbmZvIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcbmltcG9ydCB7IEFwaVNlcnZpY2VSZWdpc3RyeSB9IGZyb20gJ0B0YWJsZWF1L2FwaS1zaGFyZWQnO1xuaW1wb3J0IHsgUGFyYW0gfSBmcm9tICdAdGFibGVhdS9hcGktdXRpbHMnO1xuXG5pbXBvcnQgeyBFeHRlbnNpb25zU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vU2VydmljZXMvRXh0ZW5zaW9uc1NlcnZpY2VOYW1lcyc7XG5pbXBvcnQgeyBTZXR0aW5nc0NvbGxlY3Rpb24sIFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4uL1NlcnZpY2VzL1NldHRpbmdzU2VydmljZSc7XG5cbmV4cG9ydCBjbGFzcyBTZXR0aW5nc0ltcGwge1xuICBwcml2YXRlIF9pc01vZGlmaWVkOiBib29sZWFuO1xuICBwcml2YXRlIF9jdXJyZW50U2V0dGluZ3M6IFNldHRpbmdzQ29sbGVjdGlvbjtcblxuICAvLyBTaW5jZSBwcm9taXNlcyBjYW4ndCBiZSBpbnRyb3NwZWN0ZWQgZm9yIHN0YXRlLCBrZWVwIGEgdmFyaWFibGUgdGhhdFxuICAvLyBpbmRpY2F0ZXMgYSBzYXZlIGlzIGluIHByb2dyZXNzLCBzbyB0aGF0IHNldC9lcmFzZSBjYW4ndCBiZSBjYWxsZWQgZHVyaW5nIGEgc2F2ZS5cbiAgcHJpdmF0ZSBfc2F2ZUluUHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2V0dGluZ3NJbmZvOiBFeHRlbnNpb25TZXR0aW5nc0luZm8pIHtcbiAgICB0aGlzLmluaXRpYWxpemVTZXR0aW5ncyhzZXR0aW5nc0luZm8pO1xuICB9XG5cbiAgcHVibGljIGVyYXNlKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgUGFyYW0udmVyaWZ5VmFsdWUoa2V5LCAna2V5Jyk7XG5cbiAgICAvLyBPbmx5IG1ha2UgYSBtb2RpZmljYXRpb24gaWYgd2UgaGF2ZSB0aGUga2V5IGFscmVhZHlcbiAgICBpZiAodGhpcy5fY3VycmVudFNldHRpbmdzW2tleV0pIHtcbiAgICAgIHRoaXMudmVyaWZ5U2V0dGluZ3NBcmVVbmxvY2tlZCgpO1xuXG4gICAgICBkZWxldGUgdGhpcy5fY3VycmVudFNldHRpbmdzW2tleV07XG4gICAgICB0aGlzLl9pc01vZGlmaWVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0KGtleTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBQYXJhbS52ZXJpZnlWYWx1ZShrZXksICdrZXknKTtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFNldHRpbmdzW2tleV07XG4gIH1cblxuICBwdWJsaWMgZ2V0QWxsKCk6IFNldHRpbmdzQ29sbGVjdGlvbiB7XG4gICAgLy8gUmV0dXJucyBhIG11dGFibGUgY29weSBvZiB0aGUgc2V0dGluZ3NcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fY3VycmVudFNldHRpbmdzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNNb2RpZmllZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNNb2RpZmllZDtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlQXN5bmMoKTogUHJvbWlzZTxTZXR0aW5nc0NvbGxlY3Rpb24+IHtcbiAgICB0aGlzLnZlcmlmeVNldHRpbmdzQXJlVW5sb2NrZWQoKTtcblxuICAgIC8vIEp1c3QgcmVzb2x2ZSBpbW1lZGlhdGVseSBpZiBzZXR0aW5ncyBhcmUgdW5jaGFuZ2VkXG4gICAgaWYgKCF0aGlzLl9pc01vZGlmaWVkKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlPFNldHRpbmdzQ29sbGVjdGlvbj4odGhpcy5fY3VycmVudFNldHRpbmdzKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zYXZlSW5Qcm9ncmVzcyA9IHRydWU7XG5cbiAgICAvLyBVc2UgdGhlIHNldHRpbmdzIHNlcnZpY2UgdG8gc2F2ZSBzZXR0aW5ncyB0byB0d2JcbiAgICBjb25zdCBzZXR0aW5nc1NlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxTZXR0aW5nc1NlcnZpY2U+KFxuICAgICAgRXh0ZW5zaW9uc1NlcnZpY2VOYW1lcy5TZXR0aW5nc1NlcnZpY2UpO1xuXG4gICAgcmV0dXJuIHNldHRpbmdzU2VydmljZS5zYXZlU2V0dGluZ3NBc3luYyh0aGlzLl9jdXJyZW50U2V0dGluZ3MpLnRoZW48U2V0dGluZ3NDb2xsZWN0aW9uPihuZXdTZXR0aW5ncyA9PiB7XG4gICAgICB0aGlzLl9zYXZlSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgdGhpcy5faXNNb2RpZmllZCA9IGZhbHNlO1xuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9jdXJyZW50U2V0dGluZ3MsIG5ld1NldHRpbmdzKTtcbiAgICAgIHJldHVybiBuZXdTZXR0aW5ncztcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBQYXJhbS52ZXJpZnlWYWx1ZShrZXksICdrZXknKTsgLy8gS2V5IHNob3VsZG4ndCBiZSBhbiBlbXB0eSBzdHJpbmcuXG4gICAgUGFyYW0udmVyaWZ5U3RyaW5nKHZhbHVlLCAndmFsdWUnKTsgLy8gRW1wdHkgc3RyaW5nIHZhbHVlIGlzIGFsbG93ZWQuXG4gICAgdGhpcy52ZXJpZnlTZXR0aW5nc0FyZVVubG9ja2VkKCk7XG5cbiAgICB0aGlzLl9jdXJyZW50U2V0dGluZ3Nba2V5XSA9IHZhbHVlO1xuICAgIHRoaXMuX2lzTW9kaWZpZWQgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplU2V0dGluZ3Moc2V0dGluZ3NJbmZvOiBFeHRlbnNpb25TZXR0aW5nc0luZm8pOiB2b2lkIHtcbiAgICBQYXJhbS52ZXJpZnlWYWx1ZShzZXR0aW5nc0luZm8sICdzZXR0aW5nc0luZm8nKTtcbiAgICBQYXJhbS52ZXJpZnlWYWx1ZShzZXR0aW5nc0luZm8uc2V0dGluZ3NWYWx1ZXMsICdzZXR0aW5nc0luZm8uU2V0dGluZ3NWYWx1ZXMnKTtcblxuICAgIHRoaXMuX2N1cnJlbnRTZXR0aW5ncyA9IHNldHRpbmdzSW5mby5zZXR0aW5nc1ZhbHVlcztcblxuICAgIC8vIFJlc2V0IHRoZSBpc01vZGlmaWVkIGZsYWdcbiAgICB0aGlzLl9pc01vZGlmaWVkID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBoZWxwZXIgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgYW55IGxvY2FsIHVwZGF0ZSB0byB0aGlzLmN1cnJlbnRTZXR0aW5ncy5cbiAgICogQ2hlY2tzIGlmIGEgY3VycmVudCBzYXZlIGNhbGwgaXMgc3RpbGwgaW4gcHJvZ3Jlc3MgYW5kIHRocm93cyBhbiBlcnJvciBpZiBzby5cbiAgICovXG4gIHByaXZhdGUgdmVyaWZ5U2V0dGluZ3NBcmVVbmxvY2tlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc2F2ZUluUHJvZ3Jlc3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXN5bmMgU2F2ZSBpcyBpbiBwcm9ncmVzcywgdXBkYXRpbmcgc2V0dGluZ3MgaXMgbm90IGFsbG93ZWQuJyk7XG4gICAgfVxuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9leHRlbnNpb25zLWFwaS9zcmMvSW50ZXJuYWwvU2V0dGluZ3NJbXBsLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcblxuaW1wb3J0IHsgRXh0ZW5zaW9uc0ltcGwgfSBmcm9tICcuLi9JbnRlcm5hbC9FeHRlbnNpb25zSW1wbCc7XG5cbi8qKlxuICogSW1wbGVtZW50YXRpb24gb2YgdGhlIGV4dGVybmFsIEV4dGVuc2lvbnMgbmFtZXNwYWNlLlxuICovXG5leHBvcnQgY2xhc3MgRXh0ZW5zaW9ucyBpbXBsZW1lbnRzIENvbnRyYWN0LkV4dGVuc2lvbnMge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBleHRlbnNpb25JbXBsOiBFeHRlbnNpb25zSW1wbCkge1xuICAgIHRoaXMuZXh0ZW5zaW9uSW1wbCA9IGV4dGVuc2lvbkltcGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRhc2hib2FyZENvbnRlbnQoKTogQ29udHJhY3QuRGFzaGJvYXJkQ29udGVudCB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5zaW9uSW1wbC5kYXNoYm9hcmRDb250ZW50O1xuICB9XG5cbiAgcHVibGljIGdldCBlbnZpcm9ubWVudCgpOiBDb250cmFjdC5FbnZpcm9ubWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5zaW9uSW1wbC5lbnZpcm9ubWVudDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2V0dGluZ3MoKTogQ29udHJhY3QuU2V0dGluZ3Mge1xuICAgIHJldHVybiB0aGlzLmV4dGVuc2lvbkltcGwuc2V0dGluZ3M7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHVpKCk6IENvbnRyYWN0LlVJIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0FQSSBjYWxsIG5vdCB5ZXQgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXplQXN5bmMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5zaW9uSW1wbC5pbml0aWFsaXplQXN5bmMoKTtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL05hbWVzcGFjZXMvRXh0ZW5zaW9ucy50c1xuICoqLyIsImltcG9ydCB7IEFwaUV2ZW50SGFuZGxlciB9IGZyb20gJ0B0YWJsZWF1L2FwaS1jb3JlJztcclxuaW1wb3J0IHsgSW50ZXJuYWxBcGlEaXNwYXRjaGVyLCBJbnRlcm5hbEFwaURpc3BhdGNoZXJIb2xkZXIgfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuaW1wb3J0IHsgQWRkSW5BcGlQcmVzTGF5ZXJJbXBsIH0gZnJvbSAnLi9BZGRJbkFwaVByZXNMYXllckltcGwnO1xyXG5pbXBvcnQgeyBEZXNrdG9wQXBpRGlzcGF0Y2hlciB9IGZyb20gJy4vRGVza3RvcEFwaURpc3BhdGNoZXInO1xyXG5pbXBvcnQgeyBpbml0aWFsaXplV2ViQ2hhbm5lbFByZXNMYXllciB9IGZyb20gJy4vUXRXZWJDaGFubmVsSW1wbCc7XHJcblxyXG4vKipcclxuICogV3JhcHBlciBmb3IgYWxsIHRoZSBib290c3RyYXBwaW5nIGxvZ2ljLiBUaGlzIGNvZGUgYXR0ZW1wdHMgdG8gaW5pdGlhbGl6ZSB0aGUgcXQgcHJlcy1sYXllclxyXG4gKiBhcyB3ZWxsIGFzIHRoZSBkZXNrdG9wIGRpc3BhdGNoZXIuIEl0IHRoZW4gYXNzaWducyBpdCB0byB0aGUgZ2xvYmFsIGRlc2t0b3AgZGlzcGF0Y2hlciB0b1xyXG4gKiBiZSBwaWNrZWQgdXAgYnkgdGhlIGFkZC1pbiBleHRlcm5hbCBBcGlcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBkb0Jvb3RzdHJhcCgpOiBQcm9taXNlPEludGVybmFsQXBpRGlzcGF0Y2hlcj4ge1xyXG5cclxuICAvLyBGaXJzdCB3ZSBuZWVkIHRvIGluaXRpYWxpemUgdGhlIHdlYmNoYW5uZWwgcHJlcy1sYXllclxyXG4gIGxldCBkaXNwYXRjaGVyUHJvbWlzZSA9IGluaXRpYWxpemVXZWJDaGFubmVsUHJlc0xheWVyKCkudGhlbjxJbnRlcm5hbEFwaURpc3BhdGNoZXI+KChwcmVzbGF5ZXIpID0+IHtcclxuICAgIGNvbnN0IHByZXNMYXllckFwaSA9IG5ldyBBZGRJbkFwaVByZXNMYXllckltcGwocHJlc2xheWVyKTtcclxuICAgIGlmICghcHJlc0xheWVyQXBpLkFkZEluSW5zdGFuY2VJbmZvLmFkZEluTG9jYXRvclByZXNNb2RlbCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FkZEluSW5zdGFuY2VJbmZvIHVuZGVmaW5lZCcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEluaXRpYWxpemUgdGhlIGFwaUV2ZW50SGFuZGxlciBhbmQgdGhlIGRlc2t0b3BEaXNwYXRjaGVyIHdpdGggaXRcclxuICAgIGNvbnN0IGFwaUV2ZW50SGFuZGxlciA9IG5ldyBBcGlFdmVudEhhbmRsZXIocHJlc0xheWVyQXBpLCBwcmVzTGF5ZXJBcGkuQWRkSW5JbnN0YW5jZUluZm8uYWRkSW5Mb2NhdG9yUHJlc01vZGVsKTtcclxuICAgIGNvbnN0IGRlc2t0b3BEaXNwYXRjaGVyID0gbmV3IERlc2t0b3BBcGlEaXNwYXRjaGVyKGFwaUV2ZW50SGFuZGxlcik7XHJcblxyXG4gICAgcmV0dXJuIGRlc2t0b3BEaXNwYXRjaGVyO1xyXG4gIH0pO1xyXG5cclxuICAvLyBBc3NpZ24gdGhlIGRlc2t0b3AgZGlzcGF0Y2hlciBmb3IgdGhlIG90aGVyIHByb2plY3QgdG8gZmluZCBpdFxyXG4gIEludGVybmFsQXBpRGlzcGF0Y2hlckhvbGRlci5zZXREZXNrdG9wRGlzcGF0Y2hlclByb21pc2UoZGlzcGF0Y2hlclByb21pc2UpO1xyXG5cclxuICByZXR1cm4gZGlzcGF0Y2hlclByb21pc2U7XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL0ZyZWxhcmREZXNrdG9wQm9vdHN0cmFwLnRzXG4gKiovIiwiLyoqXG4gKiBUaGlzIGlzIHlvdXIgbWFpbi4gVGhpcyBpcyB3aGVyZSB5b3UgcmUtZXhwb3J0IGV2ZXJ5dGhpbmcgeW91IHdhbnQgdG8gYmUgcHVibGljbHkgYXZhaWxhYmxlLlxuICpcbiAqIFRoZSBidWlsZCBlbmZvcmNlcyB0aGF0IHRoZSBmaWxlIGhhcyB0aGUgc2FtZSBuYW1lIGFzIHRoZSBnbG9iYWwgdmFyaWFibGUgdGhhdCBpcyBleHBvcnRlZC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL0FwaUV2ZW50SGFuZGxlcic7XG5cbi8vIE5lZWQgdG8gZXhwb3J0IHRoZXNlIHR3byBwcmVzIG1vZGVscyBmb3IgdXNlIGJ5IG90aGVyIHByb2plY3RzXG5leHBvcnQge1xuICBBZGRJbkluc3RhbmNlUHJlc01vZGVsLFxuICBBZGRJbkxvY2F0b3JQcmVzTW9kZWwsXG4gIEFkZEluQm9vdHN0cmFwSW5mb1ByZXNNb2RlbCxcbiAgUHJlc2VudGF0aW9uTW9kZWxcbn0gZnJvbSAnLi4vZ2VuLXNyYy9wcmVzbGF5ZXIvUHJlc01vZGVscyc7XG5leHBvcnQgeyBOb3RpZmljYXRpb25JZCB9IGZyb20gJy4uL2dlbi1zcmMvcHJlc2xheWVyL0V2ZW50cyc7XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9zcmMvQXBpQ29yZS50c1xuICoqLyIsImltcG9ydCB7XG4gIEV4ZWN1dGVQYXJhbWV0ZXJzLFxuICBFeGVjdXRlUmVzcG9uc2UsXG4gIEV4dGVuc2lvbkxvY2F0b3IgYXMgQXBpRXh0ZW5zaW9uTG9jYXRvcixcbiAgTW9kZWwsXG4gIE5vdGlmaWNhdGlvbklkLFxuICBQYXJhbWV0ZXJJZCBhcyBBcGlQYXJhbWV0ZXJJZCxcbiAgVmVyYklkLFxuICBWZXJzaW9uTnVtYmVyLFxufSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xuaW1wb3J0IHsgUHJlc2VudGF0aW9uTGF5ZXIgfSBmcm9tICdAdGFibGVhdS9wcmVzbGF5ZXItYXBpLWNvbnRyYWN0JztcblxuaW1wb3J0IHsgTm90aWZpY2F0aW9uSWQgYXMgUHJlc0xheWVyRXZlbnRJZCB9IGZyb20gJy4uL2dlbi1zcmMvcHJlc2xheWVyL0V2ZW50cyc7XG5pbXBvcnQgeyBQYXJhbWV0ZXJJZCBhcyBQcmVzTGF5ZXJQYXJhbWV0ZXJJZCB9IGZyb20gJy4uL2dlbi1zcmMvcHJlc2xheWVyL1BhcmFtcyc7XG5pbXBvcnQgeyBBZGRJbkxvY2F0b3JQcmVzTW9kZWwsIFByZXNlbnRhdGlvbk1vZGVsIH0gZnJvbSAnLi4vZ2VuLXNyYy9wcmVzbGF5ZXIvUHJlc01vZGVscyc7XG5pbXBvcnQgeyBDb21tYW5kTWFwcGluZ1JlZ2lzdHJ5IH0gZnJvbSAnLi9tYXBwaW5ncy9Db21tYW5kTWFwcGluZ1JlZ2lzdHJ5JztcbmltcG9ydCB7IENvbW1hbmRNYXBwaW5nUmVnaXN0cnlGYWN0b3J5IH0gZnJvbSAnLi9tYXBwaW5ncy9Db21tYW5kTWFwcGluZ1JlZ2lzdHJ5RmFjdG9yeSc7XG5pbXBvcnQgeyBFdmVudE1hcHBpbmdSZWdpc3RyeSwgRXZlbnRNYXBwaW5nUmVnaXN0cnlGYWN0b3J5IH0gZnJvbSAnLi9tYXBwaW5ncy9FdmVudE1hcHBpbmdSZWdpc3RyeUZhY3RvcnknO1xuaW1wb3J0IHtcbiAgQXBpVG9QcmVzTGF5ZXJNYXBwaW5nUmVnaXN0cnksXG4gIFBhcmFtZXRlck1hcHBpbmdSZWdpc3RyeUZhY3RvcnksXG4gIFByZXNMYXllclRvQXBpTWFwcGluZ1JlZ2lzdHJ5LFxufSBmcm9tICcuL21hcHBpbmdzL1BhcmFtZXRlck1hcHBpbmdSZWdpc3RyeUZhY3RvcnknO1xuXG5leHBvcnQgdHlwZSBOb3RpZmljYXRpb25IYW5kbGVyID0gKG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uSWQsIG1vZGVsOiBNb2RlbCkgPT4gdm9pZDtcblxuLyoqXG4gKiBNYWluIGNsYXNzIGZvciB0aGUgYXBpLWNvcmUgcHJvamVjdC4gVGhpcyBjbGFzcyBpcyByZXNwb25zaWJsZSBmb3IgZXhlY3V0aW5nIGNvbWFtbmQgYW5kIG1hcnNoYWxsaW5nIG5vdGlmY2F0aW9uc1xuICogYmV0d2VlbiB0aGUgaW50ZXJuYWwgQXBpIGFuZCB0aGUgcHJlcy1sYXllciBBcGkuIEFmdGVyIGNvbnN0cnVjdGlvbiwgU2V0VmVyc2lvbk51bWJlciBtdXN0IGJlIGNhbGxlZCBpbiBvcmRlciB0b1xuICogdXNlIHRoaXMgY2xhc3NcbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgQXBpRXZlbnRIYW5kbGVyXG4gKi9cbmV4cG9ydCBjbGFzcyBBcGlFdmVudEhhbmRsZXIge1xuICBwcml2YXRlIF9wcmVzTGF5ZXI6IFByZXNlbnRhdGlvbkxheWVyO1xuICBwcml2YXRlIF9wcmVzTGF5ZXJBZGRJbkxvY2F0b3I6IEFkZEluTG9jYXRvclByZXNNb2RlbDtcbiAgcHJpdmF0ZSBfYXBpRXh0ZW5zaW9uTG9jYXRvcjogQXBpRXh0ZW5zaW9uTG9jYXRvcjtcbiAgcHJpdmF0ZSBfZXZlbnRIYW5kbGVyOiBOb3RpZmljYXRpb25IYW5kbGVyO1xuICBwcml2YXRlIF9jb21tYW5kUmVnaXN0cnk6IENvbW1hbmRNYXBwaW5nUmVnaXN0cnk7XG4gIHByaXZhdGUgX2V2ZW50UmVnaXN0cnk6IEV2ZW50TWFwcGluZ1JlZ2lzdHJ5O1xuICBwcml2YXRlIF9hcGlUb1ByZXNMYXllclJlZ2lzdHJ5OiBBcGlUb1ByZXNMYXllck1hcHBpbmdSZWdpc3RyeTtcbiAgcHJpdmF0ZSBfcHJlc0xheWVyVG9BcGlSZWdpc3RyeTogUHJlc0xheWVyVG9BcGlNYXBwaW5nUmVnaXN0cnk7XG4gIHByaXZhdGUgX3ZlcnNpb25OdW1iZXI/OiBWZXJzaW9uTnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEFwaUV2ZW50SGFuZGxlci5cbiAgICogQHBhcmFtIHtQcmVzZW50YXRpb25MYXllcn0gcHJlc0xheWVyIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIHByZXMtbGF5ZXIgQXBpIHRvIHVzZVxuICAgKiBAcGFyYW0ge0FkZEluTG9jYXRvclByZXNNb2RlbH0gYWRkSW5Mb2NhdG9yUHJlc01vZGVsIC0gbG9jYXRvciBmb3IgdGhlIGFkZC1pbiB3aGljaCBpcyBiZWluZyByZWZlcmVuY2VkXG4gICAqIEBtZW1iZXJvZiBBcGlFdmVudEhhbmRsZXJcbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwcmVzTGF5ZXI6IFByZXNlbnRhdGlvbkxheWVyLCBhZGRJbkxvY2F0b3JQcmVzTW9kZWw6IEFkZEluTG9jYXRvclByZXNNb2RlbCkge1xuICAgIHRoaXMuX3ByZXNMYXllciA9IHByZXNMYXllcjtcbiAgICB0aGlzLl9wcmVzTGF5ZXJBZGRJbkxvY2F0b3IgPSBhZGRJbkxvY2F0b3JQcmVzTW9kZWw7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgaW50ZXJuYWwgQXBpIHZlcnNpb24gbnVtYmVyIHdoaWNoIHRoZSBleHRlcm5hbCBsaWJyYXJ5IGlzIGV4cGVjdGluZyB0byB1c2UuIFRoaXMgbXVzdCBiZSBjYWxsZWQgYmVmb3JlXG4gICAqIGFueXRoaW5nIGVsc2UgaW4gb3JkZXIgdG8gcHJvcGVybHkgc2V0IHVwIHRoZSB0cmFuc2xhdGlvbiBsYXllcnMuXG4gICAqXG4gICAqIEBwYXJhbSB7VmVyc2lvbk51bWJlcn0gdmVyc2lvbk51bWJlclxuICAgKiBAbWVtYmVyb2YgQXBpRXZlbnRIYW5kbGVyXG4gICAqL1xuICBwdWJsaWMgc2V0VmVyc2lvbk51bWJlcih2ZXJzaW9uTnVtYmVyOiBWZXJzaW9uTnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fdmVyc2lvbk51bWJlciA9IHZlcnNpb25OdW1iZXI7XG5cbiAgICAvLyBJbml0aWFsaXplIGFsbCBvdXIgcmVnaXN0cmllc1xuICAgIHRoaXMuX2NvbW1hbmRSZWdpc3RyeSA9IENvbW1hbmRNYXBwaW5nUmVnaXN0cnlGYWN0b3J5LmNyZWF0ZUNvbW1hbmRNYXBwaW5nUmVnaXN0cnkodmVyc2lvbk51bWJlcik7XG4gICAgdGhpcy5fYXBpVG9QcmVzTGF5ZXJSZWdpc3RyeSA9IFBhcmFtZXRlck1hcHBpbmdSZWdpc3RyeUZhY3RvcnkuY3JlYXRlQXBpVG9QcmVzTGF5ZXJQYXJhbVJlZ2lzdHJ5KHZlcnNpb25OdW1iZXIpO1xuICAgIHRoaXMuX3ByZXNMYXllclRvQXBpUmVnaXN0cnkgPSBQYXJhbWV0ZXJNYXBwaW5nUmVnaXN0cnlGYWN0b3J5LmNyZWF0ZVByZXNMYXllclRvQXBpUGFyYW1SZWdpc3RyeSh2ZXJzaW9uTnVtYmVyKTtcbiAgICB0aGlzLl9ldmVudFJlZ2lzdHJ5ID0gRXZlbnRNYXBwaW5nUmVnaXN0cnlGYWN0b3J5LmNyZWF0ZUV2ZW50TWFwcGluZ1JlZ2lzdHJ5KHZlcnNpb25OdW1iZXIpO1xuXG4gICAgLy8gQ29udmVydCBvdXIgYWRkSW5Mb2NhdG9yIHRvIHRoZSBBcGkgdmVyc2lvblxuICAgIHRoaXMuX2FwaUV4dGVuc2lvbkxvY2F0b3IgPSB0aGlzLl9wcmVzTGF5ZXJUb0FwaVJlZ2lzdHJ5XG4gICAgICAuZ2V0KFByZXNMYXllclBhcmFtZXRlcklkLkFkZEluTG9jYXRvciwgQXBpUGFyYW1ldGVySWQuRXh0ZW5zaW9uTG9jYXRvcikodGhpcy5fcHJlc0xheWVyQWRkSW5Mb2NhdG9yKSBhcyBBcGlFeHRlbnNpb25Mb2NhdG9yO1xuXG4gICAgZm9yIChjb25zdCBwbEV2ZW50SWQgb2YgT2JqZWN0LmtleXModGhpcy5fZXZlbnRSZWdpc3RyeSkpIHtcbiAgICAgIC8vIFJlZ2lzdGVyIGZvciBhbGwgbm90aWZpY2F0aW9ucyB3ZSBrbm93IGFib3V0IGFuZCBiaW5kIHRoZSBldmVudCB0eXBlIHRvIHRoZSBjYWxsYmFja1xuICAgICAgdGhpcy5fcHJlc0xheWVyLnJlZ2lzdGVyTm90aWZpY2F0aW9uSGFuZGxlcihwbEV2ZW50SWQsIHRoaXMub25QcmVzTGF5ZXJOb3RpZmljYXRpb24uYmluZCh0aGlzLCBwbEV2ZW50SWQpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBhbiBldmVudCBoYW5kbGVyIGZ1bmN0aW9uIHRvIGJlIG5vdGlmaWVkIHdoZW4gQXBpIGV2ZW50cyBjb21lIGluLiBPbmx5IGEgc2luZ2xlIHJlZ2lzdHJhdGlvbiBpcyBzdXBwb3J0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7Tm90aWZpY2F0aW9uSGFuZGxlcn0gZXZlbnRIYW5kbGVyXG4gICAqIEBtZW1iZXJvZiBBcGlFdmVudEhhbmRsZXJcbiAgICovXG4gIHB1YmxpYyBzZXRFdmVudEhhbmRsZXIoZXZlbnRIYW5kbGVyOiBOb3RpZmljYXRpb25IYW5kbGVyKTogdm9pZCB7XG4gICAgdGhpcy5fZXZlbnRIYW5kbGVyID0gZXZlbnRIYW5kbGVyO1xuXG4gICAgLy8gVE9ETyAtIFJlZ2lzdGVyIGZvciBwcmVzIGxheWVyIGV2ZW50c1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIHRoZSByZXF1ZXN0ZWQgQXBpIGNvbW1hbmQgYnkgY29udmVydGluZyB0aGUgcGFyYW1ldGVycywgcnVubmluZyB0aGUgY29tbWFuZCBhZ2FpbnN0IHRoZSBwcmVzLWxheWVyLFxuICAgKiB0aGVuIHByb2Nlc3NpbmcgdGhlIHJlc3VsdCBiYWNrIGludG8gYSBmb3JtYXQgdGhlIEFwaSBjYW4gdW5kZXJzdGFuZFxuICAgKlxuICAgKiBAcGFyYW0ge1ZlcmJJZH0gdmVyYlxuICAgKiBAcGFyYW0ge0V4ZWN1dGVQYXJhbWV0ZXJzfSBwYXJhbWV0ZXJzXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEV4ZWN1dGVSZXNwb25zZT59XG4gICAqIEBtZW1iZXJvZiBBcGlFdmVudEhhbmRsZXJcbiAgICovXG4gIHB1YmxpYyBleGVjdXRlKHZlcmI6IFZlcmJJZCwgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMpOiBQcm9taXNlPEV4ZWN1dGVSZXNwb25zZT4ge1xuICAgIHRoaXMuYXNzZXJ0SW5pdGlhbGl6ZWQoKTtcblxuICAgIGNvbnN0IGNvbW1hbmQgPSB0aGlzLl9jb21tYW5kUmVnaXN0cnkuZ2V0Q29tbWFuZCh2ZXJiKTtcbiAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVycyB8fCB7fTtcblxuICAgIC8vIEF1Z21lbnQgdGhlIGNvbW1hbmQgd2l0aCB0aGUgbG9jYXRvciBpZiBpdCdzIG5lZWRlZFxuICAgIGlmIChjb21tYW5kLm5lZWRzQWRkSW5Mb2NhdG9yKSB7XG4gICAgICBwYXJhbWV0ZXJzW0FwaVBhcmFtZXRlcklkLkV4dGVuc2lvbkxvY2F0b3JdID0gdGhpcy5fYXBpRXh0ZW5zaW9uTG9jYXRvcjtcbiAgICB9XG5cbiAgICBjb25zdCBjb21tYW5kc1BhcmFtcyA9IGNvbW1hbmQuY3JlYXRlUGFyYW1zKHBhcmFtZXRlcnMsIHRoaXMuX2FwaVRvUHJlc0xheWVyUmVnaXN0cnkpO1xuICAgIHJldHVybiB0aGlzLl9wcmVzTGF5ZXIuaW52b2tlQ29tbWFuZDx7W2RvY1BhcmFtSWQ6IHN0cmluZ106IG9iamVjdH0+KGNvbW1hbmQubmFtZXNwYWNlLCBjb21tYW5kLmNvbW1hbmRJZCwgY29tbWFuZHNQYXJhbXMpXG4gICAgLnRoZW48RXhlY3V0ZVJlc3BvbnNlPigoY29tbWFuZFJlc3VsdCkgPT4ge1xuICAgICAgY29uc3QgY29udmVydGVkUmVzdWx0ID0gY29tbWFuZC5Qcm9jZXNzUmVzdWx0KGNvbW1hbmRSZXN1bHQsIHRoaXMuX3ByZXNMYXllclRvQXBpUmVnaXN0cnkpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVzdWx0OiBjb252ZXJ0ZWRSZXN1bHRcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCB0byBjaGVjayB0aGF0IHRoaW5ncyBhcmUgaW5pdGlhbGl6ZWQgYXMgZXhwZWN0ZWQuIFRocm93cyBpZiBpbml0aWFsaXphdGlvbiBub3QgY29tcGxldGVcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQG1lbWJlcm9mIEFwaUV2ZW50SGFuZGxlclxuICAgKi9cbiAgcHJpdmF0ZSBhc3NlcnRJbml0aWFsaXplZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3ZlcnNpb25OdW1iZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVmVyc2lvbk51bWJlciBub3QgeWV0IGNvbmZpZ3VyZWQuIENhbm5vdCB0YWtlIGFueSBhY3Rpb25zJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGEgbmV3IGV2ZW50IG5vdGlmaWNhdGlvbiBjb21lcyBpbiBmcm9tIHRoZSBwcmVzZW50YXRpb24gbGF5ZXJcbiAgICpcbiAgICogQHBhcmFtIGV2ZW50SWQgVGhlIHByZXMgbGF5ZXIgZXZlbnQgaWRcbiAgICogQHBhcmFtIHByZXNNb2RlbCBUaGUgcHJlcyBtb2RlbCB0aGF0IGlzIGluY2x1ZGVkIHdpdGggdGhlIGV2ZW50XG4gICAqL1xuICBwcml2YXRlIG9uUHJlc0xheWVyTm90aWZpY2F0aW9uKGV2ZW50SWQ6IFByZXNMYXllckV2ZW50SWQsIHByZXNNb2RlbDogUHJlc2VudGF0aW9uTW9kZWwpOiB2b2lkIHtcbiAgICAvLyBGaXJzdCBsb29rIHVwIHRoaXMgZXZlbnRJZCBpbiBvdXIgcmVnaXN0cnkgYW5kIGNvbnZlcnQgdG8gcHJlc01vZGVsXG4gICAgY29uc3QgZXZlbnRNYXBwaW5nID0gdGhpcy5fZXZlbnRSZWdpc3RyeVtldmVudElkXTtcbiAgICBjb25zdCBhcGlNb2RlbCA9IGV2ZW50TWFwcGluZy5jb252ZXJ0ZXIocHJlc01vZGVsKTtcblxuICAgIGlmICh0aGlzLl9ldmVudEhhbmRsZXIpIHtcbiAgICAgIHRoaXMuX2V2ZW50SGFuZGxlcihldmVudE1hcHBpbmcuYXBpSWQsIGFwaU1vZGVsKTtcbiAgICB9XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1jb3JlL3NyYy9BcGlFdmVudEhhbmRsZXIudHNcbiAqKi8iLCIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy9cbi8vIFRoaXMgZmlsZSBpcyB0aGUgY29weXJpZ2h0ZWQgcHJvcGVydHkgb2YgVGFibGVhdSBTb2Z0d2FyZSBhbmQgaXMgcHJvdGVjdGVkXG4vLyBieSByZWdpc3RlcmVkIHBhdGVudHMgYW5kIG90aGVyIGFwcGxpY2FibGUgVS5TLiBhbmQgaW50ZXJuYXRpb25hbCBsYXdzIGFuZFxuLy8gcmVndWxhdGlvbnMuXG4vL1xuLy8gVW5saWNlbnNlZCB1c2Ugb2YgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBpcyBwcm9oaWJpdGVkLiBQbGVhc2UgcmVmZXIgdG9cbi8vIHRoZSBOT1RJQ0VTLnR4dCBmaWxlIGZvciBmdXJ0aGVyIGRldGFpbHMuXG4vL1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFdBUk5JTkc6IENvbXB1dGVyIGdlbmVyYXRlZCBmaWxlLiAgRG8gbm90IGhhbmQgbW9kaWZ5LlxuLy8gREVQRU5EUyBPTjogWycuLi90eXBlc2NyaXB0L2pzLWFwaS9hcGktY29yZS9ub2RlX21vZHVsZXMvQHRhYmxlYXUvcHJlc2xheWVyLWNvZGVnZW4tdHlwZXNjcmlwdC90ZW1wbGF0ZXMvcGFyYW1zLXRzLnRlbXBsYXRlJywgdScuLi90eXBlc2NyaXB0L2pzLWFwaS9hcGktY29yZS90ZW1wLXByZXMtbGF5ZXIvYWxsLXBhcmFtcy5kYXRhJ11cblxuZXhwb3J0IGVudW0gUGFyYW1ldGVySWQge1xuXG4gIC8vIERQSV9JbnRlZ2VyUkxFLCBoYXZpbmcgdHlwZSBpbnRbXVxuICBJbnRlZ2VyUkxFID0gJ2ludFJsZScsXG5cbiAgLy8gRFBJX1Vuc2lnbmVkSW50ZWdlclJMRSwgaGF2aW5nIHR5cGUgdWludFtdXG4gIFVuc2lnbmVkSW50ZWdlclJMRSA9ICd1aW50UmxlJyxcblxuICAvLyBEUElfRmxvYXRSTEUsIGhhdmluZyB0eXBlIGZsb2F0W11cbiAgRmxvYXRSTEUgPSAnZmxvYXRSbGUnLFxuXG4gIC8vIERQSV9QYXJhbWV0ZXJJRCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFBhcmFtZXRlcklEID0gJ3BhcmFtVHlwZScsXG5cbiAgLy8gRFBJX0FsbG93Q3VzdG9tRGF0YWJhc2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgQWxsb3dDdXN0b21EYXRhYmFzZSA9ICdhbGxvd0N1c3RvbURhdGFiYXNlJyxcblxuICAvLyBEUElfQWxsb3dDdXN0b21TY2hlbWEsIGhhdmluZyB0eXBlIGJvb2xcbiAgQWxsb3dDdXN0b21TY2hlbWEgPSAnYWxsb3dDdXN0b21TY2hlbWEnLFxuXG4gIC8vIERQSV9BbGxvd0N1c3RvbVNRTCwgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd0N1c3RvbVNRTCA9ICdhbGxvd0N1c3RvbVNxbCcsXG5cbiAgLy8gRFBJX0FsbG93Q3VzdG9tU1FMV2l0aG91dFNjaGVtYSwgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd0N1c3RvbVNRTFdpdGhvdXRTY2hlbWEgPSAnYWxsb3dDdXN0b21TcWxXaXRob3V0U2NoZW1hJyxcblxuICAvLyBEUElfQWxsb3dQcmV2aWV3RGF0YSwgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd1ByZXZpZXdEYXRhID0gJ2FsbG93UHJldmlld0RhdGEnLFxuXG4gIC8vIERQSV9BbGxvd1N0b3JlZFByb2MsIGhhdmluZyB0eXBlIGJvb2xcbiAgQWxsb3dTdG9yZWRQcm9jID0gJ2FsbG93U3RvcmVkUHJvY2VkdXJlJyxcblxuICAvLyBEUElfQWxsb3dVbmlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd1VuaW9uID0gJ2FsbG93VW5pb24nLFxuXG4gIC8vIERQSV9BcmVWYXJpYWJsZXNWaXNpYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gIEFyZVZhcmlhYmxlc1Zpc2libGUgPSAnYXJlVmFyaWFibGVzVmlzaWJsZScsXG5cbiAgLy8gRFBJX0F0dHJMZWdhY3lDb25uZWN0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIEF0dHJMZWdhY3lDb25uZWN0aW9uID0gJ3dpZGdldEF0dHJMZWdhY3knLFxuXG4gIC8vIERQSV9BdHRyUmVhZFVuY29tbWl0dGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIEF0dHJSZWFkVW5jb21taXR0ZWQgPSAnd2lkZ2V0QXR0clJlYWRVbmNvbW1pdHRlZERhdGEnLFxuXG4gIC8vIERQSV9BdHRyUmVxdWlyZVNTTCwgaGF2aW5nIHR5cGUgYm9vbFxuICBBdHRyUmVxdWlyZVNTTCA9ICd3aWRnZXRBdHRyUmVxdWlyZVNzbCcsXG5cbiAgLy8gRFBJX0F0dHJSZXF1aXJlRW5jcnlwdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBBdHRyUmVxdWlyZUVuY3J5cHRpb24gPSAnd2lkZ2V0QXR0clJlcXVpcmVFbmNyeXB0aW9uJyxcblxuICAvLyBEUElfQm9vbCwgaGF2aW5nIHR5cGUgYm9vbFxuICBCb29sID0gJ2Jvb2wnLFxuXG4gIC8vIERQSV9DYW5QYXJ0aXRpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2FuUGFydGl0aW9uID0gJ2NhblBhcnRpdGlvbicsXG5cbiAgLy8gRFBJX0NhblJlY29tbWVuZERhdGFTb3VyY2VzLCBoYXZpbmcgdHlwZSBib29sXG4gIENhblJlY29tbWVuZERhdGFTb3VyY2VzID0gJ2NhblJlY29tbWVuZERhdGFzb3VyY2VzJyxcblxuICAvLyBEUElfQ2FuUmVjb21tZW5kVGFibGVzLCBoYXZpbmcgdHlwZSBib29sXG4gIENhblJlY29tbWVuZFRhYmxlcyA9ICdjYW5SZWNvbW1lbmRUYWJsZXMnLFxuXG4gIC8vIERQSV9DaGVja1Blcm1pc3Npb25zLCBoYXZpbmcgdHlwZSBib29sXG4gIENoZWNrUGVybWlzc2lvbnMgPSAnY2hlY2tQZXJtaXNzaW9ucycsXG5cbiAgLy8gRFBJX0RhdGFiYXNlTmFtZU9wdGlvbmFsLCBoYXZpbmcgdHlwZSBib29sXG4gIERhdGFiYXNlTmFtZU9wdGlvbmFsID0gJ2RhdGFiYXNlTmFtZU9wdGlvbmFsJyxcblxuICAvLyBEUElfRGF0YWJhc2VXSE9wdGlvbmFsLCBoYXZpbmcgdHlwZSBib29sXG4gIERhdGFiYXNlV0hPcHRpb25hbCA9ICdkYXRhYmFzZVdhcmVob3VzZU9wdGlvbmFsJyxcblxuICAvLyBEUElfRG9WYWxpZGF0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIERvVmFsaWRhdGlvbiA9ICdkb1ZhbGlkYXRpb24nLFxuXG4gIC8vIERQSV9Eb25lTG9hZGluZ0FsbFNoZWV0cywgaGF2aW5nIHR5cGUgYm9vbFxuICBEb25lTG9hZGluZ0FsbFNoZWV0cyA9ICdnb29nbGVTaGVldERvbmVMb2FkaW5nJyxcblxuICAvLyBEUElfR0FCYXNpY0l0ZW1zRW5hYmxlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBHQUJhc2ljSXRlbXNFbmFibGVkID0gJ2dhQmFzaWNJdGVtc0VuYWJsZWQnLFxuXG4gIC8vIERQSV9HQURpbWVuc2lvbk1lYXN1cmVzRW5hYmxlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBHQURpbWVuc2lvbk1lYXN1cmVzRW5hYmxlZCA9ICdnYURpbWVuc2lvbnNNZWFzdXJlc0VuYWJsZWQnLFxuXG4gIC8vIERQSV9HQUZpbHRlcnNFbmFibGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIEdBRmlsdGVyc0VuYWJsZWQgPSAnZ2FGaWx0ZXJzRW5hYmxlZCcsXG5cbiAgLy8gRFBJX0hhc0RhdGFiYXNlLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc0RhdGFiYXNlID0gJ2hhc0RhdGFiYXNlJyxcblxuICAvLyBEUElfSGFzRGF0YUxvc3MsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzRGF0YUxvc3MgPSAnaGFzRGF0YUxvc3MnLFxuXG4gIC8vIERQSV9IYXNGYXN0TWV0YWRhdGEsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzRmFzdE1ldGFkYXRhID0gJ2hhc0Zhc3RNZXRhZGF0YScsXG5cbiAgLy8gRFBJX0hhc05ld2x5RGlzY292ZXJlZFNjaGVtYSwgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNOZXdseURpc2NvdmVyZWRTY2hlbWEgPSAnaGFzTmV3bHlEaXNjb3ZlcmVkU2NoZW1hJyxcblxuICAvLyBEUElfSGFzUGVybWlzc2lvbnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzUGVybWlzc2lvbnMgPSAnaGFzUGVybWlzc2lvbnMnLFxuXG4gIC8vIERQSV9IYXNTY2hlbWEsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzU2NoZW1hID0gJ2hhc1NjaGVtYScsXG5cbiAgLy8gRFBJX0hhc1NjaGVtYUNvdW50LCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc1NjaGVtYUNvdW50ID0gJ2hhc1NjaGVtYUNvdW50JyxcblxuICAvLyBEUElfSGFzVGFibGVzLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc1RhYmxlcyA9ICdoYXNUYWJsZXMnLFxuXG4gIC8vIERQSV9IYXNVbmNvbW1pdHRlZENoYW5nZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzVW5jb21taXR0ZWRDaGFuZ2VzID0gJ2hhc1VuY29tbWl0dGVkQ2hhbmdlcycsXG5cbiAgLy8gRFBJX0hhc1dhcmVob3VzZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNXYXJlaG91c2UgPSAnaGFzV2FyZWhvdXNlJyxcblxuICAvLyBEUElfSGFzV2FybmluZywgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNXYXJuaW5nID0gJ2hhc1dhcm5pbmcnLFxuXG4gIC8vIERQSV9Jc0NhbGN1bGF0ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNDYWxjdWxhdGVkID0gJ2lzQ2FsY3VsYXRlZCcsXG5cbiAgLy8gRFBJX0lzQ29ubmVjdGVkVG9EYXRhU291cmNlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQ29ubmVjdGVkVG9EYXRhU291cmNlID0gJ2lzQ29ubmVjdGVkRGF0YXNvdXJjZScsXG5cbiAgLy8gRFBJX0lzRGlzYWJsZWREYXRhQ29ubmVjdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0Rpc2FibGVkRGF0YUNvbm5lY3Rpb24gPSAnaXNEaXNhYmxlZERhdGFDb25uZWN0aW9uJyxcblxuICAvLyBEUElfSXNFZGl0YWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0VkaXRhYmxlID0gJ2lzRWRpdGFibGUnLFxuXG4gIC8vIERQSV9Jc0VuYWJsZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNFbmFibGVkID0gJ2lzRW5hYmxlZCcsXG5cbiAgLy8gRFBJX0lzRmluaXNoZWRDb25uZWN0aW5nLCBoYXZpbmcgdHlwZSBib29sXG4gIElzRmluaXNoZWRDb25uZWN0aW5nID0gJ2lzRmluaXNoZWRDb25uZWN0aW5nJyxcblxuICAvLyBEUElfSXNIaWRkZW4sIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNIaWRkZW4gPSAnaXNIaWRkZW4nLFxuXG4gIC8vIERQSV9Jc011bHRpVGFibGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNNdWx0aVRhYmxlID0gJ2lzTXVsdGlUYWJsZScsXG5cbiAgLy8gRFBJX0lzTmV3Q3VzdG9tU1FMLCBoYXZpbmcgdHlwZSBib29sXG4gIElzTmV3Q3VzdG9tU1FMID0gJ2lzTmV3Q3VzdG9tU3FsJyxcblxuICAvLyBEUElfSXNOZXdEYXRhU291cmNlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzTmV3RGF0YVNvdXJjZSA9ICdpc05ld0RhdGFTcmMnLFxuXG4gIC8vIERQSV9Jc1B1Ymxpc2hlZEZlZGVyYXRlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1B1Ymxpc2hlZEZlZGVyYXRlZCA9ICdpc1B1Ymxpc2hlZEZlZGVyYXRlZCcsXG5cbiAgLy8gRFBJX0lzU2FtcGxlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1NhbXBsZWQgPSAnaXNTYW1wbGVkJyxcblxuICAvLyBEUElfSXNTY2hlbWFNZW1iZXJOZXdseURpc2NvdmVyZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNTY2hlbWFNZW1iZXJOZXdseURpc2NvdmVyZWQgPSAnaXNTY2hlbWFNZW1iZXJOZXdseURpc2NvdmVyZWQnLFxuXG4gIC8vIERQSV9Jc1Nsb3dGYXN0LCBoYXZpbmcgdHlwZSBib29sXG4gIElzU2xvd0Zhc3QgPSAnaXNTbG93ZmFzdCcsXG5cbiAgLy8gRFBJX0lzU3VwcG9ydGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzU3VwcG9ydGVkID0gJ2lzU3VwcG9ydGVkJyxcblxuICAvLyBEUElfSXNUYWJsZVNlbGVjdGlvblZpc2libGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNUYWJsZVNlbGVjdGlvblZpc2libGUgPSAnaXNUYWJsZVNlbGVjdGlvblZpc2libGUnLFxuXG4gIC8vIERQSV9Jc1RhYmxlYXVTZXJ2ZXJEYXRhc291cmNlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzVGFibGVhdVNlcnZlckRhdGFzb3VyY2UgPSAnaXNUYWJsZWF1U2VydmVyRGF0YXNvdXJjZScsXG5cbiAgLy8gRFBJX0lzVGFibGVhdVNlcnZlckRhdGFzb3VyY2VDb25uZWN0YWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1RhYmxlYXVTZXJ2ZXJEYXRhc291cmNlQ29ubmVjdGFibGUgPSAnaXNUYWJsZWF1U2VydmVyRGF0YXNvdXJjZUNvbm5lY3RhYmxlJyxcblxuICAvLyBEUElfSXNUYWJsZWF1U2VydmVyRGF0YXNvdXJjZURvd25sb2FkYWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1RhYmxlYXVTZXJ2ZXJEYXRhc291cmNlRG93bmxvYWRhYmxlID0gJ2lzVGFibGVhdVNlcnZlckRhdGFzb3VyY2VEb3dubG9hZGFibGUnLFxuXG4gIC8vIERQSV9Jc1Zpc2libGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNWaXNpYmxlID0gJ2lzVmlzaWJsZScsXG5cbiAgLy8gRFBJX05lZWRGbGF0dGVuLCBoYXZpbmcgdHlwZSBib29sXG4gIE5lZWRGbGF0dGVuID0gJ25lZWRGbGF0dGVuJyxcblxuICAvLyBEUElfU1NMUmVxdWlyZXNDZXJ0aWZpY2F0ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBTU0xSZXF1aXJlc0NlcnRpZmljYXRlID0gJ3NzbFJlcXVpcmVzQ2VydGlmaWNhdGUnLFxuXG4gIC8vIERQSV9TY2hlbWFPcHRpb25hbCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTY2hlbWFPcHRpb25hbCA9ICdzY2hlbWFPcHRpb25hbCcsXG5cbiAgLy8gRFBJX1NlcnZpY2VOYW1lT3B0aW9uYWwsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2VydmljZU5hbWVPcHRpb25hbCA9ICdzZXJ2aWNlTmFtZU9wdGlvbmFsJyxcblxuICAvLyBEUElfU2hvdWxkV2FybkZvckNyb3NzU2NoZW1hSm9pbnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvdWxkV2FybkZvckNyb3NzU2NoZW1hSm9pbnMgPSAnc2hvdWxkV2FybkNyb3NzU2NoZW1hSm9pbnMnLFxuXG4gIC8vIERQSV9TaG93QnJvd3NlQnV0dG9uLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dCcm93c2VCdXR0b24gPSAnc2hvd0Jyb3dzZUJ1dHRvbicsXG5cbiAgLy8gRFBJX1Nob3dDb25uZWN0aW9uUHJvbXB0LCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dDb25uZWN0aW9uUHJvbXB0ID0gJ3Nob3dDb25uZWN0aW9uUHJvbXB0JyxcblxuICAvLyBEUElfU2hvd0RCQnJvd3NlQnV0dG9uLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dEQkJyb3dzZUJ1dHRvbiA9ICdzaG93RGJCcm93c2VCdXR0b24nLFxuXG4gIC8vIERQSV9TaG93REJOYW1lUHJvbXB0LCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dEQk5hbWVQcm9tcHQgPSAnc2hvd0RiUHJvbXB0JyxcblxuICAvLyBEUElfU2hvd0RCV0hOYW1lUHJvbXB0LCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dEQldITmFtZVByb21wdCA9ICdzaG93RGJ3aFByb21wdCcsXG5cbiAgLy8gRFBJX1Nob3dJbXBvcnRTU0xDZXJ0TGFiZWwsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd0ltcG9ydFNTTENlcnRMYWJlbCA9ICdzaG93SW1wb3J0U3NsY2VydExhYmVsJyxcblxuICAvLyBEUElfU2hvd1BvcnRQcm9tcHQsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1BvcnRQcm9tcHQgPSAnc2hvd1BvcnRQcm9tcHQnLFxuXG4gIC8vIERQSV9TaG93U1NMQ2hlY2tib3gsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1NTTENoZWNrYm94ID0gJ3Nob3dTc2xDaGVja2JveCcsXG5cbiAgLy8gRFBJX1Nob3dFbmNyeXB0aW9uQ2hlY2tib3gsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd0VuY3J5cHRpb25DaGVja2JveCA9ICdzaG93RW5jcnlwdGlvbkNoZWNrYm94JyxcblxuICAvLyBEUElfU2hvd1NlcnZlck5hbWVQcm9tcHQsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1NlcnZlck5hbWVQcm9tcHQgPSAnc2hvd1NlcnZlclByb21wdCcsXG5cbiAgLy8gRFBJX1Nob3dTZXJ2aWNlTmFtZVByb21wdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93U2VydmljZU5hbWVQcm9tcHQgPSAnc2hvd1NlcnZpY2VQcm9tcHQnLFxuXG4gIC8vIERQSV9TaG93VW5jb21taXR0ZWREYXRhQ2hlY2tib3gsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1VuY29tbWl0dGVkRGF0YUNoZWNrYm94ID0gJ3Nob3dVbmNvbW1pdHRlZERhdGFDaGVja2JveCcsXG5cbiAgLy8gRFBJX1N1cHBvcnRzR2VuZXJpY0F1dGgsIGhhdmluZyB0eXBlIGJvb2xcbiAgU3VwcG9ydHNHZW5lcmljQXV0aCA9ICdzdXBwb3J0c0dlbmVyaWNBdXRoJyxcblxuICAvLyBEUElfVGFibGVhdVNlcnZlckZldGNoQXNjZW5kaW5nLCBoYXZpbmcgdHlwZSBib29sXG4gIFRhYmxlYXVTZXJ2ZXJGZXRjaEFzY2VuZGluZyA9ICd0YWJsZWF1U2VydmVyRmV0Y2hBc2NlbmRpbmcnLFxuXG4gIC8vIERQSV9Vc2VzUmFkaW9CdXR0b24sIGhhdmluZyB0eXBlIGJvb2xcbiAgVXNlc1JhZGlvQnV0dG9uID0gJ3VzZXNSYWRpb0J1dHRvbicsXG5cbiAgLy8gRFBJX0JpZ1F1ZXJ5TGVnYWN5U1FMQ2hlY2tTdGF0dXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgQmlnUXVlcnlMZWdhY3lTUUxDaGVja1N0YXR1cyA9ICdkYXRhc291cmNlQmlncXVlcnlMZWdhY3lTcWxDaGVja1N0YXR1cycsXG5cbiAgLy8gRFBJX0hhc0JpZ1F1ZXJ5TGVnYWN5U1FMQ2hlY2ssIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzQmlnUXVlcnlMZWdhY3lTUUxDaGVjayA9ICdkYXRhc291cmNlQmlncXVlcnlMZWdhY3lTcWxDaGVjaycsXG5cbiAgLy8gRFBJX0F1dG9GZXRjaExpbWl0LCBoYXZpbmcgdHlwZSBpbnRcbiAgQXV0b0ZldGNoTGltaXQgPSAnYXV0b0ZldGNoTGltaXQnLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uVHlwZSwgaGF2aW5nIHR5cGUgaW50XG4gIENvbm5lY3Rpb25UeXBlID0gJ2Nvbm5lY3Rpb25UeXBlJyxcblxuICAvLyBEUElfSWNvbklkLCBoYXZpbmcgdHlwZSBpbnRcbiAgSWNvbklkID0gJ2ljb25JZCcsXG5cbiAgLy8gRFBJX1NlbGVjdGVkQ2F0YWxvZ0luZGV4LCBoYXZpbmcgdHlwZSBpbnRcbiAgU2VsZWN0ZWRDYXRhbG9nSW5kZXggPSAnc2VsZWN0ZWRDYXRhbG9nSW5kZXgnLFxuXG4gIC8vIERQSV9TZWxlY3RlZEN1YmVJbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gIFNlbGVjdGVkQ3ViZUluZGV4ID0gJ3NlbGVjdGVkQ3ViZUluZGV4JyxcblxuICAvLyBEUElfU2VsZWN0ZWRHQUFjY291bnRJbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gIFNlbGVjdGVkR0FBY2NvdW50SW5kZXggPSAnc2VsZWN0ZWRHYUFjY291bnRJbmRleCcsXG5cbiAgLy8gRFBJX1NlbGVjdGVkR0FNZWFzdXJlU2V0SW5kZXgsIGhhdmluZyB0eXBlIGludFxuICBTZWxlY3RlZEdBTWVhc3VyZVNldEluZGV4ID0gJ3NlbGVjdGVkR2FNZWFzdXJlU2V0SW5kZXgnLFxuXG4gIC8vIERQSV9TZWxlY3RlZEdBUHJvcGVydHlJbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gIFNlbGVjdGVkR0FQcm9wZXJ0eUluZGV4ID0gJ3NlbGVjdGVkR2FQcm9wZXJ0eUluZGV4JyxcblxuICAvLyBEUElfU2VsZWN0ZWRHQVNlZ21lbnRJbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gIFNlbGVjdGVkR0FTZWdtZW50SW5kZXggPSAnc2VsZWN0ZWRHYVNlZ21lbnRJbmRleCcsXG5cbiAgLy8gRFBJX1NlbGVjdGVkR0FWaWV3SW5kZXgsIGhhdmluZyB0eXBlIGludFxuICBTZWxlY3RlZEdBVmlld0luZGV4ID0gJ3NlbGVjdGVkR2FWaWV3SW5kZXgnLFxuXG4gIC8vIERQSV9TZWxlY3RlZEdvb2dsZVNoZWV0SW5kZXgsIGhhdmluZyB0eXBlIGludFxuICBTZWxlY3RlZEdvb2dsZVNoZWV0SW5kZXggPSAnc2VsZWN0ZWRHb29nbGVTaGVldEluZGV4JyxcblxuICAvLyBEUElfU2VsZWN0ZWRPcHRpb25JbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gIFNlbGVjdGVkT3B0aW9uSW5kZXggPSAnc2VsZWN0ZWRPcHRpb25JbmRleCcsXG5cbiAgLy8gRFBJX1Nsb3dNZXRhZGF0YUNvdW50LCBoYXZpbmcgdHlwZSBpbnRcbiAgU2xvd01ldGFkYXRhQ291bnQgPSAnc2xvd01ldGFkYXRhQ291bnQnLFxuXG4gIC8vIERQSV9UYWJsZWF1U2VydmVyRmV0Y2hTb3J0QnksIGhhdmluZyB0eXBlIGludFxuICBUYWJsZWF1U2VydmVyRmV0Y2hTb3J0QnkgPSAndGFibGVhdVNlcnZlckZldGNoU29ydCcsXG5cbiAgLy8gRFBJX0FjdHVhbFBhcmFtZXRlck9yZGluYWwsIGhhdmluZyB0eXBlIHVpbnRcbiAgQWN0dWFsUGFyYW1ldGVyT3JkaW5hbCA9ICdhY3R1YWxQYXJhbWV0ZXJPcmRpbmFsJyxcblxuICAvLyBEUElfQWN0dWFsUGFyYW1ldGVyVHlwZSwgaGF2aW5nIHR5cGUgdWludFxuICBBY3R1YWxQYXJhbWV0ZXJUeXBlID0gJ2FjdHVhbFBhcmFtZXRlclR5cGUnLFxuXG4gIC8vIERQSV9DaGFyU2V0SUQsIGhhdmluZyB0eXBlIHVpbnRcbiAgQ2hhclNldElEID0gJ2NoYXJzZXRJZCcsXG5cbiAgLy8gRFBJX0RhdGFTb3VyY2VPcmRpbmFsLCBoYXZpbmcgdHlwZSB1aW50XG4gIERhdGFTb3VyY2VPcmRpbmFsID0gJ2RhdGFzb3VyY2VPcmRpbmFsJyxcblxuICAvLyBEUElfRmlsdGVyQ291bnQsIGhhdmluZyB0eXBlIHVpbnRcbiAgRmlsdGVyQ291bnQgPSAnZmlsdGVyQ291bnQnLFxuXG4gIC8vIERQSV9WYXJpYWJsZXNDb3VudCwgaGF2aW5nIHR5cGUgdWludFxuICBWYXJpYWJsZXNDb3VudCA9ICd2YXJpYWJsZXNDb3VudCcsXG5cbiAgLy8gRFBJX0FjdHVhbFBhcmFtZXRlckRpc3BsYXlOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQWN0dWFsUGFyYW1ldGVyRGlzcGxheU5hbWUgPSAnYWN0dWFsUGFyYW1ldGVyRGlzcGxheU5hbWUnLFxuXG4gIC8vIERQSV9BY3R1YWxQYXJhbWV0ZXJOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQWN0dWFsUGFyYW1ldGVyTmFtZSA9ICdhY3R1YWxQYXJhbWV0ZXJOYW1lJyxcblxuICAvLyBEUElfQWN0dWFsUGFyYW1ldGVyVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBY3R1YWxQYXJhbWV0ZXJWYWx1ZSA9ICdhY3R1YWxQYXJhbWV0ZXJWYWx1ZScsXG5cbiAgLy8gRFBJX0F0dHJBUElWZXJzaW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXR0ckFQSVZlcnNpb24gPSAnYXR0ckFwaVZlcnNpb24nLFxuXG4gIC8vIERQSV9BdHRyQXV0aFR5cGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBdHRyQXV0aFR5cGUgPSAnd2lkZ2V0QXR0ckF1dGh0eXBlJyxcblxuICAvLyBEUElfQXR0ckNvbm5lY3Rpb25EYXRhLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXR0ckNvbm5lY3Rpb25EYXRhID0gJ2F0dHJDb25uZWN0aW9uRGF0YScsXG5cbiAgLy8gRFBJX0F0dHJDb25uZWN0aW9uTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJDb25uZWN0aW9uTmFtZSA9ICdhdHRyQ29ubmVjdGlvbk5hbWUnLFxuXG4gIC8vIERQSV9BdHRyQ29ubmVjdGlvblR5cGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBdHRyQ29ubmVjdGlvblR5cGUgPSAnd2lkZ2V0QXR0ckNvbm5lY3Rpb250eXBlJyxcblxuICAvLyBEUElfQXR0ckNvbm5lY3Rpb25VUkwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBdHRyQ29ubmVjdGlvblVSTCA9ICdhdHRyQ29ubmVjdGlvblVybCcsXG5cbiAgLy8gRFBJX0F0dHJDdWJlU3BlY2lmaWNhdGlvbklkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXR0ckN1YmVTcGVjaWZpY2F0aW9uSWQgPSAnd2lkZ2V0QXR0ckN1YmVTcGVjaWZpY2F0aW9uSWQnLFxuXG4gIC8vIERQSV9BdHRyQ3ViZVNwZWNpZmljYXRpb25WYWx1ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJDdWJlU3BlY2lmaWNhdGlvblZhbHVlID0gJ3dpZGdldEF0dHJDdWJlU3BlY2lmaWNhdGlvblZhbHVlJyxcblxuICAvLyBEUElfQXR0ckRTTiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJEU04gPSAnd2lkZ2V0QXR0ckRzbicsXG5cbiAgLy8gRFBJX0F0dHJEYXRhYmFzZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJEYXRhYmFzZSA9ICd3aWRnZXRBdHRyRGInLFxuXG4gIC8vIERQSV9BdHRyRGF0YWJhc2VXYXJlaG91c2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBdHRyRGF0YWJhc2VXYXJlaG91c2UgPSAnd2lkZ2V0QXR0ckRid2gnLFxuXG4gIC8vIERQSV9BdHRyRHJpdmVyLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXR0ckRyaXZlciA9ICd3aWRnZXRBdHRyRHJpdmVyJyxcblxuICAvLyBEUElfQXR0ckZpbGVuYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXR0ckZpbGVuYW1lID0gJ3dpZGdldEF0dHJGaWxlbmFtZScsXG5cbiAgLy8gRFBJX0F0dHJIVFRQUGF0aCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJIVFRQUGF0aCA9ICd3aWRnZXRBdHRySHR0cFBhdGgnLFxuXG4gIC8vIERQSV9BdHRySW5jcmVtZW50YWxSZWZyZXNoS2V5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXR0ckluY3JlbWVudGFsUmVmcmVzaEtleSA9ICdhdHRySW5jcmVtZW50YWxSZWZyZXNoS2V5JyxcblxuICAvLyBEUElfQXR0cktlcmJlcm9zSG9zdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJLZXJiZXJvc0hvc3QgPSAnd2lkZ2V0QXR0cktlcmJlcm9zSG9zdCcsXG5cbiAgLy8gRFBJX0F0dHJLZXJiZXJvc1JlYWxtLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXR0cktlcmJlcm9zUmVhbG0gPSAnd2lkZ2V0QXR0cktlcmJlcm9zUmVhbG0nLFxuXG4gIC8vIERQSV9BdHRyS2VyYmVyb3NTZXJ2aWNlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXR0cktlcmJlcm9zU2VydmljZSA9ICd3aWRnZXRBdHRyS2VyYmVyb3NTZXJ2aWNlJyxcblxuICAvLyBEUElfQXR0ckxhc3RSZWNvcmRUb2tlbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJMYXN0UmVjb3JkVG9rZW4gPSAnYXR0ckxhc3RSZWNvcmRUb2tlbicsXG5cbiAgLy8gRFBJX0F0dHJNRFdQYXRoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXR0ck1EV1BhdGggPSAnd2lkZ2V0QXR0ck1kd1BhdGgnLFxuXG4gIC8vIERQSV9BdHRyTURXVXNlcm5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBdHRyTURXVXNlcm5hbWUgPSAnd2lkZ2V0QXR0ck1kd1VzZXJuYW1lJyxcblxuICAvLyBEUElfQXR0ck9EQkNQcm9tcHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBdHRyT0RCQ1Byb21wdCA9ICd3aWRnZXRBdHRyT2RiY1Byb21wdCcsXG5cbiAgLy8gRFBJX0F0dHJPREJDU3RyaW5nRXh0cmFzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXR0ck9EQkNTdHJpbmdFeHRyYXMgPSAnd2lkZ2V0QXR0ck9kYmNTdHJpbmdFeHRyYXMnLFxuXG4gIC8vIERQSV9BdHRyUG9ydCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJQb3J0ID0gJ3dpZGdldEF0dHJQb3J0JyxcblxuICAvLyBEUElfQXR0clNBUENsaWVudCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJTQVBDbGllbnQgPSAnd2lkZ2V0QXR0clNhcENsaWVudCcsXG5cbiAgLy8gRFBJX0F0dHJTQVBMYW5ndWFnZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJTQVBMYW5ndWFnZSA9ICd3aWRnZXRBdHRyU2FwTGFuZ3VhZ2UnLFxuXG4gIC8vIERQSV9BdHRyRWRpdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJFZGl0aW9uID0gJ3dpZGdldEF0dHJTc2xFZGl0aW9uJyxcblxuICAvLyBEUElfQXR0clNTT0RvbWFpbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJTU09Eb21haW4gPSAnd2lkZ2V0QXR0clNzb0RvbWFpbicsXG5cbiAgLy8gRFBJX0F0dHJTU0xDZXJ0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXR0clNTTENlcnQgPSAnd2lkZ2V0QXR0clNzbENlcnQnLFxuXG4gIC8vIERQSV9BdHRyU2NyaXB0VmVyc2lvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJTY3JpcHRWZXJzaW9uID0gJ2F0dHJTY3JpcHRWZXJzaW9uJyxcblxuICAvLyBEUElfQXR0clNlcnZlciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJTZXJ2ZXIgPSAnd2lkZ2V0QXR0clNlcnZlcicsXG5cbiAgLy8gRFBJX0F0dHJTZXJ2aWNlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXR0clNlcnZpY2UgPSAnd2lkZ2V0QXR0clNlcnZpY2UnLFxuXG4gIC8vIERQSV9BdHRyVXNlcm5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBdHRyVXNlcm5hbWUgPSAnd2lkZ2V0QXR0clVzZXInLFxuXG4gIC8vIERQSV9BdXRoZW50aWNhdGlvblByb21wdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF1dGhlbnRpY2F0aW9uUHJvbXB0ID0gJ2F1dGhlbnRpY2F0aW9uUHJvbXB0JyxcblxuICAvLyBEUElfQnV0dG9uQ2xpY2tBY3Rpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBCdXR0b25DbGlja0FjdGlvbiA9ICdidXR0b25DbGlja0FjdGlvbicsXG5cbiAgLy8gRFBJX0J1dHRvbkNhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBCdXR0b25DYXB0aW9uID0gJ2J1dHRvbkNhcHRpb24nLFxuXG4gIC8vIERQSV9DYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ2FwdGlvbiA9ICdjYXB0aW9uJyxcblxuICAvLyBEUElfQ2F0YWxvZ0xpc3RQcm9tcHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDYXRhbG9nTGlzdFByb21wdCA9ICdjYXRhbG9nTGlzdFByb21wdCcsXG5cbiAgLy8gRFBJX0NhdGFsb2dOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ2F0YWxvZ05hbWUgPSAnY2F0YWxvZ05hbWUnLFxuXG4gIC8vIERQSV9DYXRhbG9nU2VhcmNoVGVybSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENhdGFsb2dTZWFyY2hUZXJtID0gJ2NhdGFsb2dTZWFyY2hUZXJtJyxcblxuICAvLyBEUElfQ2F0ZWdvcnksIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDYXRlZ29yeSA9ICdpdGVtQ2F0ZWdvcnknLFxuXG4gIC8vIERQSV9DbGFzc05hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDbGFzc05hbWUgPSAnY2xhc3NOYW1lRm9yQ2xlYW5pbmcnLFxuXG4gIC8vIERQSV9DbG91ZEZpbGVDbGFzc05hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDbG91ZEZpbGVDbGFzc05hbWUgPSAnY2xvdWRGaWxlQ2xhc3NOYW1lJyxcblxuICAvLyBEUElfQ2xvdWRGaWxlU3RvcmFnZVByb3ZpZGVyLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ2xvdWRGaWxlU3RvcmFnZVByb3ZpZGVyID0gJ2Nsb3VkRmlsZVN0b3JhZ2VQcm92aWRlcicsXG5cbiAgLy8gRFBJX0NvbmZpZ05hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDb25maWdOYW1lID0gJ2Nvbm5lY3Rpb25Db25maWdOYW1lJyxcblxuICAvLyBEUElfQ29ubmVjdGlvbkNhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDb25uZWN0aW9uQ2FwdGlvbiA9ICdjb25uZWN0aW9uQ2FwdGlvbicsXG5cbiAgLy8gRFBJX0Nvbm5lY3Rpb25EZXNjcmlwdGlvbkxhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ29ubmVjdGlvbkRlc2NyaXB0aW9uTGFiZWwgPSAnY29ubmVjdGlvbkRlc2NyaXB0aW9uTGFiZWwnLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uQ2xhc3MsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDb25uZWN0aW9uQ2xhc3MgPSAnY29ubmVjdGlvbkNsYXNzTmFtZScsXG5cbiAgLy8gRFBJX0Nvbm5lY3Rpb25OYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ29ubmVjdGlvbk5hbWUgPSAnY29ubmVjdGlvbk5hbWUnLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uT3B0aW9uTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENvbm5lY3Rpb25PcHRpb25OYW1lID0gJ2Nvbm5lY3Rpb25PcHRpb25OYW1lJyxcblxuICAvLyBEUElfQ29ubmVjdGlvblNwZWNpZmljYXRpb25UaXRsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENvbm5lY3Rpb25TcGVjaWZpY2F0aW9uVGl0bGUgPSAnY29ubmVjdGlvblNwZWNpZmljYXRpb25UaXRsZScsXG5cbiAgLy8gRFBJX0Nvbm5lY3Rpb25UeXBlTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDb25uZWN0aW9uVHlwZUxhYmVsID0gJ2Nvbm5lY3Rpb25UeXBlTGFiZWwnLFxuXG4gIC8vIERQSV9DdWJlRGVzY3JpcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDdWJlRGVzY3JpcHRpb24gPSAnY3ViZURlc2NyaXB0aW9uJyxcblxuICAvLyBEUElfQ3ViZUxhc3RVcGRhdGVkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ3ViZUxhc3RVcGRhdGVkID0gJ2N1YmVMYXN0VXBkYXRlZCcsXG5cbiAgLy8gRFBJX0N1YmVMaXN0UHJvbXB0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ3ViZUxpc3RQcm9tcHQgPSAnY3ViZUxpc3RQcm9tcHQnLFxuXG4gIC8vIERQSV9DdWJlTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEN1YmVOYW1lID0gJ2N1YmVOYW1lJyxcblxuICAvLyBEUElfQ3ViZVNlYXJjaFRlcm0sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDdWJlU2VhcmNoVGVybSA9ICdjdWJlU2VhcmNoVGVybScsXG5cbiAgLy8gRFBJX0N1cnJlbnRUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ3VycmVudFRleHQgPSAnY3VycmVudFRleHQnLFxuXG4gIC8vIERQSV9DdXN0b21TcGxpdFN0cmluZ1NlcGFyYXRvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEN1c3RvbVNwbGl0U3RyaW5nU2VwYXJhdG9yID0gJ2N1c3RvbVNwbGl0U3RyaW5nU2VwYXJhdG9yJyxcblxuICAvLyBEUElfRGF0YXNvdXJjZUlkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGF0YXNvdXJjZUlkID0gJ2RhdGFzb3VyY2VJZCcsXG5cbiAgLy8gRFBJX0RCTmFtZVByb21wdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERCTmFtZVByb21wdCA9ICdkYk5hbWVQcm9tcHQnLFxuXG4gIC8vIERQSV9EQldITmFtZVByb21wdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERCV0hOYW1lUHJvbXB0ID0gJ2RiV2FyZWhvdXNlTmFtZVByb21wdCcsXG5cbiAgLy8gRFBJX0RTQ2xhc3MsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEU0NsYXNzID0gJ2RzQ2xhc3MnLFxuXG4gIC8vIERQSV9EYXRhYmFzZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRhYmFzZU5hbWUgPSAnZGF0YXNvdXJjZURhdGFiYXNlTmFtZScsXG5cbiAgLy8gRFBJX0RhdGFiYXNlTm90ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGFiYXNlTm90ZSA9ICdkYXRhYmFzZU5vdGUnLFxuXG4gIC8vIERQSV9EcmFnTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEcmFnTGFiZWwgPSAnZHJhZ0xhYmVsJyxcblxuICAvLyBEUElfRWZmZWN0aXZlRGF0ZVJhbmdlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRWZmZWN0aXZlRGF0ZVJhbmdlID0gJ2VmZmVjdGl2ZURhdGVSYW5nZScsXG5cbiAgLy8gRFBJX0dvb2dsZVNoZWV0Q3JlYXRlZFRpbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBHb29nbGVTaGVldENyZWF0ZWRUaW1lID0gJ2dvb2dsZVNoZWV0Q3JlYXRlZFRpbWUnLFxuXG4gIC8vIERQSV9Hb29nbGVTaGVldElkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgR29vZ2xlU2hlZXRJZCA9ICdnb29nbGVTaGVldElkJyxcblxuICAvLyBEUElfR29vZ2xlU2hlZXRMYXN0TW9kaWZpZWRUaW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgR29vZ2xlU2hlZXRMYXN0TW9kaWZpZWRUaW1lID0gJ2dvb2dsZVNoZWV0TGFzdE1vZGlmaWVkVGltZScsXG5cbiAgLy8gRFBJX0dvb2dsZVNoZWV0TGFzdE1vZGlmeWluZ1VzZXIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBHb29nbGVTaGVldExhc3RNb2RpZnlpbmdVc2VyID0gJ2dvb2dsZVNoZWV0TGFzdE1vZGlmeWluZ1VzZXInLFxuXG4gIC8vIERQSV9Hb29nbGVTaGVldExhc3RWaWV3ZWRCeVVzZXJUaW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgR29vZ2xlU2hlZXRMYXN0Vmlld2VkQnlVc2VyVGltZSA9ICdnb29nbGVTaGVldExhc3RWaWV3ZWRCeVVzZXJUaW1lJyxcblxuICAvLyBEUElfR29vZ2xlU2hlZXRNaW1lVHlwZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEdvb2dsZVNoZWV0TWltZVR5cGUgPSAnZ29vZ2xlU2hlZXRNaW1lVHlwZScsXG5cbiAgLy8gRFBJX0dvb2dsZVNoZWV0TmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEdvb2dsZVNoZWV0TmFtZSA9ICdnb29nbGVTaGVldE5hbWUnLFxuXG4gIC8vIERQSV9Hb29nbGVTaGVldE93bmVyLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgR29vZ2xlU2hlZXRPd25lciA9ICdnb29nbGVTaGVldE93bmVyJyxcblxuICAvLyBEUElfR29vZ2xlU2hlZXRUaHVtYm5haWxMaW5rLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgR29vZ2xlU2hlZXRUaHVtYm5haWxMaW5rID0gJ2dvb2dsZVNoZWV0VGh1bWJuYWlsTGluaycsXG5cbiAgLy8gRFBJX0dvb2dsZVNoZWV0VGh1bWJuYWlsSWQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBHb29nbGVTaGVldFRodW1ibmFpbElkID0gJ2dvb2dsZVNoZWV0VGh1bWJuYWlsSWQnLFxuXG4gIC8vIERQSV9Hb29nbGVTaGVldFRodW1ibmFpbExvY2FsUGF0aCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEdvb2dsZVNoZWV0VGh1bWJuYWlsTG9jYWxQYXRoID0gJ2dvb2dsZVNoZWV0VGh1bWJuYWlsTG9jYWxQYXRoJyxcblxuICAvLyBEUElfR29vZ2xlU2hlZXRXZWJWaWV3TGluaywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEdvb2dsZVNoZWV0V2ViVmlld0xpbmsgPSAnZ29vZ2xlU2hlZXRXZWJWaWV3TGluaycsXG5cbiAgLy8gRFBJX0dvb2dsZVNoZWV0c0xpc3RFcnJvck1lc3NhZ2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBHb29nbGVTaGVldHNMaXN0RXJyb3JNZXNzYWdlID0gJ2dvb2dsZVNoZWV0c0xpc3RFcnJvck1lc3NhZ2UnLFxuXG4gIC8vIERQSV9Jbml0aWFsU1FMLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSW5pdGlhbFNRTCA9ICdpbml0aWFsU3FsJyxcblxuICAvLyBEUElfSVNPRGF0ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIElTT0RhdGUgPSAnaXNvRGF0ZScsXG5cbiAgLy8gRFBJX0lTT0VuZERhdGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBJU09FbmREYXRlID0gJ2lzb0VuZERhdGUnLFxuXG4gIC8vIERQSV9JU09TdGFydERhdGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBJU09TdGFydERhdGUgPSAnaXNvU3RhcnREYXRlJyxcblxuICAvLyBEUElfSXNvbGF0aW9uTGV2ZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBJc29sYXRpb25MZXZlbCA9ICdkYXRhc291cmNlSXNvbGF0aW9uTGV2ZWwnLFxuXG4gIC8vIERQSV9JdGVtRGVzY3JpcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBJdGVtRGVzY3JpcHRpb24gPSAnaXRlbURlc2NyaXB0aW9uJyxcblxuICAvLyBEUElfSXRlbUlkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSXRlbUlkID0gJ2l0ZW1JZCcsXG5cbiAgLy8gRFBJX0tlcmJlcm9zSG9zdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEtlcmJlcm9zSG9zdCA9ICdkYXRhc291cmNlS2VyYmVyb3NIb3N0JyxcblxuICAvLyBEUElfS2VyYmVyb3NSZWFsbSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEtlcmJlcm9zUmVhbG0gPSAnZGF0YXNvdXJjZUtlcmJlcm9zUmVhbG0nLFxuXG4gIC8vIERQSV9LZXJiZXJvc1NlcnZpY2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBLZXJiZXJvc1NlcnZpY2UgPSAnZGF0YXNvdXJjZUtlcmJlcm9zU2VydmljZScsXG5cbiAgLy8gRFBJX05hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBOYW1lID0gJ25hbWUnLFxuXG4gIC8vIERQSV9PcHRpb25JZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE9wdGlvbklkID0gJ29wdGlvbklkJyxcblxuICAvLyBEUElfUGFydGl0aW9uaW5nQnV0dG9uTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBQYXJ0aXRpb25pbmdCdXR0b25MYWJlbCA9ICdwYXJ0aXRpb25pbmdCdXR0b25MYWJlbCcsXG5cbiAgLy8gRFBJX1BhcnRpdGlvbmluZ0J1dHRvblRvb2x0aXAsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBQYXJ0aXRpb25pbmdCdXR0b25Ub29sdGlwID0gJ3BhcnRpdGlvbmluZ0J1dHRvblRvb2x0aXAnLFxuXG4gIC8vIERQSV9QYXJ0aXRpb25pbmdUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGFydGl0aW9uaW5nVGV4dCA9ICdxdWVyeVBhcnRpdGlvbmluZ1RleHQnLFxuXG4gIC8vIERQSV9QZGZTdGFydFBhZ2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBQZGZTdGFydFBhZ2UgPSAncGRmU3RhcnRQYWdlJyxcblxuICAvLyBEUElfUGRmRW5kUGFnZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFBkZkVuZFBhZ2UgPSAncGRmRW5kUGFnZScsXG5cbiAgLy8gRFBJX1BvcnRQcm9tcHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBQb3J0UHJvbXB0ID0gJ3BvcnRQcm9tcHQnLFxuXG4gIC8vIERQSV9Qcm9tcHRUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUHJvbXB0VGV4dCA9ICdwcm9tcHRUZXh0JyxcblxuICAvLyBEUElfUXVlcnlCYW5kaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUXVlcnlCYW5kaW5nID0gJ3F1ZXJ5QmFuZGluZycsXG5cbiAgLy8gRFBJX1F1ZXJ5VGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFF1ZXJ5VGV4dCA9ICdxdWVyeVRleHQnLFxuXG4gIC8vIERQSV9SZWNvbW1lbmRhdGlvblVVSUQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBSZWNvbW1lbmRhdGlvblVVSUQgPSAncmVjb21tZW5kYXRpb25VdWlkJyxcblxuICAvLyBEUElfU1FMUXVlcnksIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTUUxRdWVyeSA9ICdzcWxRdWVyeScsXG5cbiAgLy8gRFBJX1NjaGVtYUNvbWJvRmFsbGJhY2tUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU2NoZW1hQ29tYm9GYWxsYmFja1RleHQgPSAnc2NoZW1hQ29tYm9GYWxsYmFja1RleHQnLFxuXG4gIC8vIERQSV9TY2hlbWFMYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNjaGVtYUxhYmVsID0gJ3NjaGVtYUxhYmVsJyxcblxuICAvLyBEUElfU2NoZW1hTWVtYmVyR2xvYmFsTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNjaGVtYU1lbWJlckdsb2JhbE5hbWUgPSAnc2NoZW1hTWVtYmVyR2xvYmFsTmFtZScsXG5cbiAgLy8gRFBJX1NjaGVtYU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTY2hlbWFOYW1lID0gJ2RhdGFzb3VyY2VTY2hlbWFOYW1lJyxcblxuICAvLyBEUElfU2NyaXB0VGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNjcmlwdFRleHQgPSAnc2NyaXB0VGV4dCcsXG5cbiAgLy8gRFBJX1NlY29uZGFyeVdoaXRlTGlzdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNlY29uZGFyeVdoaXRlTGlzdCA9ICdzZWNvbmRhcnlXaGl0ZUxpc3QnLFxuXG4gIC8vIERQSV9TZXJ2ZXIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTZXJ2ZXIgPSAnZGF0YXNvdXJjZVNlcnZlcicsXG5cbiAgLy8gRFBJX1NlcnZlck5hbWVQcm9tcHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTZXJ2ZXJOYW1lUHJvbXB0ID0gJ3NlcnZlck5hbWVQcm9tcHQnLFxuXG4gIC8vIERQSV9TZXJ2aWNlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU2VydmljZSA9ICdkYXRhc291cmNlU2VydmljZScsXG5cbiAgLy8gRFBJX1NlcnZpY2VOYW1lUHJvbXB0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU2VydmljZU5hbWVQcm9tcHQgPSAnc2VydmljZVByb21wdCcsXG5cbiAgLy8gRFBJX1NoZWV0Rm9ybWF0dGluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNoZWV0Rm9ybWF0dGluZyA9ICdzaGVldEZvcm1hdHRpbmcnLFxuXG4gIC8vIERQSV9TbG93TWV0YWRhdGFTZWFyY2hUZXJtLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU2xvd01ldGFkYXRhU2VhcmNoVGVybSA9ICdzbG93TWV0YWRhdGFTZWFyY2hUZXJtJyxcblxuICAvLyBEUElfU3RhbmRhcmRDb25uZWN0aW9uTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFN0YW5kYXJkQ29ubmVjdGlvbk5hbWUgPSAnZGF0YXNvdXJjZVN0YW5kYXJkQ29ubmVjdGlvbk5hbWUnLFxuXG4gIC8vIERQSV9TdGFuZGFyZENvbm5lY3Rpb25QbGFjZWhvbGRlclRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTdGFuZGFyZENvbm5lY3Rpb25QbGFjZWhvbGRlclRleHQgPSAnc3RhbmRhcmRDb25uZWN0aW9uUGxhY2Vob2xkZXJUZXh0JyxcblxuICAvLyBEUElfU3RvcmVkUHJvY2VkdXJlUGFyYW1ldGVyVGl0bGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTdG9yZWRQcm9jZWR1cmVQYXJhbWV0ZXJUaXRsZSA9ICdzdG9yZWRQcm9jZWR1cmVQYXJhbWV0ZXJUaXRsZScsXG5cbiAgLy8gRFBJX1RhYmxlQWxpYXMsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUYWJsZUFsaWFzID0gJ3RhYmxlQWxpYXMnLFxuXG4gIC8vIERQSV9SaWdodFRhYmxlQWxpYXMsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBSaWdodFRhYmxlQWxpYXMgPSAncmlnaHRUYWJsZUFsaWFzJyxcblxuICAvLyBEUElfVGFibGVDYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVGFibGVDYXB0aW9uID0gJ3RhYmxlQ2FwdGlvbicsXG5cbiAgLy8gRFBJX1RhYmxlQ29sbGVjdGlvbk5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUYWJsZUNvbGxlY3Rpb25OYW1lID0gJ3RhYmxlQ29sbGVjdGlvbk5hbWUnLFxuXG4gIC8vIERQSV9UYWJsZVBsYWNlaG9sZGVyVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRhYmxlUGxhY2Vob2xkZXJUZXh0ID0gJ3RhYmxlUGxhY2Vob2xkZXJUZXh0JyxcblxuICAvLyBEUElfVGFibGVSYW5raW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVGFibGVSYW5raW5nID0gJ3RhYmxlUmFua2luZycsXG5cbiAgLy8gRFBJX1RhYmxlU29ydEtleSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRhYmxlU29ydEtleSA9ICd0YWJsZVNvcnRrZXknLFxuXG4gIC8vIERQSV9UYWJsZVRvb2x0aXAsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUYWJsZVRvb2x0aXAgPSAndGFibGVUb29sdGlwJyxcblxuICAvLyBEUElfVGFibGVUb1JlcGxhY2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUYWJsZVRvUmVwbGFjZSA9ICd0YWJsZVRvUmVwbGFjZScsXG5cbiAgLy8gRFBJX1RhYmxlV2FybmluZ01lc3NhZ2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUYWJsZVdhcm5pbmdNZXNzYWdlID0gJ3RhYmxlV2FybmluZ01lc3NhZ2UnLFxuXG4gIC8vIERQSV9UYWJsZWF1U2VydmVyRGF0YXNvdXJjZURlc2NyaXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVGFibGVhdVNlcnZlckRhdGFzb3VyY2VEZXNjcmlwdGlvbiA9ICd0YWJsZWF1U2VydmVyRGF0YXNvdXJjZURlc2NyaXB0aW9uJyxcblxuICAvLyBEUElfVGFibGVhdVNlcnZlckRhdGFzb3VyY2VMYXN0RXh0cmFjdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRhYmxlYXVTZXJ2ZXJEYXRhc291cmNlTGFzdEV4dHJhY3QgPSAndGFibGVhdVNlcnZlckRhdGFzb3VyY2VMYXN0RXh0cmFjdCcsXG5cbiAgLy8gRFBJX1RhYmxlYXVTZXJ2ZXJEYXRhc291cmNlTW9kaWZpZWQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUYWJsZWF1U2VydmVyRGF0YXNvdXJjZU1vZGlmaWVkID0gJ3RhYmxlYXVTZXJ2ZXJEYXRhc291cmNlTW9kaWZpZWQnLFxuXG4gIC8vIERQSV9UYWJsZWF1U2VydmVyRGF0YXNvdXJjZU93bmVyLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVGFibGVhdVNlcnZlckRhdGFzb3VyY2VPd25lciA9ICd0YWJsZWF1U2VydmVyRGF0YXNvdXJjZU93bmVyJyxcblxuICAvLyBEUElfVGFibGVhdVNlcnZlckRhdGFzb3VyY2VQYXRoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVGFibGVhdVNlcnZlckRhdGFzb3VyY2VQYXRoID0gJ3RhYmxlYXVTZXJ2ZXJEYXRhc291cmNlUGF0aCcsXG5cbiAgLy8gRFBJX1RhYmxlYXVTZXJ2ZXJGZXRjaFNlYXJjaFF1ZXJ5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVGFibGVhdVNlcnZlckZldGNoU2VhcmNoUXVlcnkgPSAndGFibGVhdVNlcnZlckZldGNoU2VhcmNoUXVlcnknLFxuXG4gIC8vIERQSV9UYWJsZWF1U2VydmVyTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRhYmxlYXVTZXJ2ZXJOYW1lID0gJ3RhYmxlYXVTZXJ2ZXJOYW1lJyxcblxuICAvLyBEUElfVGFibGVhdVNlcnZlclByb2plY3ROYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVGFibGVhdVNlcnZlclByb2plY3ROYW1lID0gJ3RhYmxlYXVTZXJ2ZXJQcm9qZWN0TmFtZScsXG5cbiAgLy8gRFBJX1RhYmxlYXVTZXJ2ZXJVc2VybmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRhYmxlYXVTZXJ2ZXJVc2VybmFtZSA9ICd0YWJsZWF1U2VydmVyVXNlcm5hbWUnLFxuXG4gIC8vIERQSV9UcmFuc3BvcnRUeXBlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVHJhbnNwb3J0VHlwZSA9ICd0cmFuc3BvcnRUeXBlJyxcblxuICAvLyBEUElfV2FyZWhvdXNlTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFdhcmVob3VzZU5hbWUgPSAnZGF0YXNvdXJjZVdhcmVob3VzZU5hbWUnLFxuXG4gIC8vIERQSV9Xb3JrZ3JvdXBXb3JrYm9va05hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBXb3JrZ3JvdXBXb3JrYm9va05hbWUgPSAnd29ya2dyb3VwV29ya2Jvb2tOYW1lJyxcblxuICAvLyBEUElfQW5hbHl0aWNzSXRlbVRvb2x0aXAsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBbmFseXRpY3NJdGVtVG9vbHRpcCA9ICdhbmFseXRpY3NJdGVtVG9vbHRpcCcsXG5cbiAgLy8gRFBJX0Rlc2NyaXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGVzY3JpcHRpb24gPSAnZGVzY3JpcHRpb24nLFxuXG4gIC8vIERQSV9EU0NsYXNzQ2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERTQ2xhc3NDYXB0aW9uID0gJ2RzQ2xhc3NDYXB0aW9uJyxcblxuICAvLyBEUElfRm9ybXVsYSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZvcm11bGEgPSAnZm9ybXVsYScsXG5cbiAgLy8gRFBJX01lc3NhZ2VUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTWVzc2FnZVRleHQgPSAnbWVzc2FnZVRleHQnLFxuXG4gIC8vIERQSV9EYXRhc291cmNlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGF0YXNvdXJjZSA9ICdkYXRhc291cmNlJyxcblxuICAvLyBEUElfRGF0YXNvdXJjZVNvdXJjZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGFzb3VyY2VTb3VyY2UgPSAnZGF0YXNvdXJjZVNvdXJjZScsXG5cbiAgLy8gRFBJX0RhdGFzb3VyY2VUYXJnZXQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRhc291cmNlVGFyZ2V0ID0gJ2RhdGFzb3VyY2VUYXJnZXQnLFxuXG4gIC8vIERQSV9GaXJzdERhdGFzb3VyY2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGaXJzdERhdGFzb3VyY2UgPSAnZmlyc3REYXRhc291cmNlJyxcblxuICAvLyBEUElfTmV3RGF0YXNvdXJjZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE5ld0RhdGFzb3VyY2UgPSAnbmV3RGF0YXNvdXJjZScsXG5cbiAgLy8gRFBJX1BhcmFtZXRlcnNEYXRhc291cmNlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGFyYW1ldGVyc0RhdGFzb3VyY2UgPSAncGFyYW1ldGVyc0RhdGFzb3VyY2UnLFxuXG4gIC8vIERQSV9QcmltYXJ5RGF0YXNvdXJjZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFByaW1hcnlEYXRhc291cmNlID0gJ3ByaW1hcnlEYXRhc291cmNlJyxcblxuICAvLyBEUElfQ29ubmVjdGlvbkRhdGFiYXNlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgQ29ubmVjdGlvbkRhdGFiYXNlcyA9ICdjb25uZWN0aW9uRGF0YWJhc2VzJyxcblxuICAvLyBEUElfQ29ubmVjdGlvblNjaGVtYXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIENvbm5lY3Rpb25TY2hlbWFzID0gJ2Nvbm5lY3Rpb25TY2hlbWFzJyxcblxuICAvLyBEUElfQ29ubmVjdGlvbldhcmVob3VzZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIENvbm5lY3Rpb25XYXJlaG91c2VzID0gJ2Nvbm5lY3Rpb25XYXJlaG91c2VzJyxcblxuICAvLyBEUElfRFNDbGFzc2VzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBEU0NsYXNzZXMgPSAnZHNDbGFzc2VzJyxcblxuICAvLyBEUElfUG9zc2libGVDaG9pY2VzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBQb3NzaWJsZUNob2ljZXMgPSAncG9zc2libGVDaG9pY2VzJyxcblxuICAvLyBEUElfU3RhbmRhcmRDb25uZWN0aW9ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgU3RhbmRhcmRDb25uZWN0aW9ucyA9ICdzdGFuZGFyZENvbm5lY3Rpb25zJyxcblxuICAvLyBEUElfU3RyaW5ncywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgU3RyaW5ncyA9ICdzdHJpbmdzJyxcblxuICAvLyBEUElfVGFibGVhdVNlcnZlclByb2plY3ROYW1lcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgVGFibGVhdVNlcnZlclByb2plY3ROYW1lcyA9ICd0YWJsZWF1U2VydmVyUHJvamVjdE5hbWVzJyxcblxuICAvLyBEUElfVGFibGVDYXB0aW9ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgVGFibGVDYXB0aW9ucyA9ICd0YWJsZUNhcHRpb25zJyxcblxuICAvLyBEUElfRGF0YVZhbHVlcywgaGF2aW5nIHR5cGUgb2JqZWN0W11cbiAgRGF0YVZhbHVlcyA9ICdkYXRhVmFsdWVzJyxcblxuICAvLyBEUElfUXVlcnlCYW5kRXJyb3JzLCBoYXZpbmcgdHlwZSBvYmplY3RbXVxuICBRdWVyeUJhbmRFcnJvcnMgPSAncXVlcnlCYW5kRXJyb3JzJyxcblxuICAvLyBEUElfUXVlcnlCYW5kUGFyYW1ldGVycywgaGF2aW5nIHR5cGUgb2JqZWN0W11cbiAgUXVlcnlCYW5kUGFyYW1ldGVycyA9ICdxdWVyeUJhbmRQYXJhbWV0ZXJzJyxcblxuICAvLyBEUElfSW5pdGlhbFNRTFBhcmFtZXRlcnMsIGhhdmluZyB0eXBlIG9iamVjdFtdXG4gIEluaXRpYWxTUUxQYXJhbWV0ZXJzID0gJ2luaXRpYWxTcWxQYXJhbWV0ZXJzJyxcblxuICAvLyBEUElfQ29ubmVjdGlvbkF0dHJpYnV0ZXMsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBDb25uZWN0aW9uQXR0cmlidXRlcyA9ICdjb25uZWN0aW9uQXR0cnMnLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uUHJvcHMsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBDb25uZWN0aW9uUHJvcHMgPSAnY29ubmVjdGlvblByb3BzJyxcblxuICAvLyBEUElfRGlzcGxheU5hbWVNYXAsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBEaXNwbGF5TmFtZU1hcCA9ICdkaXNwbGF5TmFtZU1hcCcsXG5cbiAgLy8gRFBJX0xvb2t1cFRhYmxlLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgTG9va3VwVGFibGUgPSAnbG9va3VwVGFibGUnLFxuXG4gIC8vIERQSV9PQXV0aEF0dHJzLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgT0F1dGhBdHRycyA9ICdvYXV0aEF0dHJzJyxcblxuICAvLyBEUElfU3RyaW5nTWFwLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgU3RyaW5nTWFwID0gJ3N0cmluZ01hcCcsXG5cbiAgLy8gRFBJX1RhYmxlUmFua2luZ01hcCwgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBzdHJpbmcpXG4gIFRhYmxlUmFua2luZ01hcCA9ICd0YWJsZVJhbmtpbmdNYXAnLFxuXG4gIC8vIERQSV9XRENBdHRyaWJ1dGVzLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgV0RDQXR0cmlidXRlcyA9ICd3ZGNBdHRycycsXG5cbiAgLy8gRFBJX0Nvbm5lY3RvckF0dHJpYnV0ZXMsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBDb25uZWN0b3JBdHRyaWJ1dGVzID0gJ2Nvbm5lY3RvckF0dHJzJyxcblxuICAvLyBEUElfVGFibGVSZWxldmFuY2VQYXJhbXMsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBUYWJsZVJlbGV2YW5jZVBhcmFtcyA9ICd0YWJsZVJlbGV2YW5jZVBhcmFtcycsXG5cbiAgLy8gRFBJX0FjdHVhbFBhcmFtZXRlclBhcmFtZXRlciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEFjdHVhbFBhcmFtZXRlclBhcmFtZXRlciA9ICdhY3R1YWxQYXJhbWV0ZXJQYXJhbWV0ZXInLFxuXG4gIC8vIERQSV9EYXRhQ29sdW1uTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGFDb2x1bW5OYW1lID0gJ2RhdGFDb2x1bW5OYW1lJyxcblxuICAvLyBEUElfTEhTRGF0YUNvbHVtbk5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBMSFNEYXRhQ29sdW1uTmFtZSA9ICdsaHNEYXRhQ29sdW1uTmFtZScsXG5cbiAgLy8gRFBJX1JIU0RhdGFDb2x1bW5OYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUkhTRGF0YUNvbHVtbk5hbWUgPSAncmhzRGF0YUNvbHVtbk5hbWUnLFxuXG4gIC8vIERQSV9GdWxsQ3ViZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGdWxsQ3ViZU5hbWUgPSAnZnVsbEN1YmVOYW1lJyxcblxuICAvLyBEUElfRnVsbFZhcmlhYmxlTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZ1bGxWYXJpYWJsZU5hbWUgPSAnZnVsbFZhcmlhYmxlTmFtZScsXG5cbiAgLy8gRFBJX1NlbWFudGljUm9sZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNlbWFudGljUm9sZSA9ICdzZW1hbnRpY1JvbGUnLFxuXG4gIC8vIERQSV9TdG9yZWRQcm9jZWR1cmVOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3RvcmVkUHJvY2VkdXJlTmFtZSA9ICdzdG9yZWRQcm9jTmFtZScsXG5cbiAgLy8gRFBJX1RhYmxlTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRhYmxlTmFtZSA9ICd0YWJsZU5hbWUnLFxuXG4gIC8vIERQSV9BZGRlZFRhYmxlTmFtZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEFkZGVkVGFibGVOYW1lcyA9ICdhZGRlZFRhYmxlTmFtZXMnLFxuXG4gIC8vIERQSV9Db2FsZXNjZUdyb3VwRmllbGRzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBDb2FsZXNjZUdyb3VwRmllbGRzID0gJ2NvYWxlc2NlR3JvdXBGaWVsZHMnLFxuXG4gIC8vIERQSV9GaWVsZE5hbWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBGaWVsZE5hbWVzID0gJ2ZpZWxkTmFtZXMnLFxuXG4gIC8vIERQSV9Kb2luRmllbGRBbGlhc2VzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBKb2luRmllbGRBbGlhc2VzID0gJ2pvaW5GaWVsZF9hbGlhc2VzJyxcblxuICAvLyBEUElfSm9pbkluZm9GaWVsZHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEpvaW5JbmZvRmllbGRzID0gJ2pvaW5JbmZvRmllbGRzJyxcblxuICAvLyBEUElfUGl2b3RHcm91cEZpZWxkcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgUGl2b3RHcm91cEZpZWxkcyA9ICdwaXZvdEdyb3VwRmllbGRzJyxcblxuICAvLyBEUElfUmVtb3ZlZFRhYmxlTmFtZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFJlbW92ZWRUYWJsZU5hbWVzID0gJ3JlbW92ZWRUYWJsZU5hbWVzJyxcblxuICAvLyBEUElfU3RvcmVkUHJvY2VkdXJlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgU3RvcmVkUHJvY2VkdXJlcyA9ICdzdG9yZWRQcm9jZWR1cmVzJyxcblxuICAvLyBEUElfVGFibGVOYW1lcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgVGFibGVOYW1lcyA9ICd0YWJsZU5hbWVzJyxcblxuICAvLyBEUElfQ29sdW1uTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENvbHVtbk5hbWUgPSAnY29sdW1uTmFtZScsXG5cbiAgLy8gRFBJX0ZpZWxkTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZpZWxkTmFtZSA9ICdmbicsXG5cbiAgLy8gRFBJX0dvb2dsZVNoZWV0VGh1bWJuYWlsSW1hZ2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBHb29nbGVTaGVldFRodW1ibmFpbEltYWdlID0gJ2dvb2dsZVNoZWV0VGh1bWJuYWlsSW1hZ2UnLFxuXG4gIC8vIERQSV9BdHRyTURXUGFzc3dvcmQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBdHRyTURXUGFzc3dvcmQgPSAnd2lkZ2V0QXR0ck1kd1Bhc3N3b3JkJyxcblxuICAvLyBEUElfQXR0clBhc3N3b3JkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXR0clBhc3N3b3JkID0gJ3dpZGdldEF0dHJQYXNzd29yZCcsXG5cbiAgLy8gRFBJX0RhdGFzb3VyY2VQYXNzd29yZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGFzb3VyY2VQYXNzd29yZCA9ICdkYXRhc291cmNlUGFzc3dvcmQnLFxuXG4gIC8vIERQSV9GZWRlcmF0ZWRLZXljaGFpbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZlZGVyYXRlZEtleWNoYWluID0gJ2ZlZGVyYXRlZEtleWNoYWluJyxcblxuICAvLyBEUElfRGF0YVBhcmFtZXRlcklELCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGF0YVBhcmFtZXRlcklEID0gJ2RhdGFQYXJhbVR5cGUnLFxuXG4gIC8vIERQSV9Db25uZWN0U2VydmVyV2lkZ2V0VHlwZSwgaGF2aW5nIHR5cGUgQ29ubmVjdFNlcnZlcldpZGdldFR5cGVcbiAgQ29ubmVjdFNlcnZlcldpZGdldFR5cGUgPSAnY29ubmVjdFNlcnZlcldpZGdldFR5cGUnLFxuXG4gIC8vIERQSV9BdXRoZW50aWNhdGlvbk1vZGUsIGhhdmluZyB0eXBlIE1vZGVcbiAgQXV0aGVudGljYXRpb25Nb2RlID0gJ2F1dGhNb2RlJyxcblxuICAvLyBEUElfUmVjb25uZWN0QXV0aE1vZGUsIGhhdmluZyB0eXBlIFJlY29ubmVjdE1vZGVcbiAgUmVjb25uZWN0QXV0aE1vZGUgPSAncmVjb25uZWN0QXV0aE1vZGUnLFxuXG4gIC8vIERQSV9DdXJyZW50QXV0aE9wdGlvbiwgaGF2aW5nIHR5cGUgQXV0aE9wdGlvblxuICBDdXJyZW50QXV0aE9wdGlvbiA9ICdjdXJyQXV0aE9wdGlvbicsXG5cbiAgLy8gRFBJX0F1dGhPcHRpb25MaXN0LCBoYXZpbmcgdHlwZSBBdXRoT3B0aW9uW11cbiAgQXV0aE9wdGlvbkxpc3QgPSAnYXV0aE9wdGlvbnMnLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uU3BlY2lmaWNhdGlvblR5cGUsIGhhdmluZyB0eXBlIENvbm5lY3Rpb25TcGVjaWZpY2F0aW9uVHlwZVxuICBDb25uZWN0aW9uU3BlY2lmaWNhdGlvblR5cGUgPSAnY29ubmVjdGlvblNwZWNpZmljYXRpb25UeXBlJyxcblxuICAvLyBEUElfRGF0YVR5cGUsIGhhdmluZyB0eXBlIERhdGFUeXBlXG4gIERhdGFUeXBlID0gJ2RhdGFUeXBlJyxcblxuICAvLyBEUElfTEhTRGF0YVR5cGUsIGhhdmluZyB0eXBlIERhdGFUeXBlXG4gIExIU0RhdGFUeXBlID0gJ2xoc0RhdGFUeXBlJyxcblxuICAvLyBEUElfUkhTRGF0YVR5cGUsIGhhdmluZyB0eXBlIERhdGFUeXBlXG4gIFJIU0RhdGFUeXBlID0gJ3Joc0RhdGFUeXBlJyxcblxuICAvLyBEUElfRGVmYXVsdEZpZWxkUm9sZSwgaGF2aW5nIHR5cGUgRmllbGRSb2xlXG4gIERlZmF1bHRGaWVsZFJvbGUgPSAnZGVmYXVsdEZpZWxkUm9sZScsXG5cbiAgLy8gRFBJX0ZpZWxkUm9sZSwgaGF2aW5nIHR5cGUgRmllbGRSb2xlXG4gIEZpZWxkUm9sZSA9ICdmaWVsZFJvbGUnLFxuXG4gIC8vIERQSV9EZWZhdWx0RmllbGRUeXBlLCBoYXZpbmcgdHlwZSBGaWVsZFR5cGVcbiAgRGVmYXVsdEZpZWxkVHlwZSA9ICdkZWZhdWx0RmllbGRUeXBlJyxcblxuICAvLyBEUElfRmllbGRUeXBlLCBoYXZpbmcgdHlwZSBGaWVsZFR5cGVcbiAgRmllbGRUeXBlID0gJ2ZpZWxkVHlwZScsXG5cbiAgLy8gRFBJX0ZpZWxkVHlwZUxpc3QsIGhhdmluZyB0eXBlIEZpZWxkVHlwZVtdXG4gIEZpZWxkVHlwZUxpc3QgPSAnZmllbGRUeXBlTGlzdCcsXG5cbiAgLy8gRFBJX0ZpZWxkVHlwZUxpc3REZXRhaWwsIGhhdmluZyB0eXBlIEZpZWxkVHlwZVtdXG4gIEZpZWxkVHlwZUxpc3REZXRhaWwgPSAnZmllbGRUeXBlTGlzdERldGFpbCcsXG5cbiAgLy8gRFBJX0FnZ1R5cGUsIGhhdmluZyB0eXBlIEFnZ1R5cGVcbiAgQWdnVHlwZSA9ICdhZ2dyZWdhdGlvbicsXG5cbiAgLy8gRFBJX0RlZmF1bHRBZ2dUeXBlLCBoYXZpbmcgdHlwZSBBZ2dUeXBlXG4gIERlZmF1bHRBZ2dUeXBlID0gJ2RlZmF1bHRBZ2dyZWdhdGlvbicsXG5cbiAgLy8gRFBJX0ZvcmVjYXN0QWdnLCBoYXZpbmcgdHlwZSBBZ2dUeXBlXG4gIEZvcmVjYXN0QWdnID0gJ2ZvcmVjYXN0U3VtbWFyaXplVG8nLFxuXG4gIC8vIERQSV9Gb3JlY2FzdEF1dG9BZ2csIGhhdmluZyB0eXBlIEFnZ1R5cGVcbiAgRm9yZWNhc3RBdXRvQWdnID0gJ2ZvcmVjYXN0QXV0b1N1bW1hcml6ZVRvJyxcblxuICAvLyBEUElfRm9yZWNhc3RBdXRvUmFuZ2VVbml0cywgaGF2aW5nIHR5cGUgQWdnVHlwZVxuICBGb3JlY2FzdEF1dG9SYW5nZVVuaXRzID0gJ2ZvcmVjYXN0QXV0b1JhbmdlVW5pdHMnLFxuXG4gIC8vIERQSV9Gb3JlY2FzdEVuZE9mUmFuZ2VVbml0cywgaGF2aW5nIHR5cGUgQWdnVHlwZVxuICBGb3JlY2FzdEVuZE9mUmFuZ2VVbml0cyA9ICdmb3JlY2FzdEVuZE9mUmFuZ2VVbml0cycsXG5cbiAgLy8gRFBJX0ZvcmVjYXN0TmV4dFJhbmdlVW5pdHMsIGhhdmluZyB0eXBlIEFnZ1R5cGVcbiAgRm9yZWNhc3ROZXh0UmFuZ2VVbml0cyA9ICdmb3JlY2FzdE5leHRSYW5nZVVuaXRzJyxcblxuICAvLyBEUElfU291cmNlQWdnLCBoYXZpbmcgdHlwZSBBZ2dUeXBlXG4gIFNvdXJjZUFnZyA9ICdzb3VyY2VBZ2dyZWdhdGlvbicsXG5cbiAgLy8gRFBJX1RhcmdldEFnZywgaGF2aW5nIHR5cGUgQWdnVHlwZVxuICBUYXJnZXRBZ2cgPSAndGFyZ2V0QWdncmVnYXRpb24nLFxuXG4gIC8vIERQSV9BZ2dyZWdhdGVCeUFnZ1R5cGVzLCBoYXZpbmcgdHlwZSBBZ2dUeXBlW11cbiAgQWdncmVnYXRlQnlBZ2dUeXBlcyA9ICdhZ2dyZWdhdGVCeUFnZ1R5cGVzJyxcblxuICAvLyBEUElfQWdncmVnYXRpb25WYWx1ZXMsIGhhdmluZyB0eXBlIEFnZ1R5cGVbXVxuICBBZ2dyZWdhdGlvblZhbHVlcyA9ICdhZ2dyZWdhdGlvblZhbHVlcycsXG5cbiAgLy8gRFBJX1NvcnRBZ2dWYWx1ZXMsIGhhdmluZyB0eXBlIEFnZ1R5cGVbXVxuICBTb3J0QWdnVmFsdWVzID0gJ3NvcnRBZ2dWYWx1ZXMnLFxuXG4gIC8vIERQSV9Db2x1bW5DbGFzcywgaGF2aW5nIHR5cGUgQ29sdW1uQ2xhc3NcbiAgQ29sdW1uQ2xhc3MgPSAnY29sdW1uQ2xhc3MnLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uV2lkZ2V0VHlwZSwgaGF2aW5nIHR5cGUgQ29ubmVjdGlvbldpZGdldFR5cGVcbiAgQ29ubmVjdGlvbldpZGdldFR5cGUgPSAnY29ubmVjdGlvbldpZGdldFR5cGUnLFxuXG4gIC8vIERQSV9UYWJsZVBpbGxJY29uLCBoYXZpbmcgdHlwZSBUYWJsZVBpbGxJY29uXG4gIFRhYmxlUGlsbEljb24gPSAndGFibGVQaWxsSWNvblR5cGUnLFxuXG4gIC8vIERQSV9FbnVtZXJhdGVkRW50aXR5VHlwZSwgaGF2aW5nIHR5cGUgRW50aXR5VHlwZVxuICBFbnVtZXJhdGVkRW50aXR5VHlwZSA9ICdlbnVtZXJhdGVkRW50aXR5VHlwZScsXG5cbiAgLy8gRFBJX1BpY2tFbnRpdHlTZWFyY2hUeXBlLCBoYXZpbmcgdHlwZSBQaWNrRW50aXR5U2VhcmNoVHlwZVxuICBQaWNrRW50aXR5U2VhcmNoVHlwZSA9ICdlbnRpdHlTZWFyY2hUeXBlJyxcblxuICAvLyBEUElfRXhwcmVzc2lvbk9wLCBoYXZpbmcgdHlwZSBPcFxuICBFeHByZXNzaW9uT3AgPSAnZXhwcmVzc2lvbk9wJyxcblxuICAvLyBEUElfRXhwcmVzc2lvbk9wZXJhdG9yQ2FwdGlvbiwgaGF2aW5nIHR5cGUgRXhwcmVzc2lvbk9wZXJhdG9yQ2FwdGlvblByZXNNb2RlbFxuICBFeHByZXNzaW9uT3BlcmF0b3JDYXB0aW9uID0gJ2V4cHJlc3Npb25PcGVyYXRvckNhcHRpb24nLFxuXG4gIC8vIERQSV9SZWxhdGlvbmFsRXhwZXJlc3Npb25PcHMsIGhhdmluZyB0eXBlIEV4cHJlc3Npb25PcGVyYXRvckNhcHRpb25QcmVzTW9kZWxbXVxuICBSZWxhdGlvbmFsRXhwZXJlc3Npb25PcHMgPSAncmVsYXRpb25hbEV4cHJlc3Npb25PcHMnLFxuXG4gIC8vIERQSV9IaWVyYXJjaHlFeHByZXNzaW9uT3BzLCBoYXZpbmcgdHlwZSBFeHByZXNzaW9uT3BlcmF0b3JDYXB0aW9uUHJlc01vZGVsW11cbiAgSGllcmFyY2h5RXhwcmVzc2lvbk9wcyA9ICdoaWVyYXJjaHlFeHByZXNzaW9uT3BzJyxcblxuICAvLyBEUElfRGVmYXVsdFNvcnREaXJlY3Rpb24sIGhhdmluZyB0eXBlIFNvcnREaXJlY3Rpb25cbiAgRGVmYXVsdFNvcnREaXJlY3Rpb24gPSAnZGVmU29ydE9yZGVyJyxcblxuICAvLyBEUElfU29ydERpcmVjdGlvbiwgaGF2aW5nIHR5cGUgU29ydERpcmVjdGlvblxuICBTb3J0RGlyZWN0aW9uID0gJ3NvcnRPcmRlcicsXG5cbiAgLy8gRFBJX1NvcnREaXJlY3Rpb25WYWx1ZXMsIGhhdmluZyB0eXBlIFNvcnREaXJlY3Rpb25bXVxuICBTb3J0RGlyZWN0aW9uVmFsdWVzID0gJ3NvcnREaXJlY3Rpb25WYWx1ZXMnLFxuXG4gIC8vIERQSV9DdWJlTWV0YWRhdGFDYXRlZ29yeSwgaGF2aW5nIHR5cGUgQ3ViZU1ldGFkYXRhQ2F0ZWdvcnlcbiAgQ3ViZU1ldGFkYXRhQ2F0ZWdvcnkgPSAnY3ViZU1ldGFkYXRhQ2F0ZWdvcnknLFxuXG4gIC8vIERQSV9DdWJlTWV0YWRhdGFDYXRlZ29yaWVzLCBoYXZpbmcgdHlwZSBDdWJlTWV0YWRhdGFDYXRlZ29yeVtdXG4gIEN1YmVNZXRhZGF0YUNhdGVnb3JpZXMgPSAnY3ViZU1ldGFkYXRhQ2F0ZWdvcmllcycsXG5cbiAgLy8gRFBJX0dvb2dsZUJhc2ljSW5mb1R5cGUsIGhhdmluZyB0eXBlIEdvb2dsZUJhc2ljSW5mb1R5cGVcbiAgR29vZ2xlQmFzaWNJbmZvVHlwZSA9ICdnb29nbGVCYXNpY0luZm9UeXBlJyxcblxuICAvLyBEUElfR29vZ2xlQW5hbHl0aWNzRGF0ZVJhbmdlT3B0aW9uVHlwZSwgaGF2aW5nIHR5cGUgRGF0ZVJhbmdlXG4gIEdvb2dsZUFuYWx5dGljc0RhdGVSYW5nZU9wdGlvblR5cGUgPSAnZ29vZ2xlQW5hbHl0aWNzRGF0ZVJhbmdlT3B0aW9uVHlwZScsXG5cbiAgLy8gRFBJX1RhYmxlQ2FsY1R5cGUsIGhhdmluZyB0eXBlIFRhYmxlQ2FsY1R5cGVcbiAgVGFibGVDYWxjVHlwZSA9ICd0YWJsZUNhbGNUeXBlJyxcblxuICAvLyBEUElfVGFibGVDYWxjVHlwZVZhbHVlcywgaGF2aW5nIHR5cGUgVGFibGVDYWxjVHlwZVtdXG4gIFRhYmxlQ2FsY1R5cGVWYWx1ZXMgPSAndGFibGVDYWxjVHlwZVZhbHVlcycsXG5cbiAgLy8gRFBJX1JlbGF0aXZlQWRkcmVzcywgaGF2aW5nIHR5cGUgUmVsYXRpdmVBZGRyZXNzXG4gIFJlbGF0aXZlQWRkcmVzcyA9ICdyZWxhdGl2ZUFkZHJlc3MnLFxuXG4gIC8vIERQSV9SZWxhdGl2ZVZhbHVlcywgaGF2aW5nIHR5cGUgUmVsYXRpdmVBZGRyZXNzW11cbiAgUmVsYXRpdmVWYWx1ZXMgPSAncmVsYXRpdmVWYWx1ZXMnLFxuXG4gIC8vIERQSV9PcmRlcmluZ1R5cGUsIGhhdmluZyB0eXBlIE9yZGVyaW5nVHlwZVxuICBPcmRlcmluZ1R5cGUgPSAnb3JkZXJpbmdUeXBlJyxcblxuICAvLyBEUElfT3JkZXJpbmdUeXBlVmFsdWVzLCBoYXZpbmcgdHlwZSBPcmRlcmluZ1R5cGVbXVxuICBPcmRlcmluZ1R5cGVWYWx1ZXMgPSAnb3JkZXJpbmdUeXBlVmFsdWVzJyxcblxuICAvLyBEUElfQ2F0ZWdvcmljYWxCaW5JdGVtVHlwZSwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxCaW5JdGVtVHlwZVxuICBDYXRlZ29yaWNhbEJpbkl0ZW1UeXBlID0gJ2NhdGVnb3JpY2FsQmluSXRlbVR5cGUnLFxuXG4gIC8vIERQSV9BdXRoZW50aWNhdGlvbkluZm9zLCBoYXZpbmcgdHlwZSBBdXRoZW50aWNhdGlvblNldHRpbmdzUHJlc01vZGVsXG4gIEF1dGhlbnRpY2F0aW9uSW5mb3MgPSAnYXV0aEluZm8nLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uV2lkZ2V0UGFyYW1zLCBoYXZpbmcgdHlwZSBDb25uZWN0aW9uUGFyYW1zUHJlc01vZGVsXG4gIENvbm5lY3Rpb25XaWRnZXRQYXJhbXMgPSAnd2lkZ2V0Q29ubmVjdGlvblBhcmFtcycsXG5cbiAgLy8gRFBJX0Nvbm5lY3Rpb25TZXR0aW5ncywgaGF2aW5nIHR5cGUgQ29ubmVjdGlvblNldHRpbmdzUHJlc01vZGVsXG4gIENvbm5lY3Rpb25TZXR0aW5ncyA9ICdjb25uZWN0aW9uU2V0dGluZ3MnLFxuXG4gIC8vIERQSV9SZWNvbm5lY3RBdXRoZW50aWNhdGlvblNldHRpbmdzLCBoYXZpbmcgdHlwZSBBdXRoZW50aWNhdGlvblNldHRpbmdzUHJlc01vZGVsXG4gIFJlY29ubmVjdEF1dGhlbnRpY2F0aW9uU2V0dGluZ3MgPSAncmVjb25uZWN0QXV0aFNldHRpbmdzJyxcblxuICAvLyBEUElfQ3ViZUNvbm5lY3Rpb25TcGVjaWZpY2F0aW9uT3B0aW9uLCBoYXZpbmcgdHlwZSBDdWJlQ29ubmVjdGlvblNwZWNpZmljYXRpb25PcHRpb25QcmVzTW9kZWxcbiAgQ3ViZUNvbm5lY3Rpb25TcGVjaWZpY2F0aW9uT3B0aW9uID0gJ2N1YmVDb25uZWN0aW9uU3BlY2lmaWNhdGlvbk9wdGlvbicsXG5cbiAgLy8gRFBJX0N1YmVDb25uZWN0aW9uU3BlY2lmaWNhdGlvbk9wdGlvbnMsIGhhdmluZyB0eXBlIEN1YmVDb25uZWN0aW9uU3BlY2lmaWNhdGlvbk9wdGlvblByZXNNb2RlbFtdXG4gIEN1YmVDb25uZWN0aW9uU3BlY2lmaWNhdGlvbk9wdGlvbnMgPSAnY3ViZUNvbm5lY3Rpb25TcGVjaWZpY2F0aW9uT3B0aW9ucycsXG5cbiAgLy8gRFBJX0N1YmVDb25uZWN0aW9uU3BlY2lmaWNhdGlvbiwgaGF2aW5nIHR5cGUgQ3ViZUNvbm5lY3Rpb25TcGVjaWZpY2F0aW9uUHJlc01vZGVsXG4gIEN1YmVDb25uZWN0aW9uU3BlY2lmaWNhdGlvbiA9ICdjdWJlQ29ubmVjdGlvblNwZWNpZmljYXRpb24nLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uU2V0dGluZ3NPcHRpb24sIGhhdmluZyB0eXBlIENvbm5lY3Rpb25TZXR0aW5nc09wdGlvblByZXNNb2RlbFxuICBDb25uZWN0aW9uU2V0dGluZ3NPcHRpb24gPSAnY29ubmVjdGlvblNldHRpbmdzT3B0aW9uJyxcblxuICAvLyBEUElfQ29ubmVjdGlvblNldHRpbmdzT3B0aW9ucywgaGF2aW5nIHR5cGUgQ29ubmVjdGlvblNldHRpbmdzT3B0aW9uUHJlc01vZGVsW11cbiAgQ29ubmVjdGlvblNldHRpbmdzT3B0aW9ucyA9ICdjb25uZWN0aW9uU2V0dGluZ3NPcHRpb25zJyxcblxuICAvLyBEUElfU3RyaW5nQ29sbGF0aW9uLCBoYXZpbmcgdHlwZSBTdHJpbmdDb2xsYXRpb25QcmVzTW9kZWxcbiAgU3RyaW5nQ29sbGF0aW9uID0gJ3N0cmluZ0NvbGxhdGlvbicsXG5cbiAgLy8gRFBJX0RhdGFiYXNlRW51bWVyYXRpb24sIGhhdmluZyB0eXBlIERhdGFiYXNlRW51bWVyYXRpb25QcmVzTW9kZWxcbiAgRGF0YWJhc2VFbnVtZXJhdGlvbiA9ICdkYXRhYmFzZUVudW1lcmF0aW9uJyxcblxuICAvLyBEUElfU2NoZW1hRW51bWVyYXRpb24sIGhhdmluZyB0eXBlIFNjaGVtYUVudW1lcmF0aW9uUHJlc01vZGVsXG4gIFNjaGVtYUVudW1lcmF0aW9uID0gJ3NjaGVtYUVudW1lcmF0aW9uJyxcblxuICAvLyBEUElfU3RhbmRhcmRDb25uZWN0aW9uRW51bWVyYXRpb24sIGhhdmluZyB0eXBlIFN0YW5kYXJkQ29ubmVjdGlvbkVudW1lcmF0aW9uUHJlc01vZGVsXG4gIFN0YW5kYXJkQ29ubmVjdGlvbkVudW1lcmF0aW9uID0gJ3N0YW5kYXJkQ29ubmVjdGlvbkVudW1lcmF0aW9uJyxcblxuICAvLyBEUElfU3RvcmVkUHJvY2VkdXJlRW51bWVyYXRpb24sIGhhdmluZyB0eXBlIFN0b3JlZFByb2NlZHVyZUVudW1lcmF0aW9uUHJlc01vZGVsXG4gIFN0b3JlZFByb2NlZHVyZUVudW1lcmF0aW9uID0gJ3N0b3JlZFByb2NlZHVyZUVudW1lcmF0aW9uJyxcblxuICAvLyBEUElfVGFibGVFbnVtZXJhdGlvbiwgaGF2aW5nIHR5cGUgVGFibGVFbnVtZXJhdGlvblByZXNNb2RlbFxuICBUYWJsZUVudW1lcmF0aW9uID0gJ3RhYmxlRW51bWVyYXRpb24nLFxuXG4gIC8vIERQSV9XYXJlaG91c2VFbnVtZXJhdGlvbiwgaGF2aW5nIHR5cGUgV2FyZWhvdXNlRW51bWVyYXRpb25QcmVzTW9kZWxcbiAgV2FyZWhvdXNlRW51bWVyYXRpb24gPSAnd2FyZWhvdXNlRW51bWVyYXRpb24nLFxuXG4gIC8vIERQSV9TbG93TWV0YWRhdGFTY2hlbWFMaXN0LCBoYXZpbmcgdHlwZSBTbG93TWV0YWRhdGFTY2hlbWFMaXN0UHJlc01vZGVsXG4gIFNsb3dNZXRhZGF0YVNjaGVtYUxpc3QgPSAnc2xvd01ldGFkYXRhU2NoZW1hTGlzdCcsXG5cbiAgLy8gRFBJX1Nsb3dNZXRhZGF0YVRhYmxlTGlzdCwgaGF2aW5nIHR5cGUgU2xvd01ldGFkYXRhVGFibGVMaXN0UHJlc01vZGVsXG4gIFNsb3dNZXRhZGF0YVRhYmxlTGlzdCA9ICdzbG93TWV0YWRhdGFUYWJsZUxpc3QnLFxuXG4gIC8vIERQSV9DdWJlQ2F0YWxvZywgaGF2aW5nIHR5cGUgQ3ViZUNhdGFsb2dQcmVzTW9kZWxcbiAgQ3ViZUNhdGFsb2cgPSAnY3ViZUNhdGFsb2cnLFxuXG4gIC8vIERQSV9DdWJlQ2F0YWxvZ3MsIGhhdmluZyB0eXBlIEN1YmVDYXRhbG9nUHJlc01vZGVsW11cbiAgQ3ViZUNhdGFsb2dzID0gJ2N1YmVDYXRhbG9ncycsXG5cbiAgLy8gRFBJX0N1YmVDYXRhbG9nRW51bWVyYXRpb24sIGhhdmluZyB0eXBlIEN1YmVDYXRhbG9nRW51bWVyYXRpb25QcmVzTW9kZWxcbiAgQ3ViZUNhdGFsb2dFbnVtZXJhdGlvbiA9ICdjdWJlQ2F0YWxvZ0VudW1lcmF0aW9uJyxcblxuICAvLyBEUElfQ3ViZSwgaGF2aW5nIHR5cGUgQ3ViZVByZXNNb2RlbFxuICBDdWJlID0gJ2N1YmUnLFxuXG4gIC8vIERQSV9DdWJlcywgaGF2aW5nIHR5cGUgQ3ViZVByZXNNb2RlbFtdXG4gIEN1YmVzID0gJ2N1YmVzJyxcblxuICAvLyBEUElfQ3ViZUVudW1lcmF0aW9uLCBoYXZpbmcgdHlwZSBDdWJlRW51bWVyYXRpb25QcmVzTW9kZWxcbiAgQ3ViZUVudW1lcmF0aW9uID0gJ2N1YmVFbnVtZXJhdGlvbicsXG5cbiAgLy8gRFBJX0dvb2dsZUFuYWx5dGljc0Jhc2ljSXRlbSwgaGF2aW5nIHR5cGUgR29vZ2xlQW5hbHl0aWNzQmFzaWNJdGVtUHJlc01vZGVsXG4gIEdvb2dsZUFuYWx5dGljc0Jhc2ljSXRlbSA9ICdnb29nbGVBbmFseXRpY3NCYXNpY0l0ZW0nLFxuXG4gIC8vIERQSV9HQU1lYXN1cmVTZXRzLCBoYXZpbmcgdHlwZSBHb29nbGVBbmFseXRpY3NCYXNpY0l0ZW1QcmVzTW9kZWxbXVxuICBHQU1lYXN1cmVTZXRzID0gJ2dhTWVhc3VyZVNldHMnLFxuXG4gIC8vIERQSV9Hb29nbGVBbmFseXRpY3NWaWV3cywgaGF2aW5nIHR5cGUgR29vZ2xlQW5hbHl0aWNzQmFzaWNJdGVtUHJlc01vZGVsW11cbiAgR29vZ2xlQW5hbHl0aWNzVmlld3MgPSAnZ29vZ2xlQW5hbHl0aWNzVmlld3MnLFxuXG4gIC8vIERQSV9Hb29nbGVBbmFseXRpY3NQcm9wZXJ0aWVzLCBoYXZpbmcgdHlwZSBHb29nbGVBbmFseXRpY3NCYXNpY0l0ZW1QcmVzTW9kZWxbXVxuICBHb29nbGVBbmFseXRpY3NQcm9wZXJ0aWVzID0gJ2dvb2dsZUFuYWx5dGljc1Byb3BlcnRpZXMnLFxuXG4gIC8vIERQSV9Hb29nbGVCYXNpY0luZm9JdGVtcywgaGF2aW5nIHR5cGUgR29vZ2xlQW5hbHl0aWNzQmFzaWNJdGVtUHJlc01vZGVsW11cbiAgR29vZ2xlQmFzaWNJbmZvSXRlbXMgPSAnZ29vZ2xlQW5hbHl0aWNzQWNjb3VudHMnLFxuXG4gIC8vIERQSV9Hb29nbGVBbmFseXRpY3NDb21wbGV4SXRlbSwgaGF2aW5nIHR5cGUgR29vZ2xlQW5hbHl0aWNzQ29tcGxleEl0ZW1QcmVzTW9kZWxcbiAgR29vZ2xlQW5hbHl0aWNzQ29tcGxleEl0ZW0gPSAnZ29vZ2xlQW5hbHl0aWNzQ29tcGxleEl0ZW0nLFxuXG4gIC8vIERQSV9Hb29nbGVBbmFseXRpY3NQb3NzaWJsZURpbWVuc2lvbnMsIGhhdmluZyB0eXBlIEdvb2dsZUFuYWx5dGljc0NvbXBsZXhJdGVtUHJlc01vZGVsW11cbiAgR29vZ2xlQW5hbHl0aWNzUG9zc2libGVEaW1lbnNpb25zID0gJ2dvb2dsZUFuYWx5dGljc1Bvc3NpYmxlRGltZW5zaW9ucycsXG5cbiAgLy8gRFBJX0dvb2dsZUFuYWx5dGljc1Bvc3NpYmxlTWVhc3VyZXMsIGhhdmluZyB0eXBlIEdvb2dsZUFuYWx5dGljc0NvbXBsZXhJdGVtUHJlc01vZGVsW11cbiAgR29vZ2xlQW5hbHl0aWNzUG9zc2libGVNZWFzdXJlcyA9ICdnb29nbGVBbmFseXRpY3NQb3NzaWJsZU1lYXN1cmVzJyxcblxuICAvLyBEUElfR29vZ2xlQW5hbHl0aWNzUG9zc2libGVTZWdtZW50cywgaGF2aW5nIHR5cGUgR29vZ2xlQW5hbHl0aWNzQ29tcGxleEl0ZW1QcmVzTW9kZWxbXVxuICBHb29nbGVBbmFseXRpY3NQb3NzaWJsZVNlZ21lbnRzID0gJ2dvb2dsZUFuYWx5dGljc1Bvc3NpYmxlU2VnbWVudHMnLFxuXG4gIC8vIERQSV9Hb29nbGVBbmFseXRpY3NTZWxlY3RlZERpbWVuc2lvbnMsIGhhdmluZyB0eXBlIEdvb2dsZUFuYWx5dGljc0NvbXBsZXhJdGVtUHJlc01vZGVsW11cbiAgR29vZ2xlQW5hbHl0aWNzU2VsZWN0ZWREaW1lbnNpb25zID0gJ2dvb2dsZUFuYWx5dGljc1NlbGVjdGVkRGltZW5zaW9ucycsXG5cbiAgLy8gRFBJX0dvb2dsZUFuYWx5dGljc1NlbGVjdGVkTWVhc3VyZXMsIGhhdmluZyB0eXBlIEdvb2dsZUFuYWx5dGljc0NvbXBsZXhJdGVtUHJlc01vZGVsW11cbiAgR29vZ2xlQW5hbHl0aWNzU2VsZWN0ZWRNZWFzdXJlcyA9ICdnb29nbGVBbmFseXRpY3NTZWxlY3RlZE1lYXN1cmVzJyxcblxuICAvLyBEUElfR29vZ2xlQW5hbHl0aWNzRGF0ZVJhbmdlT3B0aW9uLCBoYXZpbmcgdHlwZSBHb29nbGVBbmFseXRpY3NEYXRlUmFuZ2VPcHRpb25QcmVzTW9kZWxcbiAgR29vZ2xlQW5hbHl0aWNzRGF0ZVJhbmdlT3B0aW9uID0gJ2dvb2dsZUFuYWx5dGljc0RhdGVSYW5nZU9wdGlvbicsXG5cbiAgLy8gRFBJX0dvb2dsZUFuYWx5dGljc0RhdGVSYW5nZU9wdGlvbnMsIGhhdmluZyB0eXBlIEdvb2dsZUFuYWx5dGljc0RhdGVSYW5nZU9wdGlvblByZXNNb2RlbFtdXG4gIEdvb2dsZUFuYWx5dGljc0RhdGVSYW5nZU9wdGlvbnMgPSAnZ29vZ2xlQW5hbHl0aWNzRGF0ZVJhbmdlT3B0aW9ucycsXG5cbiAgLy8gRFBJX0dvb2dsZUFuYWx5dGljc0VuZERhdGUsIGhhdmluZyB0eXBlIEdvb2dsZUFuYWx5dGljc0RhdGVQcmVzTW9kZWxcbiAgR29vZ2xlQW5hbHl0aWNzRW5kRGF0ZSA9ICdnb29nbGVBbmFseXRpY3NFbmREYXRlJyxcblxuICAvLyBEUElfR29vZ2xlQW5hbHl0aWNzU3RhcnREYXRlLCBoYXZpbmcgdHlwZSBHb29nbGVBbmFseXRpY3NEYXRlUHJlc01vZGVsXG4gIEdvb2dsZUFuYWx5dGljc1N0YXJ0RGF0ZSA9ICdnb29nbGVBbmFseXRpY3NTdGFydERhdGUnLFxuXG4gIC8vIERQSV9Hb29nbGVBbmFseXRpY3NEYXRlUmFuZ2UsIGhhdmluZyB0eXBlIEdvb2dsZUFuYWx5dGljc0RhdGVSYW5nZVByZXNNb2RlbFxuICBHb29nbGVBbmFseXRpY3NEYXRlUmFuZ2UgPSAnZ29vZ2xlQW5hbHl0aWNzRGF0ZVJhbmdlJyxcblxuICAvLyBEUElfR29vZ2xlQW5hbHl0aWNzUXVlcnlQYXJ0aXRpb25pbmcsIGhhdmluZyB0eXBlIEdvb2dsZUFuYWx5dGljc1F1ZXJ5UGFydGl0aW9uaW5nUHJlc01vZGVsXG4gIEdvb2dsZUFuYWx5dGljc1F1ZXJ5UGFydGl0aW9uaW5nID0gJ2dvb2dsZUFuYWx5dGljc1F1ZXJ5UGFydGl0aW9uaW5nJyxcblxuICAvLyBEUElfR0FDb25uZWN0aW9uRGVzY3JpcHRpb24sIGhhdmluZyB0eXBlIEdvb2dsZUFuYWx5dGljc0Nvbm5lY3Rpb25EZXNjcmlwdGlvblByZXNNb2RlbFxuICBHQUNvbm5lY3Rpb25EZXNjcmlwdGlvbiA9ICdnYUNvbm5lY3Rpb25EZXNjcmlwdGlvbicsXG5cbiAgLy8gRFBJX0dvb2dsZVNoZWV0SXRlbSwgaGF2aW5nIHR5cGUgR29vZ2xlU2hlZXRJdGVtUHJlc01vZGVsXG4gIEdvb2dsZVNoZWV0SXRlbSA9ICdnb29nbGVTaGVldEl0ZW0nLFxuXG4gIC8vIERQSV9Hb29nbGVTaGVldEl0ZW1zLCBoYXZpbmcgdHlwZSBHb29nbGVTaGVldEl0ZW1QcmVzTW9kZWxbXVxuICBHb29nbGVTaGVldEl0ZW1zID0gJ2dvb2dsZVNoZWV0SXRlbXMnLFxuXG4gIC8vIERQSV9Hb29nbGVTaGVldHNMaXN0UHJlc01vZGVsLCBoYXZpbmcgdHlwZSBHb29nbGVTaGVldHNMaXN0UHJlc01vZGVsXG4gIEdvb2dsZVNoZWV0c0xpc3RQcmVzTW9kZWwgPSAnZ29vZ2xlU2hlZXRzTGlzdCcsXG5cbiAgLy8gRFBJX0dvb2dsZVNoZWV0UGFuZVByZXNNb2RlbCwgaGF2aW5nIHR5cGUgR29vZ2xlU2hlZXRQYW5lUHJlc01vZGVsXG4gIEdvb2dsZVNoZWV0UGFuZVByZXNNb2RlbCA9ICdnb29nbGVTaGVldFBhbmUnLFxuXG4gIC8vIERQSV9UYWJsZWF1U2VydmVyQ29ubmVjdGlvbkRlc2NyaXB0aW9uLCBoYXZpbmcgdHlwZSBUYWJsZWF1U2VydmVyQ29ubmVjdGlvbkRlc2NyaXB0aW9uUHJlc01vZGVsXG4gIFRhYmxlYXVTZXJ2ZXJDb25uZWN0aW9uRGVzY3JpcHRpb24gPSAndGFibGVhdVNlcnZlckNvbm5lY3Rpb25EZXNjcmlwdGlvbicsXG5cbiAgLy8gRFBJX0luaXRpYWxTUUxQcmVzTW9kZWwsIGhhdmluZyB0eXBlIEluaXRpYWxTUUxQcmVzTW9kZWxcbiAgSW5pdGlhbFNRTFByZXNNb2RlbCA9ICdpbml0aWFsU3FsUHJlc01vZGVsJyxcblxuICAvLyBEUElfUXVlcnlCYW5kaW5nUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBRdWVyeUJhbmRpbmdQcmVzTW9kZWxcbiAgUXVlcnlCYW5kaW5nUHJlc01vZGVsID0gJ3F1ZXJ5QmFuZGluZ1ByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1Nsb3dNZXRhZGF0YSwgaGF2aW5nIHR5cGUgU2xvd01ldGFkYXRhUHJlc01vZGVsXG4gIFNsb3dNZXRhZGF0YSA9ICdzbG93TWV0YWRhdGEnLFxuXG4gIC8vIERQSV9TbG93TWV0YWRhdGFTY2hlbWFTZWFyY2hQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFNsb3dNZXRhZGF0YVNlYXJjaFByZXNNb2RlbFxuICBTbG93TWV0YWRhdGFTY2hlbWFTZWFyY2hQcmVzTW9kZWwgPSAnc2xvd01ldGFkYXRhU2NoZW1hU2VhcmNoJyxcblxuICAvLyBEUElfU2xvd01ldGFkYXRhVGFibGVTZWFyY2hQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFNsb3dNZXRhZGF0YVNlYXJjaFByZXNNb2RlbFxuICBTbG93TWV0YWRhdGFUYWJsZVNlYXJjaFByZXNNb2RlbCA9ICdzbG93TWV0YWRhdGFUYWJsZVNlYXJjaCcsXG5cbiAgLy8gRFBJX1RhYmxlYXVTZXJ2ZXJQcm9qZWN0c1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgVGFibGVhdVNlcnZlclByb2plY3RzUHJlc01vZGVsXG4gIFRhYmxlYXVTZXJ2ZXJQcm9qZWN0c1ByZXNNb2RlbCA9ICd0YWJsZWF1U2VydmVyUHJvamVjdHNQcmVzbW9kZWwnLFxuXG4gIC8vIERQSV9UYWJsZWF1U2VydmVyRGF0YVNvdXJjZVByZXNNb2RlbCwgaGF2aW5nIHR5cGUgVGFibGVhdVNlcnZlckRhdGFTb3VyY2VQcmVzTW9kZWxcbiAgVGFibGVhdVNlcnZlckRhdGFTb3VyY2VQcmVzTW9kZWwgPSAndGFibGVhdVNlcnZlckRhdGFTb3VyY2VQcmVzbW9kZWwnLFxuXG4gIC8vIERQSV9UYWJsZWF1U2VydmVyRGF0YVNvdXJjZVByZXNNb2RlbHMsIGhhdmluZyB0eXBlIFRhYmxlYXVTZXJ2ZXJEYXRhU291cmNlUHJlc01vZGVsW11cbiAgVGFibGVhdVNlcnZlckRhdGFTb3VyY2VQcmVzTW9kZWxzID0gJ3RhYmxlYXVTZXJ2ZXJEYXRhU291cmNlUHJlc21vZGVscycsXG5cbiAgLy8gRFBJX1RhYmxlYXVTZXJ2ZXJEYXRhU291cmNlc1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgVGFibGVhdVNlcnZlckRhdGFTb3VyY2VzUHJlc01vZGVsXG4gIFRhYmxlYXVTZXJ2ZXJEYXRhU291cmNlc1ByZXNNb2RlbCA9ICd0YWJsZWF1U2VydmVyRGF0YVNvdXJjZXNQcmVzbW9kZWwnLFxuXG4gIC8vIERQSV9UYWJsZWF1U2VydmVyRGF0YVByZXNNb2RlbCwgaGF2aW5nIHR5cGUgVGFibGVhdVNlcnZlckRhdGFQcmVzTW9kZWxcbiAgVGFibGVhdVNlcnZlckRhdGFQcmVzTW9kZWwgPSAndGFibGVhdVNlcnZlckRhdGFQcmVzbW9kZWwnLFxuXG4gIC8vIERQSV9TdG9yZWRQcm9jZWR1cmVQYXJhbWV0ZXJQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFN0b3JlZFByb2NlZHVyZVBhcmFtZXRlclByZXNNb2RlbFxuICBTdG9yZWRQcm9jZWR1cmVQYXJhbWV0ZXJQcmVzTW9kZWwgPSAnc3RvcmVkUHJvY2VkdXJlUGFyYW1ldGVyJyxcblxuICAvLyBEUElfU3RvcmVkUHJvY2VkdXJlUGFyYW1ldGVyc1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgU3RvcmVkUHJvY2VkdXJlUGFyYW1ldGVyUHJlc01vZGVsW11cbiAgU3RvcmVkUHJvY2VkdXJlUGFyYW1ldGVyc1ByZXNNb2RlbCA9ICdzdG9yZWRQcm9jZWR1cmVQYXJhbWV0ZXJzJyxcblxuICAvLyBEUElfQ3VzdG9tU1FMSW5mbywgaGF2aW5nIHR5cGUgQ3VzdG9tU1FMSW5mb1ByZXNNb2RlbFxuICBDdXN0b21TUUxJbmZvID0gJ2N1c3RvbVNxbEluZm8nLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uVGFibGVJbmZvLCBoYXZpbmcgdHlwZSBDb25uZWN0aW9uVGFibGVJbmZvUHJlc01vZGVsXG4gIENvbm5lY3Rpb25UYWJsZUluZm8gPSAnY29ubmVjdGlvblRhYmxlSW5mbycsXG5cbiAgLy8gRFBJX1RhYmxlSW5mb3MsIGhhdmluZyB0eXBlIENvbm5lY3Rpb25UYWJsZUluZm9QcmVzTW9kZWxbXVxuICBUYWJsZUluZm9zID0gJ3RhYmxlSW5mb3MnLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uRGVzY3JpcHRpb24sIGhhdmluZyB0eXBlIENvbm5lY3Rpb25EZXNjcmlwdGlvblByZXNNb2RlbFxuICBDb25uZWN0aW9uRGVzY3JpcHRpb24gPSAnY29ubmVjdGlvbkRlc2NyaXB0aW9uJyxcblxuICAvLyBEUElfRGF0YVNvdXJjZVBhcnNlclZhbGlkYXRpb25Nb2RlLCBoYXZpbmcgdHlwZSBEYXRhU291cmNlUGFyc2VyVmFsaWRhdGlvbk1vZGVcbiAgRGF0YVNvdXJjZVBhcnNlclZhbGlkYXRpb25Nb2RlID0gJ2RhdGFTb3VyY2VQYXJzZXJWYWxpZGF0aW9uTW9kZScsXG5cbiAgLy8gRFBJX09BdXRoQ3JlZGVudGlhbFR5cGVJbmZvLCBoYXZpbmcgdHlwZSBPQXV0aENyZWRlbnRpYWxUeXBlSW5mb1ByZXNNb2RlbFxuICBPQXV0aENyZWRlbnRpYWxUeXBlSW5mbyA9ICdvYXV0aENyZWRlbnRpYWxUeXBlSW5mbycsXG5cbiAgLy8gRFBJX09BdXRoQ3JlZGVudGlhbFR5cGVJbmZvcywgaGF2aW5nIHR5cGUgT0F1dGhDcmVkZW50aWFsVHlwZUluZm9QcmVzTW9kZWxbXVxuICBPQXV0aENyZWRlbnRpYWxUeXBlSW5mb3MgPSAnb2F1dGhDcmVkZW50aWFsVHlwZUluZm9zJyxcblxuICAvLyBEUElfT0F1dGhTZXR0aW5ncywgaGF2aW5nIHR5cGUgT0F1dGhTZXR0aW5nc1ByZXNNb2RlbFxuICBPQXV0aFNldHRpbmdzID0gJ29hdXRoU2V0dGluZ3MnLFxuXG4gIC8vIERQSV9DcmVkZW50aWFsVHlwZVByb3BlcnRpZXNGbGFnLCBoYXZpbmcgdHlwZSBDcmVkZW50aWFsVHlwZVByb3BlcnRpZXNGbGFnXG4gIENyZWRlbnRpYWxUeXBlUHJvcGVydGllc0ZsYWcgPSAnY3JlZGVudGlhbFR5cGVQcm9wZXJ0aWVzRmxhZycsXG5cbiAgLy8gRFBJX0NyZWRlbnRpYWxUeXBlUHJvcGVydGllc0ZsYWdzLCBoYXZpbmcgdHlwZSBDcmVkZW50aWFsVHlwZVByb3BlcnRpZXNGbGFnW11cbiAgQ3JlZGVudGlhbFR5cGVQcm9wZXJ0aWVzRmxhZ3MgPSAnY3JlZGVudGlhbFR5cGVQcm9wZXJ0aWVzRmxhZ3MnLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uVHlwZUVudW0sIGhhdmluZyB0eXBlIENvbm5lY3Rpb25UeXBlRW51bVxuICBDb25uZWN0aW9uVHlwZUVudW0gPSAnY29ubmVjdGlvblR5cGVFbnVtJyxcblxuICAvLyBEUElfQ29ubmVjdG9yVHlwZSwgaGF2aW5nIHR5cGUgQ29ubmVjdG9yVHlwZVxuICBDb25uZWN0b3JUeXBlID0gJ2Nvbm5lY3RvclR5cGUnLFxuXG4gIC8vIERQSV9QZGZQYWdlUGlja2VyLCBoYXZpbmcgdHlwZSBQZGZQYWdlUGlja2VyUHJlc01vZGVsXG4gIFBkZlBhZ2VQaWNrZXIgPSAncGRmUGFnZVBpY2tlcicsXG5cbiAgLy8gRFBJX0FjdGl2YXRlTmV3LCBoYXZpbmcgdHlwZSBib29sXG4gIEFjdGl2YXRlTmV3ID0gJ2FjdGl2YXRlTmV3JyxcblxuICAvLyBEUElfQWRkQWN0aW9ucywgaGF2aW5nIHR5cGUgYm9vbFxuICBBZGRBY3Rpb25zID0gJ2FkZEFjdGlvbnMnLFxuXG4gIC8vIERQSV9BZGRBc0Zsb2F0aW5nLCBoYXZpbmcgdHlwZSBib29sXG4gIEFkZEFzRmxvYXRpbmcgPSAnYWRkQXNGbG9hdGluZycsXG5cbiAgLy8gRFBJX0FkZENvbG9yRGljdGlvbmFyeSwgaGF2aW5nIHR5cGUgYm9vbFxuICBBZGRDb2xvckRpY3Rpb25hcnkgPSAnYWRkQ29sb3JEaWN0aW9uYXJ5JyxcblxuICAvLyBEUElfQWRkRHJvcGxpbmVzLCBoYXZpbmcgdHlwZSBib29sXG4gIEFkZERyb3BsaW5lcyA9ICdhZGREcm9wbGluZXMnLFxuXG4gIC8vIERQSV9BZGRIZWFkZXJzLCBoYXZpbmcgdHlwZSBib29sXG4gIEFkZEhlYWRlcnMgPSAnYWRkSGVhZGVycycsXG5cbiAgLy8gRFBJX0FkZEhpZ2hsaWdodGluZywgaGF2aW5nIHR5cGUgYm9vbFxuICBBZGRIaWdobGlnaHRpbmcgPSAnYWRkSGlnaGxpZ2h0aW5nJyxcblxuICAvLyBEUElfQWRkSW1hZ2VEaWN0aW9uYXJ5LCBoYXZpbmcgdHlwZSBib29sXG4gIEFkZEltYWdlRGljdGlvbmFyeSA9ICdhZGRJbWFnZURpY3Rpb25hcnknLFxuXG4gIC8vIERQSV9BZGRNYXJrTGFiZWxzLCBoYXZpbmcgdHlwZSBib29sXG4gIEFkZE1hcmtMYWJlbHMgPSAnYWRkTWFya0xhYmVscycsXG5cbiAgLy8gRFBJX0FkZFBhZ2VzLCBoYXZpbmcgdHlwZSBib29sXG4gIEFkZFBhZ2VzID0gJ2FkZFBhZ2VzJyxcblxuICAvLyBEUElfQWRkU2VsZWN0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIEFkZFNlbGVjdGlvbiA9ICdhZGRTZWxlY3Rpb24nLFxuXG4gIC8vIERQSV9BZGRUb0ZvbGRlciwgaGF2aW5nIHR5cGUgYm9vbFxuICBBZGRUb0ZvbGRlciA9ICdhZGRUb0ZvbGRlcicsXG5cbiAgLy8gRFBJX0FkZFZpekRhdGEsIGhhdmluZyB0eXBlIGJvb2xcbiAgQWRkVml6RGF0YSA9ICdhZGRWaXpEYXRhJyxcblxuICAvLyBEUElfQWxlcnRDb25kaXRpb25NZXQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQWxlcnRDb25kaXRpb25NZXQgPSAnYWxlcnRDb25kaXRpb25NZXQnLFxuXG4gIC8vIERQSV9BbGxGaWVsZHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgQWxsRmllbGRzID0gJ2FsbEZpZWxkcycsXG5cbiAgLy8gRFBJX0FsbE9uRW1wdHksIGhhdmluZyB0eXBlIGJvb2xcbiAgQWxsT25FbXB0eSA9ICdhbGxPbkVtcHR5JyxcblxuICAvLyBEUElfQWxsUGFnZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgQWxsUGFnZXMgPSAnaW5jbHVkZUFsbFBhZ2VzJyxcblxuICAvLyBEUElfQWxsb3dQcmV2aWV3U2l6ZUNoYW5nZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd1ByZXZpZXdTaXplQ2hhbmdlID0gJ2FsbG93UHJldmlld1NpemVDaGFuZ2UnLFxuXG4gIC8vIERQSV9BbGxTZWxlY3RlZElzRWZmZWN0aXZlbHlSYW5nZVR5cGVBbGwsIGhhdmluZyB0eXBlIGJvb2xcbiAgQWxsU2VsZWN0ZWRJc0VmZmVjdGl2ZWx5UmFuZ2VUeXBlQWxsID0gJ2FsbFNlbGVjdGVkSXNFZmZlY3RpdmVseVJhbmdlVHlwZUFsbCcsXG5cbiAgLy8gRFBJX0FsbFN0b3J5UG9pbnRzLCBoYXZpbmcgdHlwZSBib29sXG4gIEFsbFN0b3J5UG9pbnRzID0gJ2FsbFN0b3J5cG9pbnRzJyxcblxuICAvLyBEUElfQWxsb3dBbGxSYW5nZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd0FsbFJhbmdlID0gJ2FsbG93QWxsUmFuZ2UnLFxuXG4gIC8vIERQSV9BbGxvd0NyZWF0aW5nTmV3UGFyYW1ldGVycywgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd0NyZWF0aW5nTmV3UGFyYW1ldGVycyA9ICdhbGxvd0NyZWF0aW5nTmV3UGFyYW1ldGVycycsXG5cbiAgLy8gRFBJX0FsbG93RHVwbGljYXRlRmllbGREcm9wT25GaWx0ZXJTaGVsZiwgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd0R1cGxpY2F0ZUZpZWxkRHJvcE9uRmlsdGVyU2hlbGYgPSAnYWxsb3dEdXBsaWNhdGVGaWVsZERyb3BPbkZpbHRlclNoZWxmJyxcblxuICAvLyBEUElfQWxsb3dGaWx0ZXJQcmVzZXQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQWxsb3dGaWx0ZXJQcmVzZXQgPSAnYWxsb3dGaWx0ZXJQcmVzZXQnLFxuXG4gIC8vIERQSV9BbGxvd0hvdmVyQWN0aW9ucywgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd0hvdmVyQWN0aW9ucyA9ICdhbGxvd0hvdmVyQWN0aW9ucycsXG5cbiAgLy8gRFBJX0FsbG93SHlwaGVuYXRpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgQWxsb3dIeXBoZW5hdGlvbiA9ICdhbGxvd0h5cGhlbmF0aW9uJyxcblxuICAvLyBEUElfQWxsb3dKb2luT25DYWxjLCBoYXZpbmcgdHlwZSBib29sXG4gIEFsbG93Sm9pbk9uQ2FsYyA9ICdhbGxvd0pvaW5PbkNhbGMnLFxuXG4gIC8vIERQSV9BbGxvd01hbnVhbFJhbmdlLCBoYXZpbmcgdHlwZSBib29sXG4gIEFsbG93TWFudWFsUmFuZ2UgPSAnYWxsb3dNYW51YWxSYW5nZScsXG5cbiAgLy8gRFBJX0FsbG93TWFwcGluZywgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd01hcHBpbmcgPSAnYWxsb3dNYXBwaW5nJyxcblxuICAvLyBEUElfQWxsb3dNdWx0aVNlbGVjdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd011bHRpU2VsZWN0ID0gJ2FsbG93TXVsdGlTZWxlY3QnLFxuXG4gIC8vIERQSV9BbGxvd051bGwsIGhhdmluZyB0eXBlIGJvb2xcbiAgQWxsb3dOdWxsID0gJ2FsbG93TnVsbCcsXG5cbiAgLy8gRFBJX0FsbG93UGFuWm9vbSwgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd1Bhblpvb20gPSAnYWxsb3dQYW5ab29tJyxcblxuICAvLyBEUElfQWxsb3dQYXR0ZXJuQmFzZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQWxsb3dQYXR0ZXJuQmFzZWQgPSAnYWxsb3dQYXR0ZXJuQmFzZWRVbmlvbicsXG5cbiAgLy8gRFBJX0FsbG93UHJvbXB0VGV4dCwgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd1Byb21wdFRleHQgPSAnYWxsb3dQcm9tcHRUZXh0JyxcblxuICAvLyBEUElfQWxsb3dTYXZlRGF0YVNvdXJjZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd1NhdmVEYXRhU291cmNlID0gJ2FsbG93U2F2ZURhdGFTb3VyY2UnLFxuXG4gIC8vIERQSV9BbGxvd1dob2xlRGF0ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd1dob2xlRGF0ZSA9ICdhbGxvd1dob2xlRGF0ZScsXG5cbiAgLy8gRFBJX0FsbG93V29yaywgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd1dvcmsgPSAnYWxsb3dXb3JrJyxcblxuICAvLyBEUElfQWxsb3dXcmFwLCBoYXZpbmcgdHlwZSBib29sXG4gIEFsbG93V3JhcCA9ICdhbGxvd1dyYXAnLFxuXG4gIC8vIERQSV9BcHBJczMyQml0LCBoYXZpbmcgdHlwZSBib29sXG4gIEFwcElzMzJCaXQgPSAnYXBwSXMzMkJpdCcsXG5cbiAgLy8gRFBJX0FwcElzNjRCaXQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQXBwSXM2NEJpdCA9ICdhcHBJczY0Qml0JyxcblxuICAvLyBEUElfQXBwSXNCZXRhLCBoYXZpbmcgdHlwZSBib29sXG4gIEFwcElzQmV0YSA9ICdhcHBJc0JldGEnLFxuXG4gIC8vIERQSV9BcHBJc09FTSwgaGF2aW5nIHR5cGUgYm9vbFxuICBBcHBJc09FTSA9ICdhcHBJc09lbScsXG5cbiAgLy8gRFBJX0FwcGVuZFRkZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBBcHBlbmRUZGUgPSAnYXBwZW5kVGRlJyxcblxuICAvLyBEUElfQXBwbHlDb2xvcnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgQXBwbHlDb2xvcnMgPSAnYXBwbHlDb2xvcnMnLFxuXG4gIC8vIERQSV9BcHBseU5ld1NlbGVjdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBBcHBseU5ld1NlbGVjdGlvbiA9ICdhcHBseU5ld1NlbGVjdGlvbicsXG5cbiAgLy8gRFBJX0FyZUNvbmZpZGVuY2VCYW5kc1ZhbGlkLCBoYXZpbmcgdHlwZSBib29sXG4gIEFyZUNvbmZpZGVuY2VCYW5kc1ZhbGlkID0gJ2FyZUNvbmZpZGVuY2VCYW5kc1ZhbGlkJyxcblxuICAvLyBEUElfQXJlRGF0YVNvdXJjZUZpbHRlcnNWaXNpYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gIEFyZURhdGFTb3VyY2VGaWx0ZXJzVmlzaWJsZSA9ICdhcmVEYXRhU291cmNlRmlsdGVyc1Zpc2libGUnLFxuXG4gIC8vIERQSV9BcmVFeHRyYWN0RmlsdGVyc0VuYWJsZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQXJlRXh0cmFjdEZpbHRlcnNFbmFibGVkID0gJ2FyZUV4dHJhY3RGaWx0ZXJzRW5hYmxlZCcsXG5cbiAgLy8gRFBJX0FyZVRvdGFsc1VzZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQXJlVG90YWxzVXNlZCA9ICdhcmVUb3RhbHNVc2VkJyxcblxuICAvLyBEUElfQXRUaGVMZXZlbEZpZWxkSXNJbnZhbGlkLCBoYXZpbmcgdHlwZSBib29sXG4gIEF0VGhlTGV2ZWxGaWVsZElzSW52YWxpZCA9ICdhdFRoZUxldmVsRmllbGRJc0ludmFsaWQnLFxuXG4gIC8vIERQSV9BdXRvVVJMLCBoYXZpbmcgdHlwZSBib29sXG4gIEF1dG9VUkwgPSAnYXV0b1VybCcsXG5cbiAgLy8gRFBJX0F1dG9VcGRhdGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgQXV0b1VwZGF0ZSA9ICdhdXRvVXBkYXRlJyxcblxuICAvLyBEUElfQmFja2luZ1NoZWV0SXNEYXNoYm9hcmQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQmFja2luZ1NoZWV0SXNEYXNoYm9hcmQgPSAnaXNCYWNraW5nU2hlZXREYXNoYm9hcmQnLFxuXG4gIC8vIERQSV9CZWdpbkRhdGFTb3VyY2VQcmVzTW9kZWxVcGRhdGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgQmVnaW5EYXRhU291cmNlUHJlc01vZGVsVXBkYXRlID0gJ2JlZ2luRGF0YVNvdXJjZVByZXNNb2RlbFVwZGF0ZScsXG5cbiAgLy8gRFBJX0FnZ3JlZ2F0ZURyaWxsVXAsIGhhdmluZyB0eXBlIGJvb2xcbiAgQWdncmVnYXRlRHJpbGxVcCA9ICdib29sQWdncmVnYXRlRHJpbGxVcCcsXG5cbiAgLy8gRFBJX0JveHBsb3RNYXJrRXhjbHVzaW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIEJveHBsb3RNYXJrRXhjbHVzaW9uID0gJ2JveHBsb3RNYXJrRXhjbHVzaW9uJyxcblxuICAvLyBEUElfQnJlYWtQYWdlT25QYW5lLCBoYXZpbmcgdHlwZSBib29sXG4gIEJyZWFrUGFnZU9uUGFuZSA9ICdicmVha1BhZ2VPblBhbmUnLFxuXG4gIC8vIERQSV9CcnVzaExlZ2VuZHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgQnJ1c2hMZWdlbmRzID0gJ2JydXNoTGVnZW5kcycsXG5cbiAgLy8gRFBJX0NhY2hlUHJlc01vZGVscywgaGF2aW5nIHR5cGUgYm9vbFxuICBDYWNoZVByZXNNb2RlbHMgPSAnY2FjaGVQcmVzTW9kZWxzJyxcblxuICAvLyBEUElfQ2FuQWRkQ29ubmVjdGlvbnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2FuQWRkQ29ubmVjdGlvbnMgPSAnY2FuQWRkQ29ubmVjdGlvbnMnLFxuXG4gIC8vIERQSV9Tb3J0UGlsbENhbkJlRHJhZ2dlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTb3J0UGlsbENhbkJlRHJhZ2dlZCA9ICdzb3J0UGlsbENhbkJlRHJhZ2dlZCcsXG5cbiAgLy8gRFBJX0NhbkFkZFRhYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gIENhbkFkZFRhYmxlID0gJ2NhbkFkZFRhYmxlJyxcblxuICAvLyBEUElfQ2FuQW5hbHl6ZURhdGEsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2FuQW5hbHl6ZURhdGEgPSAnY2FuQW5hbHl6ZURhdGEnLFxuXG4gIC8vIERQSV9DYW5DaGFuZ2VEYXRhVHlwZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5DaGFuZ2VEYXRhVHlwZSA9ICdjYW5DaGFuZ2VEYXRhVHlwZScsXG5cbiAgLy8gRFBJX0NhbkNoYW5nZVNlbWFudGljUm9sZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5DaGFuZ2VTZW1hbnRpY1JvbGUgPSAnY2FuQ2hhbmdlU2VtYW50aWNSb2xlJyxcblxuICAvLyBEUElfQ2FuRGVyaXZlLCBoYXZpbmcgdHlwZSBib29sXG4gIENhbkRlcml2ZSA9ICdjYW5EZXJpdmUnLFxuXG4gIC8vIERQSV9DYW5Ecm9wLCBoYXZpbmcgdHlwZSBib29sXG4gIENhbkRyb3AgPSAnY2FuRHJvcCcsXG5cbiAgLy8gRFBJX0NhbkVkaXQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2FuRWRpdCA9ICdjYW5FZGl0JyxcblxuICAvLyBEUElfQ2FuRWRpdExlZ2VuZENvbG9yLCBoYXZpbmcgdHlwZSBib29sXG4gIENhbkVkaXRMZWdlbmRDb2xvciA9ICdjYW5FZGl0TGVnZW5kQ29sb3InLFxuXG4gIC8vIERQSV9DYW5FbmFibGVDZW50ZXIsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2FuRW5hYmxlQ2VudGVyID0gJ2NhbkVuYWJsZUNlbnRlcicsXG5cbiAgLy8gRFBJX0NhblNob3dBZHZhbmNlZFNldHRpbmdzLCBoYXZpbmcgdHlwZSBib29sXG4gIENhblNob3dBZHZhbmNlZFNldHRpbmdzID0gJ2NhblNob3dBZHZhbmNlZFNldHRpbmdzJyxcblxuICAvLyBEUElfQ2FuRW5hYmxlRmlsdGVyU3RhdGVCdXR0b24sIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2FuRW5hYmxlRmlsdGVyU3RhdGVCdXR0b24gPSAnY2FuRW5hYmxlRmlsdGVyU3RhdGVCdXR0b24nLFxuXG4gIC8vIERQSV9DYW5GbG9hdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5GbG9hdCA9ICdjYW5GbG9hdCcsXG5cbiAgLy8gRFBJX0NhbkhhdmVUaXRsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5IYXZlVGl0bGUgPSAnY2FuSGF2ZVRpdGxlJyxcblxuICAvLyBEUElfQ2FuSWdub3JlVXBkYXRlLCBoYXZpbmcgdHlwZSBib29sXG4gIENhbklnbm9yZVVwZGF0ZSA9ICdjYW5JZ25vcmVVcGRhdGUnLFxuXG4gIC8vIERQSV9DYW5OYXZpZ2F0ZUJhY2ssIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2FuTmF2aWdhdGVCYWNrID0gJ2Nhbk5hdmlnYXRlQmFjaycsXG5cbiAgLy8gRFBJX0Nhbk5hdmlnYXRlRm9yd2FyZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5OYXZpZ2F0ZUZvcndhcmQgPSAnY2FuTmF2aWdhdGVGb3J3YXJkJyxcblxuICAvLyBEUElfQ2FuU2Nyb2xsWCwgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5TY3JvbGxYID0gJ2NhblNjcm9sbFgnLFxuXG4gIC8vIERQSV9DYW5TY3JvbGxZLCBoYXZpbmcgdHlwZSBib29sXG4gIENhblNjcm9sbFkgPSAnY2FuU2Nyb2xsWScsXG5cbiAgLy8gRFBJX0NhblNldERvbWFpbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5TZXREb21haW4gPSAnY2FuU2V0RG9tYWluJyxcblxuICAvLyBEUElfQ2FuU2V0TWFwVW5pdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5TZXRNYXBVbml0ID0gJ2NhblNldE1hcFVuaXQnLFxuXG4gIC8vIERQSV9DYW5TaG93QXBwbHlCdXR0b24sIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2FuU2hvd0FwcGx5QnV0dG9uID0gJ2NhblNob3dBcHBseUJ1dHRvbicsXG5cbiAgLy8gRFBJX0NhblNob3dGaWx0ZXJTdGF0ZUJ1dHRvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5TaG93RmlsdGVyU3RhdGVCdXR0b24gPSAnY2FuU2hvd0ZpbHRlclN0YXRlQnV0dG9uJyxcblxuICAvLyBEUElfQ2FuU2hvd01vcmVGZXdlckJ1dHRvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5TaG93TW9yZUZld2VyQnV0dG9uID0gJ2NhblNob3dNb3JlRmV3ZXJCdXR0b24nLFxuXG4gIC8vIERQSV9DYW5TaG93U3luY0NsaWVudE9wdGlvbnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2FuU2hvd1N5bmNDbGllbnRPcHRpb25zID0gJ2NhblNob3dTeW5jQ2xpZW50T3B0aW9ucycsXG5cbiAgLy8gRFBJX0NhblNvcnQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2FuU29ydCA9ICdjYW5Tb3J0JyxcblxuICAvLyBEUElfQ2FuU29ydE9yZGluYWxseSwgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5Tb3J0T3JkaW5hbGx5ID0gJ2NhblNvcnRPcmRpbmFsJyxcblxuICAvLyBEUElfQ2FuVG9nZ2xlQXV0b21hdGljRHJpbGwsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2FuVG9nZ2xlQXV0b21hdGljRHJpbGwgPSAnY2FuVG9nZ2xlQXV0b21hdGljRHJpbGwnLFxuXG4gIC8vIERQSV9DYW5Ub2dnbGVHZW9ncmFwaGljU2VhcmNoLCBoYXZpbmcgdHlwZSBib29sXG4gIENhblRvZ2dsZUdlb2dyYXBoaWNTZWFyY2ggPSAnY2FuVG9nZ2xlR2VvZ3JhcGhpY1NlYXJjaCcsXG5cbiAgLy8gRFBJX0NhblRvZ2dsZU1hcFNjYWxlLCBoYXZpbmcgdHlwZSBib29sXG4gIENhblRvZ2dsZU1hcFNjYWxlID0gJ2NhblRvZ2dsZU1hcFNjYWxlJyxcblxuICAvLyBEUElfQ2FuVXNlRnVsbENvbG9yUmFuZ2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2FuVXNlRnVsbENvbG9yUmFuZ2UgPSAnY2FuVXNlRnVsbENvbG9yUmFuZ2UnLFxuXG4gIC8vIERQSV9DYW5BZGRUb0RyaWxsUGF0aCwgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5BZGRUb0RyaWxsUGF0aCA9ICdjYW5BZGRUb0RyaWxsUGF0aCcsXG5cbiAgLy8gRFBJX0NlbnRlckhvcml6b250YWxseSwgaGF2aW5nIHR5cGUgYm9vbFxuICBDZW50ZXJIb3Jpem9udGFsbHkgPSAnY2VudGVySG9yaXpvbnRhbGx5JyxcblxuICAvLyBEUElfQ2VudGVyVmVydGljYWxseSwgaGF2aW5nIHR5cGUgYm9vbFxuICBDZW50ZXJWZXJ0aWNhbGx5ID0gJ2NlbnRlclZlcnRpY2FsbHknLFxuXG4gIC8vIERQSV9DaGFuZ2VBbGxGaWVsZHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2hhbmdlQWxsRmllbGRzID0gJ2NoYW5nZUFsbEZpZWxkcycsXG5cbiAgLy8gRFBJX0NoYW5nZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2hhbmdlZCA9ICdjaGFuZ2VkJyxcblxuICAvLyBEUElfQ2xlYXJCcnVzaGluZywgaGF2aW5nIHR5cGUgYm9vbFxuICBDbGVhckJydXNoaW5nID0gJ2NsZWFyQnJ1c2hpbmcnLFxuXG4gIC8vIERQSV9DbGVhclNvcnQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2xlYXJTb3J0ID0gJ2NsZWFyU29ydCcsXG5cbiAgLy8gRFBJX0NsZWFyVmlldywgaGF2aW5nIHR5cGUgYm9vbFxuICBDbGVhclZpZXcgPSAnY2xlYXJWaWV3JyxcblxuICAvLyBEUElfQ29sbGFwc2VkLCBoYXZpbmcgdHlwZSBib29sXG4gIENvbGxhcHNlZCA9ICdjb2xsYXBzZWQnLFxuXG4gIC8vIERQSV9Db25zb2xpZGF0ZUluQ29tbWl0LCBoYXZpbmcgdHlwZSBib29sXG4gIENvbnNvbGlkYXRlSW5Db21taXQgPSAnY29uc29saWRhdGVJbkNvbW1pdCcsXG5cbiAgLy8gRFBJX0NsdXN0ZXJFbmFibGVTY2FsZWRDaGVja2JveCwgaGF2aW5nIHR5cGUgYm9vbFxuICBDbHVzdGVyRW5hYmxlU2NhbGVkQ2hlY2tib3ggPSAnY2x1c3RlckVuYWJsZVNjYWxlZENoZWNrYm94JyxcblxuICAvLyBEUElfQ29tbWl0UGlsbEZpbmlzaGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIENvbW1pdFBpbGxGaW5pc2hlZCA9ICdjb21taXRQaWxsRmluaXNoZWQnLFxuXG4gIC8vIERQSV9Db21wcmVzc0FycmF5cywgaGF2aW5nIHR5cGUgYm9vbFxuICBDb21wcmVzc0FycmF5cyA9ICdjb21wcmVzc0FycmF5cycsXG5cbiAgLy8gRFBJX0NvbXB1dGVDb21wb3VuZGVkUmF0ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBDb21wdXRlQ29tcG91bmRlZFJhdGUgPSAnY29tcHV0ZUNvbXBvdW5kZWRSYXRlJyxcblxuICAvLyBEUElfQ29uZmlkZW5jZUludGVydmFsQWxsb3dlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBDb25maWRlbmNlSW50ZXJ2YWxBbGxvd2VkID0gJ2NvbmZpZGVuY2VJbnRlcnZhbEFsbG93ZWQnLFxuXG4gIC8vIERQSV9Db25maWdJc0Rlc2t0b3BTdGFuZGFyZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBDb25maWdJc0Rlc2t0b3BTdGFuZGFyZCA9ICdjb25maWdJc0Rlc2t0b3BTdGFuZGFyZCcsXG5cbiAgLy8gRFBJX0NvbmZpZ0lzSW50ZXJhY3RvciwgaGF2aW5nIHR5cGUgYm9vbFxuICBDb25maWdJc0ludGVyYWN0b3IgPSAnY29uZmlnSXNJbnRlcmFjdG9yJyxcblxuICAvLyBEUElfQ29uZmlnSXNQdWJsaWMsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ29uZmlnSXNQdWJsaWMgPSAnY29uZmlnSXNQdWJsaWMnLFxuXG4gIC8vIERQSV9Db25maWdJc1JlYWRlciwgaGF2aW5nIHR5cGUgYm9vbFxuICBDb25maWdJc1JlYWRlciA9ICdjb25maWdJc1JlYWRlcicsXG5cbiAgLy8gRFBJX0NvbnRhaW5zUXVhbnQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ29udGFpbnNRdWFudCA9ICdjb250YWluc1F1YW50JyxcblxuICAvLyBEUElfQ29udGFpbnNWYWxpZERhdGFzb3VyY2VzLCBoYXZpbmcgdHlwZSBib29sXG4gIENvbnRhaW5zVmFsaWREYXRhc291cmNlcyA9ICdjb250YWluc1ZhbGlkRGF0YXNvdXJjZXMnLFxuXG4gIC8vIERQSV9Db250cm9sbGVyTWlzc2luZywgaGF2aW5nIHR5cGUgYm9vbFxuICBDb250cm9sbGVyTWlzc2luZyA9ICdjb250cm9sbGVyTWlzc2luZycsXG5cbiAgLy8gRFBJX0NyZWF0ZUV4dHJhY3RGb3JQdWJsaXNoLCBoYXZpbmcgdHlwZSBib29sXG4gIENyZWF0ZUV4dHJhY3RGb3JQdWJsaXNoID0gJ2NyZWF0ZUV4dHJhY3RGb3JQdWJsaXNoJyxcblxuICAvLyBEUElfQ3Jvc3NUYWIsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ3Jvc3NUYWIgPSAnY3Jvc3NUYWInLFxuXG4gIC8vIERQSV9DdWxsTGFiZWxzLCBoYXZpbmcgdHlwZSBib29sXG4gIEN1bGxMYWJlbHMgPSAnY3VsbExhYmVscycsXG5cbiAgLy8gRFBJX0N1cnJlbnRDdXN0Vmlld0lkRmxhZywgaGF2aW5nIHR5cGUgYm9vbFxuICBDdXJyZW50Q3VzdFZpZXdJZEZsYWcgPSAnaXNDdXJyZW50Q3VzdFZpZXdJZFZhbGlkJyxcblxuICAvLyBEUElfRGFzaGJvYXJkRW5hYmxlU25hcCwgaGF2aW5nIHR5cGUgYm9vbFxuICBEYXNoYm9hcmRFbmFibGVTbmFwID0gJ2Rhc2hib2FyZEVuYWJsZVNuYXAnLFxuXG4gIC8vIERQSV9EYXNoYm9hcmRTaG93R3JpZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBEYXNoYm9hcmRTaG93R3JpZCA9ICdkYXNoYm9hcmRTaG93R3JpZCcsXG5cbiAgLy8gRFBJX0RhdGFHcmlkU29ydE9yZGVyLCBoYXZpbmcgdHlwZSBib29sXG4gIERhdGFHcmlkU29ydE9yZGVyID0gJ2RhdGFncmlkU29ydE9yZGVyJyxcblxuICAvLyBEUElfRGVsZXRlRXh0cmFjdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBEZWxldGVFeHRyYWN0ID0gJ2RlbGV0ZUV4dHJhY3QnLFxuXG4gIC8vIERQSV9EZWxldGVPbmx5U3BlY2lmaWVkU2VsZWN0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIERlbGV0ZU9ubHlTcGVjaWZpZWRTZWxlY3Rpb24gPSAnZGVsZXRlT25seVNwZWNpZmllZFNlbGVjdGlvbicsXG5cbiAgLy8gRFBJX0RlbGV0ZU9ycGhhbnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgRGVsZXRlT3JwaGFucyA9ICdkZWxldGVPcnBoYW5zJyxcblxuICAvLyBEUElfRGlzYWJsZWREYXRhQ29ubmVjdGlvbkNsYXNzTmFtZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgRGlzYWJsZWREYXRhQ29ubmVjdGlvbkNsYXNzTmFtZXMgPSAnZGlzYWJsZWREYXRhQ29ubmVjdGlvbkNsYXNzTmFtZXMnLFxuXG4gIC8vIERQSV9EaXNhYmxlUHJlc01vZGVsSGFuZGxlciwgaGF2aW5nIHR5cGUgYm9vbFxuICBEaXNhYmxlUHJlc01vZGVsSGFuZGxlciA9ICdkaXNhYmxlUHJlc01vZGVsSGFuZGxlcicsXG5cbiAgLy8gRFBJX0Rpc3BsYXlEYXRlLCBoYXZpbmcgdHlwZSBib29sXG4gIERpc3BsYXlEYXRlID0gJ2Rpc3BsYXlEYXRlJyxcblxuICAvLyBEUElfRGlzcGxheVRpbWUsIGhhdmluZyB0eXBlIGJvb2xcbiAgRGlzcGxheVRpbWUgPSAnZGlzcGxheVRpbWUnLFxuXG4gIC8vIERQSV9Eb0Ryb3BVSUFjdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBEb0Ryb3BVSUFjdGlvbiA9ICdkb0Ryb3BVaUFjdGlvbicsXG5cbiAgLy8gRFBJX0RvTWVyZ2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgRG9NZXJnZSA9ICdkb01lcmdlJyxcblxuICAvLyBEUElfRG9QcmVEcm9wVUlBY3Rpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgRG9QcmVEcm9wVUlBY3Rpb24gPSAnZG9QcmVEcm9wVWlBY3Rpb24nLFxuXG4gIC8vIERQSV9Eb1F1ZXJ5LCBoYXZpbmcgdHlwZSBib29sXG4gIERvUXVlcnkgPSAnZG9RdWVyeScsXG5cbiAgLy8gRFBJX0RyYWdIb3J6LCBoYXZpbmcgdHlwZSBib29sXG4gIERyYWdIb3J6ID0gJ2RyYWdIb3J6JyxcblxuICAvLyBEUElfRHJpbGxEb3duLCBoYXZpbmcgdHlwZSBib29sXG4gIERyaWxsRG93biA9ICdkcmlsbERvd24nLFxuXG4gIC8vIERQSV9Ecm9wVG9YQXhpcywgaGF2aW5nIHR5cGUgYm9vbFxuICBEcm9wVG9YQXhpcyA9ICdkcm9wVG9YQXhpcycsXG5cbiAgLy8gRFBJX0Ryb3BUb1lBeGlzLCBoYXZpbmcgdHlwZSBib29sXG4gIERyb3BUb1lBeGlzID0gJ2Ryb3BUb1lBeGlzJyxcblxuICAvLyBEUElfRHJvcFVubmFtZWRGaWVsZHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgRHJvcFVubmFtZWRGaWVsZHMgPSAnZHJvcFVubmFtZWRGaWVsZHMnLFxuXG4gIC8vIERQSV9FZGl0RXhpc3RpbmcsIGhhdmluZyB0eXBlIGJvb2xcbiAgRWRpdEV4aXN0aW5nID0gJ2VkaXRFeGlzdGluZycsXG5cbiAgLy8gRFBJX0VkaXRpbmdDb25uZWN0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIEVkaXRpbmdDb25uZWN0aW9uID0gJ2VkaXRpbmdDb25uZWN0aW9uJyxcblxuICAvLyBEUElfRW1iZWRDcmVkZW50aWFscywgaGF2aW5nIHR5cGUgYm9vbFxuICBFbWJlZENyZWRlbnRpYWxzID0gJ2VtYmVkQ3JlZGVudGlhbHMnLFxuXG4gIC8vIERQSV9FbWJlZE9BdXRoQ3JlZGVudGlhbCwgaGF2aW5nIHR5cGUgYm9vbFxuICBFbWJlZE9BdXRoQ3JlZGVudGlhbCA9ICdlbWJlZE9hdXRoQ3JlZGVudGlhbHMnLFxuXG4gIC8vIERQSV9FbXB0eUhpZ2hsaWdodEZvZ0FsbCwgaGF2aW5nIHR5cGUgYm9vbFxuICBFbXB0eUhpZ2hsaWdodEZvZ0FsbCA9ICdlbXB0eUhpZ2hsaWdodEZvZ0FsbCcsXG5cbiAgLy8gRFBJX0VuYWJsZUFscGhhYmV0aWNTb3J0LCBoYXZpbmcgdHlwZSBib29sXG4gIEVuYWJsZUFscGhhYmV0aWNTb3J0ID0gJ2VuYWJsZUFscGhhYmV0aWNTb3J0JyxcblxuICAvLyBEUElfRW5hYmxlQXV0b21hdGljRHJpbGwsIGhhdmluZyB0eXBlIGJvb2xcbiAgRW5hYmxlQXV0b21hdGljRHJpbGwgPSAnZW5hYmxlQXV0b21hdGljRHJpbGwnLFxuXG4gIC8vIERQSV9FbmFibGVDb25maWRlbmNlQmFuZHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgRW5hYmxlQ29uZmlkZW5jZUJhbmRzID0gJ2VuYWJsZUNvbmZpZGVuY2VCYW5kcycsXG5cbiAgLy8gRFBJX0VuYWJsZURhdGFPcmRlclNvcnQsIGhhdmluZyB0eXBlIGJvb2xcbiAgRW5hYmxlRGF0YU9yZGVyU29ydCA9ICdlbmFibGVEYXRhT3JkZXJTb3J0JyxcblxuICAvLyBEUElfRW5hYmxlRmllbGRTb3J0LCBoYXZpbmcgdHlwZSBib29sXG4gIEVuYWJsZUZpZWxkU29ydCA9ICdlbmFibGVGaWVsZFNvcnQnLFxuXG4gIC8vIERQSV9FbmFibGVJbnN0YW50QW5hbHl0aWNzLCBoYXZpbmcgdHlwZSBib29sXG4gIEVuYWJsZUluc3RhbnRBbmFseXRpY3MgPSAnZW5hYmxlSW5zdGFudEFuYWx5dGljcycsXG5cbiAgLy8gRFBJX0VuYWJsZUxpbmVzLCBoYXZpbmcgdHlwZSBib29sXG4gIEVuYWJsZUxpbmVzID0gJ2VuYWJsZUxpbmVzJyxcblxuICAvLyBEUElfRW5hYmxlTWFudWFsU29ydCwgaGF2aW5nIHR5cGUgYm9vbFxuICBFbmFibGVNYW51YWxTb3J0ID0gJ2VuYWJsZU1hbnVhbFNvcnQnLFxuXG4gIC8vIERQSV9FbmFibGVNYXJrcywgaGF2aW5nIHR5cGUgYm9vbFxuICBFbmFibGVNYXJrcyA9ICdlbmFibGVNYXJrcycsXG5cbiAgLy8gRFBJX0VuYWJsZU11bHRpcGxlU2VsZWN0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIEVuYWJsZU11bHRpcGxlU2VsZWN0aW9uID0gJ2VuYWJsZU11bHRpcGxlU2VsZWN0aW9uJyxcblxuICAvLyBEUElfRW5hYmxlUHJlZmV0Y2hpbmcsIGhhdmluZyB0eXBlIGJvb2xcbiAgRW5hYmxlUHJlZmV0Y2hpbmcgPSAnZW5hYmxlUHJlZmV0Y2hpbmcnLFxuXG4gIC8vIERQSV9FbmFibGVUYWJsZUNhbGNEZW5zaWZpY2F0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIEVuYWJsZVRhYmxlQ2FsY0RlbnNpZmljYXRpb24gPSAnZW5hYmxlVGFibGVDYWxjRGVuc2lmaWNhdGlvbicsXG5cbiAgLy8gRFBJX0VuYWJsZVRvb2x0aXBzLCBoYXZpbmcgdHlwZSBib29sXG4gIEVuYWJsZVRvb2x0aXBzID0gJ2VuYWJsZVRvb2x0aXBzJyxcblxuICAvLyBEUElfRW5kRGF0YVNvdXJjZVByZXNNb2RlbFVwZGF0ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBFbmREYXRhU291cmNlUHJlc01vZGVsVXBkYXRlID0gJ2VuZERhdGFTb3VyY2VQcmVzTW9kZWxVcGRhdGUnLFxuXG4gIC8vIERQSV9Fc3RpbWF0ZU51bGxzLCBoYXZpbmcgdHlwZSBib29sXG4gIEVzdGltYXRlTnVsbHMgPSAnZXN0aW1hdGVOdWxscycsXG5cbiAgLy8gRFBJX0V4Y2x1ZGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgRXhjbHVkZSA9ICdleGNsdWRlJyxcblxuICAvLyBEUElfRXhjbHVkZUNvbG9yLCBoYXZpbmcgdHlwZSBib29sXG4gIEV4Y2x1ZGVDb2xvciA9ICdleGNsdWRlQ29sb3InLFxuXG4gIC8vIERQSV9FeGNsdWRlQ3ViZURlbm9ybSwgaGF2aW5nIHR5cGUgYm9vbFxuICBFeGNsdWRlQ3ViZURlbm9ybSA9ICdleGNsdWRlQ3ViZURlbm9ybScsXG5cbiAgLy8gRFBJX0V4Y2x1ZGVJbnRlcmNlcHRFbmFibGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIEV4Y2x1ZGVJbnRlcmNlcHRFbmFibGVkID0gJ2V4Y2x1ZGVJbnRlcmNlcHRFbmFibGVkJyxcblxuICAvLyBEUElfRXhjbHVkZUxvY2FsRnVuY3Rpb25zLCBoYXZpbmcgdHlwZSBib29sXG4gIEV4Y2x1ZGVMb2NhbEZ1bmN0aW9ucyA9ICdleGNsdWRlTG9jYWxGdW5jdGlvbnMnLFxuXG4gIC8vIERQSV9FeHBvcnREYXNoYm9hcmRJbWFnZUZyb21TaGVldCwgaGF2aW5nIHR5cGUgYm9vbFxuICBFeHBvcnREYXNoYm9hcmRJbWFnZUZyb21TaGVldCA9ICdleHBvcnRJbWFnZVNoZWV0QXNEYXNoYm9hcmQnLFxuXG4gIC8vIERQSV9FeHRTdmNDb25maWdJc0F1dGhFbmFibGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIEV4dFN2Y0NvbmZpZ0lzQXV0aEVuYWJsZWQgPSAnZXh0U3ZjQ29uZmlnSXNBdXRoRW5hYmxlZCcsXG5cbiAgLy8gRFBJX0V4dHJhY3RGdWxsUmVmcmVzaCwgaGF2aW5nIHR5cGUgYm9vbFxuICBFeHRyYWN0RnVsbFJlZnJlc2ggPSAnZXh0cmFjdEZ1bGxSZWZyZXNoJyxcblxuICAvLyBEUElfRXh0cmFjdE5lZWRzUmVmcmVzaCwgaGF2aW5nIHR5cGUgYm9vbFxuICBFeHRyYWN0TmVlZHNSZWZyZXNoID0gJ2V4dHJhY3ROZWVkc1JlZnJlc2gnLFxuXG4gIC8vIERQSV9FeHRyYWN0UGVuZGluZywgaGF2aW5nIHR5cGUgYm9vbFxuICBFeHRyYWN0UGVuZGluZyA9ICdleHRyYWN0UGVuZGluZycsXG5cbiAgLy8gRFBJX0V4dHJhY3RTZWxlY3RlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBFeHRyYWN0U2VsZWN0ZWQgPSAnZXh0cmFjdFNlbGVjdGVkJyxcblxuICAvLyBEUElfRmVkZXJhdGFibGVPbmx5LCBoYXZpbmcgdHlwZSBib29sXG4gIEZlZGVyYXRhYmxlT25seSA9ICdmZWRlcmF0YWJsZU9ubHknLFxuXG4gIC8vIERQSV9GaWVsZFNvcnRPcmRlciwgaGF2aW5nIHR5cGUgYm9vbFxuICBGaWVsZFNvcnRPcmRlciA9ICdmaWVsZFNvcnRPcmRlcicsXG5cbiAgLy8gRFBJX0ZpZWxkU3VwcG9ydHNDb250YWlucywgaGF2aW5nIHR5cGUgYm9vbFxuICBGaWVsZFN1cHBvcnRzQ29udGFpbnMgPSAnZmllbGRTdXBwb3J0c0NvbnRhaW5zJyxcblxuICAvLyBEUElfRmllbGRTdXBwb3J0c0VuZHNXaXRoLCBoYXZpbmcgdHlwZSBib29sXG4gIEZpZWxkU3VwcG9ydHNFbmRzV2l0aCA9ICdmaWVsZFN1cHBvcnRzRW5kc1dpdGgnLFxuXG4gIC8vIERQSV9GaWVsZFN1cHBvcnRzU3RhcnRzV2l0aCwgaGF2aW5nIHR5cGUgYm9vbFxuICBGaWVsZFN1cHBvcnRzU3RhcnRzV2l0aCA9ICdmaWVsZFN1cHBvcnRzU3RhcnRzV2l0aCcsXG5cbiAgLy8gRFBJX0ZpbGxBYm92ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBGaWxsQWJvdmUgPSAnZmlsbEFib3ZlJyxcblxuICAvLyBEUElfRmlsbEJlbG93LCBoYXZpbmcgdHlwZSBib29sXG4gIEZpbGxCZWxvdyA9ICdmaWxsQmVsb3cnLFxuXG4gIC8vIERQSV9GaWxsV2l0aFplcm9lcywgaGF2aW5nIHR5cGUgYm9vbFxuICBGaWxsV2l0aFplcm9lcyA9ICdmaWxsWmVyb2VzJyxcblxuICAvLyBEUElfRmlsdGVySXNOYW1lZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBGaWx0ZXJJc05hbWVkID0gJ2ZpbHRlcklzTmFtZWQnLFxuXG4gIC8vIERQSV9Gb2N1cywgaGF2aW5nIHR5cGUgYm9vbFxuICBGb2N1cyA9ICdmb2N1cycsXG5cbiAgLy8gRFBJX0ZvckludGVybmFsVXNlLCBoYXZpbmcgdHlwZSBib29sXG4gIEZvckludGVybmFsVXNlID0gJ2ludGVybmFsVXNlJyxcblxuICAvLyBEUElfRm9yY2VCcm93c2VyUmVuZGVyaW5nLCBoYXZpbmcgdHlwZSBib29sXG4gIEZvcmNlQnJvd3NlclJlbmRlcmluZyA9ICdmb3JjZUJyb3dzZXJSZW5kZXJpbmcnLFxuXG4gIC8vIERQSV9Gb3JjZUNhY2hlLCBoYXZpbmcgdHlwZSBib29sXG4gIEZvcmNlQ2FjaGUgPSAnZm9yY2VDYWNoZScsXG5cbiAgLy8gRFBJX0ZvcmNlQ29sb3JGcm9tQXBwLCBoYXZpbmcgdHlwZSBib29sXG4gIEZvcmNlQ29sb3JGcm9tQXBwID0gJ2ZvcmNlQ29sb3JGcm9tQXBwJyxcblxuICAvLyBEUElfRm9yY2VDb25uZWN0aW9uQXR0ZW1wdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBGb3JjZUNvbm5lY3Rpb25BdHRlbXB0ID0gJ2ZvcmNlQ29ubmVjdGlvbkF0dGVtcHQnLFxuXG4gIC8vIERQSV9Gb3JjZUNvbnNvbGlkYXRlSW5Db21taXQsIGhhdmluZyB0eXBlIGJvb2xcbiAgRm9yY2VDb25zb2xpZGF0ZUluQ29tbWl0ID0gJ2ZvcmNlQ29uc29saWRhdGVJbkNvbW1pdCcsXG5cbiAgLy8gRFBJX0ZvcmNlRXh0cmFjdFJlZnJlc2gsIGhhdmluZyB0eXBlIGJvb2xcbiAgRm9yY2VFeHRyYWN0UmVmcmVzaCA9ICdleHRyYWN0Rm9yY2VSZWZyZXNoJyxcblxuICAvLyBEUElfRm9yY2VJbnRlcmNlcHRaZXJvLCBoYXZpbmcgdHlwZSBib29sXG4gIEZvcmNlSW50ZXJjZXB0WmVybyA9ICdmb3JjZUludGVyY2VwdFplcm8nLFxuXG4gIC8vIERQSV9Gb3JjZU9sZENvbm5lY3RFeHBlcmllbmNlLCBoYXZpbmcgdHlwZSBib29sXG4gIEZvcmNlT2xkQ29ubmVjdEV4cGVyaWVuY2UgPSAnZm9yY2VPbGRDb25uZWN0RXhwZXJpZW5jZScsXG5cbiAgLy8gRFBJX0ZvcmNlVG9nZ2xlSGlnaGxpZ2h0U3RhdGVPbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBGb3JjZVRvZ2dsZUhpZ2hsaWdodFN0YXRlT24gPSAnZm9yY2VIaWdobGlnaHRPbicsXG5cbiAgLy8gRFBJX0ZvcmNlV2hvbGVEYXRlLCBoYXZpbmcgdHlwZSBib29sXG4gIEZvcmNlV2hvbGVEYXRlID0gJ2ZvcmNlV2hvbGVEYXRlJyxcblxuICAvLyBEUElfRm9yZWNhc3RTZWxlY3RlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBGb3JlY2FzdFNlbGVjdGVkID0gJ2ZvcmVjYXN0U2VsZWN0ZWQnLFxuXG4gIC8vIERQSV9Gb3JlY2FzdFVzZUF1dG9BZ2csIGhhdmluZyB0eXBlIGJvb2xcbiAgRm9yZWNhc3RVc2VBdXRvQWdnID0gJ2ZvcmVjYXN0VXNlQXV0b1N1bW1hcml6ZScsXG5cbiAgLy8gRFBJX0ZvckpvaW4sIGhhdmluZyB0eXBlIGJvb2xcbiAgRm9ySm9pbiA9ICdmb3JKb2luJyxcblxuICAvLyBEUElfRm9ybWF0RGF0YVZhbHVlTG9jYWxseSwgaGF2aW5nIHR5cGUgYm9vbFxuICBGb3JtYXREYXRhVmFsdWVMb2NhbGx5ID0gJ2Zvcm1hdERhdGFWYWx1ZUxvY2FsbHknLFxuXG4gIC8vIERQSV9Gb3JtYXRJZkNvbHVtbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBGb3JtYXRJZkNvbHVtbiA9ICdmb3JtYXRJZkNvbHVtbicsXG5cbiAgLy8gRFBJX0Zvcm1hdElmUGFyYW1ldGVyLCBoYXZpbmcgdHlwZSBib29sXG4gIEZvcm1hdElmUGFyYW1ldGVyID0gJ2Zvcm1hdElmUGFyYW1ldGVyJyxcblxuICAvLyBEUElfR2VvZ3JhcGhpY1NlYXJjaElzRGF0YUxvYWRlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBHZW9ncmFwaGljU2VhcmNoSXNEYXRhTG9hZGVkID0gJ2dlb2dyYXBoaWNTZWFyY2hEYXRhTG9hZGVkJyxcblxuICAvLyBEUElfR2VvZ3JhcGhpY1NlYXJjaExvYWREYXRhQXN5bmMsIGhhdmluZyB0eXBlIGJvb2xcbiAgR2VvZ3JhcGhpY1NlYXJjaExvYWREYXRhQXN5bmMgPSAnZ2VvZ3JhcGhpY1NlYXJjaExvYWREYXRhQXN5bmMnLFxuXG4gIC8vIERQSV9Hcm91cEJ5QWxsLCBoYXZpbmcgdHlwZSBib29sXG4gIEdyb3VwQnlBbGwgPSAnZ3JvdXBCeUFsbCcsXG5cbiAgLy8gRFBJX0hhc0FsaWFzLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc0FsaWFzID0gJ2hhc0FsaWFzJyxcblxuICAvLyBEUElfSGFzQWxsTWVtYmVyLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc0FsbE1lbWJlciA9ICdoYXNBbGxNZW1iZXInLFxuXG4gIC8vIERQSV9IYXNBcHBseSwgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNBcHBseSA9ICdoYXNBcHBseScsXG5cbiAgLy8gRFBJX0hhc0JhY2tncm91bmRJbWFnZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNCYWNrZ3JvdW5kSW1hZ2UgPSAnaGFzQmFja2dyb3VuZEltYWdlJyxcblxuICAvLyBEUElfSGFzQmVlbkRpc21pc3NlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNCZWVuRGlzbWlzc2VkID0gJ2hhc0JlZW5EaXNtaXNzZWQnLFxuXG4gIC8vIERQSV9IYXNDYXB0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc0NhcHRpb24gPSAnaGFzQ2FwdGlvbicsXG5cbiAgLy8gRFBJX0hhc0NvbmRpdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNDb25kaXRpb24gPSAnaGFzQ29uZGl0aW9uJyxcblxuICAvLyBEUElfSGFzQ29ubmVjdFBlcm1pc3Npb25zLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc0Nvbm5lY3RQZXJtaXNzaW9ucyA9ICdoYXNDb25uZWN0UGVybWlzc2lvbnMnLFxuXG4gIC8vIERQSV9IYXNEYXNoYm9hcmQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzRGFzaGJvYXJkID0gJ2hhc0Rhc2hib2FyZCcsXG5cbiAgLy8gRFBJX0hhc0Rvd25sb2FkUGVybWlzc2lvbnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzRG93bmxvYWRQZXJtaXNzaW9ucyA9ICdoYXNEb3dubG9hZFBlcm1pc3Npb25zJyxcblxuICAvLyBEUElfSGFzRHJpbGwsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzRHJpbGwgPSAnaGFzRHJpbGwnLFxuXG4gIC8vIERQSV9IYXNFeGNsdWRlLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc0V4Y2x1ZGUgPSAnaGFzRXhjbHVkZScsXG5cbiAgLy8gRFBJX0hhc0ZpbGwsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzRmlsbCA9ICdoYXNGaWxsJyxcblxuICAvLyBEUElfSGFzTGFiZWxzLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc0xhYmVscyA9ICdoYXNMYWJlbHMnLFxuXG4gIC8vIERQSV9IYXNMaW1pdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNMaW1pdCA9ICdoYXNMaW1pdCcsXG5cbiAgLy8gRFBJX0hhc0xpbmUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzTGluZSA9ICdoYXNMaW5lJyxcblxuICAvLyBEUElfSGFzTW9kaWZpZWRBeGVzLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc01vZGlmaWVkQXhlcyA9ICdoYXNNb2RpZmllZEF4ZXMnLFxuXG4gIC8vIERQSV9IYXNOb25Sb290Q2FsY3VsYXRpb25zLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc05vblJvb3RDYWxjdWxhdGlvbnMgPSAnaGFzTm9uUm9vdENhbGN1bGF0aW9ucycsXG5cbiAgLy8gRFBJX0hhc1BhdHRlcm4sIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzUGF0dGVybiA9ICdoYXNQYXR0ZXJuJyxcblxuICAvLyBEUElfSGFzUHVibGlzaEd1aWRhbmNlUmVzdWx0cywgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNQdWJsaXNoR3VpZGFuY2VSZXN1bHRzID0gJ2hhc1B1Ymxpc2hHdWlkYW5jZVJlc3VsdHMnLFxuXG4gIC8vIERQSV9IYXNTZWxlY3Rpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzU2VsZWN0aW9uID0gJ2hhc1NlbGVjdGlvbicsXG5cbiAgLy8gRFBJX0hhc1NlcnZlckNyZWRlbnRpYWxzLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc1NlcnZlckNyZWRlbnRpYWxzID0gJ2hhc1NlcnZlckNyZWRlbnRpYWxzJyxcblxuICAvLyBEUElfSGFzU3BhY2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzU3BhY2UgPSAnaGFzU3BhY2UnLFxuXG4gIC8vIERQSV9IYXNTdG9yZWRQcm9jZWR1cmUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzU3RvcmVkUHJvY2VkdXJlID0gJ2hhc1N0b3JlZFByb2NlZHVyZScsXG5cbiAgLy8gRFBJX0hhc1N0cmluZ0NhbGN1bGF0ZWRNZWFzdXJlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNTdHJpbmdDYWxjdWxhdGVkTWVhc3VyZXMgPSAnaGFzU3RyaW5nQ2FsY3VsYXRlZE1lYXN1cmVzJyxcblxuICAvLyBEUElfSGFzVGFibGVDYWxjRGF0YSwgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNUYWJsZUNhbGNEYXRhID0gJ2hhc1RhYmxlQ2FsY0RhdGEnLFxuXG4gIC8vIERQSV9IYXNUaXRsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNUaXRsZSA9ICdoYXNUaXRsZScsXG5cbiAgLy8gRFBJX0hhc1VzZXJTcGVjaWZpY0NvbnRlbnQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzVXNlclNwZWNpZmljQ29udGVudCA9ICdoYXNVc2VyU3BlY2lmaWNDb250ZW50JyxcblxuICAvLyBEUElfSGFzVW5qb2luZWRUYWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNVbmpvaW5lZFRhYmxlID0gJ2hhc1Vuam9pbmVkVGFibGUnLFxuXG4gIC8vIERQSV9IYXNWYXJBcmdzLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc1ZhckFyZ3MgPSAnaGFzVmFyQXJncycsXG5cbiAgLy8gRFBJX0hhc1Zpc2l0ZWRXRENQYWdlLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc1Zpc2l0ZWRXRENQYWdlID0gJ2hhc1Zpc2l0ZWRXZGNQYWdlJyxcblxuICAvLyBEUElfSWdub3JlQWxpYXNlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBJZ25vcmVBbGlhc2VzID0gJ2lnbm9yZUFsaWFzZXMnLFxuXG4gIC8vIERQSV9JZ25vcmVEb21haW4sIGhhdmluZyB0eXBlIGJvb2xcbiAgSWdub3JlRG9tYWluID0gJ2lnbm9yZURvbWFpbicsXG5cbiAgLy8gRFBJX0lnbm9yZVNlbGVjdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBJZ25vcmVTZWxlY3Rpb24gPSAnaWdub3JlU2VsZWN0aW9uJyxcblxuICAvLyBEUElfSW5jbHVkZUFsbENvbHVtbnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgSW5jbHVkZUFsbENvbHVtbnMgPSAnaW5jbHVkZUFsbENvbHVtbnMnLFxuXG4gIC8vIERQSV9JbmNsdWRlQ29udGV4dCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJbmNsdWRlQ29udGV4dCA9ICdpbmNsdWRlQ29udGV4dCcsXG5cbiAgLy8gRFBJX0luY2x1ZGVEYXNoYm9hcmRQcmVzTW9kZWxzLCBoYXZpbmcgdHlwZSBib29sXG4gIEluY2x1ZGVEYXNoYm9hcmRQcmVzTW9kZWxzID0gJ2luY2x1ZGVEYXNoYm9hcmRQcmVzTW9kZWxzJyxcblxuICAvLyBEUElfSW5jbHVkZUl0ZW1TZXQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSW5jbHVkZUl0ZW1TZXQgPSAnaW5jbHVkZUl0ZW1TZXQnLFxuXG4gIC8vIERQSV9JbmNsdWRlTG9jYWxGaWxlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBJbmNsdWRlTG9jYWxGaWxlcyA9ICdpbmNsdWRlTG9jYWxGaWxlcycsXG5cbiAgLy8gRFBJX0luY2x1ZGVPdGhlclNlbGVjdGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIEluY2x1ZGVPdGhlclNlbGVjdGVkID0gJ2luY2x1ZGVPdGhlclNlbGVjdGVkJyxcblxuICAvLyBEUElfSW5jbHVkZU51bGxzLCBoYXZpbmcgdHlwZSBib29sXG4gIEluY2x1ZGVOdWxscyA9ICdpbmNsdWRlTnVsbHMnLFxuXG4gIC8vIERQSV9JbmNsdWRlUGFyZW50LCBoYXZpbmcgdHlwZSBib29sXG4gIEluY2x1ZGVQYXJlbnQgPSAnaW5jbHVkZVBhcmVudCcsXG5cbiAgLy8gRFBJX0luY2x1ZGVTZWxlY3Rpb25zLCBoYXZpbmcgdHlwZSBib29sXG4gIEluY2x1ZGVTZWxlY3Rpb25zID0gJ2luY2x1ZGVTZWxlY3Rpb25zJyxcblxuICAvLyBEUElfSW5jbHVkZVNpYmxpbmdzLCBoYXZpbmcgdHlwZSBib29sXG4gIEluY2x1ZGVTaWJsaW5ncyA9ICdpbmNsdWRlU2libGluZ3MnLFxuXG4gIC8vIERQSV9JbmNsdWRlU3RvcmllcywgaGF2aW5nIHR5cGUgYm9vbFxuICBJbmNsdWRlU3RvcmllcyA9ICdpbmNsdWRlU3RvcmllcycsXG5cbiAgLy8gRFBJX0luY2x1ZGVTdWJmb2xkZXJzLCBoYXZpbmcgdHlwZSBib29sXG4gIEluY2x1ZGVTdWJmb2xkZXJzID0gJ2luY2x1ZGVTdWJmb2xkZXJzJyxcblxuICAvLyBEUElfSW5jbHVkZVZvbGF0aWxlUHJvcHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgSW5jbHVkZVZvbGF0aWxlUHJvcHMgPSAnaW5jbHVkZVZvbGF0aWxlUHJvcHMnLFxuXG4gIC8vIERQSV9JbmNsdWRlc1RhZywgaGF2aW5nIHR5cGUgYm9vbFxuICBJbmNsdWRlc1RhZyA9ICdpbmNsdWRlc1RhZycsXG5cbiAgLy8gRFBJX0luc2VydEFmdGVyLCBoYXZpbmcgdHlwZSBib29sXG4gIEluc2VydEFmdGVyID0gJ2luc2VydEFmdGVyJyxcblxuICAvLyBEUElfSW5zZXJ0QXRFbmQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSW5zZXJ0QXRFbmQgPSAnaW5zZXJ0QXRFbmQnLFxuXG4gIC8vIERQSV9JbnN0YW50QW5hbHl0aWNzQWxsb3dlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJbnN0YW50QW5hbHl0aWNzQWxsb3dlZCA9ICdpbnN0YW50QW5hbHl0aWNzQWxsb3dlZCcsXG5cbiAgLy8gRFBJX0ludGVnZXJDb29yZGluYXRlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBJbnRlZ2VyQ29vcmRpbmF0ZXMgPSAnaW50Q29vcmRzJyxcblxuICAvLyBEUElfSW52YWxpZGF0ZWRMYXlvdXQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSW52YWxpZGF0ZWRMYXlvdXQgPSAnaW52YWxpZGF0ZWRMYXlvdXQnLFxuXG4gIC8vIERQSV9Jc0FjdGl2ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0FjdGl2ZSA9ICdpc0FjdGl2ZScsXG5cbiAgLy8gRFBJX0lzQWRkVG9GaWx0ZXIsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNBZGRUb0ZpbHRlciA9ICdpc0FkZFRvRmlsdGVyQnV0dG9uQ2hlY2tlZCcsXG5cbiAgLy8gRFBJX0lzQWxsQnV0dG9uVmlzaWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0FsbEJ1dHRvblZpc2libGUgPSAnaXNBbGxCdXR0b25WaXNpYmxlJyxcblxuICAvLyBEUElfSXNBbGxvd2VkSW5DYWxjcywgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0FsbG93ZWRJbkNhbGNzID0gJ2lzQWxsb3dlZEluQ2FsY3MnLFxuXG4gIC8vIERQSV9Jc0FwcE1hcFNvdXJjZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0FwcE1hcFNvdXJjZSA9ICdpc0FwcE1hcFNvdXJjZScsXG5cbiAgLy8gRFBJX0lzQXJjaGl2ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0FyY2hpdmUgPSAnaXNBcmNoaXZlJyxcblxuICAvLyBEUElfSXNBdXRob3JpbmdNb2RlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQXV0aG9yaW5nTW9kZSA9ICdpc0F1dGhvcmluZ01vZGUnLFxuXG4gIC8vIERQSV9Jc0F1dG8sIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNBdXRvID0gJ2lzQXV0bycsXG5cbiAgLy8gRFBJX0lzQXV0b0NsZWFyLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQXV0b0NsZWFyID0gJ2lzQXV0b0NsZWFyJyxcblxuICAvLyBEUElfSXNBdXRvQ29sdW1uLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQXV0b0NvbHVtbiA9ICdpc0F1dG9Db2x1bW4nLFxuXG4gIC8vIERQSV9Jc0F1dG9IaWRkZW4sIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNBdXRvSGlkZGVuID0gJ2lzQXV0b0hpZGRlbicsXG5cbiAgLy8gRFBJX0lzQXV0b1NlbGVjdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0F1dG9TZWxlY3QgPSAnaXNBdXRvU2VsZWN0JyxcblxuICAvLyBEUElfSXNCb2xkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQm9sZCA9ICdpc0JvbGQnLFxuXG4gIC8vIERQSV9Jc0JvcmRlclZpc2libGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNCb3JkZXJWaXNpYmxlID0gJ2lzQm9yZGVyVmlzaWJsZScsXG5cbiAgLy8gRFBJX0lzQm94cGxvdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0JveHBsb3QgPSAnaXNCb3hwbG90JyxcblxuICAvLyBEUElfSXNDYXBhYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQ2FwYWJsZSA9ICdpc0NhcGFibGUnLFxuXG4gIC8vIERQSV9Jc0NhcHR1cmVkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQ2FwdHVyZWQgPSAnaXNDYXB0dXJlZCcsXG5cbiAgLy8gRFBJX0lzQ2VudGVyZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNDZW50ZXJlZCA9ICdpc0NlbnRlcmVkJyxcblxuICAvLyBEUElfSXNDaGVja2VkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQ2hlY2tlZCA9ICdpc0NoZWNrZWQnLFxuXG4gIC8vIERQSV9Jc0NvbG9yRGl2ZXJnaW5nLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQ29sb3JEaXZlcmdpbmcgPSAnaXNDb2xvckRpdmVyZ2luZycsXG5cbiAgLy8gRFBJX0lzQ29sb3JTdGVwcGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQ29sb3JTdGVwcGVkID0gJ2lzQ29sb3JTdGVwcGVkJyxcblxuICAvLyBEUElfSXNDb21iaW5lZEZpZWxkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQ29tYmluZWRGaWVsZCA9ICdpc0NvbWJpbmVkRmllbGQnLFxuXG4gIC8vIERQSV9Jc0Nvbm5lY3RlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0Nvbm5lY3RlZCA9ICdpc0Nvbm5lY3RlZCcsXG5cbiAgLy8gRFBJX0lzQ29udGV4dE1lbnVBbGxvd2VkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQ29udGV4dE1lbnVBbGxvd2VkID0gJ2lzQ29udGV4dE1lbnVBbGxvd2VkJyxcblxuICAvLyBEUElfSXNDb250aW51b3VzLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQ29udGludW91cyA9ICdpc0NvbnRpbnVvdXMnLFxuXG4gIC8vIERQSV9Jc0NvcHksIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNDb3B5ID0gJ2lzQ29weScsXG5cbiAgLy8gRFBJX0lzQ3VzdG9tUGFsZXR0ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0N1c3RvbVBhbGV0dGUgPSAnaXNDdXN0b21QYWxldHRlJyxcblxuICAvLyBEUElfSXNDdXN0b21TUUwsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNDdXN0b21TUUwgPSAnaXNDdXN0b21TcWwnLFxuXG4gIC8vIERQSV9Jc0N1c3RvbVZhbHVlRW5hYmxlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0N1c3RvbVZhbHVlRW5hYmxlZCA9ICdpc0N1c3RvbVZhbHVlRW5hYmxlZCcsXG5cbiAgLy8gRFBJX0lzRGF0YUFsZXJ0Q29uZGl0aW9uTWV0LCBoYXZpbmcgdHlwZSBib29sXG4gIElzRGF0YUFsZXJ0Q29uZGl0aW9uTWV0ID0gJ2lzRGF0YUFsZXJ0Q29uZGl0aW9uTWV0JyxcblxuICAvLyBEUElfSXNEYXRhQWxlcnREaWFsb2dWaXNpYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzRGF0YUFsZXJ0RGlhbG9nVmlzaWJsZSA9ICdpc0RhdGFBbGVydERpYWxvZ1Zpc2libGUnLFxuXG4gIC8vIERQSV9Jc0RhdGFCaW4sIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNEYXRhQmluID0gJ2lzRGF0YUJpbicsXG5cbiAgLy8gRFBJX0lzRGF0YUdyaWRWaXNpYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzRGF0YUdyaWRWaXNpYmxlID0gJ2lzRGF0YUdyaWRWaXNpYmxlJyxcblxuICAvLyBEUElfSXNEYXRhYmFzZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0RhdGFiYXNlID0gJ2lzRGF0YWJhc2UnLFxuXG4gIC8vIERQSV9Jc0RhdGFiYXNlRmlsdGVySW5jbHVzaXZlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzRGF0YWJhc2VGaWx0ZXJJbmNsdXNpdmUgPSAnaXNEYkZpbHRlckluY2x1c2l2ZScsXG5cbiAgLy8gRFBJX0lzV2ViRGF0YVRhYlZpZXdTdXBwb3J0ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNXZWJEYXRhVGFiVmlld1N1cHBvcnRlZCA9ICdpc1dlYkRhdGFUYWJWaWV3U3VwcG9ydGVkJyxcblxuICAvLyBEUElfSXNQdWJsaXNoZWREYXRhc291cmNlUmVwbGFjZW1lbnQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNQdWJsaXNoZWREYXRhc291cmNlUmVwbGFjZW1lbnQgPSAnaXNQdWJsaXNoZWREYXRhc291cmNlUmVwbGFjZW1lbnQnLFxuXG4gIC8vIERQSV9Jc0RlYWREcm9wLCBoYXZpbmcgdHlwZSBib29sXG4gIElzRGVhZERyb3AgPSAnaXNEZWFkRHJvcCcsXG5cbiAgLy8gRFBJX0lzRGVmYXVsdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0RlZmF1bHQgPSAnaXNEZWZhdWx0JyxcblxuICAvLyBEUElfSXNEZWxldGVDYWxjQ29uZmlybSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0RlbGV0ZUNhbGNDb25maXJtID0gJ2lzRGVsZXRlQ2FsY0NvbmZpcm1lZCcsXG5cbiAgLy8gRFBJX0lzRGltZW5zaW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIElzRGltZW5zaW9uID0gJ2lzRGltZW5zaW9uJyxcblxuICAvLyBEUElfSXNEaXZpZGVyLCBoYXZpbmcgdHlwZSBib29sXG4gIElzRGl2aWRlciA9ICdpc0RpdmlkZXInLFxuXG4gIC8vIERQSV9Jc0Ryb3Bkb3duRW5hYmxlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0Ryb3Bkb3duRW5hYmxlZCA9ICdpc0Ryb3Bkb3duRW5hYmxlZCcsXG5cbiAgLy8gRFBJX0lzRWRpdGluZywgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0VkaXRpbmcgPSAnaXNFZGl0aW5nJyxcblxuICAvLyBEUElfSXNFbWJlZGRlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0VtYmVkZGVkID0gJ2lzRW1iZWRkZWQnLFxuXG4gIC8vIERQSV9Jc0VtcHR5LCBoYXZpbmcgdHlwZSBib29sXG4gIElzRW1wdHkgPSAnaXNFbXB0eScsXG5cbiAgLy8gRFBJX0lzQWRkSW5FbmFibGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQWRkSW5FbmFibGVkID0gJ2lzQWRkSW5FbmFibGVkJyxcblxuICAvLyBEUElfSXNJbkRyaWxsUGF0aCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0luRHJpbGxQYXRoID0gJ2lzSW5EcmlsbFBhdGgnLFxuXG4gIC8vIERQSV9BZGRJbkpTRGVidWdnaW5nRW5hYmxlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBBZGRJbkpTRGVidWdnaW5nRW5hYmxlZCA9ICdhZGRJbkpzRGVidWdnaW5FbmFibGVkJyxcblxuICAvLyBEUElfQWRkSW5QYXVzZUJlZm9yZUxvYWRpbmcsIGhhdmluZyB0eXBlIGJvb2xcbiAgQWRkSW5QYXVzZUJlZm9yZUxvYWRpbmcgPSAnYWRkSW5QYXVzZUJlZm9yZUxvYWRpbmcnLFxuXG4gIC8vIERQSV9Jc0RTSGllcmFyY2hpY2FsLCBoYXZpbmcgdHlwZSBib29sXG4gIElzRFNIaWVyYXJjaGljYWwgPSAnaXNEc0hpZXJhcmNoaWNhbCcsXG5cbiAgLy8gRFBJX0lzRW5kUHRNb3ZlYWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0VuZFB0TW92ZWFibGUgPSAnaXNFbmRwb2ludE1vdmFibGUnLFxuXG4gIC8vIERQSV9Jc0V4Y2x1ZGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNFeGNsdWRlID0gJ2lzRXhjbHVkZUJ1dHRvbkNoZWNrZWQnLFxuXG4gIC8vIERQSV9Jc0V4aXN0aW5nQ29ubmVjdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0V4aXN0aW5nQ29ubmVjdGlvbiA9ICdpc0V4aXN0aW5nQ29ubmVjdGlvbicsXG5cbiAgLy8gRFBJX0lzRXhpc3RpbmdPYmplY3QsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNFeGlzdGluZ09iamVjdCA9ICdpc0V4aXN0aW5nT2JqZWN0JyxcblxuICAvLyBEUElfSXNFeHRyYWN0LCBoYXZpbmcgdHlwZSBib29sXG4gIElzRXh0cmFjdCA9ICdpc0V4dHJhY3QnLFxuXG4gIC8vIERQSV9Jc0V4dHJhY3RPbmx5Q29ubmVjdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0V4dHJhY3RPbmx5Q29ubmVjdGlvbiA9ICdpc0V4dHJhY3RPbmx5Q29ubmVjdGlvbicsXG5cbiAgLy8gRFBJX0lzRXh0cmFjdFNlbGVjdGlvblZpc2libGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNFeHRyYWN0U2VsZWN0aW9uVmlzaWJsZSA9ICdpc0V4dHJhY3RTZWxlY3Rpb25WaXNpYmxlJyxcblxuICAvLyBEUElfSXNGZWRlcmF0YWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0ZlZGVyYXRhYmxlID0gJ2lzRmVkZXJhdGFibGUnLFxuXG4gIC8vIERQSV9Jc0ZpZWxkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzRmllbGQgPSAnaXNGaWVsZCcsXG5cbiAgLy8gRFBJX0lzRmllbGRQYXJhbWV0ZXIsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNGaWVsZFBhcmFtZXRlciA9ICdpc0ZpZWxkUGFyYW1ldGVyJyxcblxuICAvLyBEUElfSXNGaWx0ZXJBY3Rpb25GaWVsZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0ZpbHRlckFjdGlvbkZpZWxkID0gJ2lzRmlsdGVyQWN0aW9uRmllbGQnLFxuXG4gIC8vIERQSV9Jc0ZpcnN0Q2xhc3NDb25uZWN0b3IsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNGaXJzdENsYXNzQ29ubmVjdG9yID0gJ2lzRmlyc3RDbGFzc0Nvbm5lY3RvcicsXG5cbiAgLy8gRFBJX0lzRmxvYXRpbmcsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNGbG9hdGluZyA9ICdpc0Zsb2F0aW5nJyxcblxuICAvLyBEUElfSXNGb2xkZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNGb2xkZWQgPSAnaXNGb2xkZWQnLFxuXG4gIC8vIERQSV9Jc0ZvcklucHV0LCBoYXZpbmcgdHlwZSBib29sXG4gIElzRm9ySW5wdXQgPSAnaXNGb3JJbnB1dCcsXG5cbiAgLy8gRFBJX0lzRm9yZWNhc3RFbmFibGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzRm9yZWNhc3RFbmFibGVkID0gJ2lzRm9yZWNhc3RFbmFibGVkJyxcblxuICAvLyBEUElfSXNGb3JjZURpcnR5LCBoYXZpbmcgdHlwZSBib29sXG4gIElzRm9yY2VEaXJ0eSA9ICdpc0ZvcmNlRGlydHknLFxuXG4gIC8vIERQSV9Jc0Z1bGxTY2FuLCBoYXZpbmcgdHlwZSBib29sXG4gIElzRnVsbFNjYW4gPSAnaXNGdWxsU2NhbicsXG5cbiAgLy8gRFBJX0lzRnVsbFN0eWxpbmcsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNGdWxsU3R5bGluZyA9ICdpc0Z1bGxTdHlsaW5nJyxcblxuICAvLyBEUElfSXNHZW5lcmF0ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNHZW5lcmF0ZWQgPSAnaXNHZW5lcmF0ZWQnLFxuXG4gIC8vIERQSV9Jc0dsb2JhbE5hbWVzLCBoYXZpbmcgdHlwZSBib29sXG4gIElzR2xvYmFsTmFtZXMgPSAnaXNHbG9iYWxOYW1lcycsXG5cbiAgLy8gRFBJX0lzR3JheWVkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzR3JheWVkID0gJ2lzR3JheWVkJyxcblxuICAvLyBEUElfSXNHcmF5c2NhbGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNHcmF5c2NhbGUgPSAnaXNHcmF5c2NhbGUnLFxuXG4gIC8vIERQSV9Jc0dyb3VwLCBoYXZpbmcgdHlwZSBib29sXG4gIElzR3JvdXAgPSAnaXNHcm91cCcsXG5cbiAgLy8gRFBJX0lzSGlkZWFibGVGaWVsZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0hpZGVhYmxlRmllbGQgPSAnaXNIaWRlYWJsZUZpZWxkJyxcblxuICAvLyBEUElfSXNIaWVyYXJjaHksIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNIaWVyYXJjaHkgPSAnaXNIaWVyYXJjaHknLFxuXG4gIC8vIERQSV9Jc0hpZXJhcmNoeVNpbmdsZVNlbGVjdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0hpZXJhcmNoeVNpbmdsZVNlbGVjdCA9ICdpc0hpZXJhcmNoeVNpbmdsZVNlbGVjdCcsXG5cbiAgLy8gRFBJX0lzSGlnaGxpZ2h0QWxsb3dlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0hpZ2hsaWdodEFsbG93ZWQgPSAnaXNIaWdobGlnaHRBbGxvd2VkJyxcblxuICAvLyBEUElfSXNIaWdobGlnaHRFbmFibGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzSGlnaGxpZ2h0RW5hYmxlZCA9ICdpc0hpZ2hsaWdodEVuYWJsZWQnLFxuXG4gIC8vIERQSV9Jc0hpZ2hsaWdodEZpZWxkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzSGlnaGxpZ2h0RmllbGQgPSAnaXNIaWdobGlnaHRGaWVsZCcsXG5cbiAgLy8gRFBJX0lzSG9yaXpvbnRhbCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0hvcml6b250YWwgPSAnaXNIb3Jpem9udGFsJyxcblxuICAvLyBEUElfSXNJbWFnZUVuYWJsZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNJbWFnZUVuYWJsZWQgPSAnaXNJbWFnZUVuYWJsZWQnLFxuXG4gIC8vIERQSV9Jc0luRGVmYXVsdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0luRGVmYXVsdCA9ICdpc0luRGVmYXVsdCcsXG5cbiAgLy8gRFBJX0lzSW5QcmltYXJ5RGF0YVNvdXJjZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0luUHJpbWFyeURhdGFTb3VyY2UgPSAnaXNJblByaW1hcnlEYXRhU291cmNlJyxcblxuICAvLyBEUElfSXNJbm5lciwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0lubmVyID0gJ2lzSW5uZXInLFxuXG4gIC8vIERQSV9Jc0luaXRpYWwsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNJbml0aWFsID0gJ2lzSW5pdGlhbCcsXG5cbiAgLy8gRFBJX0lzSW5zdGFuY2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNJbnN0YW5jZSA9ICdpc0luc3RhbmNlJyxcblxuICAvLyBEUElfSXNJbnZhbGlkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzSW52YWxpZCA9ICdpc0ludmFsaWQnLFxuXG4gIC8vIERQSV9Jc0ludmFsaWRDYWxjT25ERywgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0ludmFsaWRDYWxjT25ERyA9ICdpc0ludmFsaWREZ0NhbGMnLFxuXG4gIC8vIERQSV9Jc0l0YWxpY3MsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNJdGFsaWNzID0gJ2lzSXRhbGljcycsXG5cbiAgLy8gRFBJX0lzSm9pbkFyZWFWaXNpYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzSm9pbkFyZWFWaXNpYmxlID0gJ2lzSm9pbkFyZWFWaXNpYmxlJyxcblxuICAvLyBEUElfSXNMYWJlbHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNMYWJlbHMgPSAnaXNMYWJlbHMnLFxuXG4gIC8vIERQSV9Jc0xheWVyZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNMYXllcmVkID0gJ2lzTGF5ZXJlZCcsXG5cbiAgLy8gRFBJX0lzTGVmdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0xlZnQgPSAnaXNMZWZ0JyxcblxuICAvLyBEUElfSXNMZWdhY3ksIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNMZWdhY3kgPSAnaXNMZWdhY3knLFxuXG4gIC8vIERQSV9Jc0xldmVsLCBoYXZpbmcgdHlwZSBib29sXG4gIElzTGV2ZWwgPSAnaXNMZXZlbCcsXG5cbiAgLy8gRFBJX0lzTGV2ZWxPckxldmVsSWRlbnRpdHksIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNMZXZlbE9yTGV2ZWxJZGVudGl0eSA9ICdpc0xldmVsT3JMZXZlbElkZW50aXR5JyxcblxuICAvLyBEUElfSXNMaWNlbnNlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0xpY2Vuc2VkID0gJ2lzTGljZW5zZWQnLFxuXG4gIC8vIERQSV9Jc0xpbmssIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNMaW5rID0gJ2lzTGluaycsXG5cbiAgLy8gRFBJX0lzTWFwLCBoYXZpbmcgdHlwZSBib29sXG4gIElzTWFwID0gJ2lzTWFwJyxcblxuICAvLyBEUElfSXNNZWFzdXJlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzTWVhc3VyZSA9ICdpc01lYXN1cmUnLFxuXG4gIC8vIERQSV9Jc01lcmdlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzTWVyZ2UgPSAnaXNNZXJnZScsXG5cbiAgLy8gRFBJX0lzTWVzc2FnZVNvdXJjZVJlbW90ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc01lc3NhZ2VTb3VyY2VSZW1vdGUgPSAnaXNNZXNzYWdlU291cmNlUmVtb3RlJyxcblxuICAvLyBEUElfSXNNaXNzaW5nRnJvbUV4dHJhY3QsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNNaXNzaW5nRnJvbUV4dHJhY3QgPSAnaXNNaXNzaW5nRnJvbUV4dHJhY3QnLFxuXG4gIC8vIERQSV9Jc01vYmlsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc01vYmlsZSA9ICdpc01vYmlsZScsXG5cbiAgLy8gRFBJX0lzTW9kaWZpZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNNb2RpZmllZCA9ICdpc01vZGlmaWVkJyxcblxuICAvLyBEUElfSXNOZXcsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNOZXcgPSAnaXNOZXcnLFxuXG4gIC8vIERQSV9Jc05ld0Nsb3VkRmlsZURhdGFTb3VyY2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNOZXdDbG91ZEZpbGVEYXRhU291cmNlID0gJ2lzTmV3Q2xvdWRGaWxlRGF0YVNvdXJjZScsXG5cbiAgLy8gRFBJX0lzTmV3Wm9uZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc05ld1pvbmUgPSAnaXNOZXdab25lJyxcblxuICAvLyBEUElfSXNOb25lLCBoYXZpbmcgdHlwZSBib29sXG4gIElzTm9uZSA9ICdpc05vbmUnLFxuXG4gIC8vIERQSV9Jc09mZmxpbmVNb2RlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzT2ZmbGluZU1vZGUgPSAnaXNPZmZsaW5lTW9kZScsXG5cbiAgLy8gRFBJX0lzUHJlQXFsQmluLCBoYXZpbmcgdHlwZSBib29sXG4gIElzUHJlQXFsQmluID0gJ2lzUHJlQXFsQmluJyxcblxuICAvLyBEUElfSXNPTWVhc3VyZXNBbmRSZWxhdGlvbmFsLCBoYXZpbmcgdHlwZSBib29sXG4gIElzT01lYXN1cmVzQW5kUmVsYXRpb25hbCA9ICdpc09tZWFzdXJlc0FuZFJlbGF0aW9uYWwnLFxuXG4gIC8vIERQSV9Jc09wYXF1ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc09wYXF1ZSA9ICdpc09wYXF1ZScsXG5cbiAgLy8gRFBJX0lzT3JwaGFuZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNPcnBoYW5lZCA9ICdpc09ycGhhbmVkJyxcblxuICAvLyBEUElfSXNPdmVybGF5LCBoYXZpbmcgdHlwZSBib29sXG4gIElzT3ZlcmxheSA9ICdpc092ZXJsYXknLFxuXG4gIC8vIERQSV9Jc092ZXJyaWRlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzT3ZlcnJpZGUgPSAnaXNPdmVycmlkZScsXG5cbiAgLy8gRFBJX0lzUGFnZUxvYWRpbmcsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNQYWdlTG9hZGluZyA9ICdpc1BhZ2VMb2FkaW5nJyxcblxuICAvLyBEUElfSXNQYXJhbWV0ZXJTZWxlY3RlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1BhcmFtZXRlclNlbGVjdGVkID0gJ2lzUGFyYW1ldGVyU2VsZWN0ZWQnLFxuXG4gIC8vIERQSV9Jc1BhcmFtZXRlclNlbGVjdGVkT25Gcm9tLCBoYXZpbmcgdHlwZSBib29sXG4gIElzUGFyYW1ldGVyU2VsZWN0ZWRPbkZyb20gPSAnaXNQYXJhbWV0ZXJTZWxlY3RlZE9uRnJvbScsXG5cbiAgLy8gRFBJX0lzUGFyYW1ldGVyU2VsZWN0ZWRPblRvLCBoYXZpbmcgdHlwZSBib29sXG4gIElzUGFyYW1ldGVyU2VsZWN0ZWRPblRvID0gJ2lzUGFyYW1ldGVyU2VsZWN0ZWRPblRvJyxcblxuICAvLyBEUElfSXNQYXR0ZXJuQmFzZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNQYXR0ZXJuQmFzZWQgPSAnaXNQYXR0ZXJuQmFzZWQnLFxuXG4gIC8vIERQSV9Jc1Bpbm5lZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1Bpbm5lZCA9ICdpc1Bpbm5lZCcsXG5cbiAgLy8gRFBJX0lzUHJlc2VudGF0aW9uTW9kZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1ByZXNlbnRhdGlvbk1vZGUgPSAnaXNQcmVzZW50YXRpb25Nb2RlRG9jJyxcblxuICAvLyBEUElfSXNQdWJsaXNoQWxsb3dlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1B1Ymxpc2hBbGxvd2VkID0gJ2lzUHVibGlzaEFsbG93ZWQnLFxuXG4gIC8vIERQSV9Jc011c3REb3duZ3JhZGVUb1B1Ymxpc2gsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNNdXN0RG93bmdyYWRlVG9QdWJsaXNoID0gJ2lzRG93bmdyYWRlVG9QdWJsaXNoUmVxdWlyZWQnLFxuXG4gIC8vIERQSV9Jc1B1Ymxpc2hlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1B1Ymxpc2hlZCA9ICdpc1B1Ymxpc2hlZCcsXG5cbiAgLy8gRFBJX0lzUXVpY2tUYWJsZUNhbGMsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNRdWlja1RhYmxlQ2FsYyA9ICdpc1F1aWNrVGFibGVDYWxjJyxcblxuICAvLyBEUElfSXNSYWRpb09uLCBoYXZpbmcgdHlwZSBib29sXG4gIElzUmFkaW9PbiA9ICdpc1JhZGlvT24nLFxuXG4gIC8vIERQSV9Jc1JlY29ubmVjdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1JlY29ubmVjdCA9ICdpc1JlY29ubmVjdCcsXG5cbiAgLy8gRFBJX0lzUmVjdXJzaXZlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzUmVjdXJzaXZlID0gJ2lzUmVjdXJzaXZlJyxcblxuICAvLyBEUElfSXNSZWZlcmVuY2VkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzUmVmZXJlbmNlZCA9ICdpc1JlZmVyZW5jZWQnLFxuXG4gIC8vIERQSV9Jc1JlbW92YWxBbGxvd2VkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzUmVtb3ZhbEFsbG93ZWQgPSAnaXNSb3dSZW1vdmFsQWxsb3dlZCcsXG5cbiAgLy8gRFBJX0lzUmVuZGVyQ2FwYWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1JlbmRlckNhcGFibGUgPSAnaXNSZW5kZXJDYXBhYmxlJyxcblxuICAvLyBEUElfSXNSZXF1aXJlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1JlcXVpcmVkID0gJ2lzUmVxdWlyZWQnLFxuXG4gIC8vIERQSV9Jc1JldmVyc2VkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzUmV2ZXJzZWQgPSAnaXNSZXZlcnNlZCcsXG5cbiAgLy8gRFBJX0lzUmlnaHREcmFnLCBoYXZpbmcgdHlwZSBib29sXG4gIElzUmlnaHREcmFnID0gJ2lzUmlnaHREcmFnJyxcblxuICAvLyBEUElfSXNSb3dMYWJlbHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNSb3dMYWJlbHMgPSAnaXNSb3dMYWJlbHMnLFxuXG4gIC8vIERQSV9Jc1BlcmNlbnRhZ2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNQZXJjZW50YWdlID0gJ2lzUGVyY2VudGFnZScsXG5cbiAgLy8gRFBJX0lzU2FsZXNmb3JjZUluQ29ubmVjdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1NhbGVzZm9yY2VJbkNvbm5lY3Rpb24gPSAnaXNTYWxlc2ZvcmNlSW5Db25uZWN0aW9uJyxcblxuICAvLyBEUElfSXNTY2FsZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNTY2FsZWQgPSAnaXNTY2FsZWQnLFxuXG4gIC8vIERQSV9Jc1NlbGVjdGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzU2VsZWN0ZWQgPSAnaXNTZWxlY3RlZCcsXG5cbiAgLy8gRFBJX0lzU2VsZWN0ZWRJdGVtLCBoYXZpbmcgdHlwZSBib29sXG4gIElzU2VsZWN0ZWRJdGVtID0gJ2lzU2VsZWN0ZWRJdGVtJyxcblxuICAvLyBEUElfSXNTZWxlY3Rpb25EaXNhYmxlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1NlbGVjdGlvbkRpc2FibGVkID0gJ2lzU2VsZWN0aW9uRGlzYWJsZWQnLFxuXG4gIC8vIERQSV9Jc1NoaWZ0RHJhZywgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1NoaWZ0RHJhZyA9ICdpc1NoaWZ0RHJhZycsXG5cbiAgLy8gRFBJX0lzU2luZ2xlTGFiZWwsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNTaW5nbGVMYWJlbCA9ICdpc1NpbmdsZUxhYmVsJyxcblxuICAvLyBEUElfSXNTaW5nbGVTZWxlY3QsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNTaW5nbGVTZWxlY3QgPSAnaXNTaW5nbGVTZWxlY3QnLFxuXG4gIC8vIERQSV9Jc1NpbmdsZVNlbGVjdE1vZGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNTaW5nbGVTZWxlY3RNb2RlID0gJ2lzU2luZ2xlU2VsZWN0TW9kZScsXG5cbiAgLy8gRFBJX0lzU2luZ2xlU2VsZWN0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIElzU2luZ2xlU2VsZWN0aW9uID0gJ2lzU2luZ2xlU2VsZWN0aW9uJyxcblxuICAvLyBEUElfSXNTb3J0ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNTb3J0ZWQgPSAnaXNTb3J0ZWQnLFxuXG4gIC8vIERQSV9Jc1NvcnRQaWxsLCBoYXZpbmcgdHlwZSBib29sXG4gIElzU29ydFBpbGwgPSAnaXNTb3J0UGlsbCcsXG5cbiAgLy8gRFBJX0lzU3BlY2lhbCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1NwZWNpYWwgPSAnaXNTcGVjaWFsJyxcblxuICAvLyBEUElfSXNTcGxhc2hTY3JlZW4sIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNTcGxhc2hTY3JlZW4gPSAnaXNTcGxhc2hTY3JlZW4nLFxuXG4gIC8vIERQSV9Jc1N0b3J5RW1wdHksIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNTdG9yeUVtcHR5ID0gJ2lzU3RvcnlFbXB0eScsXG5cbiAgLy8gRFBJX0lzU3RyaWtlVGhyb3VnaCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1N0cmlrZVRocm91Z2ggPSAnaXNTdHJpa2VUaHJvdWdoJyxcblxuICAvLyBEUElfSXNUYWJsZUNhbGMsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNUYWJsZUNhbGMgPSAnaXNUYWJsZUNhbGMnLFxuXG4gIC8vIERQSV9Jc1RhYmxlQ2xlYW5pbmdTdWJ0YWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1RhYmxlQ2xlYW5pbmdTdWJ0YWJsZSA9ICdpc1RhYmxlQ2xlYW5pbmdTdWJ0YWJsZScsXG5cbiAgLy8gRFBJX0lzVGFibGVGaWx0ZXJJbmNsdXNpdmUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNUYWJsZUZpbHRlckluY2x1c2l2ZSA9ICdpc1RhYmxlRmlsdGVySW5jbHVzaXZlJyxcblxuICAvLyBEUElfSXNUYWJsZVJhbmtlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1RhYmxlUmFua2VkID0gJ2lzVGFibGVSYW5rZWQnLFxuXG4gIC8vIERQSV9Jc1RlbXBvcmFyeSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1RlbXBvcmFyeSA9ICdpc1RlbXBvcmFyeScsXG5cbiAgLy8gRFBJX0lzVGl0bGVWaXNpYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzVGl0bGVWaXNpYmxlID0gJ2lzVGl0bGVWaXNpYmxlJyxcblxuICAvLyBEUElfSXNUb3BMZXZlbCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1RvcExldmVsID0gJ2lzVG9wTGV2ZWwnLFxuXG4gIC8vIERQSV9Jc1R3b1ZhbHVlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1R3b1ZhbHVlZCA9ICdpc1R3b1ZhbHVlZCcsXG5cbiAgLy8gRFBJX0lzVHlwZUluRmluaXNoZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNUeXBlSW5GaW5pc2hlZCA9ICdpc1R5cGVpbkZpbmlzaGVkJyxcblxuICAvLyBEUElfSXNUeXBlSW5QaWxsLCBoYXZpbmcgdHlwZSBib29sXG4gIElzVHlwZUluUGlsbCA9ICdpc1R5cGVJblBpbGwnLFxuXG4gIC8vIERQSV9Jc1VSTEFjdGlvbkZpZWxkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzVVJMQWN0aW9uRmllbGQgPSAnaXNVcmxBY3Rpb25GaWVsZCcsXG5cbiAgLy8gRFBJX0lzVW5kZXJsaW5lZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1VuZGVybGluZWQgPSAnaXNVbmRlcmxpbmVkJyxcblxuICAvLyBEUElfSXNVbmlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1VuaW9uID0gJ2lzVW5pb24nLFxuXG4gIC8vIERQSV9Jc1VuaW9uUmVwbGFjZW1lbnQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNVbmlvblJlcGxhY2VtZW50ID0gJ2lzVW5pb25SZXBsYWNlbWVudCcsXG5cbiAgLy8gRFBJX0lzVW5uYW1lZENhbGMsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNVbm5hbWVkQ2FsYyA9ICdpc1VubmFtZWQnLFxuXG4gIC8vIERQSV9Jc1VzZXJEZWZpbmVkQXR0cmlidXRlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzVXNlckRlZmluZWRBdHRyaWJ1dGUgPSAnaXNVc2VyRGVmaW5lZEF0dHJpYnV0ZScsXG5cbiAgLy8gRFBJX0lzVXNlckVkaXRhYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzVXNlckVkaXRhYmxlID0gJ2lzVXNlckVkaXRhYmxlJyxcblxuICAvLyBEUElfSXNVc2VyUHJvbXB0ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNVc2VyUHJvbXB0ZWQgPSAnaXNVc2VyUHJvbXB0ZWQnLFxuXG4gIC8vIERQSV9Jc1VzZXJSZXNwb25kZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNVc2VyUmVzcG9uZGVkID0gJ2lzVXNlclJlc3BvbmRlZCcsXG5cbiAgLy8gRFBJX0lzVmFsaWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNWYWxpZCA9ICdpc1ZhbGlkJyxcblxuICAvLyBEUElfSXNWYWxpZFdEQ1BhZ2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNWYWxpZFdEQ1BhZ2UgPSAnaXNWYWxpZFdkY1BhZ2UnLFxuXG4gIC8vIERQSV9Jc1ZhcnlpbmdBdHRyaWJ1dGVEaW1lbnNpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNWYXJ5aW5nQXR0cmlidXRlRGltZW5zaW9uID0gJ2lzVmFyeWluZ0F0dHJpYnV0ZURpbWVuc2lvbicsXG5cbiAgLy8gRFBJX0lzVmVydGljYWwsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNWZXJ0aWNhbCA9ICdpc1ZlcnRpY2FsJyxcblxuICAvLyBEUElfSXNWaWV3TW9kaWZpZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNWaWV3TW9kaWZpZWQgPSAnaXNWaWV3TW9kaWZpZWQnLFxuXG4gIC8vIERQSV9Jc1Zpc3VhbGx5Q2F0ZWdvcmljYWwsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNWaXN1YWxseUNhdGVnb3JpY2FsID0gJ2lzVmlzdWFsbHlDYXQnLFxuXG4gIC8vIERQSV9Jc1ZpekluVG9vbHRpcCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1ZpekluVG9vbHRpcCA9ICdpc1ZpekluVG9vbHRpcCcsXG5cbiAgLy8gRFBJX0lzV2ViLCBoYXZpbmcgdHlwZSBib29sXG4gIElzV2ViID0gJ2lzV2ViJyxcblxuICAvLyBEUElfSXNXaGl0ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1doaXRlID0gJ2lzV2hpdGUnLFxuXG4gIC8vIERQSV9Jc1dvcmxkTmV3LCBoYXZpbmcgdHlwZSBib29sXG4gIElzV29ybGROZXcgPSAnaXNXb3JsZE5ldycsXG5cbiAgLy8gRFBJX0lzWEF4aXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNYQXhpcyA9ICdpc1hBeGlzJyxcblxuICAvLyBEUElfS2VlcEFzcGVjdFJhdGlvLCBoYXZpbmcgdHlwZSBib29sXG4gIEtlZXBBc3BlY3RSYXRpbyA9ICdrZWVwQXNwZWN0UmF0aW8nLFxuXG4gIC8vIERQSV9MYWJlbExpbmVFbmRGaXJzdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBMYWJlbExpbmVFbmRGaXJzdCA9ICdsYWJlbExpbmVFbmRGaXJzdCcsXG5cbiAgLy8gRFBJX0xhYmVsTGluZUVuZExhc3QsIGhhdmluZyB0eXBlIGJvb2xcbiAgTGFiZWxMaW5lRW5kTGFzdCA9ICdsYWJlbExpbmVFbmRMYXN0JyxcblxuICAvLyBEUElfTGFiZWxNYXJrTWF4LCBoYXZpbmcgdHlwZSBib29sXG4gIExhYmVsTWFya01heCA9ICdsYWJlbE1hcmtNYXgnLFxuXG4gIC8vIERQSV9MYWJlbE1hcmtNaW4sIGhhdmluZyB0eXBlIGJvb2xcbiAgTGFiZWxNYXJrTWluID0gJ2xhYmVsTWFya01pbicsXG5cbiAgLy8gRFBJX0xvY2tBc3BlY3RSYXRpbywgaGF2aW5nIHR5cGUgYm9vbFxuICBMb2NrQXNwZWN0UmF0aW8gPSAnbG9ja0FzcGVjdFJhdGlvJyxcblxuICAvLyBEUElfTG9vcFBsYXliYWNrLCBoYXZpbmcgdHlwZSBib29sXG4gIExvb3BQbGF5YmFjayA9ICdsb29wUGxheWJhY2snLFxuXG4gIC8vIERQSV9Mb3NzeUltYWdlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBMb3NzeUltYWdlcyA9ICdsb3NzeUltYWdlcycsXG5cbiAgLy8gRFBJX01ha2VHbG9iYWwsIGhhdmluZyB0eXBlIGJvb2xcbiAgTWFrZUdsb2JhbCA9ICdpc01ha2VHbG9iYWwnLFxuXG4gIC8vIERQSV9NYW51YWxTb3J0T25seSwgaGF2aW5nIHR5cGUgYm9vbFxuICBNYW51YWxTb3J0T25seSA9ICdtYW51YWxTb3J0T25seScsXG5cbiAgLy8gRFBJX01hcEJveERlZmF1bHRTdHlsZVNlbGVjdGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIE1hcEJveERlZmF1bHRTdHlsZVNlbGVjdGVkID0gJ21hcGJveERlZmF1bHRTdHlsZVNlbGVjdGVkJyxcblxuICAvLyBEUElfTWFwQm94VVJMUGFyc2VTdWNjZXNzZnVsLCBoYXZpbmcgdHlwZSBib29sXG4gIE1hcEJveFVSTFBhcnNlU3VjY2Vzc2Z1bCA9ICdtYXBib3hVcmxQYXJzZVN1Y2Nlc3NmdWwnLFxuXG4gIC8vIERQSV9NYXBDbGllbnRSZXF1ZXN0c01hcFRpbGVzLCBoYXZpbmcgdHlwZSBib29sXG4gIE1hcENsaWVudFJlcXVlc3RzTWFwVGlsZXMgPSAnY2xpZW50UmVxdWVzdHNNYXBUaWxlcycsXG5cbiAgLy8gRFBJX01hcEhhc1ZhbGlkTGF5ZXIsIGhhdmluZyB0eXBlIGJvb2xcbiAgTWFwSGFzVmFsaWRMYXllciA9ICdtYXBIYXNWYWxpZExheWVyJyxcblxuICAvLyBEUElfTWFwU2hvd0F0dHJpYnV0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIE1hcFNob3dBdHRyaWJ1dGlvbiA9ICdzaG93QXR0cmlidXRpb24nLFxuXG4gIC8vIERQSV9NYXJrTGFiZWxzVmlzaWJpbGl0eUNoYW5nZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgTWFya0xhYmVsc1Zpc2liaWxpdHlDaGFuZ2VkID0gJ21hcmtMYWJlbHNWaXNpYmlsaXR5Q2hhbmdlZCcsXG5cbiAgLy8gRFBJX01lbWJlcnNMb2FkZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgTWVtYmVyc0xvYWRlZCA9ICdtZW1iZXJzTG9hZGVkJyxcblxuICAvLyBEUElfTWluaW1pemVOYW1lcywgaGF2aW5nIHR5cGUgYm9vbFxuICBNaW5pbWl6ZU5hbWVzID0gJ3VzZU1pbk5hbWVzJyxcblxuICAvLyBEUElfTW92ZVJlZmVyZWNlTGluZVVwLCBoYXZpbmcgdHlwZSBib29sXG4gIE1vdmVSZWZlcmVjZUxpbmVVcCA9ICdtb3ZlUmVmZXJlbmNlTGluZVVwJyxcblxuICAvLyBEUElfTXVsdGlEYXRhU291cmNlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBNdWx0aURhdGFTb3VyY2VzID0gJ211bHRpRGF0YVNvdXJjZXMnLFxuXG4gIC8vIERQSV9OYXZBcnJvd3NWaXNpYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gIE5hdkFycm93c1Zpc2libGUgPSAnbmF2QXJyb3dzVmlzaWJsZScsXG5cbiAgLy8gRFBJX09FTUhhc1NwbGFzaFNjcmVlbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBPRU1IYXNTcGxhc2hTY3JlZW4gPSAnb2VtSGFzU3BsYXNoU2NyZWVuJyxcblxuICAvLyBEUElfT25lV2F5QnJ1c2hpbmcsIGhhdmluZyB0eXBlIGJvb2xcbiAgT25lV2F5QnJ1c2hpbmcgPSAnb25lV2F5QnJ1c2hpbmcnLFxuXG4gIC8vIERQSV9Pbmx5QWdncmVnYXRpb25zLCBoYXZpbmcgdHlwZSBib29sXG4gIE9ubHlBZ2dyZWdhdGlvbnMgPSAnb25seUFnZ3JlZ2F0aW9ucycsXG5cbiAgLy8gRFBJX092ZXJyaWRlQWxsb3dlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBPdmVycmlkZUFsbG93ZWQgPSAnb3ZlcnJpZGVBbGxvd2VkJyxcblxuICAvLyBEUElfT3ZlcnJpZGVTdGFja0R1bXBlciwgaGF2aW5nIHR5cGUgYm9vbFxuICBPdmVycmlkZVN0YWNrRHVtcGVyID0gJ292ZXJyaWRlU3RhY2tEdW1wZXInLFxuXG4gIC8vIERQSV9QYWdlQXV0b0NvbG9yTGluZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgUGFnZUF1dG9Db2xvckxpbmVzID0gJ2F1dG9Db2xvckxpbmVzJyxcblxuICAvLyBEUElfUGFnZUF1dG9Db2xvck1hcmtzLCBoYXZpbmcgdHlwZSBib29sXG4gIFBhZ2VBdXRvQ29sb3JNYXJrcyA9ICdhdXRvQ29sb3JNYXJrcycsXG5cbiAgLy8gRFBJX1BhZ2VIaXN0b3J5RmFkZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBQYWdlSGlzdG9yeUZhZGUgPSAnaGlzdG9yeUZhZGUnLFxuXG4gIC8vIERQSV9QZXJjZW50YWdlQmFuZHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgUGVyY2VudGFnZUJhbmRzID0gJ3BlcmNlbnRhZ2VCYW5kcycsXG5cbiAgLy8gRFBJX1BlcmNlbnRpbGVzQWxsb3dlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBQZXJjZW50aWxlc0FsbG93ZWQgPSAncGVyY2VudGlsZXNBbGxvd2VkJyxcblxuICAvLyBEUElfUHVibGlzaFdpdGhSZW1vdGVRdWVyeUFnZW50LCBoYXZpbmcgdHlwZSBib29sXG4gIFB1Ymxpc2hXaXRoUmVtb3RlUXVlcnlBZ2VudCA9ICdwdWJsaXNoV2l0aFJlbW90ZVF1ZXJ5QWdlbnQnLFxuXG4gIC8vIERQSV9QcmV2aW91c1NoZWV0LCBoYXZpbmcgdHlwZSBib29sXG4gIFByZXZpb3VzU2hlZXQgPSAncHJldmlvdXNTaGVldCcsXG5cbiAgLy8gRFBJX1Byb21wdERlbGV0ZVNoZWV0c1dpdGhWaXpJblRvb2x0aXAsIGhhdmluZyB0eXBlIGJvb2xcbiAgUHJvbXB0RGVsZXRlU2hlZXRzV2l0aFZpekluVG9vbHRpcCA9ICdwcm9tcHREZWxldGVTaGVldHNXaXRoVml6SW5Ub29sdGlwJyxcblxuICAvLyBEUElfUXVhbnRpbGVzQWxsb3dlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBRdWFudGlsZXNBbGxvd2VkID0gJ3F1YW50aWxlc0FsbG93ZWQnLFxuXG4gIC8vIERQSV9SYWRpYWxEaXN0YW5jZUhpdFRlc3QsIGhhdmluZyB0eXBlIGJvb2xcbiAgUmFkaWFsRGlzdGFuY2VIaXRUZXN0ID0gJ3JhZGlhbERpc3RhbmNlSGl0VGVzdCcsXG5cbiAgLy8gRFBJX1JlZkxpbmVTZWxlY3RlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBSZWZMaW5lU2VsZWN0ZWQgPSAncmVmTGluZVNlbGVjdGVkJyxcblxuICAvLyBEUElfUmVtb3ZlZFNoZWV0cywgaGF2aW5nIHR5cGUgYm9vbFxuICBSZW1vdmVkU2hlZXRzID0gJ3JlbW92ZWRTaGVldHMnLFxuXG4gIC8vIERQSV9SZW5kZXJJbWFnZXNBc1VybHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgUmVuZGVySW1hZ2VzQXNVcmxzID0gJ2ltYWdlc0FzVXJscycsXG5cbiAgLy8gRFBJX1JlbmRlck9uVG9wLCBoYXZpbmcgdHlwZSBib29sXG4gIFJlbmRlck9uVG9wID0gJ3JlbmRlck9uVG9wJyxcblxuICAvLyBEUElfUmVwZWF0SGVhZGVyc0xlZ2VuZHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgUmVwZWF0SGVhZGVyc0xlZ2VuZHMgPSAncmVwZWF0SGVhZGVyc0xlZ2VuZHMnLFxuXG4gIC8vIERQSV9SZXBsYWNlQWN0aXZlQ29uZmlnLCBoYXZpbmcgdHlwZSBib29sXG4gIFJlcGxhY2VBY3RpdmVDb25maWcgPSAncmVwbGFjZUFjdGl2ZUNvbmZpZycsXG5cbiAgLy8gRFBJX1JlcGxhY2VEYXRhc291cmNlQWZ0ZXJQdWJsaXNoLCBoYXZpbmcgdHlwZSBib29sXG4gIFJlcGxhY2VEYXRhc291cmNlQWZ0ZXJQdWJsaXNoID0gJ3JlcGxhY2VEYXRhc291cmNlQWZ0ZXJQdWJsaXNoJyxcblxuICAvLyBEUElfUmVwbGFjZURhdGFzb3VyY2VGYWlsZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgUmVwbGFjZURhdGFzb3VyY2VGYWlsZWQgPSAncmVwbGFjZURhdGFzb3VyY2VGYWlsZWQnLFxuXG4gIC8vIERQSV9SZXBsYWNlVGRlLCBoYXZpbmcgdHlwZSBib29sXG4gIFJlcGxhY2VUZGUgPSAncmVwbGFjZVRkZScsXG5cbiAgLy8gRFBJX1JlcXVpcmVTZWxlY3Rpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgUmVxdWlyZVNlbGVjdGlvbiA9ICdyZXF1aXJlU2VsZWN0aW9uJyxcblxuICAvLyBEUElfUmVxdWlyZXNEQlZhcmlhYmxlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBSZXF1aXJlc0RCVmFyaWFibGVzID0gJ3JlcXVpcmVzRGJWYXJpYWJsZXMnLFxuXG4gIC8vIERQSV9SZXF1aXJlc0ZpZWxkTGlzdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBSZXF1aXJlc0ZpZWxkTGlzdCA9ICdyZXF1aXJlc0ZpZWxkTGlzdCcsXG5cbiAgLy8gRFBJX1Jlc3RhcnRFdmVyeUZpZWxkSXNJbnZhbGlkLCBoYXZpbmcgdHlwZSBib29sXG4gIFJlc3RhcnRFdmVyeUZpZWxkSXNJbnZhbGlkID0gJ3Jlc3RhcnRFdmVyeUZpZWxkSXNJbnZhbGlkJyxcblxuICAvLyBEUElfUmlnaHRKdXN0aWZ5LCBoYXZpbmcgdHlwZSBib29sXG4gIFJpZ2h0SnVzdGlmeSA9ICdyaWdodEp1c3RpZnknLFxuXG4gIC8vIERQSV9TYXZlRW5hYmxlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTYXZlRW5hYmxlZCA9ICdzYXZlRW5hYmxlZCcsXG5cbiAgLy8gRFBJX1NhdmVQYXNzd29yZEFsbG93ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2F2ZVBhc3N3b3JkQWxsb3dlZCA9ICdzYXZlUGFzc3dvcmRBbGxvd2VkJyxcblxuICAvLyBEUElfU2NvcGVJc29sYXRpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgU2NvcGVJc29sYXRpb24gPSAnc2NvcGVJc29sYXRpb24nLFxuXG4gIC8vIERQSV9TZWxlY3Rpb25SZXF1aXJlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTZWxlY3Rpb25SZXF1aXJlZCA9ICdzZWxlY3Rpb25SZXF1aXJlZCcsXG5cbiAgLy8gRFBJX1NlbmROb3RpZmljYXRpb25zLCBoYXZpbmcgdHlwZSBib29sXG4gIFNlbmROb3RpZmljYXRpb25zID0gJ3NlbmROb3RpZmljYXRpb25zJyxcblxuICAvLyBEUElfU2V0QWN0aXZlLCBoYXZpbmcgdHlwZSBib29sXG4gIFNldEFjdGl2ZSA9ICdzZXRBY3RpdmUnLFxuXG4gIC8vIERQSV9TZXREZWZhdWx0U29ydCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTZXREZWZhdWx0U29ydCA9ICdzZXREZWZhdWx0JyxcblxuICAvLyBEUElfU2hlZXRJc0Rhc2hib2FyZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaGVldElzRGFzaGJvYXJkID0gJ2lzRGFzaGJvYXJkJyxcblxuICAvLyBEUElfU2hlZXRJc1N0b3J5Ym9hcmQsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hlZXRJc1N0b3J5Ym9hcmQgPSAnaXNTdG9yeScsXG5cbiAgLy8gRFBJX1Nob3VsZEFsd2F5c0Rpc3BsYXlBbGlhcywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG91bGRBbHdheXNEaXNwbGF5QWxpYXMgPSAnc2hvdWxkQWx3YXlzRGlzcGxheUFsaWFzJyxcblxuICAvLyBEUElfU2hvdWxkQXV0b0NhcHR1cmUsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvdWxkQXV0b0NhcHR1cmUgPSAnc2hvdWxkQXV0b0NhcHR1cmUnLFxuXG4gIC8vIERQSV9TaG91bGRBdXRvUmV2ZXJ0LCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3VsZEF1dG9SZXZlcnQgPSAnc2hvdWxkQXV0b1JldmVydCcsXG5cbiAgLy8gRFBJX1Nob3VsZENoYW5nZVVJTW9kZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG91bGRDaGFuZ2VVSU1vZGUgPSAnc2hvdWxkQ2hhbmdlVWlNb2RlJyxcblxuICAvLyBEUElfU2hvdWxkRGlzcGxheSwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG91bGREaXNwbGF5ID0gJ3Nob3VsZERpc3BsYXknLFxuXG4gIC8vIERQSV9TaG91bGREcmlsbCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG91bGREcmlsbCA9ICdzaG91bGREcmlsbCcsXG5cbiAgLy8gRFBJX1Nob3VsZEZvcmNlQ29ubmVjdGlvbkF0dGVtcHQsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvdWxkRm9yY2VDb25uZWN0aW9uQXR0ZW1wdCA9ICdzaG91bGRGb3JjZUNvbm5lY3Rpb25BdHRlbXB0JyxcblxuICAvLyBEUElfU2hvdWxkUmVmcmVzaERTLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3VsZFJlZnJlc2hEUyA9ICdzaG91bGRSZWZyZXNoRHMnLFxuXG4gIC8vIERQSV9TaG91bGRTY2FsZU1hcmtzSW5BeGlzVW5pdHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvdWxkU2NhbGVNYXJrc0luQXhpc1VuaXRzID0gJ3Nob3VsZFNjYWxlTWFya3NJbkF4aXNVbml0cycsXG5cbiAgLy8gRFBJX1Nob3VsZFNlZWRDcmVkZW50aWFscywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG91bGRTZWVkQ3JlZGVudGlhbHMgPSAnc2hvdWxkU2VlZENyZWRlbnRpYWxzJyxcblxuICAvLyBEUElfU2hvdWxkU2hvd0RhdGFTb3VyY2VDb25uZWN0aW9uRXJyb3IsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvdWxkU2hvd0RhdGFTb3VyY2VDb25uZWN0aW9uRXJyb3IgPSAnc2hvdWxkU2hvd0RhdGFTb3VyY2VDb25uZWN0aW9uRXJyb3InLFxuXG4gIC8vIERQSV9TaG91bGRTaG93RGlzdGFuY2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvdWxkU2hvd0Rpc3RhbmNlID0gJ3Nob3VsZFNob3dEaXN0YW5jZScsXG5cbiAgLy8gRFBJX1Nob3VsZFNob3dIaWRkZW5GaWVsZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG91bGRTaG93SGlkZGVuRmllbGQgPSAnc2hvdWxkU2hvd0hpZGRlbkZpZWxkJyxcblxuICAvLyBEUElfU2hvdWxkU2hvd01hcFNjYWxlLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3VsZFNob3dNYXBTY2FsZSA9ICdzaG91bGRTaG93TWFwU2NhbGUnLFxuXG4gIC8vIERQSV9TaG91bGRVUkxFc2NhcGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvdWxkVVJMRXNjYXBlID0gJ3Nob3VsZFVybEVzY2FwZScsXG5cbiAgLy8gRFBJX1Nob3VsZFVwZGF0ZURvbWFpbkluZm8sIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvdWxkVXBkYXRlRG9tYWluSW5mbyA9ICdzaG91bGRVcGRhdGVEb21JbmZvJyxcblxuICAvLyBEUElfU2hvd0FkZFRvRmlsdGVyLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dBZGRUb0ZpbHRlciA9ICdzaG93QWRkVG9GaWx0ZXJCdXR0b24nLFxuXG4gIC8vIERQSV9TaG93QWxpYXNlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93QWxpYXNlcyA9ICdzaG93QWxpYXNlcycsXG5cbiAgLy8gRFBJX1Nob3dBbGxQYWdlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93QWxsUGFnZXMgPSAnc2hvd0FsbFBhZ2VzJyxcblxuICAvLyBEUElfU2hvd0FwcGx5LCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dBcHBseSA9ICdzaG93QXBwbHlCdXR0b24nLFxuXG4gIC8vIERQSV9TaG93QXBwbHlBbmRDYW5jZWxCdXR0b25zLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dBcHBseUFuZENhbmNlbEJ1dHRvbnMgPSAnc2hvd0FwcGx5QW5kQ2FuY2VsQnV0dG9ucycsXG5cbiAgLy8gRFBJX1Nob3dBdXRoZW50aWNhdGlvbk9wdGlvbnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd0F1dGhlbnRpY2F0aW9uT3B0aW9ucyA9ICdzaG93QXV0aGVudGljYXRpb25PcHRpb25zJyxcblxuICAvLyBEUElfU2hvd0F1dGhlbnRpY2F0aW9uU2V0dGluZywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93QXV0aGVudGljYXRpb25TZXR0aW5nID0gJ3Nob3dBdXRoZW50aWNhdGlvblNldHRpbmcnLFxuXG4gIC8vIERQSV9TaG93QXV0bywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93QXV0byA9ICdzaG93QXV0bycsXG5cbiAgLy8gRFBJX1Nob3dCb2xkLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dCb2xkID0gJ3Nob3dCb2xkT3B0aW9uJyxcblxuICAvLyBEUElfU2hvd0J1dHRvbnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd0J1dHRvbnMgPSAnc2hvd0J1dHRvbnMnLFxuXG4gIC8vIERQSV9TaG93Q2FwdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93Q2FwdGlvbiA9ICdzaG93Q2FwdGlvbicsXG5cbiAgLy8gRFBJX1Nob3dDb2xvckxlZ2VuZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93Q29sb3JMZWdlbmQgPSAnc2hvd0NvbG9yTGVnZW5kJyxcblxuICAvLyBEUElfU2hvd0RhdGFHcmlkSW5saW5lUmVuYW1lLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dEYXRhR3JpZElubGluZVJlbmFtZSA9ICdzaG93RGF0YUdyaWRJbmxpbmVSZW5hbWUnLFxuXG4gIC8vIERQSV9TaG93RGV0YWlsTWVzc2FnZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd0RldGFpbE1lc3NhZ2VzID0gJ3Nob3dEZXRhaWxNZXNzYWdlcycsXG5cbiAgLy8gRFBJX1Nob3dEYXRlLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dEYXRlID0gJ3Nob3dEYXRlJyxcblxuICAvLyBEUElfU2hvd0RyYWdMYWJlbCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93RHJhZ0xhYmVsID0gJ3Nob3dEcmFnTGFiZWwnLFxuXG4gIC8vIERQSV9TaG93RHJvcE1lYXN1cmVzLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dEcm9wTWVhc3VyZXMgPSAnc2hvd0Ryb3BNZWFzdXJlcycsXG5cbiAgLy8gRFBJX1Nob3dFbWJlZEFsbCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93RW1iZWRBbGwgPSAnc2hvd0VtYmVkQWxsJyxcblxuICAvLyBEUElfU2hvd0VudGlyZUltYWdlLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dFbnRpcmVJbWFnZSA9ICdzaG93RW50aXJlSW1hZ2UnLFxuXG4gIC8vIERQSV9TaG93RXhjbHVkZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93RXhjbHVkZSA9ICdzaG93RXhjbHVkZUJ1dHRvbicsXG5cbiAgLy8gRFBJX1Nob3dGbG9hdGluZ1pvb21Ub29sYmFyLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dGbG9hdGluZ1pvb21Ub29sYmFyID0gJ3Nob3dGbG9hdGluZ1pvb21Ub29sYmFyJyxcblxuICAvLyBEUElfU2hvd0Zvcm1hdHRlciwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93Rm9ybWF0dGVyID0gJ3Nob3dGb3JtYXR0ZXInLFxuXG4gIC8vIERQSV9TaG93RnVsbFNjaGVkdWxlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93RnVsbFNjaGVkdWxlcyA9ICdzaG93RnVsbFNjaGVkdWxlcycsXG5cbiAgLy8gRFBJX1Nob3dHZW9ncmFwaGljU2VhcmNoLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dHZW9ncmFwaGljU2VhcmNoID0gJ3Nob3dHZW9ncmFwaGljU2VhcmNoJyxcblxuICAvLyBEUElfU2hvd0hpZGRlbkZpZWxkcywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93SGlkZGVuRmllbGRzID0gJ3Nob3dIaWRkZW5GaWVsZHMnLFxuXG4gIC8vIERQSV9TaG93SGlzdG9yeUNvbnRyb2xzLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dIaXN0b3J5Q29udHJvbHMgPSAnc2hvd0hpc3RvcnlDb250cm9scycsXG5cbiAgLy8gRFBJX1Nob3dJbmNsdWRlTG9jYWxGaWxlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93SW5jbHVkZUxvY2FsRmlsZXMgPSAnc2hvd0luY2x1ZGVMb2NhbEZpbGVzJyxcblxuICAvLyBEUElfU2hvd0luY2x1ZGVPdGhlck9wdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93SW5jbHVkZU90aGVyT3B0aW9uID0gJ3Nob3dJbmNsdWRlT3RoZXJPcHRpb24nLFxuXG4gIC8vIERQSV9TaG93SW5jbHVkZVNlbGVjdGlvbnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd0luY2x1ZGVTZWxlY3Rpb25zID0gJ3Nob3dJbmNsdWRlU2VsZWN0aW9ucycsXG5cbiAgLy8gRFBJX1Nob3dJbmNyU2NoZWR1bGVzLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dJbmNyU2NoZWR1bGVzID0gJ3Nob3dJbmNyU2NoZWR1bGVzJyxcblxuICAvLyBEUElfU2hvd0lubmVyTW9zdExldmVsLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dJbm5lck1vc3RMZXZlbCA9ICdzaG93SW5uZXJtb3N0TGV2ZWwnLFxuXG4gIC8vIERQSV9TaG93SXRhbGljcywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93SXRhbGljcyA9ICdzaG93SXRhbGljc09wdGlvbicsXG5cbiAgLy8gRFBJX1Nob3dMZWdlbmQsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd0xlZ2VuZCA9ICdzaG93TGVnZW5kJyxcblxuICAvLyBEUElfU2hvd0xvY2tlZFBlcm1pc3Npb25zSWNvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93TG9ja2VkUGVybWlzc2lvbnNJY29uID0gJ3Nob3dMb2NrZWRQZXJtaXNzaW9uc0ljb24nLFxuXG4gIC8vIERQSV9TaG93TWFuYWdlRGF0YXNvdXJjZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd01hbmFnZURhdGFzb3VyY2VzID0gJ3Nob3dNYW5hZ2VEYXRhc291cmNlcycsXG5cbiAgLy8gRFBJX1Nob3dNYXBMZWdlbmQsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd01hcExlZ2VuZCA9ICdzaG93TWFwTGVnZW5kJyxcblxuICAvLyBEUElfU2hvd01hcFNjYWxlLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dNYXBTY2FsZSA9ICdzaG93TWFwU2NhbGUnLFxuXG4gIC8vIERQSV9TaG93TWFwcGVkRmlsdGVyQ29scywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93TWFwcGVkRmlsdGVyQ29scyA9ICdzaG93TWFwcGVkRmlsdGVyQ29sdW1ucycsXG5cbiAgLy8gRFBJX1Nob3dOYW1lLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dOYW1lID0gJ3Nob3dOYW1lJyxcblxuICAvLyBEUElfU2hvd05vbmUsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd05vbmUgPSAnc2hvd05vbmUnLFxuXG4gIC8vIERQSV9TaG93UGFnZVBsYXliYWNrLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dQYWdlUGxheWJhY2sgPSAnc2hvd1BhZ2VQbGF5YmFjaycsXG5cbiAgLy8gRFBJX1Nob3dQYWdlUmVhZG91dCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93UGFnZVJlYWRvdXQgPSAnc2hvd1BhZ2VSZWFkb3V0JyxcblxuICAvLyBEUElfU2hvd1BhZ2VTbGlkZXIsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1BhZ2VTbGlkZXIgPSAnc2hvd1BhZ2VTbGlkZXInLFxuXG4gIC8vIERQSV9TaG93UGFyZW50LCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dQYXJlbnQgPSAnc2hvd1BhcmVudCcsXG5cbiAgLy8gRFBJX1Nob3dQZXJjZW50YWdlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93UGVyY2VudGFnZXMgPSAnc2hvd1BlcmNlbnRhZ2VzJyxcblxuICAvLyBEUElfU2hvd1ByZWRpY3Rpb25JbnRlcnZhbHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1ByZWRpY3Rpb25JbnRlcnZhbHMgPSAnc2hvd1ByZWRpY3Rpb25JbnRlcnZhbHMnLFxuXG4gIC8vIERQSV9TaG93UHVibGlzaGVkRGF0YXNvdXJjZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1B1Ymxpc2hlZERhdGFzb3VyY2VzID0gJ3Nob3dQdWJsaXNoZWREYXRhc291cmNlcycsXG5cbiAgLy8gRFBJX1Nob3dSZWxEYXRlUGlja2VyLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dSZWxEYXRlUGlja2VyID0gJ3Nob3dSZWxEYXRlUGlja2VyJyxcblxuICAvLyBEUElfU2hvd1JlcGxhY2VEYXRhc291cmNlLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dSZXBsYWNlRGF0YXNvdXJjZSA9ICdzaG93UmVwbGFjZURhdGFzb3VyY2UnLFxuXG4gIC8vIERQSV9TaG93U2VwYXJhdG9yLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dTZXBhcmF0b3IgPSAnc2hvd1NlcGFyYXRvcicsXG5cbiAgLy8gRFBJX1Nob3dTaGFwZUxlZ2VuZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93U2hhcGVMZWdlbmQgPSAnc2hvd1NoYXBlTGVnZW5kJyxcblxuICAvLyBEUElfU2hvd1NpemVMZWdlbmQsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1NpemVMZWdlbmQgPSAnc2hvd1NpemVMZWdlbmQnLFxuXG4gIC8vIERQSV9TaG93U2hlbGYsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1NoZWxmID0gJ3Nob3dTaGVsZicsXG5cbiAgLy8gRFBJX1Nob3dTdHJ1Y3R1cmUsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1N0cnVjdHVyZSA9ICdzaG93U3RydWN0dXJlJyxcblxuICAvLyBEUElfU2hvd1N5bmNDbGllbnRPcHRpb25zLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dTeW5jQ2xpZW50T3B0aW9ucyA9ICdzaG93U3luY0NsaWVudE9wdGlvbnMnLFxuXG4gIC8vIERQSV9TaG93VGFic0FsbG93ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1RhYnNBbGxvd2VkID0gJ3Nob3dUYWJzQWxsb3dlZCcsXG5cbiAgLy8gRFBJX1Nob3dUaW1lLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dUaW1lID0gJ3Nob3dUaW1lJyxcblxuICAvLyBEUElfU2hvd1RpdGxlLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dUaXRsZSA9ICdzaG93VGl0bGUnLFxuXG4gIC8vIERQSV9TaG93VHJhbnNTbGlkZXIsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1RyYW5zU2xpZGVyID0gJ3Nob3dUcmFuc3BhcmVuY3lTbGlkZXInLFxuXG4gIC8vIERQSV9TaG93VW5kZXJsaW5lLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dVbmRlcmxpbmUgPSAnc2hvd1VuZGVybGluZU9wdGlvbicsXG5cbiAgLy8gRFBJX1Nob3dVc2VyVGh1bWJuYWlsT3B0aW9ucywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93VXNlclRodW1ibmFpbE9wdGlvbnMgPSAnc2hvd1VzZXJUaHVtYm5haWxPcHRpb25zJyxcblxuICAvLyBEUElfU2hvd1ZpZXcsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1ZpZXcgPSAnc2hvd1ZpZXcnLFxuXG4gIC8vIERQSV9TaG93Vmlld3MsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1ZpZXdzID0gJ3Nob3dWaWV3cycsXG5cbiAgLy8gRFBJX1Nob3dpbmdQYWdlTG9hZEVycm9yLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dpbmdQYWdlTG9hZEVycm9yID0gJ3Nob3dpbmdQYWdlTG9hZEVycm9yJyxcblxuICAvLyBEUElfU3VwcmVzc0FsaWFzZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgU3VwcmVzc0FsaWFzZXMgPSAnc3VzcHJlc3NBbGlhc2VzJyxcblxuICAvLyBEUElfU3VwcmVzc1Rob3VzYW5kc1NlcGFyYXRvciwgaGF2aW5nIHR5cGUgYm9vbFxuICBTdXByZXNzVGhvdXNhbmRzU2VwYXJhdG9yID0gJ3N1cHJlc3NUaG91c2FuZHNTZXBhcmF0b3InLFxuXG4gIC8vIERQSV9TaW5nbGVTZWxlY3RPbmx5LCBoYXZpbmcgdHlwZSBib29sXG4gIFNpbmdsZVNlbGVjdE9ubHkgPSAnc2luZ2xlU2VsZWN0T25seScsXG5cbiAgLy8gRFBJX1NraXBJZkFjdGl2ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBTa2lwSWZBY3RpdmUgPSAnc2tpcElmQWN0aXZlJyxcblxuICAvLyBEUElfU2tpcFJlZnJlc2gsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2tpcFJlZnJlc2ggPSAnc2tpcFJlZnJlc2gnLFxuXG4gIC8vIERQSV9Ta2lwVmFsaWRhdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBTa2lwVmFsaWRhdGlvbiA9ICdza2lwVmFsaWRhdGlvbicsXG5cbiAgLy8gRFBJX1NraXBwZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2tpcHBlZCA9ICdza2lwcGVkJyxcblxuICAvLyBEUElfU29ydEZpZWxkSXNJbnZhbGlkLCBoYXZpbmcgdHlwZSBib29sXG4gIFNvcnRGaWVsZElzSW52YWxpZCA9ICdzb3J0RmllbGRJc0ludmFsaWQnLFxuXG4gIC8vIERQSV9Tb3J0TW9kZUlzQXV0bywgaGF2aW5nIHR5cGUgYm9vbFxuICBTb3J0TW9kZUlzQXV0byA9ICdzb3J0TW9kZUlzQXV0bycsXG5cbiAgLy8gRFBJX1NwbGl0T25FZGdlU25hcCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTcGxpdE9uRWRnZVNuYXAgPSAnc3BsaXRPbkVkZ2VTbmFwJyxcblxuICAvLyBEUElfU3RhbmRhcmREZXZpYXRpb25BbGxvd2VkLCBoYXZpbmcgdHlwZSBib29sXG4gIFN0YW5kYXJkRGV2aWF0aW9uQWxsb3dlZCA9ICdzdGFuZGFyZERldmlhdGlvbkFsbG93ZWQnLFxuXG4gIC8vIERQSV9TdGF0ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBTdGF0ZSA9ICdzdGF0ZScsXG5cbiAgLy8gRFBJX1N0b3JlZFByb2NEaXNhYmxlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTdG9yZWRQcm9jRGlzYWJsZWQgPSAnc3RvcmVkUHJvY0Rpc2FibGVkJyxcblxuICAvLyBEUElfU3RvcmVkUHJvY3NEcm9wYWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBTdG9yZWRQcm9jc0Ryb3BhYmxlID0gJ3N0b3JlZFByb2NzRHJvcGFibGUnLFxuXG4gIC8vIERQSV9TdG9yeUlzRW1wdHksIGhhdmluZyB0eXBlIGJvb2xcbiAgU3RvcnlJc0VtcHR5ID0gJ3N0b3J5SXNFbXB0eScsXG5cbiAgLy8gRFBJX1N0b3J5UG9pbnRJc0VtcHR5LCBoYXZpbmcgdHlwZSBib29sXG4gIFN0b3J5UG9pbnRJc0VtcHR5ID0gJ3N0b3J5UG9pbnRJc0VtcHR5JyxcblxuICAvLyBEUElfU3VjY2Vzc2Z1bFNhdmUsIGhhdmluZyB0eXBlIGJvb2xcbiAgU3VjY2Vzc2Z1bFNhdmUgPSAnc3VjY2Vzc2Z1bFNhdmUnLFxuXG4gIC8vIERQSV9TdXBwb3J0WEF4aXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgU3VwcG9ydFhBeGlzID0gJ3N1cHBvcnRYQXhpcycsXG5cbiAgLy8gRFBJX1N1cHBvcnRZQXhpcywgaGF2aW5nIHR5cGUgYm9vbFxuICBTdXBwb3J0WUF4aXMgPSAnc3VwcG9ydFlBeGlzJyxcblxuICAvLyBEUElfU3VwcG9ydHNDZW50ZXJBbGlnbm1lbnQsIGhhdmluZyB0eXBlIGJvb2xcbiAgU3VwcG9ydHNDZW50ZXJBbGlnbm1lbnQgPSAnc3VwcG9ydHNDZW50ZXJBbGlnbm1lbnQnLFxuXG4gIC8vIERQSV9TdXBwb3J0c0RCRmlsdGVycywgaGF2aW5nIHR5cGUgYm9vbFxuICBTdXBwb3J0c0RCRmlsdGVycyA9ICdzdXBwb3J0c0RhdGFiYXNlRmlsdGVycycsXG5cbiAgLy8gRFBJX1N1cHBvcnRzTXVsdGlwbGVWYWx1ZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgU3VwcG9ydHNNdWx0aXBsZVZhbHVlcyA9ICdzdXBwb3J0c011bHRpcGxlVmFsdWVzJyxcblxuICAvLyBEUElfU3VwcG9ydHNSaWdodEFsaWdubWVudCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTdXBwb3J0c1JpZ2h0QWxpZ25tZW50ID0gJ3N1cHBvcnRzUmlnaHRBbGlnbm1lbnQnLFxuXG4gIC8vIERQSV9TdXBwb3J0c1RhYmxlRmlsdGVycywgaGF2aW5nIHR5cGUgYm9vbFxuICBTdXBwb3J0c1RhYmxlRmlsdGVycyA9ICdzdXBwb3J0c1RhYmxlRmlsdGVycycsXG5cbiAgLy8gRFBJX1N5bW1ldHJpYywgaGF2aW5nIHR5cGUgYm9vbFxuICBTeW1tZXRyaWMgPSAnc3ltbWV0cmljJyxcblxuICAvLyBEUElfU3luY0F1dG9tYXRpY0RyaWxsLCBoYXZpbmcgdHlwZSBib29sXG4gIFN5bmNBdXRvbWF0aWNEcmlsbCA9ICdzeW5jQXV0b21hdGljRHJpbGwnLFxuXG4gIC8vIERQSV9UYWJzQWxsb3dlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBUYWJzQWxsb3dlZCA9ICd0YWJzQWxsb3dlZCcsXG5cbiAgLy8gRFBJX1RleHREcm9wZG93blN0YXRlLCBoYXZpbmcgdHlwZSBib29sXG4gIFRleHREcm9wZG93blN0YXRlID0gJ3RvZ2dsZVN0YXRlJyxcblxuICAvLyBEUElfVGl0bGVJbmxpbmUsIGhhdmluZyB0eXBlIGJvb2xcbiAgVGl0bGVJbmxpbmUgPSAndGl0bGVJbmxpbmUnLFxuXG4gIC8vIERQSV9Ub2dnbGVIaWdobGlnaHRTdGF0ZUNoYW5nZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgVG9nZ2xlSGlnaGxpZ2h0U3RhdGVDaGFuZ2VkID0gJ3RvZ2dsZUhpZ2hsaWdodCcsXG5cbiAgLy8gRFBJX1RyYW5zZm9ybWVkODBGb3JtYXQsIGhhdmluZyB0eXBlIGJvb2xcbiAgVHJhbnNmb3JtZWQ4MEZvcm1hdCA9ICdvbGRGb3JtYXQnLFxuXG4gIC8vIERQSV9UcmVuZExpbmVTZWxlY3RlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBUcmVuZExpbmVTZWxlY3RlZCA9ICd0cmVuZExpbmVTZWxlY3RlZCcsXG5cbiAgLy8gRFBJX1RydW5jRGF0ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBUcnVuY0RhdGUgPSAndHJ1bmNEYXRlJyxcblxuICAvLyBEUElfVHVwbGVTZWxlY3RlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBUdXBsZVNlbGVjdGVkID0gJ3R1cGxlU2VsZWN0ZWQnLFxuXG4gIC8vIERQSV9VSUF1dG9tYXRpb25EaWRQYWdlTG9hZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBVSUF1dG9tYXRpb25EaWRQYWdlTG9hZCA9ICd1aUF1dG9tYXRpb25EaWRQYWdlTG9hZCcsXG5cbiAgLy8gRFBJX1VJQXV0b21hdGlvbklzQ2hlY2tlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBVSUF1dG9tYXRpb25Jc0NoZWNrZWQgPSAndWlBdXRvbWF0aW9uSXNDaGVja2VkJyxcblxuICAvLyBEUElfVUlBdXRvbWF0aW9uSXNFbmFibGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIFVJQXV0b21hdGlvbklzRW5hYmxlZCA9ICd1aUF1dG9tYXRpb25Jc0VuYWJsZWQnLFxuXG4gIC8vIERQSV9VSUF1dG9tYXRpb25Jc0V2ZW50UHJvY2Vzc2VkLCBoYXZpbmcgdHlwZSBib29sXG4gIFVJQXV0b21hdGlvbklzRXZlbnRQcm9jZXNzZWQgPSAndWlBdXRvbWF0aW9uSXNFdmVudFByb2Nlc3NlZCcsXG5cbiAgLy8gRFBJX1VJQXV0b21hdGlvbklzRm9jdXNlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBVSUF1dG9tYXRpb25Jc0ZvY3VzZWQgPSAndWlBdXRvbWF0aW9uSXNGb2N1c2VkJyxcblxuICAvLyBEUElfVUlBdXRvbWF0aW9uSXNGb3VuZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBVSUF1dG9tYXRpb25Jc0ZvdW5kID0gJ3VpQXV0b21hdGlvbklzRm91bmQnLFxuXG4gIC8vIERQSV9VSUF1dG9tYXRpb25Jc1JlYWRvbmx5LCBoYXZpbmcgdHlwZSBib29sXG4gIFVJQXV0b21hdGlvbklzUmVhZG9ubHkgPSAndWlBdXRvbWF0aW9uSXNSZWFkb25seScsXG5cbiAgLy8gRFBJX1VJQXV0b21hdGlvbklzU2VsZWN0ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgVUlBdXRvbWF0aW9uSXNTZWxlY3RlZCA9ICd1aUF1dG9tYXRpb25Jc1NlbGVjdGVkJyxcblxuICAvLyBEUElfVXBkYXRlQWxsUGFuZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgVXBkYXRlQWxsUGFuZXMgPSAndXBkYXRlQWxsUGFuZXMnLFxuXG4gIC8vIERQSV9VcGRhdGVEU0NhcHRpb25Pbmx5LCBoYXZpbmcgdHlwZSBib29sXG4gIFVwZGF0ZURTQ2FwdGlvbk9ubHkgPSAndXBkYXRlRHNDYXB0aW9uT25seScsXG5cbiAgLy8gRFBJX1VwZGF0ZU1vZGVsRnJvbVBhcmFtcywgaGF2aW5nIHR5cGUgYm9vbFxuICBVcGRhdGVNb2RlbEZyb21QYXJhbXMgPSAndXBkYXRlTW9kZWxGcm9tUGFyYW1zJyxcblxuICAvLyBEUElfVXBkYXRlU2hlbHZlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBVcGRhdGVTaGVsdmVzID0gJ3VwZGF0ZVNoZWx2ZXMnLFxuXG4gIC8vIERQSV9VcGRhdGVzVXNlQ29udGV4dCwgaGF2aW5nIHR5cGUgYm9vbFxuICBVcGRhdGVzVXNlQ29udGV4dCA9ICd1cGRhdGVzVXNlQ29udGV4dCcsXG5cbiAgLy8gRFBJX1VwZ3JhZGVEb2N1bWVudFZlcnNpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgVXBncmFkZURvY3VtZW50VmVyc2lvbiA9ICd1cGdyYWRlRG9jdW1lbnRWZXJzaW9uJyxcblxuICAvLyBEUElfVXNlQWxpYXNlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBVc2VBbGlhc2VzID0gJ3VzZUFsaWFzZXMnLFxuXG4gIC8vIERQSV9Vc2VCbGFua0Zvck51bGwsIGhhdmluZyB0eXBlIGJvb2xcbiAgVXNlQmxhbmtGb3JOdWxsID0gJ3VzZUJsYW5rRm9yTnVsbCcsXG5cbiAgLy8gRFBJX1VzZUNhbGN1bGF0aW9uRWRpdG9yLCBoYXZpbmcgdHlwZSBib29sXG4gIFVzZUNhbGN1bGF0aW9uRWRpdG9yID0gJ3VzZUNhbGN1bGF0aW9uRWRpdG9yJyxcblxuICAvLyBEUElfVXNlQ2VudGVyVmFsdWUsIGhhdmluZyB0eXBlIGJvb2xcbiAgVXNlQ2VudGVyVmFsdWUgPSAndXNlQ2VudGVyVmFsdWUnLFxuXG4gIC8vIERQSV9Vc2VDb2xvciwgaGF2aW5nIHR5cGUgYm9vbFxuICBVc2VDb2xvciA9ICd1c2VDb2xvcicsXG5cbiAgLy8gRFBJX1VzZUN1c3RvbU1hcmtTaXplLCBoYXZpbmcgdHlwZSBib29sXG4gIFVzZUN1c3RvbU1hcmtTaXplID0gJ3VzZUN1c3RvbU1hcmtTaXplJyxcblxuICAvLyBEUElfVXNlRGFya0ljb25zLCBoYXZpbmcgdHlwZSBib29sXG4gIFVzZURhcmtJY29ucyA9ICd1c2VEYXJrSWNvbnMnLFxuXG4gIC8vIERQSV9Vc2VEYXRhU3RvcmVNaW5maWVkTmFtZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgVXNlRGF0YVN0b3JlTWluZmllZE5hbWVzID0gJ3VzZURhdGFzdG9yZU1pbk5hbWVzJyxcblxuICAvLyBEUElfVXNlSW5pdGlhbERvbWFpblR5cGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgVXNlSW5pdGlhbERvbWFpblR5cGUgPSAndXNlSW5pdGlhbERvbWFpblR5cGUnLFxuXG4gIC8vIERQSV9Vc2VFbmRWYWx1ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBVc2VFbmRWYWx1ZSA9ICd1c2VFbmRWYWx1ZScsXG5cbiAgLy8gRFBJX1VzZUZvck92ZXJsYXlIaXRUZXN0LCBoYXZpbmcgdHlwZSBib29sXG4gIFVzZUZvck92ZXJsYXlIaXRUZXN0ID0gJ3VzZUZvck92ZXJsYXlIaXRUZXN0JyxcblxuICAvLyBEUElfVXNlRnVsbENvbG9yUmFuZ2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgVXNlRnVsbENvbG9yUmFuZ2UgPSAndXNlRnVsbENvbG9yUmFuZ2UnLFxuXG4gIC8vIERQSV9Vc2VGdWxsRG9tYWluLCBoYXZpbmcgdHlwZSBib29sXG4gIFVzZUZ1bGxEb21haW4gPSAndXNlRnVsbERvbWFpbicsXG5cbiAgLy8gRFBJX1VzZUlubGluZUltYWdlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBVc2VJbmxpbmVJbWFnZXMgPSAndXNlSW5saW5lSW1hZ2VzJyxcblxuICAvLyBEUElfVXNlTWVhc3VyZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgVXNlTWVhc3VyZXMgPSAndXNlTWVhc3VyZXMnLFxuXG4gIC8vIERQSV9Vc2VOZXdRdWlja0ZpbHRlcnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgVXNlTmV3UXVpY2tGaWx0ZXJzID0gJ3VzZU5ld1F1aWNrRmlsdGVycycsXG5cbiAgLy8gRFBJX1VzZU5vdGlmaWNhdGlvblJldHVybiwgaGF2aW5nIHR5cGUgYm9vbFxuICBVc2VOb3RpZmljYXRpb25SZXR1cm4gPSAndXNlTm90aWZpY2F0aW9uUmV0dXJuJyxcblxuICAvLyBEUElfVXNlUGFyYW1ldGVycywgaGF2aW5nIHR5cGUgYm9vbFxuICBVc2VQYXJhbWV0ZXJzID0gJ3VzZVBhcmFtZXRlcnMnLFxuXG4gIC8vIERQSV9Vc2VTZWxlY3RvciwgaGF2aW5nIHR5cGUgYm9vbFxuICBVc2VTZWxlY3RvciA9ICd1c2VTZWxlY3RvcicsXG5cbiAgLy8gRFBJX1VzZVNpZ25pZmljYW50RGlnaXRzLCBoYXZpbmcgdHlwZSBib29sXG4gIFVzZVNpZ25pZmljYW50RGlnaXRzID0gJ3VzZVNpZ25pZmljYW50RGlnaXRzJyxcblxuICAvLyBEUElfVXNlU3BlY2lhbFN0cmluZ3MsIGhhdmluZyB0eXBlIGJvb2xcbiAgVXNlU3BlY2lhbFN0cmluZ3MgPSAndXNlU3BlY2lhbFN0cmluZ3MnLFxuXG4gIC8vIERQSV9Vc2VTdGFydFZhbHVlLCBoYXZpbmcgdHlwZSBib29sXG4gIFVzZVN0YXJ0VmFsdWUgPSAndXNlU3RhcnRWYWx1ZScsXG5cbiAgLy8gRFBJX1VzZVRhYnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgVXNlVGFicyA9ICd1c2VUYWJzJyxcblxuICAvLyBEUElfVXNlVGFibGV0QXNEZWZhdWx0UHJldmlldywgaGF2aW5nIHR5cGUgYm9vbFxuICBVc2VUYWJsZXRBc0RlZmF1bHRQcmV2aWV3ID0gJ3VzZVRhYmxldEFzRGVmYXVsdFByZXZpZXcnLFxuXG4gIC8vIERQSV9Vc2VUYXJnZXRQdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBVc2VUYXJnZXRQdCA9ICd1c2VUYXJnZXRQb2ludCcsXG5cbiAgLy8gRFBJX1VzZVVTTG9jYWxlLCBoYXZpbmcgdHlwZSBib29sXG4gIFVzZVVTTG9jYWxlID0gJ3VzZVVzTG9jYWxlJyxcblxuICAvLyBEUElfVXNlWUF4aXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgVXNlWUF4aXMgPSAndXNlWUF4aXMnLFxuXG4gIC8vIERQSV9WYWxpZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBWYWxpZCA9ICd2YWxpZCcsXG5cbiAgLy8gRFBJX1ZpekRhdGFWODIsIGhhdmluZyB0eXBlIGJvb2xcbiAgVml6RGF0YVY4MiA9ICd2aXpEYXRhODInLFxuXG4gIC8vIERQSV9XTVNDb25uZWN0aW9uU3VjY2Vzc2Z1bCwgaGF2aW5nIHR5cGUgYm9vbFxuICBXTVNDb25uZWN0aW9uU3VjY2Vzc2Z1bCA9ICd3bXNDb25uZWN0aW9uU3VjY2Vzc2Z1bCcsXG5cbiAgLy8gRFBJX1dNU1Nob3VsZFVzZVRpbGVzLCBoYXZpbmcgdHlwZSBib29sXG4gIFdNU1Nob3VsZFVzZVRpbGVzID0gJ3dtc1Nob3VsZFVzZVRpbGVzJyxcblxuICAvLyBEUElfV2FudERvbWFpbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBXYW50RG9tYWluID0gJ3dhbnREb21haW4nLFxuXG4gIC8vIERQSV9Xb3JrYm9va01vZGlmaWVkLCBoYXZpbmcgdHlwZSBib29sXG4gIFdvcmtib29rTW9kaWZpZWQgPSAnd29ya2Jvb2tNb2RpZmllZCcsXG5cbiAgLy8gRFBJX1pvb21JbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBab29tSW4gPSAnem9vbUluJyxcblxuICAvLyBEUElfU2hvd01hcmtMYWJlbHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd01hcmtMYWJlbHMgPSAnc2hvd01hcmtMYWJlbHMnLFxuXG4gIC8vIERQSV9IYXNEdXBsaWNhdGVzLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc0R1cGxpY2F0ZXMgPSAnaGFzRHVwbGljYXRlcycsXG5cbiAgLy8gRFBJX0hhc1VzZXJEZWZpbmVkSW5jcmVtZW50LCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc1VzZXJEZWZpbmVkSW5jcmVtZW50ID0gJ2hhc1VzZXJEZWZpbmVkSW5jcmVtZW50JyxcblxuICAvLyBEUElfSGFzVXNlckRlZmluZWRNYXgsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzVXNlckRlZmluZWRNYXggPSAnaGFzVXNlckRlZmluZWRNYXgnLFxuXG4gIC8vIERQSV9IYXNVc2VyRGVmaW5lZE1pbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNVc2VyRGVmaW5lZE1pbiA9ICdoYXNVc2VyRGVmaW5lZE1pbicsXG5cbiAgLy8gRFBJX0lzRHVwbGljYXRlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzRHVwbGljYXRlID0gJ2lzRHVwbGljYXRlJyxcblxuICAvLyBEUElfSXNFZGl0aW5nVmFsdWUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNFZGl0aW5nVmFsdWUgPSAnaXNFZGl0aW5nVmFsdWUnLFxuXG4gIC8vIERQSV9TaG91bGRSZXN0cmljdERhdGFUeXBlLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3VsZFJlc3RyaWN0RGF0YVR5cGUgPSAncmVzdHJpY3REYXRhVHlwZScsXG5cbiAgLy8gRFBJX0VuYWJsZUluY2x1ZGVaZXJvLCBoYXZpbmcgdHlwZSBib29sXG4gIEVuYWJsZUluY2x1ZGVaZXJvID0gJ2VuYWJsZUluY2x1ZGVaZXJvJyxcblxuICAvLyBEUElfRW5hYmxlU3luY0R1YWxBeGVzLCBoYXZpbmcgdHlwZSBib29sXG4gIEVuYWJsZVN5bmNEdWFsQXhlcyA9ICdlbmFibGVTeW5jaHJvbml6ZUR1YWxBeGVzJyxcblxuICAvLyBEUElfRW5hYmxlU2hvd1RpbWVzLCBoYXZpbmcgdHlwZSBib29sXG4gIEVuYWJsZVNob3dUaW1lcyA9ICdlbmFibGVTaG93VGltZXMnLFxuXG4gIC8vIERQSV9FbmFibGVUaWNrTWFya3NUYWIsIGhhdmluZyB0eXBlIGJvb2xcbiAgRW5hYmxlVGlja01hcmtzVGFiID0gJ2VuYWJsZVRpY2tNYXJrc1RhYicsXG5cbiAgLy8gRFBJX0lzVGVtcG9yYWwsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNUZW1wb3JhbCA9ICdpc1RlbXBvcmFsJyxcblxuICAvLyBEUElfU2hvdWxkSW5jbHVkZVplcm8sIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvdWxkSW5jbHVkZVplcm8gPSAnc2hvdWxkSW5jbHVkZVplcm8nLFxuXG4gIC8vIERQSV9TaG91bGRSZXZlcnNlQXhpcywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG91bGRSZXZlcnNlQXhpcyA9ICdzaG91bGRSZXZlcnNlQXhpcycsXG5cbiAgLy8gRFBJX1Nob3VsZFNob3dUaW1lcywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG91bGRTaG93VGltZXMgPSAnc2hvdWxkU2hvd1RpbWVzJyxcblxuICAvLyBEUElfVXNlQXV0b21hdGljQXhpc1N1YnRpdGxlLCBoYXZpbmcgdHlwZSBib29sXG4gIFVzZUF1dG9tYXRpY0F4aXNTdWJ0aXRsZSA9ICd1c2VBdXRvbWF0aWNTdWJ0aXRsZScsXG5cbiAgLy8gRFBJX1VzZUF1dG9tYXRpY0F4aXNUaXRsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBVc2VBdXRvbWF0aWNBeGlzVGl0bGUgPSAndXNlQXV0b21hdGljVGl0bGUnLFxuXG4gIC8vIERQSV9BbGxTZWxlY3RlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxTZWxlY3RlZCA9ICdhbGxTZWxlY3RlZCcsXG5cbiAgLy8gRFBJX0F1dG9Db21taXQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQXV0b0NvbW1pdCA9ICdhdXRvQ29tbWl0JyxcblxuICAvLyBEUElfQ2FjaGVPbmx5LCBoYXZpbmcgdHlwZSBib29sXG4gIENhY2hlT25seSA9ICdjYWNoZU9ubHknLFxuXG4gIC8vIERQSV9JbmNsdWRlRGF0YSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJbmNsdWRlRGF0YSA9ICdpbmNsdWRlRGF0YScsXG5cbiAgLy8gRFBJX0lzUGF0dGVybkV4Y2x1c2l2ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1BhdHRlcm5FeGNsdXNpdmUgPSAnaXNQYXR0ZXJuRXhjbHVzaXZlJyxcblxuICAvLyBEUElfSXNTZWFyY2hhYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzU2VhcmNoYWJsZSA9ICdpc1NlYXJjaGFibGUnLFxuXG4gIC8vIERQSV9Jc1NlbGVjdGlvbkV4Y2x1c2l2ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1NlbGVjdGlvbkV4Y2x1c2l2ZSA9ICdpc1NlbGVjdGlvbkV4Y2x1c2l2ZScsXG5cbiAgLy8gRFBJX1Jlc2V0TmV3RmlsdGVyLCBoYXZpbmcgdHlwZSBib29sXG4gIFJlc2V0TmV3RmlsdGVyID0gJ3Jlc2V0TmV3RmlsdGVyJyxcblxuICAvLyBEUElfVXNlQWxsV2hlbk1hbnVhbEVtcHR5LCBoYXZpbmcgdHlwZSBib29sXG4gIFVzZUFsbFdoZW5NYW51YWxFbXB0eSA9ICd1c2VBbGxXaGVuTWFudWFsRW1wdHknLFxuXG4gIC8vIERQSV9Vc2VBbGxXaGVuUGF0dGVybkVtcHR5LCBoYXZpbmcgdHlwZSBib29sXG4gIFVzZUFsbFdoZW5QYXR0ZXJuRW1wdHkgPSAndXNlQWxsV2hlblBhdHRlcm5FbXB0eScsXG5cbiAgLy8gRFBJX0dyb3VwQnlEcmlsbERvd24sIGhhdmluZyB0eXBlIGJvb2xcbiAgR3JvdXBCeURyaWxsRG93biA9ICdncm91cEJ5RHJpbGxEb3duJyxcblxuICAvLyBEUElfR3JvdXBCeVRhYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gIEdyb3VwQnlUYWJsZSA9ICdncm91cEJ5VGFibGUnLFxuXG4gIC8vIERQSV9JbmNsdWRlR3JvdXBzLCBoYXZpbmcgdHlwZSBib29sXG4gIEluY2x1ZGVHcm91cHMgPSAnaW5jbHVkZUdyb3VwcycsXG5cbiAgLy8gRFBJX0luY2x1ZGVQZW5kaW5nU3RhdGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSW5jbHVkZVBlbmRpbmdTdGF0ZSA9ICdpbmNsdWRlUGVuZGluZ1N0YXRlJyxcblxuICAvLyBEUElfSW5jbHVkZUZpZWxkTWVudXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgSW5jbHVkZUZpZWxkTWVudXMgPSAnaW5jbHVkZUZpZWxkTWVudXMnLFxuXG4gIC8vIERQSV9JbmNsdWRlRm9ybWF0dGVkVmFsdWVzLCBoYXZpbmcgdHlwZSBib29sXG4gIEluY2x1ZGVGb3JtYXR0ZWRWYWx1ZXMgPSAnaW5jbHVkZUZvcm1hdHRlZFZhbHVlcycsXG5cbiAgLy8gRFBJX0luY2x1ZGVDb2x1bW5JbnN0YW5jZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgSW5jbHVkZUNvbHVtbkluc3RhbmNlcyA9ICdpbmNsdWRlQ29sdW1uSW5zdGFuY2VzJyxcblxuICAvLyBEUElfSW5jbHVkZUFkSG9jQ2FsY3MsIGhhdmluZyB0eXBlIGJvb2xcbiAgSW5jbHVkZUFkSG9jQ2FsY3MgPSAnaW5jbHVkZUFkaG9jQ2FsY3MnLFxuXG4gIC8vIERQSV9JbmNsdWRlSGlkZGVuSW52YWxpZEZpZWxkcywgaGF2aW5nIHR5cGUgYm9vbFxuICBJbmNsdWRlSGlkZGVuSW52YWxpZEZpZWxkcyA9ICdpbmNsdWRlSGlkZGVuSW52YWxpZEZpZWxkcycsXG5cbiAgLy8gRFBJX0luY2x1ZGVOb25FeHRyYWN0ZWRDb2x1bW5zLCBoYXZpbmcgdHlwZSBib29sXG4gIEluY2x1ZGVOb25FeHRyYWN0ZWRDb2x1bW5zID0gJ2luY2x1ZGVOb25FeHRyYWN0ZWRDb2x1bW5zJyxcblxuICAvLyBEUElfSW5jbHVkZUNhbGN1bGF0ZWRGaWVsZEZvcm11bGFzLCBoYXZpbmcgdHlwZSBib29sXG4gIEluY2x1ZGVDYWxjdWxhdGVkRmllbGRGb3JtdWxhcyA9ICdpbmNsdWRlQ2FsY3VsYXRlZEZpZWxkRm9ybXVsYXMnLFxuXG4gIC8vIERQSV9TZXREYXRhUHJldmlld0N1c3RvbUZpZWxkT3JkZXIsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2V0RGF0YVByZXZpZXdDdXN0b21GaWVsZE9yZGVyID0gJ3NldERhdGFQcmV2aWV3Q3VzdG9tRmllbGRPcmRlcicsXG5cbiAgLy8gRFBJX0N1c3RvbVNwbGl0QWxsb3dTcGxpdEZyb21SaWdodCwgaGF2aW5nIHR5cGUgYm9vbFxuICBDdXN0b21TcGxpdEFsbG93U3BsaXRGcm9tUmlnaHQgPSAnY3VzdG9tU3BsaXRBbGxvd1NwbGl0RnJvbVJpZ2h0JyxcblxuICAvLyBEUElfSXNDaGFuZ2VkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQ2hhbmdlZCA9ICdpc0NoYW5nZWQnLFxuXG4gIC8vIERQSV9TaG93Rm9udENvbG9yUGlja2VyLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dGb250Q29sb3JQaWNrZXIgPSAnc2hvd0ZvbnRDb2xvclBpY2tlcicsXG5cbiAgLy8gRFBJX1Nob3dGb250RmFtaWx5UGlja2VyLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dGb250RmFtaWx5UGlja2VyID0gJ3Nob3dGb250RmFtaWx5UGlja2VyJyxcblxuICAvLyBEUElfU2hvd0ZvbnRTaXplUGlja2VyLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dGb250U2l6ZVBpY2tlciA9ICdzaG93Rm9udFNpemVQaWNrZXInLFxuXG4gIC8vIERQSV9TaG93Rm9udFN0eWxlQnV0dG9ucywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93Rm9udFN0eWxlQnV0dG9ucyA9ICdzaG93Rm9udFN0eWxlQnV0dG9ucycsXG5cbiAgLy8gRFBJX1Nob3dMaW5lRm9yQWxsLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dMaW5lRm9yQWxsID0gJ3Nob3dMaW5lRm9yQWxsJyxcblxuICAvLyBEUElfU2hvd0xpbmVGb3JDb2x1bW4sIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd0xpbmVGb3JDb2x1bW4gPSAnc2hvd0xpbmVGb3JDb2x1bW4nLFxuXG4gIC8vIERQSV9TaG93TGluZUZvclJvdywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93TGluZUZvclJvdyA9ICdzaG93TGluZUZvclJvdycsXG5cbiAgLy8gRFBJX1Nob3dMaW5lUGF0dGVyblBpY2tlciwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93TGluZVBhdHRlcm5QaWNrZXIgPSAnc2hvd0xpbmVQYXR0ZXJuUGlja2VyJyxcblxuICAvLyBEUElfU2hvd0xpbmVUcmFuc3BhcmVuY3ksIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd0xpbmVUcmFuc3BhcmVuY3kgPSAnc2hvd0xpbmVUcmFuc3BhcmVuY3knLFxuXG4gIC8vIERQSV9TaG93TGluZVdpZHRoUGlja2VyLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dMaW5lV2lkdGhQaWNrZXIgPSAnc2hvd0xpbmVXaWR0aFBpY2tlcicsXG5cbiAgLy8gRFBJX0NhbkJlQXV0bywgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5CZUF1dG8gPSAnY2FuQmVBdXRvJyxcblxuICAvLyBEUElfQ2FuQmVOb25lLCBoYXZpbmcgdHlwZSBib29sXG4gIENhbkJlTm9uZSA9ICdjYW5CZU5vbmUnLFxuXG4gIC8vIERQSV9DYW5NYXRjaE1hcmtDb2xvciwgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5NYXRjaE1hcmtDb2xvciA9ICdjYW5NYXRjaE1hcmtDb2xvcicsXG5cbiAgLy8gRFBJX0hhc09wYWNpdHksIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzT3BhY2l0eSA9ICdoYXNPcGFjaXR5JyxcblxuICAvLyBEUElfSW5jbHVkZUFsbEhpZGRlbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBJbmNsdWRlQWxsSGlkZGVuID0gJ2luY2x1ZGVBbGxIaWRkZW4nLFxuXG4gIC8vIERQSV9JbmNsdWRlQ3VycmVudCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJbmNsdWRlQ3VycmVudCA9ICdpbmNsdWRlQ3VycmVudCcsXG5cbiAgLy8gRFBJX0lzSW5jbHVkZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNJbmNsdWRlZCA9ICdpc0luY2x1ZGVkJyxcblxuICAvLyBEUElfSXNSZWxhdGl2ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1JlbGF0aXZlID0gJ2lzUmVsYXRpdmUnLFxuXG4gIC8vIERQSV9Jc1NlY29uZGFyeUFsbG93ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNTZWNvbmRhcnlBbGxvd2VkID0gJ2lzU2Vjb25kYXJ5QWxsb3dlZCcsXG5cbiAgLy8gRFBJX051bGxJZkluY29tcGxldGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgTnVsbElmSW5jb21wbGV0ZSA9ICdudWxsSWZJbmNvbXBsZXRlJyxcblxuICAvLyBEUElfSXNDYWxjQXNzaXN0YW5jZUVuYWJsZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNDYWxjQXNzaXN0YW5jZUVuYWJsZWQgPSAnaXNDYWxjQXNzaXN0YW5jZUVuYWJsZWQnLFxuXG4gIC8vIERQSV9Vc2VTZWNvbmRhcnlDYWxjLCBoYXZpbmcgdHlwZSBib29sXG4gIFVzZVNlY29uZGFyeUNhbGMgPSAndXNlU2Vjb25kYXJ5Q2FsYycsXG5cbiAgLy8gRFBJX0NhbkxvYWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2FuTG9hZCA9ICdjYW5Mb2FkJyxcblxuICAvLyBEUElfRGVzY3JpcHRpb25Pbmx5LCBoYXZpbmcgdHlwZSBib29sXG4gIERlc2NyaXB0aW9uT25seSA9ICdkZXNjcmlwdGlvbk9ubHknLFxuXG4gIC8vIERQSV9BcmVBbGlhc2VzU3VwcG9ydGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIEFyZUFsaWFzZXNTdXBwb3J0ZWQgPSAnYXJlQWxpYXNlc1N1cHBvcnRlZCcsXG5cbiAgLy8gRFBJX0FyZVJlZkNvbHVtbnNTdXBwb3J0ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQXJlUmVmQ29sdW1uc1N1cHBvcnRlZCA9ICdhcmVSZWZDb2x1bW5zU3VwcG9ydGVkJyxcblxuICAvLyBEUElfSXNBZ2dyZWdhdGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQWdncmVnYXRlZCA9ICdpc0FnZ3JlZ2F0ZWQnLFxuXG4gIC8vIERQSV9Jc0V4cG9ydFN1cHBvcnRlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0V4cG9ydFN1cHBvcnRlZCA9ICdpc0V4cG9ydFN1cHBvcnRlZCcsXG5cbiAgLy8gRFBJX0lzTWVhc3VyZU5hbWVzLCBoYXZpbmcgdHlwZSBib29sXG4gIElzTWVhc3VyZU5hbWVzID0gJ2lzTWVhc3VyZU5hbWVzJyxcblxuICAvLyBEUElfSXNTdW1tYXJ5U3VwcG9ydGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzU3VtbWFyeVN1cHBvcnRlZCA9ICdpc1N1bW1hcnlTdXBwb3J0ZWQnLFxuXG4gIC8vIERQSV9Jc1RvcE5TdXBwb3J0ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNUb3BOU3VwcG9ydGVkID0gJ2lzVG9wTlN1cHBvcnRlZCcsXG5cbiAgLy8gRFBJX0lzVW5kZXJseWluZ1N1cHBvcnRlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1VuZGVybHlpbmdTdXBwb3J0ZWQgPSAnaXNVbmRlcmx5aW5nU3VwcG9ydGVkJyxcblxuICAvLyBEUElfT25seUV4cG9ydFN1bW1hcnksIGhhdmluZyB0eXBlIGJvb2xcbiAgT25seUV4cG9ydFN1bW1hcnkgPSAnb25seUV4cG9ydFN1bW1hcnknLFxuXG4gIC8vIERQSV9TaG93QWxsRmllbGRzLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dBbGxGaWVsZHMgPSAnc2hvd0FsbEZpZWxkcycsXG5cbiAgLy8gRFBJX1VzZVRhYmxlUHRycywgaGF2aW5nIHR5cGUgYm9vbFxuICBVc2VUYWJsZVB0cnMgPSAndXNlVGFibGVQdHJzJyxcblxuICAvLyBEUElfT25seUZldGNoU3VtbWFyeSwgaGF2aW5nIHR5cGUgYm9vbFxuICBPbmx5RmV0Y2hTdW1tYXJ5ID0gJ29ubHlGZXRjaFN1bW1hcnknLFxuXG4gIC8vIERQSV9Jc0RldmljZUxheW91dEN1c3RvbWl6ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNEZXZpY2VMYXlvdXRDdXN0b21pemVkID0gJ2lzRGV2aWNlTGF5b3V0Q3VzdG9taXplZCcsXG5cbiAgLy8gRFBJX0lzRGV2aWNlU2l6ZUN1c3RvbWl6ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNEZXZpY2VTaXplQ3VzdG9taXplZCA9ICdpc0RldmljZVNpemVDdXN0b21pemVkJyxcblxuICAvLyBEUElfSXNEZXZpY2VTdXBwb3J0ZWRCeU1vYmlsZUFwcCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0RldmljZVN1cHBvcnRlZEJ5TW9iaWxlQXBwID0gJ2lzRGV2aWNlU3VwcG9ydGVkQnlNb2JpbGVBcHAnLFxuXG4gIC8vIERQSV9Jc1BvcnRyYWl0LCBoYXZpbmcgdHlwZSBib29sXG4gIElzUG9ydHJhaXQgPSAnaXNQb3J0cmFpdCcsXG5cbiAgLy8gRFBJX0lzUG9ydHJhaXRCeURlZmF1bHQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNQb3J0cmFpdEJ5RGVmYXVsdCA9ICdpc1BvcnRyYWl0QnlEZWZhdWx0JyxcblxuICAvLyBEUElfSXNVc2VyQ3VzdG9tRm9ybWF0LCBoYXZpbmcgdHlwZSBib29sXG4gIElzVXNlckN1c3RvbUZvcm1hdCA9ICdpc1VzZXJDdXN0b21Gb3JtYXQnLFxuXG4gIC8vIERQSV9TaG91bGREaXNwbGF5UmVidWlsZEV4dHJhY3RNZXNzYWdlLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3VsZERpc3BsYXlSZWJ1aWxkRXh0cmFjdE1lc3NhZ2UgPSAnc2hvdWxkRGlzcGxheVJlYnVpbGRFeHRyYWN0TWVzc2FnZScsXG5cbiAgLy8gRFBJX1N1cHBvcnRzQ3VzdG9tU3RhcnRPZldlZWssIGhhdmluZyB0eXBlIGJvb2xcbiAgU3VwcG9ydHNDdXN0b21TdGFydE9mV2VlayA9ICdzdXBwb3J0c0N1c3RvbVN0YXJ0T2ZXZWVrJyxcblxuICAvLyBEUElfTmVlZHNDb25uZWN0UHJvbXB0LCBoYXZpbmcgdHlwZSBib29sXG4gIE5lZWRzQ29ubmVjdFByb21wdCA9ICduZWVkc0Nvbm5lY3RQcm9tcHQnLFxuXG4gIC8vIERQSV9OZWVkc0Nsb3NlRGF0YVNvdXJjZUVycm9yUHJvbXB0LCBoYXZpbmcgdHlwZSBib29sXG4gIE5lZWRzQ2xvc2VEYXRhU291cmNlRXJyb3JQcm9tcHQgPSAnbmVlZHNDbG9zZURzRXJyb3JQcm9tcHQnLFxuXG4gIC8vIERQSV9DbGVhckN1cnJlbnRTZWxlY3Rpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2xlYXJDdXJyZW50U2VsZWN0aW9uID0gJ2NsZWFyQ3VycmVudFNlbGVjdGlvbicsXG5cbiAgLy8gRFBJX0hhc0NvbnRhaW5zLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc0NvbnRhaW5zID0gJ2hhc0NvbnRhaW5zJyxcblxuICAvLyBEUElfSGFzRW5kc1dpdGgsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzRW5kc1dpdGggPSAnaGFzRW5kc1dpdGgnLFxuXG4gIC8vIERQSV9IYXNSZXBsYWNlU2VsZWN0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc1JlcGxhY2VTZWxlY3Rpb24gPSAnaGFzUmVwbGFjZVNlbGVjdGlvbicsXG5cbiAgLy8gRFBJX0hhc1N0YXJ0c1dpdGgsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzU3RhcnRzV2l0aCA9ICdoYXNTdGFydHNXaXRoJyxcblxuICAvLyBEUElfSXNMZWFmU2VsZWN0aW9uT25seSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0xlYWZTZWxlY3Rpb25Pbmx5ID0gJ2lzTGVhZlNlbGVjdGlvbk9ubHknLFxuXG4gIC8vIERQSV9SZXBsYWNlU2VsZWN0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIFJlcGxhY2VTZWxlY3Rpb24gPSAncmVwbGFjZVNlbGVjdGlvbicsXG5cbiAgLy8gRFBJX0lzQ29sb3JQYWxldHRlQ3VzdG9taXplZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0NvbG9yUGFsZXR0ZUN1c3RvbWl6ZWQgPSAnaXNDb2xvclBhbGV0dGVDdXN0b21pemVkJyxcblxuICAvLyBEUElfUmV2ZXJzZVBhbGV0dGVPcmRlciwgaGF2aW5nIHR5cGUgYm9vbFxuICBSZXZlcnNlUGFsZXR0ZU9yZGVyID0gJ3JldmVyc2VQYWxldHRlT3JkZXInLFxuXG4gIC8vIERQSV9UcmllZFRvQ29ubmVjdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBUcmllZFRvQ29ubmVjdCA9ICd0cmllZFRvQ29ubmVjdCcsXG5cbiAgLy8gRFBJX1NjYWxlTWFya3NJbkF4aXNVbml0cywgaGF2aW5nIHR5cGUgYm9vbFxuICBTY2FsZU1hcmtzSW5BeGlzVW5pdHMgPSAnc2NhbGVNYXJrc0luQXhpc1VuaXRzJyxcblxuICAvLyBEUElfU2hvd01hcmtTaXppbmdPcHRpb25zLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dNYXJrU2l6aW5nT3B0aW9ucyA9ICdzaG93TWFya1NpemluZ09wdGlvbnMnLFxuXG4gIC8vIERQSV9Vc2VTaXplRmllbGRDYXB0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIFVzZVNpemVGaWVsZENhcHRpb24gPSAndXNlU2l6ZUZpZWxkQ2FwdGlvbicsXG5cbiAgLy8gRFBJX0lzTGljZW5zZWRBbmRSZWdpc3RlcmVkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzTGljZW5zZWRBbmRSZWdpc3RlcmVkID0gJ2lzTGljZW5zZWRBbmRSZWdpc3RlcmVkJyxcblxuICAvLyBEUElfU2V0TmV3RGF0YXNvdXJjZUFjdGl2ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBTZXROZXdEYXRhc291cmNlQWN0aXZlID0gJ3NldE5ld0RhdGFzb3VyY2VBY3RpdmUnLFxuXG4gIC8vIERQSV9BbGxvd0N1c3RvbUxhYmVsLCBoYXZpbmcgdHlwZSBib29sXG4gIEFsbG93Q3VzdG9tTGFiZWwgPSAnYWxsb3dDdXN0b21MYWJlbCcsXG5cbiAgLy8gRFBJX0lzTW9zdFJlY2VudE1vZGVWYWxpZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc01vc3RSZWNlbnRNb2RlVmFsaWQgPSAnaXNNb3N0UmVjZW50TW9kZVZhbGlkJyxcblxuICAvLyBEUElfTXVzdFNob3dMYWJlbHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgTXVzdFNob3dMYWJlbHMgPSAnbXVzdFNob3dMYWJlbHMnLFxuXG4gIC8vIERQSV9TaG93UnVubmluZ09yZGVyTGFiZWxzLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dSdW5uaW5nT3JkZXJMYWJlbHMgPSAnc2hvd1J1bm5pbmdPcmRlckxhYmVscycsXG5cbiAgLy8gRFBJX0lzRHJvcHBlZEZpbGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNEcm9wcGVkRmlsZSA9ICdpc0Ryb3BwZWRGaWxlJyxcblxuICAvLyBEUElfSXNJbml0aWFsaXplZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0luaXRpYWxpemVkID0gJ2lzSW5pdGlhbGl6ZWQnLFxuXG4gIC8vIERQSV9JbmNsdWRlRGFzaGJvYXJkLCBoYXZpbmcgdHlwZSBib29sXG4gIEluY2x1ZGVEYXNoYm9hcmQgPSAnaW5jbHVkZURhc2hib2FyZCcsXG5cbiAgLy8gRFBJX0NoaWxkcmVuQ2FuUmVzaXplLCBoYXZpbmcgdHlwZSBib29sXG4gIENoaWxkcmVuQ2FuUmVzaXplID0gJ2NoaWxkcmVuQ2FuUmVzaXplJyxcblxuICAvLyBEUElfQm9vbE1hcCwgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBib29sKVxuICBCb29sTWFwID0gJ2Jvb2xNYXAnLFxuXG4gIC8vIERQSV9DaGVja2VkTWVudUl0ZW1zLCBoYXZpbmcgdHlwZSBib29sW11cbiAgQ2hlY2tlZE1lbnVJdGVtcyA9ICdjaGVja2VkTWVudUl0ZW1zJyxcblxuICAvLyBEUElfSW5jbHVkZWRTaGVldFZhbHVlcywgaGF2aW5nIHR5cGUgYm9vbFtdXG4gIEluY2x1ZGVkU2hlZXRWYWx1ZXMgPSAnaW5jbHVkZWRTaGVldFZhbHVlcycsXG5cbiAgLy8gRFBJX1NvcnRPcmRlclZlY3RvciwgaGF2aW5nIHR5cGUgYm9vbFtdXG4gIFNvcnRPcmRlclZlY3RvciA9ICdzb3J0T3JkZXJWZWN0b3InLFxuXG4gIC8vIERQSV9BY3Rpb25OYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQWN0aW9uTmFtZSA9ICdhY3Rpb25OYW1lJyxcblxuICAvLyBEUElfQWN0aW9uU291cmNlVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEFjdGlvblNvdXJjZVRleHQgPSAnYWN0aW9uU291cmNlVGV4dCcsXG5cbiAgLy8gRFBJX0FjdGlvblR5cGVBc1N0cmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEFjdGlvblR5cGVBc1N0cmluZyA9ICdhY3Rpb25UeXBlQXNTdHJpbmcnLFxuXG4gIC8vIERQSV9BY3RpdmVUYWIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBY3RpdmVUYWIgPSAnYWN0aXZlX3RhYicsXG5cbiAgLy8gRFBJX0FkZEluRmVhdHVyZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBZGRJbkZlYXR1cmVOYW1lID0gJ2FkZEluRmVhdHVyZU5hbWUnLFxuXG4gIC8vIERQSV9BZGRJbklkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQWRkSW5JZCA9ICdhZGRJbklkJyxcblxuICAvLyBEUElfQWRkSW5zdGFuY2VJZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEFkZEluc3RhbmNlSWQgPSAnYWRkSW5JbnN0YW5jZUlkJyxcblxuICAvLyBEUElfQWRkSW5OYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQWRkSW5OYW1lID0gJ2FkZEluTmFtZScsXG5cbiAgLy8gRFBJX0FkZEluTG9jYWxlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQWRkSW5Mb2NhbGUgPSAnYWRkSW5Mb2NhbGUnLFxuXG4gIC8vIERQSV9BZGRJbkxhbmd1YWdlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQWRkSW5MYW5ndWFnZSA9ICdhZGRJbkxhbmd1YWdlJyxcblxuICAvLyBEUElfQVBJVmVyc2lvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEFQSVZlcnNpb24gPSAnYXBpVmVyc2lvbicsXG5cbiAgLy8gRFBJX0FsaWFzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQWxpYXMgPSAnYWxpYXMnLFxuXG4gIC8vIERQSV9BbmNob3JEYXRlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQW5jaG9yRGF0ZSA9ICdhbmNob3JEYXRlJyxcblxuICAvLyBEUElfQW5ub3RhdGlvblJlcywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEFubm90YXRpb25SZXMgPSAnYW5ub3RhdGlvblJlcycsXG5cbiAgLy8gRFBJX1JlYWRJZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFJlYWRJZCA9ICdyZWFkSWQnLFxuXG4gIC8vIERQSV9Bbm5vdGF0aW9uVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEFubm90YXRpb25UZXh0ID0gJ2Fubm90YXRpb25UZXh0JyxcblxuICAvLyBEUElfQXJjaGl2ZURpcmVjdG9yeSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEFyY2hpdmVEaXJlY3RvcnkgPSAnYXJjaGl2ZURpcmVjdG9yeScsXG5cbiAgLy8gRFBJX0FyY2hpdmVGdWxsUGF0aCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEFyY2hpdmVGdWxsUGF0aCA9ICdhcmNoaXZlRnVsbFBhdGgnLFxuXG4gIC8vIERQSV9BdFRoZUxldmVsSW52YWxpZEZpZWxkQ2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0VGhlTGV2ZWxJbnZhbGlkRmllbGRDYXB0aW9uID0gJ2F0VGhlTGV2ZWxJbnZhbGlkRmllbGRDYXB0aW9uJyxcblxuICAvLyBEUElfQXV0b0NvbXBsZXRlU3Vic3RyaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXV0b0NvbXBsZXRlU3Vic3RyaW5nID0gJ2FjU3Vic3RyaW5nJyxcblxuICAvLyBEUElfQXV0b3NhdmVGaWxlSWQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBdXRvc2F2ZUZpbGVJZCA9ICdhdXRvc2F2ZUZpbGVJZCcsXG5cbiAgLy8gRFBJX0F1dG9zYXZlVGltZXJJbnRlcnZhbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF1dG9zYXZlVGltZXJJbnRlcnZhbCA9ICdhdXRvc2F2ZVRpbWVySW50ZXJ2YWwnLFxuXG4gIC8vIERQSV9CYXNlQ29sdW1uQ2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEJhc2VDb2x1bW5DYXB0aW9uID0gJ2Jhc2VDb2x1bW5DYXB0aW9uJyxcblxuICAvLyBEUElfQ2xlYXJCdXR0b25UZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ2xlYXJCdXR0b25UZXh0ID0gJ2NsZWFyQnV0dG9uVGV4dCcsXG5cbiAgLy8gRFBJX0NvbG9yUGFsZXR0ZUlkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ29sb3JQYWxldHRlSWQgPSAnY29sb3JQYWxldHRlSWQnLFxuXG4gIC8vIERQSV9Db2xvclBhbGV0dGVOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ29sb3JQYWxldHRlTmFtZSA9ICdjb2xvclBhbGV0dGVOYW1lJyxcblxuICAvLyBEUElfQ29sb3JTd2F0Y2gsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDb2xvclN3YXRjaCA9ICdjb2xvclN3YXRjaCcsXG5cbiAgLy8gRFBJX0NvbW1hbmROYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ29tbWFuZE5hbWUgPSAnY29tbWFuZE5hbWUnLFxuXG4gIC8vIERQSV9Db25maWRlbmNlTGV2ZWxWYWx1ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENvbmZpZGVuY2VMZXZlbFZhbHVlID0gJ2NvbmZpZGVuY2VMZXZlbFZhbHVlJyxcblxuICAvLyBEUElfQ291bnREaXN0aW5jdFN0ciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENvdW50RGlzdGluY3RTdHIgPSAnY291bnREaXN0aW5jdFN0cicsXG5cbiAgLy8gRFBJX0Nyb3NzVGFiRmlsZXBhdGgsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDcm9zc1RhYkZpbGVwYXRoID0gJ2Nyb3NzVGFiRmlsZXBhdGgnLFxuXG4gIC8vIERQSV9DU1NNYXJnaW4sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDU1NNYXJnaW4gPSAnY3NzTWFyZ2luJyxcblxuICAvLyBEUElfQ1NTV2hpdGVzcGFjZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENTU1doaXRlc3BhY2UgPSAnY3NzV2hpdGVzcGFjZScsXG5cbiAgLy8gRFBJX0RCUGFzc3dvcmQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEQlBhc3N3b3JkID0gJ2RiUGFzc3dvcmQnLFxuXG4gIC8vIERQSV9EQlVzZXJuYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgREJVc2VybmFtZSA9ICdkYlVzZXJuYW1lJyxcblxuICAvLyBEUElfRGF0YUFsZXJ0Q29uZGl0aW9uVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGFBbGVydENvbmRpdGlvblRleHQgPSAnZGF0YUFsZXJ0Q29uZGl0aW9uVGV4dCcsXG5cbiAgLy8gRFBJX0RhdGFBbGVydE1lYXN1cmVUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGF0YUFsZXJ0TWVhc3VyZVRleHQgPSAnZGF0YUFsZXJ0TWVhc3VyZVRleHQnLFxuXG4gIC8vIERQSV9EYXRhQWxlcnRTcGVjU2VyaWFsaXplZFRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRhQWxlcnRTcGVjU2VyaWFsaXplZFRleHQgPSAnZGF0YUFsZXJ0U3BlY1NlcmlhbGl6ZWRUZXh0JyxcblxuICAvLyBEUElfRGF0YUFsZXJ0RGVmYXVsdFN1YmplY3QsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRhQWxlcnREZWZhdWx0U3ViamVjdCA9ICdkYXRhQWxlcnREZWZhdWx0U3ViamVjdCcsXG5cbiAgLy8gRFBJX0RhdGFBbGVydFRocmVzaG9sZFRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRhQWxlcnRUaHJlc2hvbGRUZXh0ID0gJ2RhdGFBbGVydFRocmVzaG9sZFRleHQnLFxuXG4gIC8vIERQSV9EYXRhR3JpZFNvcnRDb2x1bW5OYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGF0YUdyaWRTb3J0Q29sdW1uTmFtZSA9ICdkYXRhZ3JpZFNvcnRDb2x1bW5OYW1lJyxcblxuICAvLyBEUElfRGF0YVNlcnZlckNvbm5lY3Rpb25FcnJvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGFTZXJ2ZXJDb25uZWN0aW9uRXJyb3IgPSAnZGF0YVNlcnZlckNvbm5lY3Rpb25FcnJvcicsXG5cbiAgLy8gRFBJX0RhdGFiYXNlRmlsdGVyLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGF0YWJhc2VGaWx0ZXIgPSAnZGF0YWJhc2VGaWx0ZXInLFxuXG4gIC8vIERQSV9EYXRhYmFzZUZpbHRlclByb21wdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGFiYXNlRmlsdGVyUHJvbXB0ID0gJ2RhdGFiYXNlRmlsdGVyUHJvbXB0JyxcblxuICAvLyBEUElfRGF0YXNvdXJjZVJhbmtpbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRhc291cmNlUmFua2luZyA9ICdkYXRhc291cmNlUmFua2luZycsXG5cbiAgLy8gRFBJX0RhdGFzb3VyY2VVcmwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRhc291cmNlVXJsID0gJ2RhdGFzb3VyY2VVcmwnLFxuXG4gIC8vIERQSV9EYXRhc291cmNlVXNlcm5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRhc291cmNlVXNlcm5hbWUgPSAnZGF0YXNvdXJjZVVzZXJuYW1lJyxcblxuICAvLyBEUElfRGF0ZUZvcm1hdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGVGb3JtYXQgPSAnZGF0ZUZvcm1hdCcsXG5cbiAgLy8gRFBJX0RhdGVQYXJ0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGF0ZVBhcnQgPSAnZGF0ZVBhcnQnLFxuXG4gIC8vIERQSV9EYXRlUGFydEFiYnJldiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGVQYXJ0QWJicmV2ID0gJ2RhdGVQYXJ0QWJicmV2JyxcblxuICAvLyBEUElfRGVmYXVsdEhpZXJhcmNoeU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEZWZhdWx0SGllcmFyY2h5TmFtZSA9ICdkZWZhdWx0SGllcmFyY2h5TmFtZScsXG5cbiAgLy8gRFBJX0RlZmF1bHRNZW51SXRlbUtleSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERlZmF1bHRNZW51SXRlbUtleSA9ICdkZWZhdWx0TWVudUl0ZW1LZXknLFxuXG4gIC8vIERQSV9EZWxpbWl0ZXIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEZWxpbWl0ZXIgPSAnZGVsaW1pdGVyJyxcblxuICAvLyBEUElfRGV2aWNlTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERldmljZU5hbWUgPSAnZGV2aWNlTmFtZScsXG5cbiAgLy8gRFBJX0RldmljZVR5cGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEZXZpY2VUeXBlID0gJ2RldmljZVR5cGUnLFxuXG4gIC8vIERQSV9EaXNwbGF5UGF0aCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERpc3BsYXlQYXRoID0gJ2Rpc3BsYXlQYXRoJyxcblxuICAvLyBEUElfRGlzdHJpYnV0aW9uVmFsdWVTdHJpbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEaXN0cmlidXRpb25WYWx1ZVN0cmluZyA9ICdkaXN0cmlidXRpb25WYWx1ZVN0cmluZycsXG5cbiAgLy8gRFBJX0RyaWxsUGF0aE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEcmlsbFBhdGhOYW1lID0gJ2RyaWxsUGF0aE5hbWUnLFxuXG4gIC8vIERQSV9FbWJlZGRlZFRpdGxlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRW1iZWRkZWRUaXRsZSA9ICdlbWJlZGRlZFRpdGxlJyxcblxuICAvLyBEUElfRW50ZXJWYWx1ZVRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBFbnRlclZhbHVlVGV4dCA9ICdlbnRlclZhbHVlVGV4dCcsXG5cbiAgLy8gRFBJX0VzY2FwZVN0cmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEVzY2FwZVN0cmluZyA9ICdlc2NhcGVTdHJpbmcnLFxuXG4gIC8vIERQSV9FeHRTdmNDb25maWdIb3N0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRXh0U3ZjQ29uZmlnSG9zdCA9ICdleHRTdmNDb25maWdIb3N0JyxcblxuICAvLyBEUElfRXh0U3ZjQ29uZmlnUGFzc3dvcmQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBFeHRTdmNDb25maWdQYXNzd29yZCA9ICdleHRTdmNDb25maWdQYXNzd29yZCcsXG5cbiAgLy8gRFBJX0V4dFN2Y0NvbmZpZ1BvcnQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBFeHRTdmNDb25maWdQb3J0ID0gJ2V4dFN2Y0NvbmZpZ1BvcnQnLFxuXG4gIC8vIERQSV9FeHRTdmNDb25maWdDb25uZWN0VGltZW91dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEV4dFN2Y0NvbmZpZ0Nvbm5lY3RUaW1lb3V0ID0gJ2V4dFN2Y0Nvbm5lY3RUaW1lb3V0JyxcblxuICAvLyBEUElfRXh0U3ZjQ29uZmlnUHJldkhvc3QsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBFeHRTdmNDb25maWdQcmV2SG9zdCA9ICdleHRTdmNDb25maWdQcmV2SG9zdCcsXG5cbiAgLy8gRFBJX0V4dFN2Y0NvbmZpZ1VzZXJuYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRXh0U3ZjQ29uZmlnVXNlcm5hbWUgPSAnZXh0U3ZjQ29uZmlnVXNlcm5hbWUnLFxuXG4gIC8vIERQSV9FeHRyYWN0VXBkYXRlVGltZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEV4dHJhY3RVcGRhdGVUaW1lID0gJ2V4dHJhY3RVcGRhdGVUaW1lJyxcblxuICAvLyBEUElfRmllbGRGb2xkZXJOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRmllbGRGb2xkZXJOYW1lID0gJ2ZpZWxkRm9sZGVyTmFtZScsXG5cbiAgLy8gRFBJX0ZpZWxkTmFtZVN0cmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZpZWxkTmFtZVN0cmluZyA9ICdmaWVsZE5hbWUnLFxuXG4gIC8vIERQSV9GaWx0ZXJTZWFyY2hEb21haW4sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGaWx0ZXJTZWFyY2hEb21haW4gPSAnZmlsdGVyU2VhcmNoRG9tYWluJyxcblxuICAvLyBEUElfRmlsdGVyU3BlYywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZpbHRlclNwZWMgPSAnZmlsdGVyU3BlYycsXG5cbiAgLy8gRFBJX0ZpcnN0VmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGaXJzdFZhbHVlID0gJ2ZpcnN0VmFsdWUnLFxuXG4gIC8vIERQSV9Gb2xkZXJOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRm9sZGVyTmFtZSA9ICdmb2xkZXJOYW1lJyxcblxuICAvLyBEUElfRm9udE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGb250TmFtZSA9ICdmb250TmFtZScsXG5cbiAgLy8gRFBJX0Zvcm1hdFN0cmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZvcm1hdFN0cmluZyA9ICdmb3JtYXRTdHJpbmcnLFxuXG4gIC8vIERQSV9Gb3JtYXR0ZWREaXNwbGF5U3RyaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRm9ybWF0dGVkRGlzcGxheVN0cmluZyA9ICdmb3JtYXR0ZWREaXNwbGF5U3RyaW5nJyxcblxuICAvLyBEUElfRm9ybWF0dGVkSW5jcmVtZW50VmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGb3JtYXR0ZWRJbmNyZW1lbnRWYWx1ZSA9ICdmb3JtYXR0ZWRJbmNyZW1lbnQnLFxuXG4gIC8vIERQSV9Gb3JtYXR0ZWRNYXhWYWx1ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZvcm1hdHRlZE1heFZhbHVlID0gJ2Zvcm1hdHRlZE1heCcsXG5cbiAgLy8gRFBJX0Zvcm1hdHRlZE1pblZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRm9ybWF0dGVkTWluVmFsdWUgPSAnZm9ybWF0dGVkTWluJyxcblxuICAvLyBEUElfRm9ybWF0dGVkVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGb3JtYXR0ZWRWYWx1ZSA9ICdmb3JtYXR0ZWRWYWx1ZScsXG5cbiAgLy8gRFBJX0Zvcm1hdHRlZENlbnRlclZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRm9ybWF0dGVkQ2VudGVyVmFsdWUgPSAnZm9ybWF0dGVkQ2VudGVyJyxcblxuICAvLyBEUElfRm9ybWF0dGVkRW5kVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGb3JtYXR0ZWRFbmRWYWx1ZSA9ICdmb3JtYXR0ZWRFbmQnLFxuXG4gIC8vIERQSV9Gb3JtYXR0ZWRTdGFydFZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRm9ybWF0dGVkU3RhcnRWYWx1ZSA9ICdmb3JtYXR0ZWRTdGFydCcsXG5cbiAgLy8gRFBJX1BhaXJlZEZvcm1hdHRlZFZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGFpcmVkRm9ybWF0dGVkVmFsdWUgPSAncGFpcmVkRm9ybWF0dGVkVmFsdWUnLFxuXG4gIC8vIERQSV9GcmFtZUF0dHJpYnV0ZXMsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGcmFtZUF0dHJpYnV0ZXMgPSAnZnJhbWVBdHRyJyxcblxuICAvLyBEUElfR1VJRCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEdVSUQgPSAnZ3VpZCcsXG5cbiAgLy8gRFBJX0dlb2dyYXBoaWNTZWFyY2hDYW5kaWRhdGVEaXNwbGF5TmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEdlb2dyYXBoaWNTZWFyY2hDYW5kaWRhdGVEaXNwbGF5TmFtZSA9ICdnZW9ncmFwaGljU2VhcmNoQ2FuZGlkYXRlRGlzcGxheU5hbWUnLFxuXG4gIC8vIERQSV9HZW9ncmFwaGljU2VhcmNoQ2FuZGlkYXRlUGFyZW50TmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEdlb2dyYXBoaWNTZWFyY2hDYW5kaWRhdGVQYXJlbnROYW1lID0gJ2dlb2dyYXBoaWNTZWFyY2hDYW5kaWRhdGVQYXJlbnROYW1lJyxcblxuICAvLyBEUElfR2VvZ3JhcGhpY1NlYXJjaENhbmRpZGF0ZVR5cGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBHZW9ncmFwaGljU2VhcmNoQ2FuZGlkYXRlVHlwZSA9ICdnZW9ncmFwaGljU2VhcmNoQ2FuZGlkYXRlVHlwZScsXG5cbiAgLy8gRFBJX0dlb2dyYXBoaWNTZWFyY2hMb2NhbGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBHZW9ncmFwaGljU2VhcmNoTG9jYWxlID0gJ2dlb2dyYXBoaWNTZWFyY2hMb2NhbGUnLFxuXG4gIC8vIERQSV9HZW9ncmFwaGljU2VhcmNoUXVlcnlTdHJpbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBHZW9ncmFwaGljU2VhcmNoUXVlcnlTdHJpbmcgPSAnZ2VvZ3JhcGhpY1NlYXJjaFNlYXJjaFN0cmluZycsXG5cbiAgLy8gRFBJX0dlb2dyYXBoaWNTZWFyY2hVSUxvY2FsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEdlb2dyYXBoaWNTZWFyY2hVSUxvY2FsZSA9ICdnZW9ncmFwaGljU2VhcmNoVWlsb2NhbGUnLFxuXG4gIC8vIERQSV9JY29uUmVzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSWNvblJlcyA9ICdpY29uUmVzJyxcblxuICAvLyBEUElfSW1hZ2VIYXNoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSW1hZ2VIYXNoID0gJ2ltYWdlSGFzaCcsXG5cbiAgLy8gRFBJX0ltYWdlTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEltYWdlTmFtZSA9ICdpbWFnZU5hbWUnLFxuXG4gIC8vIERQSV9JbWFnZVJlcywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEltYWdlUmVzID0gJ2ltYWdlUmVzJyxcblxuICAvLyBEUElfSW5jbHVkZXNTaWJsaW5nc1Byb21wdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEluY2x1ZGVzU2libGluZ3NQcm9tcHQgPSAnaW5jbHVkZXNTaWJsaW5nc1Byb21wdCcsXG5cbiAgLy8gRFBJX0luY2x1ZGVzU3ViZm9sZGVyc1Byb21wdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEluY2x1ZGVzU3ViZm9sZGVyc1Byb21wdCA9ICdpbmNsdWRlc1N1YmZvbGRlcnNQcm9tcHQnLFxuXG4gIC8vIERQSV9JbmNyZW1lbnRhbFNjaGVkdWxlSURzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSW5jcmVtZW50YWxTY2hlZHVsZUlEcyA9ICdpbmNyZW1lbnRhbFNjaGVkdWxlSWRzJyxcblxuICAvLyBEUElfSW52YXJpYW50S2V5d29yZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEludmFyaWFudEtleXdvcmQgPSAnaW52YXJpYW50S2V5d29yZCcsXG5cbiAgLy8gRFBJX0pvaW5PcGVyYXRvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEpvaW5PcGVyYXRvciA9ICdqb2luT3BlcmF0b3InLFxuXG4gIC8vIERQSV9Kb2luRXhwcmVzc2lvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEpvaW5FeHByZXNzaW9uID0gJ2pvaW5FeHByZXNzaW9uJyxcblxuICAvLyBEUElfS2V5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgS2V5ID0gJ2tleUlkJyxcblxuICAvLyBEUElfTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBMYWJlbCA9ICdsYWJlbCcsXG5cbiAgLy8gRFBJX1BhaXJlZExhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGFpcmVkTGFiZWwgPSAncGFpcmVkTGFiZWwnLFxuXG4gIC8vIERQSV9MYXlvdXRJRCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIExheW91dElEID0gJ2xheW91dElkJyxcblxuICAvLyBEUElfTGVmdEpvaW5FeHByZXNzaW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTGVmdEpvaW5FeHByZXNzaW9uID0gJ2xlZnRKb2luRXhwcmVzc2lvbicsXG5cbiAgLy8gRFBJX0xpbWl0Q291bnRFeHByZXNzaW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTGltaXRDb3VudEV4cHJlc3Npb24gPSAnbGltaXRDb3VudEV4cHJlc3Npb24nLFxuXG4gIC8vIERQSV9MaW5rVGFyZ2V0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTGlua1RhcmdldCA9ICdsaW5rVGFyZ2V0JyxcblxuICAvLyBEUElfTG9jYWxlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTG9jYWxlID0gJ2xvY2FsZScsXG5cbiAgLy8gRFBJX0xvY2FsaXplZEtleXdvcmQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBMb2NhbGl6ZWRLZXl3b3JkID0gJ2xvY2FsaXplZEtleXdvcmQnLFxuXG4gIC8vIERQSV9NYXBCb3hHTFN0eWxlSWQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBNYXBCb3hHTFN0eWxlSWQgPSAnbWFwYm94R2xTdHlsZUlkJyxcblxuICAvLyBEUElfTWFwQm94U3R5bGVVcmwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBNYXBCb3hTdHlsZVVybCA9ICdtYXBib3hTdHlsZVVybCcsXG5cbiAgLy8gRFBJX01hcEJveFVzZXJuYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTWFwQm94VXNlcm5hbWUgPSAnbWFwYm94VXNlcm5hbWUnLFxuXG4gIC8vIERQSV9NYXBTY2FsZVJlYWRvdXRTdHJpbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBNYXBTY2FsZVJlYWRvdXRTdHJpbmcgPSAnbWFwU2NhbGVSZWFkb3V0U3RyaW5nJyxcblxuICAvLyBEUElfTWFwU2NhbGVUb29sdGlwU3RyaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTWFwU2NhbGVUb29sdGlwU3RyaW5nID0gJ21hcFNjYWxlVG9vbHRpcFN0cmluZycsXG5cbiAgLy8gRFBJX01hcFNvdXJjZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBNYXBTb3VyY2VOYW1lID0gJ21hcFNvdXJjZU5hbWUnLFxuXG4gIC8vIERQSV9NYXhMYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1heExhYmVsID0gJ21heExhYmVsJyxcblxuICAvLyBEUElfTWluTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBNaW5MYWJlbCA9ICdtaW5MYWJlbCcsXG5cbiAgLy8gRFBJX01vZGVsRGVzY3JpcHRpb25QYXJhZ3JhcGgsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBNb2RlbERlc2NyaXB0aW9uUGFyYWdyYXBoID0gJ21vZGVsRGVzY3JpcHRpb25QYXJhZ3JhcGgnLFxuXG4gIC8vIERQSV9OYW1lVGVtcGxhdGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBOYW1lVGVtcGxhdGUgPSAnbmFtZVRlbXBsYXRlJyxcblxuICAvLyBEUElfTmV3RHJpbGxQYXRoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTmV3RHJpbGxQYXRoID0gJ25ld0RyaWxsUGF0aCcsXG5cbiAgLy8gRFBJX05ld0ZpZWxkRm9sZGVyTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE5ld0ZpZWxkRm9sZGVyTmFtZSA9ICduZXdGaWVsZEZvbGRlck5hbWUnLFxuXG4gIC8vIERQSV9OZXdUYWJsZUFsaWFzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTmV3VGFibGVBbGlhcyA9ICduZXdUYWJsZUFsaWFzJyxcblxuICAvLyBEUElfTm9uRm9ybWF0dGVkVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBOb25Gb3JtYXR0ZWRWYWx1ZSA9ICd1bmZvcm1hdHRlZFZhbHVlJyxcblxuICAvLyBEUElfT0F1dGhVc2VyTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE9BdXRoVXNlck5hbWUgPSAnb2F1dGhVc2VybmFtZScsXG5cbiAgLy8gRFBJX09iamVjdE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBPYmplY3ROYW1lID0gJ29iamVjdE5hbWUnLFxuXG4gIC8vIERQSV9PYmplY3RPdmVycmlkZU1lc3NhZ2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBPYmplY3RPdmVycmlkZU1lc3NhZ2UgPSAnb2JqZWN0T3ZlcnJpZGVNZXNzYWdlJyxcblxuICAvLyBEUElfT2xkVGFibGVBbGlhcywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE9sZFRhYmxlQWxpYXMgPSAnb2xkVGFibGVBbGlhcycsXG5cbiAgLy8gRFBJX09wZXJhdGluZ1N5c3RlbSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE9wZXJhdGluZ1N5c3RlbSA9ICdvcGVyYXRpbmdTeXN0ZW0nLFxuXG4gIC8vIERQSV9PcmlnaW5hbEZpbGVQYXRoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgT3JpZ2luYWxGaWxlUGF0aCA9ICdvcmlnaW5hbEZpbGVQYXRoJyxcblxuICAvLyBEUElfT3JpZ2luYWxGaWxlVmVyc2lvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE9yaWdpbmFsRmlsZVZlcnNpb24gPSAnb3JpZ2luYWxGaWxlVmVyc2lvbicsXG5cbiAgLy8gRFBJX1BhbmVEZXNjcmlwdG9yS2V5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGFuZURlc2NyaXB0b3JLZXkgPSAncGFuZURlc2NyS2V5JyxcblxuICAvLyBEUElfUGFyZW50TmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFBhcmVudE5hbWUgPSAncGFyZW50TmFtZScsXG5cbiAgLy8gRFBJX1BhcmVudFRhYmxlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGFyZW50VGFibGUgPSAncGFyZW50VGFibGUnLFxuXG4gIC8vIERQSV9QYXR0ZXJuRmlsdGVyU3RyaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGF0dGVybkZpbHRlclN0cmluZyA9ICdwYXR0ZXJuRmlsdGVyU3RyaW5nJyxcblxuICAvLyBEUElfUGVuZGluZ0NhbGNOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGVuZGluZ0NhbGNOYW1lID0gJ3BlbmRpbmdDYWxjTmFtZScsXG5cbiAgLy8gRFBJX1BlcmNlbnRpbGVzU3RyaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGVyY2VudGlsZXNTdHJpbmcgPSAncGVyY2VudGlsZXNTdHJpbmcnLFxuXG4gIC8vIERQSV9Qcm9qZWN0TmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFByb2plY3ROYW1lID0gJ3Byb2plY3ROYW1lJyxcblxuICAvLyBEUElfUHJvcGVydHlOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUHJvcGVydHlOYW1lID0gJ3Byb3BlcnR5TmFtZScsXG5cbiAgLy8gRFBJX1F1aWNrRmlsdGVyVGl0bGVDYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUXVpY2tGaWx0ZXJUaXRsZUNhcHRpb24gPSAncXVpY2tGaWx0ZXJUaXRsZUNhcHRpb24nLFxuXG4gIC8vIERQSV9SYW5nZURpZmZTdHIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBSYW5nZURpZmZTdHIgPSAnZGlmZlZhbHVlJyxcblxuICAvLyBEUElfUmFuZ2VNYXhTdHIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBSYW5nZU1heFN0ciA9ICdtYXhWYWx1ZScsXG5cbiAgLy8gRFBJX1JhbmdlTWluU3RyLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUmFuZ2VNaW5TdHIgPSAnbWluVmFsdWUnLFxuXG4gIC8vIERQSV9SZWNvdmVyZWRGaWxlUGF0aCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFJlY292ZXJlZEZpbGVQYXRoID0gJ3JlY292ZXJlZEZpbGVQYXRoJyxcblxuICAvLyBEUElfUmVmZXJlbmNlTGluZVNwZWNpZmljYXRpb25JZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFJlZmVyZW5jZUxpbmVTcGVjaWZpY2F0aW9uSWQgPSAncmVmZXJlbmNlTGluZUlkJyxcblxuICAvLyBEUElfUmVwbGFjZUZpZWxkUHJvbXB0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUmVwbGFjZUZpZWxkUHJvbXB0ID0gJ3JlcGxhY2VGaWVsZFByb21wdCcsXG5cbiAgLy8gRFBJX1JpZ2h0Sm9pbkV4cHJlc3Npb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBSaWdodEpvaW5FeHByZXNzaW9uID0gJ3JpZ2h0Sm9pbkV4cHJlc3Npb24nLFxuXG4gIC8vIERQSV9Sb290UGF0aCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFJvb3RQYXRoID0gJ3Jvb3RQYXRoJyxcblxuICAvLyBEUElfUnVudGltZUZpbmFsRGF0YXN0b3JlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUnVudGltZUZpbmFsRGF0YXN0b3JlID0gJ3J1bnRpbWVGaW5hbERhdGFzdG9yZScsXG5cbiAgLy8gRFBJX1J1bnRpbWVJbml0aWFsRGF0YXN0b3JlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUnVudGltZUluaXRpYWxEYXRhc3RvcmUgPSAncnVudGltZUluaXRpYWxEYXRhc3RvcmUnLFxuXG4gIC8vIERQSV9SdW50aW1lVlRMLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUnVudGltZVZUTCA9ICdydW50aW1lVnRsJyxcblxuICAvLyBEUElfU2FtcGxlRGF0YVN0cmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNhbXBsZURhdGFTdHJpbmcgPSAnc2FtcGxlRGF0YScsXG5cbiAgLy8gRFBJX1NjaGVkdWxlSURzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU2NoZWR1bGVJRHMgPSAnc2NoZWR1bGVJZHMnLFxuXG4gIC8vIERQSV9TY2hlbWFGaWVsZEljb25SZXNvdXJjZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNjaGVtYUZpZWxkSWNvblJlc291cmNlID0gJ2ZpZWxkSWNvblJlcycsXG5cbiAgLy8gRFBJX1NjcmVlbk5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTY3JlZW5OYW1lID0gJ3NjcmVlbk5hbWUnLFxuXG4gIC8vIERQSV9TY3JpcHRDb21tYW5kLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU2NyaXB0Q29tbWFuZCA9ICdjb21tYW5kJyxcblxuICAvLyBEUElfU2Vjb25kVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTZWNvbmRWYWx1ZSA9ICdzZWNvbmRWYWx1ZScsXG5cbiAgLy8gRFBJX1NlbGVjdGVkVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTZWxlY3RlZFZhbHVlID0gJ3NlbGVjdGVkVmFsdWUnLFxuXG4gIC8vIERQSV9TaGFwZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTaGFwZU5hbWUgPSAnc2hhcGVOYW1lJyxcblxuICAvLyBEUElfU2hlZXRJZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNoZWV0SWQgPSAnc2hlZXRJZCcsXG5cbiAgLy8gRFBJX1Nob3dEYXRhVGFibGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTaG93RGF0YVRhYmxlID0gJ3Nob3dEYXRhVGFibGUnLFxuXG4gIC8vIERQSV9TaW1wbGVDb21tYW5kLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU2ltcGxlQ29tbWFuZCA9ICdzaW1wbGVDb21tYW5kJyxcblxuICAvLyBEUElfU29ydE1vZGVDYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU29ydE1vZGVDYXB0aW9uID0gJ3NvcnRNb2RlQ2FwdGlvbicsXG5cbiAgLy8gRFBJX1NvdXJjZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTb3VyY2VOYW1lID0gJ3NvdXJjZU5hbWUnLFxuXG4gIC8vIERQSV9Tb3VyY2VUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU291cmNlVGV4dCA9ICdzb3VyY2VUZXh0JyxcblxuICAvLyBEUElfU3BlY2lhbFZhbHVlVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNwZWNpYWxWYWx1ZVRleHQgPSAnc3BlY2lhbFZhbHVlVGV4dCcsXG5cbiAgLy8gRFBJX1N0YXRpY0ltYWdlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3RhdGljSW1hZ2UgPSAnc3RhdGljSW1hZ2UnLFxuXG4gIC8vIERQSV9TdG9yeVBvaW50QmFzZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFN0b3J5UG9pbnRCYXNlID0gJ3N0b3J5UG9pbnRCYXNlJyxcblxuICAvLyBEUElfU3RvcnlQb2ludENhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTdG9yeVBvaW50Q2FwdGlvbiA9ICdzdG9yeVBvaW50Q2FwdGlvbicsXG5cbiAgLy8gRFBJX1N0b3J5Ym9hcmQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTdG9yeWJvYXJkID0gJ3N0b3J5Ym9hcmQnLFxuXG4gIC8vIERQSV9TdHlsZWRMYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFN0eWxlZExhYmVsID0gJ3N0eWxlZExhYmVsJyxcblxuICAvLyBEUElfU3VtbWFyeUNhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTdW1tYXJ5Q2FwdGlvbiA9ICdzdW1tYXJ5Q2FwdGlvbicsXG5cbiAgLy8gRFBJX1N1bW1hcnlGaWVsZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFN1bW1hcnlGaWVsZCA9ICdzdW1tYXJ5RmllbGQnLFxuXG4gIC8vIERQSV9UYWJsZWF1VmVyc2lvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRhYmxlYXVWZXJzaW9uID0gJ3RhYmxlYXVWZXJzaW9uJyxcblxuICAvLyBEUElfVGFibGVGaWx0ZXIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUYWJsZUZpbHRlciA9ICd0YWJsZUZpbHRlcicsXG5cbiAgLy8gRFBJX1RhYmxlRmlsdGVyUHJvbXB0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVGFibGVGaWx0ZXJQcm9tcHQgPSAndGFibGVGaWx0ZXJQcm9tcHQnLFxuXG4gIC8vIERQSV9UYWdzTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUYWdzTGFiZWwgPSAndGFnc0xhYmVsJyxcblxuICAvLyBEUElfVGFyZ2V0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVGFyZ2V0ID0gJ3RhcmdldCcsXG5cbiAgLy8gRFBJX1RodW1ibmFpbEdyb3VwLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVGh1bWJuYWlsR3JvdXAgPSAndGh1bWJuYWlsR3JvdXAnLFxuXG4gIC8vIERQSV9UaHVtYm5haWxVc2VyLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVGh1bWJuYWlsVXNlciA9ICd0aHVtYm5haWxVc2VyJyxcblxuICAvLyBEUElfVGltZUZvcm1hdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRpbWVGb3JtYXQgPSAndGltZUZvcm1hdCcsXG5cbiAgLy8gRFBJX1RyZW5kTGluZUVycm9yU3RyaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVHJlbmRMaW5lRXJyb3JTdHJpbmcgPSAndHJlbmRMaW5lRXJyb3JTdHJpbmcnLFxuXG4gIC8vIERQSV9UcmVuZExpbmVNb2RlbEZvcm11bGEsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUcmVuZExpbmVNb2RlbEZvcm11bGEgPSAndHJlbmRMaW5lTW9kZWxGb3JtdWxhJyxcblxuICAvLyBEUElfVVJMU3RyaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVVJMU3RyaW5nID0gJ3VybFN0cmluZycsXG5cbiAgLy8gRFBJX1VSTFRlc3QsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBVUkxUZXN0ID0gJ3VybFRlc3QnLFxuXG4gIC8vIERQSV9WYWxpZGF0aW9uTWVzc2FnZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFZhbGlkYXRpb25NZXNzYWdlID0gJ3ZhbGlkYXRpb25NZXNzYWdlJyxcblxuICAvLyBEUElfVmFsdWVTdHIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBWYWx1ZVN0ciA9ICd2YWx1ZVN0cmluZycsXG5cbiAgLy8gRFBJX1ZlcmlmaWVkTm9uRm9ybWF0dGVkVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBWZXJpZmllZE5vbkZvcm1hdHRlZFZhbHVlID0gJ3ZlcmlmaWVkVW5mb3JtYXR0ZWRWYWx1ZScsXG5cbiAgLy8gRFBJX1dvcmtib29rRnVsbFBhdGgsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBXb3JrYm9va0Z1bGxQYXRoID0gJ3dvcmtib29rRnVsbFBhdGgnLFxuXG4gIC8vIERQSV9XaW5kb3dUaXRsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFdpbmRvd1RpdGxlID0gJ3dpbmRvd1RpdGxlJyxcblxuICAvLyBEUElfWm9uZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBab25lTmFtZSA9ICd6b25lTmFtZScsXG5cbiAgLy8gRFBJX1pvbmVQYXJhbSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFpvbmVQYXJhbSA9ICd6b25lUGFyYW0nLFxuXG4gIC8vIERQSV9EYXRhQWxlcnRFcnJvclRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRhQWxlcnRFcnJvclRleHQgPSAnZGF0YUFsZXJ0RXJyb3JUZXh0JyxcblxuICAvLyBEUElfRXh0cmFjdFRlbXBEaXJlY3RvcnksIGhhdmluZyB0eXBlIHN0cmluZ1xuICBFeHRyYWN0VGVtcERpcmVjdG9yeSA9ICdleHRyYWN0VGVtcERpcicsXG5cbiAgLy8gRFBJX0RTU3ViQ2xhc3MsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEU1N1YkNsYXNzID0gJ2RzU3ViQ2xhc3MnLFxuXG4gIC8vIERQSV9EYmdDb21tYW5kTGluZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERiZ0NvbW1hbmRMaW5lID0gJ2RlYnVnQ29tbWFuZExpbmUnLFxuXG4gIC8vIERQSV9EYmdMb2dQYXRoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGJnTG9nUGF0aCA9ICdkZWJ1Z0xvZ1BhdGgnLFxuXG4gIC8vIERQSV9EYmdPU1ZlcnNpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYmdPU1ZlcnNpb24gPSAnZGVidWdPc1ZlcnNpb24nLFxuXG4gIC8vIERQSV9EYmdVc2VyTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERiZ1VzZXJOYW1lID0gJ2RlYnVnVXNlcm5hbWUnLFxuXG4gIC8vIERQSV9FcnJvck1zZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEVycm9yTXNnID0gJ2Vycm9yTWVzc2FnZScsXG5cbiAgLy8gRFBJX0Vycm9yU3RhY2tUcmFjZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEVycm9yU3RhY2tUcmFjZSA9ICdlcnJvclN0YWNrVHJhY2UnLFxuXG4gIC8vIERQSV9FcnJvclN0ciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEVycm9yU3RyID0gJ2Vycm9yU3RyaW5nJyxcblxuICAvLyBEUElfRXZlbnRNZXNzYWdlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRXZlbnRNZXNzYWdlID0gJ2V2ZW50TWVzc2FnZScsXG5cbiAgLy8gRFBJX0V2ZW50VGltZXN0YW1wLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRXZlbnRUaW1lc3RhbXAgPSAnZXZlbnRUaW1lc3RhbXAnLFxuXG4gIC8vIERQSV9FeHRyYWN0RGVsdGFQYXRoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRXh0cmFjdERlbHRhUGF0aCA9ICdleHRyYWN0RGVsdGFQYXRoJyxcblxuICAvLyBEUElfRXh0cmFjdFBhdGgsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBFeHRyYWN0UGF0aCA9ICdleHRyYWN0UGF0aCcsXG5cbiAgLy8gRFBJX0V4dHJhY3RTdWdnZXN0ZWRQYXRoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRXh0cmFjdFN1Z2dlc3RlZFBhdGggPSAnc3VnZ2VzdGVkRXh0cmFjdFBhdGgnLFxuXG4gIC8vIERQSV9FeHRyYWN0VGFza1N1bW1hcnksIGhhdmluZyB0eXBlIHN0cmluZ1xuICBFeHRyYWN0VGFza1N1bW1hcnkgPSAnZXh0cmFjdFRhc2tTdW1tYXJ5JyxcblxuICAvLyBEUElfRmFjdG9yc1N0cmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZhY3RvcnNTdHJpbmcgPSAnZmFjdG9yc1N0cicsXG5cbiAgLy8gRFBJX0Zvcm1hdHRlZEZhbWlseU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGb3JtYXR0ZWRGYW1pbHlOYW1lID0gJ2Zvcm1hdHRlZEZhbWlseU5hbWUnLFxuXG4gIC8vIERQSV9GdW5jdGlvblNpZ25hdHVyZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZ1bmN0aW9uU2lnbmF0dXJlID0gJ2Z1bmNTaWcnLFxuXG4gIC8vIERQSV9GdW5jdGlvblRvb2x0aXAsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGdW5jdGlvblRvb2x0aXAgPSAnZnVuY1Rvb2x0aXAnLFxuXG4gIC8vIERQSV9IZWxwQ29udGVudHMsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBIZWxwQ29udGVudHMgPSAnaGVscENvbnRlbnRzJyxcblxuICAvLyBEUElfTWFwQXR0cmlidXRpb25UZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTWFwQXR0cmlidXRpb25UZXh0ID0gJ21hcEF0dHJpYnV0aW9uVGV4dCcsXG5cbiAgLy8gRFBJX01hcEF0dHJpYnV0aW9uVGV4dFNpemUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBNYXBBdHRyaWJ1dGlvblRleHRTaXplID0gJ21hcEF0dHJpYnV0aW9uVGV4dFNpemUnLFxuXG4gIC8vIERQSV9NYXBBdHRyaWJ1dGlvblVybCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1hcEF0dHJpYnV0aW9uVXJsID0gJ21hcEF0dHJpYnV0aW9uVXJsJyxcblxuICAvLyBEUElfTWFwQm94RXJyb3JNZXNzYWdlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTWFwQm94RXJyb3JNZXNzYWdlID0gJ21hcGJveEVycm9yTWVzc2FnZScsXG5cbiAgLy8gRFBJX01hcEJveE9sZFN0eWxlTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1hcEJveE9sZFN0eWxlTmFtZSA9ICdtYXBib3hPbGRTdHlsZU5hbWUnLFxuXG4gIC8vIERQSV9NYXBCb3hTZWxlY3RlZFN0eWxlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTWFwQm94U2VsZWN0ZWRTdHlsZSA9ICdtYXBib3hTZWxlY3RlZFN0eWxlJyxcblxuICAvLyBEUElfTWFwQm94U3R5bGVOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTWFwQm94U3R5bGVOYW1lID0gJ21hcGJveFN0eWxlTmFtZScsXG5cbiAgLy8gRFBJX01hcExheWVyUmVxdWVzdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1hcExheWVyUmVxdWVzdCA9ICdtYXBMYXllclJlcXVlc3QnLFxuXG4gIC8vIERQSV9NYXBTZXJ2ZXJLZXksIGhhdmluZyB0eXBlIHN0cmluZ1xuICBNYXBTZXJ2ZXJLZXkgPSAnbWFwU2VydmVyS2V5JyxcblxuICAvLyBEUElfTWFwVGlsZVNlcnZlciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1hcFRpbGVTZXJ2ZXIgPSAnbWFwVGlsZVNlcnZlcicsXG5cbiAgLy8gRFBJX01hcFRpbGVVcmwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBNYXBUaWxlVXJsID0gJ21hcFRpbGVVcmwnLFxuXG4gIC8vIERQSV9QZXJjZW50YWdlc1N0cmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFBlcmNlbnRhZ2VzU3RyaW5nID0gJ3BlcmNlbnRhZ2VzU3RyJyxcblxuICAvLyBEUElfUHVibGlzaEVycm9yTWVzc2FnZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFB1Ymxpc2hFcnJvck1lc3NhZ2UgPSAncHVibGlzaEVycm9yTWVzc2FnZScsXG5cbiAgLy8gRFBJX1RkZVBhdGgsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUZGVQYXRoID0gJ3RkZVBhdGgnLFxuXG4gIC8vIERQSV9VSUF1dG9tYXRpb25Db21wb25lbnROYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVUlBdXRvbWF0aW9uQ29tcG9uZW50TmFtZSA9ICd1aUF1dG9tYXRpb25Db21wb25lbnROYW1lJyxcblxuICAvLyBEUElfVUlBdXRvbWF0aW9uRW5kVGltZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFVJQXV0b21hdGlvbkVuZFRpbWUgPSAndWlBdXRvbWF0aW9uRW5kVGltZScsXG5cbiAgLy8gRFBJX1VJQXV0b21hdGlvbk5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBVSUF1dG9tYXRpb25OYW1lID0gJ3VpQXV0b21hdGlvbk5hbWUnLFxuXG4gIC8vIERQSV9VSUF1dG9tYXRpb25TdGFydFRpbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBVSUF1dG9tYXRpb25TdGFydFRpbWUgPSAndWlBdXRvbWF0aW9uU3RhcnRUaW1lJyxcblxuICAvLyBEUElfVUlBdXRvbWF0aW9uVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBVSUF1dG9tYXRpb25WYWx1ZSA9ICd1aUF1dG9tYXRpb25WYWx1ZScsXG5cbiAgLy8gRFBJX1dNU0Nvbm5lY3Rpb25OYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgV01TQ29ubmVjdGlvbk5hbWUgPSAnd21zQ29ubmVjdGlvbk5hbWUnLFxuXG4gIC8vIERQSV9XTVNPbGRDb25uZWN0aW9uTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFdNU09sZENvbm5lY3Rpb25OYW1lID0gJ3dtc09sZENvbm5lY3Rpb25OYW1lJyxcblxuICAvLyBEUElfV01TU2VydmVyVXJsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgV01TU2VydmVyVXJsID0gJ3dtc1NlcnZlclVybCcsXG5cbiAgLy8gRFBJX0Fib3V0QnVpbGRWZXJzaW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQWJvdXRCdWlsZFZlcnNpb24gPSAnYWJvdXRCdWlsZFZlcnNpb24nLFxuXG4gIC8vIERQSV9BY3Rpb25GaWVsZHMsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBY3Rpb25GaWVsZHMgPSAnYWN0aW9uRmllbGRzJyxcblxuICAvLyBEUElfQWRkVmFyaWFibGVMYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEFkZFZhcmlhYmxlTGFiZWwgPSAnYWRkVmFyaWFibGVMYWJlbCcsXG5cbiAgLy8gRFBJX0FkZFZhcmlhYmxlVG9vbHRpcCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEFkZFZhcmlhYmxlVG9vbHRpcCA9ICdhZGRWYXJpYWJsZVRvb2x0aXAnLFxuXG4gIC8vIERQSV9BbGxvd2VkRGF0YVNvdXJjZXNCeU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBbGxvd2VkRGF0YVNvdXJjZXNCeU5hbWUgPSAnYWxsb3dlZERhdGFTb3VyY2VzQnlOYW1lJyxcblxuICAvLyBEUElfQXBwQWJvdXRWZXJzaW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXBwQWJvdXRWZXJzaW9uID0gJ2FwcEFib3V0VmVyc2lvbicsXG5cbiAgLy8gRFBJX0FwcEJ1aWxkQnJhbmNoTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEFwcEJ1aWxkQnJhbmNoTmFtZSA9ICdhcHBCdWlsZEJyYW5jaE5hbWUnLFxuXG4gIC8vIERQSV9BcHBCdWlsZFZlcnNpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBcHBCdWlsZFZlcnNpb24gPSAnYXBwQnVpbGRWZXJzaW9uJyxcblxuICAvLyBEUElfQXBwRXh0ZXJuYWxWZXJzaW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXBwRXh0ZXJuYWxWZXJzaW9uID0gJ2FwcEV4dGVybmFsVmVyc2lvbicsXG5cbiAgLy8gRFBJX0FwcE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBcHBOYW1lID0gJ2FwcE5hbWUnLFxuXG4gIC8vIERQSV9BcHBQcm9kdWN0VmVyc2lvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEFwcFByb2R1Y3RWZXJzaW9uID0gJ2FwcFByb2R1Y3RWZXJzaW9uJyxcblxuICAvLyBEUElfT3JpZ2luYWxWZXJzaW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgT3JpZ2luYWxWZXJzaW9uID0gJ29yaWdpbmFsVmVyc2lvbicsXG5cbiAgLy8gRFBJX0F0VGhlTGV2ZWxTcGVjaWFsQ2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0VGhlTGV2ZWxTcGVjaWFsQ2FwdGlvbiA9ICdhdFRoZUxldmVsU3BlY2lhbENhcHRpb24nLFxuXG4gIC8vIERQSV9BdXRvQ29tcGxldGVDYWxjLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXV0b0NvbXBsZXRlQ2FsYyA9ICdhY0NhbGMnLFxuXG4gIC8vIERQSV9DU1ZQYXRoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ1NWUGF0aCA9ICdjc3ZQYXRoJyxcblxuICAvLyBEUElfQ29tbWFuZE5hbWVzcGFjZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENvbW1hbmROYW1lc3BhY2UgPSAnY29tbWFuZE5hbWVzcGFjZScsXG5cbiAgLy8gRFBJX0NvbmRpdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENvbmRpdGlvbiA9ICdjb25kaXRpb24nLFxuXG4gIC8vIERQSV9Db25kaXRpb25TdW1tYXJ5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ29uZGl0aW9uU3VtbWFyeSA9ICdjb25kaXRpb25TdW1tYXJ5JyxcblxuICAvLyBEUElfQ29uZmlybWF0aW9uTXNnLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ29uZmlybWF0aW9uTXNnID0gJ2NvbmZpcm1hdGlvbk1zZycsXG5cbiAgLy8gRFBJX0Rhc2hib2FyZFR5cGVUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGFzaGJvYXJkVHlwZVRleHQgPSAnZGFzaGJvYXJkVHlwZScsXG5cbiAgLy8gRFBJX0RhdGFzZXJ2ZXJQdWJsaWNBZGRyZXNzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGF0YXNlcnZlclB1YmxpY0FkZHJlc3MgPSAnZGF0YXNlcnZlclB1YmxpY0FkZHJlc3MnLFxuXG4gIC8vIERQSV9EYXRhc291cmNlRmlsZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRhc291cmNlRmlsZU5hbWUgPSAnZGF0YXNvdXJjZUZpbGVOYW1lJyxcblxuICAvLyBEUElfRGVjaW1hbE1hcmssIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEZWNpbWFsTWFyayA9ICdkZWNpbWFsTWFyaycsXG5cbiAgLy8gRFBJX0RlbGV0ZVZhcmlhYmxlVG9vbHRpcCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERlbGV0ZVZhcmlhYmxlVG9vbHRpcCA9ICdkZWxldGVWYXJpYWJsZVRvb2x0aXAnLFxuXG4gIC8vIERQSV9EaWFsb2dUaXRsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERpYWxvZ1RpdGxlID0gJ2RpYWxvZ1RpdGxlJyxcblxuICAvLyBEUElfRGlzcGxheVZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGlzcGxheVZhbHVlID0gJ2Rpc3BsYXlWYWx1ZScsXG5cbiAgLy8gRFBJX1Rvb2x0aXBWYWx1ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRvb2x0aXBWYWx1ZSA9ICd0b29sdGlwVmFsdWUnLFxuXG4gIC8vIERQSV9Ec3RQYXRoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRHN0UGF0aCA9ICdkc3RQYXRoJyxcblxuICAvLyBEUElfRWRpdFdpZGdldEhlYWRlciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEVkaXRXaWRnZXRIZWFkZXIgPSAnZWRpdFdpZGdldEhlYWRlcicsXG5cbiAgLy8gRFBJX0VkaXRXaWRnZXRJbnN0cnVjdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEVkaXRXaWRnZXRJbnN0cnVjdGlvbiA9ICdlZGl0V2lkZ2V0SW5zdHJ1Y3Rpb24nLFxuXG4gIC8vIERQSV9FbmRTZWxlY3Rpb25DYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRW5kU2VsZWN0aW9uQ2FwdGlvbiA9ICdlbmRTZWxlY3Rpb25DYXB0aW9uJyxcblxuICAvLyBEUElfRXJyb3JEaWFsb2dUaXRsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEVycm9yRGlhbG9nVGl0bGUgPSAnZXJyb3JEaWFsb2dUaXRsZScsXG5cbiAgLy8gRFBJX0Vycm9ySGVscExpbmssIGhhdmluZyB0eXBlIHN0cmluZ1xuICBFcnJvckhlbHBMaW5rID0gJ2Vycm9ySGVscExpbmsnLFxuXG4gIC8vIERQSV9FcnJvclNob3J0TWVzc2FnZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEVycm9yU2hvcnRNZXNzYWdlID0gJ2Vycm9yU2hvcnRNZXNzYWdlJyxcblxuICAvLyBEUElfRmlsdGVyU2VhcmNoUXVlcnksIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGaWx0ZXJTZWFyY2hRdWVyeSA9ICdmaWx0ZXJTZWFyY2hRdWVyeScsXG5cbiAgLy8gRFBJX0Zyb21MYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZyb21MYWJlbCA9ICdmcm9tTGFiZWwnLFxuXG4gIC8vIERQSV9GdW5jdGlvbkhlbHAsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGdW5jdGlvbkhlbHAgPSAnZnVuY3Rpb25IZWxwJyxcblxuICAvLyBEUElfSW5zdHJ1Y3Rpb25zLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSW5zdHJ1Y3Rpb25zID0gJ2luc3RydWN0aW9ucycsXG5cbiAgLy8gRFBJX0xhcmdlVW5pdERpc3BsYXksIGhhdmluZyB0eXBlIHN0cmluZ1xuICBMYXJnZVVuaXREaXNwbGF5ID0gJ2xhcmdlVW5pdERpc3BsYXknLFxuXG4gIC8vIERQSV9MaW1pdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIExpbWl0ID0gJ2xpbWl0JyxcblxuICAvLyBEUElfTGlzdFZpZXdOYW1lTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBMaXN0Vmlld05hbWVMYWJlbCA9ICdsaXN0Vmlld05hbWVMYWJlbCcsXG5cbiAgLy8gRFBJX0xpc3RWaWV3VmFsdWVMYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIExpc3RWaWV3VmFsdWVMYWJlbCA9ICdsaXN0Vmlld1ZhbHVlTGFiZWwnLFxuXG4gIC8vIERQSV9NYXBTY2FsZVJlYWRvdXRVbml0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTWFwU2NhbGVSZWFkb3V0VW5pdCA9ICdtYXBTY2FsZVJlYWRvdXRVbml0JyxcblxuICAvLyBEUElfTWVhc3VyZURpbWVuc2lvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1lYXN1cmVEaW1lbnNpb24gPSAnbWVhc3VyZXNEaW1lbnNpb24nLFxuXG4gIC8vIERQSV9NaW1lVHlwZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1pbWVUeXBlID0gJ21pbWVUeXBlJyxcblxuICAvLyBEUElfTWluaW1pemVkTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1pbmltaXplZE5hbWUgPSAnbWluTmFtZScsXG5cbiAgLy8gRFBJX05vdGlmaWNhdGlvbk1zZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE5vdGlmaWNhdGlvbk1zZyA9ICdub3RpZmljYXRpb25Nc2cnLFxuXG4gIC8vIERQSV9PcGVyYXRpb25OYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgT3BlcmF0aW9uTmFtZSA9ICdvcGVyYXRpb25OYW1lJyxcblxuICAvLyBEUElfUGFnZVRpdGxlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGFnZVRpdGxlID0gJ3BhZ2VUaXRsZScsXG5cbiAgLy8gRFBJX1BhdHRlcm5TdW1tYXJ5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGF0dGVyblN1bW1hcnkgPSAncGF0dGVyblN1bW1hcnknLFxuXG4gIC8vIERQSV9SZWZlcmVuY2VMaW5lSWQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBSZWZlcmVuY2VMaW5lSWQgPSAncmVmTGluZUlkJyxcblxuICAvLyBEUElfUmVmZXJlbmNlTGluZVBhaXJlZElkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUmVmZXJlbmNlTGluZVBhaXJlZElkID0gJ3JlZkxpbmVQYWlyZWRJZCcsXG5cbiAgLy8gRFBJX1JlcGxhY2VUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUmVwbGFjZVRleHQgPSAncmVwbGFjZVRleHQnLFxuXG4gIC8vIERQSV9SZXF1aXJlZFZhcmlhYmxlTWVzc2FnZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFJlcXVpcmVkVmFyaWFibGVNZXNzYWdlID0gJ3JlcXVpcmVkVmFyaWFibGVNZXNzYWdlJyxcblxuICAvLyBEUElfUmVzdGFydEV2ZXJ5U3BlY2lhbENhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBSZXN0YXJ0RXZlcnlTcGVjaWFsQ2FwdGlvbiA9ICdyZXN0YXJ0RXZlcnlTcGVjaWFsQ2FwdGlvbicsXG5cbiAgLy8gRFBJX1Jvb3QsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBSb290ID0gJ3Jvb3QnLFxuXG4gIC8vIERQSV9TZWxlY3Rpb25TdW1tYXJ5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU2VsZWN0aW9uU3VtbWFyeSA9ICdzZWxlY3Rpb25TdW1tYXJ5JyxcblxuICAvLyBEUElfU2Vzc2lvbkF0dHJpYnV0ZUtleSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNlc3Npb25BdHRyaWJ1dGVLZXkgPSAnc2Vzc2lvbkF0dHJpYnV0ZUtleScsXG5cbiAgLy8gRFBJX1Nlc3Npb25BdHRyaWJ1dGVWYWx1ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNlc3Npb25BdHRyaWJ1dGVWYWx1ZSA9ICdzZXNzaW9uQXR0cmlidXRlVmFsdWUnLFxuXG4gIC8vIERQSV9TaGVldEF0dHJpYnV0ZUtleSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNoZWV0QXR0cmlidXRlS2V5ID0gJ2Jhc2VTaGVldEF0dHJpYnV0ZUtleScsXG5cbiAgLy8gRFBJX1NoZWV0QXR0cmlidXRlVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTaGVldEF0dHJpYnV0ZVZhbHVlID0gJ2Jhc2VTaGVldEF0dHJpYnV0ZVZhbHVlJyxcblxuICAvLyBEUElfU21hbGxVbml0RGlzcGxheSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNtYWxsVW5pdERpc3BsYXkgPSAnc21hbGxVbml0RGlzcGxheScsXG5cbiAgLy8gRFBJX1NvdXJjZUNhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTb3VyY2VDYXB0aW9uID0gJ3NvdXJjZUNhcHRpb24nLFxuXG4gIC8vIERQSV9TcmNQYXRoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3JjUGF0aCA9ICdzcmNQYXRoJyxcblxuICAvLyBEUElfU3RhcnRTZWxlY3Rpb25DYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3RhcnRTZWxlY3Rpb25DYXB0aW9uID0gJ3N0YXJ0U2VsZWN0aW9uQ2FwdGlvbicsXG5cbiAgLy8gRFBJX1N1YnRpdGxlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3VidGl0bGUgPSAnc3VidGl0bGUnLFxuXG4gIC8vIERQSV9UYWJsZWF1U2VydmVyU2l0ZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUYWJsZWF1U2VydmVyU2l0ZU5hbWUgPSAndGFibGVhdVNlcnZlclNpdGVOYW1lJyxcblxuICAvLyBEUElfVGFyZ2V0Q2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRhcmdldENhcHRpb24gPSAndGFyZ2V0Q2FwdGlvbicsXG5cbiAgLy8gRFBJX1RodW1ibmFpbFBhdGgsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUaHVtYm5haWxQYXRoID0gJ3RodW1ibmFpbFBhdGgnLFxuXG4gIC8vIERQSV9Ub0xhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVG9MYWJlbCA9ICd0b0xhYmVsJyxcblxuICAvLyBEUElfVVJMQWRkcmVzcywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFVSTEFkZHJlc3MgPSAndXJsQWRkcmVzcycsXG5cbiAgLy8gRFBJX1ZhbHVlc1RhYmxlSGVhZGVyLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVmFsdWVzVGFibGVIZWFkZXIgPSAndmFsdWVzVGFibGVIZWFkZXInLFxuXG4gIC8vIERQSV9WYWx1ZXNUYWJsZUhlYWRlcjIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBWYWx1ZXNUYWJsZUhlYWRlcjIgPSAndmFsdWVzVGFibGVIZWFkZXIyJyxcblxuICAvLyBEUElfVmFyaWFibGVEZXNjcmlwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFZhcmlhYmxlRGVzY3JpcHRpb24gPSAndmFyaWFibGVEZXNjcmlwdGlvbicsXG5cbiAgLy8gRFBJX1ZhcmlhYmxlRGlzcGxheU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBWYXJpYWJsZURpc3BsYXlOYW1lID0gJ3ZhcmlhYmxlRGlzcGxheU5hbWUnLFxuXG4gIC8vIERQSV9WYXJpYWJsZUdVSUQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBWYXJpYWJsZUdVSUQgPSAndmFyaWFibGVHdWlkJyxcblxuICAvLyBEUElfVmVyYm9zZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBWZXJib3NlTmFtZSA9ICd2ZXJib3NlTmFtZScsXG5cbiAgLy8gRFBJX1ZpZXdJZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFZpZXdJZCA9ICd2aWV3SWQnLFxuXG4gIC8vIERQSV9XYXJuaW5nMSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFdhcm5pbmcxID0gJ3dhcm5pbmcxJyxcblxuICAvLyBEUElfV2FybmluZzIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBXYXJuaW5nMiA9ICd3YXJuaW5nMicsXG5cbiAgLy8gRFBJX1JlZnJlc2hUb2tlbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFJlZnJlc2hUb2tlbiA9ICdyZWZyZXNoX3Rva2VuJyxcblxuICAvLyBEUElfVG9rZW5UeXBlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVG9rZW5UeXBlID0gJ3Rva2VuX3R5cGUnLFxuXG4gIC8vIERQSV9YU1JGVG9rZW4sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBYU1JGVG9rZW4gPSAneHNyZl90b2tlbicsXG5cbiAgLy8gRFBJX0F4aXNTdWJ0aXRsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF4aXNTdWJ0aXRsZSA9ICdheGlzU3VidGl0bGUnLFxuXG4gIC8vIERQSV9BeGlzVGl0bGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBeGlzVGl0bGUgPSAnYXhpc1RpdGxlJyxcblxuICAvLyBEUElfVGlja01hcmtPcmlnaW5EYXRhVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUaWNrTWFya09yaWdpbkRhdGFWYWx1ZSA9ICd0aWNrTWFya09yaWdpbkRhdGFWYWx1ZScsXG5cbiAgLy8gRFBJX1RpY2tNYXJrT3JpZ2luRGF0YVZhbHVlTm9UaW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVGlja01hcmtPcmlnaW5EYXRhVmFsdWVOb1RpbWUgPSAndGlja01hcmtPcmlnaW5EYXRhVmFsdWVOb1RpbWUnLFxuXG4gIC8vIERQSV9UaWNrTWFya1NwYWNpbmdEYXRhVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUaWNrTWFya1NwYWNpbmdEYXRhVmFsdWUgPSAndGlja01hcmtTcGFjaW5nRGF0YVZhbHVlJyxcblxuICAvLyBEUElfRXh0cmFjdEFjdGlvbkxvY2FsaXplZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEV4dHJhY3RBY3Rpb25Mb2NhbGl6ZWQgPSAnZXh0cmFjdEFjdGlvbkxvY2FsaXplZCcsXG5cbiAgLy8gRFBJX0V4dHJhY3RTb3VyY2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBFeHRyYWN0U291cmNlID0gJ2V4dHJhY3RTb3VyY2UnLFxuXG4gIC8vIERQSV9GaWxlQ29udGVudHMsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGaWxlQ29udGVudHMgPSAnZmlsZUNvbnRlbnRzJyxcblxuICAvLyBEUElfU2F2ZUltYWdlUGF0aCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNhdmVJbWFnZVBhdGggPSAnc2F2ZUltYWdlUGF0aCcsXG5cbiAgLy8gRFBJX1dpZGdldFVJRCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFdpZGdldFVJRCA9ICd3aWRnZXRVbmlxdWVJZCcsXG5cbiAgLy8gRFBJX0RhdGVQcm9wZXJ0aWVzRGlzcGxheVRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRlUHJvcGVydGllc0Rpc3BsYXlUZXh0ID0gJ2RhdGVQcm9wZXJ0aWVzRGlzcGxheVRleHQnLFxuXG4gIC8vIERQSV9EYXRlUHJvcGVydGllc0hlbHBlclRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRlUHJvcGVydGllc0hlbHBlclRleHQgPSAnZGF0ZVByb3BlcnRpZXNIZWxwZXJUZXh0JyxcblxuICAvLyBEUElfRXZlbnROYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRXZlbnROYW1lID0gJ2V2ZW50TmFtZScsXG5cbiAgLy8gRFBJX0V4Y2VwdGlvblR5cGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBFeGNlcHRpb25UeXBlID0gJ2V4Y2VwdGlvblR5cGUnLFxuXG4gIC8vIERQSV9TZWFyY2hQbGFjZWhvbGRlciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNlYXJjaFBsYWNlaG9sZGVyID0gJ3NlYXJjaFBsYWNlaG9sZGVyJyxcblxuICAvLyBEUElfVGFyZ2V0VmVyc2lvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRhcmdldFZlcnNpb24gPSAndGFyZ2V0VmVyc2lvbicsXG5cbiAgLy8gRFBJX0RhdGFWYWx1ZURpc3BsYXlTdHJpbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRhVmFsdWVEaXNwbGF5U3RyaW5nID0gJ2RhdGFWYWx1ZURpc3BsYXlTdHJpbmcnLFxuXG4gIC8vIERQSV9Eb21haW5TdHJpbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEb21haW5TdHJpbmcgPSAnZG9tYWluU3RyaW5nJyxcblxuICAvLyBEUElfUmF3RGF0YVZhbHVlU3RyaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUmF3RGF0YVZhbHVlU3RyaW5nID0gJ3Jhd0RhdGFWYWx1ZVN0cmluZycsXG5cbiAgLy8gRFBJX1JpY2hUZXh0RGlhbG9nVGl0bGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBSaWNoVGV4dERpYWxvZ1RpdGxlID0gJ3JpY2hUZXh0RGlhbG9nVGl0bGUnLFxuXG4gIC8vIERQSV9SaWNoVGV4dENvbnRlbnQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBSaWNoVGV4dENvbnRlbnQgPSAncmljaFRleHRDb250ZW50JyxcblxuICAvLyBEUElfTWFya1NpemVBc1N0cmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1hcmtTaXplQXNTdHJpbmcgPSAnbWFya1NpemVBc1N0cmluZycsXG5cbiAgLy8gRFBJX1VuaXRzTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBVbml0c0xhYmVsID0gJ3VuaXRzTGFiZWwnLFxuXG4gIC8vIERQSV9FbWFpbEFkZHJlc3MsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBFbWFpbEFkZHJlc3MgPSAnZW1haWxBZGRyZXNzJyxcblxuICAvLyBEUElfRmlyc3ROYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRmlyc3ROYW1lID0gJ2ZpcnN0TmFtZScsXG5cbiAgLy8gRFBJX0xhc3ROYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTGFzdE5hbWUgPSAnbGFzdE5hbWUnLFxuXG4gIC8vIERQSV9TdW1tYXJ5Q2FyZEF2ZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFN1bW1hcnlDYXJkQXZnID0gJ3N1bW1hcnlDYXJkQXZnJyxcblxuICAvLyBEUElfU3VtbWFyeUNhcmRDYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3VtbWFyeUNhcmRDYXB0aW9uID0gJ3N1bW1hcnlDYXJkQ2FwdGlvbicsXG5cbiAgLy8gRFBJX1N1bW1hcnlDYXJkQ291bnQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTdW1tYXJ5Q2FyZENvdW50ID0gJ3N1bW1hcnlDYXJkQ291bnQnLFxuXG4gIC8vIERQSV9TdW1tYXJ5Q2FyZEt1cnRvc2lzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3VtbWFyeUNhcmRLdXJ0b3NpcyA9ICdzdW1tYXJ5Q2FyZEt1cnRvc2lzJyxcblxuICAvLyBEUElfU3VtbWFyeUNhcmRNYXgsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTdW1tYXJ5Q2FyZE1heCA9ICdzdW1tYXJ5Q2FyZE1heCcsXG5cbiAgLy8gRFBJX1N1bW1hcnlDYXJkTWVkaWFuLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3VtbWFyeUNhcmRNZWRpYW4gPSAnc3VtbWFyeUNhcmRNZWRpYW4nLFxuXG4gIC8vIERQSV9TdW1tYXJ5Q2FyZE1pbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFN1bW1hcnlDYXJkTWluID0gJ3N1bW1hcnlDYXJkTWluJyxcblxuICAvLyBEUElfU3VtbWFyeUNhcmRRdWFydDEsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTdW1tYXJ5Q2FyZFF1YXJ0MSA9ICdzdW1tYXJ5Q2FyZFF1YXJ0MScsXG5cbiAgLy8gRFBJX1N1bW1hcnlDYXJkUXVhcnQzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3VtbWFyeUNhcmRRdWFydDMgPSAnc3VtbWFyeUNhcmRRdWFydDMnLFxuXG4gIC8vIERQSV9TdW1tYXJ5Q2FyZFNrZXduZXNzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3VtbWFyeUNhcmRTa2V3bmVzcyA9ICdzdW1tYXJ5Q2FyZFNrZXduZXNzJyxcblxuICAvLyBEUElfU3VtbWFyeUNhcmRTdGRldiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFN1bW1hcnlDYXJkU3RkZXYgPSAnc3VtbWFyeUNhcmRTdGRldicsXG5cbiAgLy8gRFBJX1N1bW1hcnlDYXJkU3VtLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3VtbWFyeUNhcmRTdW0gPSAnc3VtbWFyeUNhcmRTdW0nLFxuXG4gIC8vIERQSV9WYWx1ZUNsYXNzQXR0ciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFZhbHVlQ2xhc3NBdHRyID0gJ3ZhbHVlQ2xhc3NBdHRyJyxcblxuICAvLyBEUElfVHJlbmRMaW5lRGlhbG9nVGl0bGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUcmVuZExpbmVEaWFsb2dUaXRsZSA9ICd0cmVuZExpbmVEaWFsb2dUaXRsZScsXG5cbiAgLy8gRFBJX0xpbmVhckZpdFR5cGVMYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIExpbmVhckZpdFR5cGVMYWJlbCA9ICdsaW5lYXJGaXRUeXBlTGFiZWwnLFxuXG4gIC8vIERQSV9Mb2dGaXRUeXBlTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBMb2dGaXRUeXBlTGFiZWwgPSAnbG9nRml0VHlwZUxhYmVsJyxcblxuICAvLyBEUElfRXhwRml0VHlwZUxhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRXhwRml0VHlwZUxhYmVsID0gJ2V4cEZpdFR5cGVMYWJlbCcsXG5cbiAgLy8gRFBJX1Bvd2VyRml0VHlwZUxhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUG93ZXJGaXRUeXBlTGFiZWwgPSAncG93ZXJGaXRUeXBlTGFiZWwnLFxuXG4gIC8vIERQSV9Qb2x5bm9taWFsRml0VHlwZUxhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUG9seW5vbWlhbEZpdFR5cGVMYWJlbCA9ICdwb2x5bm9taWFsRml0VHlwZUxhYmVsJyxcblxuICAvLyBEUElfRXhjbHVkZUNvbG9yTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBFeGNsdWRlQ29sb3JMYWJlbCA9ICdleGNsdWRlQ29sb3JMYWJlbCcsXG5cbiAgLy8gRFBJX0VuYWJsZUNvbmZpZGVuY2VCYW5kc0xhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRW5hYmxlQ29uZmlkZW5jZUJhbmRzTGFiZWwgPSAnZW5hYmxlQ29uZmlkZW5jZUJhbmRzTGFiZWwnLFxuXG4gIC8vIERQSV9Gb3JjZUludGVyY2VwdFplcm9MYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZvcmNlSW50ZXJjZXB0WmVyb0xhYmVsID0gJ2ZvcmNlSW50ZXJjZXB0WmVybyBsYWJlbCcsXG5cbiAgLy8gRFBJX0VuYWJsZUluc3RhbnRBbmFseXRpY3NMYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEVuYWJsZUluc3RhbnRBbmFseXRpY3NMYWJlbCA9ICdlbmFibGVJbnN0YW50QW5hbHl0aWNzTGFiZWwnLFxuXG4gIC8vIERQSV9FbmFibGVUb29sdGlwc0xhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRW5hYmxlVG9vbHRpcHNMYWJlbCA9ICdlbmFibGVUb29sdGlwTGFiZWwnLFxuXG4gIC8vIERQSV9BdXRoZW50aWNhdGlvblN1bW1hcnksIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBdXRoZW50aWNhdGlvblN1bW1hcnkgPSAnYXV0aGVudGljYXRpb25TdW1tYXJ5JyxcblxuICAvLyBEUElfQnRuQ2FuY2VsVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEJ0bkNhbmNlbFRleHQgPSAnYnRuQ2FuY2VsVGV4dCcsXG5cbiAgLy8gRFBJX0J0bk9rVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEJ0bk9rVGV4dCA9ICdidG5Pa1RleHQnLFxuXG4gIC8vIERQSV9CdXR0b25UZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQnV0dG9uVGV4dCA9ICdidXR0b25UZXh0JyxcblxuICAvLyBEUElfQ2FsY3VsYXRpb25DYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ2FsY3VsYXRpb25DYXB0aW9uID0gJ2NhbGN1bGF0aW9uQ2FwdGlvbicsXG5cbiAgLy8gRFBJX0NhbGN1bGF0aW9uRGVwZW5kZW5jaWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ2FsY3VsYXRpb25EZXBlbmRlbmNpZXMgPSAnY2FsY3VsYXRpb25EZXBlbmRlbmNpZXMnLFxuXG4gIC8vIERQSV9DYWxjdWxhdGlvbkZvcm11bGEsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDYWxjdWxhdGlvbkZvcm11bGEgPSAnY2FsY3VsYXRpb25Gb3JtdWxhJyxcblxuICAvLyBEUElfQ2hlY2tQdWJsaXNoTWVzc2FnZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENoZWNrUHVibGlzaE1lc3NhZ2UgPSAnY2hlY2tQdWJsaXNoU3VtbWFyeScsXG5cbiAgLy8gRFBJX0NsdXN0ZXJNb2RlbFRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDbHVzdGVyTW9kZWxUZXh0ID0gJ2NsdXN0ZXJNb2RlbFRleHQnLFxuXG4gIC8vIERQSV9DbHVzdGVyU3VtbWFyeVNjYWxlZFRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDbHVzdGVyU3VtbWFyeVNjYWxlZFRleHQgPSAnY2x1c3RlclN1bW1hcnlTY2FsZWRUZXh0JyxcblxuICAvLyBEUElfQ2x1c3RlclN1bW1hcnlUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ2x1c3RlclN1bW1hcnlUZXh0ID0gJ2NsdXN0ZXJTdW1tYXJ5VGV4dCcsXG5cbiAgLy8gRFBJX0NvbHVtbkNhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDb2x1bW5DYXB0aW9uID0gJ2NvbHVtbkNhcHRpb24nLFxuXG4gIC8vIERQSV9EYXRhc291cmNlQ2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGFzb3VyY2VDYXB0aW9uID0gJ2RhdGFzb3VyY2VDYXB0aW9uJyxcblxuICAvLyBEUElfRGVmYXVsdENhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEZWZhdWx0Q2FwdGlvbiA9ICdkZWZhdWx0Q2FwdGlvbicsXG5cbiAgLy8gRFBJX0Rpc3BsYXlTdHJpbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEaXNwbGF5U3RyaW5nID0gJ2Rpc3BsYXlUZXh0JyxcblxuICAvLyBEUElfRHJhZ0Rlc2NyaXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRHJhZ0Rlc2NyaXB0aW9uID0gJ2RyYWdEZXNjcmlwdGlvbicsXG5cbiAgLy8gRFBJX0V4Y2VwdGlvbk1lc3NhZ2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBFeGNlcHRpb25NZXNzYWdlID0gJ2V4Y2VwdGlvbk1lc3NhZ2UnLFxuXG4gIC8vIERQSV9FeHBsYW5hdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEV4cGxhbmF0aW9uID0gJ2V4cGxhbmF0aW9uJyxcblxuICAvLyBEUElfRmllbGRDYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRmllbGRDYXB0aW9uID0gJ2ZpZWxkQ2FwdGlvbicsXG5cbiAgLy8gRFBJX0ZpZWxkU3VtbWFyeSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZpZWxkU3VtbWFyeSA9ICdmaWVsZFN1bW1hcnknLFxuXG4gIC8vIERQSV9GaWVsZFN1bW1hcnlMYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZpZWxkU3VtbWFyeUxhYmVsID0gJ2ZpZWxkU3VtbWFyeUxhYmVsJyxcblxuICAvLyBEUElfRmlsdGVyRGVzY3JpcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGaWx0ZXJEZXNjcmlwdGlvbiA9ICdmaWx0ZXJEZXNjcmlwdGlvbicsXG5cbiAgLy8gRFBJX0ZpbHRlck5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGaWx0ZXJOYW1lID0gJ2ZpbHRlck5hbWUnLFxuXG4gIC8vIERQSV9Gb3JlY2FzdE1vZGVsVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZvcmVjYXN0TW9kZWxUZXh0ID0gJ2ZvcmVjYXN0TW9kZWxUZXh0JyxcblxuICAvLyBEUElfRm9yZWNhc3RTdW1tYXJ5UGN0VGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZvcmVjYXN0U3VtbWFyeVBjdFRleHQgPSAnZm9yZWNhc3RTdW1tYXJ5UGN0VGV4dCcsXG5cbiAgLy8gRFBJX0ZvcmVjYXN0U3VtbWFyeVRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGb3JlY2FzdFN1bW1hcnlUZXh0ID0gJ2ZvcmVjYXN0U3VtbWFyeVRleHQnLFxuXG4gIC8vIERQSV9IYXNBY3RpdmVFeHRyYWN0VGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEhhc0FjdGl2ZUV4dHJhY3RUZXh0ID0gJ2hhc0FjdGl2ZUV4dHJhY3RUZXh0JyxcblxuICAvLyBEUElfSHRtbENvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSHRtbENvbG9yID0gJ2h0bWxDb2xvcicsXG5cbiAgLy8gRFBJX0luY2x1ZGVMb2NhbEZpbGVzQ2hlY2tlZFdhcm5pbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBJbmNsdWRlTG9jYWxGaWxlc0NoZWNrZWRXYXJuaW5nID0gJ2luY2x1ZGVMb2NhbEZpbGVzQ2hlY2tlZFdhcm5pbmcnLFxuXG4gIC8vIERQSV9JbmNsdWRlTG9jYWxGaWxlc1dhcm5pbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBJbmNsdWRlTG9jYWxGaWxlc1dhcm5pbmcgPSAnaW5jbHVkZUxvY2FsRmlsZXNXYXJuaW5nJyxcblxuICAvLyBEUElfSW52YWxpZEZpZWxkQ2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEludmFsaWRGaWVsZENhcHRpb24gPSAnaW52YWxpZEZpZWxkQ2FwdGlvbicsXG5cbiAgLy8gRFBJX0xpbWl0U3VtbWFyeSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIExpbWl0U3VtbWFyeSA9ICdsaW1pdFN1bW1hcnknLFxuXG4gIC8vIERQSV9Mb2FkZWRFeGlzdGluZ09iamVjdFdhcm5pbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBMb2FkZWRFeGlzdGluZ09iamVjdFdhcm5pbmcgPSAnbG9hZGVkRXhpc3RpbmdPYmplY3RXYXJuaW5nJyxcblxuICAvLyBEUElfTWFuYWdlRGF0YXNvdXJjZXNTdW1tYXJ5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTWFuYWdlRGF0YXNvdXJjZXNTdW1tYXJ5ID0gJ21hbmFnZURhdGFzb3VyY2VzU3VtbWFyeScsXG5cbiAgLy8gRFBJX01vZGFsRGlhbG9nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTW9kYWxEaWFsb2cgPSAnbW9kYWxEaWFsb2cnLFxuXG4gIC8vIERQSV9OZXdEYXRhc291cmNlQ2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE5ld0RhdGFzb3VyY2VDYXB0aW9uID0gJ25ld0RhdGFzb3VyY2VDYXB0aW9uJyxcblxuICAvLyBEUElfUGVybWlzc2lvbnNCdXR0b25MYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFBlcm1pc3Npb25zQnV0dG9uTGFiZWwgPSAncGVybWlzc2lvbnNCdXR0b25MYWJlbCcsXG5cbiAgLy8gRFBJX1Blcm1pc3Npb25zRWRpdG9yUm9sZUlkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGVybWlzc2lvbnNFZGl0b3JSb2xlSWQgPSAncGVybWlzc2lvbnNFZGl0b3JSb2xlSWQnLFxuXG4gIC8vIERQSV9QZXJtaXNzaW9uc0xhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGVybWlzc2lvbnNMYWJlbCA9ICdwZXJtaXNzaW9uc0xhYmVsJyxcblxuICAvLyBEUElfUGVyc3BlY3RpdmVDYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGVyc3BlY3RpdmVDYXB0aW9uID0gJ3BlcnNwZWN0aXZlQ2FwdGlvbicsXG5cbiAgLy8gRFBJX1B1Ymxpc2hCdXR0b25MYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFB1Ymxpc2hCdXR0b25MYWJlbCA9ICdwdWJsaXNoQnV0dG9uTGFiZWwnLFxuXG4gIC8vIERQSV9QdWJsaXNoQ2hvaWNlTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBQdWJsaXNoQ2hvaWNlTGFiZWwgPSAncHVibGlzaENob2ljZUxhYmVsJyxcblxuICAvLyBEUElfUHVibGlzaE9iamVjdFZpZXdzU3VtbWFyeSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFB1Ymxpc2hPYmplY3RWaWV3c1N1bW1hcnkgPSAncHVibGlzaE9iamVjdFZpZXdzU3VtbWFyeScsXG5cbiAgLy8gRFBJX1F1YWxpZmllZEZpZWxkQ2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFF1YWxpZmllZEZpZWxkQ2FwdGlvbiA9ICdxdWFsaWZpZWRGaWVsZENhcHRpb24nLFxuXG4gIC8vIERQSV9SZWxhdGlvbnNoaXBUb29sdGlwVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFJlbGF0aW9uc2hpcFRvb2x0aXBUZXh0ID0gJ3JlbGF0aW9uc2hpcFRvb2x0aXBUZXh0JyxcblxuICAvLyBEUElfUmVzZXRPYmplY3RBdHRyaWJ1dGVzV2FybmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFJlc2V0T2JqZWN0QXR0cmlidXRlc1dhcm5pbmcgPSAncmVzZXRPYmplY3RBdHRyaWJ1dGVzV2FybmluZycsXG5cbiAgLy8gRFBJX1Jvd0NvdW50Q2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFJvd0NvdW50Q2FwdGlvbiA9ICdyb3dDb3VudENhcHRpb24nLFxuXG4gIC8vIERQSV9TZXJ2ZXJDYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU2VydmVyQ2FwdGlvbiA9ICdzZXJ2ZXJDYXB0aW9uJyxcblxuICAvLyBEUElfU2l6ZU1vZGVOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU2l6ZU1vZGVOYW1lID0gJ3NpemVNb2RlTmFtZScsXG5cbiAgLy8gRFBJX1N1bW1hcnlUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3VtbWFyeVRleHQgPSAnc3VtbWFyeVRleHQnLFxuXG4gIC8vIERQSV9TeW5jQ2xpZW50VXNlRXh0cmFjdExhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3luY0NsaWVudFVzZUV4dHJhY3RMYWJlbCA9ICdzeW5jQ2xpZW50VXNlRXh0cmFjdExhYmVsJyxcblxuICAvLyBEUElfVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRleHQgPSAndGV4dCcsXG5cbiAgLy8gRFBJX1RleHREcm9wZG93bkNvbnRyb2xMYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRleHREcm9wZG93bkNvbnRyb2xMYWJlbCA9ICdjb250cm9sTGFiZWwnLFxuXG4gIC8vIERQSV9UaHVtYm5haWxVc2VyTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRodW1ibmFpbFVzZXJOYW1lID0gJ3RodW1ibmFpbFVzZXJOYW1lJyxcblxuICAvLyBEUElfVGl0bGVTdHJpbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUaXRsZVN0cmluZyA9ICd0aXRsZVN0cmluZycsXG5cbiAgLy8gRFBJX1Rvb2x0aXBUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVG9vbHRpcFRleHQgPSAndG9vbHRpcFRleHQnLFxuXG4gIC8vIERQSV9VcGRhdGVkQ2FsY0NhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBVcGRhdGVkQ2FsY0NhcHRpb24gPSAndXBkYXRlZENhbGN1bGF0aW9uQ2FwdGlvbicsXG5cbiAgLy8gRFBJX1VwZGF0ZWRDYWxjRm9ybXVsYSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFVwZGF0ZWRDYWxjRm9ybXVsYSA9ICd1cGRhdGVkQ2FsY3VsYXRpb25Gb3JtdWxhJyxcblxuICAvLyBEUElfVXNlckNhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBVc2VyQ2FwdGlvbiA9ICd1c2VyQ2FwdGlvbicsXG5cbiAgLy8gRFBJX1dhcm5pbmdUb29sdGlwVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFdhcm5pbmdUb29sdGlwVGV4dCA9ICd3YXJuaW5nVG9vbHRpcFRleHQnLFxuXG4gIC8vIERQSV9EYXRhc291cmNlRmlsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGFzb3VyY2VGaWxlID0gJ2RhdGFzb3VyY2VGaWxlJyxcblxuICAvLyBEUElfRmlsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZpbGUgPSAnZmlsZScsXG5cbiAgLy8gRFBJX0ZpbGVOYW1lQmFzZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZpbGVOYW1lQmFzZSA9ICdmaWxlbmFtZUJhc2UnLFxuXG4gIC8vIERQSV9OZXdGaWxlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTmV3RmlsZSA9ICduZXdGaWxlJyxcblxuICAvLyBEUElfT3JpZ2luYWxGaWxlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgT3JpZ2luYWxGaWxlID0gJ29yaWdpbmFsRmlsZScsXG5cbiAgLy8gRFBJX091dHB1dEZpbGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBPdXRwdXRGaWxlID0gJ291dHB1dEZpbGUnLFxuXG4gIC8vIERQSV9TYW1wbGVGaWxlTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNhbXBsZUZpbGVOYW1lID0gJ3NhbXBsZUZpbGVuYW1lJyxcblxuICAvLyBEUElfV29ya2Jvb2tGaWxlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgV29ya2Jvb2tGaWxlID0gJ3dvcmtib29rRmlsZScsXG5cbiAgLy8gRFBJX0ltYWdlS2V5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSW1hZ2VLZXkgPSAnaW1hZ2VLZXknLFxuXG4gIC8vIERQSV9PdmVybGF5SW1hZ2VLZXksIGhhdmluZyB0eXBlIHN0cmluZ1xuICBPdmVybGF5SW1hZ2VLZXkgPSAnb3ZlcmxheUltYWdlS2V5JyxcblxuICAvLyBEUElfVGVtcEZpbGVLZXksIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUZW1wRmlsZUtleSA9ICd0ZW1wZmlsZUtleScsXG5cbiAgLy8gRFBJX0NhcHR1cmVkU2hlZXQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDYXB0dXJlZFNoZWV0ID0gJ2NhcHR1cmVkU2hlZXQnLFxuXG4gIC8vIERQSV9DdXJyZW50U2hlZXQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDdXJyZW50U2hlZXQgPSAnY3VycmVudFNoZWV0JyxcblxuICAvLyBEUElfRGFzaGJvYXJkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGFzaGJvYXJkID0gJ2Rhc2hib2FyZCcsXG5cbiAgLy8gRFBJX0Vuc3VyZVNoZWV0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRW5zdXJlU2hlZXQgPSAnZW5zdXJlU2hlZXROYW1lJyxcblxuICAvLyBEUElfTmV3U2hlZXQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBOZXdTaGVldCA9ICduZXdTaGVldCcsXG5cbiAgLy8gRFBJX1NoZWV0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU2hlZXQgPSAnc2hlZXQnLFxuXG4gIC8vIERQSV9TaGVldE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTaGVldE5hbWUgPSAnc2hlZXROYW1lJyxcblxuICAvLyBEUElfU291cmNlRGFzaGJvYXJkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU291cmNlRGFzaGJvYXJkID0gJ3NvdXJjZURhc2hib2FyZCcsXG5cbiAgLy8gRFBJX1NvdXJjZVNoZWV0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU291cmNlU2hlZXQgPSAnc291cmNlU2hlZXQnLFxuXG4gIC8vIERQSV9UYXJnZXRTaGVldCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRhcmdldFNoZWV0ID0gJ3RhcmdldFNoZWV0JyxcblxuICAvLyBEUElfV29ya2Jvb2tOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgV29ya2Jvb2tOYW1lID0gJ3dvcmtib29rTmFtZScsXG5cbiAgLy8gRFBJX1dvcmtzaGVldCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFdvcmtzaGVldCA9ICd3b3Jrc2hlZXQnLFxuXG4gIC8vIERQSV9CYXNlVmlld1RodW1iTGluaywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEJhc2VWaWV3VGh1bWJMaW5rID0gJ2Jhc2VWaWV3VGh1bWJMaW5rJyxcblxuICAvLyBEUElfQmxvZ0xpbmssIGhhdmluZyB0eXBlIHN0cmluZ1xuICBCbG9nTGluayA9ICdibG9nTGluaycsXG5cbiAgLy8gRFBJX0NhY2hlVXJsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ2FjaGVVcmwgPSAnY2FjaGVVcmwnLFxuXG4gIC8vIERQSV9Eb3dubG9hZExpbmssIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEb3dubG9hZExpbmsgPSAnZG93bmxvYWRMaW5rJyxcblxuICAvLyBEUElfUmVwb3NpdG9yeVVybCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFJlcG9zaXRvcnlVcmwgPSAncmVwb3NpdG9yeVVybCcsXG5cbiAgLy8gRFBJX1NoYXJlTGluaywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNoYXJlTGluayA9ICdzaGFyZUxpbmsnLFxuXG4gIC8vIERQSV9VUkwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBVUkwgPSAndXJsJyxcblxuICAvLyBEUElfQ2x1c3Rlck1vZGVsSHRtbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENsdXN0ZXJNb2RlbEh0bWwgPSAnY2x1c3Rlck1vZGVsSHRtbCcsXG5cbiAgLy8gRFBJX0NsdXN0ZXJTdW1tYXJ5SHRtbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENsdXN0ZXJTdW1tYXJ5SHRtbCA9ICdjbHVzdGVyU3VtbWFyeUh0bWwnLFxuXG4gIC8vIERQSV9DbHVzdGVyU3VtbWFyeVNjYWxlZEh0bWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDbHVzdGVyU3VtbWFyeVNjYWxlZEh0bWwgPSAnY2x1c3RlclN1bW1hcnlTY2FsZWRIdG1sJyxcblxuICAvLyBEUElfRmllbGREZXNjcmlwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZpZWxkRGVzY3JpcHRpb24gPSAnZmllbGREZXNjcmlwdGlvbicsXG5cbiAgLy8gRFBJX0ZvcmVjYXN0TW9kZWxIdG1sLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRm9yZWNhc3RNb2RlbEh0bWwgPSAnZm9yZWNhc3RNb2RlbEh0bWwnLFxuXG4gIC8vIERQSV9Gb3JlY2FzdFN1bW1hcnlIdG1sLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRm9yZWNhc3RTdW1tYXJ5SHRtbCA9ICdmb3JlY2FzdFN1bW1hcnlIdG1sJyxcblxuICAvLyBEUElfRm9yZWNhc3RTdW1tYXJ5UGN0SHRtbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZvcmVjYXN0U3VtbWFyeVBjdEh0bWwgPSAnZm9yZWNhc3RTdW1tYXJ5UGN0SHRtbCcsXG5cbiAgLy8gRFBJX0h0bWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBIdG1sID0gJ2h0bWwnLFxuXG4gIC8vIERQSV9IdG1sU2VsZWN0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSHRtbFNlbGVjdGlvbiA9ICdodG1sU2VsZWN0aW9uJyxcblxuICAvLyBEUElfSHRtbFRvb2x0aXAsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBIdG1sVG9vbHRpcCA9ICdodG1sVG9vbHRpcCcsXG5cbiAgLy8gRFBJX0h0bWxUb29sdGlwTW9kaWZpZWQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBIdG1sVG9vbHRpcE1vZGlmaWVkID0gJ2h0bWxUb29sdGlwTW9kaWZpZWQnLFxuXG4gIC8vIERQSV9UaXRsZUh0bWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUaXRsZUh0bWwgPSAndGl0bGVIdG1sJyxcblxuICAvLyBEUElfQ2FjaGVVcmxJbmZvSnNvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENhY2hlVXJsSW5mb0pzb24gPSAnY2FjaGVVcmxJbmZvSnNvbicsXG5cbiAgLy8gRFBJX0ZpbHRlclNlYXJjaEpzb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGaWx0ZXJTZWFyY2hKc29uID0gJ2ZpbHRlclNlYXJjaEpzb24nLFxuXG4gIC8vIERQSV9GaWx0ZXJTZWFyY2hXaXRoSW5kZXhKc29uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRmlsdGVyU2VhcmNoV2l0aEluZGV4SnNvbiA9ICdmaWx0ZXJTZWFyY2hXaXRoSW5kZXhKc29uJyxcblxuICAvLyBEUElfRmlsdGVyU2hvd0NoaWxkcmVuSnNvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZpbHRlclNob3dDaGlsZHJlbkpzb24gPSAnZmlsdGVyU2hvd0NoaWxkcmVuSnNvbicsXG5cbiAgLy8gRFBJX0ZpbHRlcnNKc29uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRmlsdGVyc0pzb24gPSAnZmlsdGVyc0pzb24nLFxuXG4gIC8vIERQSV9GcmFtZUpzb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGcmFtZUpzb24gPSAnZnJhbWVKc29uJyxcblxuICAvLyBEUElfR2VvbWV0cnlKc29uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgR2VvbWV0cnlKc29uID0gJ2dlb21ldHJ5SnNvbicsXG5cbiAgLy8gRFBJX0dldEZpbHRlckl0ZW1zSnNvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEdldEZpbHRlckl0ZW1zSnNvbiA9ICdnZXRGaWx0ZXJJdGVtc0pzb24nLFxuXG4gIC8vIERQSV9LZWVwT25seVJlc3BvbnNlSnNvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEtlZXBPbmx5UmVzcG9uc2VKc29uID0gJ2tlZXBPbmx5UmVzcG9uc2VKc29uJyxcblxuICAvLyBEUElfTWVudUNvbW1hbmRzSnNvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1lbnVDb21tYW5kc0pzb24gPSAnbWVudUNvbW1hbmRzSnNvbicsXG5cbiAgLy8gRFBJX01vZGlmaWVkU2hlZXRzSnNvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1vZGlmaWVkU2hlZXRzSnNvbiA9ICdtb2RpZmllZFNoZWV0c0pzb24nLFxuXG4gIC8vIERQSV9QYXJhbWV0ZXJDdHJsSnNvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFBhcmFtZXRlckN0cmxKc29uID0gJ3BhcmFtZXRlckN0cmxKc29uJyxcblxuICAvLyBEUElfVmlld0pzb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBWaWV3SnNvbiA9ICd2aWV3SnNvbicsXG5cbiAgLy8gRFBJX0N1c3RvbWl6ZWRWaWV3WE1MLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ3VzdG9taXplZFZpZXdYTUwgPSAnY3VzdG9taXplZFZpZXdYbWwnLFxuXG4gIC8vIERQSV9EYXRhc291cmNlRGVsdGFYTUwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRhc291cmNlRGVsdGFYTUwgPSAnZGF0YXNvdXJjZURlbHRhWG1sJyxcblxuICAvLyBEUElfRGF0YXNvdXJjZVhNTCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGFzb3VyY2VYTUwgPSAnZGF0YXNvdXJjZVhtbCcsXG5cbiAgLy8gRFBJX0tleWNoYWluWE1MLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgS2V5Y2hhaW5YTUwgPSAna2V5Y2hhaW5YbWwnLFxuXG4gIC8vIERQSV9QZXJtaXNzaW9uc01vZGVsWE1MLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGVybWlzc2lvbnNNb2RlbFhNTCA9ICdwZXJtaXNzaW9uc01vZGVsWG1sJyxcblxuICAvLyBEUElfU2hhcmVkVmlld3NYTUwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTaGFyZWRWaWV3c1hNTCA9ICdzaGFyZWRWaWV3c1htbCcsXG5cbiAgLy8gRFBJX1RhcmdldFVSTCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRhcmdldFVSTCA9ICd0YXJnZXRVcmwnLFxuXG4gIC8vIERQSV9BbmNob3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBbmNob3IgPSAnYW5jaG9yJyxcblxuICAvLyBEUElfQ2VudGVyVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDZW50ZXJWYWx1ZSA9ICdjZW50ZXJWYWx1ZScsXG5cbiAgLy8gRFBJX0NvbXB1dGVkQmluU2l6ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENvbXB1dGVkQmluU2l6ZSA9ICdjb21wdXRlZEJpblNpemUnLFxuXG4gIC8vIERQSV9Db25zdGFudFZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ29uc3RhbnRWYWx1ZSA9ICdjb25zdGFudFZhbHVlJyxcblxuICAvLyBEUElfUGFpcmVkQ29uc3RhbnRWYWx1ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFBhaXJlZENvbnN0YW50VmFsdWUgPSAncGFpcmVkQ29uc3RhbnRWYWx1ZScsXG5cbiAgLy8gRFBJX0NvdW50RGlzdGluY3QsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDb3VudERpc3RpbmN0ID0gJ2NvdW50RGlzdGluY3QnLFxuXG4gIC8vIERQSV9EYXRhTWF4LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGF0YU1heCA9ICdkYXRhTWF4JyxcblxuICAvLyBEUElfRGF0YU1pbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGFNaW4gPSAnZGF0YU1pbicsXG5cbiAgLy8gRFBJX0RhdGFWYWx1ZVN0cmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGFWYWx1ZVN0cmluZyA9ICdkYXRhVmFsdWVTdHInLFxuXG4gIC8vIERQSV9FbmRWYWx1ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEVuZFZhbHVlID0gJ2VuZFZhbHVlJyxcblxuICAvLyBEUElfUmFuZ2VNYXgsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBSYW5nZU1heCA9ICdyYW5nZU1heCcsXG5cbiAgLy8gRFBJX1JhbmdlTWluLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUmFuZ2VNaW4gPSAncmFuZ2VNaW4nLFxuXG4gIC8vIERQSV9SYW5nZVN0ZXBTaXplLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUmFuZ2VTdGVwU2l6ZSA9ICdyYW5nZVN0ZXBTaXplJyxcblxuICAvLyBEUElfU3RhcnRWYWx1ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFN0YXJ0VmFsdWUgPSAnc3RhcnRWYWx1ZScsXG5cbiAgLy8gRFBJX1RhcmdldFZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVGFyZ2V0VmFsdWUgPSAndGFyZ2V0VmFsdWUnLFxuXG4gIC8vIERQSV9WYWx1ZUluYywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFZhbHVlSW5jID0gJ3ZhbHVlSW5jJyxcblxuICAvLyBEUElfVmFsdWVNYXgsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBWYWx1ZU1heCA9ICd2YWx1ZU1heCcsXG5cbiAgLy8gRFBJX1ZhbHVlTWluLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVmFsdWVNaW4gPSAndmFsdWVNaW4nLFxuXG4gIC8vIERQSV9RdWFudGlsZXNWYWx1ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFF1YW50aWxlc1ZhbHVlID0gJ3F1YW50aWxlc1ZhbHVlJyxcblxuICAvLyBEUElfVXNlcklucHV0QmluU2l6ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFVzZXJJbnB1dEJpblNpemUgPSAndXNlckJpblNpemUnLFxuXG4gIC8vIERQSV9BZGRlZERhdGFTb3VyY2VzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBBZGRlZERhdGFTb3VyY2VzID0gJ2FkZGVkRGF0YVNvdXJjZU5hbWVzJyxcblxuICAvLyBEUElfQWRkcmVzc2luZ0NhcHRpb25zLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBBZGRyZXNzaW5nQ2FwdGlvbnMgPSAnYWRkcmVzc2luZ0NhcHRpb25zJyxcblxuICAvLyBEUElfQWdncmVnYXRpb25DYXB0aW9ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgQWdncmVnYXRpb25DYXB0aW9ucyA9ICdhZ2dyZWdhdGlvbkNhcHRpb25zJyxcblxuICAvLyBEUElfQXRUaGVMZXZlbENhcHRpb25zLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBBdFRoZUxldmVsQ2FwdGlvbnMgPSAnYXRUaGVMZXZlbENhcHRpb25zJyxcblxuICAvLyBEUElfQXV0aGVudGljYXRpb25TZXR0aW5nTGFiZWxzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBBdXRoZW50aWNhdGlvblNldHRpbmdMYWJlbHMgPSAnYXV0aGVudGljYXRpb25TZXR0aW5nTGFiZWxzJyxcblxuICAvLyBEUElfQXV0b3NhdmVGaWxlSWRzVmVjdG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBBdXRvc2F2ZUZpbGVJZHNWZWN0b3IgPSAnYXV0b3NhdmVGaWxlSWRzVmVjdG9yJyxcblxuICAvLyBEUElfQ2hhbmdlZFR1cGxlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgQ2hhbmdlZFR1cGxlcyA9ICdjaGFuZ2VkVHVwbGVzJyxcblxuICAvLyBEUElfQ2hhcnNldHNBdmFpbGFibGUsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIENoYXJzZXRzQXZhaWxhYmxlID0gJ2NoYXJzZXRzQXZhaWxhYmxlJyxcblxuICAvLyBEUElfQ2hhcnNldERpc3BsYXlOYW1lcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgQ2hhcnNldERpc3BsYXlOYW1lcyA9ICdjaGFyc2V0RGlzcGxheU5hbWVzJyxcblxuICAvLyBEUElfQ29sb3JGYWN0b3JzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBDb2xvckZhY3RvcnMgPSAnY29sb3JGYWN0b3JzJyxcblxuICAvLyBEUElfQ29sdW1uRnVsbE5hbWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBDb2x1bW5GdWxsTmFtZXMgPSAnY29sdW1uRnVsbE5hbWVzJyxcblxuICAvLyBEUElfQ29ubmVjdGlvbk5hbWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBDb25uZWN0aW9uTmFtZXMgPSAnY29ubmVjdGlvbk5hbWVzJyxcblxuICAvLyBEUElfQ29ubmVjdGlvbkNhcHRpb25zLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBDb25uZWN0aW9uQ2FwdGlvbnMgPSAnY29ubmVjdGlvbkNhcHRpb25zJyxcblxuICAvLyBEUElfQ29ubmVjdGlvbkJpZ1F1ZXJ5TGVnYWN5U1FMQ2hlY2tCb3gsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIENvbm5lY3Rpb25CaWdRdWVyeUxlZ2FjeVNRTENoZWNrQm94ID0gJ2Nvbm5lY3Rpb25CaWdxdWVyeUxlZ2FjeVNxbENoZWNrYm94JyxcblxuICAvLyBEUElfQ3VzdG9tRmllbGRPcmRlciwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgQ3VzdG9tRmllbGRPcmRlciA9ICdjdXN0b21GaWVsZE9yZGVyJyxcblxuICAvLyBEUElfRGF0YVNvdXJjZUNsYXNzZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIERhdGFTb3VyY2VDbGFzc2VzID0gJ2RhdGFTb3VyY2VDbGFzc2VzJyxcblxuICAvLyBEUElfRGF0YVNvdXJjZU5hbWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBEYXRhU291cmNlTmFtZXMgPSAnZGF0YVNvdXJjZU5hbWVzJyxcblxuICAvLyBEUElfRGF0YVNvdXJjZU5hbWVzMiwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgRGF0YVNvdXJjZU5hbWVzMiA9ICdkYXRhU291cmNlTmFtZXMyJyxcblxuICAvLyBEUElfRGF0YVNvdXJjZXNXaXRoRW1wdHlSZWxhdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgRGF0YVNvdXJjZXNXaXRoRW1wdHlSZWxhdGlvbiA9ICdkYXRhU291cmNlc1dpdGhFbXB0eVJlbGF0aW9uJyxcblxuICAvLyBEUElfRGF0ZUZvcm1hdHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIERhdGVGb3JtYXRzID0gJ2RhdGVGb3JtYXRzJyxcblxuICAvLyBEUElfRGF5TmFtZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIERheU5hbWVzID0gJ2RheU5hbWVzJyxcblxuICAvLyBEUElfRHJpbGxQYXRoVmVjdG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBEcmlsbFBhdGhWZWN0b3IgPSAnZHJpbGxwYXRoVmVjdG9yJyxcblxuICAvLyBEUElfRXJyb3JEZXRhaWxzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBFcnJvckRldGFpbHMgPSAnZXJyb3JEZXRhaWxzJyxcblxuICAvLyBEUElfRXhjZXB0aW9uTWVzc2FnZVBhcmFtcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgRXhjZXB0aW9uTWVzc2FnZVBhcmFtcyA9ICdleGNlcHRpb25NZXNzYWdlUGFyYW1zJyxcblxuICAvLyBEUElfRXhjbHVkZWRTaGVldHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEV4Y2x1ZGVkU2hlZXRzID0gJ2V4Y2x1ZGVTaGVldHMnLFxuXG4gIC8vIERQSV9GaWVsZERpc3BsYXlOYW1lcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgRmllbGREaXNwbGF5TmFtZXMgPSAnZmllbGREaXNwbGF5TmFtZXMnLFxuXG4gIC8vIERQSV9GaWVsZEZvbGRlclZlY3RvciwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgRmllbGRGb2xkZXJWZWN0b3IgPSAnZmllbGRGb2xkZXJWZWN0b3InLFxuXG4gIC8vIERQSV9GaWxlSWRzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBGaWxlSWRzID0gJ2ZpbGVJZHMnLFxuXG4gIC8vIERQSV9GaWxlUGF0aHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEZpbGVQYXRocyA9ICdmaWxlUGF0aHMnLFxuXG4gIC8vIERQSV9GaWxlTmFtZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEZpbGVOYW1lcyA9ICdmaWxlTmFtZXMnLFxuXG4gIC8vIERQSV9GaWx0ZXJBZGQsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEZpbHRlckFkZCA9ICdmaWx0ZXJBZGQnLFxuXG4gIC8vIERQSV9GaWx0ZXJBbGlhc2VzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBGaWx0ZXJBbGlhc2VzID0gJ2ZpbHRlclZhbHVlcycsXG5cbiAgLy8gRFBJX0ZpbHRlclJlbW92ZSwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgRmlsdGVyUmVtb3ZlID0gJ2ZpbHRlclJlbW92ZScsXG5cbiAgLy8gRFBJX0ZpeGVkQ2FwdGlvbnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEZpeGVkQ2FwdGlvbnMgPSAnZml4ZWRDYXB0aW9ucycsXG5cbiAgLy8gRFBJX0ZvbnRGYW1pbGllcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgRm9udEZhbWlsaWVzID0gJ2ZvbnRGYW1pbGllcycsXG5cbiAgLy8gRFBJX0Zvcm1hdFN0cmluZ3MsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEZvcm1hdFN0cmluZ3MgPSAnZm9ybWF0U3RyaW5ncycsXG5cbiAgLy8gRFBJX0Zvcm1hdHRlZFZhbHVlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgRm9ybWF0dGVkVmFsdWVzID0gJ2Zvcm1hdHRlZFZhbHVlcycsXG5cbiAgLy8gRFBJX0ZvdW5kVHVwbGVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBGb3VuZFR1cGxlcyA9ICdmb3VuZFR1cGxlcycsXG5cbiAgLy8gRFBJX0Z1bGxTY2hlZHVsZXNMYWJlbHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEZ1bGxTY2hlZHVsZXNMYWJlbHMgPSAnZnVsbFNjaGVkdWxlc0xhYmVscycsXG5cbiAgLy8gRFBJX0ltYWdlUmVzb3VyY2VMaXN0LCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBJbWFnZVJlc291cmNlTGlzdCA9ICdpbWFnZVJlc291cmNlcycsXG5cbiAgLy8gRFBJX0luY2x1ZGVMaXN0LCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBJbmNsdWRlTGlzdCA9ICdpbmNsdWRlTGlzdCcsXG5cbiAgLy8gRFBJX0luY3JTY2hlZHVsZXNMYWJlbHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEluY3JTY2hlZHVsZXNMYWJlbHMgPSAnaW5jclNjaGVkdWxlc0xhYmVscycsXG5cbiAgLy8gRFBJX0ludmFsaWREYXRlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgSW52YWxpZERhdGVzID0gJ2ludmFsaWREYXRlcycsXG5cbiAgLy8gRFBJX0ludmFsaWRWYWx1ZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEludmFsaWRWYWx1ZXMgPSAnaW52YWxpZFZhbHVlcycsXG5cbiAgLy8gRFBJX0l0ZW1WYWx1ZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEl0ZW1WYWx1ZXMgPSAnaXRlbVZhbHVlcycsXG5cbiAgLy8gRFBJX0pvaW5FZGl0YWJsZVByb3BzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBKb2luRWRpdGFibGVQcm9wcyA9ICdqb2luRWRpdGFibGVQcm9wcycsXG5cbiAgLy8gRFBJX0pvaW5GaWVsZENhcHRpb25zLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBKb2luRmllbGRDYXB0aW9ucyA9ICdqb2luRmllbGRDYXB0aW9ucycsXG5cbiAgLy8gRFBJX0xvY2FsZU9wdGlvbnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIExvY2FsZU9wdGlvbnMgPSAnbG9jYWxlT3B0aW9ucycsXG5cbiAgLy8gRFBJX0xvY2FsZURpc3BsYXlOYW1lcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgTG9jYWxlRGlzcGxheU5hbWVzID0gJ2xvY2FsZURpc3BsYXlOYW1lcycsXG5cbiAgLy8gRFBJX01hcEJveFN0eWxlTWFwcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgTWFwQm94U3R5bGVNYXBzID0gJ21hcGJveFN0eWxlTWFwcycsXG5cbiAgLy8gRFBJX01hcENvbm5lY3Rpb25FcnJvckRldGFpbHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIE1hcENvbm5lY3Rpb25FcnJvckRldGFpbHMgPSAnbWFwQ29ubmVjdGlvbkVycm9yRGV0YWlscycsXG5cbiAgLy8gRFBJX1NoZWV0TmFtZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFNoZWV0TmFtZXMgPSAnc2hlZXROYW1lcycsXG5cbiAgLy8gRFBJX01hcFNvdXJjZU5hbWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBNYXBTb3VyY2VOYW1lcyA9ICdtYXBTb3VyY2VOYW1lcycsXG5cbiAgLy8gRFBJX01hcmtHZW9tZXRyaWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBNYXJrR2VvbWV0cmllcyA9ICdtYXJrR2VvbWV0cmllcycsXG5cbiAgLy8gRFBJX01lbnVJdGVtcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgTWVudUl0ZW1zID0gJ21lbnVJdGVtcycsXG5cbiAgLy8gRFBJX01vZGVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBNb2RlcyA9ICdtb2RlcycsXG5cbiAgLy8gRFBJX01vbnRoTmFtZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIE1vbnRoTmFtZXMgPSAnbW9udGhOYW1lcycsXG5cbiAgLy8gRFBJX051bWJlckZvcm1hdHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIE51bWJlckZvcm1hdHMgPSAnbnVtYmVyRm9ybWF0cycsXG5cbiAgLy8gRFBJX09iamVjdFRleHRJRHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIE9iamVjdFRleHRJRHMgPSAnb2JqZWN0VGV4dElkcycsXG5cbiAgLy8gRFBJX09sZEV4dHJhY3RzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBPbGRFeHRyYWN0cyA9ICdvbGRFeHRyYWN0cycsXG5cbiAgLy8gRFBJX09yZGVyaW5nVHlwZUNhcHRpb25zLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBPcmRlcmluZ1R5cGVDYXB0aW9ucyA9ICdvcmRlcmluZ1R5cGVDYXB0aW9ucycsXG5cbiAgLy8gRFBJX1BhZ2VOYW1lcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgUGFnZU5hbWVzID0gJ3BhZ2VOYW1lcycsXG5cbiAgLy8gRFBJX1BhbmVEZXNjcmlwdG9yS2V5cywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgUGFuZURlc2NyaXB0b3JLZXlzID0gJ3BhbmVEZXNjcmlwdG9yS2V5cycsXG5cbiAgLy8gRFBJX1BhcmFtQ2FwdGlvbnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFBhcmFtQ2FwdGlvbnMgPSAncGFyYW1DYXB0aW9ucycsXG5cbiAgLy8gRFBJX1ByZWNhbm5lZERhdGFWYWx1ZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFByZWNhbm5lZERhdGFWYWx1ZXMgPSAncHJlY2FubmVkRGF0YVZhbHVlcycsXG5cbiAgLy8gRFBJX1B1Ymxpc2hDaG9pY2VMYWJlbHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFB1Ymxpc2hDaG9pY2VMYWJlbHMgPSAncHVibGlzaENob2ljZUxhYmVscycsXG5cbiAgLy8gRFBJX1JhbmtUeXBlQ2FwdGlvbnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFJhbmtUeXBlQ2FwdGlvbnMgPSAncmFua1R5cGVDYXB0aW9ucycsXG5cbiAgLy8gRFBJX1JlY2VudFRhZ3MsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFJlY2VudFRhZ3MgPSAncmVjZW50VGFncycsXG5cbiAgLy8gRFBJX1JlbGF0aXZlQ2FwdGlvbnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFJlbGF0aXZlQ2FwdGlvbnMgPSAncmVsYXRpdmVDYXB0aW9ucycsXG5cbiAgLy8gRFBJX1JlbW92ZWREYXRhU291cmNlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgUmVtb3ZlZERhdGFTb3VyY2VzID0gJ3JlbW92ZWREYXRhU291cmNlTmFtZXMnLFxuXG4gIC8vIERQSV9SZXByZXNlbnRhdGl2ZVR1cGxlLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBSZXByZXNlbnRhdGl2ZVR1cGxlID0gJ3JlcHJlc2VudGF0aXZlVHVwbGUnLFxuXG4gIC8vIERQSV9SZXN0YXJ0RXZlcnlDYXB0aW9ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgUmVzdGFydEV2ZXJ5Q2FwdGlvbnMgPSAncmVzdGFydEV2ZXJ5Q2FwdGlvbnMnLFxuXG4gIC8vIERQSV9TY2hlbWFNZW1iZXJHbG9iYWxOYW1lcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgU2NoZW1hTWVtYmVyR2xvYmFsTmFtZXMgPSAnc2NoZW1hTWVtYmVyR2xvYmFsTmFtZXMnLFxuXG4gIC8vIERQSV9TZWxlY3RWYWx1ZXNMaXN0LCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBTZWxlY3RWYWx1ZXNMaXN0ID0gJ3NlbGVjdFZhbHVlcycsXG5cbiAgLy8gRFBJX1NlbGVjdGlvblZhbHVlTGlzdCwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgU2VsZWN0aW9uVmFsdWVMaXN0ID0gJ3NlbGVjdGlvblZhbHVlTGlzdCcsXG5cbiAgLy8gRFBJX1NvcnRBZ2dDYXB0aW9ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgU29ydEFnZ0NhcHRpb25zID0gJ3NvcnRBZ2dDYXB0aW9ucycsXG5cbiAgLy8gRFBJX1NvcnREaXJlY3Rpb25DYXB0aW9ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgU29ydERpcmVjdGlvbkNhcHRpb25zID0gJ3NvcnREaXJlY3Rpb25DYXB0aW9ucycsXG5cbiAgLy8gRFBJX1NvcnRGaWVsZENhcHRpb25zLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBTb3J0RmllbGRDYXB0aW9ucyA9ICdzb3J0RmllbGRDYXB0aW9ucycsXG5cbiAgLy8gRFBJX1NvcnRGaWVsZE5hbWVWZWN0b3IsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFNvcnRGaWVsZE5hbWVWZWN0b3IgPSAnc29ydEZpZWxkbmFtZVZlY3RvcicsXG5cbiAgLy8gRFBJX1N1cHBvcnRlZEpvaW5PcGVyYXRvcnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFN1cHBvcnRlZEpvaW5PcGVyYXRvcnMgPSAnc3VwcG9ydGVkSm9pbk9wZXJhdG9ycycsXG5cbiAgLy8gRFBJX1RhYmxlQ2FsY1R5cGVDYXB0aW9ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgVGFibGVDYWxjVHlwZUNhcHRpb25zID0gJ3RhYmxlQ2FsY1R5cGVDYXB0aW9ucycsXG5cbiAgLy8gRFBJX1RhZ3MsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFRhZ3MgPSAndGFncycsXG5cbiAgLy8gRFBJX1Rlcm1WZWMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFRlcm1WZWMgPSAndGVybVZlY3RvcicsXG5cbiAgLy8gRFBJX1VJQXV0b21hdGlvbkxpc3QsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFVJQXV0b21hdGlvbkxpc3QgPSAndWlBdXRvbWF0aW9uTGlzdCcsXG5cbiAgLy8gRFBJX1JlZmVyZW5jZUxpbmVWYWxpZEN1c3RvbUxhYmVsVGFncywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgUmVmZXJlbmNlTGluZVZhbGlkQ3VzdG9tTGFiZWxUYWdzID0gJ3ZhbGlkUmVmZXJlbmNlTGluZUN1c3RvbUxhYmVsVGFncycsXG5cbiAgLy8gRFBJX0xvY2FsaXplZEtleXdvcmRzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBMb2NhbGl6ZWRLZXl3b3JkcyA9ICdsb2NhbGl6ZWRLZXl3b3JkcycsXG5cbiAgLy8gRFBJX0F2YWlsYWJsZUNhbGVuZGFycywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgQXZhaWxhYmxlQ2FsZW5kYXJzID0gJ2F2YWlsYWJsZUNhbGVuZGFycycsXG5cbiAgLy8gRFBJX1NoZWV0c1RvQmVEZWxldGVkT3JIaWRkZW4sIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFNoZWV0c1RvQmVEZWxldGVkT3JIaWRkZW4gPSAnc2hlZXRzVG9CZURlbGV0ZWRPckhpZGRlbicsXG5cbiAgLy8gRFBJX0FkZFNoZWV0cywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgQWRkU2hlZXRzID0gJ2FkZFNoZWV0cycsXG5cbiAgLy8gRFBJX05hbWVzT2ZTdWJzaGVldHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIE5hbWVzT2ZTdWJzaGVldHMgPSAnbmFtZXNPZlN1YnNoZWV0cycsXG5cbiAgLy8gRFBJX1JlbW92ZVNoZWV0cywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgUmVtb3ZlU2hlZXRzID0gJ3JlbW92ZVNoZWV0cycsXG5cbiAgLy8gRFBJX1Njcm9sbE9mZnNldFNoZWV0cywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgU2Nyb2xsT2Zmc2V0U2hlZXRzID0gJ3Njcm9sbE9mZnNldFNoZWV0cycsXG5cbiAgLy8gRFBJX1NoZWV0cywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgU2hlZXRzID0gJ3NoZWV0cycsXG5cbiAgLy8gRFBJX1NvdXJjZVdvcmtzaGVldHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFNvdXJjZVdvcmtzaGVldHMgPSAnc291cmNlV29ya3NoZWV0cycsXG5cbiAgLy8gRFBJX1RhcmdldEV4Y2x1ZGVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBUYXJnZXRFeGNsdWRlcyA9ICd0YXJnZXRFeGNsdWRlJyxcblxuICAvLyBEUElfVGFyZ2V0V29ya3NoZWV0cywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgVGFyZ2V0V29ya3NoZWV0cyA9ICd0YXJnZXRXb3Jrc2hlZXRzJyxcblxuICAvLyBEUElfVGlsZVVSTHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFRpbGVVUkxzID0gJ3RpbGVVcmxzJyxcblxuICAvLyBEUElfRGV0YWlscywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgRGV0YWlscyA9ICdkZXRhaWxzJyxcblxuICAvLyBEUElfRmllbGRDYXB0aW9ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgRmllbGRDYXB0aW9ucyA9ICdmaWVsZENhcHRpb25zJyxcblxuICAvLyBEUElfSGlnaGxpZ2h0Q2FwdGlvbnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEhpZ2hsaWdodENhcHRpb25zID0gJ2hpZ2hsaWdodENhcHRpb25zJyxcblxuICAvLyBEUElfTGV2ZWxDYXB0aW9ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgTGV2ZWxDYXB0aW9ucyA9ICdsZXZlbENhcHRpb25zJyxcblxuICAvLyBEUElfTGV2ZWxMZWFmVmFsdWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBMZXZlbExlYWZWYWx1ZXMgPSAnbGV2ZWxMZWFmVmFsdWVzJyxcblxuICAvLyBEUElfU3Vic3RpdHV0aW9uVmFyaWFibGVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBTdWJzdGl0dXRpb25WYXJpYWJsZXMgPSAnc3Vic3RpdHV0aW9uVmFyaWFibGVzJyxcblxuICAvLyBEUElfU3Vic3RpdHV0aW9uVmFyaWFibGVWYWx1ZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFN1YnN0aXR1dGlvblZhcmlhYmxlVmFsdWVzID0gJ3N1YnN0aXR1dGlvblZhcmlhYmxlVmFsdWVzJyxcblxuICAvLyBEUElfSHRtbFRvb2x0aXBzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBIdG1sVG9vbHRpcHMgPSAnaHRtbFRvb2x0aXBzJyxcblxuICAvLyBEUElfSW52YWxpZEZpZWxkcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgSW52YWxpZEZpZWxkcyA9ICdpbnZhbGlkRmllbGRzJyxcblxuICAvLyBEUElfTmFtZXNPZkNvbHVtbnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIE5hbWVzT2ZDb2x1bW5zID0gJ25hbWVzT2ZDb2x1bW5zJyxcblxuICAvLyBEUElfTmFtZXNPZkZpZWxkcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgTmFtZXNPZkZpZWxkcyA9ICduYW1lc09mRmllbGRzJyxcblxuICAvLyBEUElfUmVmZXJlbmNlZERhdGFzb3VyY2VzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBSZWZlcmVuY2VkRGF0YXNvdXJjZXMgPSAncmVmZXJlbmNlZERhdGFTb3VyY2VMaXN0JyxcblxuICAvLyBEUElfQ1NTQXR0cnMsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBDU1NBdHRycyA9ICdjc3NBdHRycycsXG5cbiAgLy8gRFBJX0RhdGFTb3VyY2VNYXAsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBEYXRhU291cmNlTWFwID0gJ2RhdGFTb3VyY2VNYXAnLFxuXG4gIC8vIERQSV9FdmVudFBhcmFtZXRlcnMsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBFdmVudFBhcmFtZXRlcnMgPSAnZXZlbnRQYXJhbWV0ZXJzJyxcblxuICAvLyBEUElfRXhjZXB0aW9uQXR0cnMsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBFeGNlcHRpb25BdHRycyA9ICdleGNlcHRpb25BdHRycycsXG5cbiAgLy8gRFBJX0ludmFsaWRTaGVldE1lc3NhZ2UsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBJbnZhbGlkU2hlZXRNZXNzYWdlID0gJ2ludmFsaWRTaGVldE1lc3NhZ2VzJyxcblxuICAvLyBEUElfTWFwQm94RGVmYXVsdFN0eWxlLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgTWFwQm94RGVmYXVsdFN0eWxlID0gJ21hcGJveERlZmF1bHRTdHlsZXMnLFxuXG4gIC8vIERQSV9QYW5lRm9ybWF0dGluZ3MsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBQYW5lRm9ybWF0dGluZ3MgPSAncGFuZUZvcm1hdHRpbmdzJyxcblxuICAvLyBEUElfU291cmNlTmFtZVdpdGhDYXB0aW9uLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgU291cmNlTmFtZVdpdGhDYXB0aW9uID0gJ3NvdXJjZU5hbWVXaXRoQ2FwdGlvbicsXG5cbiAgLy8gRFBJX0Nvbm5lY3Rpb25Db2xvck1hcCwgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBzdHJpbmcpXG4gIENvbm5lY3Rpb25Db2xvck1hcCA9ICdjb25uZWN0aW9uQ29sb3JNYXAnLFxuXG4gIC8vIERQSV9UYXJnZXROYW1lV2l0aENhcHRpb24sIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBUYXJnZXROYW1lV2l0aENhcHRpb24gPSAndGFyZ2V0TmFtZVdpdGhDYXB0aW9uJyxcblxuICAvLyBEUElfVmlld0lkcywgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBzdHJpbmcpXG4gIFZpZXdJZHMgPSAndmlld0lkcycsXG5cbiAgLy8gRFBJX0FkZEluU2V0dGluZ3MsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBBZGRJblNldHRpbmdzID0gJ2FkZEluU2V0dGluZ3MnLFxuXG4gIC8vIERQSV9EYXRhc291cmNlSWNvbnMsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBEYXRhc291cmNlSWNvbnMgPSAnZGF0YXNvdXJjZUljb25zJyxcblxuICAvLyBEUElfRm9ybWF0dGVkVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZvcm1hdHRlZFRleHQgPSAnZm9ybWF0dGVkVGV4dCcsXG5cbiAgLy8gRFBJX0ljb25Ub29sdGlwLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSWNvblRvb2x0aXAgPSAnaWNvblRvb2x0aXAnLFxuXG4gIC8vIERQSV9UaXRsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRpdGxlID0gJ3RpdGxlJyxcblxuICAvLyBEUElfVG9vbHRpcCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRvb2x0aXAgPSAndG9vbHRpcCcsXG5cbiAgLy8gRFBJX1pvbmVUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgWm9uZVRleHQgPSAnem9uZVRleHQnLFxuXG4gIC8vIERQSV9BbGlnbm1lbnRGbGFncywgaGF2aW5nIHR5cGUgaW50XG4gIEFsaWdubWVudEZsYWdzID0gJ2FsaWdubWVudEZsYWdzJyxcblxuICAvLyBEUElfQWxwaGFMZXZlbCwgaGF2aW5nIHR5cGUgaW50XG4gIEFscGhhTGV2ZWwgPSAnYWxwaGFMZXZlbCcsXG5cbiAgLy8gRFBJX0Fub3ZhREYsIGhhdmluZyB0eXBlIGludFxuICBBbm92YURGID0gJ2Fub3ZhRGYnLFxuXG4gIC8vIERQSV9BdFRoZUxldmVsSW5kZXgsIGhhdmluZyB0eXBlIGludFxuICBBdFRoZUxldmVsSW5kZXggPSAnYXRUaGVMZXZlbEluZGV4JyxcblxuICAvLyBEUElfQXV0b21hdGljRHJpbGxJZHhJblZlY3RvciwgaGF2aW5nIHR5cGUgaW50XG4gIEF1dG9tYXRpY0RyaWxsSWR4SW5WZWN0b3IgPSAnYXV0b21hdGljRHJpbGxJZHhWZWN0b3InLFxuXG4gIC8vIERQSV9BdXRvU2l6ZSwgaGF2aW5nIHR5cGUgaW50XG4gIEF1dG9TaXplID0gJ2F1dG9tYXRpY1NpemUnLFxuXG4gIC8vIERQSV9CYXNlQ29vcmQsIGhhdmluZyB0eXBlIGludFxuICBCYXNlQ29vcmQgPSAnYmFzZUNvb3JkJyxcblxuICAvLyBEUElfQ2FsY0VkaXRvckN1cnNvclBvc1Bvc3REcm9wLCBoYXZpbmcgdHlwZSBpbnRcbiAgQ2FsY0VkaXRvckN1cnNvclBvc1Bvc3REcm9wID0gJ2NhbGNFZGl0b3JDdXJzb3JQb3NQb3N0RHJvcCcsXG5cbiAgLy8gRFBJX0NhbGNFZGl0b3JEcm9wUG9zLCBoYXZpbmcgdHlwZSBpbnRcbiAgQ2FsY0VkaXRvckRyb3BQb3MgPSAnY2FsY0VkaXRvckRyb3BQb3MnLFxuXG4gIC8vIERQSV9DYWxjRWRpdG9yVGV4dFNlbGVjdGlvbkVuZFBvcywgaGF2aW5nIHR5cGUgaW50XG4gIENhbGNFZGl0b3JUZXh0U2VsZWN0aW9uRW5kUG9zID0gJ2NhbGNFZGl0b3JUZXh0U2VsZWN0aW9uRW5kUG9zJyxcblxuICAvLyBEUElfQ2FsY0VkaXRvclRleHRTZWxlY3Rpb25TdGFydFBvcywgaGF2aW5nIHR5cGUgaW50XG4gIENhbGNFZGl0b3JUZXh0U2VsZWN0aW9uU3RhcnRQb3MgPSAnY2FsY0VkaXRvclRleHRTZWxlY3Rpb25TdGFydFBvcycsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsQmluSWQsIGhhdmluZyB0eXBlIGludFxuICBDYXRlZ29yaWNhbEJpbklkID0gJ2NhdGVnb3JpY2FsQmluSWQnLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbEZpbmRDb250cm9sbGVySWQsIGhhdmluZyB0eXBlIGludFxuICBDYXRlZ29yaWNhbEZpbmRDb250cm9sbGVySWQgPSAnY2F0ZWdvcmljYWxGaW5kQ29udHJvbGxlcklkJyxcblxuICAvLyBEUElfQ2xhdXNlVG9Nb2RpZnlJbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gIENsYXVzZVRvTW9kaWZ5SW5kZXggPSAnY2xhdXNlVG9Nb2RpZnlJbmRleCcsXG5cbiAgLy8gRFBJX0NsaWVudFJlbmRlclBpeGVsTGltaXQsIGhhdmluZyB0eXBlIGludFxuICBDbGllbnRSZW5kZXJQaXhlbExpbWl0ID0gJ2NsaWVudFJlbmRlclBpeGVsTGltaXQnLFxuXG4gIC8vIERQSV9Db2xDb3VudCwgaGF2aW5nIHR5cGUgaW50XG4gIENvbENvdW50ID0gJ2NvbENvdW50JyxcblxuICAvLyBEUElfQ29sV2lkdGgsIGhhdmluZyB0eXBlIGludFxuICBDb2xXaWR0aCA9ICdjb2xXaWR0aCcsXG5cbiAgLy8gRFBJX0NvbHVtbkxldmVscywgaGF2aW5nIHR5cGUgaW50XG4gIENvbHVtbkxldmVscyA9ICdjb2x1bW5MZXZlbHMnLFxuXG4gIC8vIERQSV9Db2x1bW5OdW1iZXIsIGhhdmluZyB0eXBlIGludFxuICBDb2x1bW5OdW1iZXIgPSAnY29sdW1uTnVtYmVyJyxcblxuICAvLyBEUElfQ29sdW1uV2lkdGgsIGhhdmluZyB0eXBlIGludFxuICBDb2x1bW5XaWR0aCA9ICdjb2x1bW5XaWR0aCcsXG5cbiAgLy8gRFBJX0NvbnRlbnRIZWlnaHQsIGhhdmluZyB0eXBlIGludFxuICBDb250ZW50SGVpZ2h0ID0gJ2NvbnRlbnRIJyxcblxuICAvLyBEUElfQ29udGVudFdpZHRoLCBoYXZpbmcgdHlwZSBpbnRcbiAgQ29udGVudFdpZHRoID0gJ2NvbnRlbnRXJyxcblxuICAvLyBEUElfQ29udGVudFgsIGhhdmluZyB0eXBlIGludFxuICBDb250ZW50WCA9ICdjb250ZW50WCcsXG5cbiAgLy8gRFBJX0NvbnRlbnRZLCBoYXZpbmcgdHlwZSBpbnRcbiAgQ29udGVudFkgPSAnY29udGVudFknLFxuXG4gIC8vIERQSV9Db29yZGluYXRlLCBoYXZpbmcgdHlwZSBpbnRcbiAgQ29vcmRpbmF0ZSA9ICdjb29yZCcsXG5cbiAgLy8gRFBJX0N1ckRhdGVBZ2csIGhhdmluZyB0eXBlIGludFxuICBDdXJEYXRlQWdnID0gJ2N1ckRhdGVBZ2cnLFxuXG4gIC8vIERQSV9DdXJyZW50Q3VzdFZpZXdJZCwgaGF2aW5nIHR5cGUgaW50XG4gIEN1cnJlbnRDdXN0Vmlld0lkID0gJ2N1cnJlbnRDdXN0b21WaWV3SWQnLFxuXG4gIC8vIERQSV9DdXN0b21TcGxpdENoYXJhY3RlckNvdW50U2VwYXJhdG9yLCBoYXZpbmcgdHlwZSBpbnRcbiAgQ3VzdG9tU3BsaXRDaGFyYWN0ZXJDb3VudFNlcGFyYXRvciA9ICdjdXN0b21TcGxpdENoYXJhY3RlckNvdW50U2VwYXJhdG9yJyxcblxuICAvLyBEUElfQ3VzdG9tU3BsaXREZXNpcmVkU3BsaXRDb3VudCwgaGF2aW5nIHR5cGUgaW50XG4gIEN1c3RvbVNwbGl0RGVzaXJlZFNwbGl0Q291bnQgPSAnY3VzdG9tU3BsaXREZXNpcmVkU3BsaXRDb3VudCcsXG5cbiAgLy8gRFBJX0Rhc2hib2FyZEdyaWRTaXplLCBoYXZpbmcgdHlwZSBpbnRcbiAgRGFzaGJvYXJkR3JpZFNpemUgPSAnZGFzaGJvYXJkR3JpZFNpemUnLFxuXG4gIC8vIERQSV9EYXRhSW5kZXgsIGhhdmluZyB0eXBlIGludFxuICBEYXRhSW5kZXggPSAnZGF0YUluZGV4JyxcblxuICAvLyBEUElfRGVjaW1hbFBsYWNlcywgaGF2aW5nIHR5cGUgaW50XG4gIERlY2ltYWxQbGFjZXMgPSAnZGVjaW1hbFBsYWNlcycsXG5cbiAgLy8gRFBJX0RlbHRhVGltZSwgaGF2aW5nIHR5cGUgaW50XG4gIERlbHRhVGltZSA9ICdkZWx0YVRpbWUnLFxuXG4gIC8vIERQSV9EZXN0UGl4LCBoYXZpbmcgdHlwZSBpbnRcbiAgRGVzdFBpeCA9ICdkZXN0UGl4JyxcblxuICAvLyBEUElfRGV2aWNlSW5kZXgsIGhhdmluZyB0eXBlIGludFxuICBEZXZpY2VJbmRleCA9ICdkZXZpY2VJbmRleCcsXG5cbiAgLy8gRFBJX0R1cmF0aW9uLCBoYXZpbmcgdHlwZSBpbnRcbiAgRHVyYXRpb24gPSAnZHVyYXRpb24nLFxuXG4gIC8vIERQSV9FbmRQdFgsIGhhdmluZyB0eXBlIGludFxuICBFbmRQdFggPSAnZW5kWCcsXG5cbiAgLy8gRFBJX0VuZFB0WSwgaGF2aW5nIHR5cGUgaW50XG4gIEVuZFB0WSA9ICdlbmRZJyxcblxuICAvLyBEUElfRXJyb3JMZW4sIGhhdmluZyB0eXBlIGludFxuICBFcnJvckxlbiA9ICdsZW5ndGhPZkNhbGNPZkVycm9yJyxcblxuICAvLyBEUElfRXJyb3JQb3MsIGhhdmluZyB0eXBlIGludFxuICBFcnJvclBvcyA9ICdzdGFydFBvc2l0aW9uRm9yRXJyb3InLFxuXG4gIC8vIERQSV9FeGNlcHRpb25FcnJvck1lc3NhZ2VJZCwgaGF2aW5nIHR5cGUgaW50XG4gIEV4Y2VwdGlvbkVycm9yTWVzc2FnZUlkID0gJ2V4Y2VwdGlvbkVycm9yTWVzc2FnZUlkJyxcblxuICAvLyBEUElfRXh0ZW50c0gsIGhhdmluZyB0eXBlIGludFxuICBFeHRlbnRzSCA9ICdleHRlbnRzSGVpZ2h0JyxcblxuICAvLyBEUElfRXh0ZW50c1csIGhhdmluZyB0eXBlIGludFxuICBFeHRlbnRzVyA9ICdleHRlbnRzV2lkdGgnLFxuXG4gIC8vIERQSV9FeHRlbnRzWCwgaGF2aW5nIHR5cGUgaW50XG4gIEV4dGVudHNYID0gJ2V4dGVudHNYJyxcblxuICAvLyBEUElfRXh0ZW50c1ksIGhhdmluZyB0eXBlIGludFxuICBFeHRlbnRzWSA9ICdleHRlbnRzWScsXG5cbiAgLy8gRFBJX0ZpZWxkSW5kZXgsIGhhdmluZyB0eXBlIGludFxuICBGaWVsZEluZGV4ID0gJ2ZpZWxkSW5kZXgnLFxuXG4gIC8vIERQSV9GaWVsZE5hbWVJZCwgaGF2aW5nIHR5cGUgaW50XG4gIEZpZWxkTmFtZUlkID0gJ2ZpZWxkTmFtZUlkJyxcblxuICAvLyBEUElfRmlyc3REYXlPZldlZWssIGhhdmluZyB0eXBlIGludFxuICBGaXJzdERheU9mV2VlayA9ICdmaXJzdERheU9mV2VlaycsXG5cbiAgLy8gRFBJX0ZpcnN0VmFsdWVJbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gIEZpcnN0VmFsdWVJbmRleCA9ICdmaXJzdFZhbHVlSW5kZXgnLFxuXG4gIC8vIERQSV9GaXhlZFNpemVQcmVzZXRJbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gIEZpeGVkU2l6ZVByZXNldEluZGV4ID0gJ2ZpeGVkU2l6ZVByZXNldEluZGV4JyxcblxuICAvLyBEUElfRm9jdXNJdGVtSW5kZXgsIGhhdmluZyB0eXBlIGludFxuICBGb2N1c0l0ZW1JbmRleCA9ICdmb2N1c0l0ZW1JbmRleCcsXG5cbiAgLy8gRFBJX0ZvbnRTaXplLCBoYXZpbmcgdHlwZSBpbnRcbiAgRm9udFNpemUgPSAnZm9udFNpemUnLFxuXG4gIC8vIERQSV9Gb3JlY2FzdEludFJhbmdlRW5kLCBoYXZpbmcgdHlwZSBpbnRcbiAgRm9yZWNhc3RJbnRSYW5nZUVuZCA9ICdmb3JlY2FzdEludFJhbmdlRW5kJyxcblxuICAvLyBEUElfRm9yZWNhc3RJbnRSYW5nZVN0YXJ0LCBoYXZpbmcgdHlwZSBpbnRcbiAgRm9yZWNhc3RJbnRSYW5nZVN0YXJ0ID0gJ2ZvcmVjYXN0SW50UmFuZ2VTdGFydCcsXG5cbiAgLy8gRFBJX0Z1bmN0aW9uSGVscEluZGV4LCBoYXZpbmcgdHlwZSBpbnRcbiAgRnVuY3Rpb25IZWxwSW5kZXggPSAnZnVuY3Rpb25IZWxwSW5kZXgnLFxuXG4gIC8vIERQSV9HZW9ncmFwaGljU2VhcmNoTWF4UmVzdWx0cywgaGF2aW5nIHR5cGUgaW50XG4gIEdlb2dyYXBoaWNTZWFyY2hNYXhSZXN1bHRzID0gJ2dlb2dyYXBoaWNTZWFyY2hNYXhSZXN1bHRzJyxcblxuICAvLyBEUElfSGVpZ2h0LCBoYXZpbmcgdHlwZSBpbnRcbiAgSGVpZ2h0ID0gJ2gnLFxuXG4gIC8vIERQSV9IaWVyYXJjaHlMZXZlbCwgaGF2aW5nIHR5cGUgaW50XG4gIEhpZXJhcmNoeUxldmVsID0gJ2hpZXJhcmNoeUxldmVsJyxcblxuICAvLyBEUElfSGllcmFyY2h5TGV2ZWxMb2FkZWQsIGhhdmluZyB0eXBlIGludFxuICBIaWVyYXJjaHlMZXZlbExvYWRlZCA9ICdoaWVyYXJjaHlMZXZlbExvYWRlZCcsXG5cbiAgLy8gRFBJX0hpZXJhcmNoeUxldmVsTWluaW11bSwgaGF2aW5nIHR5cGUgaW50XG4gIEhpZXJhcmNoeUxldmVsTWluaW11bSA9ICdoaWVyYXJjaHlMZXZlbE1pbmltdW0nLFxuXG4gIC8vIERQSV9IaWVyYXJjaHlMb2FkTGltaXQsIGhhdmluZyB0eXBlIGludFxuICBIaWVyYXJjaHlMb2FkTGltaXQgPSAnaGllcmFyY2h5TG9hZExpbWl0JyxcblxuICAvLyBEUElfSGllcmFyY2h5U2VsZWN0Q29udHJvbGxlcklkLCBoYXZpbmcgdHlwZSBpbnRcbiAgSGllcmFyY2h5U2VsZWN0Q29udHJvbGxlcklkID0gJ2hpZXJhcmNoeVNlbGVjdENvbnRyb2xsZXJJZCcsXG5cbiAgLy8gRFBJX0hvcnpUZXh0Q2VsbCwgaGF2aW5nIHR5cGUgaW50XG4gIEhvcnpUZXh0Q2VsbCA9ICdob3J6VGV4dENlbGwnLFxuXG4gIC8vIERQSV9JbWFnZUluZGV4LCBoYXZpbmcgdHlwZSBpbnRcbiAgSW1hZ2VJbmRleCA9ICdpbWFnZUluZGV4JyxcblxuICAvLyBEUElfSW1hZ2VTaXplTGltaXQsIGhhdmluZyB0eXBlIGludFxuICBJbWFnZVNpemVMaW1pdCA9ICdpbWFnZVNpemVMaW1pdCcsXG5cbiAgLy8gRFBJX1RyYW5zcGFyZW50TGluZU1hcmtzTGltaXQsIGhhdmluZyB0eXBlIGludFxuICBUcmFuc3BhcmVudExpbmVNYXJrc0xpbWl0ID0gJ3RyYW5zcGFyZW50TGluZU1hcmtzTGltaXQnLFxuXG4gIC8vIERQSV9JbmRlbnQsIGhhdmluZyB0eXBlIGludFxuICBJbmRlbnQgPSAnaW5kZW50JyxcblxuICAvLyBEUElfSW5kZXgsIGhhdmluZyB0eXBlIGludFxuICBJbmRleCA9ICdpZHgnLFxuXG4gIC8vIERQSV9JbmRleEZyb20sIGhhdmluZyB0eXBlIGludFxuICBJbmRleEZyb20gPSAnaW5kZXhGcm9tJyxcblxuICAvLyBEUElfSW5kZXhPZmZzZXQsIGhhdmluZyB0eXBlIGludFxuICBJbmRleE9mZnNldCA9ICdpbmRleE9mZnNldCcsXG5cbiAgLy8gRFBJX0luZGV4VG8sIGhhdmluZyB0eXBlIGludFxuICBJbmRleFRvID0gJ2luZGV4VG8nLFxuXG4gIC8vIERQSV9JbmxpbmVDb25uZWN0aW9uUmVuYW1lUm93LCBoYXZpbmcgdHlwZSBpbnRcbiAgSW5saW5lQ29ubmVjdGlvblJlbmFtZVJvdyA9ICdpbmxpbmVDb25uZWN0aW9uUmVuYW1lUm93JyxcblxuICAvLyBEUElfSW5zZXJ0UG9zLCBoYXZpbmcgdHlwZSBpbnRcbiAgSW5zZXJ0UG9zID0gJ2luc2VydFBvcycsXG5cbiAgLy8gRFBJX0lzSGFzRGF0YVN1cHBvcnRlZCwgaGF2aW5nIHR5cGUgaW50XG4gIElzSGFzRGF0YVN1cHBvcnRlZCA9ICdpc0hhc0RhdGFTdXBwb3J0ZWQnLFxuXG4gIC8vIERQSV9MZWZ0TWFyZ2luLCBoYXZpbmcgdHlwZSBpbnRcbiAgTGVmdE1hcmdpbiA9ICdsZWZ0TWFyZ2luJyxcblxuICAvLyBEUElfTGVmdFJpZ2h0Qm9yZGVyV2lkdGgsIGhhdmluZyB0eXBlIGludFxuICBMZWZ0UmlnaHRCb3JkZXJXaWR0aCA9ICdsZWZ0UmlnaHRCb3JkZXJXaWR0aCcsXG5cbiAgLy8gRFBJX0xvd2VyQm91bmQsIGhhdmluZyB0eXBlIGludFxuICBMb3dlckJvdW5kID0gJ2xvd2VyQm91bmQnLFxuXG4gIC8vIERQSV9NYXBSZXF1ZXN0UGl4ZWxzLCBoYXZpbmcgdHlwZSBpbnRcbiAgTWFwUmVxdWVzdFBpeGVscyA9ICdtYXBSZXF1ZXN0UGl4ZWxzJyxcblxuICAvLyBEUElfTWFwU2NhbGVGb250U2l6ZVBpeGVscywgaGF2aW5nIHR5cGUgaW50XG4gIE1hcFNjYWxlRm9udFNpemVQaXhlbHMgPSAnbWFwU2NhbGVGb250U2l6ZVBpeGVscycsXG5cbiAgLy8gRFBJX01hcFNjYWxlUmVhZG91dE51bWJlciwgaGF2aW5nIHR5cGUgaW50XG4gIE1hcFNjYWxlUmVhZG91dE51bWJlciA9ICdtYXBTY2FsZVJlYWRvdXROdW1iZXInLFxuXG4gIC8vIERQSV9NYXBTY2FsZVdpZHRoLCBoYXZpbmcgdHlwZSBpbnRcbiAgTWFwU2NhbGVXaWR0aCA9ICdtYXBTY2FsZVdpZHRoJyxcblxuICAvLyBEUElfTWFwVGlsZVNpemUsIGhhdmluZyB0eXBlIGludFxuICBNYXBUaWxlU2l6ZSA9ICdtYXBUaWxlU2l6ZScsXG5cbiAgLy8gRFBJX01hcmdpbiwgaGF2aW5nIHR5cGUgaW50XG4gIE1hcmdpbiA9ICdtYXJnaW4nLFxuXG4gIC8vIERQSV9NYXJnaW5Cb3R0b20sIGhhdmluZyB0eXBlIGludFxuICBNYXJnaW5Cb3R0b20gPSAnbWFyZ2luQm90dG9tJyxcblxuICAvLyBEUElfTWFyZ2luTGVmdCwgaGF2aW5nIHR5cGUgaW50XG4gIE1hcmdpbkxlZnQgPSAnbWFyZ2luTGVmdCcsXG5cbiAgLy8gRFBJX01hcmdpblJpZ2h0LCBoYXZpbmcgdHlwZSBpbnRcbiAgTWFyZ2luUmlnaHQgPSAnbWFyZ2luUmlnaHQnLFxuXG4gIC8vIERQSV9NYXJnaW5Ub3AsIGhhdmluZyB0eXBlIGludFxuICBNYXJnaW5Ub3AgPSAnbWFyZ2luVG9wJyxcblxuICAvLyBEUElfTWF4Q2VsbCwgaGF2aW5nIHR5cGUgaW50XG4gIE1heENlbGwgPSAnbWF4Q2VsbCcsXG5cbiAgLy8gRFBJX01heEl0ZW1TcGFuLCBoYXZpbmcgdHlwZSBpbnRcbiAgTWF4SXRlbVNwYW4gPSAnbWF4SXRlbVNwYW4nLFxuXG4gIC8vIERQSV9NYXhQb2x5bm9taWFsRGVncmVlLCBoYXZpbmcgdHlwZSBpbnRcbiAgTWF4UG9seW5vbWlhbERlZ3JlZSA9ICdtYXhEZWdyZWUnLFxuXG4gIC8vIERQSV9NYXhQb3NpdGlvbiwgaGF2aW5nIHR5cGUgaW50XG4gIE1heFBvc2l0aW9uID0gJ21heFBvc2l0aW9uJyxcblxuICAvLyBEUElfTWF4U2l6ZSwgaGF2aW5nIHR5cGUgaW50XG4gIE1heFNpemUgPSAnbWF4U2l6ZScsXG5cbiAgLy8gRFBJX01pbkNlbGwsIGhhdmluZyB0eXBlIGludFxuICBNaW5DZWxsID0gJ21pbkNlbGwnLFxuXG4gIC8vIERQSV9NaW5Qb2x5bm9taWFsRGVncmVlLCBoYXZpbmcgdHlwZSBpbnRcbiAgTWluUG9seW5vbWlhbERlZ3JlZSA9ICdtaW5EZWdyZWUnLFxuXG4gIC8vIERQSV9NaW5Qb3NpdGlvbiwgaGF2aW5nIHR5cGUgaW50XG4gIE1pblBvc2l0aW9uID0gJ21pblBvc2l0aW9uJyxcblxuICAvLyBEUElfTWluU2l6ZSwgaGF2aW5nIHR5cGUgaW50XG4gIE1pblNpemUgPSAnbWluU2l6ZScsXG5cbiAgLy8gRFBJX01vZGVsREYsIGhhdmluZyB0eXBlIGludFxuICBNb2RlbERGID0gJ21vZGVsRGYnLFxuXG4gIC8vIERQSV9OZXdJbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gIE5ld0luZGV4ID0gJ25ld0luZGV4JyxcblxuICAvLyBEUElfTnVtRGF0YVNvdXJjZXNVc2luZ1NlcnZlciwgaGF2aW5nIHR5cGUgaW50XG4gIE51bURhdGFTb3VyY2VzVXNpbmdTZXJ2ZXIgPSAnbnVtRGF0YVNvdXJjZXNVc2luZ1NlcnZlcicsXG5cbiAgLy8gRFBJX051bUZpbHRlcmVkT2JzLCBoYXZpbmcgdHlwZSBpbnRcbiAgTnVtRmlsdGVyZWRPYnMgPSAnZmlsdGVyZWRPYnNlcnZhdGlvbnMnLFxuXG4gIC8vIERQSV9OdW1Nb2RlbGVkT2JzLCBoYXZpbmcgdHlwZSBpbnRcbiAgTnVtTW9kZWxlZE9icyA9ICdtb2RlbGVkT2JzZXJ2YXRpb25zJyxcblxuICAvLyBEUElfTnVtTm90Q2x1c3RlcmVkLCBoYXZpbmcgdHlwZSBpbnRcbiAgTnVtTm90Q2x1c3RlcmVkID0gJ251bU5vdENsdXN0ZXJlZCcsXG5cbiAgLy8gRFBJX051bU51bWVyaWNGaWVsZHMsIGhhdmluZyB0eXBlIGludFxuICBOdW1OdW1lcmljRmllbGRzID0gJ251bU51bWVyaWNGaWVsZHMnLFxuXG4gIC8vIERQSV9OdW1PdXRsaWVycywgaGF2aW5nIHR5cGUgaW50XG4gIE51bU91dGxpZXJzID0gJ251bU91dGxpZXJzJyxcblxuICAvLyBEUElfTnVtUm93cywgaGF2aW5nIHR5cGUgaW50XG4gIE51bVJvd3MgPSAnbnVtUm93cycsXG5cbiAgLy8gRFBJX051bVNlbGVjdGVkLCBoYXZpbmcgdHlwZSBpbnRcbiAgTnVtU2VsZWN0ZWQgPSAnbnVtU2VsZWN0ZWQnLFxuXG4gIC8vIERQSV9PZmZzZXRYLCBoYXZpbmcgdHlwZSBpbnRcbiAgT2Zmc2V0WCA9ICdvZmZzZXRYJyxcblxuICAvLyBEUElfT2Zmc2V0WSwgaGF2aW5nIHR5cGUgaW50XG4gIE9mZnNldFkgPSAnb2Zmc2V0WScsXG5cbiAgLy8gRFBJX1BhZGRpbmcsIGhhdmluZyB0eXBlIGludFxuICBQYWRkaW5nID0gJ3BhZGRpbmcnLFxuXG4gIC8vIERQSV9QYWRkaW5nQm90dG9tLCBoYXZpbmcgdHlwZSBpbnRcbiAgUGFkZGluZ0JvdHRvbSA9ICdwYWRkaW5nQm90dG9tJyxcblxuICAvLyBEUElfUGFkZGluZ0xlZnQsIGhhdmluZyB0eXBlIGludFxuICBQYWRkaW5nTGVmdCA9ICdwYWRkaW5nTGVmdCcsXG5cbiAgLy8gRFBJX1BhZGRpbmdSaWdodCwgaGF2aW5nIHR5cGUgaW50XG4gIFBhZGRpbmdSaWdodCA9ICdwYWRkaW5nUmlnaHQnLFxuXG4gIC8vIERQSV9QYWRkaW5nVG9wLCBoYXZpbmcgdHlwZSBpbnRcbiAgUGFkZGluZ1RvcCA9ICdwYWRkaW5nVG9wJyxcblxuICAvLyBEUElfUGFnZUxvYWRQZXJjZW50YWdlLCBoYXZpbmcgdHlwZSBpbnRcbiAgUGFnZUxvYWRQZXJjZW50YWdlID0gJ3BhZ2VMb2FkUGVyY2VudGFnZScsXG5cbiAgLy8gRFBJX1BhbGV0dGVJbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gIFBhbGV0dGVJbmRleCA9ICdwYWxldHRlSW5kZXgnLFxuXG4gIC8vIERQSV9QYW5lU3BlY2lmaWNhdGlvbklkLCBoYXZpbmcgdHlwZSBpbnRcbiAgUGFuZVNwZWNpZmljYXRpb25JZCA9ICdwYW5lU3BlYycsXG5cbiAgLy8gRFBJX1BhcmFtZXRlckN0cmxJbmNyZW1lbnRzUGVyVGljaywgaGF2aW5nIHR5cGUgaW50XG4gIFBhcmFtZXRlckN0cmxJbmNyZW1lbnRzUGVyVGljayA9ICdwYXJhbWV0ZXJDb250cm9sSW5jcmVtZW50TXVsdGlwbGllcicsXG5cbiAgLy8gRFBJX1BvbHlub21pYWxEZWdyZWUsIGhhdmluZyB0eXBlIGludFxuICBQb2x5bm9taWFsRGVncmVlID0gJ2RlZ3JlZScsXG5cbiAgLy8gRFBJX1BvcnQsIGhhdmluZyB0eXBlIGludFxuICBQb3J0ID0gJ2RhdGFzb3VyY2VQb3J0JyxcblxuICAvLyBEUElfUG9zaXRpb24sIGhhdmluZyB0eXBlIGludFxuICBQb3NpdGlvbiA9ICdwb3NpdGlvbicsXG5cbiAgLy8gRFBJX1BhcmVudFByb2plY3RJZCwgaGF2aW5nIHR5cGUgaW50XG4gIFBhcmVudFByb2plY3RJZCA9ICdwYXJlbnRQcm9qZWN0SWQnLFxuXG4gIC8vIERQSV9QdWJsaXNoUmVzdWx0U3RyaW5nSWQsIGhhdmluZyB0eXBlIGludFxuICBQdWJsaXNoUmVzdWx0U3RyaW5nSWQgPSAncHVibGlzaFJlc3VsdFN0cmluZ0lkJyxcblxuICAvLyBEUElfUmFkaXVzLCBoYXZpbmcgdHlwZSBpbnRcbiAgUmFkaXVzID0gJ3JhZGl1cycsXG5cbiAgLy8gRFBJX1JlYWRvdXRPZmZzZXQsIGhhdmluZyB0eXBlIGludFxuICBSZWFkb3V0T2Zmc2V0ID0gJ3JlYWRvdXRPZmZzZXQnLFxuXG4gIC8vIERQSV9SZWZlcmVuY2VJbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gIFJlZmVyZW5jZUluZGV4ID0gJ3JlZmVyZW5jZUluZGV4JyxcblxuICAvLyBEUElfUmVnaW9uSGVpZ2h0LCBoYXZpbmcgdHlwZSBpbnRcbiAgUmVnaW9uSGVpZ2h0ID0gJ3JlZ2lvbkhlaWdodCcsXG5cbiAgLy8gRFBJX1JlZ2lvbldpZHRoLCBoYXZpbmcgdHlwZSBpbnRcbiAgUmVnaW9uV2lkdGggPSAncmVnaW9uV2lkdGgnLFxuXG4gIC8vIERQSV9SZW1vdmVkRGF0YXNvdXJjZUNvdW50LCBoYXZpbmcgdHlwZSBpbnRcbiAgUmVtb3ZlZERhdGFzb3VyY2VDb3VudCA9ICdyZW1vdmVkRGF0YXNvdXJjZUNvdW50JyxcblxuICAvLyBEUElfUmVtb3ZlZFNoZWV0Q291bnQsIGhhdmluZyB0eXBlIGludFxuICBSZW1vdmVkU2hlZXRDb3VudCA9ICdyZW1vdmVkU2hlZXRDb3VudCcsXG5cbiAgLy8gRFBJX1Jlc2lkdWFsREYsIGhhdmluZyB0eXBlIGludFxuICBSZXNpZHVhbERGID0gJ3Jlc2lkdWFsRGYnLFxuXG4gIC8vIERQSV9SZXNpemVDb2x1bW4sIGhhdmluZyB0eXBlIGludFxuICBSZXNpemVDb2x1bW4gPSAncmVzaXplQ29sdW1uJyxcblxuICAvLyBEUElfUmVzdGFydEV2ZXJ5SW5kZXgsIGhhdmluZyB0eXBlIGludFxuICBSZXN0YXJ0RXZlcnlJbmRleCA9ICdyZXN0YXJ0RXZlcnlJbmRleCcsXG5cbiAgLy8gRFBJX1JpZ2h0TWFyZ2luLCBoYXZpbmcgdHlwZSBpbnRcbiAgUmlnaHRNYXJnaW4gPSAncmlnaHRNYXJnaW4nLFxuXG4gIC8vIERQSV9Sb3dDb3VudCwgaGF2aW5nIHR5cGUgaW50XG4gIFJvd0NvdW50ID0gJ3Jvd0NvdW50JyxcblxuICAvLyBEUElfUm93SGVpZ2h0LCBoYXZpbmcgdHlwZSBpbnRcbiAgUm93SGVpZ2h0ID0gJ3Jvd0hlaWdodCcsXG5cbiAgLy8gRFBJX1Jvd0lubmVyTGV2ZWxzLCBoYXZpbmcgdHlwZSBpbnRcbiAgUm93SW5uZXJMZXZlbHMgPSAncm93SW5uZXJMZXZlbHMnLFxuXG4gIC8vIERQSV9Sb3dMZXZlbHMsIGhhdmluZyB0eXBlIGludFxuICBSb3dMZXZlbHMgPSAncm93TGV2ZWxzJyxcblxuICAvLyBEUElfUm93TnVtYmVyLCBoYXZpbmcgdHlwZSBpbnRcbiAgUm93TnVtYmVyID0gJ3Jvd051bWJlcicsXG5cbiAgLy8gRFBJX1Jvd1dpZHRoLCBoYXZpbmcgdHlwZSBpbnRcbiAgUm93V2lkdGggPSAncm93V2lkdGgnLFxuXG4gIC8vIERQSV9TZWNvbmRWYWx1ZUluZGV4LCBoYXZpbmcgdHlwZSBpbnRcbiAgU2Vjb25kVmFsdWVJbmRleCA9ICdzZWNvbmRWYWx1ZUluZGV4JyxcblxuICAvLyBEUElfU2Vjb25kc0FnbywgaGF2aW5nIHR5cGUgaW50XG4gIFNlY29uZHNBZ28gPSAnc2Vjb25kc0FnbycsXG5cbiAgLy8gRFBJX1NlbGVjdGlvbkVuZCwgaGF2aW5nIHR5cGUgaW50XG4gIFNlbGVjdGlvbkVuZCA9ICdzZWxlY3Rpb25FbmQnLFxuXG4gIC8vIERQSV9TZWxlY3Rpb25TdGFydCwgaGF2aW5nIHR5cGUgaW50XG4gIFNlbGVjdGlvblN0YXJ0ID0gJ3NlbGVjdGlvblN0YXJ0JyxcblxuICAvLyBEUElfU2hhcGVQYWxldHRlSUQsIGhhdmluZyB0eXBlIGludFxuICBTaGFwZVBhbGV0dGVJRCA9ICdzaGFwZVBhbGV0dGVJZCcsXG5cbiAgLy8gRFBJX1NoZWV0SW5kZXgsIGhhdmluZyB0eXBlIGludFxuICBTaGVldEluZGV4ID0gJ3NoZWV0SW5kZXgnLFxuXG4gIC8vIERQSV9TaGVsZlBvc2l0aW9uSW5kZXgsIGhhdmluZyB0eXBlIGludFxuICBTaGVsZlBvc2l0aW9uSW5kZXggPSAnc2hlbGZQb3NJbmRleCcsXG5cbiAgLy8gRFBJX1NpemUsIGhhdmluZyB0eXBlIGludFxuICBTaXplID0gJ3NpemUnLFxuXG4gIC8vIERQSV9TaXplRGlmZmVyZW5jZSwgaGF2aW5nIHR5cGUgaW50XG4gIFNpemVEaWZmZXJlbmNlID0gJ3NpemVEZWx0YScsXG5cbiAgLy8gRFBJX1NuYXBEaXN0YW5jZSwgaGF2aW5nIHR5cGUgaW50XG4gIFNuYXBEaXN0YW5jZSA9ICdzbmFwRGlzdGFuY2UnLFxuXG4gIC8vIERQSV9TbmFwTG9jYXRpb24sIGhhdmluZyB0eXBlIGludFxuICBTbmFwTG9jYXRpb24gPSAnc25hcExvY2F0aW9uJyxcblxuICAvLyBEUElfU29sdmVPcmRlciwgaGF2aW5nIHR5cGUgaW50XG4gIFNvbHZlT3JkZXIgPSAnc29sdmVPcmRlcicsXG5cbiAgLy8gRFBJX1NwYWNlQmV0d2VlblBvaW50cywgaGF2aW5nIHR5cGUgaW50XG4gIFNwYWNlQmV0d2VlblBvaW50cyA9ICdzcGFjZUJldHdlZW5Qb2ludHMnLFxuXG4gIC8vIERQSV9TdGVwU2l6ZSwgaGF2aW5nIHR5cGUgaW50XG4gIFN0ZXBTaXplID0gJ3N0ZXBTaXplJyxcblxuICAvLyBEUElfU3RlcHMsIGhhdmluZyB0eXBlIGludFxuICBTdGVwcyA9ICdzdGVwcycsXG5cbiAgLy8gRFBJX1N0b3J5UG9pbnRJbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gIFN0b3J5UG9pbnRJbmRleCA9ICdjdXJyZW50U3Rvcnlwb2ludEluZGV4JyxcblxuICAvLyBEUElfU3R5bGVMZW4sIGhhdmluZyB0eXBlIGludFxuICBTdHlsZUxlbiA9ICd0b2tlbkxlbmd0aEZvclN0eWxlJyxcblxuICAvLyBEUElfU3R5bGVQb3MsIGhhdmluZyB0eXBlIGludFxuICBTdHlsZVBvcyA9ICd0b2tlblBvc2l0aW9uRm9yU3R5bGUnLFxuXG4gIC8vIERQSV9Td2F0Y2hBcmVhV2lkdGgsIGhhdmluZyB0eXBlIGludFxuICBTd2F0Y2hBcmVhV2lkdGggPSAnc3dhdGNoV2lkdGgnLFxuXG4gIC8vIERQSV9UYXJnZXRCaW5JZCwgaGF2aW5nIHR5cGUgaW50XG4gIFRhcmdldEJpbklkID0gJ3RhcmdldEJpbklkJyxcblxuICAvLyBEUElfVGFyZ2V0UHRYLCBoYXZpbmcgdHlwZSBpbnRcbiAgVGFyZ2V0UHRYID0gJ3RhcmdldFgnLFxuXG4gIC8vIERQSV9UYXJnZXRQdFksIGhhdmluZyB0eXBlIGludFxuICBUYXJnZXRQdFkgPSAndGFyZ2V0WScsXG5cbiAgLy8gRFBJX1RpbGVGYWN0b3IsIGhhdmluZyB0eXBlIGludFxuICBUaWxlRmFjdG9yID0gJ3RpbGVGYWN0b3InLFxuXG4gIC8vIERQSV9UaXRsZUhlaWdodCwgaGF2aW5nIHR5cGUgaW50XG4gIFRpdGxlSGVpZ2h0ID0gJ3RpdGxlSGVpZ2h0JyxcblxuICAvLyBEUElfVGl0bGVXaWR0aCwgaGF2aW5nIHR5cGUgaW50XG4gIFRpdGxlV2lkdGggPSAndGl0bGVXaWR0aCcsXG5cbiAgLy8gRFBJX1RvcEJvdHRvbUJvcmRlcldpZHRoLCBoYXZpbmcgdHlwZSBpbnRcbiAgVG9wQm90dG9tQm9yZGVyV2lkdGggPSAndG9wQm90dG9tQm9yZGVyV2lkdGgnLFxuXG4gIC8vIERQSV9VSUF1dG9tYXRpb25MaW5lU2l6ZSwgaGF2aW5nIHR5cGUgaW50XG4gIFVJQXV0b21hdGlvbkxpbmVTaXplID0gJ3VpQXV0b21hdGlvbkxpbmVTaXplJyxcblxuICAvLyBEUElfVUlBdXRvbWF0aW9uUGFnZVNpemUsIGhhdmluZyB0eXBlIGludFxuICBVSUF1dG9tYXRpb25QYWdlU2l6ZSA9ICd1aUF1dG9tYXRpb25QYWdlU2l6ZScsXG5cbiAgLy8gRFBJX1VJRCwgaGF2aW5nIHR5cGUgaW50XG4gIFVJRCA9ICd1aWQnLFxuXG4gIC8vIERQSV9VcHBlckJvdW5kLCBoYXZpbmcgdHlwZSBpbnRcbiAgVXBwZXJCb3VuZCA9ICd1cHBlckJvdW5kJyxcblxuICAvLyBEUElfVmVydFRleHRDZWxsLCBoYXZpbmcgdHlwZSBpbnRcbiAgVmVydFRleHRDZWxsID0gJ3ZlcnRUZXh0Q2VsbCcsXG5cbiAgLy8gRFBJX1dpZHRoLCBoYXZpbmcgdHlwZSBpbnRcbiAgV2lkdGggPSAndycsXG5cbiAgLy8gRFBJX1gsIGhhdmluZyB0eXBlIGludFxuICBYID0gJ3gnLFxuXG4gIC8vIERQSV9ZLCBoYXZpbmcgdHlwZSBpbnRcbiAgWSA9ICd5JyxcblxuICAvLyBEUElfWk9yZGVyLCBoYXZpbmcgdHlwZSBpbnRcbiAgWk9yZGVyID0gJ3pPcmRlcicsXG5cbiAgLy8gRFBJX1pvbmVJY29uSW5kZXgsIGhhdmluZyB0eXBlIGludFxuICBab25lSWNvbkluZGV4ID0gJ3pvbmVJY29uSW5kZXgnLFxuXG4gIC8vIERQSV9BbGlhc0luZGljZXMsIGhhdmluZyB0eXBlIGludFtdXG4gIEFsaWFzSW5kaWNlcyA9ICdhbGlhc0luZGljZXMnLFxuXG4gIC8vIERQSV9Bbm92YURGVmVjLCBoYXZpbmcgdHlwZSBpbnRbXVxuICBBbm92YURGVmVjID0gJ2Fub3ZhRGZWZWN0b3InLFxuXG4gIC8vIERQSV9Db2x1bW5JbmRpY2VzLCBoYXZpbmcgdHlwZSBpbnRbXVxuICBDb2x1bW5JbmRpY2VzID0gJ2NvbHVtbkluZGljZXMnLFxuXG4gIC8vIERQSV9EcmlsbEZpZWxkSW5kaWNlcywgaGF2aW5nIHR5cGUgaW50W11cbiAgRHJpbGxGaWVsZEluZGljZXMgPSAnZHJpbGxGaWVsZEluZGljZXMnLFxuXG4gIC8vIERQSV9GaWx0ZXJNYXhJbmRpY2VzLCBoYXZpbmcgdHlwZSBpbnRbXVxuICBGaWx0ZXJNYXhJbmRpY2VzID0gJ2ZpbHRlck1heEluZGljZXMnLFxuXG4gIC8vIERQSV9GaWx0ZXJNaW5JbmRpY2VzLCBoYXZpbmcgdHlwZSBpbnRbXVxuICBGaWx0ZXJNaW5JbmRpY2VzID0gJ2ZpbHRlck1pbkluZGljZXMnLFxuXG4gIC8vIERQSV9GaWx0ZXJWYWx1ZXNJbmRpY2VzLCBoYXZpbmcgdHlwZSBpbnRbXVxuICBGaWx0ZXJWYWx1ZXNJbmRpY2VzID0gJ2ZpbHRlclZhbHVlSW5kaWNlcycsXG5cbiAgLy8gRFBJX0Zvcm1hdFN0cmluZ0luZGljZXMsIGhhdmluZyB0eXBlIGludFtdXG4gIEZvcm1hdFN0cmluZ0luZGljZXMgPSAnZm9ybWF0c3RySW5kaWNlcycsXG5cbiAgLy8gRFBJX0Zvcm1hdHRlZFZhbEluZGljZXMsIGhhdmluZyB0eXBlIGludFtdXG4gIEZvcm1hdHRlZFZhbEluZGljZXMgPSAnZm9ybWF0VmFsSWR4cycsXG5cbiAgLy8gRFBJX1BhbGV0dGVJbmRpY2VzLCBoYXZpbmcgdHlwZSBpbnRbXVxuICBQYWxldHRlSW5kaWNlcyA9ICdwYWxldHRlc0luZGljZXMnLFxuXG4gIC8vIERQSV9QYW5lSW5kaWNlcywgaGF2aW5nIHR5cGUgaW50W11cbiAgUGFuZUluZGljZXMgPSAncGFuZUluZGljZXMnLFxuXG4gIC8vIERQSV9Qb2ludHMsIGhhdmluZyB0eXBlIGludFtdXG4gIFBvaW50cyA9ICdwb2ludHMnLFxuXG4gIC8vIERQSV9RdWlja0ZpbHRlclNldHRpbmdzLCBoYXZpbmcgdHlwZSBpbnRbXVxuICBRdWlja0ZpbHRlclNldHRpbmdzID0gJ3F1aWNrRmlsdGVyU2V0dGluZ3MnLFxuXG4gIC8vIERQSV9TZWxlY3RlZEluZGljZXMsIGhhdmluZyB0eXBlIGludFtdXG4gIFNlbGVjdGVkSW5kaWNlcyA9ICdzZWxlY3RlZEluZGljZXMnLFxuXG4gIC8vIERQSV9TaGVsZlBvc2l0aW9uSW5kaWNlcywgaGF2aW5nIHR5cGUgaW50W11cbiAgU2hlbGZQb3NpdGlvbkluZGljZXMgPSAnc2hlbGZQb3NJbmRpY2VzJyxcblxuICAvLyBEUElfVGlsZUJveCwgaGF2aW5nIHR5cGUgaW50W11cbiAgVGlsZUJveCA9ICd0aWxlQm94JyxcblxuICAvLyBEUElfVHJhaWxPdmVycmlkZSwgaGF2aW5nIHR5cGUgaW50W11cbiAgVHJhaWxPdmVycmlkZSA9ICd0cmFpbE92ZXJyaWRlJyxcblxuICAvLyBEUElfVUlEcywgaGF2aW5nIHR5cGUgaW50W11cbiAgVUlEcyA9ICd1aWRzJyxcblxuICAvLyBEUElfVmFsdWVJbmRpY2VzLCBoYXZpbmcgdHlwZSBpbnRbXVxuICBWYWx1ZUluZGljZXMgPSAndmFsdWVJbmRpY2VzJyxcblxuICAvLyBEUElfWENlbGxPZmZzZXRzLCBoYXZpbmcgdHlwZSBpbnRbXVxuICBYQ2VsbE9mZnNldHMgPSAneENlbGxPZmZzZXRzJyxcblxuICAvLyBEUElfWFBpeGVsT2Zmc2V0cywgaGF2aW5nIHR5cGUgaW50W11cbiAgWFBpeGVsT2Zmc2V0cyA9ICd4UGl4ZWxPZmZzZXRzJyxcblxuICAvLyBEUElfWUNlbGxPZmZzZXRzLCBoYXZpbmcgdHlwZSBpbnRbXVxuICBZQ2VsbE9mZnNldHMgPSAneUNlbGxPZmZzZXRzJyxcblxuICAvLyBEUElfWVBpeGVsT2Zmc2V0cywgaGF2aW5nIHR5cGUgaW50W11cbiAgWVBpeGVsT2Zmc2V0cyA9ICd5UGl4ZWxPZmZzZXRzJyxcblxuICAvLyBEUElfSW50TWFwLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIGludClcbiAgSW50TWFwID0gJ2ludE1hcCcsXG5cbiAgLy8gRFBJX1NlbGVjdGVkQXV0aFNldHRpbmdJbmRpY2VzLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIGludClcbiAgU2VsZWN0ZWRBdXRoU2V0dGluZ0luZGljZXMgPSAnc2VsZWN0ZWRBdXRoU2V0dGluZ0luZGljZXMnLFxuXG4gIC8vIERQSV9BY3RpdmVTdG9yeVBvaW50SUQsIGhhdmluZyB0eXBlIHVpbnRcbiAgQWN0aXZlU3RvcnlQb2ludElEID0gJ2FjdGl2ZVN0b3J5UG9pbnRJZCcsXG5cbiAgLy8gRFBJX0FjdGl2ZVpvbmVJRCwgaGF2aW5nIHR5cGUgdWludFxuICBBY3RpdmVab25lSUQgPSAnYWN0aXZlWm9uZUlkJyxcblxuICAvLyBEUElfQWN0dWFsU2l6ZSwgaGF2aW5nIHR5cGUgdWludFxuICBBY3R1YWxTaXplID0gJ2FjdHVhbFNpemUnLFxuXG4gIC8vIERQSV9BZGRJbkRlYnVnUG9ydCwgaGF2aW5nIHR5cGUgdWludFxuICBBZGRJbkRlYnVnUG9ydCA9ICdhZGRJbkRlYnVnUG9ydCcsXG5cbiAgLy8gRFBJX0FnZ3JlZ2F0aW9uSW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgQWdncmVnYXRpb25JbmRleCA9ICdhZ2dyZWdhdGlvbkluZGV4JyxcblxuICAvLyBEUElfQW5ub3RhdGlvbklELCBoYXZpbmcgdHlwZSB1aW50XG4gIEFubm90YXRpb25JRCA9ICdhbm5vdGF0aW9uSWQnLFxuXG4gIC8vIERQSV9Bc3NpZ25lZEFsaWFzQ291bnQsIGhhdmluZyB0eXBlIHVpbnRcbiAgQXNzaWduZWRBbGlhc0NvdW50ID0gJ2Fzc2lnbmVkQWxpYXNDb3VudCcsXG5cbiAgLy8gRFBJX0NhcGFiaWxpdHlJZCwgaGF2aW5nIHR5cGUgdWludFxuICBDYXBhYmlsaXR5SWQgPSAnY2FwYWJpbGl0eUlkJyxcblxuICAvLyBEUElfQ2FyZXRJbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICBDYXJldEluZGV4ID0gJ2NhcmV0SW5kZXgnLFxuXG4gIC8vIERQSV9DZWxsSUQsIGhhdmluZyB0eXBlIHVpbnRcbiAgQ2VsbElEID0gJ2NlbGxJZCcsXG5cbiAgLy8gRFBJX0NvbHVtbkluZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gIENvbHVtbkluZGV4ID0gJ2NvbHVtbkluZGV4JyxcblxuICAvLyBEUElfQ29tbWFuZElELCBoYXZpbmcgdHlwZSB1aW50XG4gIENvbW1hbmRJRCA9ICdpZCcsXG5cbiAgLy8gRFBJX0NvbW1hbmRJbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICBDb21tYW5kSW5kZXggPSAnaW5kZXgnLFxuXG4gIC8vIERQSV9Db250cm9sbGVySWQsIGhhdmluZyB0eXBlIHVpbnRcbiAgQ29udHJvbGxlcklkID0gJ2NvbnRyb2xsZXJJZCcsXG5cbiAgLy8gRFBJX0NvdW50LCBoYXZpbmcgdHlwZSB1aW50XG4gIENvdW50ID0gJ2NvdW50JyxcblxuICAvLyBEUElfVVJvd0NvdW50LCBoYXZpbmcgdHlwZSB1aW50XG4gIFVSb3dDb3VudCA9ICd1Um93Q291bnQnLFxuXG4gIC8vIERQSV9VQ29sdW1uQ291bnQsIGhhdmluZyB0eXBlIHVpbnRcbiAgVUNvbHVtbkNvdW50ID0gJ3VDb2x1bW5Db3VudCcsXG5cbiAgLy8gRFBJX0N1cnJlbnRQYWdlLCBoYXZpbmcgdHlwZSB1aW50XG4gIEN1cnJlbnRQYWdlID0gJ2N1cnJlbnRQYWdlJyxcblxuICAvLyBEUElfRGF0ZVBlcmlvZHNDb3VudCwgaGF2aW5nIHR5cGUgdWludFxuICBEYXRlUGVyaW9kc0NvdW50ID0gJ2RhdGVQZXJpb2RzQ291bnQnLFxuXG4gIC8vIERQSV9EZWNpbWFscywgaGF2aW5nIHR5cGUgdWludFxuICBEZWNpbWFscyA9ICdkZWNpbWFscycsXG5cbiAgLy8gRFBJX0RlZmF1bHRIZWlnaHQsIGhhdmluZyB0eXBlIHVpbnRcbiAgRGVmYXVsdEhlaWdodCA9ICdkZWZhdWx0SGVpZ2h0JyxcblxuICAvLyBEUElfRGVmYXVsdEl0ZW0sIGhhdmluZyB0eXBlIHVpbnRcbiAgRGVmYXVsdEl0ZW0gPSAnZGVmYXVsdEl0ZW0nLFxuXG4gIC8vIERQSV9EZWZhdWx0V2lkdGgsIGhhdmluZyB0eXBlIHVpbnRcbiAgRGVmYXVsdFdpZHRoID0gJ2RlZmF1bHRXaWR0aCcsXG5cbiAgLy8gRFBJX0RlcHRoLCBoYXZpbmcgdHlwZSB1aW50XG4gIERlcHRoID0gJ2RlcHRoJyxcblxuICAvLyBEUElfRGV0YWlsSUQsIGhhdmluZyB0eXBlIHVpbnRcbiAgRGV0YWlsSUQgPSAnZGV0YWlsSWQnLFxuXG4gIC8vIERQSV9EcmlsbExldmVsLCBoYXZpbmcgdHlwZSB1aW50XG4gIERyaWxsTGV2ZWwgPSAnZHJpbGxMZXZlbCcsXG5cbiAgLy8gRFBJX0R1cGxpY2F0ZUluZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gIER1cGxpY2F0ZUluZGV4ID0gJ2R1cGxpY2F0ZUluZGV4JyxcblxuICAvLyBEUElfRW5kSW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgRW5kSW5kZXggPSAnZW5kSW5kZXgnLFxuXG4gIC8vIERQSV9GaWVsZEljb25JZHgsIGhhdmluZyB0eXBlIHVpbnRcbiAgRmllbGRJY29uSWR4ID0gJ2ZpZWxkSWNvbklkeCcsXG5cbiAgLy8gRFBJX0ZpbHRlckxldmVsLCBoYXZpbmcgdHlwZSB1aW50XG4gIEZpbHRlckxldmVsID0gJ2ZpbHRlckxldmVsJyxcblxuICAvLyBEUElfRmlsdGVyVGlsZVNpemUsIGhhdmluZyB0eXBlIHVpbnRcbiAgRmlsdGVyVGlsZVNpemUgPSAnZmlsdGVyVGlsZVNpemUnLFxuXG4gIC8vIERQSV9GaXNjYWxZZWFyU3RhcnQsIGhhdmluZyB0eXBlIHVpbnRcbiAgRmlzY2FsWWVhclN0YXJ0ID0gJ2Zpc2NhbFllYXJTdGFydCcsXG5cbiAgLy8gRFBJX0ZpdFBhZ2VzQWNyb3NzLCBoYXZpbmcgdHlwZSB1aW50XG4gIEZpdFBhZ2VzQWNyb3NzID0gJ3BhZ2VGaXRIb3Jpem9udGFsJyxcblxuICAvLyBEUElfRml0UGFnZXNEb3duLCBoYXZpbmcgdHlwZSB1aW50XG4gIEZpdFBhZ2VzRG93biA9ICdwYWdlRml0VmVydGljYWwnLFxuXG4gIC8vIERQSV9GaXhlZEluZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gIEZpeGVkSW5kZXggPSAnZml4ZWRJbmRleCcsXG5cbiAgLy8gRFBJX0ZsaXBib2FyZFpvbmVJRCwgaGF2aW5nIHR5cGUgdWludFxuICBGbGlwYm9hcmRab25lSUQgPSAnZmxpcGJvYXJkWm9uZUlkJyxcblxuICAvLyBEUElfRm9yZWNhc3RBdXRvUmFuZ2VTaXplLCBoYXZpbmcgdHlwZSB1aW50XG4gIEZvcmVjYXN0QXV0b1JhbmdlU2l6ZSA9ICdmb3JlY2FzdEF1dG9SYW5nZVNpemUnLFxuXG4gIC8vIERQSV9Gb3JlY2FzdEVuZE9mUmFuZ2UsIGhhdmluZyB0eXBlIHVpbnRcbiAgRm9yZWNhc3RFbmRPZlJhbmdlID0gJ2ZvcmVjYXN0RW5kT2ZSYW5nZScsXG5cbiAgLy8gRFBJX0ZvcmVjYXN0SWdub3JlTGFzdCwgaGF2aW5nIHR5cGUgdWludFxuICBGb3JlY2FzdElnbm9yZUxhc3QgPSAnZm9yZWNhc3RJZ25vcmVMYXN0JyxcblxuICAvLyBEUElfRm9yZWNhc3ROZXh0UmFuZ2VTaXplLCBoYXZpbmcgdHlwZSB1aW50XG4gIEZvcmVjYXN0TmV4dFJhbmdlU2l6ZSA9ICdmb3JlY2FzdE5leHRSYW5nZVNpemUnLFxuXG4gIC8vIERQSV9Hcm91cEZsYWdzLCBoYXZpbmcgdHlwZSB1aW50XG4gIEdyb3VwRmxhZ3MgPSAnZ3JvdXBGbGFnJyxcblxuICAvLyBEUElfSGllcmFyY2h5TGV2ZWxzLCBoYXZpbmcgdHlwZSB1aW50XG4gIEhpZXJhcmNoeUxldmVscyA9ICdoaWVyYXJjaHlMZXZlbHMnLFxuXG4gIC8vIERQSV9IaWVyYXJjaHlNZW1iZXJJZCwgaGF2aW5nIHR5cGUgdWludFxuICBIaWVyYXJjaHlNZW1iZXJJZCA9ICdoaWVyYXJjaHlNZW1iZXJJZCcsXG5cbiAgLy8gRFBJX0hpdFRlc3RGbGFncywgaGF2aW5nIHR5cGUgdWludFxuICBIaXRUZXN0RmxhZ3MgPSAnaGl0VGVzdEZsYWdzJyxcblxuICAvLyBEUElfSW1hZ2VIZWlnaHQsIGhhdmluZyB0eXBlIHVpbnRcbiAgSW1hZ2VIZWlnaHQgPSAnaW1hZ2VIZWlnaHQnLFxuXG4gIC8vIERQSV9JbWFnZVdpZHRoLCBoYXZpbmcgdHlwZSB1aW50XG4gIEltYWdlV2lkdGggPSAnaW1hZ2VXaWR0aCcsXG5cbiAgLy8gRFBJX0l0ZW1JbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICBJdGVtSW5kZXggPSAnaXRlbUluZGV4JyxcblxuICAvLyBEUElfSXRlbUluZGV4MSwgaGF2aW5nIHR5cGUgdWludFxuICBJdGVtSW5kZXgxID0gJ2l0ZW1JbmRleDEnLFxuXG4gIC8vIERQSV9MaW5lSGVpZ2h0LCBoYXZpbmcgdHlwZSB1aW50XG4gIExpbmVIZWlnaHQgPSAnbGluZUhlaWdodCcsXG5cbiAgLy8gRFBJX01hcEludGVybWVkaWF0ZUxldmVscywgaGF2aW5nIHR5cGUgdWludFxuICBNYXBJbnRlcm1lZGlhdGVMZXZlbHMgPSAnbWFwSW50ZXJtZWRpYXRlTGV2ZWxzJyxcblxuICAvLyBEUElfTWFwV29ybGRSZXBlYXRzLCBoYXZpbmcgdHlwZSB1aW50XG4gIE1hcFdvcmxkUmVwZWF0cyA9ICdtYXBXb3JsZFJlcGVhdHMnLFxuXG4gIC8vIERQSV9NYXhBbHBoYSwgaGF2aW5nIHR5cGUgdWludFxuICBNYXhBbHBoYSA9ICdtYXhBbHBoYScsXG5cbiAgLy8gRFBJX01heEhlaWdodCwgaGF2aW5nIHR5cGUgdWludFxuICBNYXhIZWlnaHQgPSAnbWF4SGVpZ2h0JyxcblxuICAvLyBEUElfTWF4TnVtYmVyV2ViTGlzdEl0ZW1zLCBoYXZpbmcgdHlwZSB1aW50XG4gIE1heE51bWJlcldlYkxpc3RJdGVtcyA9ICdtYXhOdW1iZXJXZWJMaXN0SXRlbXMnLFxuXG4gIC8vIERQSV9NYXhQcmV2T3JOZXh0VmFsdWVzLCBoYXZpbmcgdHlwZSB1aW50XG4gIE1heFByZXZPck5leHRWYWx1ZXMgPSAnbWF4UHJldk9yTmV4dFZhbHVlcycsXG5cbiAgLy8gRFBJX01heFJvd3MsIGhhdmluZyB0eXBlIHVpbnRcbiAgTWF4Um93cyA9ICdtYXhSb3dzJyxcblxuICAvLyBEUElfTWF4VHJhbnNwYXJlbmN5LCBoYXZpbmcgdHlwZSB1aW50XG4gIE1heFRyYW5zcGFyZW5jeSA9ICdjb2xvck1heFRyYW5zcGFyZW5jeVZhbHVlJyxcblxuICAvLyBEUElfTWF4V2lkdGgsIGhhdmluZyB0eXBlIHVpbnRcbiAgTWF4V2lkdGggPSAnbWF4V2lkdGgnLFxuXG4gIC8vIERQSV9NaW5Db2x1bW5zLCBoYXZpbmcgdHlwZSB1aW50XG4gIE1pbkNvbHVtbnMgPSAnbWluQ29sdW1ucycsXG5cbiAgLy8gRFBJX01pbkhlaWdodCwgaGF2aW5nIHR5cGUgdWludFxuICBNaW5IZWlnaHQgPSAnbWluSGVpZ2h0JyxcblxuICAvLyBEUElfTWluUHJldk9yTmV4dFZhbHVlcywgaGF2aW5nIHR5cGUgdWludFxuICBNaW5QcmV2T3JOZXh0VmFsdWVzID0gJ21pblByZXZPck5leHRWYWx1ZXMnLFxuXG4gIC8vIERQSV9NaW5UcmFuc3BhcmVuY3ksIGhhdmluZyB0eXBlIHVpbnRcbiAgTWluVHJhbnNwYXJlbmN5ID0gJ2NvbG9yTWluVHJhbnNwYXJlbmN5VmFsdWUnLFxuXG4gIC8vIERQSV9NaW5XaWR0aCwgaGF2aW5nIHR5cGUgdWludFxuICBNaW5XaWR0aCA9ICdtaW5XaWR0aCcsXG5cbiAgLy8gRFBJX05lc3RlZENhbGNzSW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgTmVzdGVkQ2FsY3NJbmRleCA9ICduZXN0ZWRDYWxjc0luZGV4JyxcblxuICAvLyBEUElfTmV4dFZhbHVlcywgaGF2aW5nIHR5cGUgdWludFxuICBOZXh0VmFsdWVzID0gJ25leHRWYWx1ZXMnLFxuXG4gIC8vIERQSV9Ob2RlTGV2ZWwsIGhhdmluZyB0eXBlIHVpbnRcbiAgTm9kZUxldmVsID0gJ25vZGVMZXZlbCcsXG5cbiAgLy8gRFBJX051bUhpZ2hsaWdodGVkLCBoYXZpbmcgdHlwZSB1aW50XG4gIE51bUhpZ2hsaWdodGVkID0gJ251bUhpZ2hsaWdodGVkJyxcblxuICAvLyBEUElfTnVtYmVyT2ZOZXh0VmFsdWVzLCBoYXZpbmcgdHlwZSB1aW50XG4gIE51bWJlck9mTmV4dFZhbHVlcyA9ICdudW1iZXJPZk5leHRWYWx1ZXMnLFxuXG4gIC8vIERQSV9OdW1iZXJPZlByZXZWYWx1ZXMsIGhhdmluZyB0eXBlIHVpbnRcbiAgTnVtYmVyT2ZQcmV2VmFsdWVzID0gJ251bWJlck9mUHJldlZhbHVlcycsXG5cbiAgLy8gRFBJX09iamVjdElELCBoYXZpbmcgdHlwZSB1aW50XG4gIE9iamVjdElEID0gJ29iamVjdElkJyxcblxuICAvLyBEUElfT3JkZXJpbmdUeXBlSW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgT3JkZXJpbmdUeXBlSW5kZXggPSAnb3JkZXJpbmdUeXBlSW5kZXgnLFxuXG4gIC8vIERQSV9QYWdlQ291bnQsIGhhdmluZyB0eXBlIHVpbnRcbiAgUGFnZUNvdW50ID0gJ3BhZ2VDb3VudCcsXG5cbiAgLy8gRFBJX1BhZ2VGYWRlRW5kLCBoYXZpbmcgdHlwZSB1aW50XG4gIFBhZ2VGYWRlRW5kID0gJ2ZhZGVFbmQnLFxuXG4gIC8vIERQSV9QYWdlRmFkZVN0YXJ0LCBoYXZpbmcgdHlwZSB1aW50XG4gIFBhZ2VGYWRlU3RhcnQgPSAnZmFkZVN0YXJ0JyxcblxuICAvLyBEUElfUGFnZUluZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gIFBhZ2VJbmRleCA9ICdwYWdlSW5kZXgnLFxuXG4gIC8vIERQSV9QYWdlTnVtYmVyLCBoYXZpbmcgdHlwZSB1aW50XG4gIFBhZ2VOdW1iZXIgPSAncGFnZU51bWJlcicsXG5cbiAgLy8gRFBJX1BhZ2VTY2FsZVBlcmNlbnQsIGhhdmluZyB0eXBlIHVpbnRcbiAgUGFnZVNjYWxlUGVyY2VudCA9ICdwYWdlU2NhbGVQZXJjZW50JyxcblxuICAvLyBEUElfUGFnZVRyYWlsTGVuZ3RoLCBoYXZpbmcgdHlwZSB1aW50XG4gIFBhZ2VUcmFpbExlbmd0aCA9ICdoaXN0b3J5TGVuZ3RoJyxcblxuICAvLyBEUElfUGFsZXR0ZUZsYWdzVmFsLCBoYXZpbmcgdHlwZSB1aW50XG4gIFBhbGV0dGVGbGFnc1ZhbCA9ICdwYWxldHRlRmxhZ3NWYWwnLFxuXG4gIC8vIERQSV9QYW5lSW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgUGFuZUluZGV4ID0gJ3BhbmVJbmRleCcsXG5cbiAgLy8gRFBJX1BhcmFtQ3RybERpc3BsYXlGbGFncywgaGF2aW5nIHR5cGUgdWludFxuICBQYXJhbUN0cmxEaXNwbGF5RmxhZ3MgPSAncGFyYW1EaXNwbGF5RmxhZ3MnLFxuXG4gIC8vIERQSV9QYXJlbnRab25lSUQsIGhhdmluZyB0eXBlIHVpbnRcbiAgUGFyZW50Wm9uZUlEID0gJ3BhcmVudFpvbmVJZCcsXG5cbiAgLy8gRFBJX1BlcmNlbnRpbGVQYXJhbSwgaGF2aW5nIHR5cGUgdWludFxuICBQZXJjZW50aWxlUGFyYW0gPSAncGVyY2VudGlsZVBhcmFtJyxcblxuICAvLyBEUElfUHJldlZhbHVlcywgaGF2aW5nIHR5cGUgdWludFxuICBQcmV2VmFsdWVzID0gJ3ByZXZWYWx1ZXMnLFxuXG4gIC8vIERQSV9RUkdCQ29sb3IsIGhhdmluZyB0eXBlIHVpbnRcbiAgUVJHQkNvbG9yID0gJ3FyZ2JDb2xvcicsXG5cbiAgLy8gRFBJX1JhbmdlTiwgaGF2aW5nIHR5cGUgdWludFxuICBSYW5nZU4gPSAncmFuZ2VOJyxcblxuICAvLyBEUElfUmFua1R5cGVJbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICBSYW5rVHlwZUluZGV4ID0gJ3JhbmtUeXBlSW5kZXgnLFxuXG4gIC8vIERQSV9SZW5kZXJDb21wbGV4aXR5LCBoYXZpbmcgdHlwZSB1aW50XG4gIFJlbmRlckNvbXBsZXhpdHkgPSAncmVuZGVyQ29tcGxleGl0eUxpbWl0JyxcblxuICAvLyBEUElfUm93SW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgUm93SW5kZXggPSAncm93SW5kZXgnLFxuXG4gIC8vIERQSV9TZWxlY3RlZEF1dGhTZXR0aW5nSW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgU2VsZWN0ZWRBdXRoU2V0dGluZ0luZGV4ID0gJ3NlbGVjdGVkQXV0aFNldHRpbmdJbmRleCcsXG5cbiAgLy8gRFBJX1NlbGVjdGVkRnVsbFNjaGVkdWxlSW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgU2VsZWN0ZWRGdWxsU2NoZWR1bGVJbmRleCA9ICdzZWxlY3RlZEZ1bGxTY2hlZHVsZUluZGV4JyxcblxuICAvLyBEUElfU2VsZWN0ZWRJbmNyU2NoZWR1bGVJbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICBTZWxlY3RlZEluY3JTY2hlZHVsZUluZGV4ID0gJ3NlbGVjdGVkSW5jclNjaGVkdWxlSW5kZXgnLFxuXG4gIC8vIERQSV9TZWxlY3RlZFB1Ymxpc2hDaG9pY2VJbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICBTZWxlY3RlZFB1Ymxpc2hDaG9pY2VJbmRleCA9ICdzZWxlY3RlZFB1Ymxpc2hDaG9pY2VJbmRleCcsXG5cbiAgLy8gRFBJX1NlbGVjdGVkTWVtYmVyQ291bnQsIGhhdmluZyB0eXBlIHVpbnRcbiAgU2VsZWN0ZWRNZW1iZXJDb3VudCA9ICdzZWxlY3RlZE1lbWJlckNvdW50JyxcblxuICAvLyBEUElfU2hhcGVJRCwgaGF2aW5nIHR5cGUgdWludFxuICBTaGFwZUlEID0gJ3NoYXBlSWQnLFxuXG4gIC8vIERQSV9TaGVldFVzZUNvdW50LCBoYXZpbmcgdHlwZSB1aW50XG4gIFNoZWV0VXNlQ291bnQgPSAndXNlQ291bnQnLFxuXG4gIC8vIERQSV9TaGVsZkl0ZW1JRCwgaGF2aW5nIHR5cGUgdWludFxuICBTaGVsZkl0ZW1JRCA9ICdzaGVsZkl0ZW1JZCcsXG5cbiAgLy8gRFBJX1NpZ0ZpZ3MsIGhhdmluZyB0eXBlIHVpbnRcbiAgU2lnRmlncyA9ICdzaWdGaWdzJyxcblxuICAvLyBEUElfU29ydEFnZ0luZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gIFNvcnRBZ2dJbmRleCA9ICdzb3J0QWdnSW5kdlZhbHVlcycsXG5cbiAgLy8gRFBJX1NvcnRDb2x1bW5JbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICBTb3J0Q29sdW1uSW5kZXggPSAnc29ydENvbHVtbkluZGV4JyxcblxuICAvLyBEUElfU29ydERpcmVjdGlvbkluZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gIFNvcnREaXJlY3Rpb25JbmRleCA9ICdzb3J0RGlyZWN0aW9uSW5kZXgnLFxuXG4gIC8vIERQSV9Tb3J0RmllbGRJbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICBTb3J0RmllbGRJbmRleCA9ICdzb3J0RmllbGRJbmRleCcsXG5cbiAgLy8gRFBJX1N0YXJ0SW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgU3RhcnRJbmRleCA9ICdzdGFydEluZGV4JyxcblxuICAvLyBEUElfU3RhcnRPZldlZWssIGhhdmluZyB0eXBlIHVpbnRcbiAgU3RhcnRPZldlZWsgPSAnc3RhcnRPZldlZWsnLFxuXG4gIC8vIERQSV9TdG9yeVBvaW50SUQsIGhhdmluZyB0eXBlIHVpbnRcbiAgU3RvcnlQb2ludElEID0gJ3N0b3J5UG9pbnRJZCcsXG5cbiAgLy8gRFBJX1RhYmxlQ2FsY1R5cGVJbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICBUYWJsZUNhbGNUeXBlSW5kZXggPSAndGFibGVDYWxjVHlwZUluZGV4JyxcblxuICAvLyBEUElfVGFibGVDYWxjVHlwZXNVc2VkLCBoYXZpbmcgdHlwZSB1aW50XG4gIFRhYmxlQ2FsY1R5cGVzVXNlZCA9ICd0YWJsZUNhbGNUeXBlc1VzZWQnLFxuXG4gIC8vIERQSV9UZW1wbGF0ZUluZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gIFRlbXBsYXRlSW5kZXggPSAndGVtcGxhdGVJbmRleCcsXG5cbiAgLy8gRFBJX1RpbGVDb3VudCwgaGF2aW5nIHR5cGUgdWludFxuICBUaWxlQ291bnQgPSAndGlsZUNvdW50JyxcblxuICAvLyBEUElfVGltZW91dFNlY29uZHMsIGhhdmluZyB0eXBlIHVpbnRcbiAgVGltZW91dFNlY29uZHMgPSAndGltZW91dFNlY29uZHMnLFxuXG4gIC8vIERQSV9Ub3BOLCBoYXZpbmcgdHlwZSB1aW50XG4gIFRvcE4gPSAndG9wTicsXG5cbiAgLy8gRFBJX1RvdGFsTnVtYmVyT2ZJdGVtc0luU2V0LCBoYXZpbmcgdHlwZSB1aW50XG4gIFRvdGFsTnVtYmVyT2ZJdGVtc0luU2V0ID0gJ3RvdGFsTnVtYmVyT2ZJdGVtc0luU2V0JyxcblxuICAvLyBEUElfVG90YWxNZW1iZXJDb3VudCwgaGF2aW5nIHR5cGUgdWludFxuICBUb3RhbE1lbWJlckNvdW50ID0gJ3RvdGFsTWVtYmVyQ291bnQnLFxuXG4gIC8vIERQSV9UcmFuc3BhcmVuY3ksIGhhdmluZyB0eXBlIHVpbnRcbiAgVHJhbnNwYXJlbmN5ID0gJ2NvbG9yVHJhbnNwYXJlbmN5VmFsdWUnLFxuXG4gIC8vIERQSV9UdXBsZUlELCBoYXZpbmcgdHlwZSB1aW50XG4gIFR1cGxlSUQgPSAndHVwbGVJZCcsXG5cbiAgLy8gRFBJX1VJbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICBVSW5kZXggPSAndWluZGV4JyxcblxuICAvLyBEUElfVW5kb1Bvc2l0aW9uLCBoYXZpbmcgdHlwZSB1aW50XG4gIFVuZG9Qb3NpdGlvbiA9ICd1bmRvUG9zaXRpb24nLFxuXG4gIC8vIERQSV9VbnNpZ25lZFdpZHRoLCBoYXZpbmcgdHlwZSB1aW50XG4gIFVuc2lnbmVkV2lkdGggPSAndXcnLFxuXG4gIC8vIERQSV9VbnNpZ25lZFdpZHRoQm90dG9tLCBoYXZpbmcgdHlwZSB1aW50XG4gIFVuc2lnbmVkV2lkdGhCb3R0b20gPSAndXdiJyxcblxuICAvLyBEUElfVW5zaWduZWRXaWR0aExlZnQsIGhhdmluZyB0eXBlIHVpbnRcbiAgVW5zaWduZWRXaWR0aExlZnQgPSAndXdsJyxcblxuICAvLyBEUElfVW5zaWduZWRXaWR0aFJpZ2h0LCBoYXZpbmcgdHlwZSB1aW50XG4gIFVuc2lnbmVkV2lkdGhSaWdodCA9ICd1d3InLFxuXG4gIC8vIERQSV9VbnNpZ25lZFdpZHRoVG9wLCBoYXZpbmcgdHlwZSB1aW50XG4gIFVuc2lnbmVkV2lkdGhUb3AgPSAndXd0JyxcblxuICAvLyBEUElfVmFsdWVJbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICBWYWx1ZUluZGV4ID0gJ3ZhbHVlSW5kZXgnLFxuXG4gIC8vIERQSV9WYWx1ZUludCwgaGF2aW5nIHR5cGUgdWludFxuICBWYWx1ZUludCA9ICd2YWx1ZUludCcsXG5cbiAgLy8gRFBJX1dvcmxkT2Zmc2V0LCBoYXZpbmcgdHlwZSB1aW50XG4gIFdvcmxkT2Zmc2V0ID0gJ3dvcmxkT2Zmc2V0JyxcblxuICAvLyBEUElfWER1cGxpY2F0ZUluZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gIFhEdXBsaWNhdGVJbmRleCA9ICd4RHVwbGljYXRlSW5kZXgnLFxuXG4gIC8vIERQSV9YSW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgWEluZGV4ID0gJ3hJbmRleCcsXG5cbiAgLy8gRFBJX1lEdXBsaWNhdGVJbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICBZRHVwbGljYXRlSW5kZXggPSAneUR1cGxpY2F0ZUluZGV4JyxcblxuICAvLyBEUElfWUluZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gIFlJbmRleCA9ICd5SW5kZXgnLFxuXG4gIC8vIERQSV9ab25lSUQsIGhhdmluZyB0eXBlIHVpbnRcbiAgWm9uZUlEID0gJ3pvbmVJZCcsXG5cbiAgLy8gRFBJX1pvbmVaT3JkZXIsIGhhdmluZyB0eXBlIHVpbnRcbiAgWm9uZVpPcmRlciA9ICd6b25lWk9yZGVyJyxcblxuICAvLyBEUElfQ29tcG9uZW50SUQsIGhhdmluZyB0eXBlIHVpbnRcbiAgQ29tcG9uZW50SUQgPSAnY29tcG9uZW50SWQnLFxuXG4gIC8vIERQSV9Ob25UaHJlYWRQb29sVXNlQ291bnQsIGhhdmluZyB0eXBlIHVpbnRcbiAgTm9uVGhyZWFkUG9vbFVzZUNvdW50ID0gJ25vblRocmVhZFBvb2xVc2VDb3VudCcsXG5cbiAgLy8gRFBJX0FkZHJlc3NpbmdJbmRpY2VzLCBoYXZpbmcgdHlwZSB1aW50W11cbiAgQWRkcmVzc2luZ0luZGljZXMgPSAnYWRkcmVzc2luZ0luZGljZXMnLFxuXG4gIC8vIERQSV9BZGRyZXNzaW5nSW52YWxpZEluZGljZXMsIGhhdmluZyB0eXBlIHVpbnRbXVxuICBBZGRyZXNzaW5nSW52YWxpZEluZGljZXMgPSAnYWRkcmVzc2luZ0ludmFsaWRJbmRpY2VzJyxcblxuICAvLyBEUElfQ2hpbGRab25lSWRzLCBoYXZpbmcgdHlwZSB1aW50W11cbiAgQ2hpbGRab25lSWRzID0gJ2NoaWxkWm9uZUlkcycsXG5cbiAgLy8gRFBJX0NvbG9yTGlzdCwgaGF2aW5nIHR5cGUgdWludFtdXG4gIENvbG9yTGlzdCA9ICdjb2xvckxpc3QnLFxuXG4gIC8vIERQSV9EdXBsaWNhdGVJbmRpY2VzLCBoYXZpbmcgdHlwZSB1aW50W11cbiAgRHVwbGljYXRlSW5kaWNlcyA9ICdkdXBsaWNhdGVJbmRpY2VzJyxcblxuICAvLyBEUElfRmlsdGVyQWRkSW5kaWNlcywgaGF2aW5nIHR5cGUgdWludFtdXG4gIEZpbHRlckFkZEluZGljZXMgPSAnZmlsdGVyQWRkSW5kaWNlcycsXG5cbiAgLy8gRFBJX0ZpbHRlckluZGljZXMsIGhhdmluZyB0eXBlIHVpbnRbXVxuICBGaWx0ZXJJbmRpY2VzID0gJ2ZpbHRlckluZGljZXMnLFxuXG4gIC8vIERQSV9GaWx0ZXJMZXZlbEFkZCwgaGF2aW5nIHR5cGUgdWludFtdXG4gIEZpbHRlckxldmVsQWRkID0gJ2ZpbHRlckxldmVsQWRkJyxcblxuICAvLyBEUElfRmlsdGVyTGV2ZWxSZW1vdmUsIGhhdmluZyB0eXBlIHVpbnRbXVxuICBGaWx0ZXJMZXZlbFJlbW92ZSA9ICdmaWx0ZXJMZXZlbFJlbW92ZScsXG5cbiAgLy8gRFBJX0ZpbHRlckxldmVscywgaGF2aW5nIHR5cGUgdWludFtdXG4gIEZpbHRlckxldmVscyA9ICdmaWx0ZXJMZXZlbHMnLFxuXG4gIC8vIERQSV9GaWx0ZXJSZW1vdmVJbmRpY2VzLCBoYXZpbmcgdHlwZSB1aW50W11cbiAgRmlsdGVyUmVtb3ZlSW5kaWNlcyA9ICdmaWx0ZXJSZW1vdmVJbmRpY2VzJyxcblxuICAvLyBEUElfRml4ZWRWYWx1ZXMsIGhhdmluZyB0eXBlIHVpbnRbXVxuICBGaXhlZFZhbHVlcyA9ICdmaXhlZFZhbHVlcycsXG5cbiAgLy8gRFBJX0hpZXJhcmNoeU1lbWJlcklkTGlzdCwgaGF2aW5nIHR5cGUgdWludFtdXG4gIEhpZXJhcmNoeU1lbWJlcklkTGlzdCA9ICdoaWVyYXJjaHlNZW1iZXJJZExpc3QnLFxuXG4gIC8vIERQSV9JbnZhbGlkSW5kaWNlcywgaGF2aW5nIHR5cGUgdWludFtdXG4gIEludmFsaWRJbmRpY2VzID0gJ2ludmFsaWRJbmRpY2VzJyxcblxuICAvLyBEUElfSXRlbUluZGljZXMsIGhhdmluZyB0eXBlIHVpbnRbXVxuICBJdGVtSW5kaWNlcyA9ICdpdGVtSW5kaWNlcycsXG5cbiAgLy8gRFBJX0xpbmVUdXBsZUlEcywgaGF2aW5nIHR5cGUgdWludFtdXG4gIExpbmVUdXBsZUlEcyA9ICdsaW5lVHVwbGVJZHMnLFxuXG4gIC8vIERQSV9PYmplY3RJRHMsIGhhdmluZyB0eXBlIHVpbnRbXVxuICBPYmplY3RJRHMgPSAnb2JqZWN0SWRzJyxcblxuICAvLyBEUElfUGFnZUluZGljZXMsIGhhdmluZyB0eXBlIHVpbnRbXVxuICBQYWdlSW5kaWNlcyA9ICdwYWdlSW5kaWNlcycsXG5cbiAgLy8gRFBJX1FSR0IsIGhhdmluZyB0eXBlIHVpbnRbXVxuICBRUkdCID0gJ3FyZ2JMaXN0JyxcblxuICAvLyBEUElfUVJHQkNvbG9ycywgaGF2aW5nIHR5cGUgdWludFtdXG4gIFFSR0JDb2xvcnMgPSAncXJnYkNvbG9ycycsXG5cbiAgLy8gRFBJX1JlZkxpbmVJRCwgaGF2aW5nIHR5cGUgdWludFtdXG4gIFJlZkxpbmVJRCA9ICdyZWZsaW5lSWQnLFxuXG4gIC8vIERQSV9TaGFwZUlEcywgaGF2aW5nIHR5cGUgdWludFtdXG4gIFNoYXBlSURzID0gJ3NoYXBlSWRzJyxcblxuICAvLyBEUElfU2hlbGZTZWxlY3Rpb24sIGhhdmluZyB0eXBlIHVpbnRbXVxuICBTaGVsZlNlbGVjdGlvbiA9ICdzaGVsZlNlbGVjdGlvbicsXG5cbiAgLy8gRFBJX1N0b3J5UG9pbnRJRHMsIGhhdmluZyB0eXBlIHVpbnRbXVxuICBTdG9yeVBvaW50SURzID0gJ3N0b3J5UG9pbnRJZHMnLFxuXG4gIC8vIERQSV9UdXBsZUlEcywgaGF2aW5nIHR5cGUgdWludFtdXG4gIFR1cGxlSURzID0gJ3R1cGxlSWRzJyxcblxuICAvLyBEUElfV2lkdGhzLCBoYXZpbmcgdHlwZSB1aW50W11cbiAgV2lkdGhzID0gJ3dpZHRocycsXG5cbiAgLy8gRFBJX1VpbnRNYXAsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2YgdWludDMyX3QpXG4gIFVpbnRNYXAgPSAndWludE1hcCcsXG5cbiAgLy8gRFBJX0FscGhhLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBBbHBoYSA9ICdhbHBoYScsXG5cbiAgLy8gRFBJX0FuZ2xlLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBBbmdsZSA9ICdhbmdsZScsXG5cbiAgLy8gRFBJX0JyZWFrUG9pbnRWYWx1ZSwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgQnJlYWtQb2ludFZhbHVlID0gJ2JyZWFrUG9pbnRWYWx1ZScsXG5cbiAgLy8gRFBJX0RldmljZVBpeGVsUmF0aW8sIGhhdmluZyB0eXBlIGZsb2F0XG4gIERldmljZVBpeGVsUmF0aW8gPSAnZGV2aWNlUGl4ZWxSYXRpbycsXG5cbiAgLy8gRFBJX0Rpc3RhbmNlLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBEaXN0YW5jZSA9ICdkaXN0YW5jZScsXG5cbiAgLy8gRFBJX0Zsb2F0WCwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgRmxvYXRYID0gJ2Zsb2F0WCcsXG5cbiAgLy8gRFBJX0Zsb2F0WSwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgRmxvYXRZID0gJ2Zsb2F0WScsXG5cbiAgLy8gRFBJX0ZvZ0Rlc2F0dXJhdGlvbiwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgRm9nRGVzYXR1cmF0aW9uID0gJ2ZvZ0Rlc2F0dXJhdGlvbicsXG5cbiAgLy8gRFBJX01hcmtTY2FsZSwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgTWFya1NjYWxlID0gJ21hcmtTY2FsZScsXG5cbiAgLy8gRFBJX01hcmtTaXplSW5QaXhlbFVuaXRzLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBNYXJrU2l6ZUluUGl4ZWxVbml0cyA9ICdtYXJrU2l6ZUluUGl4ZWxVbml0cycsXG5cbiAgLy8gRFBJX1BvaW50U2l6ZSwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgUG9pbnRTaXplID0gJ3BvaW50U2l6ZScsXG5cbiAgLy8gRFBJX1N0cm9rZVdpZHRoLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBTdHJva2VXaWR0aCA9ICdzdHJva2VXaWR0aCcsXG5cbiAgLy8gRFBJX1RleHRSZWdpb25PcmllbnRhdGlvbiwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgVGV4dFJlZ2lvbk9yaWVudGF0aW9uID0gJ29yaWVudGF0aW9uJyxcblxuICAvLyBEUElfVHJhbnNmb3JtQW5nbGUsIGhhdmluZyB0eXBlIGZsb2F0XG4gIFRyYW5zZm9ybUFuZ2xlID0gJ3RyYW5zZm9ybUFuZ2xlJyxcblxuICAvLyBEUElfWm9vbUxldmVsLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBab29tTGV2ZWwgPSAnem9vbUxldmVsJyxcblxuICAvLyBEUElfT2xkWm9vbUxldmVsLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBPbGRab29tTGV2ZWwgPSAnb2xkWm9vbUxldmVsJyxcblxuICAvLyBEUElfTmV3Wm9vbUxldmVsLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBOZXdab29tTGV2ZWwgPSAnbmV3Wm9vbUxldmVsJyxcblxuICAvLyBEUElfQXNwZWN0UmF0aW8sIGhhdmluZyB0eXBlIGZsb2F0XG4gIEFzcGVjdFJhdGlvID0gJ2FzcGVjdFJhdGlvJyxcblxuICAvLyBEUElfQm90dG9tUHJpbnRNYXJnaW4sIGhhdmluZyB0eXBlIGZsb2F0XG4gIEJvdHRvbVByaW50TWFyZ2luID0gJ2JvdHRvbVByaW50TWFyZ2luJyxcblxuICAvLyBEUElfRWFydGhSYWRpdXMsIGhhdmluZyB0eXBlIGZsb2F0XG4gIEVhcnRoUmFkaXVzID0gJ2VhcnRoUmFkaXVzJyxcblxuICAvLyBEUElfRmxvYXRIZWlnaHQsIGhhdmluZyB0eXBlIGZsb2F0XG4gIEZsb2F0SGVpZ2h0ID0gJ2Zsb2F0SGVpZ2h0JyxcblxuICAvLyBEUElfRmxvYXRMZWZ0LCBoYXZpbmcgdHlwZSBmbG9hdFxuICBGbG9hdExlZnQgPSAnZmxvYXRMZWZ0JyxcblxuICAvLyBEUElfRmxvYXRSYWRpdXMsIGhhdmluZyB0eXBlIGZsb2F0XG4gIEZsb2F0UmFkaXVzID0gJ2Zsb2F0UmFkaXVzJyxcblxuICAvLyBEUElfRmxvYXRUb3AsIGhhdmluZyB0eXBlIGZsb2F0XG4gIEZsb2F0VG9wID0gJ2Zsb2F0VG9wJyxcblxuICAvLyBEUElfRmxvYXRXaWR0aCwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgRmxvYXRXaWR0aCA9ICdmbG9hdFdpZHRoJyxcblxuICAvLyBEUElfTGVmdFByaW50TWFyZ2luLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBMZWZ0UHJpbnRNYXJnaW4gPSAnbGVmdFByaW50TWFyZ2luJyxcblxuICAvLyBEUElfTWFwQ2VudGVyTGF0aXR1ZGUsIGhhdmluZyB0eXBlIGZsb2F0XG4gIE1hcENlbnRlckxhdGl0dWRlID0gJ21hcENlbnRlckxhdGl0dWRlJyxcblxuICAvLyBEUElfTWFwQ2VudGVyTG9uZ2l0dWRlLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBNYXBDZW50ZXJMb25naXR1ZGUgPSAnbWFwQ2VudGVyTG9uZ2l0dWRlJyxcblxuICAvLyBEUElfTWFwRGlzcGxheVNjYWxlLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBNYXBEaXNwbGF5U2NhbGUgPSAnbWFwRGlzcGxheVNjYWxlJyxcblxuICAvLyBEUElfTWFwTWF4U3RyZXRjaCwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgTWFwTWF4U3RyZXRjaCA9ICdtYXBNYXhTdHJldGNoJyxcblxuICAvLyBEUElfTWFwTWF4Wm9vbSwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgTWFwTWF4Wm9vbSA9ICdtYXBNYXhab29tJyxcblxuICAvLyBEUElfTWFwTWluU2hyaW5rLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBNYXBNaW5TaHJpbmsgPSAnbWFwTWluU2hyaW5rJyxcblxuICAvLyBEUElfTWFwTWluWm9vbSwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgTWFwTWluWm9vbSA9ICdtYXBNaW5ab29tJyxcblxuICAvLyBEUElfTWFwUmVxdWVzdFpvb20sIGhhdmluZyB0eXBlIGZsb2F0XG4gIE1hcFJlcXVlc3Rab29tID0gJ21hcFJlcXVlc3Rab29tJyxcblxuICAvLyBEUElfTWFwV2FzaG91dCwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgTWFwV2FzaG91dCA9ICdtYXBXYXNob3V0JyxcblxuICAvLyBEUElfTWF4TGF0aXR1ZGUsIGhhdmluZyB0eXBlIGZsb2F0XG4gIE1heExhdGl0dWRlID0gJ21heExhdGl0dWRlJyxcblxuICAvLyBEUElfTWF4TG9uZ2l0dWRlLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBNYXhMb25naXR1ZGUgPSAnbWF4TG9uZ2l0dWRlJyxcblxuICAvLyBEUElfTWluTGF0aXR1ZGUsIGhhdmluZyB0eXBlIGZsb2F0XG4gIE1pbkxhdGl0dWRlID0gJ21pbkxhdGl0dWRlJyxcblxuICAvLyBEUElfTWluTG9uZ2l0dWRlLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBNaW5Mb25naXR1ZGUgPSAnbWluTG9uZ2l0dWRlJyxcblxuICAvLyBEUElfUmlnaHRQcmludE1hcmdpbiwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgUmlnaHRQcmludE1hcmdpbiA9ICdyaWdodFByaW50TWFyZ2luJyxcblxuICAvLyBEUElfVG9wUHJpbnRNYXJnaW4sIGhhdmluZyB0eXBlIGZsb2F0XG4gIFRvcFByaW50TWFyZ2luID0gJ3RvcFByaW50TWFyZ2luJyxcblxuICAvLyBEUElfVUlBdXRvbWF0aW9uTWF4aW11bSwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgVUlBdXRvbWF0aW9uTWF4aW11bSA9ICd1aUF1dG9tYXRpb25NYXhpbXVtJyxcblxuICAvLyBEUElfVUlBdXRvbWF0aW9uTWluaW11bSwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgVUlBdXRvbWF0aW9uTWluaW11bSA9ICd1aUF1dG9tYXRpb25NaW5pbXVtJyxcblxuICAvLyBEUElfVUlBdXRvbWF0aW9uT2Zmc2V0LCBoYXZpbmcgdHlwZSBmbG9hdFxuICBVSUF1dG9tYXRpb25PZmZzZXQgPSAndWlBdXRvbWF0aW9uT2Zmc2V0JyxcblxuICAvLyBEUElfVW5pdERpdmlzb3IsIGhhdmluZyB0eXBlIGZsb2F0XG4gIFVuaXREaXZpc29yID0gJ3VuaXREaXZpc29yJyxcblxuICAvLyBEUElfVW5pdFRyYW5zaXRpb24sIGhhdmluZyB0eXBlIGZsb2F0XG4gIFVuaXRUcmFuc2l0aW9uID0gJ3VuaXRUcmFuc2l0aW9uJyxcblxuICAvLyBEUElfQXV0b21hdGljRHJpbGxJZHgsIGhhdmluZyB0eXBlIGZsb2F0W11cbiAgQXV0b21hdGljRHJpbGxJZHggPSAnYXV0b21hdGljRHJpbGxJZHgnLFxuXG4gIC8vIERQSV9EZXN0aW5hdGlvbkJveCwgaGF2aW5nIHR5cGUgZmxvYXRbXVxuICBEZXN0aW5hdGlvbkJveCA9ICdkZXN0Qm94JyxcblxuICAvLyBEUElfTG93ZXJFbmQsIGhhdmluZyB0eXBlIGZsb2F0W11cbiAgTG93ZXJFbmQgPSAnbG93ZXJFbmQnLFxuXG4gIC8vIERQSV9PcHBvc2l0ZUF4aXMsIGhhdmluZyB0eXBlIGZsb2F0W11cbiAgT3Bwb3NpdGVBeGlzID0gJ29wcG9zaXRlQXhpcycsXG5cbiAgLy8gRFBJX1BvaW50c0YsIGhhdmluZyB0eXBlIGZsb2F0W11cbiAgUG9pbnRzRiA9ICdwb2ludHNGJyxcblxuICAvLyBEUElfU291cmNlQm94LCBoYXZpbmcgdHlwZSBmbG9hdFtdXG4gIFNvdXJjZUJveCA9ICdzb3VyY2VCb3gnLFxuXG4gIC8vIERQSV9UcmFuc2Zvcm1PZmZzZXQsIGhhdmluZyB0eXBlIGZsb2F0W11cbiAgVHJhbnNmb3JtT2Zmc2V0ID0gJ3RyYW5zZm9ybU9mZnNldCcsXG5cbiAgLy8gRFBJX1RyYW5zZm9ybVNjYWxlLCBoYXZpbmcgdHlwZSBmbG9hdFtdXG4gIFRyYW5zZm9ybVNjYWxlID0gJ3RyYW5zZm9ybVNjYWxlJyxcblxuICAvLyBEUElfVXBwZXJFbmQsIGhhdmluZyB0eXBlIGZsb2F0W11cbiAgVXBwZXJFbmQgPSAndXBwZXJFbmQnLFxuXG4gIC8vIERQSV9GbG9hdE1hcCwgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBmbG9hdClcbiAgRmxvYXRNYXAgPSAnZmxvYXRNYXAnLFxuXG4gIC8vIERQSV9CR1NTLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgQkdTUyA9ICdiZXR3ZWVuR3JvdXBTdW1PZlNxdWFyZXMnLFxuXG4gIC8vIERQSV9Db25maWRlbmNlTGV2ZWwsIGhhdmluZyB0eXBlIGRvdWJsZVxuICBDb25maWRlbmNlTGV2ZWwgPSAnY29uZmlkZW5jZUxldmVsJyxcblxuICAvLyBEUElfQ29uZmlkZW5jZVBlcmNlbnRhZ2UsIGhhdmluZyB0eXBlIGRvdWJsZVxuICBDb25maWRlbmNlUGVyY2VudGFnZSA9ICdjb25maWRlbmNlUGVyY2VudGFnZScsXG5cbiAgLy8gRFBJX0RvdWJsZUxlZnQsIGhhdmluZyB0eXBlIGRvdWJsZVxuICBEb3VibGVMZWZ0ID0gJ2RvdWJsZUxlZnQnLFxuXG4gIC8vIERQSV9Eb3VibGVUb3AsIGhhdmluZyB0eXBlIGRvdWJsZVxuICBEb3VibGVUb3AgPSAnZG91YmxlVG9wJyxcblxuICAvLyBEUElfRG91YmxlVmFsdWUsIGhhdmluZyB0eXBlIGRvdWJsZVxuICBEb3VibGVWYWx1ZSA9ICdkb3VibGVWYWx1ZScsXG5cbiAgLy8gRFBJX0RvdWJsZVgsIGhhdmluZyB0eXBlIGRvdWJsZVxuICBEb3VibGVYID0gJ2RvdWJsZVgnLFxuXG4gIC8vIERQSV9Eb3VibGVZLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgRG91YmxlWSA9ICdkb3VibGVZJyxcblxuICAvLyBEUElfRlN0YXRpc3RpYywgaGF2aW5nIHR5cGUgZG91YmxlXG4gIEZTdGF0aXN0aWMgPSAnZlN0YXRpc3RpYycsXG5cbiAgLy8gRFBJX0ZpbHRlclJhbmdlTWF4LCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgRmlsdGVyUmFuZ2VNYXggPSAnZmlsdGVyUmFuZ2VNYXgnLFxuXG4gIC8vIERQSV9GaWx0ZXJSYW5nZU1pbiwgaGF2aW5nIHR5cGUgZG91YmxlXG4gIEZpbHRlclJhbmdlTWluID0gJ2ZpbHRlclJhbmdlTWluJyxcblxuICAvLyBEUElfR2VvZ3JhcGhpY1NlYXJjaENhbmRpZGF0ZVNjb3JlLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgR2VvZ3JhcGhpY1NlYXJjaENhbmRpZGF0ZVNjb3JlID0gJ2dlb2dyYXBoaWNTZWFyY2hDYW5kaWRhdGVTY29yZScsXG5cbiAgLy8gRFBJX0hlaWdodEQsIGhhdmluZyB0eXBlIGRvdWJsZVxuICBIZWlnaHREID0gJ2hlaWdodCcsXG5cbiAgLy8gRFBJX0luZmxlY3Rpb25GcmFjdGlvbiwgaGF2aW5nIHR5cGUgZG91YmxlXG4gIEluZmxlY3Rpb25GcmFjdGlvbiA9ICdpbmZsZWN0aW9uRnJhY3Rpb24nLFxuXG4gIC8vIERQSV9JbmZsZWN0aW9uVmFsdWUsIGhhdmluZyB0eXBlIGRvdWJsZVxuICBJbmZsZWN0aW9uVmFsdWUgPSAnaW5mbGVjdGlvblZhbHVlJyxcblxuICAvLyBEUElfTVNFLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgTVNFID0gJ21lYW5TcXVhcmVkRXJyb3InLFxuXG4gIC8vIERQSV9NU00sIGhhdmluZyB0eXBlIGRvdWJsZVxuICBNU00gPSAnbWVhblNxdWFyZWRNb2RlbCcsXG5cbiAgLy8gRFBJX01hcFNjYWxlTWFyZ2luT2ZFcnJvciwgaGF2aW5nIHR5cGUgZG91YmxlXG4gIE1hcFNjYWxlTWFyZ2luT2ZFcnJvciA9ICdtYXBTY2FsZU1hcmdpbk9mRXJyb3InLFxuXG4gIC8vIERQSV9NYXJrU2l6ZSwgaGF2aW5nIHR5cGUgZG91YmxlXG4gIE1hcmtTaXplID0gJ21hcmtTaXplJyxcblxuICAvLyBEUElfTWF4TWFya1NpemUsIGhhdmluZyB0eXBlIGRvdWJsZVxuICBNYXhNYXJrU2l6ZSA9ICdtYXhNYXJrU2l6ZScsXG5cbiAgLy8gRFBJX01pbk1hcmtTaXplLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgTWluTWFya1NpemUgPSAnbWluTWFya1NpemUnLFxuXG4gIC8vIERQSV9Ob3RjaFBvc2l0aW9uLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgTm90Y2hQb3NpdGlvbiA9ICdub3RjaFBvc2l0aW9uJyxcblxuICAvLyBEUElfTm90Y2hWYWx1ZSwgaGF2aW5nIHR5cGUgZG91YmxlXG4gIE5vdGNoVmFsdWUgPSAnbm90Y2hWYWx1ZScsXG5cbiAgLy8gRFBJX1BWYWx1ZSwgaGF2aW5nIHR5cGUgZG91YmxlXG4gIFBWYWx1ZSA9ICdwVmFsdWUnLFxuXG4gIC8vIERQSV9QZXJjZW50RGltZW5zaW9ucywgaGF2aW5nIHR5cGUgZG91YmxlXG4gIFBlcmNlbnREaW1lbnNpb25zID0gJ3BlcmNlbnREaW1lbnNpb25zJyxcblxuICAvLyBEUElfUGVyY2VudEdyb3VwcywgaGF2aW5nIHR5cGUgZG91YmxlXG4gIFBlcmNlbnRHcm91cHMgPSAncGVyY2VudEdyb3VwcycsXG5cbiAgLy8gRFBJX1BlcmNlbnRNZWFzdXJlcywgaGF2aW5nIHR5cGUgZG91YmxlXG4gIFBlcmNlbnRNZWFzdXJlcyA9ICdwZXJjZW50TWVhc3VyZXMnLFxuXG4gIC8vIERQSV9SU3F1YXJlZCwgaGF2aW5nIHR5cGUgZG91YmxlXG4gIFJTcXVhcmVkID0gJ3JTcXVhcmVkJyxcblxuICAvLyBEUElfU1NFLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgU1NFID0gJ3N1bVNxdWFyZWRFcnJvcicsXG5cbiAgLy8gRFBJX1NTTSwgaGF2aW5nIHR5cGUgZG91YmxlXG4gIFNTTSA9ICdzdW1TcXVhcmVkTW9kZWwnLFxuXG4gIC8vIERQSV9TdGFuZGFyZEVycm9yLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgU3RhbmRhcmRFcnJvciA9ICdzdGFuZGFyZEVycm9yJyxcblxuICAvLyBEUElfVFNTLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgVFNTID0gJ3RvdGFsU3VtT2ZTcXVhcmVzJyxcblxuICAvLyBEUElfV0dTUywgaGF2aW5nIHR5cGUgZG91YmxlXG4gIFdHU1MgPSAnd2l0aGluR3JvdXBTdW1PZlNxdWFyZXMnLFxuXG4gIC8vIERQSV9XaWR0aEQsIGhhdmluZyB0eXBlIGRvdWJsZVxuICBXaWR0aEQgPSAnd2lkdGgnLFxuXG4gIC8vIERQSV9ab29tRmFjdG9yLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgWm9vbUZhY3RvciA9ICd6b29tRmFjdG9yJyxcblxuICAvLyBEUElfQ29lZmZpY2llbnRQVmFsdWVWZWMsIGhhdmluZyB0eXBlIGRvdWJsZVtdXG4gIENvZWZmaWNpZW50UFZhbHVlVmVjID0gJ2NvZWZmaWNpZW50UFZhbHVlVmVjdG9yJyxcblxuICAvLyBEUElfQ29lZmZpY2llbnRTdGRFcnJWZWMsIGhhdmluZyB0eXBlIGRvdWJsZVtdXG4gIENvZWZmaWNpZW50U3RkRXJyVmVjID0gJ2NvZWZmaWNpZW50U3RkRXJyb3JWZWN0b3InLFxuXG4gIC8vIERQSV9Db2VmZmljaWVudFRWYWx1ZVZlYywgaGF2aW5nIHR5cGUgZG91YmxlW11cbiAgQ29lZmZpY2llbnRUVmFsdWVWZWMgPSAnY29lZmZpY2llbnRUVmFsdWVWZWN0b3InLFxuXG4gIC8vIERQSV9Db2VmZmljaWVudFZlYywgaGF2aW5nIHR5cGUgZG91YmxlW11cbiAgQ29lZmZpY2llbnRWZWMgPSAnY29lZmZpY2llbnRWZWN0b3InLFxuXG4gIC8vIERQSV9GU3RhdGlzdGljVmVjLCBoYXZpbmcgdHlwZSBkb3VibGVbXVxuICBGU3RhdGlzdGljVmVjID0gJ3RyZW5kTGluZUZTdGF0aXN0aWNWZWN0b3InLFxuXG4gIC8vIERQSV9GYWN0b3JzLCBoYXZpbmcgdHlwZSBkb3VibGVbXVxuICBGYWN0b3JzID0gJ2ZhY3RvcnMnLFxuXG4gIC8vIERQSV9NU0VWZWMsIGhhdmluZyB0eXBlIGRvdWJsZVtdXG4gIE1TRVZlYyA9ICdtZWFuU3F1YXJlZEVycm9yVmVjdG9yJyxcblxuICAvLyBEUElfTWVhbnMsIGhhdmluZyB0eXBlIGRvdWJsZVtdXG4gIE1lYW5zID0gJ21lYW5zJyxcblxuICAvLyBEUElfUFZhbHVlVmVjLCBoYXZpbmcgdHlwZSBkb3VibGVbXVxuICBQVmFsdWVWZWMgPSAncFZhbHVlVmVjdG9yJyxcblxuICAvLyBEUElfUGVyY2VudGFnZXMsIGhhdmluZyB0eXBlIGRvdWJsZVtdXG4gIFBlcmNlbnRhZ2VzID0gJ3BlcmNlbnRhZ2VzJyxcblxuICAvLyBEUElfUGVyY2VudGlsZXMsIGhhdmluZyB0eXBlIGRvdWJsZVtdXG4gIFBlcmNlbnRpbGVzID0gJ3BlcmNlbnRpbGVzJyxcblxuICAvLyBEUElfU1NFVmVjLCBoYXZpbmcgdHlwZSBkb3VibGVbXVxuICBTU0VWZWMgPSAnc3VtU3F1YXJlZEVycm9yVmVjdG9yJyxcblxuICAvLyBEUElfU3REZXZzLCBoYXZpbmcgdHlwZSBkb3VibGVbXVxuICBTdERldnMgPSAnc3RkZXYnLFxuXG4gIC8vIERQSV9VbnNjYWxlZE1lYW5zLCBoYXZpbmcgdHlwZSBkb3VibGVbXVxuICBVbnNjYWxlZE1lYW5zID0gJ3Vuc2NhbGVkTWVhbnMnLFxuXG4gIC8vIERQSV9EZWx0YVRpbWVNcywgaGF2aW5nIHR5cGUgbG9uZ1xuICBEZWx0YVRpbWVNcyA9ICdkZWx0YVRpbWVNcycsXG5cbiAgLy8gRFBJX0V4dHJhY3RIaXN0b3J5Um93Q291bnQsIGhhdmluZyB0eXBlIGxvbmdcbiAgRXh0cmFjdEhpc3RvcnlSb3dDb3VudCA9ICdleHRyYWN0Um93Q291bnQnLFxuXG4gIC8vIERQSV9FeHRyYWN0SGlzdG9yeVJvd3NSZW1vdmVkLCBoYXZpbmcgdHlwZSBsb25nXG4gIEV4dHJhY3RIaXN0b3J5Um93c1JlbW92ZWQgPSAnZXh0cmFjdFJvd3NSZW1vdmVkJyxcblxuICAvLyBEUElfRXh0cmFjdHNTaXplLCBoYXZpbmcgdHlwZSBsb25nXG4gIEV4dHJhY3RzU2l6ZSA9ICdleHRyYWN0c1NpemUnLFxuXG4gIC8vIERQSV9PbGRFeHRyYWN0U2l6ZSwgaGF2aW5nIHR5cGUgbG9uZ1xuICBPbGRFeHRyYWN0U2l6ZSA9ICdvbGRFeHRyYWN0U2l6ZScsXG5cbiAgLy8gRFBJX1Jvd3NJbnNlcnRlZCwgaGF2aW5nIHR5cGUgbG9uZ1xuICBSb3dzSW5zZXJ0ZWQgPSAncm93c0luc2VydGVkJyxcblxuICAvLyBEUElfU2FtcGxlU2l6ZSwgaGF2aW5nIHR5cGUgbG9uZ1xuICBTYW1wbGVTaXplID0gJ3NhbXBsZVNpemUnLFxuXG4gIC8vIERQSV9TYW1wbGVTcGFjZSwgaGF2aW5nIHR5cGUgbG9uZ1xuICBTYW1wbGVTcGFjZSA9ICdzYW1wbGVTcGFjZScsXG5cbiAgLy8gRFBJX1RocmVhZFBvb2xVc2VDb3VudCwgaGF2aW5nIHR5cGUgbG9uZ1xuICBUaHJlYWRQb29sVXNlQ291bnQgPSAndGhyZWFkUG9vbFVzZUNvdW50JyxcblxuICAvLyBEUElfQWN0aW9uSWQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBY3Rpb25JZCA9ICdhY3Rpb25JZCcsXG5cbiAgLy8gRFBJX0F4aXNDb2x1bW4sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBeGlzQ29sdW1uID0gJ2F4aXNDb2x1bW4nLFxuXG4gIC8vIERQSV9CYXNlQ29sdW1uTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEJhc2VDb2x1bW5OYW1lID0gJ2Jhc2VDb2x1bW5OYW1lJyxcblxuICAvLyBEUElfQnJlYWtQb2ludEZpZWxkTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEJyZWFrUG9pbnRGaWVsZE5hbWUgPSAnYnJlYWtQb2ludEZpZWxkTmFtZScsXG5cbiAgLy8gRFBJX1BhaXJlZEZpZWxkTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFBhaXJlZEZpZWxkTmFtZSA9ICdwYWlyZWRGbicsXG5cbiAgLy8gRFBJX0ZpZWxkTmFtZUFsbG93RW1wdHksIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGaWVsZE5hbWVBbGxvd0VtcHR5ID0gJ2ZpZWxkTmFtZUFsbG93RW1wdHknLFxuXG4gIC8vIERQSV9GaWVsZE5hbWVEaXNBZ2csIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGaWVsZE5hbWVEaXNBZ2cgPSAnZm5EaXNhZ2cnLFxuXG4gIC8vIERQSV9GaWVsZE5hbWVMb2NhbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZpZWxkTmFtZUxvY2FsID0gJ2ZpZWxkTmFtZUxvY2FsJyxcblxuICAvLyBEUElfRmllbGROYW1lUHJldiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZpZWxkTmFtZVByZXYgPSAnZm5QcmV2JyxcblxuICAvLyBEUElfRmllbGROYW1lU291cmNlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRmllbGROYW1lU291cmNlID0gJ2ZuU291cmNlJyxcblxuICAvLyBEUElfRmllbGROYW1lVGFyZ2V0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRmllbGROYW1lVGFyZ2V0ID0gJ2ZuVGFyZ2V0JyxcblxuICAvLyBEUElfRmllbGROYW1lWCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZpZWxkTmFtZVggPSAnZm5YJyxcblxuICAvLyBEUElfRmllbGROYW1lWSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZpZWxkTmFtZVkgPSAnZm5ZJyxcblxuICAvLyBEUElfRmllbGRUb1NvcnQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGaWVsZFRvU29ydCA9ICdmaWVsZFRvU29ydCcsXG5cbiAgLy8gRFBJX0dsb2JhbEZpZWxkTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEdsb2JhbEZpZWxkTmFtZSA9ICdnbG9iYWxGaWVsZE5hbWUnLFxuXG4gIC8vIERQSV9IaWVyYXJjaHlOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSGllcmFyY2h5TmFtZSA9ICdoaWVyYXJjaHlOYW1lJyxcblxuICAvLyBEUElfSW52YWxpZEFnZ0ZpZWxkTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEludmFsaWRBZ2dGaWVsZE5hbWUgPSAnaW52YWxpZEFnZ0ZpZWxkTmFtZScsXG5cbiAgLy8gRFBJX0ludmFsaWRGaWVsZE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBJbnZhbGlkRmllbGROYW1lID0gJ2ludmFsaWRGaWVsZE5hbWUnLFxuXG4gIC8vIERQSV9MaW1pdFBhcmFtZXRlck5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBMaW1pdFBhcmFtZXRlck5hbWUgPSAnbGltaXRQYXJhbWV0ZXJOYW1lJyxcblxuICAvLyBEUElfTG9jYWxCYXNlQ29sdW1uTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIExvY2FsQmFzZUNvbHVtbk5hbWUgPSAnbG9jYWxCYXNlQ29sdW1uTmFtZScsXG5cbiAgLy8gRFBJX01lYXN1cmVOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTWVhc3VyZU5hbWUgPSAnbWVhc3VyZU5hbWUnLFxuXG4gIC8vIERQSV9OZXN0ZWRDYWxjRmllbGQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBOZXN0ZWRDYWxjRmllbGQgPSAnbmVzdGVkQ2FsY0ZuJyxcblxuICAvLyBEUElfUGFyYW1ldGVyTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFBhcmFtZXRlck5hbWUgPSAncGFyYW1ldGVyTmFtZScsXG5cbiAgLy8gRFBJX1JlZmVyZW5jZVBhcmFtLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUmVmZXJlbmNlUGFyYW0gPSAncmVmZXJlbmNlUGFyYW0nLFxuXG4gIC8vIERQSV9SZXBsYWNlbWVudEZpZWxkTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFJlcGxhY2VtZW50RmllbGROYW1lID0gJ3JlcGxhY2VtZW50RmllbGROYW1lJyxcblxuICAvLyBEUElfUkhTVGFibGVBbGlhcywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFJIU1RhYmxlQWxpYXMgPSAncmhzVGFibGVBbGlhcycsXG5cbiAgLy8gRFBJX1NvcnRNZWFzdXJlTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNvcnRNZWFzdXJlTmFtZSA9ICdzb3J0TWVhc3VyZU5hbWUnLFxuXG4gIC8vIERQSV9VbmlxdWVOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVW5pcXVlTmFtZSA9ICd1bmlxdWVOYW1lJyxcblxuICAvLyBEUElfVmFsdWVDb2x1bW4sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBWYWx1ZUNvbHVtbiA9ICd2YWx1ZUNvbHVtbicsXG5cbiAgLy8gRFBJX1BhaXJlZFZhbHVlQ29sdW1uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGFpcmVkVmFsdWVDb2x1bW4gPSAncGFpcmVkVmFsdWVDb2x1bW4nLFxuXG4gIC8vIERQSV9BY3Rpb25JZHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEFjdGlvbklkcyA9ICdhY3Rpb25JZHMnLFxuXG4gIC8vIERQSV9BZGRyZXNzaW5nVmFsdWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBBZGRyZXNzaW5nVmFsdWVzID0gJ2FkZHJlc3NpbmdWYWx1ZXMnLFxuXG4gIC8vIERQSV9BbGxDb2x1bW5zLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBBbGxDb2x1bW5zID0gJ2FsbENvbHVtbnMnLFxuXG4gIC8vIERQSV9BdFRoZUxldmVsVmFsdWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBBdFRoZUxldmVsVmFsdWVzID0gJ2F0VGhlTGV2ZWxWYWx1ZXMnLFxuXG4gIC8vIERQSV9BdXRvbWF0aWNEcmlsbEZpZWxkTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgQXV0b21hdGljRHJpbGxGaWVsZE5hbWUgPSAnYXV0b21hdGljRHJpbGxGaWVsZE5hbWUnLFxuXG4gIC8vIERQSV9CbGVuZGluZ0ZpZWxkQ2FuZGlkYXRlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgQmxlbmRpbmdGaWVsZENhbmRpZGF0ZXMgPSAnYmxlbmRpbmdGaWVsZENhbmRpZGF0ZXMnLFxuXG4gIC8vIERQSV9Db2x1bW5zLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBDb2x1bW5zID0gJ2NvbHVtbnMnLFxuXG4gIC8vIERQSV9DdXJyZW50QmxlbmRpbmdGaWVsZHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEN1cnJlbnRCbGVuZGluZ0ZpZWxkcyA9ICdjdXJyZW50QmxlbmRpbmdGaWVsZHMnLFxuXG4gIC8vIERQSV9EaW1lbnNpb25zVG9Tb3J0LCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBEaW1lbnNpb25zVG9Tb3J0ID0gJ2RpbWVuc2lvbnNUb1NvcnQnLFxuXG4gIC8vIERQSV9EcmlsbEZpZWxkVmVjdG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBEcmlsbEZpZWxkVmVjdG9yID0gJ2RyaWxsRmllbGRWZWN0b3InLFxuXG4gIC8vIERQSV9FbmNvZGluZ0ZpZWxkVmVjdG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBFbmNvZGluZ0ZpZWxkVmVjdG9yID0gJ2VuY29kaW5nRmllbGRWZWN0b3InLFxuXG4gIC8vIERQSV9GaWVsZFZlY3RvciwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgRmllbGRWZWN0b3IgPSAnZmllbGRWZWN0b3InLFxuXG4gIC8vIERQSV9GaWx0ZXJGaWVsZHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEZpbHRlckZpZWxkcyA9ICdmaWx0ZXJGaWVsZHMnLFxuXG4gIC8vIERQSV9MT0RGaWVsZFZlY3RvciwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgTE9ERmllbGRWZWN0b3IgPSAnbG9kRmllbGRWZWN0b3InLFxuXG4gIC8vIERQSV9MZWdlbmRDb2x1bW5zLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBMZWdlbmRDb2x1bW5zID0gJ2xlZ2VuZENvbHVtbnMnLFxuXG4gIC8vIERQSV9MZWdlbmROYW1lcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgTGVnZW5kTmFtZXMgPSAnbGVnZW5kTmFtZXMnLFxuXG4gIC8vIERQSV9Ob2RlQ29sdW1ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgTm9kZUNvbHVtbnMgPSAnbm9kZUNvbHVtbnMnLFxuXG4gIC8vIERQSV9QYWdlRmllbGRzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBQYWdlRmllbGRzID0gJ3BhZ2VGaWVsZHMnLFxuXG4gIC8vIERQSV9QYXJhbVZhbHVlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgUGFyYW1WYWx1ZXMgPSAncGFyYW1WYWx1ZXMnLFxuXG4gIC8vIERQSV9SZWZMaW5lRmllbGRzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBSZWZMaW5lRmllbGRzID0gJ3JlZmxpbmVGaWVsZHMnLFxuXG4gIC8vIERQSV9SZWZlcmVuY2VkQ29sdW1ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgUmVmZXJlbmNlZENvbHVtbnMgPSAncmVmZXJlbmNlZENvbHVtbnMnLFxuXG4gIC8vIERQSV9SZWxhdGVkRmllbGROYW1lcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgUmVsYXRlZEZpZWxkTmFtZXMgPSAncmVsYXRlZEZpZWxkTmFtZXMnLFxuXG4gIC8vIERQSV9SZW1vdmVBY3Rpb25SZXN1bHRzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBSZW1vdmVBY3Rpb25SZXN1bHRzID0gJ3JlbW92ZUFjdGlvblJlc3VsdHMnLFxuXG4gIC8vIERQSV9SZXNwb25zZVZlY3RvciwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgUmVzcG9uc2VWZWN0b3IgPSAncmVzcG9uc2VWZWN0b3InLFxuXG4gIC8vIERQSV9SZXN0YXJ0RXZlcnlWYWx1ZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFJlc3RhcnRFdmVyeVZhbHVlcyA9ICdyZXN0YXJ0RXZlcnlWYWx1ZXMnLFxuXG4gIC8vIERQSV9SZXN1bHRGaWVsZHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFJlc3VsdEZpZWxkcyA9ICdyZXN1bHRGaWVsZHMnLFxuXG4gIC8vIERQSV9Tb3J0RmllbGRWYWx1ZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFNvcnRGaWVsZFZhbHVlcyA9ICdzb3J0RmllbGRWYWx1ZXMnLFxuXG4gIC8vIERQSV9YRmllbGRzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBYRmllbGRzID0gJ3hGaWVsZHMnLFxuXG4gIC8vIERQSV9ZRmllbGRzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBZRmllbGRzID0gJ3lGaWVsZHMnLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uRnVsbE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDb25uZWN0aW9uRnVsbE5hbWUgPSAnY29ubmVjdGlvbkZ1bGxOYW1lJyxcblxuICAvLyBEUElfQ29ubmVjdGlvbkZ1bGxOYW1lcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgQ29ubmVjdGlvbkZ1bGxOYW1lcyA9ICdjb25uZWN0aW9uRnVsbE5hbWVzJyxcblxuICAvLyBEUElfQm91bmREYXRhVmFsdWUsIGhhdmluZyB0eXBlIG9iamVjdFxuICBCb3VuZERhdGFWYWx1ZSA9ICdib3VuZERhdGFWYWx1ZScsXG5cbiAgLy8gRFBJX0RhdGFWYWx1ZSwgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIERhdGFWYWx1ZSA9ICdkYXRhVmFsdWUnLFxuXG4gIC8vIERQSV9EYXRhVmFsdWVJbmNyZW1lbnQsIGhhdmluZyB0eXBlIG9iamVjdFxuICBEYXRhVmFsdWVJbmNyZW1lbnQgPSAnZGF0YVZhbHVlSW5jcmVtZW50JyxcblxuICAvLyBEUElfRGF0YVZhbHVlTG93ZXJYLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgRGF0YVZhbHVlTG93ZXJYID0gJ2RhdGFWYWx1ZUxvd2VyWCcsXG5cbiAgLy8gRFBJX0RhdGFWYWx1ZUxvd2VyWSwgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIERhdGFWYWx1ZUxvd2VyWSA9ICdkYXRhVmFsdWVMb3dlclknLFxuXG4gIC8vIERQSV9EYXRhVmFsdWVVcHBlclgsIGhhdmluZyB0eXBlIG9iamVjdFxuICBEYXRhVmFsdWVVcHBlclggPSAnZGF0YVZhbHVlVXBwZXJYJyxcblxuICAvLyBEUElfRGF0YVZhbHVlVXBwZXJZLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgRGF0YVZhbHVlVXBwZXJZID0gJ2RhdGFWYWx1ZVVwcGVyWScsXG5cbiAgLy8gRFBJX0RlZmF1bHREYXRhVmFsdWUsIGhhdmluZyB0eXBlIG9iamVjdFxuICBEZWZhdWx0RGF0YVZhbHVlID0gJ2RlZmF1bHREYXRhVmFsdWUnLFxuXG4gIC8vIERQSV9NYXhEYXRhVmFsdWUsIGhhdmluZyB0eXBlIG9iamVjdFxuICBNYXhEYXRhVmFsdWUgPSAnbWF4RGF0YVZhbHVlJyxcblxuICAvLyBEUElfTWluRGF0YVZhbHVlLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgTWluRGF0YVZhbHVlID0gJ21pbkRhdGFWYWx1ZScsXG5cbiAgLy8gRFBJX1ZhbGlkYXRlZERhdGFWYWx1ZSwgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIFZhbGlkYXRlZERhdGFWYWx1ZSA9ICd2YWxpZGF0ZWREYXRhVmFsdWUnLFxuXG4gIC8vIERQSV9CaW5TaXplLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgQmluU2l6ZSA9ICdiaW5TaXplJyxcblxuICAvLyBEUElfTGltaXRDb3VudCwgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIExpbWl0Q291bnQgPSAnbGltaXRDb3VudCcsXG5cbiAgLy8gRFBJX0RhdGFWYWx1ZUxpc3QsIGhhdmluZyB0eXBlIG9iamVjdFtdXG4gIERhdGFWYWx1ZUxpc3QgPSAnZGF0YVZhbHVlTGlzdCcsXG5cbiAgLy8gRFBJX0ZpZWxkQ2FwdGlvblBhaXIsIGhhdmluZyB0eXBlIEZpZWxkQ2FwdGlvblBhaXJQcmVzTW9kZWxcbiAgRmllbGRDYXB0aW9uUGFpciA9ICdmaWVsZENhcHRpb25QYWlyJyxcblxuICAvLyBEUElfRmllbGRDYXB0aW9uUGFpcnMsIGhhdmluZyB0eXBlIEZpZWxkQ2FwdGlvblBhaXJQcmVzTW9kZWxbXVxuICBGaWVsZENhcHRpb25QYWlycyA9ICdmaWVsZENhcHRpb25QYWlycycsXG5cbiAgLy8gRFBJX1BhcmFtZXRlckNhcHRpb25QYWlycywgaGF2aW5nIHR5cGUgRmllbGRDYXB0aW9uUGFpclByZXNNb2RlbFtdXG4gIFBhcmFtZXRlckNhcHRpb25QYWlycyA9ICdwYXJhbWV0ZXJDYXB0aW9uUGFpcnMnLFxuXG4gIC8vIERQSV9WYXJ5aW5nQXR0cmlidXRlRGltZW5zaW9ucywgaGF2aW5nIHR5cGUgRmllbGRDYXB0aW9uUGFpclByZXNNb2RlbFtdXG4gIFZhcnlpbmdBdHRyaWJ1dGVEaW1lbnNpb25zID0gJ3ZhcnlpbmdBdHRyaWJ1dGVEaW1lbnNpb25zJyxcblxuICAvLyBEUElfRmllbGRDYXB0aW9uUGFpclN0YXRlLCBoYXZpbmcgdHlwZSBGaWVsZENhcHRpb25QYWlyU3RhdGVQcmVzTW9kZWxcbiAgRmllbGRDYXB0aW9uUGFpclN0YXRlID0gJ2ZpZWxkQ2FwdGlvblBhaXJTdGF0ZScsXG5cbiAgLy8gRFBJX0ZpZWxkQ2FwdGlvblBhaXJTdGF0ZXMsIGhhdmluZyB0eXBlIEZpZWxkQ2FwdGlvblBhaXJTdGF0ZVByZXNNb2RlbFtdXG4gIEZpZWxkQ2FwdGlvblBhaXJTdGF0ZXMgPSAnZmllbGRDYXB0aW9uUGFpclN0YXRlcycsXG5cbiAgLy8gRFBJX0RhdGFzb3VyY2VDYXB0aW9uUGFpciwgaGF2aW5nIHR5cGUgRGF0YXNvdXJjZUNhcHRpb25QYWlyUHJlc01vZGVsXG4gIERhdGFzb3VyY2VDYXB0aW9uUGFpciA9ICdkYXRhc291cmNlQ2FwdGlvblBhaXInLFxuXG4gIC8vIERQSV9EYXRhc291cmNlQ2FwdGlvblBhaXJzLCBoYXZpbmcgdHlwZSBEYXRhc291cmNlQ2FwdGlvblBhaXJQcmVzTW9kZWxbXVxuICBEYXRhc291cmNlQ2FwdGlvblBhaXJzID0gJ2RhdGFzb3VyY2VDYXB0aW9uUGFpcnMnLFxuXG4gIC8vIERQSV9TaGVldE5hbWVJbmZvUGFpciwgaGF2aW5nIHR5cGUgU2hlZXROYW1lSW5mb1BhaXJQcmVzTW9kZWxcbiAgU2hlZXROYW1lSW5mb1BhaXIgPSAnc2hlZXROYW1lSW5mb1BhaXInLFxuXG4gIC8vIERQSV9TaGVldE5hbWVJbmZvUGFpcnMsIGhhdmluZyB0eXBlIFNoZWV0TmFtZUluZm9QYWlyUHJlc01vZGVsW11cbiAgU2hlZXROYW1lSW5mb1BhaXJzID0gJ3NoZWV0TmFtZUluZm9QYWlycycsXG5cbiAgLy8gRFBJX0JHQWN0aXZlQ29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBCR0FjdGl2ZUNvbG9yID0gJ2JnQWN0aXZlQ29sb3InLFxuXG4gIC8vIERQSV9CR0NvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQkdDb2xvciA9ICdiZ0NvbG9yJyxcblxuICAvLyBEUElfQkdSZXN0Q29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBCR1Jlc3RDb2xvciA9ICdiZ1Jlc3RDb2xvcicsXG5cbiAgLy8gRFBJX0JvcmRlckNvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQm9yZGVyQ29sb3IgPSAnYm9yZGVyQ29sb3InLFxuXG4gIC8vIERQSV9Cb3JkZXJDb2xvckJvdHRvbSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEJvcmRlckNvbG9yQm90dG9tID0gJ2JvcmRlckNvbG9yQm90dG9tJyxcblxuICAvLyBEUElfQm9yZGVyQ29sb3JMZWZ0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQm9yZGVyQ29sb3JMZWZ0ID0gJ2JvcmRlckNvbG9yTGVmdCcsXG5cbiAgLy8gRFBJX0JvcmRlckNvbG9yUmlnaHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBCb3JkZXJDb2xvclJpZ2h0ID0gJ2JvcmRlckNvbG9yUmlnaHQnLFxuXG4gIC8vIERQSV9Cb3JkZXJDb2xvclRvcCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEJvcmRlckNvbG9yVG9wID0gJ2JvcmRlckNvbG9yVG9wJyxcblxuICAvLyBEUElfQ29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDb2xvciA9ICdjb2xvcicsXG5cbiAgLy8gRFBJX0NvbG9yMSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENvbG9yMSA9ICdjb2xvcjEnLFxuXG4gIC8vIERQSV9Db2xvcjIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDb2xvcjIgPSAnY29sb3IyJyxcblxuICAvLyBEUElfRGVmYXVsdENvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGVmYXVsdENvbG9yID0gJ2RlZmF1bHRDb2xvcicsXG5cbiAgLy8gRFBJX0Rpc3RhbmNlRm9udENvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGlzdGFuY2VGb250Q29sb3IgPSAnZGlzdGFuY2VGb250Q29sb3InLFxuXG4gIC8vIERQSV9GaWxsQ29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGaWxsQ29sb3IgPSAnZmlsbENvbG9yJyxcblxuICAvLyBEUElfRm9nQ29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGb2dDb2xvciA9ICdmb2dDb2xvcicsXG5cbiAgLy8gRFBJX0hlYWRlckNvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSGVhZGVyQ29sb3IgPSAnaGVhZGVyQ29sb3InLFxuXG4gIC8vIERQSV9IaWdobGlnaHRCR0NvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSGlnaGxpZ2h0QkdDb2xvciA9ICdoaWdobGlnaHRCZ0NvbG9yJyxcblxuICAvLyBEUElfSGlnaGxpZ2h0VGV4dENvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSGlnaGxpZ2h0VGV4dENvbG9yID0gJ2hpZ2hsaWdodFRleHRDb2xvcicsXG5cbiAgLy8gRFBJX0hvdmVyQ29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBIb3ZlckNvbG9yID0gJ2hvdmVyQ29sb3InLFxuXG4gIC8vIERQSV9NYXBBdHRyaWJ1dGlvbkZpbGwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBNYXBBdHRyaWJ1dGlvbkZpbGwgPSAnbWFwQXR0cmlidXRpb25GaWxsJyxcblxuICAvLyBEUElfTWFwQXR0cmlidXRpb25UZXh0Q29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBNYXBBdHRyaWJ1dGlvblRleHRDb2xvciA9ICdtYXBBdHRyaWJ1dGlvblRleHRDb2xvcicsXG5cbiAgLy8gRFBJX01hcFBhbmVCYWNrZ3JvdW5kRmlsbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1hcFBhbmVCYWNrZ3JvdW5kRmlsbCA9ICdtYXBQYW5lQmFja2dyb3VuZEZpbGwnLFxuXG4gIC8vIERQSV9NYXBTY2FsZUJvcmRlckNvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTWFwU2NhbGVCb3JkZXJDb2xvciA9ICdtYXBTY2FsZUJvcmRlckNvbG9yJyxcblxuICAvLyBEUElfTWFwU2NhbGVDb2xvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1hcFNjYWxlQ29sb3IgPSAnbWFwU2NhbGVDb2xvcicsXG5cbiAgLy8gRFBJX01hcFdhaXRUaWxlRmlsbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1hcFdhaXRUaWxlRmlsbCA9ICdtYXBXYWl0VGlsZUZpbGwnLFxuXG4gIC8vIERQSV9NYXJrQ29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBNYXJrQ29sb3IgPSAnbWFya0NvbG9yJyxcblxuICAvLyBEUElfTmF2QXJyb3dEaXNhYmxlZENvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTmF2QXJyb3dEaXNhYmxlZENvbG9yID0gJ25hdkFycm93RGlzYWJsZWRDb2xvcicsXG5cbiAgLy8gRFBJX05hdkFycm93SG92ZXJDb2xvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE5hdkFycm93SG92ZXJDb2xvciA9ICduYXZBcnJvd0hvdmVyQ29sb3InLFxuXG4gIC8vIERQSV9OYXZBcnJvd0lkbGVDb2xvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE5hdkFycm93SWRsZUNvbG9yID0gJ25hdkFycm93SWRsZUNvbG9yJyxcblxuICAvLyBEUElfTmF2QXJyb3dQcmVzc2VkQ29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBOYXZBcnJvd1ByZXNzZWRDb2xvciA9ICduYXZBcnJvd1ByZXNzZWRDb2xvcicsXG5cbiAgLy8gRFBJX1BhbmVDb2xvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFBhbmVDb2xvciA9ICdwYW5lQ29sb3InLFxuXG4gIC8vIERQSV9QcmVzc0NvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUHJlc3NDb2xvciA9ICdwcmVzc0NvbG9yJyxcblxuICAvLyBEUElfUmVzaXplQm9yZGVyQ29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBSZXNpemVCb3JkZXJDb2xvciA9ICdyZXNpemVCb3JkZXJDb2xvcicsXG5cbiAgLy8gRFBJX1NlbGVjdEJHQ29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTZWxlY3RCR0NvbG9yID0gJ3NlbGVjdEJnQ29sb3InLFxuXG4gIC8vIERQSV9TZWxlY3Rpb25UZXh0Q29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTZWxlY3Rpb25UZXh0Q29sb3IgPSAnc2VsZWN0aW9uVGV4dENvbG9yJyxcblxuICAvLyBEUElfU3dhdGNoQmFja2dyb3VuZENvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3dhdGNoQmFja2dyb3VuZENvbG9yID0gJ3N3YXRjaEJnQ29sb3InLFxuXG4gIC8vIERQSV9Td2F0Y2hCb3JkZXJDb2xvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFN3YXRjaEJvcmRlckNvbG9yID0gJ3N3YXRjaEJvcmRlckNvbG9yJyxcblxuICAvLyBEUElfVGFiQ29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUYWJDb2xvciA9ICd0YWJDb2xvcicsXG5cbiAgLy8gRFBJX0NvbG9ycywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgQ29sb3JzID0gJ2NvbG9ycycsXG5cbiAgLy8gRFBJX0NvbG9yTWFwLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgQ29sb3JNYXAgPSAnY29sb3JNYXAnLFxuXG4gIC8vIERQSV9QaXhtYXAsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBQaXhtYXAgPSAncGl4bWFwJyxcblxuICAvLyBEUElfSW1hZ2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBJbWFnZSA9ICdpbWFnZScsXG5cbiAgLy8gRFBJX092ZXJsYXlJbWFnZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE92ZXJsYXlJbWFnZSA9ICdvdmVybGF5SW1hZ2UnLFxuXG4gIC8vIERQSV9JY29uSW1hZ2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBJY29uSW1hZ2UgPSAnaWNvbkltYWdlJyxcblxuICAvLyBEUElfSW1hZ2VMaXN0LCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBJbWFnZUxpc3QgPSAnaW1hZ2VMaXN0JyxcblxuICAvLyBEUElfSW1hZ2VNYXAsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBJbWFnZU1hcCA9ICdpbWFnZU1hcCcsXG5cbiAgLy8gRFBJX1VVSUQsIGhhdmluZyB0eXBlIG9iamVjdFxuICBVVUlEID0gJ3V1aWQnLFxuXG4gIC8vIERQSV9OYW5vc2Vjb25kcywgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIE5hbm9zZWNvbmRzID0gJ25hbm9zZWNvbmRzJyxcblxuICAvLyBEUElfTWljcm9zZWNvbmRzLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgTWljcm9zZWNvbmRzID0gJ21pY3Jvc2Vjb25kcycsXG5cbiAgLy8gRFBJX01pbGxpc2Vjb25kcywgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIE1pbGxpc2Vjb25kcyA9ICdtaWxsaXNlY29uZHMnLFxuXG4gIC8vIERQSV9UaW1lb3V0UywgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIFRpbWVvdXRTID0gJ3RpbWVvdXRTJyxcblxuICAvLyBEUElfTWludXRlcywgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIE1pbnV0ZXMgPSAnbWludXRlcycsXG5cbiAgLy8gRFBJX0hvdXJzLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgSG91cnMgPSAnaG91cnMnLFxuXG4gIC8vIERQSV9DYXJkVHlwZSwgaGF2aW5nIHR5cGUgQ2FyZFR5cGVcbiAgQ2FyZFR5cGUgPSAnY2FyZFR5cGUnLFxuXG4gIC8vIERQSV9Eb2NQYXJhbWV0ZXJJRCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERvY1BhcmFtZXRlcklEID0gJ3R5cGUnLFxuXG4gIC8vIERQSV9Bcmd1bWVudFBhcmFtLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXJndW1lbnRQYXJhbSA9ICdhcmd1bWVudFBhcmFtJyxcblxuICAvLyBEUElfQXJndW1lbnRQYXJhbXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEFyZ3VtZW50UGFyYW1zID0gJ2FyZ3VtZW50UGFyYW1zJyxcblxuICAvLyBEUElfQWN0aW9uVHlwZSwgaGF2aW5nIHR5cGUgQWN0aW9uVHlwZVxuICBBY3Rpb25UeXBlID0gJ2FjdGlvblR5cGUnLFxuXG4gIC8vIERQSV9Bbm5vdGF0ZUVudW0sIGhhdmluZyB0eXBlIEFubm90YXRlRW51bVxuICBBbm5vdGF0ZUVudW0gPSAnYW5ub3RhdGVFbnVtJyxcblxuICAvLyBEUElfSm9pblR5cGUsIGhhdmluZyB0eXBlIFNRTEpvaW5UeXBlXG4gIEpvaW5UeXBlID0gJ2pvaW5UeXBlJyxcblxuICAvLyBEUElfU3VwcG9ydGVkSm9pblR5cGVzLCBoYXZpbmcgdHlwZSBTUUxKb2luVHlwZVtdXG4gIFN1cHBvcnRlZEpvaW5UeXBlcyA9ICdzdXBwb3J0ZWRKb2luVHlwZXMnLFxuXG4gIC8vIERQSV9Sb3VuZGluZywgaGF2aW5nIHR5cGUgUm91bmRpbmdcbiAgUm91bmRpbmcgPSAncm91bmRpbmdFbnVtJyxcblxuICAvLyBEUElfQm9keVR5cGUsIGhhdmluZyB0eXBlIEJvZHlUeXBlXG4gIEJvZHlUeXBlID0gJ2JvZHlUeXBlJyxcblxuICAvLyBEUElfTGluZUVuZCwgaGF2aW5nIHR5cGUgTGluZUVuZFxuICBMaW5lRW5kID0gJ2xpbmVFbmRFbnVtJyxcblxuICAvLyBEUElfTGluZUVuZFNpemUsIGhhdmluZyB0eXBlIExpbmVFbmRTaXplXG4gIExpbmVFbmRTaXplID0gJ2xpbmVFbmRTaXplRW51bScsXG5cbiAgLy8gRFBJX0JydXNoU3BlY2lhbEZpZWxkcywgaGF2aW5nIHR5cGUgQnJ1c2hTcGVjaWFsRmllbGRzXG4gIEJydXNoU3BlY2lhbEZpZWxkcyA9ICdzcGVjaWFsRmllbGRzJyxcblxuICAvLyBEUElfQ2VsbFNpemVDaGFuZ2UsIGhhdmluZyB0eXBlIENlbGxTaXplQ2hhbmdlXG4gIENlbGxTaXplQ2hhbmdlID0gJ2NlbGxTaXplQ2hhbmdlJyxcblxuICAvLyBEUElfQ2VsbFR5cGUsIGhhdmluZyB0eXBlIENlbGxUeXBlXG4gIENlbGxUeXBlID0gJ2NlbGxUeXBlJyxcblxuICAvLyBEUElfQ29ubmVjdGlvbkF0dGVtcHRSZXN1bHQsIGhhdmluZyB0eXBlIENvbm5lY3Rpb25BdHRlbXB0UmVzdWx0XG4gIENvbm5lY3Rpb25BdHRlbXB0UmVzdWx0ID0gJ2Nvbm5lY3Rpb25BdHRlbXB0UmVzdWx0JyxcblxuICAvLyBEUElfQ29ubmVjdGlvbkVycm9yU3RhZ2UsIGhhdmluZyB0eXBlIENvbm5lY3Rpb25FcnJvclN0YWdlXG4gIENvbm5lY3Rpb25FcnJvclN0YWdlID0gJ2Nvbm5lY3Rpb25FcnJvclN0YWdlJyxcblxuICAvLyBEUElfQ29ubmVjdGlvbkVycm9yVHlwZSwgaGF2aW5nIHR5cGUgQ29ubmVjdGlvbkVycm9yVHlwZVxuICBDb25uZWN0aW9uRXJyb3JUeXBlID0gJ2Nvbm5lY3Rpb25FcnJvclR5cGUnLFxuXG4gIC8vIERQSV9EYXRhU2VydmVyQ29ubmVjdGlvblJlc3VsdCwgaGF2aW5nIHR5cGUgRGF0YVNlcnZlckNvbm5lY3Rpb25SZXN1bHRcbiAgRGF0YVNlcnZlckNvbm5lY3Rpb25SZXN1bHQgPSAnZHNDb25uZWN0aW9uUmVzdWx0JyxcblxuICAvLyBEUElfRHJvcFdoZW4sIGhhdmluZyB0eXBlIERyb3BXaGVuXG4gIERyb3BXaGVuID0gJ2Ryb3BXaGVuJyxcblxuICAvLyBEUElfRHJvcFR5cGUsIGhhdmluZyB0eXBlIERyb3BGaWVsZFJlc3VsdFxuICBEcm9wVHlwZSA9ICdkcm9wVHlwZScsXG5cbiAgLy8gRFBJX0VuY29kaW5nVHlwZSwgaGF2aW5nIHR5cGUgRW5jb2RpbmdUeXBlXG4gIEVuY29kaW5nVHlwZSA9ICdlbmNvZGluZ1R5cGUnLFxuXG4gIC8vIERQSV9Ecm9wZG93bkVuY29kaW5nVHlwZSwgaGF2aW5nIHR5cGUgRW5jb2RpbmdUeXBlXG4gIERyb3Bkb3duRW5jb2RpbmdUeXBlID0gJ2Ryb3Bkb3duRW5jb2RpbmdUeXBlJyxcblxuICAvLyBEUElfRW5jb2RpbmdUeXBlcywgaGF2aW5nIHR5cGUgRW5jb2RpbmdUeXBlW11cbiAgRW5jb2RpbmdUeXBlcyA9ICdlbmNvZGluZ1R5cGVzJyxcblxuICAvLyBEUElfRmllbGRPcmRlclR5cGUsIGhhdmluZyB0eXBlIEZpZWxkT3JkZXJUeXBlXG4gIEZpZWxkT3JkZXJUeXBlID0gJ2ZpZWxkT3JkZXJUeXBlJyxcblxuICAvLyBEUElfRmlsdGVySWNvblR5cGUsIGhhdmluZyB0eXBlIEZpbHRlckljb25UeXBlXG4gIEZpbHRlckljb25UeXBlID0gJ2ZpbHRlckljb25UeXBlJyxcblxuICAvLyBEUElfRmlsdGVySWNvblR5cGVzLCBoYXZpbmcgdHlwZSBGaWx0ZXJJY29uVHlwZVtdXG4gIEZpbHRlckljb25UeXBlcyA9ICdmaWx0ZXJJY29uVHlwZXMnLFxuXG4gIC8vIERQSV9GbG9hdGluZ1Rvb2xiYXJWaXMsIGhhdmluZyB0eXBlIEZsb2F0aW5nVG9vbGJhclZpc2liaWxpdHlcbiAgRmxvYXRpbmdUb29sYmFyVmlzID0gJ3Rvb2xiYXJWaXNpYmlsaXR5JyxcblxuICAvLyBEUElfRm9sZGVyUm9sZSwgaGF2aW5nIHR5cGUgRm9sZGVyUm9sZVxuICBGb2xkZXJSb2xlID0gJ2ZvbGRlclJvbGUnLFxuXG4gIC8vIERQSV9MZWdlbmRUeXBlLCBoYXZpbmcgdHlwZSBFbnVtXG4gIExlZ2VuZFR5cGUgPSAnbGVnZW5kVHlwZScsXG5cbiAgLy8gRFBJX0ZvcmVjYXN0TW9kZWxUeXBlLCBoYXZpbmcgdHlwZSBGb3JlY2FzdE1vZGVsVHlwZVxuICBGb3JlY2FzdE1vZGVsVHlwZSA9ICdmb3JlY2FzdE1vZGVsVHlwZScsXG5cbiAgLy8gRFBJX0ZvcmVjYXN0VHJlbmRUeXBlLCBoYXZpbmcgdHlwZSBGb3JlY2FzdENvbXBvbmVudFR5cGVcbiAgRm9yZWNhc3RUcmVuZFR5cGUgPSAnZm9yZWNhc3RUcmVuZFR5cGUnLFxuXG4gIC8vIERQSV9Gb3JlY2FzdFNlYXNvblR5cGUsIGhhdmluZyB0eXBlIEZvcmVjYXN0Q29tcG9uZW50VHlwZVxuICBGb3JlY2FzdFNlYXNvblR5cGUgPSAnZm9yZWNhc3RTZWFzb25UeXBlJyxcblxuICAvLyBEUElfRm9yZWNhc3RSYW5nZVR5cGUsIGhhdmluZyB0eXBlIEZvcmVjYXN0UmFuZ2VUeXBlXG4gIEZvcmVjYXN0UmFuZ2VUeXBlID0gJ2ZvcmVjYXN0UmFuZ2VUeXBlJyxcblxuICAvLyBEUElfRm9yZWNhc3RTdGF0dXMsIGhhdmluZyB0eXBlIEZvcmVjYXN0U3RhdHVzXG4gIEZvcmVjYXN0U3RhdHVzID0gJ2ZvcmVjYXN0U3RhdHVzJyxcblxuICAvLyBEUElfU2hlZXRGb3JlY2FzdFN0YXR1cywgaGF2aW5nIHR5cGUgRm9yZWNhc3RTdGF0dXNcbiAgU2hlZXRGb3JlY2FzdFN0YXR1cyA9ICdzaGVldEZvcmVjYXN0U3RhdHVzJyxcblxuICAvLyBEUElfUERGb3JlY2FzdFN0YXR1c0xpc3QsIGhhdmluZyB0eXBlIEZvcmVjYXN0U3RhdHVzW11cbiAgUERGb3JlY2FzdFN0YXR1c0xpc3QgPSAncGFuZURlc2NyaXB0b3JGb3JlY2FzdFN0YXR1c0xpc3QnLFxuXG4gIC8vIERQSV9Gb3JlY2FzdENvbHVtblR5cGUsIGhhdmluZyB0eXBlIEZvcmVjYXN0Q29sdW1uVHlwZVxuICBGb3JlY2FzdENvbHVtblR5cGUgPSAnZm9yZWNhc3RDb2x1bW5UeXBlJyxcblxuICAvLyBEUElfRGF0YVNjYWxpbmcsIGhhdmluZyB0eXBlIERhdGFTY2FsaW5nXG4gIERhdGFTY2FsaW5nID0gJ2RhdGFTY2FsaW5nJyxcblxuICAvLyBEUElfR2V0RmlsdGVySXRlbXNKc29uUmVzcG9uc2UsIGhhdmluZyB0eXBlIEdldEpzb25SZXNwb25zZUVudW1cbiAgR2V0RmlsdGVySXRlbXNKc29uUmVzcG9uc2UgPSAnZ2V0RmlsdGVySXRlbXNKc29uUmVzcG9uc2UnLFxuXG4gIC8vIERQSV9GaWx0ZXJTZWFyY2hKc29uUmVzcG9uc2UsIGhhdmluZyB0eXBlIEdldEpzb25SZXNwb25zZUVudW1cbiAgRmlsdGVyU2VhcmNoSnNvblJlc3BvbnNlID0gJ2ZpbHRlclNlYXJjaEpzb25SZXNwb25zZScsXG5cbiAgLy8gRFBJX0ZpbHRlclNlYXJjaFdpdGhJbmRleEpzb25SZXNwb25zZSwgaGF2aW5nIHR5cGUgR2V0SnNvblJlc3BvbnNlRW51bVxuICBGaWx0ZXJTZWFyY2hXaXRoSW5kZXhKc29uUmVzcG9uc2UgPSAnZmlsdGVyU2VhcmNoV2l0aEluZGV4SnNvblJlc3BvbnNlJyxcblxuICAvLyBEUElfRmlsdGVyU2hvd0NoaWxkcmVuSnNvblJlc3BvbnNlLCBoYXZpbmcgdHlwZSBHZXRKc29uUmVzcG9uc2VFbnVtXG4gIEZpbHRlclNob3dDaGlsZHJlbkpzb25SZXNwb25zZSA9ICdmaWx0ZXJTaG93Q2hpbGRyZW5Kc29uUmVzcG9uc2UnLFxuXG4gIC8vIERQSV9IQWxpZ25tZW50LCBoYXZpbmcgdHlwZSBMYWJlbEhBbGlnbm1lbnRcbiAgSEFsaWdubWVudCA9ICdob3Jpem9udGFsTGFiZWxBbGlnbm1lbnQnLFxuXG4gIC8vIERQSV9Kb2luVmFsaWRhdGlvbkVycm9yLCBoYXZpbmcgdHlwZSBKb2luVmFsaWRhdGlvbkVycm9yXG4gIEpvaW5WYWxpZGF0aW9uRXJyb3IgPSAnam9pblZhbGlkYXRpb25FcnJvcicsXG5cbiAgLy8gRFBJX05hbWVDb25mbGljdFJlc29sdXRpb24sIGhhdmluZyB0eXBlIE5hbWVDb25mbGljdFJlc29sdXRpb25cbiAgTmFtZUNvbmZsaWN0UmVzb2x1dGlvbiA9ICduYW1lQ29uZmxpY3RSZXNvbHV0aW9uJyxcblxuICAvLyBEUElfTGFiZWxEaXIsIGhhdmluZyB0eXBlIFRleHRPcmllbnRcbiAgTGFiZWxEaXIgPSAnbGFiZWxEaXJlY3Rpb24nLFxuXG4gIC8vIERQSV9MYWJlbEFsaWduLCBoYXZpbmcgdHlwZSBUZXh0QWxpZ25cbiAgTGFiZWxBbGlnbiA9ICdsYWJlbEFsaWdubWVudCcsXG5cbiAgLy8gRFBJX0xhYmVsV3JhcCwgaGF2aW5nIHR5cGUgVGV4dFdyYXBNb2RlXG4gIExhYmVsV3JhcCA9ICdsYWJlbFdyYXAnLFxuXG4gIC8vIERQSV9XcmFwTW9kZSwgaGF2aW5nIHR5cGUgVGV4dFdyYXBNb2RlXG4gIFdyYXBNb2RlID0gJ3dyYXBNb2RlJyxcblxuICAvLyBEUElfTWFya0VudW0sIGhhdmluZyB0eXBlIE1hcmtFbnVtXG4gIE1hcmtFbnVtID0gJ21hcmtFbnVtJyxcblxuICAvLyBEUElfUGVyY2VudE1vZGUsIGhhdmluZyB0eXBlIFBlcmNlbnRNb2RlXG4gIFBlcmNlbnRNb2RlID0gJ3BlcmNlbnRhZ2VNb2RlJyxcblxuICAvLyBEUElfUmVmZXJlbmNlT3B0aW9uc1NldCwgaGF2aW5nIHR5cGUgUmVmZXJlbmNlT3B0aW9uc1NldFxuICBSZWZlcmVuY2VPcHRpb25zU2V0ID0gJ3JlZmVyZW5jZU9wdGlvbnNTZXQnLFxuXG4gIC8vIERQSV9SZWZlcmVuY2VPcHRpb25zU2V0cywgaGF2aW5nIHR5cGUgUmVmZXJlbmNlT3B0aW9uc1NldFtdXG4gIFJlZmVyZW5jZU9wdGlvbnNTZXRzID0gJ3JlZmVyZW5jZU9wdGlvbnNTZXRzJyxcblxuICAvLyBEUElfUmFua1R5cGUsIGhhdmluZyB0eXBlIFJhbmtUeXBlXG4gIFJhbmtUeXBlID0gJ3JhbmtUeXBlJyxcblxuICAvLyBEUElfUmFua1R5cGVWYWx1ZXMsIGhhdmluZyB0eXBlIFJhbmtUeXBlW11cbiAgUmFua1R5cGVWYWx1ZXMgPSAncmFua1R5cGVWYWx1ZXMnLFxuXG4gIC8vIERQSV9TcGVjaWFsVmFsdWVzTW9kZSwgaGF2aW5nIHR5cGUgU3BlY2lhbFZhbHVlc01vZGVcbiAgU3BlY2lhbFZhbHVlc01vZGUgPSAnc3BlY2lhbFZhbHVlc01vZGUnLFxuXG4gIC8vIERQSV9WQWxpZ25tZW50LCBoYXZpbmcgdHlwZSBMYWJlbFZBbGlnbm1lbnRcbiAgVkFsaWdubWVudCA9ICd2ZXJ0aWNhbExhYmVsQWxpZ25tZW50JyxcblxuICAvLyBEUElfQ29sb3JNb2RlLCBoYXZpbmcgdHlwZSBDb2xvck1vZGVcbiAgQ29sb3JNb2RlID0gJ2NvbG9yTW9kZScsXG5cbiAgLy8gRFBJX01hcmtMYWJlbHNNb2RlLCBoYXZpbmcgdHlwZSBNYXJrTGFiZWxzTW9kZVxuICBNYXJrTGFiZWxzTW9kZSA9ICdtYXJrTGFiZWxzTW9kZScsXG5cbiAgLy8gRFBJX01hcmtMYWJlbHNTY29wZSwgaGF2aW5nIHR5cGUgTWFya0xhYmVsc1Njb3BlXG4gIE1hcmtMYWJlbHNTY29wZSA9ICdtYXJrTGFiZWxzU2NvcGUnLFxuXG4gIC8vIERQSV9NYXJrTGFiZWxzVmlzaWJpbGl0eSwgaGF2aW5nIHR5cGUgTWFya0xhYmVsc1Zpc2liaWxpdHlcbiAgTWFya0xhYmVsc1Zpc2liaWxpdHkgPSAnbWFya0xhYmVsc1Zpc2liaWxpdHknLFxuXG4gIC8vIERQSV9QcmltaXRpdmVUeXBlLCBoYXZpbmcgdHlwZSBQcmltaXRpdmVUeXBlXG4gIFByaW1pdGl2ZVR5cGUgPSAncHJpbWl0aXZlVHlwZScsXG5cbiAgLy8gRFBJX0FjdHVhbFByaW1pdGl2ZVR5cGUsIGhhdmluZyB0eXBlIFByaW1pdGl2ZVR5cGVcbiAgQWN0dWFsUHJpbWl0aXZlVHlwZSA9ICdhY3R1YWxQcmltaXRpdmVUeXBlJyxcblxuICAvLyBEUElfUHJpbWl0aXZlVHlwZXMsIGhhdmluZyB0eXBlIFByaW1pdGl2ZVR5cGVbXVxuICBQcmltaXRpdmVUeXBlcyA9ICdwcmltaXRpdmVUeXBlcycsXG5cbiAgLy8gRFBJX1NoYXBlVHlwZSwgaGF2aW5nIHR5cGUgU2hhcGVUeXBlXG4gIFNoYXBlVHlwZSA9ICdzaGFwZVR5cGUnLFxuXG4gIC8vIERQSV9Tb3J0VHlwZSwgaGF2aW5nIHR5cGUgU29ydFR5cGVcbiAgU29ydFR5cGUgPSAnc29ydEJ5JyxcblxuICAvLyBEUElfU29ydEVuZCwgaGF2aW5nIHR5cGUgU29ydEVuZFxuICBTb3J0RW5kID0gJ3NvcnRFbmQnLFxuXG4gIC8vIERQSV9TdGFja2luZ01vZGUsIGhhdmluZyB0eXBlIFN0YWNraW5nTW9kZVxuICBTdGFja2luZ01vZGUgPSAnc3RhY2tpbmdNb2RlJyxcblxuICAvLyBEUElfU3R5bGVUaGVtZSwgaGF2aW5nIHR5cGUgU3R5bGVUaGVtZVxuICBTdHlsZVRoZW1lID0gJ3N0eWxlVGhlbWUnLFxuXG4gIC8vIERQSV9UcmVuZExpbmVGaXRUeXBlLCBoYXZpbmcgdHlwZSBUcmVuZExpbmVGaXRUeXBlXG4gIFRyZW5kTGluZUZpdFR5cGUgPSAnZml0VHlwZScsXG5cbiAgLy8gRFBJX1VwZGF0ZVNjb3BlLCBoYXZpbmcgdHlwZSBVcGRhdGVTY29wZVxuICBVcGRhdGVTY29wZSA9ICd1cGRhdGVTY29wZScsXG5cbiAgLy8gRFBJX1BhcmFtZXRlckN0cmxEaXNwbGF5TW9kZSwgaGF2aW5nIHR5cGUgRGlzcGxheU1vZGVcbiAgUGFyYW1ldGVyQ3RybERpc3BsYXlNb2RlID0gJ3BhcmFtRGlzcGxheU1vZGUnLFxuXG4gIC8vIERQSV9QYXJhbWV0ZXJDdHJsRGlzcGxheUZsYWcsIGhhdmluZyB0eXBlIFBhcmFtZXRlckN0cmxEaXNwbGF5RmxhZ1xuICBQYXJhbWV0ZXJDdHJsRGlzcGxheUZsYWcgPSAncGFyYW1EaXNwbGF5RmxhZycsXG5cbiAgLy8gRFBJX0luY2x1ZGVkLCBoYXZpbmcgdHlwZSBRdWFudGl0YXRpdmVJbmNsdWRlZFZhbHVlc1xuICBJbmNsdWRlZCA9ICdpbmNsdWRlZCcsXG5cbiAgLy8gRFBJX0NvbW1hbmRzVHlwZSwgaGF2aW5nIHR5cGUgQ29tbWFuZHNUeXBlXG4gIENvbW1hbmRzVHlwZSA9ICdjb21tYW5kc1R5cGUnLFxuXG4gIC8vIERQSV9QYXJhbWV0ZXJEb21haW5UeXBlLCBoYXZpbmcgdHlwZSBEb21haW5UeXBlXG4gIFBhcmFtZXRlckRvbWFpblR5cGUgPSAncGFyYW1ldGVyRG9tYWluVHlwZScsXG5cbiAgLy8gRFBJX0ZpbHRlckRvbWFpblR5cGUsIGhhdmluZyB0eXBlIERvbWFpblR5cGVcbiAgRmlsdGVyRG9tYWluVHlwZSA9ICdmaWx0ZXJEb21haW5UeXBlJyxcblxuICAvLyBEUElfRmlsdGVyRG9tYWlucywgaGF2aW5nIHR5cGUgRG9tYWluVHlwZVtdXG4gIEZpbHRlckRvbWFpbnMgPSAnZmlsdGVyRG9tYWlucycsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsRmlsdGVyVHlwZSwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxGaWx0ZXJUeXBlXG4gIENhdGVnb3JpY2FsRmlsdGVyVHlwZSA9ICdjYXRlZ29yaWNhbEZpbHRlclR5cGUnLFxuXG4gIC8vIERQSV9EYXRlUGVyaW9kVHlwZSwgaGF2aW5nIHR5cGUgRGF0ZVBlcmlvZFR5cGVcbiAgRGF0ZVBlcmlvZFR5cGUgPSAnZGF0ZVBlcmlvZFR5cGUnLFxuXG4gIC8vIERQSV9GaWx0ZXJQYXR0ZXJuVHlwZSwgaGF2aW5nIHR5cGUgUGF0dGVyblR5cGVcbiAgRmlsdGVyUGF0dGVyblR5cGUgPSAnZmlsdGVyUGF0dGVyblR5cGUnLFxuXG4gIC8vIERQSV9GaWx0ZXJDb25kaXRpb25UeXBlLCBoYXZpbmcgdHlwZSBDb25kaXRpb25UeXBlXG4gIEZpbHRlckNvbmRpdGlvblR5cGUgPSAnZmlsdGVyQ29uZGl0aW9uVHlwZScsXG5cbiAgLy8gRFBJX0ZpbHRlcnNQcmVzZXRUeXBlLCBoYXZpbmcgdHlwZSBQcmVzZXRUeXBlXG4gIEZpbHRlcnNQcmVzZXRUeXBlID0gJ2ZpbHRlcnNQcmVzZXRUeXBlJyxcblxuICAvLyBEUElfRmlsdGVyc1JhbmdlVHlwZSwgaGF2aW5nIHR5cGUgUmFuZ2VUeXBlXG4gIEZpbHRlcnNSYW5nZVR5cGUgPSAnZmlsdGVyc1JhbmdlVHlwZScsXG5cbiAgLy8gRFBJX0RhdGVSYW5nZVR5cGUsIGhhdmluZyB0eXBlIFJlbGF0aXZlRGF0ZVJhbmdlVHlwZVxuICBEYXRlUmFuZ2VUeXBlID0gJ2RhdGVSYW5nZVR5cGUnLFxuXG4gIC8vIERQSV9QYWdlRmxhZywgaGF2aW5nIHR5cGUgUGFnZU5hdkZsYWdzXG4gIFBhZ2VGbGFnID0gJ3BhZ2VGbGFnJyxcblxuICAvLyBEUElfTWFya3NUb1RyYWlsLCBoYXZpbmcgdHlwZSBNYXJrc1RvVHJhaWxcbiAgTWFya3NUb1RyYWlsID0gJ21hcmtzVG9UcmFpbCcsXG5cbiAgLy8gRFBJX1RyYWlsVHlwZSwgaGF2aW5nIHR5cGUgVHJhaWxUeXBlXG4gIFRyYWlsVHlwZSA9ICd0cmFpbFR5cGUnLFxuXG4gIC8vIERQSV9DaGFuZ2VQYWdlRGlyZWN0aW9uLCBoYXZpbmcgdHlwZSBDaGFuZ2VQYWdlVHlwZVxuICBDaGFuZ2VQYWdlRGlyZWN0aW9uID0gJ2NoYW5nZVRvJyxcblxuICAvLyBEUElfQW5pbWF0aW9uQ29udHJvbCwgaGF2aW5nIHR5cGUgUGFnZUFuaW1hdGlvbkNvbnRyb2xcbiAgQW5pbWF0aW9uQ29udHJvbCA9ICdhbmltYXRpb25Db250cm9sJyxcblxuICAvLyBEUElfTGluZVBhdHRlcm4sIGhhdmluZyB0eXBlIExpbmVQYXR0ZXJuXG4gIExpbmVQYXR0ZXJuID0gJ2xpbmVQYXR0ZXJuJyxcblxuICAvLyBEUElfTGluZUNhcCwgaGF2aW5nIHR5cGUgTGluZUNhcFxuICBMaW5lQ2FwID0gJ2xpbmVDYXAnLFxuXG4gIC8vIERQSV9MaW5lSm9pbiwgaGF2aW5nIHR5cGUgTGluZUpvaW5cbiAgTGluZUpvaW4gPSAnbGluZUpvaW4nLFxuXG4gIC8vIERQSV9MaW5lQWxpZ25tZW50LCBoYXZpbmcgdHlwZSBMaW5lQWxpZ25tZW50XG4gIExpbmVBbGlnbm1lbnQgPSAnbGluZUFsaWdubWVudCcsXG5cbiAgLy8gRFBJX0ZpbGxNb2RlLCBoYXZpbmcgdHlwZSBGaWxsTW9kZVxuICBGaWxsTW9kZSA9ICdmaWxsTW9kZScsXG5cbiAgLy8gRFBJX0N1cnNvclNoYXBlLCBoYXZpbmcgdHlwZSBDdXJzb3JTaGFwZVxuICBDdXJzb3JTaGFwZSA9ICdjdXJzb3JTaGFwZScsXG5cbiAgLy8gRFBJX1Nob3dNZUNvbW1hbmRUeXBlLCBoYXZpbmcgdHlwZSBTaG93TWVDb21tYW5kVHlwZVxuICBTaG93TWVDb21tYW5kVHlwZSA9ICdzaG93TWVDb21tYW5kVHlwZScsXG5cbiAgLy8gRFBJX1NoZWxmSWNvblR5cGUsIGhhdmluZyB0eXBlIFNoZWxmSWNvblR5cGVcbiAgU2hlbGZJY29uVHlwZSA9ICdzaGVsZkljb25UeXBlJyxcblxuICAvLyBEUElfU2hlbGZJY29uVHlwZXMsIGhhdmluZyB0eXBlIFNoZWxmSWNvblR5cGVbXVxuICBTaGVsZkljb25UeXBlcyA9ICdzaGVsZkljb25UeXBlcycsXG5cbiAgLy8gRFBJX0l0ZW1EcmF3U3R5bGUsIGhhdmluZyB0eXBlIEl0ZW1EcmF3U3R5bGVcbiAgSXRlbURyYXdTdHlsZSA9ICdpdGVtRHJhd1N0eWxlJyxcblxuICAvLyBEUElfU2NhbGVNb2RlLCBoYXZpbmcgdHlwZSBTY2FsZU1vZGVcbiAgU2NhbGVNb2RlID0gJ3BhZ2VTY2FsZU1vZGUnLFxuXG4gIC8vIERQSV9QYWdlT3JpZW50YXRpb25PcHRpb24sIGhhdmluZyB0eXBlIFBhZ2VPcmllbnRhdGlvblxuICBQYWdlT3JpZW50YXRpb25PcHRpb24gPSAncGFnZU9yaWVudGF0aW9uT3B0aW9uJyxcblxuICAvLyBEUElfUGFnZVNpemVPcHRpb24sIGhhdmluZyB0eXBlIFBhZ2VTaXplT3B0aW9uXG4gIFBhZ2VTaXplT3B0aW9uID0gJ3BhZ2VTaXplT3B0aW9uJyxcblxuICAvLyBEUElfU29ydFJlZ2lvblR5cGUsIGhhdmluZyB0eXBlIFNvcnRSZWdpb25UeXBlXG4gIFNvcnRSZWdpb25UeXBlID0gJ3NvcnRSZWdpb24nLFxuXG4gIC8vIERQSV9MZWdlbmRJdGVtTGF5b3V0LCBoYXZpbmcgdHlwZSBMZWdlbmRJdGVtTGF5b3V0XG4gIExlZ2VuZEl0ZW1MYXlvdXQgPSAnbGVnZW5kTGF5b3V0JyxcblxuICAvLyBEUElfTGVnZW5kSXRlbU9yZGVyLCBoYXZpbmcgdHlwZSBMZWdlbmRJdGVtT3JkZXJcbiAgTGVnZW5kSXRlbU9yZGVyID0gJ2xlZ2VuZE9yZGVyJyxcblxuICAvLyBEUElfVml6SW1hZ2VSZWdpb24sIGhhdmluZyB0eXBlIFZpekltYWdlUmVnaW9uXG4gIFZpekltYWdlUmVnaW9uID0gJ3InLFxuXG4gIC8vIERQSV9MZWdhY3lNZW51TmFtZSwgaGF2aW5nIHR5cGUgTGVnYWN5TWVudU5hbWVcbiAgTGVnYWN5TWVudU5hbWUgPSAnbGVnYWN5TWVudU5hbWUnLFxuXG4gIC8vIERQSV9MZWdhY3lNZW51U3RhdGUsIGhhdmluZyB0eXBlIExlZ2FjeU1lbnVTdGF0ZVxuICBMZWdhY3lNZW51U3RhdGUgPSAnbGVnYWN5TWVudVN0YXRlJyxcblxuICAvLyBEUElfTGVnYWN5TWVudVN0YXRlTGlzdCwgaGF2aW5nIHR5cGUgTGVnYWN5TWVudVN0YXRlW11cbiAgTGVnYWN5TWVudVN0YXRlTGlzdCA9ICdsZWdhY3lNZW51U3RhdGVzJyxcblxuICAvLyBEUElfRGltZW5zaW9uVHlwZSwgaGF2aW5nIHR5cGUgRGltZW5zaW9uVHlwZVxuICBEaW1lbnNpb25UeXBlID0gJ2RpbWVuc2lvblR5cGUnLFxuXG4gIC8vIERQSV9MYXlvdXRUeXBlLCBoYXZpbmcgdHlwZSBMYXlvdXRUeXBlXG4gIExheW91dFR5cGUgPSAnbGF5b3V0VHlwZScsXG5cbiAgLy8gRFBJX1NoZWxmVHlwZSwgaGF2aW5nIHR5cGUgU2hlbGZUeXBlXG4gIFNoZWxmVHlwZSA9ICdzaGVsZlR5cGUnLFxuXG4gIC8vIERQSV9MYXN0U2VsZWN0aW9uU2hlbGYsIGhhdmluZyB0eXBlIFNoZWxmVHlwZVxuICBMYXN0U2VsZWN0aW9uU2hlbGYgPSAnbGFzdFNoZWxmJyxcblxuICAvLyBEUElfU2NoZW1hVmlld2VyRGF0YVNvdXJjZVR5cGUsIGhhdmluZyB0eXBlIFNjaGVtYVZpZXdlckRhdGFTb3VyY2VUeXBlXG4gIFNjaGVtYVZpZXdlckRhdGFTb3VyY2VUeXBlID0gJ3NjaGVtYURhdGFzb3VyY2VUeXBlJyxcblxuICAvLyBEUElfU2NoZW1hSXRlbVR5cGUsIGhhdmluZyB0eXBlIFNjaGVtYUl0ZW1UeXBlXG4gIFNjaGVtYUl0ZW1UeXBlID0gJ3NjaGVtYUl0ZW1UeXBlJyxcblxuICAvLyBEUElfSFNNU2VsZWN0aW9uTW9kZSwgaGF2aW5nIHR5cGUgU2VsZWN0aW9uTW9kZVxuICBIU01TZWxlY3Rpb25Nb2RlID0gJ2hzbVNlbGVjdGlvbk1vZGUnLFxuXG4gIC8vIERQSV9IU01EZWZhdWx0TWVtYmVyVHlwZSwgaGF2aW5nIHR5cGUgRGVmYXVsdE1lbWJlclR5cGVcbiAgSFNNRGVmYXVsdE1lbWJlclR5cGUgPSAnaHNtRGVmYXVsdE1lbWJlclR5cGUnLFxuXG4gIC8vIERQSV9IU01Ob3RpZmljYXRpb25UeXBlLCBoYXZpbmcgdHlwZSBOb3RpZmljYXRpb25UeXBlXG4gIEhTTU5vdGlmaWNhdGlvblR5cGUgPSAnaHNtTm90aWZpY2F0aW9uVHlwZScsXG5cbiAgLy8gRFBJX0hTTVNlbGVjdGlvblJlcXVlc3RUeXBlLCBoYXZpbmcgdHlwZSBTZWxlY3Rpb25SZXF1ZXN0VHlwZVxuICBIU01TZWxlY3Rpb25SZXF1ZXN0VHlwZSA9ICdoc21TZWxlY3Rpb25SZXF1ZXN0VHlwZScsXG5cbiAgLy8gRFBJX0hTTU1lbWJlclNlbGVjdFJlcXVlc3RUeXBlLCBoYXZpbmcgdHlwZSBNZW1iZXJTZWxlY3RSZXF1ZXN0VHlwZVxuICBIU01NZW1iZXJTZWxlY3RSZXF1ZXN0VHlwZSA9ICdoc21NZW1iZXJTZWxlY3RSZXF1ZXN0VHlwZScsXG5cbiAgLy8gRFBJX1Bpdm90U3RyYXRlZ3ksIGhhdmluZyB0eXBlIEZpZWxkUGl2b3RTdHJhdGVneVxuICBQaXZvdFN0cmF0ZWd5ID0gJ3Bpdm90U3RyYXRlZ3knLFxuXG4gIC8vIERQSV9BbGlhc1R5cGUsIGhhdmluZyB0eXBlIEFsaWFzVHlwZVxuICBBbGlhc1R5cGUgPSAnYWxpYXNUeXBlJyxcblxuICAvLyBEUElfRFNPRGltZW5zaW9uU29ydE9yZGVyLCBoYXZpbmcgdHlwZSBEYXRhU291cmNlT3JkZXJcbiAgRFNPRGltZW5zaW9uU29ydE9yZGVyID0gJ2Rzb0RpbWVuc2lvblNvcnRPcmRlcicsXG5cbiAgLy8gRFBJX0RTT01lYXN1cmVTb3J0T3JkZXIsIGhhdmluZyB0eXBlIERhdGFTb3VyY2VPcmRlclxuICBEU09NZWFzdXJlU29ydE9yZGVyID0gJ2Rzb01lYXN1cmVTb3J0T3JkZXInLFxuXG4gIC8vIERQSV9EU09Tb3J0T3JkZXIsIGhhdmluZyB0eXBlIERhdGFTb3VyY2VPcmRlclxuICBEU09Tb3J0T3JkZXIgPSAnZHNvU29ydE9yZGVyJyxcblxuICAvLyBEUElfVlRBZ2dUeXBlLCBoYXZpbmcgdHlwZSBWVEFnZ1R5cGVcbiAgVlRBZ2dUeXBlID0gJ3Z0QWdncmVnYXRpb24nLFxuXG4gIC8vIERQSV9GaWVsZFR5cGVJY29uU2V0LCBoYXZpbmcgdHlwZSBGaWVsZFR5cGVJY29uU2V0XG4gIEZpZWxkVHlwZUljb25TZXQgPSAnZmllbGRJY29uU2V0JyxcblxuICAvLyBEUElfVmlzdWFsUGFydCwgaGF2aW5nIHR5cGUgVmlzdWFsUGFydFxuICBWaXN1YWxQYXJ0ID0gJ3Zpc3VhbFBhcnQnLFxuXG4gIC8vIERQSV9EZWZhdWx0TWFwVG9vbEVudW0sIGhhdmluZyB0eXBlIE1hcFRvb2xTZWxlY3Rpb25cbiAgRGVmYXVsdE1hcFRvb2xFbnVtID0gJ2RlZmF1bHRNYXBUb29sRW51bScsXG5cbiAgLy8gRFBJX0RlZmF1bHRNYXBVbml0RW51bSwgaGF2aW5nIHR5cGUgTWFwVW5pdFNlbGVjdGlvbkVudW1cbiAgRGVmYXVsdE1hcFVuaXRFbnVtID0gJ2RlZmF1bHRNYXBVbml0RW51bScsXG5cbiAgLy8gRFBJX1NjZW5lTW9kZWxEZXRhaWwsIGhhdmluZyB0eXBlIERldGFpbFxuICBTY2VuZU1vZGVsRGV0YWlsID0gJ3NjZW5lTW9kZWxEZXRhaWxFbnVtJyxcblxuICAvLyBEUElfU2NlbmVNb2RlbEhpdFR5cGUsIGhhdmluZyB0eXBlIEhpdFR5cGVcbiAgU2NlbmVNb2RlbEhpdFR5cGUgPSAnc2NlbmVNb2RlbEhpdFR5cGUnLFxuXG4gIC8vIERQSV9IaXRUZXN0U3R5bGUsIGhhdmluZyB0eXBlIEhpdFRlc3RTdHlsZVxuICBIaXRUZXN0U3R5bGUgPSAnaGl0VGVzdFN0eWxlJyxcblxuICAvLyBEUElfTWFya1N0YXRlLCBoYXZpbmcgdHlwZSBNYXJrU3RhdGVcbiAgTWFya1N0YXRlID0gJ21hcmtTdGF0ZScsXG5cbiAgLy8gRFBJX1NoZWV0VHlwZSwgaGF2aW5nIHR5cGUgU2hlZXRUeXBlXG4gIFNoZWV0VHlwZSA9ICdzaGVldFR5cGUnLFxuXG4gIC8vIERQSV9EcmFnU291cmNlLCBoYXZpbmcgdHlwZSBEcmFnRHJvcFR5cGVcbiAgRHJhZ1NvdXJjZSA9ICdkcmFnU291cmNlJyxcblxuICAvLyBEUElfRHJvcFRhcmdldCwgaGF2aW5nIHR5cGUgRHJhZ0Ryb3BUeXBlXG4gIERyb3BUYXJnZXQgPSAnZHJvcFRhcmdldCcsXG5cbiAgLy8gRFBJX1NoZWxmRHJvcEFjdGlvbiwgaGF2aW5nIHR5cGUgU2hlbGZEcm9wQWN0aW9uXG4gIFNoZWxmRHJvcEFjdGlvbiA9ICdzaGVsZkRyb3BBY3Rpb24nLFxuXG4gIC8vIERQSV9TaGVsZkRyb3BDb250ZXh0LCBoYXZpbmcgdHlwZSBTaGVsZkRyb3BDb250ZXh0XG4gIFNoZWxmRHJvcENvbnRleHQgPSAnc2hlbGZEcm9wQ29udGV4dCcsXG5cbiAgLy8gRFBJX0ZpbHRlclNlbGVjdGlvblRyYWNraW5nLCBoYXZpbmcgdHlwZSBTZWxlY3Rpb25UcmFja2luZ1xuICBGaWx0ZXJTZWxlY3Rpb25UcmFja2luZyA9ICdmaWx0ZXJTZWxlY3Rpb25UcmFja2luZycsXG5cbiAgLy8gRFBJX0ZpbHRlclVwZGF0ZVR5cGUsIGhhdmluZyB0eXBlIEZpbHRlclVwZGF0ZVR5cGVcbiAgRmlsdGVyVXBkYXRlVHlwZSA9ICdmaWx0ZXJVcGRhdGVUeXBlJyxcblxuICAvLyBEUElfRmlsdGVyVXBkYXRlUXVhbGlmaWVyVHlwZSwgaGF2aW5nIHR5cGUgRmlsdGVyVXBkYXRlUXVhbGlmaWVyVHlwZVxuICBGaWx0ZXJVcGRhdGVRdWFsaWZpZXJUeXBlID0gJ2ZpbHRlclVwZGF0ZVF1YWxpZmllclR5cGUnLFxuXG4gIC8vIERQSV9QYXJhbWV0ZXJFcnJvciwgaGF2aW5nIHR5cGUgUGFyYW1ldGVyRXJyb3JcbiAgUGFyYW1ldGVyRXJyb3IgPSAncGFyYW1ldGVyRXJyb3InLFxuXG4gIC8vIERQSV9TZWxlY3Rpb25UeXBlLCBoYXZpbmcgdHlwZSBTZWxlY3Rpb25UeXBlXG4gIFNlbGVjdGlvblR5cGUgPSAnc2VsZWN0aW9uVHlwZScsXG5cbiAgLy8gRFBJX1NlbGVjdGlvblVwZGF0ZVR5cGUsIGhhdmluZyB0eXBlIFNlbGVjdGlvblVwZGF0ZVR5cGVcbiAgU2VsZWN0aW9uVXBkYXRlVHlwZSA9ICdzZWxlY3Rpb25VcGRhdGVUeXBlJyxcblxuICAvLyBEUElfU2VsZWN0T3B0aW9ucywgaGF2aW5nIHR5cGUgU2VsZWN0T3B0aW9uc1xuICBTZWxlY3RPcHRpb25zID0gJ3NlbGVjdE9wdGlvbnMnLFxuXG4gIC8vIERQSV9XaGl0ZXNwYWNlU2VsZWN0aW9uQmVoYXZpb3IsIGhhdmluZyB0eXBlIFdoaXRlc3BhY2VTZWxlY3Rpb25CZWhhdmlvclxuICBXaGl0ZXNwYWNlU2VsZWN0aW9uQmVoYXZpb3IgPSAnd2hpdGVzcGFjZVNlbGVjdGlvbkJlaGF2aW9yJyxcblxuICAvLyBEUElfQXhpc09yaWVudGF0aW9uLCBoYXZpbmcgdHlwZSBPcmllbnRhdGlvblxuICBBeGlzT3JpZW50YXRpb24gPSAnYXhpc09yaWVudGF0aW9uJyxcblxuICAvLyBEUElfRGVjaW1hbE1vZGUsIGhhdmluZyB0eXBlIERlY2ltYWxNb2RlXG4gIERlY2ltYWxNb2RlID0gJ2RlY2ltYWxNb2RlJyxcblxuICAvLyBEUElfQWN0aXZhdGlvbk1ldGhvZCwgaGF2aW5nIHR5cGUgQWN0aXZhdGlvbk1ldGhvZFxuICBBY3RpdmF0aW9uTWV0aG9kID0gJ2FjdGl2YXRpb24nLFxuXG4gIC8vIERQSV9Tb3VyY2VUeXBlLCBoYXZpbmcgdHlwZSBTb3VyY2VUeXBlXG4gIFNvdXJjZVR5cGUgPSAnc291cmNlVHlwZScsXG5cbiAgLy8gRFBJX09uQ2xlYXIsIGhhdmluZyB0eXBlIE9uQ2xlYXJcbiAgT25DbGVhciA9ICdvbkNsZWFyJyxcblxuICAvLyBEUElfTWVyZ2VPclNwbGl0LCBoYXZpbmcgdHlwZSBNZXJnZU9yU3BsaXRcbiAgTWVyZ2VPclNwbGl0ID0gJ21lcmdlT3JTcGxpdCcsXG5cbiAgLy8gRFBJX0ZpbHRlck1vZGUsIGhhdmluZyB0eXBlIEZpbHRlck1vZGVcbiAgRmlsdGVyTW9kZSA9ICdmaWx0ZXJNb2RlJyxcblxuICAvLyBEUElfRmlsdGVyVHlwZSwgaGF2aW5nIHR5cGUgRmlsdGVyVHlwZVxuICBGaWx0ZXJUeXBlID0gJ2ZpbHRlclR5cGUnLFxuXG4gIC8vIERQSV9ab25lVHlwZSwgaGF2aW5nIHR5cGUgWm9uZVR5cGVcbiAgWm9uZVR5cGUgPSAnem9uZVR5cGUnLFxuXG4gIC8vIERQSV9ab25lTGF5b3V0VHlwZSwgaGF2aW5nIHR5cGUgWm9uZUxheW91dFR5cGVcbiAgWm9uZUxheW91dFR5cGUgPSAnem9uZUxheW91dFR5cGUnLFxuXG4gIC8vIERQSV9RdWlja1RhYmxlQ2FsY1R5cGUsIGhhdmluZyB0eXBlIFF1aWNrVGFibGVDYWxjQ29tbWFuZFR5cGVcbiAgUXVpY2tUYWJsZUNhbGNUeXBlID0gJ3F1aWNrVGFibGVDYWxjVHlwZScsXG5cbiAgLy8gRFBJX1RhYmxlQ2FsY0NvbW1hbmRUeXBlLCBoYXZpbmcgdHlwZSBUYWJsZUNhbGNDb21tYW5kVHlwZVxuICBUYWJsZUNhbGNDb21tYW5kVHlwZSA9ICd0YWJsZUNhbGNDb21tYW5kVHlwZScsXG5cbiAgLy8gRFBJX1RhYmxlQ2FsY0FkZHJlc3NUeXBlLCBoYXZpbmcgdHlwZSBUYWJsZUNhbGNBZGRyZXNzQ29tbWFuZFR5cGVcbiAgVGFibGVDYWxjQWRkcmVzc1R5cGUgPSAndGFibGVDYWxjQWRkcmVzc1R5cGUnLFxuXG4gIC8vIERQSV9NYXJrTGF5b3V0UHJpbWl0aXZlLCBoYXZpbmcgdHlwZSBQcmltaXRpdmVcbiAgTWFya0xheW91dFByaW1pdGl2ZSA9ICdtYXJrTGF5b3V0UHJpbWl0aXZlJyxcblxuICAvLyBEUElfTWFya0xheW91dFZpelR5cGUsIGhhdmluZyB0eXBlIFZpelR5cGVcbiAgTWFya0xheW91dFZpelR5cGUgPSAnbWFya0xheW91dFZpelR5cGUnLFxuXG4gIC8vIERQSV9NYXJrQWxpZ25tZW50LCBoYXZpbmcgdHlwZSBNYXJrQWxpZ25tZW50XG4gIE1hcmtBbGlnbm1lbnQgPSAnbWFya0FsaWdubWVudCcsXG5cbiAgLy8gRFBJX01vZGlmeVpvbmVaT3JkZXJUeXBlLCBoYXZpbmcgdHlwZSBNb2RpZnlab25lWk9yZGVyQ29tbWFuZFR5cGVcbiAgTW9kaWZ5Wm9uZVpPcmRlclR5cGUgPSAnbW9kaWZ5Wm9uZVpPcmRlclR5cGUnLFxuXG4gIC8vIERQSV9UZXh0UmVnaW9uSEFsaWduLCBoYXZpbmcgdHlwZSBUZXh0UmVnaW9uSEFsaWduXG4gIFRleHRSZWdpb25IQWxpZ24gPSAnaGFsaWduJyxcblxuICAvLyBEUElfVGV4dFJlZ2lvblZBbGlnbiwgaGF2aW5nIHR5cGUgVGV4dFJlZ2lvblZBbGlnblxuICBUZXh0UmVnaW9uVkFsaWduID0gJ3ZhbGlnbicsXG5cbiAgLy8gRFBJX1BhdGhFbGVtZW50LCBoYXZpbmcgdHlwZSBQYXRoRWxlbWVudFxuICBQYXRoRWxlbWVudCA9ICdwYXRoRWxlbWVudCcsXG5cbiAgLy8gRFBJX1BhdGhFbGVtZW50cywgaGF2aW5nIHR5cGUgUGF0aEVsZW1lbnRbXVxuICBQYXRoRWxlbWVudHMgPSAncGF0aEVsZW1lbnRzJyxcblxuICAvLyBEUElfUmVuZGVyTW9kZSwgaGF2aW5nIHR5cGUgUmVuZGVyTW9kZVxuICBSZW5kZXJNb2RlID0gJ3JlbmRlck1vZGUnLFxuXG4gIC8vIERQSV9Gb250U3R5bGUsIGhhdmluZyB0eXBlIFRhYmxlYXVGb250U3R5bGVcbiAgRm9udFN0eWxlID0gJ2ZvbnRTdHlsZScsXG5cbiAgLy8gRFBJX0ZvbnRXZWlnaHQsIGhhdmluZyB0eXBlIEZvbnRXZWlnaHRcbiAgRm9udFdlaWdodCA9ICdmb250V2VpZ2h0JyxcblxuICAvLyBEUElfVGV4dERlY29yYXRpb24sIGhhdmluZyB0eXBlIFRleHREZWNvcmF0aW9uXG4gIFRleHREZWNvcmF0aW9uID0gJ3RleHREZWNvcmF0aW9uJyxcblxuICAvLyBEUElfQm9yZGVyU3R5bGUsIGhhdmluZyB0eXBlIEJvcmRlclN0eWxlXG4gIEJvcmRlclN0eWxlID0gJ2JvcmRlclN0eWxlJyxcblxuICAvLyBEUElfQm9yZGVyU3R5bGVUb3AsIGhhdmluZyB0eXBlIEJvcmRlclN0eWxlXG4gIEJvcmRlclN0eWxlVG9wID0gJ2JvcmRlclN0eWxlVG9wJyxcblxuICAvLyBEUElfQm9yZGVyU3R5bGVSaWdodCwgaGF2aW5nIHR5cGUgQm9yZGVyU3R5bGVcbiAgQm9yZGVyU3R5bGVSaWdodCA9ICdib3JkZXJTdHlsZVJpZ2h0JyxcblxuICAvLyBEUElfQm9yZGVyU3R5bGVCb3R0b20sIGhhdmluZyB0eXBlIEJvcmRlclN0eWxlXG4gIEJvcmRlclN0eWxlQm90dG9tID0gJ2JvcmRlclN0eWxlQm90dG9tJyxcblxuICAvLyBEUElfQm9yZGVyU3R5bGVMZWZ0LCBoYXZpbmcgdHlwZSBCb3JkZXJTdHlsZVxuICBCb3JkZXJTdHlsZUxlZnQgPSAnYm9yZGVyU3R5bGVMZWZ0JyxcblxuICAvLyBEUElfRmxvYXRpbmdUb29sYmFyVmlzaWJpbGl0eSwgaGF2aW5nIHR5cGUgRmxvYXRpbmdUb29sYmFyVmlzaWJpbGl0eVxuICBGbG9hdGluZ1Rvb2xiYXJWaXNpYmlsaXR5ID0gJ2Zsb2F0aW5nVG9vbGJhclZpc2liaWxpdHknLFxuXG4gIC8vIERQSV9HZW9TZWFyY2hWaXNpYmlsaXR5LCBoYXZpbmcgdHlwZSBHZW9TZWFyY2hWaXNpYmlsaXR5XG4gIEdlb1NlYXJjaFZpc2liaWxpdHkgPSAnZ2VvZ3JhcGhpY1NlYXJjaFZpc2liaWxpdHknLFxuXG4gIC8vIERQSV9NYXBTY2FsZVZpc2liaWxpdHksIGhhdmluZyB0eXBlIE1hcFNjYWxlVmlzaWJpbGl0eVxuICBNYXBTY2FsZVZpc2liaWxpdHkgPSAnbWFwU2NhbGVWaXNpYmlsaXR5JyxcblxuICAvLyBEUElfVml6TmF2aWdhdGlvblNldHRpbmcsIGhhdmluZyB0eXBlIFZpek5hdmlnYXRpb25TZXR0aW5nXG4gIFZpek5hdmlnYXRpb25TZXR0aW5nID0gJ3Zpek5hdmlnYXRpb25TZXR0aW5nJyxcblxuICAvLyBEUElfQXV0b0RyaWxsVmlzaWJpbGl0eSwgaGF2aW5nIHR5cGUgQXV0b0RyaWxsVmlzaWJpbGl0eVxuICBBdXRvRHJpbGxWaXNpYmlsaXR5ID0gJ2F1dG9EcmlsbFZpc2liaWxpdHknLFxuXG4gIC8vIERQSV9DbGllbnRVSU1ldHJpY1R5cGUsIGhhdmluZyB0eXBlIENsaWVudFVJTWV0cmljVHlwZVxuICBDbGllbnRVSU1ldHJpY1R5cGUgPSAnY2xpZW50VWlNZXRyaWNUeXBlJyxcblxuICAvLyBEUElfU2hlZXRTY3JvbGxEaXJlY3Rpb24sIGhhdmluZyB0eXBlIFNoZWV0U2Nyb2xsRGlyZWN0aW9uXG4gIFNoZWV0U2Nyb2xsRGlyZWN0aW9uID0gJ3NoZWV0U2Nyb2xsRGlyZWN0aW9uJyxcblxuICAvLyBEUElfU2l6ZU1vZGUsIGhhdmluZyB0eXBlIFNpemVNb2RlXG4gIFNpemVNb2RlID0gJ3NpemVNb2RlJyxcblxuICAvLyBEUElfUGVyc3BlY3RpdmVBZ2dyZWdhdGUsIGhhdmluZyB0eXBlIFBlcnNwZWN0aXZlQWdncmVnYXRlXG4gIFBlcnNwZWN0aXZlQWdncmVnYXRlID0gJ3BlcnNwZWN0aXZlQWdncmVnYXRpb24nLFxuXG4gIC8vIERQSV9TdHlsZUF0dHJpYnV0ZSwgaGF2aW5nIHR5cGUgU3R5bGVBdHRyaWJ1dGVcbiAgU3R5bGVBdHRyaWJ1dGUgPSAnc3R5bGVBdHRyaWJ1dGUnLFxuXG4gIC8vIERQSV9TdHlsZUF0dHJpYnV0ZXMsIGhhdmluZyB0eXBlIFN0eWxlQXR0cmlidXRlW11cbiAgU3R5bGVBdHRyaWJ1dGVzID0gJ3N0eWxlQXR0cmlidXRlcycsXG5cbiAgLy8gRFBJX1N0eWxlRWxlbWVudCwgaGF2aW5nIHR5cGUgU3R5bGVFbGVtZW50XG4gIFN0eWxlRWxlbWVudCA9ICdzdHlsZUVsZW1lbnQnLFxuXG4gIC8vIERQSV9TdHlsZURhdGFDbGFzcywgaGF2aW5nIHR5cGUgU3R5bGVEYXRhQ2xhc3NcbiAgU3R5bGVEYXRhQ2xhc3MgPSAnc3R5bGVDbGFzcycsXG5cbiAgLy8gRFBJX1N0eWxlRmllbGRTY29wZSwgaGF2aW5nIHR5cGUgU3R5bGVGaWVsZFNjb3BlXG4gIFN0eWxlRmllbGRTY29wZSA9ICdzdHlsZVNjb3BlJyxcblxuICAvLyBEUElfRm9ybWF0Q29udHJvbFR5cGUsIGhhdmluZyB0eXBlIEZvcm1hdENvbnRyb2xUeXBlXG4gIEZvcm1hdENvbnRyb2xUeXBlID0gJ2Zvcm1hdFR5cGUnLFxuXG4gIC8vIERQSV9MaW5lSW50ZXJwb2xhdGlvbk1vZGUsIGhhdmluZyB0eXBlIExpbmVJbnRlcnBvbGF0aW9uTW9kZVxuICBMaW5lSW50ZXJwb2xhdGlvbk1vZGUgPSAnbGluZUludGVycG9sYXRpb25Nb2RlJyxcblxuICAvLyBEUElfTGluZU1hcmtlclBvc2l0aW9uLCBoYXZpbmcgdHlwZSBMaW5lTWFya2VyUG9zaXRpb25cbiAgTGluZU1hcmtlclBvc2l0aW9uID0gJ2xpbmVNYXJrZXJQb3NpdGlvbicsXG5cbiAgLy8gRFBJX01hcmtlcnNNb2RlLCBoYXZpbmcgdHlwZSBNYXJrTWFya2Vyc01vZGVcbiAgTWFya2Vyc01vZGUgPSAnbWFya2Vyc01vZGUnLFxuXG4gIC8vIERQSV9BcHBDb25maWdFbnVtLCBoYXZpbmcgdHlwZSBBcHBDb25maWdFbnVtXG4gIEFwcENvbmZpZ0VudW0gPSAnYXBwQ29uZmlnRW51bScsXG5cbiAgLy8gRFBJX0NvbG9yUGFsZXR0ZVR5cGUsIGhhdmluZyB0eXBlIENvbG9yUGFsZXR0ZVR5cGVcbiAgQ29sb3JQYWxldHRlVHlwZSA9ICdjb2xvclBhbGV0dGVUeXBlJyxcblxuICAvLyBEUElfRXh0cmFjdFR5cGUsIGhhdmluZyB0eXBlIEV4dHJhY3RUeXBlXG4gIEV4dHJhY3RUeXBlID0gJ2V4dHJhY3RUeXBlJyxcblxuICAvLyBEUElfQWN0aXZpdHlEaXNwb3NpdGlvbiwgaGF2aW5nIHR5cGUgQWN0aXZpdHlEaXNwb3NpdGlvblxuICBBY3Rpdml0eURpc3Bvc2l0aW9uID0gJ2FjdGl2aXR5RGlzcG9zaXRpb24nLFxuXG4gIC8vIERQSV9BY3Rpdml0eVJlc3VsdCwgaGF2aW5nIHR5cGUgQWN0aXZpdHlSZXN1bHRcbiAgQWN0aXZpdHlSZXN1bHQgPSAnYWN0aXZpdHlSZXN1bHQnLFxuXG4gIC8vIERQSV9Ub29sdGlwTW9kZSwgaGF2aW5nIHR5cGUgVG9vbHRpcE1vZGVcbiAgVG9vbHRpcE1vZGUgPSAndG9vbHRpcE1vZGUnLFxuXG4gIC8vIERQSV9SdW50aW1lT3V0cHV0LCBoYXZpbmcgdHlwZSBSdW50aW1lT3V0cHV0XG4gIFJ1bnRpbWVPdXRwdXQgPSAncnVudGltZU91dHB1dCcsXG5cbiAgLy8gRFBJX0FuYWx5dGljc09iamVjdFR5cGUsIGhhdmluZyB0eXBlIEFuYWx5dGljc09iamVjdFR5cGVcbiAgQW5hbHl0aWNzT2JqZWN0VHlwZSA9ICdhbmFseXRpY3NPYmplY3RUeXBlJyxcblxuICAvLyBEUElfVUlBdXRvbWF0aW9uU3RhdHVzLCBoYXZpbmcgdHlwZSBVSUF1dG9tYXRpb25Db21tYW5kU3RhdHVzXG4gIFVJQXV0b21hdGlvblN0YXR1cyA9ICd1aUF1dG9tYXRpb25TdGF0dXMnLFxuXG4gIC8vIERQSV9UYWJsZVZpZXdEYXRhVHlwZSwgaGF2aW5nIHR5cGUgVGFibGVWaWV3RGF0YVR5cGVcbiAgVGFibGVWaWV3RGF0YVR5cGUgPSAndGFibGVWaWV3ZXJEYXRhVHlwZScsXG5cbiAgLy8gRFBJX1VuaXRzRm9ybWF0LCBoYXZpbmcgdHlwZSBVbml0c0Zvcm1hdEVudW1cbiAgVW5pdHNGb3JtYXQgPSAndW5pdHNGb3JtYXQnLFxuXG4gIC8vIERQSV9GaWx0ZXJMaW1pdFR5cGUsIGhhdmluZyB0eXBlIExpbWl0VHlwZVxuICBGaWx0ZXJMaW1pdFR5cGUgPSAnZmlsdGVyTGltaXRUeXBlJyxcblxuICAvLyBEUElfRGlzdHJpYnV0aW9uU2VsZWN0ZWRUeXBlLCBoYXZpbmcgdHlwZSBEaXN0cmlidXRpb25UeXBlXG4gIERpc3RyaWJ1dGlvblNlbGVjdGVkVHlwZSA9ICdkaXN0cmlidXRpb25TZWxlY3RlZFR5cGUnLFxuXG4gIC8vIERQSV9EaXN0cmlidXRpb25UeXBlLCBoYXZpbmcgdHlwZSBEaXN0cmlidXRpb25UeXBlXG4gIERpc3RyaWJ1dGlvblR5cGUgPSAnZGlzdHJpYnV0aW9uVHlwZScsXG5cbiAgLy8gRFBJX1RyYW5zbGF0ZWREaXN0cmlidXRpb25UeXBlLCBoYXZpbmcgdHlwZSBUcmFuc2xhdGVkRGlzdHJpYnV0aW9uVHlwZVByZXNNb2RlbFxuICBUcmFuc2xhdGVkRGlzdHJpYnV0aW9uVHlwZSA9ICd0cmFuc2xhdGVkRGlzdHJpYnV0aW9uVHlwZScsXG5cbiAgLy8gRFBJX1RyYW5zbGF0ZWREaXN0cmlidXRpb25UeXBlcywgaGF2aW5nIHR5cGUgVHJhbnNsYXRlZERpc3RyaWJ1dGlvblR5cGVQcmVzTW9kZWxbXVxuICBUcmFuc2xhdGVkRGlzdHJpYnV0aW9uVHlwZXMgPSAndHJhbnNsYXRlZERpc3RyaWJ1dGlvblR5cGVzJyxcblxuICAvLyBEUElfUmVmTGluZUZvcm11bGFHcm91cCwgaGF2aW5nIHR5cGUgRm9ybXVsYUdyb3VwXG4gIFJlZkxpbmVGb3JtdWxhR3JvdXAgPSAncmVmbGluZUZvcm11bGFHcm91cCcsXG5cbiAgLy8gRFBJX1JlZmVyZW5jZUxpbmVTY29wZVR5cGUsIGhhdmluZyB0eXBlIFNjb3BlVHlwZVxuICBSZWZlcmVuY2VMaW5lU2NvcGVUeXBlID0gJ3JlZmVyZW5jZUxpbmVTY29wZVR5cGUnLFxuXG4gIC8vIERQSV9TdERldlR5cGUsIGhhdmluZyB0eXBlIFN0RGV2VHlwZVxuICBTdERldlR5cGUgPSAnc3RkZXZUeXBlJyxcblxuICAvLyBEUElfU2hvd0JvdW5kcywgaGF2aW5nIHR5cGUgU2hvd0JvdW5kc1xuICBTaG93Qm91bmRzID0gJ3Nob3dCb3VuZHMnLFxuXG4gIC8vIERQSV9Cb3hwbG90V2hpc2tlclR5cGUsIGhhdmluZyB0eXBlIEJveHBsb3RXaGlza2VyVHlwZVxuICBCb3hwbG90V2hpc2tlclR5cGUgPSAnYm94cGxvdFdoaXNrZXJUeXBlJyxcblxuICAvLyBEUElfUmVmZXJlbmNlTGluZUxhYmVsVHlwZSwgaGF2aW5nIHR5cGUgTGFiZWxUeXBlXG4gIFJlZmVyZW5jZUxpbmVMYWJlbFR5cGUgPSAncmVmZXJlbmNlTGluZUxhYmVsVHlwZScsXG5cbiAgLy8gRFBJX1BhaXJlZFJlZmVyZW5jZUxpbmVMYWJlbFR5cGUsIGhhdmluZyB0eXBlIExhYmVsVHlwZVxuICBQYWlyZWRSZWZlcmVuY2VMaW5lTGFiZWxUeXBlID0gJ3BhaXJlZFJlZmVyZW5jZUxpbmVMYWJlbFR5cGUnLFxuXG4gIC8vIERQSV9Db25maWRlbmNlSW50ZXJ2YWxTZWxlY3RlZFN0YXRlLCBoYXZpbmcgdHlwZSBDb25maWRlbmNlSW50ZXJ2YWxTdGF0ZVxuICBDb25maWRlbmNlSW50ZXJ2YWxTZWxlY3RlZFN0YXRlID0gJ2NvbmZpZGVuY2VJbnRlcnZhbFNlbGVjdGVkU3RhdGUnLFxuXG4gIC8vIERQSV9Db25maWRlbmNlSW50ZXJ2YWxTdGF0ZSwgaGF2aW5nIHR5cGUgQ29uZmlkZW5jZUludGVydmFsU3RhdGVcbiAgQ29uZmlkZW5jZUludGVydmFsU3RhdGUgPSAnY29uZmlkZW5jZUludGVydmFsU3RhdGUnLFxuXG4gIC8vIERQSV9UcmFuc2xhdGVkTGFiZWxUeXBlLCBoYXZpbmcgdHlwZSBUcmFuc2xhdGVkTGFiZWxUeXBlUHJlc01vZGVsXG4gIFRyYW5zbGF0ZWRMYWJlbFR5cGUgPSAndHJhbnNsYXRlZExhYmVsVHlwZScsXG5cbiAgLy8gRFBJX1JlZmVyZW5jZUxpbmVWYWxpZExhYmVsVHlwZXMsIGhhdmluZyB0eXBlIFRyYW5zbGF0ZWRMYWJlbFR5cGVQcmVzTW9kZWxbXVxuICBSZWZlcmVuY2VMaW5lVmFsaWRMYWJlbFR5cGVzID0gJ3ZhbGlkUmVmZXJlbmNlTGluZUxhYmVsVHlwZXMnLFxuXG4gIC8vIERQSV9SZWZlcmVuY2VMaW5lRm9ybXVsYVR5cGUsIGhhdmluZyB0eXBlIEZvcm11bGFUeXBlXG4gIFJlZmVyZW5jZUxpbmVGb3JtdWxhVHlwZSA9ICdyZWZlcmVuY2VMaW5lRm9ybXVsYVR5cGUnLFxuXG4gIC8vIERQSV9QYWlyZWRSZWZlcmVuY2VMaW5lRm9ybXVsYVR5cGUsIGhhdmluZyB0eXBlIEZvcm11bGFUeXBlXG4gIFBhaXJlZFJlZmVyZW5jZUxpbmVGb3JtdWxhVHlwZSA9ICdwYWlyZWRSZWZlcmVuY2VMaW5lRm9ybXVsYVR5cGUnLFxuXG4gIC8vIERQSV9UcmFuc2xhdGVkRm9ybXVsYVR5cGUsIGhhdmluZyB0eXBlIFRyYW5zbGF0ZWRGb3JtdWxhVHlwZVByZXNNb2RlbFxuICBUcmFuc2xhdGVkRm9ybXVsYVR5cGUgPSAndHJhbnNsYXRlZEZvcm11bGFUeXBlJyxcblxuICAvLyBEUElfUmVmZXJlbmNlTGluZVZhbGlkRm9ybXVsYVR5cGVzLCBoYXZpbmcgdHlwZSBUcmFuc2xhdGVkRm9ybXVsYVR5cGVQcmVzTW9kZWxbXVxuICBSZWZlcmVuY2VMaW5lVmFsaWRGb3JtdWxhVHlwZXMgPSAndmFsaWRSZWZlcmVuY2VMaW5lRm9ybXVsYVR5cGVzJyxcblxuICAvLyBEUElfUmVmZXJlbmNlTGluZVZhbGlkUGFpcmVkRm9ybXVsYVR5cGVzLCBoYXZpbmcgdHlwZSBUcmFuc2xhdGVkRm9ybXVsYVR5cGVQcmVzTW9kZWxbXVxuICBSZWZlcmVuY2VMaW5lVmFsaWRQYWlyZWRGb3JtdWxhVHlwZXMgPSAndmFsaWRSZWZlcmVuY2VMaW5lUGFpcmVkRm9ybXVsYVR5cGVzJyxcblxuICAvLyBEUElfVHJhbnNsYXRlZENvbmZpZGVuY2VJbnRlcnZhbFN0YXRlLCBoYXZpbmcgdHlwZSBUcmFuc2xhdGVkQ29uZmlkZW5jZUludGVydmFsU3RhdGVQcmVzTW9kZWxcbiAgVHJhbnNsYXRlZENvbmZpZGVuY2VJbnRlcnZhbFN0YXRlID0gJ3RyYW5zbGF0ZWRDb25maWRlbmNlSW50ZXJ2YWxTdGF0ZScsXG5cbiAgLy8gRFBJX1RyYW5zbGF0ZWRDb25maWRlbmNlSW50ZXJ2YWxTdGF0ZXMsIGhhdmluZyB0eXBlIFRyYW5zbGF0ZWRDb25maWRlbmNlSW50ZXJ2YWxTdGF0ZVByZXNNb2RlbFtdXG4gIFRyYW5zbGF0ZWRDb25maWRlbmNlSW50ZXJ2YWxTdGF0ZXMgPSAndHJhbnNsYXRlZENvbmZpZGVuY2VJbnRlcnZhbFN0YXRlcycsXG5cbiAgLy8gRFBJX1RyYW5zbGF0ZWRTdERldlR5cGUsIGhhdmluZyB0eXBlIFRyYW5zbGF0ZWRTdERldlR5cGVQcmVzTW9kZWxcbiAgVHJhbnNsYXRlZFN0RGV2VHlwZSA9ICd0cmFuc2xhdGVkU3RkZXZUeXBlJyxcblxuICAvLyBEUElfVHJhbnNsYXRlZFN0RGV2VHlwZXMsIGhhdmluZyB0eXBlIFRyYW5zbGF0ZWRTdERldlR5cGVQcmVzTW9kZWxbXVxuICBUcmFuc2xhdGVkU3REZXZUeXBlcyA9ICd0cmFuc2xhdGVkU3RkZXZUeXBlcycsXG5cbiAgLy8gRFBJX1JlZmVyZW5jZUxpbmVMT0RDYWxjVHlwZSwgaGF2aW5nIHR5cGUgTE9EQ2FsY1R5cGVcbiAgUmVmZXJlbmNlTGluZUxPRENhbGNUeXBlID0gJ3JlZmVyZW5jZUxpbmVMb2RDYWxjVHlwZScsXG5cbiAgLy8gRFBJX1ZhbHVlRG9tYWluVHlwZSwgaGF2aW5nIHR5cGUgVmFsdWVEb21haW5UeXBlXG4gIFZhbHVlRG9tYWluVHlwZSA9ICd2YWx1ZURvbWFpblR5cGUnLFxuXG4gIC8vIERQSV9WYWx1ZURvbWFpblR5cGVzLCBoYXZpbmcgdHlwZSBWYWx1ZURvbWFpblR5cGVbXVxuICBWYWx1ZURvbWFpblR5cGVzID0gJ3ZhbHVlRG9tYWluVHlwZXMnLFxuXG4gIC8vIERQSV9PcGVyYXRpb25UeXBlLCBoYXZpbmcgdHlwZSBPcGVyYXRpb25UeXBlXG4gIE9wZXJhdGlvblR5cGUgPSAnb3BlcmF0aW9uVHlwZScsXG5cbiAgLy8gRFBJX09wZXJhdGlvblR5cGVzLCBoYXZpbmcgdHlwZSBPcGVyYXRpb25UeXBlW11cbiAgT3BlcmF0aW9uVHlwZXMgPSAnb3BlcmF0aW9uVHlwZXMnLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uVHlwZUNhdGVnb3J5LCBoYXZpbmcgdHlwZSBDb25uZWN0aW9uVHlwZUNhdGVnb3J5XG4gIENvbm5lY3Rpb25UeXBlQ2F0ZWdvcnkgPSAnY29ubmVjdGlvblR5cGVDYXRlZ29yeScsXG5cbiAgLy8gRFBJX0Nvbm5lY3Rpb25UeXBlR3JvdXAsIGhhdmluZyB0eXBlIENvbm5lY3Rpb25UeXBlR3JvdXBcbiAgQ29ubmVjdGlvblR5cGVHcm91cCA9ICdjb25uZWN0aW9uVHlwZUdyb3VwJyxcblxuICAvLyBEUElfQ29tbWFuZFJlZGlyZWN0VHlwZSwgaGF2aW5nIHR5cGUgQ29tbWFuZFJlZGlyZWN0VHlwZVxuICBDb21tYW5kUmVkaXJlY3RUeXBlID0gJ2NvbW1hbmRSZWRpcmVjdFR5cGUnLFxuXG4gIC8vIERQSV9DdXN0b21TcGxpdE1vZGUsIGhhdmluZyB0eXBlIFNwbGl0TW9kZVxuICBDdXN0b21TcGxpdE1vZGUgPSAnY3VzdG9tU3BsaXRNb2RlJyxcblxuICAvLyBEUElfQ3VzdG9tU3BsaXRTZXBhcmF0b3JUeXBlLCBoYXZpbmcgdHlwZSBTZXBhcmF0b3JUeXBlXG4gIEN1c3RvbVNwbGl0U2VwYXJhdG9yVHlwZSA9ICdjdXN0b21TcGxpdFNlcGFyYXRvclR5cGUnLFxuXG4gIC8vIERQSV9MZXZlbFNlbGVjdGlvblN0YXRlLCBoYXZpbmcgdHlwZSBMZXZlbFNlbGVjdGlvblN0YXRlXG4gIExldmVsU2VsZWN0aW9uU3RhdGUgPSAnbGV2ZWxTZWxlY3Rpb25TdGF0ZScsXG5cbiAgLy8gRFBJX0xldmVsU2VsZWN0aW9uU3RhdGVzLCBoYXZpbmcgdHlwZSBMZXZlbFNlbGVjdGlvblN0YXRlW11cbiAgTGV2ZWxTZWxlY3Rpb25TdGF0ZXMgPSAnbGV2ZWxTZWxlY3Rpb25TdGF0ZXMnLFxuXG4gIC8vIERQSV9Tb3VyY2VEZXN0SWNvbiwgaGF2aW5nIHR5cGUgU291cmNlRGVzdEljb25cbiAgU291cmNlRGVzdEljb24gPSAnc291cmNlRGVzdEljb24nLFxuXG4gIC8vIERQSV9MZWdlbmRMYXlvdXQsIGhhdmluZyB0eXBlIExlZ2VuZExheW91dFxuICBMZWdlbmRMYXlvdXQgPSAncGFnZUxlZ2VuZExheW91dCcsXG5cbiAgLy8gRFBJX0ltYWdlc0VkaXRSZXN1bHRDb2RlLCBoYXZpbmcgdHlwZSBJbWFnZXNFZGl0UmVzdWx0Q29kZVxuICBJbWFnZXNFZGl0UmVzdWx0Q29kZSA9ICdpbWFnZXNFZGl0UmVzdWx0Q29kZScsXG5cbiAgLy8gRFBJX0NhbGN1bGF0aW9uQ29udGV4dCwgaGF2aW5nIHR5cGUgQ2FsY3VsYXRpb25Db250ZXh0XG4gIENhbGN1bGF0aW9uQ29udGV4dCA9ICdjYWxjdWxhdGlvbkNvbnRleHQnLFxuXG4gIC8vIERQSV9Xb3JrZ3JvdXBQdWJsaXNoRXJyb3JUeXBlLCBoYXZpbmcgdHlwZSBXb3JrZ3JvdXBQdWJsaXNoRXJyb3JUeXBlXG4gIFdvcmtncm91cFB1Ymxpc2hFcnJvclR5cGUgPSAnd29ya2dyb3VwUHVibGlzaEVycm9yVHlwZScsXG5cbiAgLy8gRFBJX0lzUGFyYW1ldGVyLCBoYXZpbmcgdHlwZSBUcmlCb29sXG4gIElzUGFyYW1ldGVyID0gJ2lzUGFyYW1ldGVyJyxcblxuICAvLyBEUElfQWRkcmVzc2luZ1N0YXRlLCBoYXZpbmcgdHlwZSBXaWRnZXRTdGF0ZVxuICBBZGRyZXNzaW5nU3RhdGUgPSAnYWRkcmVzc2luZ1N0YXRlJyxcblxuICAvLyBEUElfQWxsUGFnZXNTdGF0ZSwgaGF2aW5nIHR5cGUgV2lkZ2V0U3RhdGVcbiAgQWxsUGFnZXNTdGF0ZSA9ICdhbGxQYWdlc1N0YXRlJyxcblxuICAvLyBEUElfQXRUaGVMZXZlbFN0YXRlLCBoYXZpbmcgdHlwZSBXaWRnZXRTdGF0ZVxuICBBdFRoZUxldmVsU3RhdGUgPSAnYXRUaGVMZXZlbFN0YXRlJyxcblxuICAvLyBEUElfQ29tcHV0ZUNvbXBvdW5kZWRSYXRlU3RhdGUsIGhhdmluZyB0eXBlIFdpZGdldFN0YXRlXG4gIENvbXB1dGVDb21wb3VuZGVkUmF0ZVN0YXRlID0gJ2NvbXB1dGVDb21wb3VuZGVkUmF0ZVN0YXRlJyxcblxuICAvLyBEUElfQ3VzdG9tTnVsbElmSW5jb21wbGV0ZVN0YXRlLCBoYXZpbmcgdHlwZSBXaWRnZXRTdGF0ZVxuICBDdXN0b21OdWxsSWZJbmNvbXBsZXRlU3RhdGUgPSAnY3VzdG9tTnVsbElmSW5jb21wbGV0ZVN0YXRlJyxcblxuICAvLyBEUElfTmVzdGVkQ2FsY3NTdGF0ZSwgaGF2aW5nIHR5cGUgV2lkZ2V0U3RhdGVcbiAgTmVzdGVkQ2FsY3NTdGF0ZSA9ICduZXN0ZWRDYWxjc1N0YXRlJyxcblxuICAvLyBEUElfUmFua1R5cGVTdGF0ZSwgaGF2aW5nIHR5cGUgV2lkZ2V0U3RhdGVcbiAgUmFua1R5cGVTdGF0ZSA9ICdyYW5rVHlwZVN0YXRlJyxcblxuICAvLyBEUElfUmVmZXJlbmNlT3B0aW9uc1N0YXRlLCBoYXZpbmcgdHlwZSBXaWRnZXRTdGF0ZVxuICBSZWZlcmVuY2VPcHRpb25zU3RhdGUgPSAncmVmZXJlbmNlT3B0aW9uc1N0YXRlJyxcblxuICAvLyBEUElfUmVzdGFydEV2ZXJ5U3RhdGUsIGhhdmluZyB0eXBlIFdpZGdldFN0YXRlXG4gIFJlc3RhcnRFdmVyeVN0YXRlID0gJ3Jlc3RhcnRFdmVyeVN0YXRlJyxcblxuICAvLyBEUElfU29ydEFnZ1N0YXRlLCBoYXZpbmcgdHlwZSBXaWRnZXRTdGF0ZVxuICBTb3J0QWdnU3RhdGUgPSAnc29ydEFnZ1N0YXRlJyxcblxuICAvLyBEUElfU29ydFN0YXRlLCBoYXZpbmcgdHlwZSBXaWRnZXRTdGF0ZVxuICBTb3J0U3RhdGUgPSAnc29ydFN0YXRlJyxcblxuICAvLyBEUElfVGFibGVDYWxjVHlwZVN0YXRlLCBoYXZpbmcgdHlwZSBXaWRnZXRTdGF0ZVxuICBUYWJsZUNhbGNUeXBlU3RhdGUgPSAndGFibGVDYWxjVHlwZVN0YXRlJyxcblxuICAvLyBEUElfVGFibGVDYWxjQXNzaXN0YW5jZVdpZGdldFN0YXRlLCBoYXZpbmcgdHlwZSBXaWRnZXRTdGF0ZVxuICBUYWJsZUNhbGNBc3Npc3RhbmNlV2lkZ2V0U3RhdGUgPSAndGFibGVDYWxjQXNzaXN0YW5jZVdpZGdldFN0YXRlJyxcblxuICAvLyBEUElfQ2FsY05lc3RpbmdMZXZlbCwgaGF2aW5nIHR5cGUgQ2FsY05lc3RpbmdMZXZlbFxuICBDYWxjTmVzdGluZ0xldmVsID0gJ2NhbGNOZXN0aW5nTGV2ZWwnLFxuXG4gIC8vIERQSV9EYXRhUHJvdmlkZXJUeXBlLCBoYXZpbmcgdHlwZSBEYXRhUHJvdmlkZXJUeXBlXG4gIERhdGFQcm92aWRlclR5cGUgPSAnZGF0YVByb3ZpZGVyVHlwZScsXG5cbiAgLy8gRFBJX0hldXJpc3RpY0NvbW1hbmRSZWludGVycHJldGF0aW9uLCBoYXZpbmcgdHlwZSBIZXVyaXN0aWNDb21tYW5kUmVpbnRlcnByZXRhdGlvblxuICBIZXVyaXN0aWNDb21tYW5kUmVpbnRlcnByZXRhdGlvbiA9ICdoZXVyaXN0aWNDb21tYW5kUmVpbnRlcnByZXRhdGlvbicsXG5cbiAgLy8gRFBJX0V4dHJhY3RSZWZyZXNoU3RhdHVzLCBoYXZpbmcgdHlwZSBFeHRyYWN0UmVmcmVzaFN0YXR1c1xuICBFeHRyYWN0UmVmcmVzaFN0YXR1cyA9ICdleHRyYWN0UmVmcmVzaFN0YXR1cycsXG5cbiAgLy8gRFBJX1JpY2hUZXh0RWRpdG9yV2lkZ2V0S2V5LCBoYXZpbmcgdHlwZSBSaWNoVGV4dEVkaXRvcldpZGdldEtleVxuICBSaWNoVGV4dEVkaXRvcldpZGdldEtleSA9ICdyaWNoVGV4dEVkaXRvcldpZGdldEtleScsXG5cbiAgLy8gRFBJX1JpY2hUZXh0V2lkZ2V0S2V5cywgaGF2aW5nIHR5cGUgUmljaFRleHRFZGl0b3JXaWRnZXRLZXlbXVxuICBSaWNoVGV4dFdpZGdldEtleXMgPSAncmljaFRleHRXaWRnZXRLZXlzJyxcblxuICAvLyBEUElfVHlwZU9mRm9ybWF0SXRlbSwgaGF2aW5nIHR5cGUgVHlwZU9mRm9ybWF0SXRlbVxuICBUeXBlT2ZGb3JtYXRJdGVtID0gJ3R5cGVPZkZvcm1hdEl0ZW0nLFxuXG4gIC8vIERQSV9UeXBlT2ZGb3JtYXRDb250YWluZXIsIGhhdmluZyB0eXBlIFR5cGVPZkZvcm1hdENvbnRhaW5lclxuICBUeXBlT2ZGb3JtYXRDb250YWluZXIgPSAndHlwZU9mRm9ybWF0Q29udGFpbmVyJyxcblxuICAvLyBEUElfVHlwZU9mRm9ybWF0Q29udHJvbCwgaGF2aW5nIHR5cGUgVHlwZU9mRm9ybWF0Q29udHJvbFxuICBUeXBlT2ZGb3JtYXRDb250cm9sID0gJ3R5cGVPZkZvcm1hdENvbnRyb2wnLFxuXG4gIC8vIERQSV9Gb3JtYXRXaWRnZXRLZXksIGhhdmluZyB0eXBlIEZvcm1hdFdpZGdldEtleVxuICBGb3JtYXRXaWRnZXRLZXkgPSAnZm9ybWF0V2lkZ2V0S2V5JyxcblxuICAvLyBEUElfQ29sb3JTd2F0Y2hUeXBlLCBoYXZpbmcgdHlwZSBDb2xvclN3YXRjaFR5cGVcbiAgQ29sb3JTd2F0Y2hUeXBlID0gJ2Zvcm1hdENvbG9yU3dhdGNoVHlwZScsXG5cbiAgLy8gRFBJX1BpY2tlclR5cGUsIGhhdmluZyB0eXBlIFBpY2tlclR5cGVcbiAgUGlja2VyVHlwZSA9ICdwaWNrZXJUeXBlJyxcblxuICAvLyBEUElfRXh0cmFjdEhpc3RvcnlSZWZyZXNoVHlwZSwgaGF2aW5nIHR5cGUgUmVmcmVzaFR5cGVcbiAgRXh0cmFjdEhpc3RvcnlSZWZyZXNoVHlwZSA9ICdleHRyYWN0SGlzdG9yeVJlZnJlc2hUeXBlRW51bScsXG5cbiAgLy8gRFBJX0F4aXNGb2xkU3RhdGUsIGhhdmluZyB0eXBlIEF4aXNGb2xkU3RhdGVcbiAgQXhpc0ZvbGRTdGF0ZSA9ICdheGlzRm9sZFN0YXRlJyxcblxuICAvLyBEUElfVGlja01hcmtTcGFjaW5nVW5pdHMsIGhhdmluZyB0eXBlIFRpY2tTcGFjaW5nVW5pdHNcbiAgVGlja01hcmtTcGFjaW5nVW5pdHMgPSAndGlja1NwYWNpbmdVbml0cycsXG5cbiAgLy8gRFBJX1RpY2tNYXJrU3RhdGUsIGhhdmluZyB0eXBlIFRpY2tNYXJrU3RhdGVcbiAgVGlja01hcmtTdGF0ZSA9ICd0aWNrTWFya1N0YXRlJyxcblxuICAvLyBEUElfQXhpc1JhbmdlVHlwZSwgaGF2aW5nIHR5cGUgQXhpc1JhbmdlVHlwZVxuICBBeGlzUmFuZ2VUeXBlID0gJ2F4aXNSYW5nZVR5cGUnLFxuXG4gIC8vIERQSV9TY2FsZVR5cGUsIGhhdmluZyB0eXBlIFNjYWxlVHlwZVxuICBTY2FsZVR5cGUgPSAnc2NhbGVUeXBlJyxcblxuICAvLyBEUElfRGFzaGJvYXJkRGV2aWNlTGF5b3V0LCBoYXZpbmcgdHlwZSBEYXNoYm9hcmREZXZpY2VMYXlvdXRcbiAgRGFzaGJvYXJkRGV2aWNlTGF5b3V0ID0gJ2Rhc2hib2FyZERldmljZUxheW91dCcsXG5cbiAgLy8gRFBJX0FjdGl2YXRlRGV2aWNlTGF5b3V0LCBoYXZpbmcgdHlwZSBEYXNoYm9hcmREZXZpY2VMYXlvdXRcbiAgQWN0aXZhdGVEZXZpY2VMYXlvdXQgPSAnYWN0aXZhdGVEZXZpY2VMYXlvdXQnLFxuXG4gIC8vIERQSV9EYXNoYm9hcmREZXZpY2VMYXlvdXRzLCBoYXZpbmcgdHlwZSBEYXNoYm9hcmREZXZpY2VMYXlvdXRbXVxuICBEYXNoYm9hcmREZXZpY2VMYXlvdXRzID0gJ2Rhc2hib2FyZERldmljZUxheW91dHMnLFxuXG4gIC8vIERQSV9EZXZpY2VTb3VyY2UsIGhhdmluZyB0eXBlIERldmljZVNvdXJjZVxuICBEZXZpY2VTb3VyY2UgPSAnZGV2aWNlU291cmNlJyxcblxuICAvLyBEUElfRGFzaGJvYXJkU2l6aW5nRGltZW5zaW9uLCBoYXZpbmcgdHlwZSBEYXNoYm9hcmRTaXppbmdEaW1lbnNpb25cbiAgRGFzaGJvYXJkU2l6aW5nRGltZW5zaW9uID0gJ2Rhc2hib2FyZFNpemluZ0RpbWVuc2lvbicsXG5cbiAgLy8gRFBJX0dyaWRPdmVybGF5TW9kZSwgaGF2aW5nIHR5cGUgR3JpZE92ZXJsYXlNb2RlXG4gIEdyaWRPdmVybGF5TW9kZSA9ICdncmlkT3ZlcmxheU1vZGUnLFxuXG4gIC8vIERQSV9EYXNoYm9hcmRTaXppbmdNb2RlLCBoYXZpbmcgdHlwZSBEYXNoYm9hcmRTaXppbmdNb2RlXG4gIERhc2hib2FyZFNpemluZ01vZGUgPSAnZGFzaGJvYXJkU2l6aW5nTW9kZScsXG5cbiAgLy8gRFBJX0ZsaXBib2FyZE5hdlR5cGUsIGhhdmluZyB0eXBlIEZsaXBib2FyZE5hdlR5cGVcbiAgRmxpcGJvYXJkTmF2VHlwZSA9ICdmbGlwYm9hcmROYXZUeXBlJyxcblxuICAvLyBEUElfRmllbGRQaWNrZXJEaWFsb2dVc2VDYXNlLCBoYXZpbmcgdHlwZSBGaWVsZFBpY2tlckRpYWxvZ1VzZUNhc2VcbiAgRmllbGRQaWNrZXJEaWFsb2dVc2VDYXNlID0gJ2ZpZWxkUGlja2VyRGlhbG9nVXNlQ2FzZScsXG5cbiAgLy8gRFBJX1N0YXJ0T2ZXZWVrRW51bSwgaGF2aW5nIHR5cGUgU09XVmFsdWVcbiAgU3RhcnRPZldlZWtFbnVtID0gJ3N0YXJ0T2ZXZWVrRW51bScsXG5cbiAgLy8gRFBJX1N0YXJ0T2ZGaXNjYWxZZWFyLCBoYXZpbmcgdHlwZSBGWVNWYWx1ZXNcbiAgU3RhcnRPZkZpc2NhbFllYXIgPSAnc3RhcnRPZkZpc2NhbFllYXInLFxuXG4gIC8vIERQSV9Ub3RhbHNJbmNsdXNpb25WYWx1ZSwgaGF2aW5nIHR5cGUgVG90YWxzSW5jbHVzaW9uXG4gIFRvdGFsc0luY2x1c2lvblZhbHVlID0gJ3RvdGFsc0luY2x1c2lvblZhbHVlJyxcblxuICAvLyBEUElfRm9ybWF0Q29kZSwgaGF2aW5nIHR5cGUgRm9ybWF0Q29kZVxuICBGb3JtYXRDb2RlID0gJ2Zvcm1hdENvZGUnLFxuXG4gIC8vIERQSV9GaW5kVHlwZSwgaGF2aW5nIHR5cGUgRmluZFR5cGVcbiAgRmluZFR5cGUgPSAnZmluZFR5cGUnLFxuXG4gIC8vIERQSV9QZXJzcGVjdGl2ZVR5cGUsIGhhdmluZyB0eXBlIFBlcnNwZWN0aXZlVHlwZVxuICBQZXJzcGVjdGl2ZVR5cGUgPSAncGVyc3BlY3RpdmVUeXBlJyxcblxuICAvLyBEUElfR2VvbWV0cnlUeXBlLCBoYXZpbmcgdHlwZSBHZW9tZXRyeVR5cGVcbiAgR2VvbWV0cnlUeXBlID0gJ2dlb21ldHJ5VHlwZScsXG5cbiAgLy8gRFBJX1BhbmVMYWJlbENvbXBvc2l0aW9uLCBoYXZpbmcgdHlwZSBQYW5lTGFiZWxDb21wb3NpdGlvblxuICBQYW5lTGFiZWxDb21wb3NpdGlvbiA9ICdwYW5lTGFiZWxDb21wb3NpdGlvbicsXG5cbiAgLy8gRFBJX1dhcm5pbmdUeXBlLCBoYXZpbmcgdHlwZSBXYXJuaW5nVHlwZVxuICBXYXJuaW5nVHlwZSA9ICd3YXJuaW5nVHlwZScsXG5cbiAgLy8gRFBJX1VJTW9kZSwgaGF2aW5nIHR5cGUgV29ya2Jvb2tVSU1vZGVcbiAgVUlNb2RlID0gJ3VpTW9kZScsXG5cbiAgLy8gRFBJX01lbnVJdGVtSWQsIGhhdmluZyB0eXBlIFRvcExldmVsTWVudUl0ZW1cbiAgTWVudUl0ZW1JZCA9ICdtZW51SXRlbUlkJyxcblxuICAvLyBEUElfQ29tbWFuZFJldHVybiwgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIENvbW1hbmRSZXR1cm4gPSAnY29tbWFuZFJldHVybicsXG5cbiAgLy8gRFBJX0xlZ2FjeVByZXNNb2RlbCwgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIExlZ2FjeVByZXNNb2RlbCA9ICdsZWdhY3lQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9QcmVzZW50YXRpb25Nb2RlbCwgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIFByZXNlbnRhdGlvbk1vZGVsID0gJ3ByZXNNb2RlbEhvbGRlcicsXG5cbiAgLy8gRFBJX0V2ZW50LCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgRXZlbnQgPSAnZXZlbnRDb250YWluZXInLFxuXG4gIC8vIERQSV9MaW5lU3R5bGUsIGhhdmluZyB0eXBlIEFycmF5XG4gIExpbmVTdHlsZSA9ICdsaW5lU3R5bGUnLFxuXG4gIC8vIERQSV9TdHJva2VTdHlsZSwgaGF2aW5nIHR5cGUgQXJyYXlcbiAgU3Ryb2tlU3R5bGUgPSAnc3Ryb2tlU3R5bGUnLFxuXG4gIC8vIERQSV9TY2hlbWEsIGhhdmluZyB0eXBlIEFycmF5XG4gIFNjaGVtYSA9ICdzY2hlbWEnLFxuXG4gIC8vIERQSV9TdGFydFR1cGxlLCBoYXZpbmcgdHlwZSBBcnJheVxuICBTdGFydFR1cGxlID0gJ3N0YXJ0VHVwbGUnLFxuXG4gIC8vIERQSV9FbmRUdXBsZSwgaGF2aW5nIHR5cGUgQXJyYXlcbiAgRW5kVHVwbGUgPSAnZW5kVHVwbGUnLFxuXG4gIC8vIERQSV9UdXBsZSwgaGF2aW5nIHR5cGUgQXJyYXlcbiAgVHVwbGUgPSAndHVwbGUnLFxuXG4gIC8vIERQSV9UdXBsZXMsIGhhdmluZyB0eXBlIEFycmF5W11cbiAgVHVwbGVzID0gJ3R1cGxlcycsXG5cbiAgLy8gRFBJX0N1c3RvbURvbWFpblR1cGxlcywgaGF2aW5nIHR5cGUgQXJyYXlbXVxuICBDdXN0b21Eb21haW5UdXBsZXMgPSAnY3VzdG9tRG9tYWluVHVwbGVzJyxcblxuICAvLyBEUElfVXBkYXRlZFR1cGxlcywgaGF2aW5nIHR5cGUgQXJyYXlbXVxuICBVcGRhdGVkVHVwbGVzID0gJ3VwZGF0ZWRUdXBsZXMnLFxuXG4gIC8vIERQSV9UYWJsZSwgaGF2aW5nIHR5cGUgQXJyYXlcbiAgVGFibGUgPSAndGFibGUnLFxuXG4gIC8vIERQSV9BbGlhc2VkVmFsdWUsIGhhdmluZyB0eXBlIEFycmF5XG4gIEFsaWFzZWRWYWx1ZSA9ICd2YWx1ZUFsaWFzJyxcblxuICAvLyBEUElfRmlyc3RBbGlhc2VkVmFsdWUsIGhhdmluZyB0eXBlIEFycmF5XG4gIEZpcnN0QWxpYXNlZFZhbHVlID0gJ2ZpcnN0QWxpc2VkVmFsdWUnLFxuXG4gIC8vIERQSV9NYXhpbXVtUmFuZ2UsIGhhdmluZyB0eXBlIEFycmF5XG4gIE1heGltdW1SYW5nZSA9ICdtYXhpbXVtUmFuZ2VWYWx1ZScsXG5cbiAgLy8gRFBJX01pbmltdW1SYW5nZSwgaGF2aW5nIHR5cGUgQXJyYXlcbiAgTWluaW11bVJhbmdlID0gJ21pbmltdW1SYW5nZVZhbHVlJyxcblxuICAvLyBEUElfU2Vjb25kQWxpYXNlZFZhbHVlLCBoYXZpbmcgdHlwZSBBcnJheVxuICBTZWNvbmRBbGlhc2VkVmFsdWUgPSAnc2Vjb25kQWxpc2VkVmFsdWUnLFxuXG4gIC8vIERQSV9BbGlhc2VkU2VsZWN0aW9uTGlzdCwgaGF2aW5nIHR5cGUgQXJyYXlbXVxuICBBbGlhc2VkU2VsZWN0aW9uTGlzdCA9ICdhbGlhc2VkU2VsZWN0aW9uTGlzdCcsXG5cbiAgLy8gRFBJX0FsaWFzZWRWYWx1ZXMsIGhhdmluZyB0eXBlIEFycmF5W11cbiAgQWxpYXNlZFZhbHVlcyA9ICd2YWx1ZXNBbGlhc2VzJyxcblxuICAvLyBEUElfVmVyYm9zZUFsaWFzZWRSYW5nZU1heCwgaGF2aW5nIHR5cGUgQXJyYXlcbiAgVmVyYm9zZUFsaWFzZWRSYW5nZU1heCA9ICd2ZXJib3NlQWxpYXNlZFJhbmdlTWF4JyxcblxuICAvLyBEUElfVmVyYm9zZUFsaWFzZWRWYWx1ZSwgaGF2aW5nIHR5cGUgQXJyYXlcbiAgVmVyYm9zZUFsaWFzZWRWYWx1ZSA9ICd2ZXJib3NlQWxpYXNlZFZhbHVlJyxcblxuICAvLyBEUElfTXVsdGlCdWNrZXQsIGhhdmluZyB0eXBlIE11bHRpQnVja2V0XG4gIE11bHRpQnVja2V0ID0gJ3hWYWx1ZXMnLFxuXG4gIC8vIERQSV9QYWdlTmFtZSwgaGF2aW5nIHR5cGUgUGFnZU5hbWVcbiAgUGFnZU5hbWUgPSAncGFnZU5hbWUnLFxuXG4gIC8vIERQSV9TZWxlY3RvciwgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIFNlbGVjdG9yID0gJ3NlbGVjdG9yJyxcblxuICAvLyBEUElfUGFuZUlkLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgUGFuZUlkID0gJ3BhbmVJZCcsXG5cbiAgLy8gRFBJX1BhbmVJZHMsIGhhdmluZyB0eXBlIFBhbmVJZFtdXG4gIFBhbmVJZHMgPSAncGFuZUlkcycsXG5cbiAgLy8gRFBJX0ltYWdlUmVnaW9uSW5mbywgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIEltYWdlUmVnaW9uSW5mbyA9ICd2aXpSZWdpb25SZWN0JyxcblxuICAvLyBEUElfSW1hZ2VSZWdpb25JbmZvTGlzdCwgaGF2aW5nIHR5cGUgb2JqZWN0W11cbiAgSW1hZ2VSZWdpb25JbmZvTGlzdCA9ICd2aXpSZWdpb25SZWN0TGlzdCcsXG5cbiAgLy8gRFBJX1Zpc3VhbElELCBoYXZpbmcgdHlwZSBWaXN1YWxJRFxuICBWaXN1YWxJRCA9ICd2aXN1YWxJZCcsXG5cbiAgLy8gRFBJX1Zpc3VhbElEUE0sIGhhdmluZyB0eXBlIFZpc3VhbElEUHJlc01vZGVsXG4gIFZpc3VhbElEUE0gPSAndmlzdWFsSWRQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9JbnZhbGlkU2hlZXRzLCBoYXZpbmcgdHlwZSBWaXN1YWxJRFByZXNNb2RlbFtdXG4gIEludmFsaWRTaGVldHMgPSAnaW52YWxpZFNoZWV0cycsXG5cbiAgLy8gRFBJX1Zpc3VhbElEUE1zLCBoYXZpbmcgdHlwZSBWaXN1YWxJRFByZXNNb2RlbFtdXG4gIFZpc3VhbElEUE1zID0gJ3Zpc3VhbElkcycsXG5cbiAgLy8gRFBJX1NoZWV0UGF0aFBNLCBoYXZpbmcgdHlwZSBTaGVldFBhdGhQcmVzTW9kZWxcbiAgU2hlZXRQYXRoUE0gPSAnc2hlZXRQYXRoJyxcblxuICAvLyBEUElfQ2FwdHVyZWRTaGVldFBNLCBoYXZpbmcgdHlwZSBTaGVldFBhdGhQcmVzTW9kZWxcbiAgQ2FwdHVyZWRTaGVldFBNID0gJ2NhcHR1cmVkU2hlZXRQbScsXG5cbiAgLy8gRFBJX0N1cnJlbnRTaGVldFBNLCBoYXZpbmcgdHlwZSBTaGVldFBhdGhQcmVzTW9kZWxcbiAgQ3VycmVudFNoZWV0UE0gPSAnY3VycmVudFNoZWV0UG0nLFxuXG4gIC8vIERQSV9EYXNoYm9hcmRQTSwgaGF2aW5nIHR5cGUgU2hlZXRQYXRoUHJlc01vZGVsXG4gIERhc2hib2FyZFBNID0gJ2Rhc2hib2FyZFBtJyxcblxuICAvLyBEUElfTmV3U2hlZXRQTSwgaGF2aW5nIHR5cGUgU2hlZXRQYXRoUHJlc01vZGVsXG4gIE5ld1NoZWV0UE0gPSAnbmV3U2hlZXRQbScsXG5cbiAgLy8gRFBJX1NoZWV0TmFtZVBNLCBoYXZpbmcgdHlwZSBTaGVldFBhdGhQcmVzTW9kZWxcbiAgU2hlZXROYW1lUE0gPSAnc2hlZXROYW1lUG0nLFxuXG4gIC8vIERQSV9TaGVldFBNLCBoYXZpbmcgdHlwZSBTaGVldFBhdGhQcmVzTW9kZWxcbiAgU2hlZXRQTSA9ICdzaGVldFBtJyxcblxuICAvLyBEUElfU291cmNlRGFzaGJvYXJkUE0sIGhhdmluZyB0eXBlIFNoZWV0UGF0aFByZXNNb2RlbFxuICBTb3VyY2VEYXNoYm9hcmRQTSA9ICdzb3VyY2VEYXNoYm9hcmRQbScsXG5cbiAgLy8gRFBJX1NvdXJjZVNoZWV0UE0sIGhhdmluZyB0eXBlIFNoZWV0UGF0aFByZXNNb2RlbFxuICBTb3VyY2VTaGVldFBNID0gJ3NvdXJjZVNoZWV0UG0nLFxuXG4gIC8vIERQSV9UYXJnZXRTaGVldFBNLCBoYXZpbmcgdHlwZSBTaGVldFBhdGhQcmVzTW9kZWxcbiAgVGFyZ2V0U2hlZXRQTSA9ICd0YXJnZXRTaGVldFBtJyxcblxuICAvLyBEUElfV29ya3NoZWV0UE0sIGhhdmluZyB0eXBlIFNoZWV0UGF0aFByZXNNb2RlbFxuICBXb3Jrc2hlZXRQTSA9ICd3b3Jrc2hlZXRQbScsXG5cbiAgLy8gRFBJX01vZGlmaWVkU2hlZXRzLCBoYXZpbmcgdHlwZSBTaGVldFBhdGhQcmVzTW9kZWxbXVxuICBNb2RpZmllZFNoZWV0cyA9ICdtb2RpZmllZFNoZWV0cycsXG5cbiAgLy8gRFBJX0RhdGFDb2x1bW4sIGhhdmluZyB0eXBlIERhdGFDb2x1bW5QcmVzTW9kZWxcbiAgRGF0YUNvbHVtbiA9ICdkYXRhQ29sdW1uJyxcblxuICAvLyBEUElfRGF0YUNvbHVtbnMsIGhhdmluZyB0eXBlIERhdGFDb2x1bW5QcmVzTW9kZWxbXVxuICBEYXRhQ29sdW1ucyA9ICdkYXRhQ29sdW1ucycsXG5cbiAgLy8gRFBJX0FkZHJlc3NlcywgaGF2aW5nIHR5cGUgRGF0YUNvbHVtblByZXNNb2RlbFtdXG4gIEFkZHJlc3NlcyA9ICdhZGRyZXNzZXMnLFxuXG4gIC8vIERQSV9FbmNvZGluZ0NvbHVtbnMsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2YgRGF0YUNvbHVtblByZXNNb2RlbClcbiAgRW5jb2RpbmdDb2x1bW5zID0gJ2VuY29kaW5nQ29sdW1ucycsXG5cbiAgLy8gRFBJX1RleHRSdW5Db2x1bW5zLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIERhdGFDb2x1bW5QcmVzTW9kZWwpXG4gIFRleHRSdW5Db2x1bW5zID0gJ3RleHRSdW5Db2x1bW5zJyxcblxuICAvLyBEUElfVGV4dFN0eWxlQ29sdW1ucywgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBEYXRhQ29sdW1uUHJlc01vZGVsKVxuICBUZXh0U3R5bGVDb2x1bW5zID0gJ3RleHRTdHlsZUNvbHVtbnMnLFxuXG4gIC8vIERQSV9OYW1lZERhdGFDb2x1bW4sIGhhdmluZyB0eXBlIE5hbWVkRGF0YUNvbHVtblByZXNNb2RlbFxuICBOYW1lZERhdGFDb2x1bW4gPSAnbmFtZWREYXRhQ29sdW1uJyxcblxuICAvLyBEUElfTmFtZWREYXRhQ29sdW1ucywgaGF2aW5nIHR5cGUgTmFtZWREYXRhQ29sdW1uUHJlc01vZGVsW11cbiAgTmFtZWREYXRhQ29sdW1ucyA9ICduYW1lZERhdGFDb2x1bW5zJyxcblxuICAvLyBEUElfRGF0YVRhYmxlLCBoYXZpbmcgdHlwZSBEYXRhVGFibGVQcmVzTW9kZWxcbiAgRGF0YVRhYmxlID0gJ2RhdGFUYWJsZScsXG5cbiAgLy8gRFBJX0FjdGlvblNwZWNpZmljYXRpb24sIGhhdmluZyB0eXBlIE5vbmVcbiAgQWN0aW9uU3BlY2lmaWNhdGlvbiA9ICdhY3Rpb25TcGVjJyxcblxuICAvLyBEUElfQ29sdW1uLCBoYXZpbmcgdHlwZSBDb2x1bW5cbiAgQ29sdW1uID0gJ2NvbHVtbkNvbnRleHQnLFxuXG4gIC8vIERQSV9TZXRGdW5jdGlvbiwgaGF2aW5nIHR5cGUgU2V0RnVuY3Rpb25cbiAgU2V0RnVuY3Rpb24gPSAnc2V0RnVuY3Rpb24nLFxuXG4gIC8vIERQSV9TZXRGdW5jdGlvbnMsIGhhdmluZyB0eXBlIFNldEZ1bmN0aW9uc1xuICBTZXRGdW5jdGlvbnMgPSAnc2V0RnVuY3Rpb25zJyxcblxuICAvLyBEUElfVmlzdWFsUHJvZmlsZVNob3dNZSwgaGF2aW5nIHR5cGUgVmlzdWFsUHJvZmlsZVNob3dNZVxuICBWaXN1YWxQcm9maWxlU2hvd01lID0gJ3Zwc20nLFxuXG4gIC8vIERQSV9EYXRhU291cmNlUHRyLCBoYXZpbmcgdHlwZSBEYXRhU291cmNlXG4gIERhdGFTb3VyY2VQdHIgPSAnZGF0YXNvdXJjZVB0cicsXG5cbiAgLy8gRFBJX1dvcmtncm91cENvbm5lY3Rpb24sIGhhdmluZyB0eXBlIFdvcmtncm91cENvbm5lY3Rpb25cbiAgV29ya2dyb3VwQ29ubmVjdGlvbiA9ICd3b3JrZ3JvdXBDb25uZWN0aW9uJyxcblxuICAvLyBEUElfQXV0aGVudGljYXRvciwgaGF2aW5nIHR5cGUgQXV0aGVudGljYXRvclJhd1B0clxuICBBdXRoZW50aWNhdG9yID0gJ2F1dGhlbnRpY2F0b3InLFxuXG4gIC8vIERQSV9VcGdyYWRlQXR0ciwgaGF2aW5nIHR5cGUgVXBncmFkZUF0dHJcbiAgVXBncmFkZUF0dHIgPSAndXBncmFkZUF0dHInLFxuXG4gIC8vIERQSV9FeHRyYWN0QXR0ciwgaGF2aW5nIHR5cGUgRXh0cmFjdEF0dHJcbiAgRXh0cmFjdEF0dHIgPSAnZXh0cmFjdEF0dHInLFxuXG4gIC8vIERQSV9SZWZyZXNoQXR0ciwgaGF2aW5nIHR5cGUgUmVmcmVzaEF0dHJcbiAgUmVmcmVzaEF0dHIgPSAncmVmcmVzaEF0dHInLFxuXG4gIC8vIERQSV9Db250ZXh0U3BlY2lmaWNhdGlvbiwgaGF2aW5nIHR5cGUgQ29udGV4dFNwZWNpZmljYXRpb25cbiAgQ29udGV4dFNwZWNpZmljYXRpb24gPSAnY29udGV4dFNwZWNpZmljYXRpb24nLFxuXG4gIC8vIERQSV9TY2hlbWFWaWV3ZXJTZWxlY3RvciwgaGF2aW5nIHR5cGUgU2NoZW1hVmlld2VyU2VsZWN0b3JQdHJcbiAgU2NoZW1hVmlld2VyU2VsZWN0b3IgPSAnc2NoZW1hVmlld2VyU2VsZWN0b3InLFxuXG4gIC8vIERQSV9CdWNrZXRzLCBoYXZpbmcgdHlwZSBCdWNrZXRzXG4gIEJ1Y2tldHMgPSAnYnVja2V0cycsXG5cbiAgLy8gRFBJX0xlZ2VuZEl0ZW1zLCBoYXZpbmcgdHlwZSBNdWx0aUJ1Y2tldHNcbiAgTGVnZW5kSXRlbXMgPSAnbGVnZW5kSXRlbXMnLFxuXG4gIC8vIERQSV9MZWdlbmRJdGVtLCBoYXZpbmcgdHlwZSBNdWx0aUJ1Y2tldFxuICBMZWdlbmRJdGVtID0gJ2xlZ2VuZEl0ZW0nLFxuXG4gIC8vIERQSV9Tb3VyY2VJdGVtLCBoYXZpbmcgdHlwZSBNdWx0aUJ1Y2tldFxuICBTb3VyY2VJdGVtID0gJ3NvdXJjZUl0ZW0nLFxuXG4gIC8vIERQSV9EZXN0SXRlbSwgaGF2aW5nIHR5cGUgTXVsdGlCdWNrZXRcbiAgRGVzdEl0ZW0gPSAnZGVzdEl0ZW0nLFxuXG4gIC8vIERQSV9JUXVpY2tTb3J0U3RhdGUsIGhhdmluZyB0eXBlIElRdWlja1NvcnRTdGF0ZVxuICBJUXVpY2tTb3J0U3RhdGUgPSAncXVpY2tTb3J0U3RhdGUnLFxuXG4gIC8vIERQSV9BcHBCdWlsZERhdGUsIGhhdmluZyB0eXBlIERhdGVUaW1lXG4gIEFwcEJ1aWxkRGF0ZSA9ICdhcHBCdWlsZERhdGUnLFxuXG4gIC8vIERQSV9Gb3JlY2FzdERhdGVSYW5nZUVuZCwgaGF2aW5nIHR5cGUgRGF0ZVRpbWVcbiAgRm9yZWNhc3REYXRlUmFuZ2VFbmQgPSAnZm9yZWNhc3REYXRlUmFuZ2VFbmQnLFxuXG4gIC8vIERQSV9Gb3JlY2FzdERhdGVSYW5nZVN0YXJ0LCBoYXZpbmcgdHlwZSBEYXRlVGltZVxuICBGb3JlY2FzdERhdGVSYW5nZVN0YXJ0ID0gJ2ZvcmVjYXN0RGF0ZVJhbmdlU3RhcnQnLFxuXG4gIC8vIERQSV9MYXN0TW9kaWZpZWQsIGhhdmluZyB0eXBlIERhdGVUaW1lXG4gIExhc3RNb2RpZmllZCA9ICdsYXN0TW9kaWZpZWQnLFxuXG4gIC8vIERQSV9TZWFyY2hEb21haW5QdHIsIGhhdmluZyB0eXBlIE11bHRpRG9tYWluXG4gIFNlYXJjaERvbWFpblB0ciA9ICdzZWFyY2hEb21haW5QdHInLFxuXG4gIC8vIERQSV9SZXN1bHRzRG9tYWluUHRyLCBoYXZpbmcgdHlwZSBNdWx0aURvbWFpblxuICBSZXN1bHRzRG9tYWluUHRyID0gJ3Jlc3VsdHNEb21haW5QdHInLFxuXG4gIC8vIERQSV9BY3Rpb25zLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgQWN0aW9ucyA9ICdhY3Rpb25zJyxcblxuICAvLyBEUElfU1JDb21tYW5kcywgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIFNSQ29tbWFuZHMgPSAnc2VsZWN0aW9uUmVsYXhhdGlvbkNvbW1hbmRzJyxcblxuICAvLyBEUElfQ29tbWFuZHMsIGhhdmluZyB0eXBlIG9iamVjdFxuICBDb21tYW5kcyA9ICdjb21tYW5kcycsXG5cbiAgLy8gRFBJX0RhdGFUeXBlQ29tbWFuZHMsIGhhdmluZyB0eXBlIG9iamVjdFxuICBEYXRhVHlwZUNvbW1hbmRzID0gJ2RhdGF0eXBlQ29tbWFuZHMnLFxuXG4gIC8vIERQSV9NdWx0aVNlbGVjdENvbW1hbmRzLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgTXVsdGlTZWxlY3RDb21tYW5kcyA9ICdtdWx0aXNlbGVjdENvbW1hbmRzJyxcblxuICAvLyBEUElfTm9uVml6Q29tbWFuZHMsIGhhdmluZyB0eXBlIG9iamVjdFxuICBOb25WaXpDb21tYW5kcyA9ICdub25WaXpDb21tYW5kcycsXG5cbiAgLy8gRFBJX1F1aWNrRmlsdGVyQ29tbWFuZHMsIGhhdmluZyB0eXBlIG9iamVjdFxuICBRdWlja0ZpbHRlckNvbW1hbmRzID0gJ3F1aWNrRmlsdGVyQ29tbWFuZHMnLFxuXG4gIC8vIERQSV9TaG93TWVDb21tYW5kcywgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIFNob3dNZUNvbW1hbmRzID0gJ3Nob3dNZUNvbW1hbmRzJyxcblxuICAvLyBEUElfU29ydEluZGljYXRvck1lbnUsIGhhdmluZyB0eXBlIG9iamVjdFxuICBTb3J0SW5kaWNhdG9yTWVudSA9ICdzb3J0SW5kaWNhdG9yTWVudScsXG5cbiAgLy8gRFBJX1N0YW5kYXJkQ29tbWFuZHMsIGhhdmluZyB0eXBlIG9iamVjdFxuICBTdGFuZGFyZENvbW1hbmRzID0gJ3N0YW5kYXJkQ29tbWFuZHMnLFxuXG4gIC8vIERQSV9WaXpDb21tYW5kcywgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIFZpekNvbW1hbmRzID0gJ3ZpekNvbW1hbmRzJyxcblxuICAvLyBEUElfWm9uZUNocm9tZUNvbW1hbmRzLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgWm9uZUNocm9tZUNvbW1hbmRzID0gJ3pvbmVDaHJvbWVDb21tYW5kcycsXG5cbiAgLy8gRFBJX0NvbW1hbmRJdGVtLCBoYXZpbmcgdHlwZSBDb21tYW5kc0l0ZW1cbiAgQ29tbWFuZEl0ZW0gPSAnY29tbWFuZEl0ZW0nLFxuXG4gIC8vIERQSV9Db21tYW5kSXRlbXMsIGhhdmluZyB0eXBlIENvbW1hbmRzSXRlbVtdXG4gIENvbW1hbmRJdGVtcyA9ICdjb21tYW5kSXRlbXMnLFxuXG4gIC8vIERQSV9Db21tYW5kLCBoYXZpbmcgdHlwZSBTaW1wbGVDb21tYW5kc1ByZXNNb2RlbFxuICBDb21tYW5kID0gJ3NpbXBsZUNvbW1hbmRNb2RlbCcsXG5cbiAgLy8gRFBJX0FkZENvbW1hbmQsIGhhdmluZyB0eXBlIFNpbXBsZUNvbW1hbmRzUHJlc01vZGVsXG4gIEFkZENvbW1hbmQgPSAnYWRkU2ltcGxlQ29tbWFuZE1vZGVsJyxcblxuICAvLyBEUElfUmVtb3ZlQ29tbWFuZCwgaGF2aW5nIHR5cGUgU2ltcGxlQ29tbWFuZHNQcmVzTW9kZWxcbiAgUmVtb3ZlQ29tbWFuZCA9ICdyZW1vdmVTaW1wbGVDb21tYW5kTW9kZWwnLFxuXG4gIC8vIERQSV9BY2NlcHRDb21tYW5kLCBoYXZpbmcgdHlwZSBTaW1wbGVDb21tYW5kc1ByZXNNb2RlbFxuICBBY2NlcHRDb21tYW5kID0gJ2FjY2VwdFNpbXBsZUNvbW1hbmRNb2RlbCcsXG5cbiAgLy8gRFBJX0RlY2xpbmVDb21tYW5kLCBoYXZpbmcgdHlwZSBTaW1wbGVDb21tYW5kc1ByZXNNb2RlbFxuICBEZWNsaW5lQ29tbWFuZCA9ICdkZWNsaW5lU2ltcGxlQ29tbWFuZE1vZGVsJyxcblxuICAvLyBEUElfRHJvcENvbW1hbmQsIGhhdmluZyB0eXBlIFNpbXBsZUNvbW1hbmRzUHJlc01vZGVsXG4gIERyb3BDb21tYW5kID0gJ2Ryb3BDb21tYW5kTW9kZWwnLFxuXG4gIC8vIERQSV9FZGl0Q2FwdGlvbkNvbW1hbmQsIGhhdmluZyB0eXBlIFNpbXBsZUNvbW1hbmRzUHJlc01vZGVsXG4gIEVkaXRDYXB0aW9uQ29tbWFuZCA9ICdlZGl0Q2FwdGlvbkNvbW1hbmRNb2RlbCcsXG5cbiAgLy8gRFBJX0ZvbnRDb21tYW5kLCBoYXZpbmcgdHlwZSBTaW1wbGVDb21tYW5kc1ByZXNNb2RlbFxuICBGb250Q29tbWFuZCA9ICdmb250Q29tbWFuZE1vZGVsJyxcblxuICAvLyBEUElfTGluZVN0eWxlQ29tbWFuZCwgaGF2aW5nIHR5cGUgU2ltcGxlQ29tbWFuZHNQcmVzTW9kZWxcbiAgTGluZVN0eWxlQ29tbWFuZCA9ICdsaW5lU3R5bGVDb21tYW5kTW9kZWwnLFxuXG4gIC8vIERQSV9Gb3JtYXRDb21tYW5kLCBoYXZpbmcgdHlwZSBTaW1wbGVDb21tYW5kc1ByZXNNb2RlbFxuICBGb3JtYXRDb21tYW5kID0gJ2Zvcm1hdENvbW1hbmRNb2RlbCcsXG5cbiAgLy8gRFBJX0Rlc3RydWN0b3JDb21tYW5kLCBoYXZpbmcgdHlwZSBTaW1wbGVDb21tYW5kc1ByZXNNb2RlbFxuICBEZXN0cnVjdG9yQ29tbWFuZCA9ICdkZXN0cnVjdG9yQ29tbWFuZCcsXG5cbiAgLy8gRFBJX0NsZWFyRm9ybWF0Q29tbWFuZCwgaGF2aW5nIHR5cGUgU2ltcGxlQ29tbWFuZHNQcmVzTW9kZWxcbiAgQ2xlYXJGb3JtYXRDb21tYW5kID0gJ2NsZWFyRm9ybWF0Q29tbWFuZE1vZGVsJyxcblxuICAvLyBEUElfUmljaFRleHRDb21tYW5kLCBoYXZpbmcgdHlwZSBTaW1wbGVDb21tYW5kc1ByZXNNb2RlbFxuICBSaWNoVGV4dENvbW1hbmQgPSAncmljaFRleHRDb21tYW5kTW9kZWwnLFxuXG4gIC8vIERQSV9Tb3J0SW5kaWNhdG9yQ29tbWFuZCwgaGF2aW5nIHR5cGUgU2ltcGxlQ29tbWFuZHNQcmVzTW9kZWxcbiAgU29ydEluZGljYXRvckNvbW1hbmQgPSAnc29ydEluZGljYXRvckNvbW1hbmQnLFxuXG4gIC8vIERQSV9Db21tYW5kTGlzdCwgaGF2aW5nIHR5cGUgU2ltcGxlQ29tbWFuZHNQcmVzTW9kZWxbXVxuICBDb21tYW5kTGlzdCA9ICdjb21tYW5kTGlzdCcsXG5cbiAgLy8gRFBJX1BhcmFtZXRlckN0cmwsIGhhdmluZyB0eXBlIFBhcmFtZXRlckN0cmxQcmVzTW9kZWxcbiAgUGFyYW1ldGVyQ3RybCA9ICdwYXJhbWV0ZXJDb250cm9sJyxcblxuICAvLyBEUElfUGFyYW1ldGVyQ3RybHMsIGhhdmluZyB0eXBlIFBhcmFtZXRlckN0cmxQcmVzTW9kZWxbXVxuICBQYXJhbWV0ZXJDdHJscyA9ICdwYXJhbWV0ZXJDb250cm9scycsXG5cbiAgLy8gRFBJX1BhZ2VNb2RlbCwgaGF2aW5nIHR5cGUgUGFnZVByZXNNb2RlbFxuICBQYWdlTW9kZWwgPSAncGFnZU1vZGVsJyxcblxuICAvLyBEUElfUGFnZVRyYWlsT3B0aW9ucywgaGF2aW5nIHR5cGUgUGFnZVRyYWlsT3B0aW9uc1ByZXNNb2RlbFxuICBQYWdlVHJhaWxPcHRpb25zID0gJ3BhZ2VUcmFpbE9wdGlvbnMnLFxuXG4gIC8vIERQSV9GaWVsZCwgaGF2aW5nIHR5cGUgRmllbGRQcmVzTW9kZWxcbiAgRmllbGQgPSAnZmllbGQnLFxuXG4gIC8vIERQSV9GaWVsZExpc3QsIGhhdmluZyB0eXBlIEZpZWxkUHJlc01vZGVsW11cbiAgRmllbGRMaXN0ID0gJ2ZpZWxkTGlzdCcsXG5cbiAgLy8gRFBJX0ZpZWxkQ29sdW1uLCBoYXZpbmcgdHlwZSBGaWVsZENvbHVtblByZXNNb2RlbFxuICBGaWVsZENvbHVtbiA9ICdjb2x1bW4nLFxuXG4gIC8vIERQSV9GaWVsZENvbHVtbkxpc3QsIGhhdmluZyB0eXBlIEZpZWxkQ29sdW1uUHJlc01vZGVsW11cbiAgRmllbGRDb2x1bW5MaXN0ID0gJ2NvbHVtbkxpc3QnLFxuXG4gIC8vIERQSV9QYXJhbWV0ZXIsIGhhdmluZyB0eXBlIFBhcmFtZXRlclByZXNNb2RlbFxuICBQYXJhbWV0ZXIgPSAncGFyYW1ldGVyJyxcblxuICAvLyBEUElfRGltZW5zaW9uLCBoYXZpbmcgdHlwZSBEaW1lbnNpb25QcmVzTW9kZWxcbiAgRGltZW5zaW9uID0gJ2RpbWVuc2lvbicsXG5cbiAgLy8gRFBJX0F0dHJpYnV0ZURpbWVuc2lvbkxpc3QsIGhhdmluZyB0eXBlIERpbWVuc2lvblByZXNNb2RlbFtdXG4gIEF0dHJpYnV0ZURpbWVuc2lvbkxpc3QgPSAnYXR0cmlidXRlRGltZW5zaW9uTGlzdCcsXG5cbiAgLy8gRFBJX1JlbGF0aW9uYWxUYWJsZSwgaGF2aW5nIHR5cGUgUmVsYXRpb25hbFRhYmxlUHJlc01vZGVsXG4gIFJlbGF0aW9uYWxUYWJsZSA9ICdyZWxhdGlvbmFsVGFibGUnLFxuXG4gIC8vIERQSV9EcmlsbFBhdGgsIGhhdmluZyB0eXBlIERyaWxsUGF0aFByZXNNb2RlbFxuICBEcmlsbFBhdGggPSAnZHJpbGxQYXRoJyxcblxuICAvLyBEUElfRmllbGRGb2xkZXIsIGhhdmluZyB0eXBlIEZpZWxkRm9sZGVyUHJlc01vZGVsXG4gIEZpZWxkRm9sZGVyID0gJ2ZpZWxkRm9sZGVyJyxcblxuICAvLyBEUElfR3JvdXAsIGhhdmluZyB0eXBlIEdyb3VwUHJlc01vZGVsXG4gIEdyb3VwID0gJ2dyb3VwJyxcblxuICAvLyBEUElfSGllcmFyY2h5LCBoYXZpbmcgdHlwZSBIaWVyYXJjaHlQcmVzTW9kZWxcbiAgSGllcmFyY2h5ID0gJ2hpZXJhcmNoeScsXG5cbiAgLy8gRFBJX0hpZXJhcmNoeUxpc3QsIGhhdmluZyB0eXBlIEhpZXJhcmNoeVByZXNNb2RlbFtdXG4gIEhpZXJhcmNoeUxpc3QgPSAnaGllcmFyY2h5TGlzdCcsXG5cbiAgLy8gRFBJX0hpZXJhcmNoeU1lbWJlclNlbGVjdGVkU3RhdGUsIGhhdmluZyB0eXBlIEhpZXJhcmNoeVNlbGVjdF9NZW1iZXJTZWxlY3RlZFN0YXRlUHJlc01vZGVsXG4gIEhpZXJhcmNoeU1lbWJlclNlbGVjdGVkU3RhdGUgPSAnaGllcmFyY2h5TWVtYmVyU2VsZWN0ZWRTdGF0ZScsXG5cbiAgLy8gRFBJX0hpZXJhcmNoeVNlbGVjdGlvbkNoYW5nZXMsIGhhdmluZyB0eXBlIEhpZXJhcmNoeVNlbGVjdF9NZW1iZXJTZWxlY3RlZFN0YXRlUHJlc01vZGVsW11cbiAgSGllcmFyY2h5U2VsZWN0aW9uQ2hhbmdlcyA9ICdoaWVyYXJjaHlTZWxlY3Rpb25DaGFuZ2VzJyxcblxuICAvLyBEUElfRGlzcGxheUZvbGRlciwgaGF2aW5nIHR5cGUgRGlzcGxheUZvbGRlclByZXNNb2RlbFxuICBEaXNwbGF5Rm9sZGVyID0gJ2Rpc3BsYXlGb2xkZXInLFxuXG4gIC8vIERQSV9EaXNwbGF5Rm9sZGVyTGlzdCwgaGF2aW5nIHR5cGUgRGlzcGxheUZvbGRlclByZXNNb2RlbFtdXG4gIERpc3BsYXlGb2xkZXJMaXN0ID0gJ2Rpc3BsYXlGb2xkZXJMaXN0JyxcblxuICAvLyBEUElfRGF0YVNvdXJjZUxheW91dCwgaGF2aW5nIHR5cGUgRGF0YVNvdXJjZUxheW91dFByZXNNb2RlbFxuICBEYXRhU291cmNlTGF5b3V0ID0gJ2RhdGFTb3VyY2VMYXlvdXQnLFxuXG4gIC8vIERQSV9CYXNlRGF0YVNvdXJjZSwgaGF2aW5nIHR5cGUgQmFzZURhdGFTb3VyY2VQcmVzTW9kZWxcbiAgQmFzZURhdGFTb3VyY2UgPSAnYmFzZURhdGFTb3VyY2UnLFxuXG4gIC8vIERQSV9CYXNlRGF0YVNvdXJjZXMsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2YgQmFzZURhdGFTb3VyY2VQcmVzTW9kZWwpXG4gIEJhc2VEYXRhU291cmNlcyA9ICdiYXNlRGF0YVNvdXJjZXMnLFxuXG4gIC8vIERQSV9EYXRhU291cmNlLCBoYXZpbmcgdHlwZSBEYXRhU291cmNlUHJlc01vZGVsXG4gIERhdGFTb3VyY2UgPSAnZGF0YVNvdXJjZScsXG5cbiAgLy8gRFBJX0RhdGFTb3VyY2VzLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIERhdGFTb3VyY2VQcmVzTW9kZWwpXG4gIERhdGFTb3VyY2VzID0gJ2RhdGFTb3VyY2VzJyxcblxuICAvLyBEUElfU2NoZW1hVmlld2VyRGF0YVNvdXJjZSwgaGF2aW5nIHR5cGUgU2NoZW1hVmlld2VyRGF0YVNvdXJjZVByZXNNb2RlbFxuICBTY2hlbWFWaWV3ZXJEYXRhU291cmNlID0gJ3NjaGVtYVZpZXdlckRhdGFTb3VyY2UnLFxuXG4gIC8vIERQSV9TY2hlbWFWaWV3ZXJEYXRhU291cmNlcywgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBTY2hlbWFWaWV3ZXJEYXRhU291cmNlUHJlc01vZGVsKVxuICBTY2hlbWFWaWV3ZXJEYXRhU291cmNlcyA9ICdzY2hlbWFWaWV3ZXJEYXRhU291cmNlcycsXG5cbiAgLy8gRFBJX0Jhc2VEYXRhU2NoZW1hLCBoYXZpbmcgdHlwZSBCYXNlRGF0YVNjaGVtYVByZXNNb2RlbFxuICBCYXNlRGF0YVNjaGVtYSA9ICdiYXNlRGF0YVNjaGVtYScsXG5cbiAgLy8gRFBJX0RhdGFTY2hlbWEsIGhhdmluZyB0eXBlIERhdGFTY2hlbWFQcmVzTW9kZWxcbiAgRGF0YVNjaGVtYSA9ICdkYXRhU2NoZW1hJyxcblxuICAvLyBEUElfU2NoZW1hVmlld2VyRGF0YVNjaGVtYSwgaGF2aW5nIHR5cGUgU2NoZW1hVmlld2VyRGF0YVNjaGVtYVByZXNNb2RlbFxuICBTY2hlbWFWaWV3ZXJEYXRhU2NoZW1hID0gJ3NjaGVtYVZpZXdlckRhdGFTY2hlbWEnLFxuXG4gIC8vIERQSV9TaGVldExpc3RJdGVtLCBoYXZpbmcgdHlwZSBTaGVldExpc3RJdGVtUHJlc01vZGVsXG4gIFNoZWV0TGlzdEl0ZW0gPSAnc2hlZXRMaXN0SXRlbScsXG5cbiAgLy8gRFBJX1NoZWV0TGlzdEl0ZW1zLCBoYXZpbmcgdHlwZSBTaGVldExpc3RJdGVtUHJlc01vZGVsW11cbiAgU2hlZXRMaXN0SXRlbXMgPSAnc2hlZXRMaXN0SXRlbXMnLFxuXG4gIC8vIERQSV9TaGVldExpc3QsIGhhdmluZyB0eXBlIFNoZWV0TGlzdFByZXNNb2RlbFxuICBTaGVldExpc3QgPSAnc2hlZXRMaXN0JyxcblxuICAvLyBEUElfU2l6ZU1vZGVPcHRpb24sIGhhdmluZyB0eXBlIFNpemVNb2RlT3B0aW9uUHJlc01vZGVsXG4gIFNpemVNb2RlT3B0aW9uID0gJ3NpemVNb2RlT3B0aW9uJyxcblxuICAvLyBEUElfU2l6ZU1vZGVPcHRpb25zLCBoYXZpbmcgdHlwZSBTaXplTW9kZU9wdGlvblByZXNNb2RlbFtdXG4gIFNpemVNb2RlT3B0aW9ucyA9ICdzaXplTW9kZU9wdGlvbnMnLFxuXG4gIC8vIERQSV9EYXNoYm9hcmRTaXplQ29udHJvbCwgaGF2aW5nIHR5cGUgRGFzaGJvYXJkU2l6ZUNvbnRyb2xQcmVzTW9kZWxcbiAgRGFzaGJvYXJkU2l6ZUNvbnRyb2wgPSAnZGFzaGJvYXJkU2l6ZUNvbnRyb2wnLFxuXG4gIC8vIERQSV9EZXZpY2VMYXlvdXRJbmZvSXRlbSwgaGF2aW5nIHR5cGUgRGV2aWNlTGF5b3V0SW5mb0l0ZW1QcmVzTW9kZWxcbiAgRGV2aWNlTGF5b3V0SW5mb0l0ZW0gPSAnZGV2aWNlTGF5b3V0SW5mb0l0ZW0nLFxuXG4gIC8vIERQSV9EZXZpY2VMYXlvdXRJbmZvSXRlbXMsIGhhdmluZyB0eXBlIERldmljZUxheW91dEluZm9JdGVtUHJlc01vZGVsW11cbiAgRGV2aWNlTGF5b3V0SW5mb0l0ZW1zID0gJ2RldmljZUxheW91dEluZm9JdGVtcycsXG5cbiAgLy8gRFBJX0RldmljZUxheW91dEluZm9MaXN0LCBoYXZpbmcgdHlwZSBEZXZpY2VMYXlvdXRJbmZvTGlzdFByZXNNb2RlbFxuICBEZXZpY2VMYXlvdXRJbmZvTGlzdCA9ICdkZXZpY2VMYXlvdXRJbmZvTGlzdCcsXG5cbiAgLy8gRFBJX1NwZWNpYWxpemVkRGV2aWNlTGF5b3V0SXRlbSwgaGF2aW5nIHR5cGUgU3BlY2lhbGl6ZWREZXZpY2VMYXlvdXRJdGVtUHJlc01vZGVsXG4gIFNwZWNpYWxpemVkRGV2aWNlTGF5b3V0SXRlbSA9ICdzcGVjaWFsaXplZERldmljZUxheW91dEl0ZW0nLFxuXG4gIC8vIERQSV9TcGVjaWFsaXplZERldmljZUxheW91dEl0ZW1zLCBoYXZpbmcgdHlwZSBTcGVjaWFsaXplZERldmljZUxheW91dEl0ZW1QcmVzTW9kZWxbXVxuICBTcGVjaWFsaXplZERldmljZUxheW91dEl0ZW1zID0gJ3NwZWNpYWxpemVkRGV2aWNlTGF5b3V0SXRlbXMnLFxuXG4gIC8vIERQSV9TcGVjaWFsaXplZERldmljZUxheW91dExpc3QsIGhhdmluZyB0eXBlIFNwZWNpYWxpemVkRGV2aWNlTGF5b3V0TGlzdFByZXNNb2RlbFxuICBTcGVjaWFsaXplZERldmljZUxheW91dExpc3QgPSAnc3BlY2lhbGl6ZWREZXZpY2VMYXlvdXRMaXN0JyxcblxuICAvLyBEUElfU2l6ZUl0ZW0sIGhhdmluZyB0eXBlIFNpemVJdGVtUHJlc01vZGVsXG4gIFNpemVJdGVtID0gJ3NpemVJdGVtJyxcblxuICAvLyBEUElfU2l6ZUl0ZW1zLCBoYXZpbmcgdHlwZSBTaXplSXRlbVByZXNNb2RlbFtdXG4gIFNpemVJdGVtcyA9ICdzaXplSXRlbXMnLFxuXG4gIC8vIERQSV9EZXZpY2VTaXplc0xpc3QsIGhhdmluZyB0eXBlIFNpemVJdGVtTGlzdFByZXNNb2RlbFxuICBEZXZpY2VTaXplc0xpc3QgPSAnZGV2aWNlU2l6ZXNMaXN0JyxcblxuICAvLyBEUElfUHJlc2V0U2l6ZXNMaXN0LCBoYXZpbmcgdHlwZSBTaXplSXRlbUxpc3RQcmVzTW9kZWxcbiAgUHJlc2V0U2l6ZXNMaXN0ID0gJ3ByZXNldFNpemVzTGlzdCcsXG5cbiAgLy8gRFBJX1NpemVJdGVtTGlzdCwgaGF2aW5nIHR5cGUgU2l6ZUl0ZW1MaXN0UHJlc01vZGVsXG4gIFNpemVJdGVtTGlzdCA9ICdzaXplSXRlbUxpc3QnLFxuXG4gIC8vIERQSV9TdWJzdGl0dXRpb25LZXl3b3JkLCBoYXZpbmcgdHlwZSBTdWJzdGl0dXRpb25LZXl3b3JkUHJlc01vZGVsXG4gIFN1YnN0aXR1dGlvbktleXdvcmQgPSAnc3Vic3RpdHV0aW9uS2V5d29yZCcsXG5cbiAgLy8gRFBJX1N1YnN0aXR1dGlvbktleXdvcmRzLCBoYXZpbmcgdHlwZSBTdWJzdGl0dXRpb25LZXl3b3JkUHJlc01vZGVsW11cbiAgU3Vic3RpdHV0aW9uS2V5d29yZHMgPSAnc3Vic3RpdHV0aW9uS2V5d29yZHMnLFxuXG4gIC8vIERQSV9TdWJzdGl0dXRpb25LZXl3b3JkU3ViTGlzdCwgaGF2aW5nIHR5cGUgU3Vic3RpdHV0aW9uS2V5d29yZFN1Ykxpc3RQcmVzTW9kZWxcbiAgU3Vic3RpdHV0aW9uS2V5d29yZFN1Ykxpc3QgPSAnc3Vic3RpdHV0aW9uS2V5d29yZHNTdWJsaXN0JyxcblxuICAvLyBEUElfU3Vic3RpdHV0aW9uS2V5d29yZFN1Ykxpc3RzLCBoYXZpbmcgdHlwZSBTdWJzdGl0dXRpb25LZXl3b3JkU3ViTGlzdFByZXNNb2RlbFtdXG4gIFN1YnN0aXR1dGlvbktleXdvcmRTdWJMaXN0cyA9ICdzdWJzdGl0dXRpb25LZXl3b3JkU3VibGlzdHMnLFxuXG4gIC8vIERQSV9TdWJzdGl0dXRpb25LZXl3b3JkTGlzdCwgaGF2aW5nIHR5cGUgU3Vic3RpdHV0aW9uS2V5d29yZExpc3RQcmVzTW9kZWxcbiAgU3Vic3RpdHV0aW9uS2V5d29yZExpc3QgPSAnc3Vic3RpdHV0aW9uS2V5d29yZHNMaXN0JyxcblxuICAvLyBEUElfRGV2aWNlWm9uZUxpc3RJdGVtLCBoYXZpbmcgdHlwZSBEZXZpY2Vab25lTGlzdEl0ZW1QcmVzTW9kZWxcbiAgRGV2aWNlWm9uZUxpc3RJdGVtID0gJ2RldmljZVpvbmVMaXN0SXRlbScsXG5cbiAgLy8gRFBJX0RldmljZVpvbmVMaXN0SXRlbXMsIGhhdmluZyB0eXBlIERldmljZVpvbmVMaXN0SXRlbVByZXNNb2RlbFtdXG4gIERldmljZVpvbmVMaXN0SXRlbXMgPSAnZGV2aWNlWm9uZUxpc3RJdGVtcycsXG5cbiAgLy8gRFBJX0RldmljZVpvbmVMaXN0LCBoYXZpbmcgdHlwZSBEZXZpY2Vab25lTGlzdFByZXNNb2RlbFxuICBEZXZpY2Vab25lTGlzdCA9ICdkZXZpY2Vab25lTGlzdCcsXG5cbiAgLy8gRFBJX1pvbmVTbmFwTGluZUxpc3RJdGVtLCBoYXZpbmcgdHlwZSBab25lU25hcExpbmVMaXN0SXRlbVByZXNNb2RlbFxuICBab25lU25hcExpbmVMaXN0SXRlbSA9ICdzbmFwTGluZUxpc3RJdGVtJyxcblxuICAvLyBEUElfT3V0ZXJIb3Jpem9udGFsU25hcExpbmVzLCBoYXZpbmcgdHlwZSBab25lU25hcExpbmVMaXN0SXRlbVByZXNNb2RlbFtdXG4gIE91dGVySG9yaXpvbnRhbFNuYXBMaW5lcyA9ICdvdXRlckhvcml6b250YWxTbmFwTGluZXMnLFxuXG4gIC8vIERQSV9PdXRlclZlcnRpY2FsU25hcExpbmVzLCBoYXZpbmcgdHlwZSBab25lU25hcExpbmVMaXN0SXRlbVByZXNNb2RlbFtdXG4gIE91dGVyVmVydGljYWxTbmFwTGluZXMgPSAnb3V0ZXJWZXJ0aWNhbFNuYXBMaW5lcycsXG5cbiAgLy8gRFBJX0lubmVySG9yaXpvbnRhbFNuYXBMaW5lcywgaGF2aW5nIHR5cGUgWm9uZVNuYXBMaW5lTGlzdEl0ZW1QcmVzTW9kZWxbXVxuICBJbm5lckhvcml6b250YWxTbmFwTGluZXMgPSAnaW5uZXJIb3Jpem9udGFsU25hcExpbmVzJyxcblxuICAvLyBEUElfSW5uZXJWZXJ0aWNhbFNuYXBMaW5lcywgaGF2aW5nIHR5cGUgWm9uZVNuYXBMaW5lTGlzdEl0ZW1QcmVzTW9kZWxbXVxuICBJbm5lclZlcnRpY2FsU25hcExpbmVzID0gJ2lubmVyVmVydGljYWxTbmFwTGluZXMnLFxuXG4gIC8vIERQSV9ab25lU25hcExpbmVMaXN0LCBoYXZpbmcgdHlwZSBab25lU25hcExpbmVMaXN0UHJlc01vZGVsXG4gIFpvbmVTbmFwTGluZUxpc3QgPSAnc25hcExpbmVMaXN0JyxcblxuICAvLyBEUElfRGFzaGJvYXJkWm9uZUhpZXJhcmNoeSwgaGF2aW5nIHR5cGUgRGFzaGJvYXJkWm9uZUhpZXJhcmNoeVByZXNNb2RlbFxuICBEYXNoYm9hcmRab25lSGllcmFyY2h5ID0gJ2Rhc2hib2FyZFpvbmVIaWVyYXJjaHknLFxuXG4gIC8vIERQSV9EZXZpY2Vab25lVmlzaWJpbGl0eUxpc3RJdGVtLCBoYXZpbmcgdHlwZSBEZXZpY2Vab25lVmlzaWJpbGl0eUxpc3RJdGVtUHJlc01vZGVsXG4gIERldmljZVpvbmVWaXNpYmlsaXR5TGlzdEl0ZW0gPSAnZGV2aWNlWm9uZVZpc2liaWxpdHlMaXN0SXRlbScsXG5cbiAgLy8gRFBJX0RldmljZVpvbmVWaXNpYmlsaXR5TGlzdEl0ZW1zLCBoYXZpbmcgdHlwZSBEZXZpY2Vab25lVmlzaWJpbGl0eUxpc3RJdGVtUHJlc01vZGVsW11cbiAgRGV2aWNlWm9uZVZpc2liaWxpdHlMaXN0SXRlbXMgPSAnZGV2aWNlWm9uZVZpc2liaWxpdHlMaXN0SXRlbXMnLFxuXG4gIC8vIERQSV9EZXZpY2Vab25lVmlzaWJpbGl0eUxpc3QsIGhhdmluZyB0eXBlIERldmljZVpvbmVWaXNpYmlsaXR5TGlzdFByZXNNb2RlbFxuICBEZXZpY2Vab25lVmlzaWJpbGl0eUxpc3QgPSAnZGV2aWNlWm9uZVZpc2liaWxpdHlMaXN0JyxcblxuICAvLyBEUElfV29ya3NoZWV0RGF0YVNjaGVtYSwgaGF2aW5nIHR5cGUgV29ya3NoZWV0RGF0YVNjaGVtYVByZXNNb2RlbFxuICBXb3Jrc2hlZXREYXRhU2NoZW1hID0gJ3dvcmtzaGVldERhdGFTY2hlbWEnLFxuXG4gIC8vIERQSV9Xb3Jrc2hlZXREYXRhU2NoZW1hTWFwLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIFdvcmtzaGVldERhdGFTY2hlbWFQcmVzTW9kZWwpXG4gIFdvcmtzaGVldERhdGFTY2hlbWFNYXAgPSAnd29ya3NoZWV0RGF0YVNjaGVtYU1hcCcsXG5cbiAgLy8gRFBJX1NoZWxmLCBoYXZpbmcgdHlwZSBTaGVsZlByZXNNb2RlbFxuICBTaGVsZiA9ICdzaGVsZicsXG5cbiAgLy8gRFBJX1NoZWxmRGV0YWlsLCBoYXZpbmcgdHlwZSBTaGVsZlByZXNNb2RlbFxuICBTaGVsZkRldGFpbCA9ICdzaGVsZkRldGFpbCcsXG5cbiAgLy8gRFBJX1NoZWxmTGlzdCwgaGF2aW5nIHR5cGUgU2hlbGZQcmVzTW9kZWxbXVxuICBTaGVsZkxpc3QgPSAnc2hlbGZMaXN0JyxcblxuICAvLyBEUElfU2hlbGZJdGVtLCBoYXZpbmcgdHlwZSBTaGVsZkl0ZW1QcmVzTW9kZWxcbiAgU2hlbGZJdGVtID0gJ3NoZWxmSXRlbScsXG5cbiAgLy8gRFBJX1NoZWxmSXRlbXMsIGhhdmluZyB0eXBlIFNoZWxmSXRlbVByZXNNb2RlbFtdXG4gIFNoZWxmSXRlbXMgPSAnc2hlbGZJdGVtcycsXG5cbiAgLy8gRFBJX1NoZWx2ZXMsIGhhdmluZyB0eXBlIFNoZWx2ZXNQcmVzTW9kZWxcbiAgU2hlbHZlcyA9ICdzaGVsdmVzJyxcblxuICAvLyBEUElfRmllbGRFbmNvZGluZywgaGF2aW5nIHR5cGUgRmllbGRFbmNvZGluZ1ByZXNNb2RlbFxuICBGaWVsZEVuY29kaW5nID0gJ2ZpZWxkRW5jb2RpbmcnLFxuXG4gIC8vIERQSV9GaWVsZEVuY29kaW5ncywgaGF2aW5nIHR5cGUgRmllbGRFbmNvZGluZ1ByZXNNb2RlbFtdXG4gIEZpZWxkRW5jb2RpbmdzID0gJ2ZpZWxkRW5jb2RpbmdzJyxcblxuICAvLyBEUElfVWJlclRpcCwgaGF2aW5nIHR5cGUgVWJlclRpcFByZXNNb2RlbFxuICBVYmVyVGlwID0gJ3ViZXJUaXAnLFxuXG4gIC8vIERQSV9BbmFseXRpY3NPYmplY3REcmFnSW5mbywgaGF2aW5nIHR5cGUgQW5hbHl0aWNzT2JqZWN0RHJhZ0luZm9QcmVzTW9kZWxcbiAgQW5hbHl0aWNzT2JqZWN0RHJhZ0luZm8gPSAnYW5hbHl0aWNzT2JqZWN0RHJhZ0luZm8nLFxuXG4gIC8vIERQSV9UcmVuZExpbmUsIGhhdmluZyB0eXBlIFRyZW5kTGluZVByZXNNb2RlbFxuICBUcmVuZExpbmUgPSAndHJlbmRMaW5lJyxcblxuICAvLyBEUElfVHJlbmRMaW5lRGlhbG9nLCBoYXZpbmcgdHlwZSBUcmVuZExpbmVEaWFsb2dQcmVzTW9kZWxcbiAgVHJlbmRMaW5lRGlhbG9nID0gJ3RyZW5kTGluZURpYWxvZycsXG5cbiAgLy8gRFBJX1RyZW5kTGluZURlc2NyaWJlUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBUcmVuZExpbmVEZXNjcmliZVByZXNNb2RlbFxuICBUcmVuZExpbmVEZXNjcmliZVByZXNNb2RlbCA9ICd0cmVuZExpbmVEZXNjcmliZVByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1RyZW5kTGluZUFPVk1vZGVsUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBUcmVuZExpbmVBT1ZNb2RlbFByZXNNb2RlbFxuICBUcmVuZExpbmVBT1ZNb2RlbFByZXNNb2RlbCA9ICd0cmVuZExpbmVBb3ZNb2RlbFByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1RyZW5kTGluZUFPVk1vZGVsc1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgVHJlbmRMaW5lQU9WTW9kZWxQcmVzTW9kZWxbXVxuICBUcmVuZExpbmVBT1ZNb2RlbHNQcmVzTW9kZWwgPSAndHJlbmRNb2RlbERlc2NyaXB0aW9uVmVjdG9yJyxcblxuICAvLyBEUElfVHJlbmRMaW5lTGluZUNvZWZmaWNpZW50UHJlc01vZGVsLCBoYXZpbmcgdHlwZSBUcmVuZExpbmVMaW5lQ29lZmZpY2llbnRQcmVzTW9kZWxcbiAgVHJlbmRMaW5lTGluZUNvZWZmaWNpZW50UHJlc01vZGVsID0gJ3RyZW5kTGluZUxpbmVDb2VmZmljaWVudCcsXG5cbiAgLy8gRFBJX1RyZW5kTGluZUxpbmVDb2VmZmljaWVudHNQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFRyZW5kTGluZUxpbmVDb2VmZmljaWVudFByZXNNb2RlbFtdXG4gIFRyZW5kTGluZUxpbmVDb2VmZmljaWVudHNQcmVzTW9kZWwgPSAndHJlbmRMaW5lTGluZUNvZWZmaWNpZW50c1ByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1RyZW5kTGluZUxpbmVzUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBUcmVuZExpbmVMaW5lc1ByZXNNb2RlbFxuICBUcmVuZExpbmVMaW5lc1ByZXNNb2RlbCA9ICd0cmVuZExpbmVMaW5lc1ByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1RyZW5kTGluZUFPVlByZXNNb2RlbCwgaGF2aW5nIHR5cGUgVHJlbmRMaW5lQU9WUHJlc01vZGVsXG4gIFRyZW5kTGluZUFPVlByZXNNb2RlbCA9ICd0cmVuZExpbmVBbm92YVByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1JlZmVyZW5jZUxpbmUsIGhhdmluZyB0eXBlIFJlZmVyZW5jZUxpbmVQcmVzTW9kZWxcbiAgUmVmZXJlbmNlTGluZSA9ICdyZWZlcmVuY2VMaW5lJyxcblxuICAvLyBEUElfUmVmZXJlbmNlTGluZXMsIGhhdmluZyB0eXBlIFJlZmVyZW5jZUxpbmVQcmVzTW9kZWxbXVxuICBSZWZlcmVuY2VMaW5lcyA9ICdyZWZlcmVuY2VMaW5lcycsXG5cbiAgLy8gRFBJX1BlcmNlbnRpbGVFZGl0RGF0YVZhbHVlLCBoYXZpbmcgdHlwZSBFZGl0RGF0YVZhbHVlUHJlc01vZGVsXG4gIFBlcmNlbnRpbGVFZGl0RGF0YVZhbHVlID0gJ3BlcmNlbnRpbGVFZGl0RGF0YVZhbHVlJyxcblxuICAvLyBEUElfTGltaXRFZGl0RGF0YVZhbHVlLCBoYXZpbmcgdHlwZSBFZGl0RGF0YVZhbHVlUHJlc01vZGVsXG4gIExpbWl0RWRpdERhdGFWYWx1ZSA9ICdsaW1pdEVkaXREYXRhVmFsdWUnLFxuXG4gIC8vIERQSV9Db25maWRlbmNlTGV2ZWxDb21ibywgaGF2aW5nIHR5cGUgRWRpdFZhbHVlV2lkZ2V0UHJlc01vZGVsXG4gIENvbmZpZGVuY2VMZXZlbENvbWJvID0gJ2NvbmZpZGVuY2VMZXZlbENvbWJvJyxcblxuICAvLyBEUElfRGlzdHJpYnV0aW9uUXVhbnRpbGVzQ29tYm8sIGhhdmluZyB0eXBlIEVkaXRWYWx1ZVdpZGdldFByZXNNb2RlbFxuICBEaXN0cmlidXRpb25RdWFudGlsZXNDb21ibyA9ICdkaXN0cmlidXRpb25RdWFudGlsZXNMZXZlbENvbWJvJyxcblxuICAvLyBEUElfUGVyY2VudGlsZXNDb21ibywgaGF2aW5nIHR5cGUgRWRpdFZhbHVlV2lkZ2V0UHJlc01vZGVsXG4gIFBlcmNlbnRpbGVzQ29tYm8gPSAnZGlzdHJpYnV0aW9uUGVyY2VudGlsZXNMZXZlbENvbWJvJyxcblxuICAvLyBEUElfTnVtZXJpY0JpblNpemVDb21ibywgaGF2aW5nIHR5cGUgRWRpdFZhbHVlV2lkZ2V0UHJlc01vZGVsXG4gIE51bWVyaWNCaW5TaXplQ29tYm8gPSAnbnVtZXJpY0JpblNpemVDb21ibycsXG5cbiAgLy8gRFBJX0ZpZWxkUGlja2VyRmllbGQsIGhhdmluZyB0eXBlIEZpZWxkUGlja2VyRmllbGRQcmVzTW9kZWxcbiAgRmllbGRQaWNrZXJGaWVsZCA9ICdmaWVsZFBpY2tlckZpZWxkJyxcblxuICAvLyBEUElfRmllbGRQaWNrZXJGaWVsZHMsIGhhdmluZyB0eXBlIEZpZWxkUGlja2VyRmllbGRQcmVzTW9kZWxbXVxuICBGaWVsZFBpY2tlckZpZWxkcyA9ICdmaWVsZFBpY2tlckZpZWxkcycsXG5cbiAgLy8gRFBJX0ZpZWxkUGlja2VyQ29tYm8sIGhhdmluZyB0eXBlIEZpZWxkUGlja2VyQ29tYm9QcmVzTW9kZWxcbiAgRmllbGRQaWNrZXJDb21ibyA9ICdmaWVsZFBpY2tlckNvbWJvJyxcblxuICAvLyBEUElfUGFpcmVkRmllbGRQaWNrZXJDb21ibywgaGF2aW5nIHR5cGUgRmllbGRQaWNrZXJDb21ib1ByZXNNb2RlbFxuICBQYWlyZWRGaWVsZFBpY2tlckNvbWJvID0gJ3BhaXJlZEZpZWxkUGlja2VyQ29tYm8nLFxuXG4gIC8vIERQSV9SZWZlcmVuY2VMaW5lRWRpdG9yUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBSZWZlcmVuY2VMaW5lRWRpdG9yUHJlc01vZGVsXG4gIFJlZmVyZW5jZUxpbmVFZGl0b3JQcmVzTW9kZWwgPSAncmVmZXJlbmNlTGluZUVkaXRvcicsXG5cbiAgLy8gRFBJX0Nsb3NlRGF0YVNvdXJjZUVycm9yRGlhbG9nUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBDbG9zZURhdGFTb3VyY2VFcnJvckRpYWxvZ1ByZXNNb2RlbFxuICBDbG9zZURhdGFTb3VyY2VFcnJvckRpYWxvZ1ByZXNNb2RlbCA9ICdjbG9zZURzRXJyb3JEaWFsb2cnLFxuXG4gIC8vIERQSV9FZGl0UmVmZXJlbmNlTGluZSwgaGF2aW5nIHR5cGUgRWRpdFJlZmVyZW5jZUxpbmVQcmVzTW9kZWxcbiAgRWRpdFJlZmVyZW5jZUxpbmUgPSAnZWRpdFJlZmVyZW5jZUxpbmUnLFxuXG4gIC8vIERQSV9FZGl0UmVmZXJlbmNlQmFuZCwgaGF2aW5nIHR5cGUgRWRpdFJlZmVyZW5jZUJhbmRQcmVzTW9kZWxcbiAgRWRpdFJlZmVyZW5jZUJhbmQgPSAnZWRpdFJlZmVyZW5jZUJhbmQnLFxuXG4gIC8vIERQSV9FZGl0RGlzdHJpYnV0aW9uLCBoYXZpbmcgdHlwZSBFZGl0RGlzdHJpYnV0aW9uUHJlc01vZGVsXG4gIEVkaXREaXN0cmlidXRpb24gPSAnZWRpdERpc3RyaWJ1dGlvbicsXG5cbiAgLy8gRFBJX0Rpc3RyaWJ1dGlvblBlcmNlbnRhZ2VzLCBoYXZpbmcgdHlwZSBEaXN0cmlidXRpb25QZXJjZW50YWdlc1ByZXNNb2RlbFxuICBEaXN0cmlidXRpb25QZXJjZW50YWdlcyA9ICdkaXN0cmlidXRpb25QZXJjZW50YWdlcycsXG5cbiAgLy8gRFBJX0Rpc3RyaWJ1dGlvblBlcmNlbnRpbGVzLCBoYXZpbmcgdHlwZSBEaXN0cmlidXRpb25QZXJjZW50aWxlc1ByZXNNb2RlbFxuICBEaXN0cmlidXRpb25QZXJjZW50aWxlcyA9ICdkaXN0cmlidXRpb25QZXJjZW50aWxlcycsXG5cbiAgLy8gRFBJX0Rpc3RyaWJ1dGlvblF1YW50aWxlcywgaGF2aW5nIHR5cGUgRGlzdHJpYnV0aW9uUXVhbnRpbGVzUHJlc01vZGVsXG4gIERpc3RyaWJ1dGlvblF1YW50aWxlcyA9ICdkaXN0cmlidXRpb25RdWFudGlsZXMnLFxuXG4gIC8vIERQSV9EaXN0cmlidXRpb25TdGFuZGFyZERldmlhdGlvbiwgaGF2aW5nIHR5cGUgRGlzdHJpYnV0aW9uU3RhbmRhcmREZXZpYXRpb25QcmVzTW9kZWxcbiAgRGlzdHJpYnV0aW9uU3RhbmRhcmREZXZpYXRpb24gPSAnZGlzdHJpYnV0aW9uU3RkZGV2JyxcblxuICAvLyBEUElfU29ydEluZGljYXRvcnMsIGhhdmluZyB0eXBlIFNvcnRJbmRpY2F0b3JzUHJlc01vZGVsXG4gIFNvcnRJbmRpY2F0b3JzID0gJ3NvcnRJbmRpY2F0b3JzJyxcblxuICAvLyBEUElfU29ydEluZGljYXRvclJlZ2lvbiwgaGF2aW5nIHR5cGUgU29ydEluZGljYXRvclJlZ2lvblByZXNNb2RlbFxuICBTb3J0SW5kaWNhdG9yUmVnaW9uID0gJ3NvcnRJbmRpY2F0b3JSZWdpb24nLFxuXG4gIC8vIERQSV9Tb3J0SW5kaWNhdG9yUmVnaW9ucywgaGF2aW5nIHR5cGUgU29ydEluZGljYXRvclJlZ2lvblByZXNNb2RlbFtdXG4gIFNvcnRJbmRpY2F0b3JSZWdpb25zID0gJ3NvcnRJbmRpY2F0b3JSZWdpb25zJyxcblxuICAvLyBEUElfU29ydEluZGljYXRvckl0ZW0sIGhhdmluZyB0eXBlIFNvcnRJbmRpY2F0b3JJdGVtUHJlc01vZGVsXG4gIFNvcnRJbmRpY2F0b3JJdGVtID0gJ3NvcnRJbmRpY2F0b3JJdGVtJyxcblxuICAvLyBEUElfU29ydEluZGljYXRvckl0ZW1zLCBoYXZpbmcgdHlwZSBTb3J0SW5kaWNhdG9ySXRlbVByZXNNb2RlbFtdXG4gIFNvcnRJbmRpY2F0b3JJdGVtcyA9ICdzb3J0SW5kaWNhdG9ySXRlbXMnLFxuXG4gIC8vIERQSV9CdWlsZGVyQ29uZmlnLCBoYXZpbmcgdHlwZSBCdWlsZGVyQ29uZmlnUHJlc01vZGVsXG4gIEJ1aWxkZXJDb25maWcgPSAnYnVpbGRlckNvbmZpZycsXG5cbiAgLy8gRFBJX1NoZWV0TGF5b3V0SW5mbywgaGF2aW5nIHR5cGUgU2hlZXRMYXlvdXRJbmZvUHJlc01vZGVsXG4gIFNoZWV0TGF5b3V0SW5mbyA9ICdzaGVldExheW91dEluZm8nLFxuXG4gIC8vIERQSV9BcmVhUmVjdCwgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsXG4gIEFyZWFSZWN0ID0gJ2FyZWFSZWN0JyxcblxuICAvLyBEUElfQm9yZGVyLCBoYXZpbmcgdHlwZSBSZWN0YW5nbGVQcmVzTW9kZWxcbiAgQm9yZGVyID0gJ2JvcmRlclJlY3QnLFxuXG4gIC8vIERQSV9Cb3VuZHNSZWN0LCBoYXZpbmcgdHlwZSBSZWN0YW5nbGVQcmVzTW9kZWxcbiAgQm91bmRzUmVjdCA9ICdib3VuZHNSZWN0JyxcblxuICAvLyBEUElfQnV0dG9uUmVjdCwgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsXG4gIEJ1dHRvblJlY3QgPSAnYnV0dG9uUmVjdCcsXG5cbiAgLy8gRFBJX0RyYWdSZWN0LCBoYXZpbmcgdHlwZSBSZWN0YW5nbGVQcmVzTW9kZWxcbiAgRHJhZ1JlY3QgPSAnZHJhZ1JlY3QnLFxuXG4gIC8vIERQSV9Gb2N1c1JlY3QsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICBGb2N1c1JlY3QgPSAnZm9jdXNSZWN0JyxcblxuICAvLyBEUElfSW1hZ2VUaWxlUmVjdCwgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsXG4gIEltYWdlVGlsZVJlY3QgPSAndGlsZVJlY3QnLFxuXG4gIC8vIERQSV9JdGVtUmVjdCwgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsXG4gIEl0ZW1SZWN0ID0gJ2l0ZW1SZWN0JyxcblxuICAvLyBEUElfTGFiZWxSZWN0LCBoYXZpbmcgdHlwZSBSZWN0YW5nbGVQcmVzTW9kZWxcbiAgTGFiZWxSZWN0ID0gJ2xhYmVsUmVjdCcsXG5cbiAgLy8gRFBJX01hcmtSZWN0LCBoYXZpbmcgdHlwZSBSZWN0YW5nbGVQcmVzTW9kZWxcbiAgTWFya1JlY3QgPSAnbWFya1JlY3QnLFxuXG4gIC8vIERQSV9NYXJrVG9vbHRpcFJlY3QsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICBNYXJrVG9vbHRpcFJlY3QgPSAnbWFya1Rvb2x0aXBSZWN0JyxcblxuICAvLyBEUElfTWVudUJ1dHRvblJlY3QsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICBNZW51QnV0dG9uUmVjdCA9ICdtZW51QnV0dG9uUmVjdCcsXG5cbiAgLy8gRFBJX091dFJlZ2lvblJlY3QsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICBPdXRSZWdpb25SZWN0ID0gJ291dFJlZ2lvblJlY3QnLFxuXG4gIC8vIERQSV9QYW5lUmVjdCwgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsXG4gIFBhbmVSZWN0ID0gJ3BhbmVSZWN0JyxcblxuICAvLyBEUElfUGl4ZWxFeHRlbnRzLCBoYXZpbmcgdHlwZSBSZWN0YW5nbGVQcmVzTW9kZWxcbiAgUGl4ZWxFeHRlbnRzID0gJ3BpeGVsRXh0ZW50cycsXG5cbiAgLy8gRFBJX1JlY3RNYXhMYWJlbCwgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsXG4gIFJlY3RNYXhMYWJlbCA9ICdyZWN0TWF4TGFiZWwnLFxuXG4gIC8vIERQSV9SZWN0TWluTGFiZWwsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICBSZWN0TWluTGFiZWwgPSAncmVjdE1pbkxhYmVsJyxcblxuICAvLyBEUElfUmVjdFJhbXAsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICBSZWN0UmFtcCA9ICdyZWN0UmFtcCcsXG5cbiAgLy8gRFBJX1JlY3RUaXRsZSwgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsXG4gIFJlY3RUaXRsZSA9ICdyZWN0VGl0bGUnLFxuXG4gIC8vIERQSV9SZWdpb25SZWN0LCBoYXZpbmcgdHlwZSBSZWN0YW5nbGVQcmVzTW9kZWxcbiAgUmVnaW9uUmVjdCA9ICdyZWdpb25SZWN0JyxcblxuICAvLyBEUElfU2VsZWN0aW9uUmVjdCwgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsXG4gIFNlbGVjdGlvblJlY3QgPSAnc2VsZWN0aW9uUmVjdCcsXG5cbiAgLy8gRFBJX1VudXNlZFJlY3QsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICBVbnVzZWRSZWN0ID0gJ3VudXNlZFJlY3QnLFxuXG4gIC8vIERQSV9ab25lRWRnZVJlY3QsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICBab25lRWRnZVJlY3QgPSAnem9uZUVkZ2UnLFxuXG4gIC8vIERQSV9ab25lRWRnZVJlY3RQaXgsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICBab25lRWRnZVJlY3RQaXggPSAnem9uZUVkZ2VQaXgnLFxuXG4gIC8vIERQSV9ab25lRWRnZVJlY3RQcCwgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsXG4gIFpvbmVFZGdlUmVjdFBwID0gJ3pvbmVFZGdlUHAnLFxuXG4gIC8vIERQSV9VSUF1dG9tYXRpb25MaW5rUmVjdCwgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsXG4gIFVJQXV0b21hdGlvbkxpbmtSZWN0ID0gJ2xpbmtSZWN0JyxcblxuICAvLyBEUElfQm9yZGVycywgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsW11cbiAgQm9yZGVycyA9ICdib3JkZXJSZWN0cycsXG5cbiAgLy8gRFBJX1VJQXV0b21hdGlvbkxpbmtSZWN0cywgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsW11cbiAgVUlBdXRvbWF0aW9uTGlua1JlY3RzID0gJ2xpbmtSZWN0cycsXG5cbiAgLy8gRFBJX0RvbWFpbkV4dGVudHMsIGhhdmluZyB0eXBlIERvdWJsZVJlY3RhbmdsZVByZXNNb2RlbFxuICBEb21haW5FeHRlbnRzID0gJ2RvbWFpbkV4dGVudHMnLFxuXG4gIC8vIERQSV9NYXBEb21haW5FeHRlbnRzLCBoYXZpbmcgdHlwZSBEb3VibGVSZWN0YW5nbGVQcmVzTW9kZWxcbiAgTWFwRG9tYWluRXh0ZW50cyA9ICdtYXBEb21haW5FeHRlbnRzJyxcblxuICAvLyBEUElfTWFwTGF0TG9uZ1JlY3QsIGhhdmluZyB0eXBlIE1hcFJlY3RQcmVzTW9kZWxcbiAgTWFwTGF0TG9uZ1JlY3QgPSAnbWFwTGF0TG9uZ1JlY3QnLFxuXG4gIC8vIERQSV9DZW50ZXIsIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsXG4gIENlbnRlciA9ICdjZW50ZXInLFxuXG4gIC8vIERQSV9DZW50ZXJNYXJrTGluZUJlZ2luLCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICBDZW50ZXJNYXJrTGluZUJlZ2luID0gJ2NlbnRlck1hcmtMaW5lQmVnaW4nLFxuXG4gIC8vIERQSV9DZW50ZXJNYXJrTGluZUVuZCwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxcbiAgQ2VudGVyTWFya0xpbmVFbmQgPSAnY2VudGVyTWFya0xpbmVFbmQnLFxuXG4gIC8vIERQSV9Ecm9wTG9jYXRpb24sIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsXG4gIERyb3BMb2NhdGlvbiA9ICdkcm9wTG9jYXRpb24nLFxuXG4gIC8vIERQSV9FbmRQdCwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxcbiAgRW5kUHQgPSAnZW5kUG9pbnQnLFxuXG4gIC8vIERQSV9HcmFiTG9jYXRpb24sIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsXG4gIEdyYWJMb2NhdGlvbiA9ICdncmFiTG9jYXRpb24nLFxuXG4gIC8vIERQSV9HcmlkT3JpZ2luLCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICBHcmlkT3JpZ2luID0gJ2dyaWRPcmlnaW4nLFxuXG4gIC8vIERQSV9MYXNzb1NlbGVjdGlvblBvaW50LCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICBMYXNzb1NlbGVjdGlvblBvaW50ID0gJ2xhc3NvU2VsZWN0aW9uUG9pbnQnLFxuXG4gIC8vIERQSV9NZW51TG9jYXRpb24sIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsXG4gIE1lbnVMb2NhdGlvbiA9ICdtZW51TG9jYXRpb24nLFxuXG4gIC8vIERQSV9Nb3ZlT2Zmc2V0LCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICBNb3ZlT2Zmc2V0ID0gJ21vdmVPZmZzZXQnLFxuXG4gIC8vIERQSV9PdmVybGF5QW5jaG9yLCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICBPdmVybGF5QW5jaG9yID0gJ292ZXJsYXlBbmNob3InLFxuXG4gIC8vIERQSV9QYW5BbW91bnQsIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsXG4gIFBhbkFtb3VudCA9ICdwYW5BbW91bnQnLFxuXG4gIC8vIERQSV9QYW5Mb2NhdGlvbiwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxcbiAgUGFuTG9jYXRpb24gPSAncGFuTG9jYXRpb24nLFxuXG4gIC8vIERQSV9QYW5lUmVzb2x2ZXJMb2NhdGlvbiwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxcbiAgUGFuZVJlc29sdmVyTG9jYXRpb24gPSAncGFuZVJlc29sdmVyTG9jYXRpb24nLFxuXG4gIC8vIERQSV9QaXhlbEV4dGVudHNPZmZzZXQsIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsXG4gIFBpeGVsRXh0ZW50c09mZnNldCA9ICdleHRlbnRzT2Zmc2V0JyxcblxuICAvLyBEUElfUG9pbnQxLCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICBQb2ludDEgPSAncHQxJyxcblxuICAvLyBEUElfUG9pbnQyLCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICBQb2ludDIgPSAncHQyJyxcblxuICAvLyBEUElfUG9pbnQzLCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICBQb2ludDMgPSAncHQzJyxcblxuICAvLyBEUElfUmVnaW9uUG9pbnQsIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsXG4gIFJlZ2lvblBvaW50ID0gJ3JlZ2lvblBvaW50JyxcblxuICAvLyBEUElfU2Nyb2xsT2Zmc2V0LCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICBTY3JvbGxPZmZzZXQgPSAnc2Nyb2xsT2Zmc2V0JyxcblxuICAvLyBEUElfU2VsZWN0QXRQb2ludCwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxcbiAgU2VsZWN0QXRQb2ludCA9ICdzZWxlY3RBdFBvaW50JyxcblxuICAvLyBEUElfU2VsZWN0T2Zmc2V0LCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICBTZWxlY3RPZmZzZXQgPSAnc2VsZWN0T2Zmc2V0JyxcblxuICAvLyBEUElfVGFyZ2V0UHQsIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsXG4gIFRhcmdldFB0ID0gJ3RhcmdldFBvaW50JyxcblxuICAvLyBEUElfVGV4dE9yaWdpbiwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxcbiAgVGV4dE9yaWdpbiA9ICd0ZXh0T3JpZ2luJyxcblxuICAvLyBEUElfVG9vbHRpcEFuY2hvclBvaW50LCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICBUb29sdGlwQW5jaG9yUG9pbnQgPSAndG9vbHRpcEFuY2hvclBvaW50JyxcblxuICAvLyBEUElfVG9vbHRpcE9mZnNldCwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxcbiAgVG9vbHRpcE9mZnNldCA9ICd0b29sdGlwT2Zmc2V0JyxcblxuICAvLyBEUElfVml6TG9jYXRpb24sIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsXG4gIFZpekxvY2F0aW9uID0gJ3ZpekxvY2F0aW9uJyxcblxuICAvLyBEUElfWm9vbUFuY2hvclBvaW50LCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICBab29tQW5jaG9yUG9pbnQgPSAnem9vbUFuY2hvclBvaW50JyxcblxuICAvLyBEUElfTWVudUFuY2hvclBvaW50LCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICBNZW51QW5jaG9yUG9pbnQgPSAnbWVudUFuY2hvclBvaW50JyxcblxuICAvLyBEUElfT3ZlcmxheUFuY2hvcnMsIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsW11cbiAgT3ZlcmxheUFuY2hvcnMgPSAnb3ZlcmxheUFuY2hvcnMnLFxuXG4gIC8vIERQSV9MYXNzb1NlbGVjdGlvbiwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxbXVxuICBMYXNzb1NlbGVjdGlvbiA9ICdsYXNzb1NlbGVjdGlvbicsXG5cbiAgLy8gRFBJX1Njcm9sbE9mZnNldFBvaW50cywgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxbXVxuICBTY3JvbGxPZmZzZXRQb2ludHMgPSAnc2Nyb2xsT2Zmc2V0UG9pbnRzJyxcblxuICAvLyBEUElfUmFkaWFsU2VsZWN0aW9uLCBoYXZpbmcgdHlwZSBDaXJjbGVQcmVzTW9kZWxcbiAgUmFkaWFsU2VsZWN0aW9uID0gJ3JhZGlhbFNlbGVjdGlvbicsXG5cbiAgLy8gRFBJX0RvbWFpbk9yaWdpbiwgaGF2aW5nIHR5cGUgRmxvYXRQb2ludFByZXNNb2RlbFxuICBEb21haW5PcmlnaW4gPSAnZG9tYWluT3JpZ2luJyxcblxuICAvLyBEUElfRmxvYXRDZW50ZXIsIGhhdmluZyB0eXBlIEZsb2F0UG9pbnRQcmVzTW9kZWxcbiAgRmxvYXRDZW50ZXIgPSAnZmxvYXRDZW50ZXInLFxuXG4gIC8vIERQSV9GbG9hdFBvaW50LCBoYXZpbmcgdHlwZSBGbG9hdFBvaW50UHJlc01vZGVsXG4gIEZsb2F0UG9pbnQgPSAnZmxvYXRQb2ludCcsXG5cbiAgLy8gRFBJX0NsaWVudEF2YWlsYWJsZVNwYWNlLCBoYXZpbmcgdHlwZSBTaXplUHJlc01vZGVsXG4gIENsaWVudEF2YWlsYWJsZVNwYWNlID0gJ2NsaWVudEF2YWlsYWJsZVNwYWNlJyxcblxuICAvLyBEUElfRGFzaGJvYXJkUG9ydFNpemUsIGhhdmluZyB0eXBlIFNpemVQcmVzTW9kZWxcbiAgRGFzaGJvYXJkUG9ydFNpemUgPSAnZGFzaGJvYXJkUG9ydCcsXG5cbiAgLy8gRFBJX0xlZ2VuZFNpemUsIGhhdmluZyB0eXBlIFNpemVQcmVzTW9kZWxcbiAgTGVnZW5kU2l6ZSA9ICdsZWdlbmRTaXplJyxcblxuICAvLyBEUElfU3RvcnlQb3J0U2l6ZSwgaGF2aW5nIHR5cGUgU2l6ZVByZXNNb2RlbFxuICBTdG9yeVBvcnRTaXplID0gJ3N0b3J5UG9ydCcsXG5cbiAgLy8gRFBJX1N3YXRjaEFyZWFTaXplLCBoYXZpbmcgdHlwZSBTaXplUHJlc01vZGVsXG4gIFN3YXRjaEFyZWFTaXplID0gJ2FyZWFTaXplJyxcblxuICAvLyBEUElfU3dhdGNoSW1hZ2VTaXplLCBoYXZpbmcgdHlwZSBTaXplUHJlc01vZGVsXG4gIFN3YXRjaEltYWdlU2l6ZSA9ICdpbWFnZVNpemUnLFxuXG4gIC8vIERQSV9WaWV3cG9ydFNpemUsIGhhdmluZyB0eXBlIFNpemVQcmVzTW9kZWxcbiAgVmlld3BvcnRTaXplID0gJ3ZpZXdwb3J0U2l6ZScsXG5cbiAgLy8gRFBJX1dvcmtzaGVldFBvcnRTaXplLCBoYXZpbmcgdHlwZSBTaXplUHJlc01vZGVsXG4gIFdvcmtzaGVldFBvcnRTaXplID0gJ3dvcmtzaGVldFBvcnQnLFxuXG4gIC8vIERQSV9SZXNpemVFbnRpdHksIGhhdmluZyB0eXBlIFJlc2l6ZUVudGl0eVByZXNNb2RlbFxuICBSZXNpemVFbnRpdHkgPSAncmVzaXplRW50aXR5JyxcblxuICAvLyBEUElfUm93UmVzaXplcnMsIGhhdmluZyB0eXBlIFJlc2l6ZUVudGl0eVByZXNNb2RlbFtdXG4gIFJvd1Jlc2l6ZXJzID0gJ3Jvd1Jlc2l6ZXJzJyxcblxuICAvLyBEUElfQ29sUmVzaXplcnMsIGhhdmluZyB0eXBlIFJlc2l6ZUVudGl0eVByZXNNb2RlbFtdXG4gIENvbFJlc2l6ZXJzID0gJ2NvbFJlc2l6ZXJzJyxcblxuICAvLyBEUElfUmVzaXplSW5mb1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgUmVzaXplSW5mb1ByZXNNb2RlbFxuICBSZXNpemVJbmZvUHJlc01vZGVsID0gJ3Jlc2l6ZUluZm8nLFxuXG4gIC8vIERQSV9TZXJ2ZXJTaGVldCwgaGF2aW5nIHR5cGUgU2VydmVyU2hlZXRQcmVzTW9kZWxcbiAgU2VydmVyU2hlZXQgPSAnc2VydmVyU2hlZXQnLFxuXG4gIC8vIERQSV9TZXJ2ZXJTaGVldHMsIGhhdmluZyB0eXBlIFNlcnZlclNoZWV0UHJlc01vZGVsW11cbiAgU2VydmVyU2hlZXRzID0gJ3NlcnZlclNoZWV0cycsXG5cbiAgLy8gRFBJX1NoZWV0SW5mbywgaGF2aW5nIHR5cGUgU2hlZXRJbmZvUHJlc01vZGVsXG4gIFNoZWV0SW5mbyA9ICdzaGVldEluZm8nLFxuXG4gIC8vIERQSV9TaGVldHNJbmZvLCBoYXZpbmcgdHlwZSBTaGVldEluZm9QcmVzTW9kZWxbXVxuICBTaGVldHNJbmZvID0gJ3NoZWV0c0luZm8nLFxuXG4gIC8vIERQSV9TZXJ2ZXJXb3JrYm9vaywgaGF2aW5nIHR5cGUgU2VydmVyV29ya2Jvb2tQcmVzTW9kZWxcbiAgU2VydmVyV29ya2Jvb2sgPSAnc2VydmVyV29ya2Jvb2snLFxuXG4gIC8vIERQSV9QREZFeHBvcnRPcHRpb25zUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBQREZFeHBvcnRPcHRpb25zUHJlc01vZGVsXG4gIFBERkV4cG9ydE9wdGlvbnNQcmVzTW9kZWwgPSAncGRmRXhwb3J0JyxcblxuICAvLyBEUElfRXhwb3J0RmlsZVJlc3VsdFByZXNNb2RlbCwgaGF2aW5nIHR5cGUgRXhwb3J0RmlsZVJlc3VsdFByZXNNb2RlbFxuICBFeHBvcnRGaWxlUmVzdWx0UHJlc01vZGVsID0gJ3BkZlJlc3VsdCcsXG5cbiAgLy8gRFBJX1BERlNoZWV0LCBoYXZpbmcgdHlwZSBQREZTaGVldFByZXNNb2RlbFxuICBQREZTaGVldCA9ICdwZGZTaGVldCcsXG5cbiAgLy8gRFBJX1NoZWV0T3B0aW9ucywgaGF2aW5nIHR5cGUgUERGU2hlZXRQcmVzTW9kZWxbXVxuICBTaGVldE9wdGlvbnMgPSAnc2hlZXRPcHRpb25zJyxcblxuICAvLyBEUElfRXhwb3J0TGF5b3V0T3B0aW9ucywgaGF2aW5nIHR5cGUgRXhwb3J0TGF5b3V0T3B0aW9uc1ByZXNNb2RlbFxuICBFeHBvcnRMYXlvdXRPcHRpb25zID0gJ2V4cG9ydExheW91dE9wdGlvbnMnLFxuXG4gIC8vIERQSV9EYXRhQWxlcnRDb25kaXRpb25PcGVyYXRpb25UeXBlLCBoYXZpbmcgdHlwZSBEYXRhQWxlcnRDb25kaXRpb25PcGVyYXRpb25UeXBlXG4gIERhdGFBbGVydENvbmRpdGlvbk9wZXJhdGlvblR5cGUgPSAnZGF0YUFsZXJ0Q29uZGl0aW9uT3AnLFxuXG4gIC8vIERQSV9EYXRhQWxlcnREaWFsb2dQcmVzTW9kZWwsIGhhdmluZyB0eXBlIERhdGFBbGVydERpYWxvZ1ByZXNNb2RlbFxuICBEYXRhQWxlcnREaWFsb2dQcmVzTW9kZWwgPSAnZGF0YUFsZXJ0RGlhbG9nUHJlc01vZGVsJyxcblxuICAvLyBEUElfRGF0YUFsZXJ0TWVhc3VyZSwgaGF2aW5nIHR5cGUgRGF0YUFsZXJ0TWVhc3VyZVByZXNNb2RlbFxuICBEYXRhQWxlcnRNZWFzdXJlID0gJ2RhdGFBbGVydE1lYXN1cmUnLFxuXG4gIC8vIERQSV9EYXRhQWxlcnRNZWFzdXJlcywgaGF2aW5nIHR5cGUgRGF0YUFsZXJ0TWVhc3VyZVByZXNNb2RlbFtdXG4gIERhdGFBbGVydE1lYXN1cmVzID0gJ2RhdGFBbGVydE1lYXN1cmVzJyxcblxuICAvLyBEUElfRGF0YUFsZXJ0Q29uc3RhbnRDb25kaXRpb24sIGhhdmluZyB0eXBlIERhdGFBbGVydENvbnN0YW50Q29uZGl0aW9uUHJlc01vZGVsXG4gIERhdGFBbGVydENvbnN0YW50Q29uZGl0aW9uID0gJ2RhdGFBbGVydENvbnN0YW50Q29uZGl0aW9uJyxcblxuICAvLyBEUElfRGF0YUFsZXJ0RGlhbG9nTW9kZSwgaGF2aW5nIHR5cGUgRGF0YUFsZXJ0RGlhbG9nTW9kZVxuICBEYXRhQWxlcnREaWFsb2dNb2RlID0gJ2RhdGFBbGVydERpYWxvZ01vZGUnLFxuXG4gIC8vIERQSV9MaWdodHdlaWdodE1hcE9wdGlvbnMsIGhhdmluZyB0eXBlIExpZ2h0d2VpZ2h0TWFwT3B0aW9uc1ByZXNNb2RlbFxuICBMaWdodHdlaWdodE1hcE9wdGlvbnMgPSAnbGlnaHR3ZWlnaHRNYXBPcHRpb25zJyxcblxuICAvLyBEUElfRGF0YUhpZ2hsaWdodGVyLCBoYXZpbmcgdHlwZSBEYXRhSGlnaGxpZ2h0ZXJQcmVzTW9kZWxcbiAgRGF0YUhpZ2hsaWdodGVyID0gJ2RhdGFIaWdobGlnaHRlcicsXG5cbiAgLy8gRFBJX0RhdGFIaWdobGlnaHRlckl0ZW1TZXQsIGhhdmluZyB0eXBlIERhdGFIaWdobGlnaHRlckl0ZW1TZXRQcmVzTW9kZWxcbiAgRGF0YUhpZ2hsaWdodGVySXRlbVNldCA9ICdkYXRhSGlnaGxpZ2h0ZXJJdGVtU2V0JyxcblxuICAvLyBEUElfRGF0YUhpZ2hsaWdodGVySXRlbSwgaGF2aW5nIHR5cGUgRGF0YUhpZ2hsaWdodGVySXRlbVByZXNNb2RlbFxuICBEYXRhSGlnaGxpZ2h0ZXJJdGVtID0gJ2RhdGFIaWdobGlnaHRlckl0ZW0nLFxuXG4gIC8vIERQSV9EYXRhSGlnaGxpZ2h0ZXJJdGVtcywgaGF2aW5nIHR5cGUgRGF0YUhpZ2hsaWdodGVySXRlbVByZXNNb2RlbFtdXG4gIERhdGFIaWdobGlnaHRlckl0ZW1zID0gJ2RhdGFIaWdobGlnaHRlckl0ZW1zJyxcblxuICAvLyBEUElfQ2F0ZWdvcmljYWxMZWdlbmRMYXlvdXQsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsTGVnZW5kTGF5b3V0UHJlc01vZGVsXG4gIENhdGVnb3JpY2FsTGVnZW5kTGF5b3V0ID0gJ2NhdExlZ2VuZExheW91dCcsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsTGVnZW5kLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbExlZ2VuZFByZXNNb2RlbFxuICBDYXRlZ29yaWNhbExlZ2VuZCA9ICdjYXRlZ29yaWNhbExlZ2VuZCcsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsTGVnZW5kcywgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxMZWdlbmRQcmVzTW9kZWxbXVxuICBDYXRlZ29yaWNhbExlZ2VuZHMgPSAnY2F0ZWdvcmljYWxMZWdlbmRzJyxcblxuICAvLyBEUElfQ2F0ZWdvcmljYWxDb2xvckxlZ2VuZCwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxDb2xvckxlZ2VuZFByZXNNb2RlbFxuICBDYXRlZ29yaWNhbENvbG9yTGVnZW5kID0gJ2NvbG9yTGVnZW5kJyxcblxuICAvLyBEUElfQ29sb3JMZWdlbmRJdGVtLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbENvbG9yTGVnZW5kSXRlbVByZXNNb2RlbFxuICBDb2xvckxlZ2VuZEl0ZW0gPSAnY29sb3JMZWdlbmRJdGVtJyxcblxuICAvLyBEUElfQ29sb3JMZWdlbmRJdGVtcywgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxDb2xvckxlZ2VuZEl0ZW1QcmVzTW9kZWxbXVxuICBDb2xvckxlZ2VuZEl0ZW1zID0gJ2NvbG9yTGVnZW5kSXRlbXMnLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbFNoYXBlTGVnZW5kLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbFNoYXBlTGVnZW5kUHJlc01vZGVsXG4gIENhdGVnb3JpY2FsU2hhcGVMZWdlbmQgPSAnY2F0ZWdvcmljYWxTaGFwZUxlZ2VuZCcsXG5cbiAgLy8gRFBJX1NoYXBlTGVnZW5kSXRlbSwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxTaGFwZUxlZ2VuZEl0ZW1QcmVzTW9kZWxcbiAgU2hhcGVMZWdlbmRJdGVtID0gJ3NoYXBlTGVnZW5kSXRlbScsXG5cbiAgLy8gRFBJX1NoYXBlTGVnZW5kSXRlbXMsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsU2hhcGVMZWdlbmRJdGVtUHJlc01vZGVsW11cbiAgU2hhcGVMZWdlbmRJdGVtcyA9ICdzaGFwZUxlZ2VuZEl0ZW1zJyxcblxuICAvLyBEUElfQ2F0ZWdvcmljYWxIaWdobGlnaHRMZWdlbmQsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsSGlnaGxpZ2h0TGVnZW5kUHJlc01vZGVsXG4gIENhdGVnb3JpY2FsSGlnaGxpZ2h0TGVnZW5kID0gJ2NhdGVnb3JpY2FsSGlnaGxpZ2h0TGVnZW5kJyxcblxuICAvLyBEUElfSGlnaGxpZ2h0TGVnZW5kSXRlbSwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxMZWdlbmRJdGVtUHJlc01vZGVsXG4gIEhpZ2hsaWdodExlZ2VuZEl0ZW0gPSAnaGlnaGxpZ2h0TGVnZW5kSXRlbScsXG5cbiAgLy8gRFBJX0hpZ2hsaWdodExlZ2VuZEl0ZW1zLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbExlZ2VuZEl0ZW1QcmVzTW9kZWxbXVxuICBIaWdobGlnaHRMZWdlbmRJdGVtcyA9ICdoaWdobGlnaHRMZWdlbmRJdGVtcycsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsU2l6ZUxlZ2VuZCwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxTaXplTGVnZW5kUHJlc01vZGVsXG4gIENhdGVnb3JpY2FsU2l6ZUxlZ2VuZCA9ICdjYXRlZ29yaWNhbFNpemVMZWdlbmQnLFxuXG4gIC8vIERQSV9TaXplTGVnZW5kSXRlbSwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxTaXplTGVnZW5kSXRlbVByZXNNb2RlbFxuICBTaXplTGVnZW5kSXRlbSA9ICdzaXplTGVnZW5kSXRlbScsXG5cbiAgLy8gRFBJX1NpemVMZWdlbmRJdGVtcywgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxTaXplTGVnZW5kSXRlbVByZXNNb2RlbFtdXG4gIFNpemVMZWdlbmRJdGVtcyA9ICdzaXplTGVnZW5kSXRlbXMnLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbE1hcExlZ2VuZCwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxNYXBMZWdlbmRQcmVzTW9kZWxcbiAgQ2F0ZWdvcmljYWxNYXBMZWdlbmQgPSAnY2F0ZWdvcmljYWxNYXBMZWdlbmQnLFxuXG4gIC8vIERQSV9RdWFudGl0YXRpdmVDb2xvckxlZ2VuZCwgaGF2aW5nIHR5cGUgUXVhbnRpdGF0aXZlQ29sb3JMZWdlbmRQcmVzTW9kZWxcbiAgUXVhbnRpdGF0aXZlQ29sb3JMZWdlbmQgPSAncXVhbnRpdGF0aXZlQ29sb3JMZWdlbmQnLFxuXG4gIC8vIERQSV9RdWFudGl0YXRpdmVDb2xvckxlZ2VuZHMsIGhhdmluZyB0eXBlIFF1YW50aXRhdGl2ZUNvbG9yTGVnZW5kUHJlc01vZGVsW11cbiAgUXVhbnRpdGF0aXZlQ29sb3JMZWdlbmRzID0gJ3F1YW50aXRhdGl2ZUNvbG9yTGVnZW5kcycsXG5cbiAgLy8gRFBJX1F1YW50aXRhdGl2ZUxlZ2VuZExheW91dCwgaGF2aW5nIHR5cGUgUXVhbnRpdGF0aXZlTGVnZW5kTGF5b3V0UHJlc01vZGVsXG4gIFF1YW50aXRhdGl2ZUxlZ2VuZExheW91dCA9ICdxdWFudGl0YXRpdmVMZWdlbmRMYXlvdXQnLFxuXG4gIC8vIERQSV9TZXJ2ZXJSZW5kZXJlZExlZ2VuZCwgaGF2aW5nIHR5cGUgU2VydmVyUmVuZGVyZWRMZWdlbmRQcmVzTW9kZWxcbiAgU2VydmVyUmVuZGVyZWRMZWdlbmQgPSAnc2VydmVyUmVuZGVyZWRMZWdlbmQnLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbEZpbHRlciwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxGaWx0ZXJQcmVzTW9kZWxcbiAgQ2F0ZWdvcmljYWxGaWx0ZXIgPSAnY2F0ZWdvcmljYWxGaWx0ZXInLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbEZpbHRlclJlbGF0aW9uYWwsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsRmlsdGVyUmVsYXRpb25hbFByZXNNb2RlbFxuICBDYXRlZ29yaWNhbEZpbHRlclJlbGF0aW9uYWwgPSAnY2F0ZWdvcmljYWxGaWx0ZXJSZWxhdGlvbmFsJyxcblxuICAvLyBEUElfQ2F0ZWdvcmljYWxGaWx0ZXJNZW1iZXJEb21haW5QYWdlLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbEZpbHRlck1lbWJlckRvbWFpblBhZ2VQcmVzTW9kZWxcbiAgQ2F0ZWdvcmljYWxGaWx0ZXJNZW1iZXJEb21haW5QYWdlID0gJ2NhdGVnb3JpY2FsRmlsdGVyTWVtYmVyRG9tYWluUGFnZScsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsRmlsdGVyQ2FjaGVJbmZvLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbEZpbHRlckNhY2hlSW5mb1ByZXNNb2RlbFxuICBDYXRlZ29yaWNhbEZpbHRlckNhY2hlSW5mbyA9ICdjYXRlZ29yaWNhbEZpbHRlckNhY2hlSW5mbycsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsRmlsdGVyUGF0dGVybkRpc3BsYXksIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsRmlsdGVyUGF0dGVybkRpc3BsYXlQcmVzTW9kZWxcbiAgQ2F0ZWdvcmljYWxGaWx0ZXJQYXR0ZXJuRGlzcGxheSA9ICdjYXRlZ29yaWNhbEZpbHRlclBhdHRlcm5EaXNwbGF5JyxcblxuICAvLyBEUElfQ2F0ZWdvcmljYWxGaWx0ZXJQYXR0ZXJuVXBkYXRlLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbEZpbHRlclBhdHRlcm5VcGRhdGVQcmVzTW9kZWxcbiAgQ2F0ZWdvcmljYWxGaWx0ZXJQYXR0ZXJuVXBkYXRlID0gJ2NhdGVnb3JpY2FsRmlsdGVyUGF0dGVyblVwZGF0ZScsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsRmlsdGVyQ29uZGl0aW9uRGlzcGxheSwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxGaWx0ZXJDb25kaXRpb25EaXNwbGF5UHJlc01vZGVsXG4gIENhdGVnb3JpY2FsRmlsdGVyQ29uZGl0aW9uRGlzcGxheSA9ICdjYXRlZ29yaWNhbEZpbHRlckNvbmRpdGlvbkRpc3BsYXknLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbEZpbHRlckNvbmRpdGlvblVwZGF0ZSwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxGaWx0ZXJDb25kaXRpb25VcGRhdGVQcmVzTW9kZWxcbiAgQ2F0ZWdvcmljYWxGaWx0ZXJDb25kaXRpb25VcGRhdGUgPSAnY2F0ZWdvcmljYWxGaWx0ZXJDb25kaXRpb25VcGRhdGUnLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbEZpbHRlckxpbWl0RGlzcGxheSwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxGaWx0ZXJMaW1pdERpc3BsYXlQcmVzTW9kZWxcbiAgQ2F0ZWdvcmljYWxGaWx0ZXJMaW1pdERpc3BsYXkgPSAnY2F0ZWdvcmljYWxGaWx0ZXJMaW1pdERpc3BsYXknLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbEZpbHRlckxpbWl0VXBkYXRlLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbEZpbHRlckxpbWl0VXBkYXRlUHJlc01vZGVsXG4gIENhdGVnb3JpY2FsRmlsdGVyTGltaXRVcGRhdGUgPSAnY2F0ZWdvcmljYWxGaWx0ZXJMaW1pdFVwZGF0ZScsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsRmlsdGVyTmV3LCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbEZpbHRlcl9OZXdQcmVzTW9kZWxcbiAgQ2F0ZWdvcmljYWxGaWx0ZXJOZXcgPSAnY2F0ZWdvcmljYWxGaWx0ZXJOZXcnLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbEZpbHRlckhpZXJhcmNoeSwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxGaWx0ZXJIaWVyYXJjaHlQcmVzTW9kZWxcbiAgQ2F0ZWdvcmljYWxGaWx0ZXJIaWVyYXJjaHkgPSAnY2F0ZWdvcmljYWxGaWx0ZXJIaXJlcmFyY2h5JyxcblxuICAvLyBEUElfQ2F0ZWdvcmljYWxGaWx0ZXJVcGRhdGUsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsRmlsdGVyVXBkYXRlUHJlc01vZGVsXG4gIENhdGVnb3JpY2FsRmlsdGVyVXBkYXRlID0gJ2NhdGVnb3JpY2FsRmlsdGVyVXBkYXRlJyxcblxuICAvLyBEUElfQ2F0ZWdvcmljYWxGaWx0ZXJSZWxhdGlvbmFsU3RhdGUsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsRmlsdGVyUmVsYXRpb25hbFN0YXRlUHJlc01vZGVsXG4gIENhdGVnb3JpY2FsRmlsdGVyUmVsYXRpb25hbFN0YXRlID0gJ2NhdGVnb3JpY2FsUmVsYXRpb25hbFN0YXRlJyxcblxuICAvLyBEUElfQ2F0ZWdvcmljYWxGaWx0ZXJSZWxhdGlvbmFsVXBkYXRlZFN0YXRlLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbEZpbHRlclJlbGF0aW9uYWxTdGF0ZVByZXNNb2RlbFxuICBDYXRlZ29yaWNhbEZpbHRlclJlbGF0aW9uYWxVcGRhdGVkU3RhdGUgPSAnY2F0ZWdvcmljYWxSZWxhdGlvbmFsVXBkYXRlZFN0YXRlJyxcblxuICAvLyBEUElfQ2F0ZWdvcmljYWxGaWx0ZXJSZWxhdGlvbmFsRG9tYWluSW5mbywgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxGaWx0ZXJSZWxhdGlvbmFsRG9tYWluSW5mb1ByZXNNb2RlbFxuICBDYXRlZ29yaWNhbEZpbHRlclJlbGF0aW9uYWxEb21haW5JbmZvID0gJ2NhdGVnb3JpY2FsRmlsdGVyUmVsYXRpb25hbERvbWFpbkluZm8nLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbEZpbHRlclJlbGF0aW9uYWxEaXNwbGF5LCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbEZpbHRlclJlbGF0aW9uYWxEaXNwbGF5UHJlc01vZGVsXG4gIENhdGVnb3JpY2FsRmlsdGVyUmVsYXRpb25hbERpc3BsYXkgPSAnY2F0ZWdvcmljYWxGaWx0ZXJSZWxhdGlvbmFsRGlzcGxheScsXG5cbiAgLy8gRFBJX0V4cHJlc3Npb25Ub2tlbiwgaGF2aW5nIHR5cGUgRXhwcmVzc2lvblRva2VuUHJlc01vZGVsXG4gIEV4cHJlc3Npb25Ub2tlbiA9ICdleHByZXNzaW9uVG9rZW4nLFxuXG4gIC8vIERQSV9FeHByZXNzaW9uVG9rZW5zLCBoYXZpbmcgdHlwZSBFeHByZXNzaW9uVG9rZW5QcmVzTW9kZWxbXVxuICBFeHByZXNzaW9uVG9rZW5zID0gJ2V4cHJlc3Npb25Ub2tlbnMnLFxuXG4gIC8vIERQSV9Gb3JtdWxhVmFsaWRhdGlvbiwgaGF2aW5nIHR5cGUgRm9ybXVsYVZhbGlkYXRpb25QcmVzTW9kZWxcbiAgRm9ybXVsYVZhbGlkYXRpb24gPSAnZm9ybXVsYVZhbGlkYXRpb24nLFxuXG4gIC8vIERQSV9DYXB0aW9uZWRGaWx0ZXJWYWx1ZSwgaGF2aW5nIHR5cGUgRmlsdGVyVmFsdWVQcmVzTW9kZWxcbiAgQ2FwdGlvbmVkRmlsdGVyVmFsdWUgPSAnY2FwdGlvbmVkRmlsdGVyVmFsdWUnLFxuXG4gIC8vIERQSV9DYXB0aW9uZWRSYW5nZU1pbiwgaGF2aW5nIHR5cGUgRmlsdGVyVmFsdWVQcmVzTW9kZWxcbiAgQ2FwdGlvbmVkUmFuZ2VNaW4gPSAnY2FwdGlvbmVkUmFuZ2VNaW4nLFxuXG4gIC8vIERQSV9DYXB0aW9uZWRSYW5nZU1heCwgaGF2aW5nIHR5cGUgRmlsdGVyVmFsdWVQcmVzTW9kZWxcbiAgQ2FwdGlvbmVkUmFuZ2VNYXggPSAnY2FwdGlvbmVkUmFuZ2VNYXgnLFxuXG4gIC8vIERQSV9DYXB0aW9uZWRBbmNob3JEYXRlLCBoYXZpbmcgdHlwZSBGaWx0ZXJWYWx1ZVByZXNNb2RlbFxuICBDYXB0aW9uZWRBbmNob3JEYXRlID0gJ2NhcHRpb25lZEFuY2hvckRhdGUnLFxuXG4gIC8vIERQSV9DYXB0aW9uZWRGaWx0ZXJWYWx1ZUxpc3QsIGhhdmluZyB0eXBlIEZpbHRlclZhbHVlUHJlc01vZGVsW11cbiAgQ2FwdGlvbmVkRmlsdGVyVmFsdWVMaXN0ID0gJ2NhcHRpb25lZEZpbHRlclZhbHVlTGlzdCcsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsRmlsdGVySW5mbywgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxGaWx0ZXJJbmZvUHJlc01vZGVsXG4gIENhdGVnb3JpY2FsRmlsdGVySW5mbyA9ICdjYXRlZ29yaWNhbEZpbHRlckluZm8nLFxuXG4gIC8vIERQSV9RdWFudGl0YXRpdmVGaWx0ZXJJbmZvLCBoYXZpbmcgdHlwZSBRdWFudGl0YXRpdmVGaWx0ZXJJbmZvUHJlc01vZGVsXG4gIFF1YW50aXRhdGl2ZUZpbHRlckluZm8gPSAncXVhbnRpdGF0aXZlRmlsdGVySW5mbycsXG5cbiAgLy8gRFBJX1JlbGF0aXZlRGF0ZUZpbHRlckluZm8sIGhhdmluZyB0eXBlIFJlbGF0aXZlRGF0ZUZpbHRlckluZm9QcmVzTW9kZWxcbiAgUmVsYXRpdmVEYXRlRmlsdGVySW5mbyA9ICdyZWxhdGl2ZURhdGVGaWx0ZXJJbmZvJyxcblxuICAvLyBEUElfRmlsdGVySW5mbywgaGF2aW5nIHR5cGUgRmlsdGVySW5mb1ByZXNNb2RlbFxuICBGaWx0ZXJJbmZvID0gJ2ZpbHRlckluZm8nLFxuXG4gIC8vIERQSV9GaWx0ZXJzSW5mbywgaGF2aW5nIHR5cGUgRmlsdGVySW5mb3JQcmVzTW9kZWxbXVxuICBGaWx0ZXJzSW5mbyA9ICdmaWx0ZXJzSW5mbycsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsRG9tYWluLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbERvbWFpblByZXNNb2RlbFxuICBDYXRlZ29yaWNhbERvbWFpbiA9ICdjYXRlZ29yaWNhbERvbWFpbicsXG5cbiAgLy8gRFBJX1F1YW50aXRhdGl2ZURvbWFpbiwgaGF2aW5nIHR5cGUgUXVhbnRpdGF0aXZlRG9tYWluUHJlc01vZGVsXG4gIFF1YW50aXRhdGl2ZURvbWFpbiA9ICdxdWFudGl0YXRpdmVEb21haW4nLFxuXG4gIC8vIERQSV9WYWxpZGF0aW9uUmVzdWx0cywgaGF2aW5nIHR5cGUgVmFsaWRhdGlvblJlc3VsdHNQcmVzTW9kZWxcbiAgVmFsaWRhdGlvblJlc3VsdHMgPSAndmFsaWRhdGlvblJlc3VsdHMnLFxuXG4gIC8vIERQSV9Eb21haW5NZW1iZXIsIGhhdmluZyB0eXBlIERvbWFpbk1lbWJlclByZXNNb2RlbFxuICBEb21haW5NZW1iZXIgPSAnZG9tYWluTWVtYmVyJyxcblxuICAvLyBEUElfRG9tYWluTWVtYmVycywgaGF2aW5nIHR5cGUgRG9tYWluTWVtYmVyUHJlc01vZGVsW11cbiAgRG9tYWluTWVtYmVycyA9ICdkb21haW5NZW1iZXJzJyxcblxuICAvLyBEUElfUXVpY2tGaWx0ZXJEaXNwbGF5LCBoYXZpbmcgdHlwZSBRdWlja0ZpbHRlckRpc3BsYXlQcmVzTW9kZWxcbiAgUXVpY2tGaWx0ZXJEaXNwbGF5ID0gJ3F1aWNrRmlsdGVyRGlzcGxheScsXG5cbiAgLy8gRFBJX1F1aWNrRmlsdGVyLCBoYXZpbmcgdHlwZSBRdWlja0ZpbHRlclByZXNNb2RlbFxuICBRdWlja0ZpbHRlciA9ICdxdWlja0ZpbHRlcicsXG5cbiAgLy8gRFBJX1F1YW50aXRhdGl2ZVF1aWNrRmlsdGVyLCBoYXZpbmcgdHlwZSBRdWFudGl0YXRpdmVRdWlja0ZpbHRlclByZXNNb2RlbFxuICBRdWFudGl0YXRpdmVRdWlja0ZpbHRlciA9ICdxdWFudGl0YXRpdmVRdWlja0ZpbHRlcicsXG5cbiAgLy8gRFBJX1JlbGF0aXZlRGF0ZVF1aWNrRmlsdGVyLCBoYXZpbmcgdHlwZSBSZWxhdGl2ZURhdGVRdWlja0ZpbHRlclByZXNNb2RlbFxuICBSZWxhdGl2ZURhdGVRdWlja0ZpbHRlciA9ICdyZWxhdGl2ZURhdGVRdWlja0ZpbHRlcicsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsUXVpY2tGaWx0ZXIsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsUXVpY2tGaWx0ZXJQcmVzTW9kZWxcbiAgQ2F0ZWdvcmljYWxRdWlja0ZpbHRlciA9ICdjYXRlZ29yaWNhbFF1aWNrRmlsdGVyJyxcblxuICAvLyBEUElfSGllcmFyY2hpY2FsUXVpY2tGaWx0ZXIsIGhhdmluZyB0eXBlIEhpZXJhcmNoaWNhbFF1aWNrRmlsdGVyUHJlc01vZGVsXG4gIEhpZXJhcmNoaWNhbFF1aWNrRmlsdGVyID0gJ2hpZXJhcmNoaWNhbFF1aWNrRmlsdGVyJyxcblxuICAvLyBEUElfRG9tYWluVGFibGUsIGhhdmluZyB0eXBlIERvbWFpblRhYmxlUHJlc01vZGVsXG4gIERvbWFpblRhYmxlID0gJ2RvbWFpblRhYmxlJyxcblxuICAvLyBEUElfRG9tYWluVGFibGVzLCBoYXZpbmcgdHlwZSBEb21haW5UYWJsZVByZXNNb2RlbFtdXG4gIERvbWFpblRhYmxlcyA9ICdkb21haW5UYWJsZXMnLFxuXG4gIC8vIERQSV9Eb21haW5UdXBsZXMsIGhhdmluZyB0eXBlIFR1cGxlc1xuICBEb21haW5UdXBsZXMgPSAnZG9tYWluVHVwbGVzJyxcblxuICAvLyBEUElfU2VhcmNoVHVwbGVzLCBoYXZpbmcgdHlwZSBUdXBsZXNcbiAgU2VhcmNoVHVwbGVzID0gJ3NlYXJjaFR1cGxlcycsXG5cbiAgLy8gRFBJX1NlbGVjdGVkVHVwbGVzLCBoYXZpbmcgdHlwZSBUdXBsZUhhc2hcbiAgU2VsZWN0ZWRUdXBsZXMgPSAnc2VsZWN0ZWRUdXBsZXMnLFxuXG4gIC8vIERQSV9QZW5kaW5nVHVwbGVzLCBoYXZpbmcgdHlwZSBUdXBsZUhhc2hcbiAgUGVuZGluZ1R1cGxlcyA9ICdwZW5kaW5nVHVwbGVzJyxcblxuICAvLyBEUElfRG9tYWluLCBoYXZpbmcgdHlwZSBNdWx0aURvbWFpblxuICBEb21haW4gPSAnZG9tYWluJyxcblxuICAvLyBEUElfRGF0ZU9wdGlvbiwgaGF2aW5nIHR5cGUgRGF0ZUJpbkRpYWxvZ09wdGlvblByZXNNb2RlbFxuICBEYXRlT3B0aW9uID0gJ2RhdGVPcHRpb24nLFxuXG4gIC8vIERQSV9EYXRlT3B0aW9ucywgaGF2aW5nIHR5cGUgRGF0ZUJpbkRpYWxvZ09wdGlvblByZXNNb2RlbFtdXG4gIERhdGVPcHRpb25zID0gJ2RhdGVPcHRpb25zJyxcblxuICAvLyBEUElfRmlsdGVyUmFuZ2VBZGQsIGhhdmluZyB0eXBlIEZpbHRlclJhbmdlUHJlc01vZGVsXG4gIEZpbHRlclJhbmdlQWRkID0gJ2ZpbHRlclJhbmdlQWRkJyxcblxuICAvLyBEUElfRmlsdGVyUmFuZ2VSZW1vdmUsIGhhdmluZyB0eXBlIEZpbHRlclJhbmdlUHJlc01vZGVsXG4gIEZpbHRlclJhbmdlUmVtb3ZlID0gJ2ZpbHRlclJhbmdlUmVtb3ZlJyxcblxuICAvLyBEUElfRmlsdGVyT3B0aW9ucywgaGF2aW5nIHR5cGUgRmlsdGVyT3B0aW9uc1ByZXNNb2RlbFxuICBGaWx0ZXJPcHRpb25zID0gJ2ZpbHRlck9wdGlvbnMnLFxuXG4gIC8vIERQSV9MYXllciwgaGF2aW5nIHR5cGUgTGF5ZXJQcmVzTW9kZWxcbiAgTGF5ZXIgPSAnbGF5ZXInLFxuXG4gIC8vIERQSV9MYXllcnMsIGhhdmluZyB0eXBlIExheWVyUHJlc01vZGVsW11cbiAgTGF5ZXJzID0gJ2xheWVycycsXG5cbiAgLy8gRFBJX01hcmtzQ2FyZFByZXNNb2RlbCwgaGF2aW5nIHR5cGUgTWFya3NDYXJkUHJlc01vZGVsXG4gIE1hcmtzQ2FyZFByZXNNb2RlbCA9ICdtYXJrc0NhcmRQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9VSUl0ZW0sIGhhdmluZyB0eXBlIFVJSXRlbVByZXNNb2RlbFxuICBVSUl0ZW0gPSAndWlJdGVtJyxcblxuICAvLyBEUElfRW5jb2RpbmdVSUl0ZW0sIGhhdmluZyB0eXBlIEVuY29kaW5nVUlJdGVtUHJlc01vZGVsXG4gIEVuY29kaW5nVUlJdGVtID0gJ2VuY29kaW5nVWlJdGVtJyxcblxuICAvLyBEUElfRW5jb2RpbmdVSUl0ZW1zLCBoYXZpbmcgdHlwZSBFbmNvZGluZ1VJSXRlbVByZXNNb2RlbFtdXG4gIEVuY29kaW5nVUlJdGVtcyA9ICdlbmNvZGluZ1VpSXRlbXMnLFxuXG4gIC8vIERQSV9QcmltVHlwZVVJSXRlbSwgaGF2aW5nIHR5cGUgUHJpbWl0aXZlVHlwZVVJSXRlbVByZXNNb2RlbFxuICBQcmltVHlwZVVJSXRlbSA9ICdwcmltaXRpdmVUeXBlVWlJdGVtJyxcblxuICAvLyBEUElfUHJpbVR5cGVVSUl0ZW1zLCBoYXZpbmcgdHlwZSBQcmltaXRpdmVUeXBlVUlJdGVtUHJlc01vZGVsW11cbiAgUHJpbVR5cGVVSUl0ZW1zID0gJ3ByaW1pdGl2ZVR5cGVVaUl0ZW1zJyxcblxuICAvLyBEUElfUHJpbWl0aXZlVHlwZVVJSXRlbU9wdGlvbnMsIGhhdmluZyB0eXBlIFByaW1pdGl2ZVR5cGVVSUl0ZW1PcHRpb25zUHJlc01vZGVsXG4gIFByaW1pdGl2ZVR5cGVVSUl0ZW1PcHRpb25zID0gJ3ByaW1pdGl2ZVR5cGVVaUl0ZW1PcHRpb25zJyxcblxuICAvLyBEUElfTGluZVVJSXRlbU9wdGlvbnMsIGhhdmluZyB0eXBlIExpbmVVSUl0ZW1PcHRpb25zUHJlc01vZGVsXG4gIExpbmVVSUl0ZW1PcHRpb25zID0gJ2xpbmVVaUl0ZW1PcHRpb25zJyxcblxuICAvLyBEUElfTGluZUludGVycG9sYXRpb25Nb2RlVUlJdGVtLCBoYXZpbmcgdHlwZSBMaW5lSW50ZXJwb2xhdGlvbk1vZGVVSUl0ZW1QcmVzTW9kZWxcbiAgTGluZUludGVycG9sYXRpb25Nb2RlVUlJdGVtID0gJ2xpbmVJbnRlcnBvbGF0aW9uTW9kZVVpSXRlbScsXG5cbiAgLy8gRFBJX0xpbmVJbnRlcnBvbGF0aW9uTW9kZVVJSXRlbVNldCwgaGF2aW5nIHR5cGUgTGluZUludGVycG9sYXRpb25Nb2RlVUlJdGVtUHJlc01vZGVsW11cbiAgTGluZUludGVycG9sYXRpb25Nb2RlVUlJdGVtU2V0ID0gJ2xpbmVJbnRlcnBvbGF0aW9uTW9kZVVpSXRlbVNldCcsXG5cbiAgLy8gRFBJX0xpbmVNYXJrZXJQb3NpdGlvblVJSXRlbSwgaGF2aW5nIHR5cGUgTGluZU1hcmtlclBvc2l0aW9uVUlJdGVtUHJlc01vZGVsXG4gIExpbmVNYXJrZXJQb3NpdGlvblVJSXRlbSA9ICdsaW5lTWFya2VyUG9zaXRpb25VaUl0ZW0nLFxuXG4gIC8vIERQSV9MaW5lTWFya2VyUG9zaXRpb25VSUl0ZW1TZXQsIGhhdmluZyB0eXBlIExpbmVNYXJrZXJQb3NpdGlvblVJSXRlbVByZXNNb2RlbFtdXG4gIExpbmVNYXJrZXJQb3NpdGlvblVJSXRlbVNldCA9ICdsaW5lTWFya2VyUG9zaXRpb25VaUl0ZW1TZXQnLFxuXG4gIC8vIERQSV9NYXJrc0NhcmREcm9wZG93bkl0ZW0sIGhhdmluZyB0eXBlIE1hcmtzQ2FyZERyb3Bkb3duSXRlbVByZXNNb2RlbFxuICBNYXJrc0NhcmREcm9wZG93bkl0ZW0gPSAnbWFya3NDYXJkRHJvcGRvd25JdGVtJyxcblxuICAvLyBEUElfVG9vbHRpcERyb3Bkb3duSXRlbSwgaGF2aW5nIHR5cGUgVG9vbHRpcERyb3Bkb3duSXRlbVByZXNNb2RlbFxuICBUb29sdGlwRHJvcGRvd25JdGVtID0gJ3Rvb2x0aXBEcm9wZG93bkl0ZW0nLFxuXG4gIC8vIERQSV9UZXh0RHJvcGRvd25JdGVtLCBoYXZpbmcgdHlwZSBUZXh0RHJvcGRvd25JdGVtUHJlc01vZGVsXG4gIFRleHREcm9wZG93bkl0ZW0gPSAndGV4dERyb3Bkb3duSXRlbScsXG5cbiAgLy8gRFBJX0NvbG9yRHJvcGRvd25JdGVtLCBoYXZpbmcgdHlwZSBDb2xvckRyb3Bkb3duSXRlbVByZXNNb2RlbFxuICBDb2xvckRyb3Bkb3duSXRlbSA9ICdjb2xvckRyb3Bkb3duSXRlbScsXG5cbiAgLy8gRFBJX1NpemVTbGlkZXJQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFNpemVTbGlkZXJQcmVzTW9kZWxcbiAgU2l6ZVNsaWRlclByZXNNb2RlbCA9ICdzaXplU2xpZGVyUHJlc01vZGVsJyxcblxuICAvLyBEUElfSW5mbGVjdGlvblBvaW50LCBoYXZpbmcgdHlwZSBJbmZsZWN0aW9uUG9pbnRQcmVzTW9kZWxcbiAgSW5mbGVjdGlvblBvaW50ID0gJ2luZmxlY3Rpb25Qb2ludCcsXG5cbiAgLy8gRFBJX0luZmxlY3Rpb25Qb2ludHMsIGhhdmluZyB0eXBlIEluZmxlY3Rpb25Qb2ludFByZXNNb2RlbFtdXG4gIEluZmxlY3Rpb25Qb2ludHMgPSAnaW5mbGVjdGlvblBvaW50cycsXG5cbiAgLy8gRFBJX05vdGNoLCBoYXZpbmcgdHlwZSBOb3RjaFByZXNNb2RlbFxuICBOb3RjaCA9ICdub3RjaCcsXG5cbiAgLy8gRFBJX05vdGNoZXMsIGhhdmluZyB0eXBlIE5vdGNoUHJlc01vZGVsW11cbiAgTm90Y2hlcyA9ICdub3RjaGVzJyxcblxuICAvLyBEUElfTWFya1NpemVPcHRpb25zUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBNYXJrU2l6ZU9wdGlvbnNQcmVzTW9kZWxcbiAgTWFya1NpemVPcHRpb25zUHJlc01vZGVsID0gJ21hcmtTaXplT3B0aW9uc1ByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX01vZGlmeU1hcmtzSW5TZXQsIGhhdmluZyB0eXBlIEFkZE9yUmVtb3ZlTWFya3NcbiAgTW9kaWZ5TWFya3NJblNldCA9ICdhZGRPclJlbW92ZU1hcmtzJyxcblxuICAvLyBEUElfTWFya0xhYmVsc1NwZWNpZmljYXRpb24sIGhhdmluZyB0eXBlIE1hcmtMYWJlbHNTcGVjaWZpY2F0aW9uUHJlc01vZGVsXG4gIE1hcmtMYWJlbHNTcGVjaWZpY2F0aW9uID0gJ21hcmtMYWJlbHNTcGVjaWZpY2F0aW9uJyxcblxuICAvLyBEUElfQ29sb3JQYWxldHRlLCBoYXZpbmcgdHlwZSBDb2xvclBhbGV0dGVQcmVzTW9kZWxcbiAgQ29sb3JQYWxldHRlID0gJ2NvbG9yUGFsZXR0ZScsXG5cbiAgLy8gRFBJX1NlbGVjdGVkQ29sb3JQYWxldHRlLCBoYXZpbmcgdHlwZSBDb2xvclBhbGV0dGVQcmVzTW9kZWxcbiAgU2VsZWN0ZWRDb2xvclBhbGV0dGUgPSAnc2VsZWN0ZWRDb2xvclBhbGV0dGUnLFxuXG4gIC8vIERQSV9Db2xvclBhbGV0dGVzLCBoYXZpbmcgdHlwZSBDb2xvclBhbGV0dGVQcmVzTW9kZWxbXVxuICBDb2xvclBhbGV0dGVzID0gJ2NvbG9yUGFsZXR0ZXMnLFxuXG4gIC8vIERQSV9Db2xvclBhbGV0dGVHcm91cCwgaGF2aW5nIHR5cGUgQ29sb3JQYWxldHRlR3JvdXBQcmVzTW9kZWxcbiAgQ29sb3JQYWxldHRlR3JvdXAgPSAnY29sb3JQYWxldHRlR3JvdXAnLFxuXG4gIC8vIERQSV9DYXRDb2xvclBhbGV0dGVHcm91cHMsIGhhdmluZyB0eXBlIENvbG9yUGFsZXR0ZUdyb3VwUHJlc01vZGVsW11cbiAgQ2F0Q29sb3JQYWxldHRlR3JvdXBzID0gJ2NhdENvbG9yUGFsZXR0ZUdyb3VwcycsXG5cbiAgLy8gRFBJX1FDb2xvclBhbGV0dGVHcm91cHMsIGhhdmluZyB0eXBlIENvbG9yUGFsZXR0ZUdyb3VwUHJlc01vZGVsW11cbiAgUUNvbG9yUGFsZXR0ZUdyb3VwcyA9ICdxQ29sb3JQYWxldHRlR3JvdXBzJyxcblxuICAvLyBEUElfQ29sb3JQYWxldHRlQ29sbGVjdGlvbiwgaGF2aW5nIHR5cGUgQ29sb3JQYWxldHRlQ29sbGVjdGlvblByZXNNb2RlbFxuICBDb2xvclBhbGV0dGVDb2xsZWN0aW9uID0gJ2NvbG9yUGFsZXR0ZUNvbGxlY3Rpb24nLFxuXG4gIC8vIERQSV9RdWFudGl0YXRpdmVDb2xvciwgaGF2aW5nIHR5cGUgUXVhbnRpdGF0aXZlQ29sb3JQcmVzTW9kZWxcbiAgUXVhbnRpdGF0aXZlQ29sb3IgPSAncXVhbnRpdGF0aXZlQ29sb3InLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbENvbG9yLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbENvbG9yUHJlc01vZGVsXG4gIENhdGVnb3JpY2FsQ29sb3IgPSAnY2F0ZWdvcmljYWxDb2xvcicsXG5cbiAgLy8gRFBJX0l0ZW1Db2xvclBhaXIsIGhhdmluZyB0eXBlIEl0ZW1Db2xvclBhaXJQcmVzTW9kZWxcbiAgSXRlbUNvbG9yUGFpciA9ICdpdGVtQ29sb3JQYWlyJyxcblxuICAvLyBEUElfSXRlbUNvbG9yUGFpcnMsIGhhdmluZyB0eXBlIEl0ZW1Db2xvclBhaXJQcmVzTW9kZWxbXVxuICBJdGVtQ29sb3JQYWlycyA9ICdpdGVtQ29sb3JQYWlycycsXG5cbiAgLy8gRFBJX1ZRTENvbW1hbmRSZXNwb25zZSwgaGF2aW5nIHR5cGUgVlFMQ29tbWFuZFJlc3BvbnNlUHJlc01vZGVsXG4gIFZRTENvbW1hbmRSZXNwb25zZSA9ICd2cWxDbWRSZXNwb25zZScsXG5cbiAgLy8gRFBJX0xheW91dFN0YXR1cywgaGF2aW5nIHR5cGUgTGF5b3V0U3RhdHVzUHJlc01vZGVsXG4gIExheW91dFN0YXR1cyA9ICdsYXlvdXRTdGF0dXMnLFxuXG4gIC8vIERQSV9WaXpTdGF0ZSwgaGF2aW5nIHR5cGUgVml6U3RhdGVQcmVzTW9kZWxcbiAgVml6U3RhdGUgPSAndml6U3RhdGUnLFxuXG4gIC8vIERQSV9WaXpTdGF0ZUxpc3QsIGhhdmluZyB0eXBlIFZpelN0YXRlUHJlc01vZGVsW11cbiAgVml6U3RhdGVMaXN0ID0gJ3ZpelN0YXRlTGlzdCcsXG5cbiAgLy8gRFBJX0NvbW1hbmRSZXN1bHQsIGhhdmluZyB0eXBlIENvbW1hbmRSZXN1bHRQcmVzTW9kZWxcbiAgQ29tbWFuZFJlc3VsdCA9ICdjbWRSZXN1bHQnLFxuXG4gIC8vIERQSV9Db21tYW5kUmVzdWx0TGlzdCwgaGF2aW5nIHR5cGUgQ29tbWFuZFJlc3VsdFByZXNNb2RlbFtdXG4gIENvbW1hbmRSZXN1bHRMaXN0ID0gJ2NtZFJlc3VsdExpc3QnLFxuXG4gIC8vIERQSV9VUkxBY3Rpb24sIGhhdmluZyB0eXBlIFVSTEFjdGlvblByZXNNb2RlbFxuICBVUkxBY3Rpb24gPSAndXJsQWN0aW9uJyxcblxuICAvLyBEUElfVVJMQWN0aW9uTGlzdCwgaGF2aW5nIHR5cGUgVVJMQWN0aW9uUHJlc01vZGVsW11cbiAgVVJMQWN0aW9uTGlzdCA9ICd1cmxBY3Rpb25MaXN0JyxcblxuICAvLyBEUElfTGVnYWN5TWVudSwgaGF2aW5nIHR5cGUgTGVnYWN5TWVudVByZXNNb2RlbFxuICBMZWdhY3lNZW51ID0gJ2xlZ2FjeU1lbnUnLFxuXG4gIC8vIERQSV9MZWdhY3lNZW51cywgaGF2aW5nIHR5cGUgTGVnYWN5TWVudVByZXNNb2RlbFtdXG4gIExlZ2FjeU1lbnVzID0gJ2xlZ2FjeU1lbnVzJyxcblxuICAvLyBEUElfQ29ubmVjdGlvbkF0dGVtcHRJbmZvLCBoYXZpbmcgdHlwZSBDb25uZWN0aW9uQXR0ZW1wdEluZm9QcmVzTW9kZWxcbiAgQ29ubmVjdGlvbkF0dGVtcHRJbmZvID0gJ2Nvbm5lY3Rpb25BdHRlbXB0SW5mbycsXG5cbiAgLy8gRFBJX0RhdGFTb3VyY2VDb25uZWN0aW9uQXR0ZW1wdEluZm8sIGhhdmluZyB0eXBlIERhdGFTb3VyY2VDb25uZWN0aW9uQXR0ZW1wdEluZm9QcmVzTW9kZWxcbiAgRGF0YVNvdXJjZUNvbm5lY3Rpb25BdHRlbXB0SW5mbyA9ICdkYXRhU291cmNlQ29ubmVjdGlvbkF0dGVtcHRJbmZvJyxcblxuICAvLyBEUElfRGF0YVNvdXJjZUNvbm5lY3Rpb25BdHRlbXB0SW5mb3MsIGhhdmluZyB0eXBlIERhdGFTb3VyY2VDb25uZWN0aW9uQXR0ZW1wdEluZm9QcmVzTW9kZWxbXVxuICBEYXRhU291cmNlQ29ubmVjdGlvbkF0dGVtcHRJbmZvcyA9ICdkYXRhU291cmNlQ29ubmVjdGlvbkF0dGVtcHRJbmZvcycsXG5cbiAgLy8gRFBJX0NvbW1hbmRWYWxpZGF0aW9uUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBDb21tYW5kVmFsaWRhdGlvblByZXNNb2RlbFxuICBDb21tYW5kVmFsaWRhdGlvblByZXNNb2RlbCA9ICdjb21tYW5kVmFsaWRhdGlvblByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1dhcm5pbmdNZXNzYWdlLCBoYXZpbmcgdHlwZSBXYXJuaW5nTWVzc2FnZVByZXNNb2RlbFxuICBXYXJuaW5nTWVzc2FnZSA9ICd3YXJuaW5nTWVzc2FnZVByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX0FwcGxpY2F0aW9uUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBBcHBsaWNhdGlvblByZXNNb2RlbFxuICBBcHBsaWNhdGlvblByZXNNb2RlbCA9ICdhcHBsaWNhdGlvblByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1Rvb2xiYXJQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFRvb2xiYXJQcmVzTW9kZWxcbiAgVG9vbGJhclByZXNNb2RlbCA9ICd0b29sYmFyUHJlc01vZGVsJyxcblxuICAvLyBEUElfV29ya2Jvb2tQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFdvcmtib29rUHJlc01vZGVsXG4gIFdvcmtib29rUHJlc01vZGVsID0gJ3dvcmtib29rUHJlc01vZGVsJyxcblxuICAvLyBEUElfU2VydmVyRm9udHMsIGhhdmluZyB0eXBlIFNlcnZlckZvbnRzUHJlc01vZGVsXG4gIFNlcnZlckZvbnRzID0gJ3NlcnZlckZvbnRzJyxcblxuICAvLyBEUElfUHVibGlzaERhdGFTb3VyY2VNZXRhZGF0YVByZXNNb2RlbCwgaGF2aW5nIHR5cGUgUHVibGlzaERhdGFTb3VyY2VNZXRhZGF0YVByZXNNb2RlbFxuICBQdWJsaXNoRGF0YVNvdXJjZU1ldGFkYXRhUHJlc01vZGVsID0gJ3B1Ymxpc2hEYXRhU291cmNlTWV0YWRhdGFQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9EYXNoYm9hcmRQcmVzTW9kZWwsIGhhdmluZyB0eXBlIERhc2hib2FyZFByZXNNb2RlbFxuICBEYXNoYm9hcmRQcmVzTW9kZWwgPSAnZGFzaGJvYXJkUHJlc01vZGVsJyxcblxuICAvLyBEUElfRGFzaGJvYXJkU2l6ZVByZXNNb2RlbCwgaGF2aW5nIHR5cGUgRGFzaGJvYXJkU2l6ZVByZXNNb2RlbFxuICBEYXNoYm9hcmRTaXplUHJlc01vZGVsID0gJ2Rhc2hib2FyZFNpemVQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9EYXNoYm9hcmRTaXplV2l0aFZhbGlkYXRpb25QcmVzTW9kZWwsIGhhdmluZyB0eXBlIERhc2hib2FyZFNpemVXaXRoVmFsaWRhdGlvblByZXNNb2RlbFxuICBEYXNoYm9hcmRTaXplV2l0aFZhbGlkYXRpb25QcmVzTW9kZWwgPSAnZGFzaGJvYXJkU2l6ZVdpdGhWYWxpZGF0aW9uUHJlc01vZGVsJyxcblxuICAvLyBEUElfRGFzaGJvYXJkSW5mb1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgRGFzaGJvYXJkSW5mb1ByZXNNb2RlbFxuICBEYXNoYm9hcmRJbmZvUHJlc01vZGVsID0gJ2Rhc2hib2FyZEluZm9QcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9WaXN1YWxQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFZpc3VhbFByZXNNb2RlbFxuICBWaXN1YWxQcmVzTW9kZWwgPSAndmlzdWFsJyxcblxuICAvLyBEUElfVmlzdWFsUHJlc01vZGVscywgaGF2aW5nIHR5cGUgVmlzdWFsUHJlc01vZGVsW11cbiAgVmlzdWFsUHJlc01vZGVscyA9ICd2aXN1YWxzJyxcblxuICAvLyBEUElfRHJvcExpbmVzUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBEcm9wTGluZXNQcmVzTW9kZWxcbiAgRHJvcExpbmVzUHJlc01vZGVsID0gJ2Ryb3BMaW5lc1ByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX0Ryb3BGaWVsZFByZXNNb2RlbCwgaGF2aW5nIHR5cGUgRHJvcEZpZWxkUHJlc01vZGVsXG4gIERyb3BGaWVsZFByZXNNb2RlbCA9ICdkcm9wRmllbGRQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9Ecm9wRmllbGRSZXN1bHRQcmVzTW9kZWwsIGhhdmluZyB0eXBlIERyb3BGaWVsZFJlc3VsdFByZXNNb2RlbFxuICBEcm9wRmllbGRSZXN1bHRQcmVzTW9kZWwgPSAnZHJvcEZpZWxkUmVzdWx0UHJlc01vZGVsJyxcblxuICAvLyBEUElfQ3VycmVudEF4aXNSYW5nZSwgaGF2aW5nIHR5cGUgRGF0YVZhbHVlUmFuZ2VQcmVzTW9kZWxcbiAgQ3VycmVudEF4aXNSYW5nZSA9ICdjdXJyZW50QXhpc1JhbmdlJyxcblxuICAvLyBEUElfQ3VycmVudEF4aXNSYW5nZU5vVGltZSwgaGF2aW5nIHR5cGUgRGF0YVZhbHVlUmFuZ2VQcmVzTW9kZWxcbiAgQ3VycmVudEF4aXNSYW5nZU5vVGltZSA9ICdjdXJyZW50QXhpc1JhbmdlTm9UaW1lJyxcblxuICAvLyBEUElfRGVmYXVsdEF4aXNSYW5nZSwgaGF2aW5nIHR5cGUgRGF0YVZhbHVlUmFuZ2VQcmVzTW9kZWxcbiAgRGVmYXVsdEF4aXNSYW5nZSA9ICdkZWZhdWx0QXhpc1JhbmdlJyxcblxuICAvLyBEUElfTmV3QXhpc1JhbmdlLCBoYXZpbmcgdHlwZSBEYXRhVmFsdWVSYW5nZVByZXNNb2RlbFxuICBOZXdBeGlzUmFuZ2UgPSAnbmV3QXhpc1JhbmdlJyxcblxuICAvLyBEUElfQXhpc09wdGlvbnMsIGhhdmluZyB0eXBlIEF4aXNPcHRpb25zUHJlc01vZGVsXG4gIEF4aXNPcHRpb25zID0gJ2F4aXMnLFxuXG4gIC8vIERQSV9BeGlzTWFqb3JUaWNrcywgaGF2aW5nIHR5cGUgVGlja01hcmtJbmZvUHJlc01vZGVsXG4gIEF4aXNNYWpvclRpY2tzID0gJ2F4aXNNYWpvclRpY2tzJyxcblxuICAvLyBEUElfQXhpc01pbm9yVGlja3MsIGhhdmluZyB0eXBlIFRpY2tNYXJrSW5mb1ByZXNNb2RlbFxuICBBeGlzTWlub3JUaWNrcyA9ICdheGlzTWlub3JUaWNrcycsXG5cbiAgLy8gRFBJX0VkaXRBeGlzRGlhbG9nLCBoYXZpbmcgdHlwZSBFZGl0QXhpc0RpYWxvZ1ByZXNNb2RlbFxuICBFZGl0QXhpc0RpYWxvZyA9ICdlZGl0QXhpc0RpYWxvZycsXG5cbiAgLy8gRFBJX01hcmtMYWJlbHMsIGhhdmluZyB0eXBlIFNjZW5lUHJlc01vZGVsXG4gIE1hcmtMYWJlbHMgPSAnbWFya0xhYmVscycsXG5cbiAgLy8gRFBJX1NjZW5lLCBoYXZpbmcgdHlwZSBTY2VuZVByZXNNb2RlbFxuICBTY2VuZSA9ICdzY2VuZScsXG5cbiAgLy8gRFBJX01hcFNlcnZlciwgaGF2aW5nIHR5cGUgTWFwU2VydmVyUHJlc01vZGVsXG4gIE1hcFNlcnZlciA9ICdtYXBTZXJ2ZXInLFxuXG4gIC8vIERQSV9WaXN1YWxMaXN0LCBoYXZpbmcgdHlwZSBWaXN1YWxMaXN0UHJlc01vZGVsXG4gIFZpc3VhbExpc3QgPSAndmlzdWFsTGlzdCcsXG5cbiAgLy8gRFBJX0RyYXdGaXJzdCwgaGF2aW5nIHR5cGUgVmlzdWFsTGlzdFByZXNNb2RlbFtdXG4gIERyYXdGaXJzdCA9ICdkcmF3Rmlyc3QnLFxuXG4gIC8vIERQSV9EcmF3TGFzdCwgaGF2aW5nIHR5cGUgVmlzdWFsTGlzdFByZXNNb2RlbFtdXG4gIERyYXdMYXN0ID0gJ2RyYXdMYXN0JyxcblxuICAvLyBEUElfRHJhd1BhbmUsIGhhdmluZyB0eXBlIFZpc3VhbExpc3RQcmVzTW9kZWxbXVxuICBEcmF3UGFuZSA9ICdkcmF3UGFuZScsXG5cbiAgLy8gRFBJX1VzZXJQYW5lSW5mbywgaGF2aW5nIHR5cGUgVXNlclBhbmVJbmZvUHJlc01vZGVsXG4gIFVzZXJQYW5lSW5mbyA9ICd1c2VyUGFuZUluZm8nLFxuXG4gIC8vIERQSV9BbmFseXRpY3NQYW5lLCBoYXZpbmcgdHlwZSBBbmFseXRpY3NQYW5lUHJlc01vZGVsXG4gIEFuYWx5dGljc1BhbmUgPSAnYW5hbHl0aWNzUGFuZScsXG5cbiAgLy8gRFBJX0FuYWx5dGljc09iamVjdEl0ZW0sIGhhdmluZyB0eXBlIEFuYWx5dGljc09iamVjdEl0ZW1QcmVzTW9kZWxcbiAgQW5hbHl0aWNzT2JqZWN0SXRlbSA9ICdhbmFseXRpY3NPYmplY3RJdGVtJyxcblxuICAvLyBEUElfQW5hbHl0aWNzT2JqZWN0SXRlbXMsIGhhdmluZyB0eXBlIEFuYWx5dGljc09iamVjdEl0ZW1QcmVzTW9kZWxbXVxuICBBbmFseXRpY3NPYmplY3RJdGVtcyA9ICdhbmFseXRpY3NPYmplY3RJdGVtcycsXG5cbiAgLy8gRFBJX0FuYWx5dGljc09iamVjdEdyb3VwLCBoYXZpbmcgdHlwZSBBbmFseXRpY3NPYmplY3RHcm91cFByZXNNb2RlbFxuICBBbmFseXRpY3NPYmplY3RHcm91cCA9ICdhbmFseXRpY3NPYmplY3RHcm91cCcsXG5cbiAgLy8gRFBJX0FuYWx5dGljc09iamVjdEdyb3VwcywgaGF2aW5nIHR5cGUgQW5hbHl0aWNzT2JqZWN0R3JvdXBQcmVzTW9kZWxbXVxuICBBbmFseXRpY3NPYmplY3RHcm91cHMgPSAnYW5hbHl0aWNzT2JqZWN0R3JvdXBzJyxcblxuICAvLyBEUElfRHJvcFpvbmVJdGVtLCBoYXZpbmcgdHlwZSBEcm9wWm9uZUl0ZW1QcmVzTW9kZWxcbiAgRHJvcFpvbmVJdGVtID0gJ2Ryb3Bab25lSXRlbScsXG5cbiAgLy8gRFBJX0Ryb3Bab25lSXRlbXMsIGhhdmluZyB0eXBlIERyb3Bab25lSXRlbVByZXNNb2RlbFtdXG4gIERyb3Bab25lSXRlbXMgPSAnZHJvcFpvbmVJdGVtcycsXG5cbiAgLy8gRFBJX0Ryb3BUYXJnZXRJbmZvLCBoYXZpbmcgdHlwZSBEcm9wVGFyZ2V0SW5mb1ByZXNNb2RlbFxuICBEcm9wVGFyZ2V0SW5mbyA9ICdkcm9wVGFyZ2V0SW5mbycsXG5cbiAgLy8gRFBJX1BhbmUsIGhhdmluZyB0eXBlIFBhbmVQcmVzTW9kZWxcbiAgUGFuZSA9ICdwYW5lJyxcblxuICAvLyBEUElfUGFuZXMsIGhhdmluZyB0eXBlIFBhbmVQcmVzTW9kZWxbXVxuICBQYW5lcyA9ICdwYW5lcycsXG5cbiAgLy8gRFBJX1JhZGlhbFNlbGVjdGlvbkRpc3RhbmNlSW5mbywgaGF2aW5nIHR5cGUgUmFkaWFsU2VsZWN0aW9uRGlzdGFuY2VJbmZvUHJlc01vZGVsXG4gIFJhZGlhbFNlbGVjdGlvbkRpc3RhbmNlSW5mbyA9ICdyYWRpYWxTZWxlY3Rpb25EaXN0YW5jZUluZm8nLFxuXG4gIC8vIERQSV9NYXBTY2FsZUluZm8sIGhhdmluZyB0eXBlIE1hcFNjYWxlSW5mb1ByZXNNb2RlbFxuICBNYXBTY2FsZUluZm8gPSAnbWFwU2NhbGVJbmZvJyxcblxuICAvLyBEUElfUmVuZGVyTm9kZSwgaGF2aW5nIHR5cGUgUmVuZGVyTm9kZVByZXNNb2RlbFxuICBSZW5kZXJOb2RlID0gJ3JlbmRlck5vZGUnLFxuXG4gIC8vIERQSV9SZW5kZXJOb2RlcywgaGF2aW5nIHR5cGUgUmVuZGVyTm9kZVByZXNNb2RlbFtdXG4gIFJlbmRlck5vZGVzID0gJ3JlbmRlck5vZGVzJyxcblxuICAvLyBEUElfUHJlZGljdGlvbkJhbmQsIGhhdmluZyB0eXBlIFByZWRpY3Rpb25CYW5kUHJlc01vZGVsXG4gIFByZWRpY3Rpb25CYW5kID0gJ3ByZWRpY3Rpb25CYW5kJyxcblxuICAvLyBEUElfUHJlZGljdGlvbldoaXNrZXIsIGhhdmluZyB0eXBlIFByZWRpY3Rpb25XaGlza2VyUHJlc01vZGVsXG4gIFByZWRpY3Rpb25XaGlza2VyID0gJ3ByZWRpY3Rpb25XaGlza2VyJyxcblxuICAvLyBEUElfRHJhd0dyb3VwLCBoYXZpbmcgdHlwZSBEcmF3UG9pbnRzUHJlc01vZGVsXG4gIERyYXdHcm91cCA9ICdkcmF3R3JvdXAnLFxuXG4gIC8vIERQSV9DbGlwUmVzZXQsIGhhdmluZyB0eXBlIERyYXdJdGVtUHJlc01vZGVsXG4gIENsaXBSZXNldCA9ICdjbGlwUmVzZXQnLFxuXG4gIC8vIERQSV9EcmF3SXRlbSwgaGF2aW5nIHR5cGUgRHJhd0l0ZW1QcmVzTW9kZWxcbiAgRHJhd0l0ZW0gPSAnZHJhd0l0ZW0nLFxuXG4gIC8vIERQSV9UcmFuc2Zvcm1Qb3AsIGhhdmluZyB0eXBlIERyYXdJdGVtUHJlc01vZGVsXG4gIFRyYW5zZm9ybVBvcCA9ICd0cmFuc2Zvcm1Qb3AnLFxuXG4gIC8vIERQSV9UcmFuc2Zvcm1QdXNoLCBoYXZpbmcgdHlwZSBEcmF3SXRlbVByZXNNb2RlbFxuICBUcmFuc2Zvcm1QdXNoID0gJ3RyYW5zZm9ybVB1c2gnLFxuXG4gIC8vIERQSV9EcmF3SXRlbXMsIGhhdmluZyB0eXBlIERyYXdJdGVtUHJlc01vZGVsW11cbiAgRHJhd0l0ZW1zID0gJ2RyYXdJdGVtcycsXG5cbiAgLy8gRFBJX0NsaXBSZWN0LCBoYXZpbmcgdHlwZSBEcmF3UG9pbnRzUHJlc01vZGVsXG4gIENsaXBSZWN0ID0gJ2NsaXBSZWN0JyxcblxuICAvLyBEUElfRHJhd0VsbGlwc2UsIGhhdmluZyB0eXBlIERyYXdQb2ludHNQcmVzTW9kZWxcbiAgRHJhd0VsbGlwc2UgPSAnZHJhd0VsbGlwc2UnLFxuXG4gIC8vIERQSV9EcmF3RmlsbEVsbGlwc2UsIGhhdmluZyB0eXBlIERyYXdQb2ludHNQcmVzTW9kZWxcbiAgRHJhd0ZpbGxFbGxpcHNlID0gJ2RyYXdGaWxsRWxsaXBzZScsXG5cbiAgLy8gRFBJX0RyYXdGaWxsUG9seWdvbiwgaGF2aW5nIHR5cGUgRHJhd1BvaW50c1ByZXNNb2RlbFxuICBEcmF3RmlsbFBvbHlnb24gPSAnZHJhd0ZpbGxQb2x5Z29uJyxcblxuICAvLyBEUElfRHJhd0ZpbGxSZWN0LCBoYXZpbmcgdHlwZSBEcmF3UG9pbnRzUHJlc01vZGVsXG4gIERyYXdGaWxsUmVjdCA9ICdkcmF3RmlsbFJlY3QnLFxuXG4gIC8vIERQSV9EcmF3UG9seWdvbiwgaGF2aW5nIHR5cGUgRHJhd1BvaW50c1ByZXNNb2RlbFxuICBEcmF3UG9seWdvbiA9ICdkcmF3UG9seWdvbicsXG5cbiAgLy8gRFBJX0RyYXdQb2x5bGluZSwgaGF2aW5nIHR5cGUgRHJhd1BvaW50c1ByZXNNb2RlbFxuICBEcmF3UG9seWxpbmUgPSAnZHJhd1BvbHlsaW5lJyxcblxuICAvLyBEUElfRHJhd1JlY3QsIGhhdmluZyB0eXBlIERyYXdQb2ludHNQcmVzTW9kZWxcbiAgRHJhd1JlY3QgPSAnZHJhd1JlY3QnLFxuXG4gIC8vIERQSV9EcmF3RmlsbFBhdGgsIGhhdmluZyB0eXBlIERyYXdQYXRoUHJlc01vZGVsXG4gIERyYXdGaWxsUGF0aCA9ICdkcmF3RmlsbFBhdGgnLFxuXG4gIC8vIERQSV9EcmF3UGF0aCwgaGF2aW5nIHR5cGUgRHJhd1BhdGhQcmVzTW9kZWxcbiAgRHJhd1BhdGggPSAnZHJhd1BhdGgnLFxuXG4gIC8vIERQSV9EcmF3VGV4dCwgaGF2aW5nIHR5cGUgRHJhd1RleHRQcmVzTW9kZWxcbiAgRHJhd1RleHQgPSAnZHJhd1RleHQnLFxuXG4gIC8vIERQSV9EcmF3SW1hZ2UsIGhhdmluZyB0eXBlIERyYXdJbWFnZVByZXNNb2RlbFxuICBEcmF3SW1hZ2UgPSAnZHJhd0ltYWdlJyxcblxuICAvLyBEUElfSW1hZ2VUaWxlSW5mbywgaGF2aW5nIHR5cGUgSW1hZ2VUaWxlSW5mb1ByZXNNb2RlbFxuICBJbWFnZVRpbGVJbmZvID0gJ3RpbGVJbmZvJyxcblxuICAvLyBEUElfSW1hZ2VUaWxlSW5mb3MsIGhhdmluZyB0eXBlIEltYWdlVGlsZUluZm9QcmVzTW9kZWxbXVxuICBJbWFnZVRpbGVJbmZvcyA9ICd0aWxlSW5mb3MnLFxuXG4gIC8vIERQSV9EcmF3SW1hZ2VUaWxlcywgaGF2aW5nIHR5cGUgRHJhd0ltYWdlVGlsZXNQcmVzTW9kZWxcbiAgRHJhd0ltYWdlVGlsZXMgPSAnZHJhd0ltYWdlVGlsZXMnLFxuXG4gIC8vIERQSV9EcmF3UGVuLCBoYXZpbmcgdHlwZSBEcmF3UGVuUHJlc01vZGVsXG4gIERyYXdQZW4gPSAnZHJhd1BlbicsXG5cbiAgLy8gRFBJX0RyYXdTb2xpZEJydXNoLCBoYXZpbmcgdHlwZSBEcmF3U29saWRCcnVzaFByZXNNb2RlbFxuICBEcmF3U29saWRCcnVzaCA9ICdkcmF3U29saWRCcnVzaCcsXG5cbiAgLy8gRFBJX0RyYXdUZXh0UHJvcGVydGllcywgaGF2aW5nIHR5cGUgRHJhd1RleHRQcm9wZXJ0aWVzUHJlc01vZGVsXG4gIERyYXdUZXh0UHJvcGVydGllcyA9ICdkcmF3VGV4dFByb3BzJyxcblxuICAvLyBEUElfRHJhd0dyYWRpZW50QnJ1c2gsIGhhdmluZyB0eXBlIERyYXdHcmFkaWVudEJydXNoUHJlc01vZGVsXG4gIERyYXdHcmFkaWVudEJydXNoID0gJ2RyYXdHcmFkaWVudEJydXNoJyxcblxuICAvLyBEUElfRHJhd1RyYW5zZm9ybSwgaGF2aW5nIHR5cGUgRHJhd1RyYW5zZm9ybVByZXNNb2RlbFxuICBEcmF3VHJhbnNmb3JtID0gJ3RyYW5zZm9ybScsXG5cbiAgLy8gRFBJX0RyYXdBbnRpYWxpYXMsIGhhdmluZyB0eXBlIERyYXdBbnRpYWxpYXNQcmVzTW9kZWxcbiAgRHJhd0FudGlhbGlhcyA9ICdkcmF3QW50aWFsaWFzJyxcblxuICAvLyBEUElfSW1hZ2VEaWN0aW9uYXJ5LCBoYXZpbmcgdHlwZSBJbWFnZURpY3Rpb25hcnlQcmVzTW9kZWxcbiAgSW1hZ2VEaWN0aW9uYXJ5ID0gJ2ltYWdlRGljdGlvbmFyeScsXG5cbiAgLy8gRFBJX0NvbG9yRGljdGlvbmFyeSwgaGF2aW5nIHR5cGUgQ29sb3JEaWN0aW9uYXJ5UHJlc01vZGVsXG4gIENvbG9yRGljdGlvbmFyeSA9ICdjb2xvckRpY3Rpb25hcnknLFxuXG4gIC8vIERQSV9NYXJrU2hhcGUsIGhhdmluZyB0eXBlIE1hcmtTaGFwZVByZXNNb2RlbFxuICBNYXJrU2hhcGUgPSAnbWFya1NoYXBlJyxcblxuICAvLyBEUElfTWFya1NoYXBlTGlzdCwgaGF2aW5nIHR5cGUgTWFya1NoYXBlUHJlc01vZGVsW11cbiAgTWFya1NoYXBlTGlzdCA9ICdtYXJrU2hhcGVMaXN0JyxcblxuICAvLyBEUElfUGFuZURlc2NyaXB0b3IsIGhhdmluZyB0eXBlIFBhbmVEZXNjcmlwdG9yUHJlc01vZGVsXG4gIFBhbmVEZXNjcmlwdG9yID0gJ3BhbmVEZXNjcmlwdG9yJyxcblxuICAvLyBEUElfUERNYXJrcywgaGF2aW5nIHR5cGUgUERNYXJrc1ByZXNNb2RlbFxuICBQRE1hcmtzID0gJ3BkTWFya3MnLFxuXG4gIC8vIERQSV9QRE1hcmtzTWFwLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIFBETWFya3NQcmVzTW9kZWwpXG4gIFBETWFya3NNYXAgPSAncGRNYXJrc01hcCcsXG5cbiAgLy8gRFBJX0xhYmVsVGV4dFRhYmxlLCBoYXZpbmcgdHlwZSBMYWJlbFRleHRUYWJsZVxuICBMYWJlbFRleHRUYWJsZSA9ICdsYWJlbFRleHRUYWJsZScsXG5cbiAgLy8gRFBJX1RleHRUYWJsZUhlbHBlciwgaGF2aW5nIHR5cGUgVGV4dFRhYmxlSGVscGVyXG4gIFRleHRUYWJsZUhlbHBlciA9ICd0ZXh0VGFibGVIZWxwZXInLFxuXG4gIC8vIERQSV9HZW9tZXRyeVRhYmxlLCBoYXZpbmcgdHlwZSBHZW9tZXRyeVRhYmxlXG4gIEdlb21ldHJ5VGFibGUgPSAnZ2VvbWV0cnlUYWJsZScsXG5cbiAgLy8gRFBJX1BhbmVNYXJrcywgaGF2aW5nIHR5cGUgUGFuZU1hcmtzUHJlc01vZGVsXG4gIFBhbmVNYXJrcyA9ICdwYW5lTWFya3MnLFxuXG4gIC8vIERQSV9QYW5lTWFya3NMaXN0LCBoYXZpbmcgdHlwZSBQYW5lTWFya3NQcmVzTW9kZWxbXVxuICBQYW5lTWFya3NMaXN0ID0gJ3BhbmVNYXJrc0xpc3QnLFxuXG4gIC8vIERQSV9CcnVzaGluZ1NlbGVjdGlvbiwgaGF2aW5nIHR5cGUgU2VsZWN0aW9uUHJlc01vZGVsXG4gIEJydXNoaW5nU2VsZWN0aW9uID0gJ2JydXNoaW5nJyxcblxuICAvLyBEUElfU2VsZWN0aW9uLCBoYXZpbmcgdHlwZSBTZWxlY3Rpb25QcmVzTW9kZWxcbiAgU2VsZWN0aW9uID0gJ3NlbGVjdGlvbicsXG5cbiAgLy8gRFBJX0JydXNoaW5nU2VsZWN0aW9uTGlzdCwgaGF2aW5nIHR5cGUgU2VsZWN0aW9uUHJlc01vZGVsW11cbiAgQnJ1c2hpbmdTZWxlY3Rpb25MaXN0ID0gJ2JydXNoaW5nU2VsZWN0aW9uTGlzdCcsXG5cbiAgLy8gRFBJX1NlbGVjdGlvbkxpc3QsIGhhdmluZyB0eXBlIFNlbGVjdGlvblByZXNNb2RlbFtdXG4gIFNlbGVjdGlvbkxpc3QgPSAnc2VsZWN0aW9uTGlzdCcsXG5cbiAgLy8gRFBJX1NoZWxmU2VsZWN0aW9uTW9kZWwsIGhhdmluZyB0eXBlIFNoZWxmU2VsZWN0aW9uUHJlc01vZGVsXG4gIFNoZWxmU2VsZWN0aW9uTW9kZWwgPSAnc2hlbGZTZWxlY3Rpb25Nb2RlbCcsXG5cbiAgLy8gRFBJX1NoZWxmU2VsZWN0aW9uTW9kZWxzLCBoYXZpbmcgdHlwZSBTaGVsZlNlbGVjdGlvblByZXNNb2RlbFtdXG4gIFNoZWxmU2VsZWN0aW9uTW9kZWxzID0gJ3NoZWxmU2VsZWN0aW9uTW9kZWxzJyxcblxuICAvLyBEUElfU2hlbGZTZWxlY3Rpb25zTW9kZWwsIGhhdmluZyB0eXBlIFNoZWxmU2VsZWN0aW9uc1ByZXNNb2RlbFxuICBTaGVsZlNlbGVjdGlvbnNNb2RlbCA9ICdzaGVsZlNlbGVjdGlvbnNNb2RlbCcsXG5cbiAgLy8gRFBJX0RpbVZhbFNlbGVjdGlvbk1vZGVsLCBoYXZpbmcgdHlwZSBEaW1lbnNpb25WYWx1ZVNlbGVjdGlvblByZXNNb2RlbFxuICBEaW1WYWxTZWxlY3Rpb25Nb2RlbCA9ICdkaW1lbnNpb25WYWx1ZVNlbGVjdGlvbk1vZGVsJyxcblxuICAvLyBEUElfRGltVmFsU2VsZWN0aW9uTW9kZWxzLCBoYXZpbmcgdHlwZSBEaW1lbnNpb25WYWx1ZVNlbGVjdGlvblByZXNNb2RlbFtdXG4gIERpbVZhbFNlbGVjdGlvbk1vZGVscyA9ICdkaW1lbnNpb25WYWx1ZVNlbGVjdGlvbk1vZGVscycsXG5cbiAgLy8gRFBJX0hpZXJWYWxTZWxlY3Rpb25Nb2RlbCwgaGF2aW5nIHR5cGUgSGllcmFyY2hpY2FsVmFsdWVTZWxlY3Rpb25QcmVzTW9kZWxcbiAgSGllclZhbFNlbGVjdGlvbk1vZGVsID0gJ2hpZXJhcmNoaWNhbFZhbHVlU2VsZWN0aW9uTW9kZWwnLFxuXG4gIC8vIERQSV9IaWVyVmFsU2VsZWN0aW9uTW9kZWxzLCBoYXZpbmcgdHlwZSBIaWVyYXJjaGljYWxWYWx1ZVNlbGVjdGlvblByZXNNb2RlbFtdXG4gIEhpZXJWYWxTZWxlY3Rpb25Nb2RlbHMgPSAnaGllcmFyY2hpY2FsVmFsdWVTZWxlY3Rpb25Nb2RlbHMnLFxuXG4gIC8vIERQSV9RdWFudFJhbmdlU2VsZWN0aW9uTW9kZWwsIGhhdmluZyB0eXBlIFF1YW50YXRpdmVSYW5nZVNlbGVjdGlvblByZXNNb2RlbFxuICBRdWFudFJhbmdlU2VsZWN0aW9uTW9kZWwgPSAncXVhbnRhdGl2ZVJhbmdlU2VsZWN0aW9uTW9kZWwnLFxuXG4gIC8vIERQSV9RdWFudFJhbmdlU2VsZWN0aW9uTW9kZWxzLCBoYXZpbmcgdHlwZSBRdWFudGF0aXZlUmFuZ2VTZWxlY3Rpb25QcmVzTW9kZWxbXVxuICBRdWFudFJhbmdlU2VsZWN0aW9uTW9kZWxzID0gJ3F1YW50YXRpdmVSYW5nZVNlbGVjdGlvbk1vZGVscycsXG5cbiAgLy8gRFBJX1F1YW50VmFsdWVTZWxlY3Rpb25Nb2RlbCwgaGF2aW5nIHR5cGUgUXVhbnRhdGl2ZVZhbHVlU2VsZWN0aW9uUHJlc01vZGVsXG4gIFF1YW50VmFsdWVTZWxlY3Rpb25Nb2RlbCA9ICdxdWFudGF0aXZlVmFsdWVTZWxlY3Rpb25Nb2RlbCcsXG5cbiAgLy8gRFBJX1F1YW50VmFsdWVTZWxlY3Rpb25Nb2RlbHMsIGhhdmluZyB0eXBlIFF1YW50YXRpdmVWYWx1ZVNlbGVjdGlvblByZXNNb2RlbFtdXG4gIFF1YW50VmFsdWVTZWxlY3Rpb25Nb2RlbHMgPSAncXVhbnRhdGl2ZVZhbHVlU2VsZWN0aW9uTW9kZWxzJyxcblxuICAvLyBEUElfTGVnZW5kU2VsZWN0aW9uSW5mbywgaGF2aW5nIHR5cGUgTGVnZW5kU2VsZWN0aW9uSW5mb1ByZXNNb2RlbFxuICBMZWdlbmRTZWxlY3Rpb25JbmZvID0gJ2xlZ2VuZFNlbGVjdGlvbkluZm8nLFxuXG4gIC8vIERQSV9Ob2RlUmVmZXJlbmNlLCBoYXZpbmcgdHlwZSBOb2RlUmVmZXJlbmNlUHJlc01vZGVsXG4gIE5vZGVSZWZlcmVuY2UgPSAnbm9kZVJlZmVyZW5jZScsXG5cbiAgLy8gRFBJX1BhZ2VSZWZlcmVuY2UsIGhhdmluZyB0eXBlIFBhZ2VSZWZlcmVuY2VQcmVzTW9kZWxcbiAgUGFnZVJlZmVyZW5jZSA9ICdwYWdlUmVmZXJlbmNlJyxcblxuICAvLyBEUElfT3JpZW50ZWROb2RlUmVmZXJlbmNlLCBoYXZpbmcgdHlwZSBPcmllbnRlZE5vZGVSZWZlcmVuY2VQcmVzTW9kZWxcbiAgT3JpZW50ZWROb2RlUmVmZXJlbmNlID0gJ29yaWVudGVkTm9kZVJlZmVyZW5jZScsXG5cbiAgLy8gRFBJX09yaWVudGVkTm9kZVJlZmVyZW5jZXMsIGhhdmluZyB0eXBlIE9yaWVudGVkTm9kZVJlZmVyZW5jZVByZXNNb2RlbFtdXG4gIE9yaWVudGVkTm9kZVJlZmVyZW5jZXMgPSAnb3JpZW50ZWROb2RlUmVmZXJlbmNlcycsXG5cbiAgLy8gRFBJX1NlbGVjdGlvbkRhdGEsIGhhdmluZyB0eXBlIFNlbGVjdGlvbkRhdGFQcmVzTW9kZWxcbiAgU2VsZWN0aW9uRGF0YSA9ICdzZWxlY3Rpb25EYXRhJyxcblxuICAvLyBEUElfSGlnaGxpZ2h0ZWREYXRhLCBoYXZpbmcgdHlwZSBIaWdobGlnaHRlZERhdGFQcmVzTW9kZWxcbiAgSGlnaGxpZ2h0ZWREYXRhID0gJ2hpZ2hsaWdodGVkRGF0YScsXG5cbiAgLy8gRFBJX05vZGUsIGhhdmluZyB0eXBlIE5vZGVQcmVzTW9kZWxcbiAgTm9kZSA9ICdub2RlJyxcblxuICAvLyBEUElfTm9kZXMsIGhhdmluZyB0eXBlIE5vZGVQcmVzTW9kZWxbXVxuICBOb2RlcyA9ICdub2RlcycsXG5cbiAgLy8gRFBJX1NlbGVjdGVkTm9kZXMsIGhhdmluZyB0eXBlIE5vZGVQcmVzTW9kZWxbXVxuICBTZWxlY3RlZE5vZGVzID0gJ3NlbGVjdGVkTm9kZXMnLFxuXG4gIC8vIERQSV9Vc2VyQWN0aW9uLCBoYXZpbmcgdHlwZSBBY3Rpb25QcmVzTW9kZWxcbiAgVXNlckFjdGlvbiA9ICd1c2VyQWN0aW9uJyxcblxuICAvLyBEUElfVXNlckFjdGlvbnMsIGhhdmluZyB0eXBlIEFjdGlvblByZXNNb2RlbFtdXG4gIFVzZXJBY3Rpb25zID0gJ3VzZXJBY3Rpb25zJyxcblxuICAvLyBEUElfTGlua1NwZWMsIGhhdmluZyB0eXBlIExpbmtTcGVjUHJlc01vZGVsXG4gIExpbmtTcGVjID0gJ2xpbmtTcGVjJyxcblxuICAvLyBEUElfQWN0aW9uU3BlY2lmaWNhdGlvbk1vZGVsLCBoYXZpbmcgdHlwZSBBY3Rpb25TcGVjaWZpY2F0aW9uUHJlc01vZGVsXG4gIEFjdGlvblNwZWNpZmljYXRpb25Nb2RlbCA9ICdhY3Rpb25TcGVjaWZpY2F0aW9uJyxcblxuICAvLyBEUElfTGlua1NwZWNpZmljYXRpb24sIGhhdmluZyB0eXBlIExpbmtTcGVjaWZpY2F0aW9uUHJlc01vZGVsXG4gIExpbmtTcGVjaWZpY2F0aW9uID0gJ2xpbmtTcGVjaWZpY2F0aW9uJyxcblxuICAvLyBEUElfU2NyaXB0RGVzY3JpcHRpb24sIGhhdmluZyB0eXBlIFNjcmlwdERlc2NyaXB0aW9uUHJlc01vZGVsXG4gIFNjcmlwdERlc2NyaXB0aW9uID0gJ3NjcmlwdERlc2NyaXB0aW9uJyxcblxuICAvLyBEUElfQWN0aW9uU291cmNlLCBoYXZpbmcgdHlwZSBBY3Rpb25Tb3VyY2VQcmVzTW9kZWxcbiAgQWN0aW9uU291cmNlID0gJ2FjdGlvblNvdXJjZScsXG5cbiAgLy8gRFBJX0ZpZWxkRXhwckl0ZW0sIGhhdmluZyB0eXBlIEZpZWxkRXhwckl0ZW1QcmVzTW9kZWxcbiAgRmllbGRFeHBySXRlbSA9ICdmaWVsZEV4cHJlc3Npb25JdGVtJyxcblxuICAvLyBEUElfRmllbGRFeHByVmVjdG9yLCBoYXZpbmcgdHlwZSBGaWVsZEV4cHJJdGVtUHJlc01vZGVsW11cbiAgRmllbGRFeHByVmVjdG9yID0gJ2ZpZWxkRXhwcmVzc2lvblZlY3RvcicsXG5cbiAgLy8gRFBJX0FjdGlvbkNvbWJvSXRlbSwgaGF2aW5nIHR5cGUgQWN0aW9uQ29tYm9JdGVtUHJlc01vZGVsXG4gIEFjdGlvbkNvbWJvSXRlbSA9ICdhY3Rpb25Db21ib0l0ZW0nLFxuXG4gIC8vIERQSV9BY3Rpb25Db21ib1ZlY3RvciwgaGF2aW5nIHR5cGUgQWN0aW9uQ29tYm9JdGVtUHJlc01vZGVsW11cbiAgQWN0aW9uQ29tYm9WZWN0b3IgPSAnYWN0aW9uQ29tYm9WZWN0b3InLFxuXG4gIC8vIERQSV9BY3Rpb25Tb3VyY2VDb21ibywgaGF2aW5nIHR5cGUgQWN0aW9uU291cmNlQ29tYm9QcmVzTW9kZWxcbiAgQWN0aW9uU291cmNlQ29tYm8gPSAnYWN0aW9uU291cmNlQ29tYm8nLFxuXG4gIC8vIERQSV9BY3Rpb25EZXN0Q29tYm8sIGhhdmluZyB0eXBlIEFjdGlvbkNvbWJvUHJlc01vZGVsXG4gIEFjdGlvbkRlc3RDb21ibyA9ICdhY3Rpb25EZXN0Q29tYm8nLFxuXG4gIC8vIERQSV9BY3Rpb25GaWVsZExpc3QsIGhhdmluZyB0eXBlIEFjdGlvbkZpZWxkTGlzdFByZXNNb2RlbFxuICBBY3Rpb25GaWVsZExpc3QgPSAnYWN0aW9uRmllbGRMaXN0JyxcblxuICAvLyBEUElfRWRpdEJydXNoQWN0aW9uLCBoYXZpbmcgdHlwZSBFZGl0QnJ1c2hBY3Rpb25QcmVzTW9kZWxcbiAgRWRpdEJydXNoQWN0aW9uID0gJ2VkaXRCcnVzaEFjdGlvbicsXG5cbiAgLy8gRFBJX1VwZGF0ZUFjdGlvblNvdXJjZSwgaGF2aW5nIHR5cGUgVXBkYXRlQWN0aW9uU291cmNlUHJlc01vZGVsXG4gIFVwZGF0ZUFjdGlvblNvdXJjZSA9ICd1cGRhdGVBY3Rpb25Tb3VyY2UnLFxuXG4gIC8vIERQSV9VcGRhdGVCcnVzaEFjdGlvbiwgaGF2aW5nIHR5cGUgVXBkYXRlQnJ1c2hBY3Rpb25QcmVzTW9kZWxcbiAgVXBkYXRlQnJ1c2hBY3Rpb24gPSAndXBkYXRlQnJ1c2hBY3Rpb24nLFxuXG4gIC8vIERQSV9BY3Rpb25XYXJuaW5ncywgaGF2aW5nIHR5cGUgQWN0aW9uV2FybmluZ3NQcmVzTW9kZWxcbiAgQWN0aW9uV2FybmluZ3MgPSAnYWN0aW9uV2FybmluZ3MnLFxuXG4gIC8vIERQSV9FZGl0SHlwZXJsaW5rQWN0aW9uLCBoYXZpbmcgdHlwZSBFZGl0SHlwZXJsaW5rQWN0aW9uUHJlc01vZGVsXG4gIEVkaXRIeXBlcmxpbmtBY3Rpb24gPSAnZWRpdEh5cGVybGlua0FjdGlvbicsXG5cbiAgLy8gRFBJX1VwZGF0ZUh5cGVybGlua0FjdGlvbiwgaGF2aW5nIHR5cGUgVXBkYXRlSHlwZXJsaW5rQWN0aW9uUHJlc01vZGVsXG4gIFVwZGF0ZUh5cGVybGlua0FjdGlvbiA9ICd1cGRhdGVIeXBlcmxpbmtBY3Rpb24nLFxuXG4gIC8vIERQSV9FZGl0U2hlZXRMaW5rQWN0aW9uLCBoYXZpbmcgdHlwZSBFZGl0U2hlZXRMaW5rQWN0aW9uUHJlc01vZGVsXG4gIEVkaXRTaGVldExpbmtBY3Rpb24gPSAnZWRpdFNoZWV0bGlua0FjdGlvbicsXG5cbiAgLy8gRFBJX1VwZGF0ZVNoZWV0TGlua0FjdGlvbiwgaGF2aW5nIHR5cGUgVXBkYXRlU2hlZXRMaW5rQWN0aW9uUHJlc01vZGVsXG4gIFVwZGF0ZVNoZWV0TGlua0FjdGlvbiA9ICd1cGRhdGVTaGVldGxpbmtBY3Rpb24nLFxuXG4gIC8vIERQSV9BY3Rpb25JdGVtLCBoYXZpbmcgdHlwZSBBY3Rpb25JdGVtUHJlc01vZGVsXG4gIEFjdGlvbkl0ZW0gPSAnYWN0aW9uSXRlbScsXG5cbiAgLy8gRFBJX0FjdGlvbkl0ZW1MaXN0LCBoYXZpbmcgdHlwZSBBY3Rpb25JdGVtUHJlc01vZGVsW11cbiAgQWN0aW9uSXRlbUxpc3QgPSAnYWN0aW9uSXRlbUxpc3QnLFxuXG4gIC8vIERQSV9EYXRhU2VnbWVudCwgaGF2aW5nIHR5cGUgRGF0YVNlZ21lbnRQcmVzTW9kZWxcbiAgRGF0YVNlZ21lbnQgPSAnZGF0YVNlZ21lbnQnLFxuXG4gIC8vIERQSV9EYXRhU2VnbWVudHMsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2YgRGF0YVNlZ21lbnRQcmVzTW9kZWwpXG4gIERhdGFTZWdtZW50cyA9ICdkYXRhU2VnbWVudHMnLFxuXG4gIC8vIERQSV9EYXRhRGljdGlvbmFyeSwgaGF2aW5nIHR5cGUgRGF0YURpY3Rpb25hcnlQcmVzTW9kZWxcbiAgRGF0YURpY3Rpb25hcnkgPSAnZGF0YURpY3Rpb25hcnknLFxuXG4gIC8vIERQSV9WaXpEYXRhLCBoYXZpbmcgdHlwZSBWaXpEYXRhUHJlc01vZGVsXG4gIFZpekRhdGEgPSAndml6RGF0YScsXG5cbiAgLy8gRFBJX1ZpekNvbHVtbiwgaGF2aW5nIHR5cGUgVml6Q29sdW1uUHJlc01vZGVsXG4gIFZpekNvbHVtbiA9ICd2aXpDb2x1bW4nLFxuXG4gIC8vIERQSV9WaXpDb2x1bW5zLCBoYXZpbmcgdHlwZSBWaXpDb2x1bW5QcmVzTW9kZWxbXVxuICBWaXpDb2x1bW5zID0gJ3ZpekNvbHVtbnMnLFxuXG4gIC8vIERQSV9WaXpEYXRhQ29sdW1uLCBoYXZpbmcgdHlwZSBWaXpEYXRhQ29sdW1uUHJlc01vZGVsXG4gIFZpekRhdGFDb2x1bW4gPSAndml6RGF0YUNvbHVtbicsXG5cbiAgLy8gRFBJX1ZpekRhdGFDb2x1bW5zLCBoYXZpbmcgdHlwZSBWaXpEYXRhQ29sdW1uUHJlc01vZGVsW11cbiAgVml6RGF0YUNvbHVtbnMgPSAndml6RGF0YUNvbHVtbnMnLFxuXG4gIC8vIERQSV9WaXpQYW5lQ29sdW1uLCBoYXZpbmcgdHlwZSBWaXpQYW5lQ29sdW1uUHJlc01vZGVsXG4gIFZpelBhbmVDb2x1bW4gPSAndml6UGFuZUNvbHVtbicsXG5cbiAgLy8gRFBJX1ZpelBhbmVDb2x1bW5zLCBoYXZpbmcgdHlwZSBWaXpQYW5lQ29sdW1uUHJlc01vZGVsW11cbiAgVml6UGFuZUNvbHVtbnMgPSAndml6UGFuZUNvbHVtbnMnLFxuXG4gIC8vIERQSV9QYW5lQ29sdW1ucywgaGF2aW5nIHR5cGUgUGFuZUNvbHVtbnNQcmVzTW9kZWxcbiAgUGFuZUNvbHVtbnMgPSAncGFuZUNvbHVtbnMnLFxuXG4gIC8vIERQSV9QYW5lQ29sdW1uc0xpc3QsIGhhdmluZyB0eXBlIFBhbmVDb2x1bW5zUHJlc01vZGVsW11cbiAgUGFuZUNvbHVtbnNMaXN0ID0gJ3BhbmVDb2x1bW5zTGlzdCcsXG5cbiAgLy8gRFBJX1BhbmVDb2x1bW5zRGF0YSwgaGF2aW5nIHR5cGUgUGFuZUNvbHVtbnNEYXRhUHJlc01vZGVsXG4gIFBhbmVDb2x1bW5zRGF0YSA9ICdwYW5lQ29sdW1uc0RhdGEnLFxuXG4gIC8vIERQSV9GaWx0ZXJDb250ZXh0LCBoYXZpbmcgdHlwZSBGaWx0ZXJDb250ZXh0UHJlc01vZGVsXG4gIEZpbHRlckNvbnRleHQgPSAnZmlsdGVyQ29udGV4dCcsXG5cbiAgLy8gRFBJX1ViZXJUaXBQYW5lRGF0YSwgaGF2aW5nIHR5cGUgVWJlclRpcFBhbmVEYXRhUHJlc01vZGVsXG4gIFViZXJUaXBQYW5lRGF0YSA9ICd1YmVydGlwUGFuZURhdGEnLFxuXG4gIC8vIERQSV9VYmVyVGlwUGFuZURhdGFzLCBoYXZpbmcgdHlwZSBVYmVyVGlwUGFuZURhdGFQcmVzTW9kZWxbXVxuICBVYmVyVGlwUGFuZURhdGFzID0gJ3ViZXJ0aXBQYW5lRGF0YXMnLFxuXG4gIC8vIERQSV9VYmVyVGlwRGF0YSwgaGF2aW5nIHR5cGUgVWJlclRpcERhdGFQcmVzTW9kZWxcbiAgVWJlclRpcERhdGEgPSAndWJlcnRpcERhdGEnLFxuXG4gIC8vIERQSV9SZWZMaW5lVGlwLCBoYXZpbmcgdHlwZSBSZWZMaW5lVGlwUHJlc01vZGVsXG4gIFJlZkxpbmVUaXAgPSAncmVmTGluZVRpcCcsXG5cbiAgLy8gRFBJX1JlZkxpbmVUaXBzLCBoYXZpbmcgdHlwZSBSZWZMaW5lVGlwUHJlc01vZGVsW11cbiAgUmVmTGluZVRpcHMgPSAncmVmTGluZVRpcHMnLFxuXG4gIC8vIERQSV9OdW1lcmljQmluLCBoYXZpbmcgdHlwZSBOdW1lcmljQmluUHJlc01vZGVsXG4gIE51bWVyaWNCaW4gPSAnbnVtZXJpY0JpbicsXG5cbiAgLy8gRFBJX051bWVyaWNCaW5EaWFsb2csIGhhdmluZyB0eXBlIE51bWVyaWNCaW5EaWFsb2dQcmVzTW9kZWxcbiAgTnVtZXJpY0JpbkRpYWxvZyA9ICdudW1lcmljQmluRGlhbG9nJyxcblxuICAvLyBEUElfRG9tYWluUmFuZ2UsIGhhdmluZyB0eXBlIERvbWFpblJhbmdlUHJlc01vZGVsXG4gIERvbWFpblJhbmdlID0gJ2RvbWFpblJhbmdlJyxcblxuICAvLyBEUElfQmluU2l6ZUluZm8sIGhhdmluZyB0eXBlIEJpblNpemVJbmZvUHJlc01vZGVsXG4gIEJpblNpemVJbmZvID0gJ2JpblNpemVJbmZvJyxcblxuICAvLyBEUElfRGV0YWlsZWRFcnJvckRpYWxvZywgaGF2aW5nIHR5cGUgRGV0YWlsZWRFcnJvclByZXNNb2RlbFxuICBEZXRhaWxlZEVycm9yRGlhbG9nID0gJ2RldGFpbGVkRXJyb3JEaWFsb2cnLFxuXG4gIC8vIERQSV9EcmFnU291cmNlUG9zaXRpb24sIGhhdmluZyB0eXBlIFNoZWxmRHJvcFBvc2l0aW9uUHJlc01vZGVsXG4gIERyYWdTb3VyY2VQb3NpdGlvbiA9ICdzaGVsZkRyYWdTb3VyY2VQb3NpdGlvbicsXG5cbiAgLy8gRFBJX0Ryb3BUYXJnZXRQb3NpdGlvbiwgaGF2aW5nIHR5cGUgU2hlbGZEcm9wUG9zaXRpb25QcmVzTW9kZWxcbiAgRHJvcFRhcmdldFBvc2l0aW9uID0gJ3NoZWxmRHJvcFRhcmdldFBvc2l0aW9uJyxcblxuICAvLyBEUElfU2hlbGZEcm9wUG9zaXRpb24sIGhhdmluZyB0eXBlIFNoZWxmRHJvcFBvc2l0aW9uUHJlc01vZGVsXG4gIFNoZWxmRHJvcFBvc2l0aW9uID0gJ3NoZWxmRHJvcFBvc2l0aW9uJyxcblxuICAvLyBEUElfU2hlbGZEcm9wUG9zaXRpb25zLCBoYXZpbmcgdHlwZSBTaGVsZkRyb3BQb3NpdGlvblByZXNNb2RlbFtdXG4gIFNoZWxmRHJvcFBvc2l0aW9ucyA9ICdzaGVsZkRyb3BQb3NpdGlvbnMnLFxuXG4gIC8vIERQSV9TaGVsZkRyb3BNb2RlbCwgaGF2aW5nIHR5cGUgU2hlbGZEcm9wUHJlc01vZGVsXG4gIFNoZWxmRHJvcE1vZGVsID0gJ3NoZWxmRHJvcE1vZGVsJyxcblxuICAvLyBEUElfU2hlbGZEcm9wTW9kZWxzLCBoYXZpbmcgdHlwZSBTaGVsZkRyb3BQcmVzTW9kZWxbXVxuICBTaGVsZkRyb3BNb2RlbHMgPSAnc2hlbGZEcm9wTW9kZWxzJyxcblxuICAvLyBEUElfRHJhZywgaGF2aW5nIHR5cGUgRHJhZ1ByZXNNb2RlbFxuICBEcmFnID0gJ2RyYWcnLFxuXG4gIC8vIERQSV9TY2VuZUVsZW1lbnQsIGhhdmluZyB0eXBlIFNjZW5lRWxlbWVudFByZXNNb2RlbFxuICBTY2VuZUVsZW1lbnQgPSAnc2NlbmVFbGVtZW50JyxcblxuICAvLyBEUElfU2NlbmVFbGVtZW50cywgaGF2aW5nIHR5cGUgU2NlbmVFbGVtZW50UHJlc01vZGVsW11cbiAgU2NlbmVFbGVtZW50cyA9ICdzY2VuZUVsZW1lbnRzJyxcblxuICAvLyBEUElfUXVpY2tGaWx0ZXJUeXBlLCBoYXZpbmcgdHlwZSBRdWlja0ZpbHRlclR5cGVcbiAgUXVpY2tGaWx0ZXJUeXBlID0gJ3F1aWNrRmlsdGVyVHlwZScsXG5cbiAgLy8gRFBJX0NhdE1vZGUsIGhhdmluZyB0eXBlIFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxNb2RlXG4gIENhdE1vZGUgPSAnY2F0ZWdvcmljYWxNb2RlJyxcblxuICAvLyBEUElfQ2F0Q3RybCwgaGF2aW5nIHR5cGUgUXVpY2tGaWx0ZXJDYXRlZ29yaWNhbEN0cmxcbiAgQ2F0Q3RybCA9ICdjYXRlZ29yaWNhbENvbnRyb2wnLFxuXG4gIC8vIERQSV9RdWFudE1vZGUsIGhhdmluZyB0eXBlIFF1aWNrRmlsdGVyUXVhbnRpdGF0aXZlTW9kZVxuICBRdWFudE1vZGUgPSAncXVhbnRpdGF0aXZlTW9kZScsXG5cbiAgLy8gRFBJX1F1YW50Q3RybCwgaGF2aW5nIHR5cGUgUXVpY2tGaWx0ZXJRdWFudGl0YXRpdmVDdHJsXG4gIFF1YW50Q3RybCA9ICdxdWFudGl0YXRpdmVDb250cm9sJyxcblxuICAvLyBEUElfWm9uZUNvbW1vbiwgaGF2aW5nIHR5cGUgWm9uZUNvbW1vblByZXNNb2RlbFxuICBab25lQ29tbW9uID0gJ3pvbmVDb21tb24nLFxuXG4gIC8vIERQSV9ab25lQ29tbW9uTGlzdEl0ZW1zLCBoYXZpbmcgdHlwZSBab25lQ29tbW9uUHJlc01vZGVsW11cbiAgWm9uZUNvbW1vbkxpc3RJdGVtcyA9ICd6b25lQ29tbW9uTGlzdEl0ZW1zJyxcblxuICAvLyBEUElfWm9uZSwgaGF2aW5nIHR5cGUgWm9uZVByZXNNb2RlbFxuICBab25lID0gJ3pvbmUnLFxuXG4gIC8vIERQSV9ab25lcywgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBab25lUHJlc01vZGVsKVxuICBab25lcyA9ICd6b25lcycsXG5cbiAgLy8gRFBJX0ltYWdlWm9uZSwgaGF2aW5nIHR5cGUgSW1hZ2Vab25lUHJlc01vZGVsXG4gIEltYWdlWm9uZSA9ICdpbWFnZVpvbmUnLFxuXG4gIC8vIERQSV9XZWJab25lLCBoYXZpbmcgdHlwZSBXZWJab25lUHJlc01vZGVsXG4gIFdlYlpvbmUgPSAnd2ViWm9uZScsXG5cbiAgLy8gRFBJX0J1dHRvblpvbmVQcmVzTW9kZWwsIGhhdmluZyB0eXBlIEJ1dHRvblpvbmVQcmVzTW9kZWxcbiAgQnV0dG9uWm9uZVByZXNNb2RlbCA9ICdidXR0b25ab25lJyxcblxuICAvLyBEUElfWm9uZUVkZ2VNb3ZlVHlwZSwgaGF2aW5nIHR5cGUgWm9uZUVkZ2VNb3ZlXG4gIFpvbmVFZGdlTW92ZVR5cGUgPSAnem9uZUVkZ2VNb3ZlVHlwZScsXG5cbiAgLy8gRFBJX1pvbmVTaWRlLCBoYXZpbmcgdHlwZSBTaWRlVHlwZVxuICBab25lU2lkZSA9ICd6b25lU2lkZScsXG5cbiAgLy8gRFBJX1NuYXBQb2ludCwgaGF2aW5nIHR5cGUgU25hcFBvaW50UHJlc01vZGVsXG4gIFNuYXBQb2ludCA9ICdzbmFwUG9pbnQnLFxuXG4gIC8vIERQSV9TbmFwUG9pbnRzLCBoYXZpbmcgdHlwZSBTbmFwUG9pbnRQcmVzTW9kZWxbXVxuICBTbmFwUG9pbnRzID0gJ3NuYXBQb2ludHMnLFxuXG4gIC8vIERQSV9UYXJnZXRQcmV2aWV3UGFpciwgaGF2aW5nIHR5cGUgRHJhZ0Ryb3BUYXJnZXRQcmV2aWV3UGFpclByZXNNb2RlbFxuICBUYXJnZXRQcmV2aWV3UGFpciA9ICd0YXJnZXRQcmV2aWV3UGFpcicsXG5cbiAgLy8gRFBJX1RhcmdldFByZXZpZXdQYWlycywgaGF2aW5nIHR5cGUgRHJhZ0Ryb3BUYXJnZXRQcmV2aWV3UGFpclByZXNNb2RlbFtdXG4gIFRhcmdldFByZXZpZXdQYWlycyA9ICd0YXJnZXRQcmV2aWV3UGFpcnMnLFxuXG4gIC8vIERQSV9Db250YWluZXJHdWlkZSwgaGF2aW5nIHR5cGUgRHJhZ0Ryb3BDb250YWluZXJHdWlkZVByZXNNb2RlbFxuICBDb250YWluZXJHdWlkZSA9ICdjb250YWluZXJHdWlkZScsXG5cbiAgLy8gRFBJX0NvbnRhaW5lckd1aWRlcywgaGF2aW5nIHR5cGUgRHJhZ0Ryb3BDb250YWluZXJHdWlkZVByZXNNb2RlbFtdXG4gIENvbnRhaW5lckd1aWRlcyA9ICdjb250YWluZXJHdWlkZXMnLFxuXG4gIC8vIERQSV9ab25lQm9yZGVyLCBoYXZpbmcgdHlwZSBEcmFnRHJvcFpvbmVCb3JkZXJQcmVzTW9kZWxcbiAgWm9uZUJvcmRlciA9ICd6b25lQm9yZGVyJyxcblxuICAvLyBEUElfWm9uZUJvcmRlcnMsIGhhdmluZyB0eXBlIERyYWdEcm9wWm9uZUJvcmRlclByZXNNb2RlbFtdXG4gIFpvbmVCb3JkZXJzID0gJ3pvbmVCb3JkZXJzJyxcblxuICAvLyBEUElfRGFzaGJvYXJkRHJhZ0Ryb3AsIGhhdmluZyB0eXBlIERhc2hib2FyZERyYWdEcm9wUHJlc01vZGVsXG4gIERhc2hib2FyZERyYWdEcm9wID0gJ3pvbmVEcmFnRHJvcCcsXG5cbiAgLy8gRFBJX0RyYWdab25lUmVzaXplLCBoYXZpbmcgdHlwZSBEcmFnWm9uZVJlc2l6ZVByZXNNb2RlbFxuICBEcmFnWm9uZVJlc2l6ZSA9ICd6b25lUmVzaXplJyxcblxuICAvLyBEUElfRGFzaGJvYXJkVGV4dCwgaGF2aW5nIHR5cGUgVGV4dFJlZ2lvblByZXNNb2RlbFxuICBEYXNoYm9hcmRUZXh0ID0gJ2Rhc2hib2FyZFRleHQnLFxuXG4gIC8vIERQSV9EYXNoYm9hcmRUaXRsZSwgaGF2aW5nIHR5cGUgVGV4dFJlZ2lvblByZXNNb2RlbFxuICBEYXNoYm9hcmRUaXRsZSA9ICdkYXNoYm9hcmRUaXRsZScsXG5cbiAgLy8gRFBJX1F1aWNrRmlsdGVyVGl0bGUsIGhhdmluZyB0eXBlIFRleHRSZWdpb25QcmVzTW9kZWxcbiAgUXVpY2tGaWx0ZXJUaXRsZSA9ICdxdWlja0ZpbHRlclRpdGxlJyxcblxuICAvLyBEUElfVmlzdWFsQ2FwdGlvbiwgaGF2aW5nIHR5cGUgVGV4dFJlZ2lvblByZXNNb2RlbFxuICBWaXN1YWxDYXB0aW9uID0gJ3Zpc3VhbENhcHRpb24nLFxuXG4gIC8vIERQSV9WaXN1YWxUaXRsZSwgaGF2aW5nIHR5cGUgVGV4dFJlZ2lvblByZXNNb2RlbFxuICBWaXN1YWxUaXRsZSA9ICd2aXN1YWxUaXRsZScsXG5cbiAgLy8gRFBJX1pvbmVUaXRsZVJlZ2lvbiwgaGF2aW5nIHR5cGUgVGV4dFJlZ2lvblByZXNNb2RlbFxuICBab25lVGl0bGVSZWdpb24gPSAnem9uZVRpdGxlJyxcblxuICAvLyBEUElfRm9yZWNhc3RPcHRpb25zLCBoYXZpbmcgdHlwZSBGb3JlY2FzdFByZXNNb2RlbFxuICBGb3JlY2FzdE9wdGlvbnMgPSAnZm9yZWNhc3RPcHRpb25zJyxcblxuICAvLyBEUElfRm9yZWNhc3REZXNjcmlwdGlvbiwgaGF2aW5nIHR5cGUgRm9yZWNhc3REZXNjcmliZVByZXNNb2RlbFxuICBGb3JlY2FzdERlc2NyaXB0aW9uID0gJ2ZvcmVjYXN0RGVzY3JpcHRpb24nLFxuXG4gIC8vIERQSV9Xb3JrZ3JvdXBQdWJsaXNoT2JqZWN0LCBoYXZpbmcgdHlwZSBXb3JrZ3JvdXBQdWJsaXNoT2JqZWN0UHJlc01vZGVsXG4gIFdvcmtncm91cFB1Ymxpc2hPYmplY3QgPSAncHVibGlzaERhdGFTb3VyY2UnLFxuXG4gIC8vIERQSV9QdWJsaXNoUGVybWlzc2lvbnNTdW1tYXJ5LCBoYXZpbmcgdHlwZSBQdWJsaXNoUGVybWlzc2lvbnNTdW1tYXJ5UHJlc01vZGVsXG4gIFB1Ymxpc2hQZXJtaXNzaW9uc1N1bW1hcnkgPSAncHVibGlzaFBlcm1pc3Npb25zU3VtbWFyeScsXG5cbiAgLy8gRFBJX0NoZWNrTmFtZVJlc3VsdHMsIGhhdmluZyB0eXBlIENoZWNrTmFtZVJlc3VsdHNQcmVzTW9kZWxcbiAgQ2hlY2tOYW1lUmVzdWx0cyA9ICdjaGVja05hbWVSZXN1bHRzJyxcblxuICAvLyBEUElfVmFsaWRhdGVQdWJsaXNoVmlld3NSZXN1bHQsIGhhdmluZyB0eXBlIFZhbGlkYXRlUHVibGlzaFZpZXdzUmVzdWx0UHJlc01vZGVsXG4gIFZhbGlkYXRlUHVibGlzaFZpZXdzUmVzdWx0ID0gJ3ZhbGlkYXRlUHVibGlzaFZpZXdzUmVzdWx0JyxcblxuICAvLyBEUElfUHVibGlzaEF1dGhlbnRpY2F0aW9uU2V0dGluZ3MsIGhhdmluZyB0eXBlIFB1Ymxpc2hBdXRoZW50aWNhdGlvblNldHRpbmdzUHJlc01vZGVsXG4gIFB1Ymxpc2hBdXRoZW50aWNhdGlvblNldHRpbmdzID0gJ3B1Ymxpc2hBdXRoZW50aWNhdGlvblNldHRpbmdzJyxcblxuICAvLyBEUElfTWFuYWdlRGF0YXNvdXJjZXMsIGhhdmluZyB0eXBlIE1hbmFnZURhdGFzb3VyY2VzUHJlc01vZGVsXG4gIE1hbmFnZURhdGFzb3VyY2VzID0gJ21hbmFnZURhdGFzb3VyY2VzJyxcblxuICAvLyBEUElfQ3JlZGVudGlhbHNBdXRoU2V0dGluZ3MsIGhhdmluZyB0eXBlIENyZWRlbnRpYWxzQXV0aFNldHRpbmdzUHJlc01vZGVsXG4gIENyZWRlbnRpYWxzQXV0aFNldHRpbmdzID0gJ2NyZWRlbnRpYWxzQXV0aFNldHRpbmdzJyxcblxuICAvLyBEUElfQ29ubmVjdGlvbkNyZWRlbnRpYWxzQXV0aFNldHRpbmdzLCBoYXZpbmcgdHlwZSBDb25uZWN0aW9uQ3JlZGVudGlhbHNBdXRoU2V0dGluZ3NQcmVzTW9kZWxcbiAgQ29ubmVjdGlvbkNyZWRlbnRpYWxzQXV0aFNldHRpbmdzID0gJ2Nvbm5lY3Rpb25DcmVkZW50aWFsc0F1dGhTZXR0aW5ncycsXG5cbiAgLy8gRFBJX0Nvbm5lY3Rpb25DcmVkZW50aWFsc0F1dGhTZXR0aW5nc0xpc3QsIGhhdmluZyB0eXBlIENvbm5lY3Rpb25DcmVkZW50aWFsc0F1dGhTZXR0aW5nc1ByZXNNb2RlbFtdXG4gIENvbm5lY3Rpb25DcmVkZW50aWFsc0F1dGhTZXR0aW5nc0xpc3QgPSAnY29ubmVjdGlvbkNyZWRlbnRpYWxzQXV0aFNldHRpbmdzTGlzdCcsXG5cbiAgLy8gRFBJX1B1Ymxpc2hEYXRhc291cmNlRnJvbVdvcmtib29rSW5mbywgaGF2aW5nIHR5cGUgUHVibGlzaERhdGFzb3VyY2VGcm9tV29ya2Jvb2tJbmZvUHJlc01vZGVsXG4gIFB1Ymxpc2hEYXRhc291cmNlRnJvbVdvcmtib29rSW5mbyA9ICdwdWJsaXNoRGF0YXNvdXJjZUZyb21Xb3JrYm9va0luZm8nLFxuXG4gIC8vIERQSV9QdWJsaXNoRGF0YXNvdXJjZXNGcm9tV29ya2Jvb2tJbmZvLCBoYXZpbmcgdHlwZSBQdWJsaXNoRGF0YXNvdXJjZUZyb21Xb3JrYm9va0luZm9QcmVzTW9kZWxbXVxuICBQdWJsaXNoRGF0YXNvdXJjZXNGcm9tV29ya2Jvb2tJbmZvID0gJ3B1Ymxpc2hEYXRhc291cmNlc0Zyb21Xb3JrYm9va0luZm8nLFxuXG4gIC8vIERQSV9QdWJsaXNoU2hlZXQsIGhhdmluZyB0eXBlIFB1Ymxpc2hTaGVldFByZXNNb2RlbFxuICBQdWJsaXNoU2hlZXQgPSAncHVibGlzaFNoZWV0JyxcblxuICAvLyBEUElfUHVibGlzaFNoZWV0cywgaGF2aW5nIHR5cGUgUHVibGlzaFNoZWV0UHJlc01vZGVsW11cbiAgUHVibGlzaFNoZWV0cyA9ICdwdWJsaXNoU2hlZXRzJyxcblxuICAvLyBEUElfUHVibGlzaE9iamVjdFZpZXdzLCBoYXZpbmcgdHlwZSBQdWJsaXNoT2JqZWN0Vmlld3NQcmVzTW9kZWxcbiAgUHVibGlzaE9iamVjdFZpZXdzID0gJ3B1Ymxpc2hPYmplY3RWaWV3cycsXG5cbiAgLy8gRFBJX1B1Ymxpc2hPYmplY3RQdWJsaXNoU2hlZXRSZXN1bHRzLCBoYXZpbmcgdHlwZSBQdWJsaXNoT2JqZWN0UHVibGlzaFNoZWV0UmVzdWx0c1ByZXNNb2RlbFxuICBQdWJsaXNoT2JqZWN0UHVibGlzaFNoZWV0UmVzdWx0cyA9ICdwdWJsaXNoT2JqZWN0UHVibGlzaFNoZWV0UmVzdWx0cycsXG5cbiAgLy8gRFBJX1JlZnJlc2hFeHRyYWN0U2NoZWR1bGluZ1NldHRpbmdzLCBoYXZpbmcgdHlwZSBSZWZyZXNoRXh0cmFjdFNjaGVkdWxpbmdTZXR0aW5nc1ByZXNNb2RlbFxuICBSZWZyZXNoRXh0cmFjdFNjaGVkdWxpbmdTZXR0aW5ncyA9ICdyZWZyZXNoRXh0cmFjdFNjaGVkdWxpbmdTZXR0aW5ncycsXG5cbiAgLy8gRFBJX1NldFJlZnJlc2hFeHRyYWN0U2NoZWR1bGVSZXN1bHQsIGhhdmluZyB0eXBlIFNldFJlZnJlc2hFeHRyYWN0U2NoZWR1bGVSZXN1bHRQcmVzTW9kZWxcbiAgU2V0UmVmcmVzaEV4dHJhY3RTY2hlZHVsZVJlc3VsdCA9ICdzZXRSZWZyZXNoRXh0cmFjdFNjaGVkdWxlUmVzdWx0JyxcblxuICAvLyBEUElfQ2hlY2tQdWJsaXNoT2JqZWN0TmFtZVdhcm5pbmdzUmVzdWx0cywgaGF2aW5nIHR5cGUgQ2hlY2tQdWJsaXNoT2JqZWN0TmFtZVdhcm5pbmdzUmVzdWx0c1ByZXNNb2RlbFxuICBDaGVja1B1Ymxpc2hPYmplY3ROYW1lV2FybmluZ3NSZXN1bHRzID0gJ2NoZWNrUHVibGlzaE9iamVjdE5hbWVXYXJuaW5nc1Jlc3VsdHMnLFxuXG4gIC8vIERQSV9QdWJsaXNoRGF0YXNvdXJjZU9uV29ya2Jvb2tQdWJsaXNoUmVzdWx0cywgaGF2aW5nIHR5cGUgUHVibGlzaERhdGFzb3VyY2VPbldvcmtib29rUHVibGlzaFJlc3VsdHNQcmVzTW9kZWxcbiAgUHVibGlzaERhdGFzb3VyY2VPbldvcmtib29rUHVibGlzaFJlc3VsdHMgPSAncHVibGlzaERhdGFzb3VyY2VPbldvcmtib29rUHVibGlzaFJlc3VsdCcsXG5cbiAgLy8gRFBJX1B1Ymxpc2hEYXRhU291cmNlUmVzdWx0LCBoYXZpbmcgdHlwZSBQdWJsaXNoRGF0YVNvdXJjZVJlc3VsdFByZXNNb2RlbFxuICBQdWJsaXNoRGF0YVNvdXJjZVJlc3VsdCA9ICdwdWJsaXNoRGF0YVNvdXJjZVJlc3VsdCcsXG5cbiAgLy8gRFBJX1B1Ymxpc2hXYXJuaW5nTWVzc2FnZSwgaGF2aW5nIHR5cGUgUHVibGlzaFdhcm5pbmdNZXNzYWdlUHJlc01vZGVsXG4gIFB1Ymxpc2hXYXJuaW5nTWVzc2FnZSA9ICdwdWJsaXNoV2FybmluZ01lc3NhZ2UnLFxuXG4gIC8vIERQSV9NdXN0RG93bmdyYWRlVG9QdWJsaXNoV2FybmluZ01lc3NhZ2VQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFB1Ymxpc2hXYXJuaW5nTWVzc2FnZVByZXNNb2RlbFxuICBNdXN0RG93bmdyYWRlVG9QdWJsaXNoV2FybmluZ01lc3NhZ2VQcmVzTW9kZWwgPSAnbXVzdERvd25ncmFkZVRvUHVibGlzaFdhcm5pbmdNZXNzYWdlUHJlc01vZGVsJyxcblxuICAvLyBEUElfUHVibGlzaFNlbGVjdGVkQXR0cmlidXRlcywgaGF2aW5nIHR5cGUgUHVibGlzaFNlbGVjdGVkQXR0cmlidXRlc1ByZXNNb2RlbFxuICBQdWJsaXNoU2VsZWN0ZWRBdHRyaWJ1dGVzID0gJ3B1Ymxpc2hTZWxlY3RlZEF0dHJpYnV0ZXMnLFxuXG4gIC8vIERQSV9BdXRvc2F2ZUZpbGUsIGhhdmluZyB0eXBlIEF1dG9zYXZlRmlsZVByZXNNb2RlbFxuICBBdXRvc2F2ZUZpbGUgPSAnYXV0b3NhdmVGaWxlJyxcblxuICAvLyBEUElfQXV0b3NhdmVGaWxlcywgaGF2aW5nIHR5cGUgQXV0b3NhdmVGaWxlUHJlc01vZGVsW11cbiAgQXV0b3NhdmVGaWxlcyA9ICdhdXRvc2F2ZUZpbGVzJyxcblxuICAvLyBEUElfRnVuY3Rpb25Hcm91cCwgaGF2aW5nIHR5cGUgRnVuY3Rpb25Hcm91cFxuICBGdW5jdGlvbkdyb3VwID0gJ2Z1bmNHcnAnLFxuXG4gIC8vIERQSV9GdW5jdGlvbkdyb3VwcywgaGF2aW5nIHR5cGUgRnVuY3Rpb25Hcm91cFtdXG4gIEZ1bmN0aW9uR3JvdXBzID0gJ2Z1bmNHcnBzJyxcblxuICAvLyBEUElfRnVuY3Rpb25BcmdUeXBlLCBoYXZpbmcgdHlwZSBGdW5jdGlvbkFyZ1R5cGVcbiAgRnVuY3Rpb25BcmdUeXBlID0gJ2Z1bmNBcmdUeXBlJyxcblxuICAvLyBEUElfRnVuY3Rpb25BcmdUeXBlcywgaGF2aW5nIHR5cGUgRnVuY3Rpb25BcmdUeXBlW11cbiAgRnVuY3Rpb25BcmdUeXBlcyA9ICdmdW5jQXJnVHlwZXMnLFxuXG4gIC8vIERQSV9DYWxjdWxhdGlvblN0eWxlLCBoYXZpbmcgdHlwZSBDYWxjU3R5bGVcbiAgQ2FsY3VsYXRpb25TdHlsZSA9ICdjYWxjdWxhdGlvblN0eWxlJyxcblxuICAvLyBEUElfQ2FsY3VsYXRpb24sIGhhdmluZyB0eXBlIENhbGN1bGF0aW9uUHJlc01vZGVsXG4gIENhbGN1bGF0aW9uID0gJ2NhbGN1bGF0aW9uJyxcblxuICAvLyBEUElfVHlwZUluUGlsbCwgaGF2aW5nIHR5cGUgQ2FsY3VsYXRpb25QcmVzTW9kZWxcbiAgVHlwZUluUGlsbCA9ICd0eXBlSW5QaWxsJyxcblxuICAvLyBEUElfQ2FsY0Vycm9ySW5mbywgaGF2aW5nIHR5cGUgQ2FsY0Vycm9ySW5mb1ByZXNNb2RlbFxuICBDYWxjRXJyb3JJbmZvID0gJ2Vycm9ySW5mbycsXG5cbiAgLy8gRFBJX0NhbGNFcnJvckluZm9zLCBoYXZpbmcgdHlwZSBDYWxjRXJyb3JJbmZvUHJlc01vZGVsW11cbiAgQ2FsY0Vycm9ySW5mb3MgPSAnZXJyb3JJbmZvTGlzdCcsXG5cbiAgLy8gRFBJX0NhbGN1YWx0aW9uVmFsaWRhdGlvbiwgaGF2aW5nIHR5cGUgQ2FsY3VsYXRpb25WYWxpZGF0aW9uUHJlc01vZGVsXG4gIENhbGN1YWx0aW9uVmFsaWRhdGlvbiA9ICdjYWxjdWxhdGlvblZhbGlkYXRpb24nLFxuXG4gIC8vIERQSV9FeHByZXNzaW9uRnVuY3Rpb24sIGhhdmluZyB0eXBlIEV4cHJlc3Npb25GdW5jdGlvblByZXNNb2RlbFxuICBFeHByZXNzaW9uRnVuY3Rpb24gPSAnZXhwcmVzc2lvbkZ1bmMnLFxuXG4gIC8vIERQSV9FeHByZXNzaW9uRnVuY3Rpb25zLCBoYXZpbmcgdHlwZSBFeHByZXNzaW9uRnVuY3Rpb25QcmVzTW9kZWxbXVxuICBFeHByZXNzaW9uRnVuY3Rpb25zID0gJ2V4cHJlc3Npb25GdW5jTGlzdCcsXG5cbiAgLy8gRFBJX0V4cHJlc3Npb25GdW5jdGlvbnNQTSwgaGF2aW5nIHR5cGUgRXhwcmVzc2lvbkZ1bmN0aW9uc1ByZXNNb2RlbFxuICBFeHByZXNzaW9uRnVuY3Rpb25zUE0gPSAnZXhwcmVzc2lvbkZ1bmNQbScsXG5cbiAgLy8gRFBJX1N0eWxlVG9rZW4sIGhhdmluZyB0eXBlIFN0eWxlVG9rZW5QcmVzTW9kZWxcbiAgU3R5bGVUb2tlbiA9ICdzdHlsZVRva2VuJyxcblxuICAvLyBEUElfU3R5bGVUb2tlbnMsIGhhdmluZyB0eXBlIFN0eWxlVG9rZW5QcmVzTW9kZWxbXVxuICBTdHlsZVRva2VucyA9ICdzdHlsZVRva2VuTGlzdCcsXG5cbiAgLy8gRFBJX0NhbGNFZGl0b3JUZXh0U2VsZWN0aW9uLCBoYXZpbmcgdHlwZSBDYWxjRWRpdG9yVGV4dFNlbGVjdGlvblByZXNNb2RlbFxuICBDYWxjRWRpdG9yVGV4dFNlbGVjdGlvbiA9ICdjYWxjRWRpdG9yVGV4dFNlbGVjdGlvbicsXG5cbiAgLy8gRFBJX0F1dG9Db21wbGV0ZUl0ZW1UeXBlLCBoYXZpbmcgdHlwZSBBdXRvQ29tcGxldGVJdGVtVHlwZVxuICBBdXRvQ29tcGxldGVJdGVtVHlwZSA9ICdhdXRvY29tcGxldGVUeXBlJyxcblxuICAvLyBEUElfQXV0b0NvbXBsZXRlSXRlbSwgaGF2aW5nIHR5cGUgQXV0b0NvbXBsZXRlSXRlbVByZXNNb2RlbFxuICBBdXRvQ29tcGxldGVJdGVtID0gJ2F1dG9jb21wbGV0ZUl0ZW0nLFxuXG4gIC8vIERQSV9BdXRvQ29tcGxldGVJdGVtcywgaGF2aW5nIHR5cGUgQXV0b0NvbXBsZXRlSXRlbVByZXNNb2RlbFtdXG4gIEF1dG9Db21wbGV0ZUl0ZW1zID0gJ2F1dG9jb21wbGV0ZUl0ZW1MaXN0JyxcblxuICAvLyBEUElfQ2FsY3VsYXRpb25BdXRvQ29tcGxldGVDb250ZXh0TWVudSwgaGF2aW5nIHR5cGUgQ2FsY3VsYXRpb25BdXRvQ29tcGxldGVDb250ZXh0TWVudVByZXNNb2RlbFxuICBDYWxjdWxhdGlvbkF1dG9Db21wbGV0ZUNvbnRleHRNZW51ID0gJ2NhbGN1bGF0aW9uQXV0b2NvbXBsZXRlQ29udGV4dE1lbnUnLFxuXG4gIC8vIERQSV9DYWxjQXBwbHlSZXN1bHQsIGhhdmluZyB0eXBlIENhbGNBcHBseVJlc3VsdFxuICBDYWxjQXBwbHlSZXN1bHQgPSAnY2FsY3VsYXRpb25BcHBseVJlc3VsdCcsXG5cbiAgLy8gRFBJX1JhbXBCb3JkZXJTdHlsZWRCb3gsIGhhdmluZyB0eXBlIFN0eWxlZEJveFByZXNNb2RlbFxuICBSYW1wQm9yZGVyU3R5bGVkQm94ID0gJ3JhbXBCb3JkZXJTdHlsZWRCb3gnLFxuXG4gIC8vIERQSV9TdHlsZWRCb3gsIGhhdmluZyB0eXBlIFN0eWxlZEJveFByZXNNb2RlbFxuICBTdHlsZWRCb3ggPSAnc3R5bGVkQm94JyxcblxuICAvLyBEUElfR2xvYmFsU3R5bGVkQm94LCBoYXZpbmcgdHlwZSBTdHlsZWRCb3hQcmVzTW9kZWxcbiAgR2xvYmFsU3R5bGVkQm94ID0gJ2dsb2JhbFN0eWxlZEJveCcsXG5cbiAgLy8gRFBJX1N0eWxlQ29udGV4dCwgaGF2aW5nIHR5cGUgU3R5bGVDb250ZXh0UHJlc01vZGVsXG4gIFN0eWxlQ29udGV4dCA9ICdzdHlsZUNvbnRleHQnLFxuXG4gIC8vIERQSV9DdXJyZW50VGV4dFN0eWxlLCBoYXZpbmcgdHlwZSBUZXh0U3R5bGVQcmVzTW9kZWxcbiAgQ3VycmVudFRleHRTdHlsZSA9ICdjdXJyZW50VGV4dFN0eWxlJyxcblxuICAvLyBEUElfTGFiZWxUZXh0U3R5bGUsIGhhdmluZyB0eXBlIFRleHRTdHlsZVByZXNNb2RlbFxuICBMYWJlbFRleHRTdHlsZSA9ICdsYWJlbFRleHRTdHlsZScsXG5cbiAgLy8gRFBJX09yaWdpbmFsVGV4dFN0eWxlLCBoYXZpbmcgdHlwZSBUZXh0U3R5bGVQcmVzTW9kZWxcbiAgT3JpZ2luYWxUZXh0U3R5bGUgPSAnb3JpZ2luYWxUZXh0U3R5bGUnLFxuXG4gIC8vIERQSV9TZWxlY3RlZFRleHRTdHlsZU1vZGVsLCBoYXZpbmcgdHlwZSBUZXh0U3R5bGVQcmVzTW9kZWxcbiAgU2VsZWN0ZWRUZXh0U3R5bGVNb2RlbCA9ICdzZWxlY3RlZFRleHRTdHlsZU1vZGVsJyxcblxuICAvLyBEUElfU3dhdGNoVGV4dFN0eWxlTW9kZWwsIGhhdmluZyB0eXBlIFRleHRTdHlsZVByZXNNb2RlbFxuICBTd2F0Y2hUZXh0U3R5bGVNb2RlbCA9ICdzd2F0Y2hUZXh0U3R5bGUnLFxuXG4gIC8vIERQSV9UZXh0U3R5bGVNb2RlbCwgaGF2aW5nIHR5cGUgVGV4dFN0eWxlUHJlc01vZGVsXG4gIFRleHRTdHlsZU1vZGVsID0gJ3RleHRTdHlsZScsXG5cbiAgLy8gRFBJX1RpdGxlU3R5bGVNb2RlbCwgaGF2aW5nIHR5cGUgVGV4dFN0eWxlUHJlc01vZGVsXG4gIFRpdGxlU3R5bGVNb2RlbCA9ICd0aXRsZVN0eWxlTW9kZWwnLFxuXG4gIC8vIERQSV9Qcm9wZXJ0eUJhZywgaGF2aW5nIHR5cGUgUHJvcGVydHlCYWdQcmVzTW9kZWxcbiAgUHJvcGVydHlCYWcgPSAncHJvcEJhZ1dyYXBwZXInLFxuXG4gIC8vIERQSV9QcmVzTW9kZWxNYXAsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2YgUHJvcGVydHlCYWdQcmVzTW9kZWwpXG4gIFByZXNNb2RlbE1hcCA9ICdwcmVzTW9kZWxNYXAnLFxuXG4gIC8vIERQSV9QcmVzZW50YXRpb25MYXllck5vdGlmaWNhdGlvbnMsIGhhdmluZyB0eXBlIFByZXNNb2RlbE1hcFByZXNNb2RlbFxuICBQcmVzZW50YXRpb25MYXllck5vdGlmaWNhdGlvbnMgPSAncHJlc2VudGF0aW9uTGF5ZXJOb3RpZmljYXRpb25zJyxcblxuICAvLyBEUElfU2Vjb25kYXJ5SW5mbywgaGF2aW5nIHR5cGUgUHJlc01vZGVsTWFwUHJlc01vZGVsXG4gIFNlY29uZGFyeUluZm8gPSAnc2Vjb25kYXJ5SW5mbycsXG5cbiAgLy8gRFBJX0NsaWVudERhc2hib2FyZFVJTWV0cmljLCBoYXZpbmcgdHlwZSBDbGllbnREYXNoYm9hcmRVSU1ldHJpY1ByZXNNb2RlbFxuICBDbGllbnREYXNoYm9hcmRVSU1ldHJpYyA9ICdjbGllbnREYXNoYm9hcmRVaU1ldHJpYycsXG5cbiAgLy8gRFBJX0NsaWVudERhc2hib2FyZFVJTWV0cmljcywgaGF2aW5nIHR5cGUgQ2xpZW50RGFzaGJvYXJkVUlNZXRyaWNQcmVzTW9kZWxbXVxuICBDbGllbnREYXNoYm9hcmRVSU1ldHJpY3MgPSAnY2xpZW50RGFzaGJvYXJkVWlNZXRyaWNzJyxcblxuICAvLyBEUElfQ2xpZW50RGFzaGJvYXJkVUlNZXRyaWNDb250YWluZXIsIGhhdmluZyB0eXBlIENsaWVudERhc2hib2FyZFVJTWV0cmljQ29udGFpbmVyUHJlc01vZGVsXG4gIENsaWVudERhc2hib2FyZFVJTWV0cmljQ29udGFpbmVyID0gJ2NsaWVudERhc2hib2FyZFVpTWV0cmljQ29udGFpbmVyJyxcblxuICAvLyBEUElfRXh0U3ZjQ29uZmlnLCBoYXZpbmcgdHlwZSBFeHRTdmNDb25maWdQcmVzTW9kZWxcbiAgRXh0U3ZjQ29uZmlnID0gJ2V4dFN2Y0NvbmZpZycsXG5cbiAgLy8gRFBJX1N0b3J5Ym9hcmRTaGVldEl0ZW0sIGhhdmluZyB0eXBlIFN0b3J5Ym9hcmRTaGVldEl0ZW1QcmVzTW9kZWxcbiAgU3Rvcnlib2FyZFNoZWV0SXRlbSA9ICdzdG9yeWJvYXJkU2hlZXRJdGVtJyxcblxuICAvLyBEUElfU3Rvcnlib2FyZFNoZWV0SXRlbXMsIGhhdmluZyB0eXBlIFN0b3J5Ym9hcmRTaGVldEl0ZW1QcmVzTW9kZWxbXVxuICBTdG9yeWJvYXJkU2hlZXRJdGVtcyA9ICdzdG9yeWJvYXJkU2hlZXRJdGVtcycsXG5cbiAgLy8gRFBJX1N0b3J5Ym9hcmRTaGVldExpc3QsIGhhdmluZyB0eXBlIFN0b3J5Ym9hcmRTaGVldExpc3RQcmVzTW9kZWxcbiAgU3Rvcnlib2FyZFNoZWV0TGlzdCA9ICdzdG9yeWJvYXJkU2hlZXRMaXN0JyxcblxuICAvLyBEUElfRml0VG9TdG9yeUJvYXJkT3B0aW9uSXRlbSwgaGF2aW5nIHR5cGUgRml0VG9TdG9yeUJvYXJkT3B0aW9uSXRlbVByZXNNb2RlbFxuICBGaXRUb1N0b3J5Qm9hcmRPcHRpb25JdGVtID0gJ2ZpdFRvU3Rvcnlib2FyZE9wdGlvbkl0ZW0nLFxuXG4gIC8vIERQSV9GaXRUb1N0b3J5Qm9hcmRPcHRpb25JdGVtcywgaGF2aW5nIHR5cGUgRml0VG9TdG9yeUJvYXJkT3B0aW9uSXRlbVByZXNNb2RlbFtdXG4gIEZpdFRvU3RvcnlCb2FyZE9wdGlvbkl0ZW1zID0gJ2ZpdFRvU3Rvcnlib2FyZE9wdGlvbkl0ZW1zJyxcblxuICAvLyBEUElfRml0VG9TdG9yeUJvYXJkT3B0aW9uTGlzdCwgaGF2aW5nIHR5cGUgRml0VG9TdG9yeUJvYXJkT3B0aW9uTGlzdFByZXNNb2RlbFxuICBGaXRUb1N0b3J5Qm9hcmRPcHRpb25MaXN0ID0gJ2ZpdFRvU3Rvcnlib2FyZE9wdGlvbkxpc3QnLFxuXG4gIC8vIERQSV9TdG9yeVBvaW50TmF2SXRlbSwgaGF2aW5nIHR5cGUgU3RvcnlQb2ludE5hdkl0ZW1QcmVzTW9kZWxcbiAgU3RvcnlQb2ludE5hdkl0ZW0gPSAnc3Rvcnlwb2ludE5hdkl0ZW0nLFxuXG4gIC8vIERQSV9TdG9yeVBvaW50TmF2SXRlbXMsIGhhdmluZyB0eXBlIFN0b3J5UG9pbnROYXZJdGVtUHJlc01vZGVsW11cbiAgU3RvcnlQb2ludE5hdkl0ZW1zID0gJ3N0b3J5cG9pbnROYXZJdGVtcycsXG5cbiAgLy8gRFBJX0ZsaXBib2FyZE5hdiwgaGF2aW5nIHR5cGUgRmxpcGJvYXJkTmF2UHJlc01vZGVsXG4gIEZsaXBib2FyZE5hdiA9ICdmbGlwYm9hcmROYXYnLFxuXG4gIC8vIERQSV9TY3JvbGxCYXJTdHlsZSwgaGF2aW5nIHR5cGUgU2Nyb2xsQmFyU3R5bGVQcmVzTW9kZWxcbiAgU2Nyb2xsQmFyU3R5bGUgPSAnc2Nyb2xsQmFyU3R5bGUnLFxuXG4gIC8vIERQSV9EYXNoYm9hcmRab25lTGF5b3V0UGFuZSwgaGF2aW5nIHR5cGUgRGFzaGJvYXJkWm9uZUxheW91dFBhbmVQcmVzTW9kZWxcbiAgRGFzaGJvYXJkWm9uZUxheW91dFBhbmUgPSAnZGFzaGJvYXJkWm9uZUxheW91dFBhbmUnLFxuXG4gIC8vIERQSV9TZWxlY3RlZFN0b3J5UG9pbnRTdHlsZSwgaGF2aW5nIHR5cGUgU3RvcnlQb2ludENhcHRpb25TdHlsZVByZXNNb2RlbFxuICBTZWxlY3RlZFN0b3J5UG9pbnRTdHlsZSA9ICdzZWxlY3RlZFN0b3J5UG9pbnRTdHlsZScsXG5cbiAgLy8gRFBJX1Vuc2VsZWN0ZWRTdG9yeVBvaW50U3R5bGUsIGhhdmluZyB0eXBlIFN0b3J5UG9pbnRDYXB0aW9uU3R5bGVQcmVzTW9kZWxcbiAgVW5zZWxlY3RlZFN0b3J5UG9pbnRTdHlsZSA9ICd1bnNlbGVjdGVkU3RvcnlQb2ludFN0eWxlJyxcblxuICAvLyBEUElfRmxpcGJvYXJkTmF2U3R5bGUsIGhhdmluZyB0eXBlIEZsaXBib2FyZE5hdlN0eWxlUHJlc01vZGVsXG4gIEZsaXBib2FyZE5hdlN0eWxlID0gJ2ZsaXBib2FyZE5hdlN0eWxlJyxcblxuICAvLyBEUElfU3RvcnlQb2ludCwgaGF2aW5nIHR5cGUgU3RvcnlQb2ludFByZXNNb2RlbFxuICBTdG9yeVBvaW50ID0gJ3N0b3J5UG9pbnQnLFxuXG4gIC8vIERQSV9TdG9yeVBvaW50cywgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBTdG9yeVBvaW50UHJlc01vZGVsKVxuICBTdG9yeVBvaW50cyA9ICdzdG9yeVBvaW50cycsXG5cbiAgLy8gRFBJX0ZsaXBib2FyZCwgaGF2aW5nIHR5cGUgRmxpcGJvYXJkUHJlc01vZGVsXG4gIEZsaXBib2FyZCA9ICdmbGlwYm9hcmQnLFxuXG4gIC8vIERQSV9TdG9yeVBhaXIsIGhhdmluZyB0eXBlIFN0b3J5UGFpclByZXNNb2RlbFxuICBTdG9yeVBhaXIgPSAnc3RvcnlQYWlyJyxcblxuICAvLyBEUElfU3RvcnlQYWlycywgaGF2aW5nIHR5cGUgU3RvcnlQYWlyUHJlc01vZGVsW11cbiAgU3RvcnlQYWlycyA9ICdzdG9yeVBhaXJzJyxcblxuICAvLyBEUElfU3Rvcnlib2FyZFBNLCBoYXZpbmcgdHlwZSBTdG9yeWJvYXJkUHJlc01vZGVsXG4gIFN0b3J5Ym9hcmRQTSA9ICdzdG9yeWJvYXJkUG0nLFxuXG4gIC8vIERQSV9IaURwaUljb25EaWN0aW9uYXJ5LCBoYXZpbmcgdHlwZSBJbWFnZUNvbGxlY3Rpb25QcmVzTW9kZWxcbiAgSGlEcGlJY29uRGljdGlvbmFyeSA9ICdoaURwaUljb25EaWN0aW9uYXJ5JyxcblxuICAvLyBEUElfSWNvbkRpY3Rpb25hcnksIGhhdmluZyB0eXBlIEltYWdlQ29sbGVjdGlvblByZXNNb2RlbFxuICBJY29uRGljdGlvbmFyeSA9ICdpY29uRGljdGlvbmFyeScsXG5cbiAgLy8gRFBJX0ljb25SZXNvdXJjZURpY3Rpb25hcnksIGhhdmluZyB0eXBlIEltYWdlUmVzb3VyY2VDb2xsZWN0aW9uUHJlc01vZGVsXG4gIEljb25SZXNvdXJjZURpY3Rpb25hcnkgPSAnaWNvblJlc0RpY3Rpb25hcnknLFxuXG4gIC8vIERQSV9EYXRhUHJldmlld1dpbmRvd01lc3NhZ2UsIGhhdmluZyB0eXBlIERhdGFQcmV2aWV3V2luZG93TWVzc2FnZVByZXNNb2RlbFxuICBEYXRhUHJldmlld1dpbmRvd01lc3NhZ2UgPSAnZGF0YVByZXZpZXdXaW5kb3dNZXNzYWdlJyxcblxuICAvLyBEUElfRGF0YVNvdXJjZURhdGEsIGhhdmluZyB0eXBlIERhdGFTb3VyY2VEYXRhUHJlc01vZGVsXG4gIERhdGFTb3VyY2VEYXRhID0gJ2RhdGFTcmNEYXRhJyxcblxuICAvLyBEUElfRGF0YVNvdXJjZVNvcnQsIGhhdmluZyB0eXBlIERhdGFTb3VyY2VTb3J0UHJlc01vZGVsXG4gIERhdGFTb3VyY2VTb3J0ID0gJ2RhdGFTcmNTb3J0JyxcblxuICAvLyBEUElfQ29sdW1uSW5mbywgaGF2aW5nIHR5cGUgRFNDb2x1bW5JbmZvUHJlc01vZGVsXG4gIENvbHVtbkluZm8gPSAnY29sdW1uSW5mbycsXG5cbiAgLy8gRFBJX0NvbHVtbkluZm9zLCBoYXZpbmcgdHlwZSBEU0NvbHVtbkluZm9QcmVzTW9kZWxbXVxuICBDb2x1bW5JbmZvcyA9ICdjb2x1bW5JbmZvcycsXG5cbiAgLy8gRFBJX0RhdGFGb3JtYXR0ZXIsIGhhdmluZyB0eXBlIERWRm9ybWF0dGVyXG4gIERhdGFGb3JtYXR0ZXIgPSAnZGF0YUZvcm1hdHRlcicsXG5cbiAgLy8gRFBJX0pvaW5EZXNjcmlwdGlvbiwgaGF2aW5nIHR5cGUgSm9pbkRlc2NyaXB0aW9uUHJlc01vZGVsXG4gIEpvaW5EZXNjcmlwdGlvbiA9ICdqb2luRGVzY3JpcHRpb24nLFxuXG4gIC8vIERQSV9Kb2luRGVzY3JpcHRpb25zLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIEpvaW5EZXNjcmlwdGlvblByZXNNb2RlbClcbiAgSm9pbkRlc2NyaXB0aW9ucyA9ICdqb2luRGVzY3JpcHRpb25zJyxcblxuICAvLyBEUElfRmlsZVRhYmxlSW5mbywgaGF2aW5nIHR5cGUgRmlsZVRhYmxlSW5mb1ByZXNNb2RlbFxuICBGaWxlVGFibGVJbmZvID0gJ2ZpbGVUYWJsZUluZm8nLFxuXG4gIC8vIERQSV9GaWVsZE1hcHBpbmcsIGhhdmluZyB0eXBlIEZpZWxkTWFwcGluZ1ByZXNNb2RlbFxuICBGaWVsZE1hcHBpbmcgPSAnZmllbGRNYXBwaW5nJyxcblxuICAvLyBEUElfRmllbGRNYXBwaW5nRGF0YSwgaGF2aW5nIHR5cGUgRmllbGRNYXBwaW5nRGF0YVByZXNNb2RlbFxuICBGaWVsZE1hcHBpbmdEYXRhID0gJ2ZpZWxkTWFwcGluZ0RhdGEnLFxuXG4gIC8vIERQSV9GaWVsZE1hcHBpbmdEYXRhVmVjdG9yLCBoYXZpbmcgdHlwZSBGaWVsZE1hcHBpbmdEYXRhUHJlc01vZGVsW11cbiAgRmllbGRNYXBwaW5nRGF0YVZlY3RvciA9ICdmaWVsZE1hcHBpbmdEYXRhVmVjdG9yJyxcblxuICAvLyBEUElfRnJhbWVGaW5kZXIsIGhhdmluZyB0eXBlIEZyYW1lRmluZGVyUHJlc01vZGVsXG4gIEZyYW1lRmluZGVyID0gJ2ZyYW1lRmluZGVyJyxcblxuICAvLyBEUElfU2hlZXRMaW5rRmllbGRNYXBwaW5nLCBoYXZpbmcgdHlwZSBTaGVldExpbmtGaWVsZE1hcHBpbmdQcmVzTW9kZWxcbiAgU2hlZXRMaW5rRmllbGRNYXBwaW5nID0gJ3NoZWV0TGlua0ZpZWxkTWFwcGluZycsXG5cbiAgLy8gRFBJX1VuaW9uSW5mbywgaGF2aW5nIHR5cGUgVW5pb25JbmZvUHJlc01vZGVsXG4gIFVuaW9uSW5mbyA9ICd1bmlvbkluZm8nLFxuXG4gIC8vIERQSV9VbmlvblRhYmxlSW5mbywgaGF2aW5nIHR5cGUgVW5pb25UYWJsZUluZm9QcmVzTW9kZVxuICBVbmlvblRhYmxlSW5mbyA9ICd1bmlvblRhYmxlSW5mbycsXG5cbiAgLy8gRFBJX1VuaW9uVGFibGVJbmZvcywgaGF2aW5nIHR5cGUgVW5pb25UYWJsZUluZm9QcmVzTW9kZWxbXVxuICBVbmlvblRhYmxlSW5mb3MgPSAndW5pb25UYWJsZUluZm9zJyxcblxuICAvLyBEUElfQ29ubmVjdGlvblBCVW5pb25JbmZvLCBoYXZpbmcgdHlwZSBQQlVuaW9uSW5mb1ByZXNNb2RlbFxuICBDb25uZWN0aW9uUEJVbmlvbkluZm8gPSAnY29ubmVjdGlvblBidW5pb25JbmZvJyxcblxuICAvLyBEUElfQ29ubmVjdGlvblBCVW5pb25JbmZvcywgaGF2aW5nIHR5cGUgUEJVbmlvbkluZm9QcmVzTW9kZWxbXVxuICBDb25uZWN0aW9uUEJVbmlvbkluZm9zID0gJ2Nvbm5lY3Rpb25QYnVuaW9uSW5mb3MnLFxuXG4gIC8vIERQSV9Kb2luQ2xhdXNlLCBoYXZpbmcgdHlwZSBKb2luQ2xhdXNlUHJlc01vZGVsXG4gIEpvaW5DbGF1c2UgPSAnam9pbkNsYXVzZScsXG5cbiAgLy8gRFBJX0pvaW5DbGF1c2VzLCBoYXZpbmcgdHlwZSBKb2luQ2xhdXNlUHJlc01vZGVsW11cbiAgSm9pbkNsYXVzZXMgPSAnam9pbkNsYXVzZXMnLFxuXG4gIC8vIERQSV9Kb2luVmFsaWRhdGlvblJlc3VsdCwgaGF2aW5nIHR5cGUgSm9pblZhbGlkYXRpb25SZXN1bHRQcmVzTW9kZWxcbiAgSm9pblZhbGlkYXRpb25SZXN1bHQgPSAnam9pblZhbGlkYXRpb25SZXN1bHQnLFxuXG4gIC8vIERQSV9Kb2luVGFibGVJbmZvLCBoYXZpbmcgdHlwZSBKb2luVGFibGVJbmZvUHJlc01vZGVsXG4gIEpvaW5UYWJsZUluZm8gPSAnam9pblRhYmxlSW5mbycsXG5cbiAgLy8gRFBJX1BhcmFtZXRlckluZm8sIGhhdmluZyB0eXBlIEpvaW5UYWJsZUluZm9QcmVzTW9kZWxcbiAgUGFyYW1ldGVySW5mbyA9ICdwYXJhbWV0ZXJJbmZvJyxcblxuICAvLyBEUElfSm9pblRhYmxlSW5mb3MsIGhhdmluZyB0eXBlIEpvaW5UYWJsZUluZm9QcmVzTW9kZWxbXVxuICBKb2luVGFibGVJbmZvcyA9ICdqb2luVGFibGVJbmZvcycsXG5cbiAgLy8gRFBJX0pvaW5PbkNhbGNJbmZvLCBoYXZpbmcgdHlwZSBKb2luT25DYWxjSW5mb1ByZXNNb2RlbFxuICBKb2luT25DYWxjSW5mbyA9ICdqb2luT25DYWxjSW5mbycsXG5cbiAgLy8gRFBJX0Nvbm5lY3Rpb25TdW1tYXJ5LCBoYXZpbmcgdHlwZSBDb25uZWN0aW9uU3VtbWFyeVByZXNNb2RlbFxuICBDb25uZWN0aW9uU3VtbWFyeSA9ICdjb25uZWN0aW9uU3VtbWFyeScsXG5cbiAgLy8gRFBJX0Nvbm5lY3Rpb25TdW1tYXJpZXMsIGhhdmluZyB0eXBlIENvbm5lY3Rpb25TdW1tYXJ5UHJlc01vZGVsW11cbiAgQ29ubmVjdGlvblN1bW1hcmllcyA9ICdjb25uZWN0aW9uU3VtbWFyaWVzJyxcblxuICAvLyBEUElfVG9wTGV2ZWxDb25uZWN0aW9uRGVzY3JpcHRpb24sIGhhdmluZyB0eXBlIFRvcExldmVsQ29ubmVjdGlvbkRlc2NyaXB0aW9uUHJlc01vZGVsXG4gIFRvcExldmVsQ29ubmVjdGlvbkRlc2NyaXB0aW9uID0gJ3RvcExldmVsQ29ubmVjdGlvbkRlc2NyaXB0aW9uJyxcblxuICAvLyBEUElfRGF0YUNvbm5lY3Rpb25UYWJsZVZpZXdNZXNzYWdlcywgaGF2aW5nIHR5cGUgRGF0YUNvbm5lY3Rpb25UYWJsZVZpZXdNZXNzYWdlc1ByZXNNb2RlbFxuICBEYXRhQ29ubmVjdGlvblRhYmxlVmlld01lc3NhZ2VzID0gJ2RhdGFDb25uZWN0aW9uVGFibGVWaWV3TWVzc2FnZXMnLFxuXG4gIC8vIERQSV9UZXh0VHJhbnNmb3JtU2NyaXB0LCBoYXZpbmcgdHlwZSBUZXh0VHJhbnNmb3JtU2NyaXB0UHJlc01vZGVsXG4gIFRleHRUcmFuc2Zvcm1TY3JpcHQgPSAndGV4dFRyYW5zZm9ybVNjcmlwdCcsXG5cbiAgLy8gRFBJX0NhbGVuZGFyRGF0ZU9wdGlvbnMsIGhhdmluZyB0eXBlIENhbGVuZGFyRGF0ZU9wdGlvbnNQcmVzTW9kZWxcbiAgQ2FsZW5kYXJEYXRlT3B0aW9ucyA9ICdjYWxlbmRhckRhdGVPcHRpb25zJyxcblxuICAvLyBEUElfR29Ub1dvcmtzaGVldFRvb2x0aXBQcmVzTW9kZWwsIGhhdmluZyB0eXBlIEdvVG9Xb3Jrc2hlZXRUb29sdGlwUHJlc01vZGVsXG4gIEdvVG9Xb3Jrc2hlZXRUb29sdGlwUHJlc01vZGVsID0gJ2dvVG9Xb3Jrc2hlZXRUb29sdGlwUHJlc01vZGVsJyxcblxuICAvLyBEUElfVGFibGVDbGVhbmluZ1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgVGFibGVDbGVhbmluZ1ByZXNNb2RlbFxuICBUYWJsZUNsZWFuaW5nUHJlc01vZGVsID0gJ3RhYmxlQ2xlYW5pbmdQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9QaXZvdFByZXNNb2RlbCwgaGF2aW5nIHR5cGUgUGl2b3RQcmVzTW9kZWxcbiAgUGl2b3RQcmVzTW9kZWwgPSAncGl2b3RQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9QaXZvdFRyZWVJdGVtUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBQaXZvdFRyZWVJdGVtUHJlc01vZGVsXG4gIFBpdm90VHJlZUl0ZW1QcmVzTW9kZWwgPSAncGl2b3RUcmVlSXRlbVByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1Bpdm90VHJlZUl0ZW1zLCBoYXZpbmcgdHlwZSBQaXZvdFRyZWVJdGVtUHJlc01vZGVsW11cbiAgUGl2b3RUcmVlSXRlbXMgPSAncGl2b3RUcmVlSXRlbXNQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9QaXZvdERpc3BsYXksIGhhdmluZyB0eXBlIFBpdm90RGlzcGxheVByZXNNb2RlbFxuICBQaXZvdERpc3BsYXkgPSAncGl2b3REaXNwbGF5JyxcblxuICAvLyBEUElfUGl2b3RUYWcsIGhhdmluZyB0eXBlIE5hbWVDb2x1bW5zUGFpclByZXNNb2RlbFxuICBQaXZvdFRhZyA9ICdwaXZvdFRhZycsXG5cbiAgLy8gRFBJX1Bpdm90R3JvdXBzLCBoYXZpbmcgdHlwZSBOYW1lQ29sdW1uc1BhaXJQcmVzTW9kZWxbXVxuICBQaXZvdEdyb3VwcyA9ICdwaXZvdEdyb3VwcycsXG5cbiAgLy8gRFBJX0RhdGFTb3VyY2VEcm9wZG93biwgaGF2aW5nIHR5cGUgRGF0YVNvdXJjZURyb3Bkb3duUHJlc01vZGVsXG4gIERhdGFTb3VyY2VEcm9wZG93biA9ICdkYXRhU291cmNlRHJvcGRvd24nLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uRHJvcGRvd24sIGhhdmluZyB0eXBlIENvbm5lY3Rpb25Ecm9wZG93blByZXNNb2RlbFxuICBDb25uZWN0aW9uRHJvcGRvd24gPSAnY29ubmVjdGlvbkRyb3Bkb3duJyxcblxuICAvLyBEUElfQWN0aXZpdHlFdmVudCwgaGF2aW5nIHR5cGUgQWN0aXZpdHlFdmVudFByZXNNb2RlbFxuICBBY3Rpdml0eUV2ZW50ID0gJ2FjdGl2aXR5RXZlbnQnLFxuXG4gIC8vIERQSV9VSUF1dG9tYXRpb24sIGhhdmluZyB0eXBlIFVJQXV0b21hdGlvblByZXNNb2RlbFxuICBVSUF1dG9tYXRpb24gPSAndWlBdXRvbWF0aW9uJyxcblxuICAvLyBEUElfVUlBdXRvbWF0aW9uSW5kZXgsIGhhdmluZyB0eXBlIFVJQXV0b21hdGlvbkluZGV4UHJlc01vZGVsXG4gIFVJQXV0b21hdGlvbkluZGV4ID0gJ3VpQXV0b21hdGlvbkluZGV4JyxcblxuICAvLyBEUElfVUlBdXRvbWF0aW9uSW5kZXhMaXN0LCBoYXZpbmcgdHlwZSBVSUF1dG9tYXRpb25JbmRleFByZXNNb2RlbFtdXG4gIFVJQXV0b21hdGlvbkluZGV4TGlzdCA9ICd1aUF1dG9tYXRpb25JbmRleExpc3QnLFxuXG4gIC8vIERQSV9VSUF1dG9tYXRpb25Db21wb25lbnRJbmZvLCBoYXZpbmcgdHlwZSBVSUF1dG9tYXRpb25Db21wb25lbnRJbmZvUHJlc01vZGVsXG4gIFVJQXV0b21hdGlvbkNvbXBvbmVudEluZm8gPSAndWlBdXRvbWF0aW9uQ29tcG9uZW50SW5mbycsXG5cbiAgLy8gRFBJX1VJQXV0b21hdGlvbkNvbXBvbmVudEluZm9MaXN0LCBoYXZpbmcgdHlwZSBVSUF1dG9tYXRpb25Db21wb25lbnRJbmZvUHJlc01vZGVsW11cbiAgVUlBdXRvbWF0aW9uQ29tcG9uZW50SW5mb0xpc3QgPSAndWlBdXRvbWF0aW9uQ29tcG9uZW50SW5mb0xpc3QnLFxuXG4gIC8vIERQSV9HZW9tZXRyeSwgaGF2aW5nIHR5cGUgR2VvbWV0cnlQcmVzTW9kZWxcbiAgR2VvbWV0cnkgPSAnZ2VvbWV0cnknLFxuXG4gIC8vIERQSV9NdWx0aVBvaW50LCBoYXZpbmcgdHlwZSBNdWx0aVBvaW50UHJlc01vZGVsXG4gIE11bHRpUG9pbnQgPSAnbXVsdGlQb2ludCcsXG5cbiAgLy8gRFBJX011bHRpTGluZSwgaGF2aW5nIHR5cGUgTXVsdGlMaW5lUHJlc01vZGVsXG4gIE11bHRpTGluZSA9ICdtdWx0aUxpbmUnLFxuXG4gIC8vIERQSV9NdWx0aVBvbHlnb24sIGhhdmluZyB0eXBlIE11bHRpUG9seWdvblByZXNNb2RlbFxuICBNdWx0aVBvbHlnb24gPSAnbXVsdGlQb2x5Z29uJyxcblxuICAvLyBEUElfUG9seWdvbiwgaGF2aW5nIHR5cGUgUG9seWdvblByZXNNb2RlbFxuICBQb2x5Z29uID0gJ3BvbHlnb24nLFxuXG4gIC8vIERQSV9Qb2x5Z29uTGlzdCwgaGF2aW5nIHR5cGUgUG9seWdvblByZXNNb2RlbFtdXG4gIFBvbHlnb25MaXN0ID0gJ3BvbHlnb25MaXN0JyxcblxuICAvLyBEUElfTGluZSwgaGF2aW5nIHR5cGUgTGluZVByZXNNb2RlbFxuICBMaW5lID0gJ2xpbmUnLFxuXG4gIC8vIERQSV9MaW5lTGlzdCwgaGF2aW5nIHR5cGUgTGluZVByZXNNb2RlbFtdXG4gIExpbmVMaXN0ID0gJ2xpbmVMaXN0JyxcblxuICAvLyBEUElfVGFiYmVkQXV0aGVudGljYXRpb24sIGhhdmluZyB0eXBlIFRhYmJlZEF1dGhlbnRpY2F0aW9uUHJlc01vZGVsXG4gIFRhYmJlZEF1dGhlbnRpY2F0aW9uID0gJ3RhYmJlZEF1dGhlbnRpY2F0aW9uJyxcblxuICAvLyBEUElfVGFiYmVkQXV0aGVudGljYXRpb25UYWJJbmZvLCBoYXZpbmcgdHlwZSBUYWJiZWRBdXRoZW50aWNhdGlvblRhYkluZm9QcmVzTW9kZWxcbiAgVGFiYmVkQXV0aGVudGljYXRpb25UYWJJbmZvID0gJ3RhYmJlZEF1dGhlbnRpY2F0aW9uVGFiSW5mbycsXG5cbiAgLy8gRFBJX1RhYmJlZEF1dGhlbnRpY2F0aW9uVGFiSW5mb3MsIGhhdmluZyB0eXBlIFRhYmJlZEF1dGhlbnRpY2F0aW9uVGFiSW5mb1ByZXNNb2RlbFtdXG4gIFRhYmJlZEF1dGhlbnRpY2F0aW9uVGFiSW5mb3MgPSAndGFiYmVkQXV0aGVudGljYXRpb25UYWJJbmZvcycsXG5cbiAgLy8gRFBJX0dlb2dyYXBoaWNTZWFyY2hDYW5kaWRhdGUsIGhhdmluZyB0eXBlIEdlb2dyYXBoaWNTZWFyY2hDYW5kaWRhdGVQcmVzTW9kZWxcbiAgR2VvZ3JhcGhpY1NlYXJjaENhbmRpZGF0ZSA9ICdnZW9ncmFwaGljU2VhcmNoQ2FuZGlkYXRlJyxcblxuICAvLyBEUElfR2VvZ3JhcGhpY1NlYXJjaENhbmRpZGF0ZUxpc3QsIGhhdmluZyB0eXBlIEdlb2dyYXBoaWNTZWFyY2hDYW5kaWRhdGVQcmVzTW9kZWxbXVxuICBHZW9ncmFwaGljU2VhcmNoQ2FuZGlkYXRlTGlzdCA9ICdnZW9ncmFwaGljU2VhcmNoQ2FuZGlkYXRlTGlzdCcsXG5cbiAgLy8gRFBJX0dlb2dyYXBoaWNTZWFyY2hSZXN1bHRzLCBoYXZpbmcgdHlwZSBHZW9ncmFwaGljU2VhcmNoUHJlc01vZGVsXG4gIEdlb2dyYXBoaWNTZWFyY2hSZXN1bHRzID0gJ2dlb2dyYXBoaWNTZWFyY2hSZXN1bHRzJyxcblxuICAvLyBEUElfUGFyYW1JbmZvLCBoYXZpbmcgdHlwZSBQYXJhbWV0ZXJJbmZvUHJlc01vZGVsXG4gIFBhcmFtSW5mbyA9ICdwYXJhbUluZm8nLFxuXG4gIC8vIERQSV9QYXJhbUluZm9zLCBoYXZpbmcgdHlwZSBQYXJhbWV0ZXJJbmZvUHJlc01vZGVsW11cbiAgUGFyYW1JbmZvcyA9ICdwYXJhbUluZm9zJyxcblxuICAvLyBEUElfUGFyYW1OYW1lc3BhY2VJbmZvLCBoYXZpbmcgdHlwZSBQYXJhbWV0ZXJOYW1lc3BhY2VJbmZvSW5mb1ByZXNNb2RlbFxuICBQYXJhbU5hbWVzcGFjZUluZm8gPSAncGFyYW1OYW1lc3BhY2VJbmZvJyxcblxuICAvLyBEUElfUGFyYW1OYW1lc3BhY2VJbmZvcywgaGF2aW5nIHR5cGUgUGFyYW1ldGVyTmFtZXNwYWNlSW5mb1ByZXNNb2RlbFtdXG4gIFBhcmFtTmFtZXNwYWNlSW5mb3MgPSAncGFyYW1OYW1lc3BhY2VJbmZvcycsXG5cbiAgLy8gRFBJX1BhcmFtUmVnaXN0cnlJbmZvLCBoYXZpbmcgdHlwZSBQYXJhbWV0ZXJSZWdpc3RyeUluZm9QcmVzTW9kZWxcbiAgUGFyYW1SZWdpc3RyeUluZm8gPSAncGFyYW1SZWdpc3RyeUluZm8nLFxuXG4gIC8vIERQSV9EYXRhU291cmNlUHJvcGVydGllcywgaGF2aW5nIHR5cGUgRGF0YVNvdXJjZVByb3BlcnRpZXNQcmVzTW9kZWxcbiAgRGF0YVNvdXJjZVByb3BlcnRpZXMgPSAnY29ubmVjdGlvblByb3BlcnRpZXMnLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uVHlwZVByZXNNb2RlbCwgaGF2aW5nIHR5cGUgQ29ubmVjdGlvblR5cGVQcmVzTW9kZWxcbiAgQ29ubmVjdGlvblR5cGVQcmVzTW9kZWwgPSAnY29ubmVjdGlvblR5cGVQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uVHlwZXMsIGhhdmluZyB0eXBlIENvbm5lY3Rpb25UeXBlUHJlc01vZGVsW11cbiAgQ29ubmVjdGlvblR5cGVzID0gJ2Nvbm5lY3Rpb25UeXBlcycsXG5cbiAgLy8gRFBJX0Nvbm5lY3Rpb25UeXBlR3JvdXBQcmVzTW9kZWwsIGhhdmluZyB0eXBlIENvbm5lY3Rpb25UeXBlR3JvdXBQcmVzTW9kZWxcbiAgQ29ubmVjdGlvblR5cGVHcm91cFByZXNNb2RlbCA9ICdjb25uZWN0aW9uVHlwZUdyb3VwUHJlc01vZGVsJyxcblxuICAvLyBEUElfU2F2ZWREYXRhU291cmNlUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBTYXZlZERhdGFTb3VyY2VQcmVzTW9kZWxcbiAgU2F2ZWREYXRhU291cmNlUHJlc01vZGVsID0gJ3NhdmVkRGF0YXNvdXJjZVByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1NhdmVkRGF0YVNvdXJjZXMsIGhhdmluZyB0eXBlIFNhdmVkRGF0YVNvdXJjZVByZXNNb2RlbFtdXG4gIFNhdmVkRGF0YVNvdXJjZXMgPSAnc2F2ZWREYXRhc291cmNlcycsXG5cbiAgLy8gRFBJX1NhdmVkRGF0YVNvdXJjZXNQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFNhdmVkRGF0YVNvdXJjZXNQcmVzTW9kZWxcbiAgU2F2ZWREYXRhU291cmNlc1ByZXNNb2RlbCA9ICdzYXZlZERhdGFzb3VyY2VzUHJlc01vZGVsJyxcblxuICAvLyBEUElfT3BlblBhbmVJdGVtUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBPcGVuUGFuZUl0ZW1QcmVzTW9kZWxcbiAgT3BlblBhbmVJdGVtUHJlc01vZGVsID0gJ29wZW5QYW5lSXRlbVByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX09wZW5QYW5lSXRlbXMsIGhhdmluZyB0eXBlIE9wZW5QYW5lSXRlbVByZXNNb2RlbFtdXG4gIE9wZW5QYW5lSXRlbXMgPSAnb3BlblBhbmVJdGVtcycsXG5cbiAgLy8gRFBJX09wZW5QYW5lSXRlbXNQcmVzTW9kZWwsIGhhdmluZyB0eXBlIE9wZW5QYW5lSXRlbXNQcmVzTW9kZWxcbiAgT3BlblBhbmVJdGVtc1ByZXNNb2RlbCA9ICdvcGVuUGFuZUl0ZW1zUHJlc01vZGVsJyxcblxuICAvLyBEUElfVmFyaWFibGVWYWx1ZSwgaGF2aW5nIHR5cGUgVmFyaWFibGVWYWx1ZVByZXNNb2RlbFxuICBWYXJpYWJsZVZhbHVlID0gJ3ZhcmlhYmxlVmFsdWUnLFxuXG4gIC8vIERQSV9WYXJpYWJsZVZhbHVlcywgaGF2aW5nIHR5cGUgVmFyaWFibGVWYWx1ZVByZXNNb2RlbFtdXG4gIFZhcmlhYmxlVmFsdWVzID0gJ3ZhcmlhYmxlVmFsdWVzJyxcblxuICAvLyBEUElfU2VydmVyVmFyaWFibGVWYWx1ZSwgaGF2aW5nIHR5cGUgU2VydmVyVmFyaWFibGVWYWx1ZVByZXNNb2RlbFxuICBTZXJ2ZXJWYXJpYWJsZVZhbHVlID0gJ3NlcnZlclZhcmlhYmxlVmFsdWUnLFxuXG4gIC8vIERQSV9FZGl0YWJsZVZhcmlhYmxlVmFsdWUsIGhhdmluZyB0eXBlIEVkaXRhYmxlVmFyaWFibGVWYWx1ZVByZXNNb2RlbFxuICBFZGl0YWJsZVZhcmlhYmxlVmFsdWUgPSAnZWRpdGFibGVWYXJpYWJsZVZhbHVlJyxcblxuICAvLyBEUElfU2VydmVyVmFyaWFibGVNZXRhZGF0YSwgaGF2aW5nIHR5cGUgU2VydmVyVmFyaWFibGVNZXRhZGF0YVByZXNNb2RlbFxuICBTZXJ2ZXJWYXJpYWJsZU1ldGFkYXRhID0gJ3NlcnZlclZhcmlhYmxlTWV0YWRhdGEnLFxuXG4gIC8vIERQSV9Qcm9tcHRWYXJpYWJsZSwgaGF2aW5nIHR5cGUgUHJvbXB0VmFyaWFibGVQcmVzTW9kZWxcbiAgUHJvbXB0VmFyaWFibGUgPSAncHJvbXB0VmFyaWFibGUnLFxuXG4gIC8vIERQSV9Qcm9tcHRWYXJpYWJsZXMsIGhhdmluZyB0eXBlIFByb21wdFZhcmlhYmxlUHJlc01vZGVsW11cbiAgUHJvbXB0VmFyaWFibGVzID0gJ3Byb21wdFZhcmlhYmxlcycsXG5cbiAgLy8gRFBJX1ZhcmlhYmxlUHJvbXB0RGlhbG9nLCBoYXZpbmcgdHlwZSBWYXJpYWJsZVByb21wdERpYWxvZ1ByZXNNb2RlbFxuICBWYXJpYWJsZVByb21wdERpYWxvZyA9ICd2YXJpYWJsZVByb21wdERpYWxvZycsXG5cbiAgLy8gRFBJX1ZhcmlhYmxlVmFsdWVPcGVyYXRpb24sIGhhdmluZyB0eXBlIFZhcmlhYmxlVmFsdWVPcGVyYXRpb25QcmVzTW9kZWxcbiAgVmFyaWFibGVWYWx1ZU9wZXJhdGlvbiA9ICd2YXJpYWJsZVZhbHVlT3BlcmF0aW9uJyxcblxuICAvLyBEUElfVmFyaWFibGVWYWx1ZU9wZXJhdGlvbnMsIGhhdmluZyB0eXBlIFZhcmlhYmxlVmFsdWVPcGVyYXRpb25QcmVzTW9kZWxbXVxuICBWYXJpYWJsZVZhbHVlT3BlcmF0aW9ucyA9ICd2YXJpYWJsZVZhbHVlT3BlcmF0aW9ucycsXG5cbiAgLy8gRFBJX1RhYmxlT3B0aW9uc1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgVGFibGVPcHRpb25zUHJlc01vZGVsXG4gIFRhYmxlT3B0aW9uc1ByZXNNb2RlbCA9ICd0YWJsZU9wdGlvbnNQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9DbGllbnRJbmZvUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBDbGllbnRJbmZvUHJlc01vZGVsXG4gIENsaWVudEluZm9QcmVzTW9kZWwgPSAnY2xpZW50SW5mb1ByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1RhYmxlYXVGaWxlSW5mb1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgVGFibGVhdUZpbGVJbmZvUHJlc01vZGVsXG4gIFRhYmxlYXVGaWxlSW5mb1ByZXNNb2RlbCA9ICd0YWJsZWF1RmlsZUluZm9QcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9EZWJ1Z2dpbmdJbmZvUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBEZWJ1Z2dpbmdJbmZvUHJlc01vZGVsXG4gIERlYnVnZ2luZ0luZm9QcmVzTW9kZWwgPSAnZGVidWdnaW5nSW5mb1ByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1J1bm5pbmdUaHJlYWRJbmZvUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBSdW5uaW5nVGhyZWFkSW5mb1ByZXNNb2RlbFxuICBSdW5uaW5nVGhyZWFkSW5mb1ByZXNNb2RlbCA9ICdydW5uaW5nVGhyZWFkSW5mb1ByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX0Fib3V0RGlhbG9nSW5mb1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgQWJvdXREaWFsb2dJbmZvUHJlc01vZGVsXG4gIEFib3V0RGlhbG9nSW5mb1ByZXNNb2RlbCA9ICdhYm91dERpYWxvZ0luZm9QcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9IeWJyaWRVSVNob3djYXNlUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBIeWJyaWRVSVNob3djYXNlUHJlc01vZGVsXG4gIEh5YnJpZFVJU2hvd2Nhc2VQcmVzTW9kZWwgPSAnaHlicmlkVWlTaG93Y2FzZVByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX01lbnVDb25maWd1cmF0aW9uLCBoYXZpbmcgdHlwZSBNZW51Q29uZmlndXJhdGlvblByZXNNb2RlbFxuICBNZW51Q29uZmlndXJhdGlvbiA9ICdtZW51Q29uZmlndXJhdGlvbicsXG5cbiAgLy8gRFBJX01lbnVJdGVtLCBoYXZpbmcgdHlwZSBNZW51SXRlbVByZXNNb2RlbFxuICBNZW51SXRlbSA9ICdtZW51SXRlbScsXG5cbiAgLy8gRFBJX01lbnVJdGVtTW9kZWxzLCBoYXZpbmcgdHlwZSBNZW51SXRlbVByZXNNb2RlbFtdXG4gIE1lbnVJdGVtTW9kZWxzID0gJ21lbnVJdGVtTW9kZWxzJyxcblxuICAvLyBEUElfRGVmYXVsdFRleHRGb3JtYXQsIGhhdmluZyB0eXBlIERlZmF1bHRUZXh0Rm9ybWF0UHJlc01vZGVsXG4gIERlZmF1bHRUZXh0Rm9ybWF0ID0gJ2RlZmF1bHRUZXh0Rm9ybWF0JyxcblxuICAvLyBEUElfTWFwQm94U2VydmVySW5mb1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgTWFwQm94U2VydmVySW5mb1ByZXNNb2RlbFxuICBNYXBCb3hTZXJ2ZXJJbmZvUHJlc01vZGVsID0gJ21hcGJveFNlcnZlckluZm9QcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9XTVNTZXJ2ZXJJbmZvUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBXTVNTZXJ2ZXJJbmZvUHJlc01vZGVsXG4gIFdNU1NlcnZlckluZm9QcmVzTW9kZWwgPSAnd21zU2VydmVySW5mb1ByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX01hcFNvdXJjZUNvbmZsaWN0UHJlc01vZGVsLCBoYXZpbmcgdHlwZSBNYXBTb3VyY2VDb25mbGljdFByZXNNb2RlbFxuICBNYXBTb3VyY2VDb25mbGljdFByZXNNb2RlbCA9ICdtYXBTb3VyY2VDb25mbGljdFByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX0VudW1lcmF0ZWRTZXREaWFsb2dQcmVzTW9kZWwsIGhhdmluZyB0eXBlIEVudW1lcmF0ZWRTZXREaWFsb2dQcmVzTW9kZWxcbiAgRW51bWVyYXRlZFNldERpYWxvZ1ByZXNNb2RlbCA9ICdlbnVtZXJhdGVkU2V0RGlhbG9nUHJlc01vZGVsJyxcblxuICAvLyBEUElfRWRpdEFsaWFzZXNEaWFsb2csIGhhdmluZyB0eXBlIEVkaXRBbGlhc2VzRGlhbG9nUHJlc01vZGVsXG4gIEVkaXRBbGlhc2VzRGlhbG9nID0gJ2VkaXRBbGlhc2VzRGlhbG9nUHJlc01vZGVsJyxcblxuICAvLyBEUElfQWxpYXNlc1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgQWxpYXNlc1ByZXNNb2RlbFxuICBBbGlhc2VzUHJlc01vZGVsID0gJ2FsaWFzZXNQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9DbGVhckFsaWFzZXNQcmVzTW9kZWwsIGhhdmluZyB0eXBlIEFsaWFzZXNQcmVzTW9kZWxcbiAgQ2xlYXJBbGlhc2VzUHJlc01vZGVsID0gJ2NsZWFyQWxpYXNlc1ByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX05ld0FsaWFzZXNQcmVzTW9kZWwsIGhhdmluZyB0eXBlIE5ld0FsaWFzZXNQcmVzTW9kZWxcbiAgTmV3QWxpYXNlc1ByZXNNb2RlbCA9ICduZXdBbGlhc2VzUHJlc01vZGVsJyxcblxuICAvLyBEUElfQWxpYXNQcmVzTW9kZWwsIGhhdmluZyB0eXBlIEFsaWFzUHJlc01vZGVsXG4gIEFsaWFzUHJlc01vZGVsID0gJ2FsaWFzUHJlc01vZGVsJyxcblxuICAvLyBEUElfQWxpYXNJdGVtLCBoYXZpbmcgdHlwZSBBbGlhc0l0ZW1QcmVzTW9kZWxcbiAgQWxpYXNJdGVtID0gJ2FsaWFzSXRlbScsXG5cbiAgLy8gRFBJX0R1cGxpY2F0ZUFsaWFzSXRlbSwgaGF2aW5nIHR5cGUgQWxpYXNJdGVtUHJlc01vZGVsXG4gIER1cGxpY2F0ZUFsaWFzSXRlbSA9ICdkdXBsaWNhdGVBbGlhc0l0ZW0nLFxuXG4gIC8vIERQSV9BbGlhc0xpc3QsIGhhdmluZyB0eXBlIEFsaWFzSXRlbVByZXNNb2RlbFtdXG4gIEFsaWFzTGlzdCA9ICdhbGlhc0xpc3QnLFxuXG4gIC8vIERQSV9BbGlhc1Jlc3VsdEl0ZW0sIGhhdmluZyB0eXBlIEFsaWFzUmVzdWx0SXRlbVByZXNNb2RlbFxuICBBbGlhc1Jlc3VsdEl0ZW0gPSAnYWxpYXNSZXN1bHRJdGVtJyxcblxuICAvLyBEUElfQWxpYXNSZXN1bHRMaXN0LCBoYXZpbmcgdHlwZSBBbGlhc1Jlc3VsdEl0ZW1QcmVzTW9kZWxbXVxuICBBbGlhc1Jlc3VsdExpc3QgPSAnYWxpYXNSZXN1bHRMaXN0JyxcblxuICAvLyBEUElfQWxpYXNSZXN1bHRzLCBoYXZpbmcgdHlwZSBBbGlhc1Jlc3VsdHNQcmVzTW9kZWxcbiAgQWxpYXNSZXN1bHRzID0gJ2FsaWFzUmVzdWx0cycsXG5cbiAgLy8gRFBJX0VkaXRTZXREaWFsb2dQcmVzTW9kZWwsIGhhdmluZyB0eXBlIEVkaXRTZXREaWFsb2dQcmVzTW9kZWxcbiAgRWRpdFNldERpYWxvZ1ByZXNNb2RlbCA9ICdlZGl0U2V0RGlhbG9nUHJlc01vZGVsJyxcblxuICAvLyBEUElfQ29uZmlybWF0aW9uUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBDb25maXJtYXRpb25QcmVzTW9kZWxcbiAgQ29uZmlybWF0aW9uUHJlc01vZGVsID0gJ2NvbmZpcm1hdGlvblByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX05vdGlmaWNhdGlvblByZXNNb2RlbCwgaGF2aW5nIHR5cGUgTm90aWZpY2F0aW9uUHJlc01vZGVsXG4gIE5vdGlmaWNhdGlvblByZXNNb2RlbCA9ICdub3RpZmljYXRpb25QcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9SZXRhcmdldERhdGFTb3VyY2VEaWFsb2dQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFJldGFyZ2V0RGF0YVNvdXJjZURpYWxvZ1ByZXNNb2RlbFxuICBSZXRhcmdldERhdGFTb3VyY2VEaWFsb2dQcmVzTW9kZWwgPSAncmV0YXJnZXREYXRhc291cmNlRGlhbG9nUHJlc01vZGVsJyxcblxuICAvLyBEUElfU2hhcmVkRmlsdGVyUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBTaGFyZWRGaWx0ZXJQcmVzTW9kZWxcbiAgU2hhcmVkRmlsdGVyUHJlc01vZGVsID0gJ3NoYXJlZEZpbHRlclByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1NoYXJlZEZpbHRlcldvcmtzaGVldEluZm8sIGhhdmluZyB0eXBlIFNoYXJlZEZpbHRlcldvcmtzaGVldEluZm9QcmVzTW9kZWxcbiAgU2hhcmVkRmlsdGVyV29ya3NoZWV0SW5mbyA9ICdzaGFyZWRGaWx0ZXJXb3Jrc2hlZXRJbmZvJyxcblxuICAvLyBEUElfU2hhcmVkRmlsdGVyV29ya3NoZWV0SW5mb0xpc3QsIGhhdmluZyB0eXBlIFNoYXJlZEZpbHRlcldvcmtzaGVldEluZm9QcmVzTW9kZWxbXVxuICBTaGFyZWRGaWx0ZXJXb3Jrc2hlZXRJbmZvTGlzdCA9ICdzaGFyZWRGaWx0ZXJXb3Jrc2hlZXRJbmZvTGlzdCcsXG5cbiAgLy8gRFBJX0ZpZWxkUGlja2VyVHJlZVByZXNNb2RlbCwgaGF2aW5nIHR5cGUgRmllbGRQaWNrZXJUcmVlUHJlc01vZGVsXG4gIEZpZWxkUGlja2VyVHJlZVByZXNNb2RlbCA9ICdmaWVsZFBpY2tlclRyZWVQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9GaWVsZFBpY2tlclRyZWVQcmVzTW9kZWxTb3VyY2UsIGhhdmluZyB0eXBlIEZpZWxkUGlja2VyVHJlZVByZXNNb2RlbFxuICBGaWVsZFBpY2tlclRyZWVQcmVzTW9kZWxTb3VyY2UgPSAnZmllbGRQaWNrZXJUcmVlUHJlc01vZGVsU291cmNlJyxcblxuICAvLyBEUElfRmllbGRQaWNrZXJUcmVlUHJlc01vZGVsVGFyZ2V0LCBoYXZpbmcgdHlwZSBGaWVsZFBpY2tlclRyZWVQcmVzTW9kZWxcbiAgRmllbGRQaWNrZXJUcmVlUHJlc01vZGVsVGFyZ2V0ID0gJ2ZpZWxkUGlja2VyVHJlZVByZXNNb2RlbFRhcmdldCcsXG5cbiAgLy8gRFBJX0Vycm9ySW5mbywgaGF2aW5nIHR5cGUgRXJyb3JJbmZvUHJlc01vZGVsXG4gIEVycm9ySW5mbyA9ICdlcnJvckluZm9QcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9DdXN0b21TcGxpdFByZXNNb2RlbCwgaGF2aW5nIHR5cGUgQ3VzdG9tU3BsaXRQcmVzTW9kZWxcbiAgQ3VzdG9tU3BsaXRQcmVzTW9kZWwgPSAnY3VzdG9tU3BsaXRQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9QYWdlU2V0dXAsIGhhdmluZyB0eXBlIFBhZ2VTZXR1cFByZXNNb2RlbFxuICBQYWdlU2V0dXAgPSAncGFnZVNldHVwJyxcblxuICAvLyBEUElfU2VydmVyQ29ubmVjdFN0YXR1cywgaGF2aW5nIHR5cGUgU2VydmVyQ29ubmVjdGlvblN0YXR1c1xuICBTZXJ2ZXJDb25uZWN0U3RhdHVzID0gJ3NlcnZlckNvbm5lY3Rpb25TdGF0dXMnLFxuXG4gIC8vIERQSV9HZXRGaWx0ZXJJdGVtc1Jlc3BvbnNlLCBoYXZpbmcgdHlwZSBHZXRGaWx0ZXJJdGVtc1Jlc3BvbnNlUHJlc01vZGVsXG4gIEdldEZpbHRlckl0ZW1zUmVzcG9uc2UgPSAnZ2V0RmlsdGVySXRlbXNSZXNwb25zZScsXG5cbiAgLy8gRFBJX0ZpbHRlclNlYXJjaFJlc3BvbnNlLCBoYXZpbmcgdHlwZSBGaWx0ZXJTZWFyY2hSZXNwb25zZVByZXNNb2RlbFxuICBGaWx0ZXJTZWFyY2hSZXNwb25zZSA9ICdmaWx0ZXJTZWFyY2hSZXNwb25zZScsXG5cbiAgLy8gRFBJX0ZpbHRlclNlYXJjaFdpdGhJbmRleFJlc3BvbnNlLCBoYXZpbmcgdHlwZSBGaWx0ZXJTZWFyY2hXaXRoSW5kZXhSZXNwb25zZVByZXNNb2RlbFxuICBGaWx0ZXJTZWFyY2hXaXRoSW5kZXhSZXNwb25zZSA9ICdmaWx0ZXJTZWFyY2hXaXRoSW5kZXhSZXNwb25zZScsXG5cbiAgLy8gRFBJX0ZpbHRlclNob3dDaGlsZHJlblJlc3BvbnNlLCBoYXZpbmcgdHlwZSBGaWx0ZXJTaG93Q2hpbGRyZW5SZXNwb25zZVByZXNNb2RlbFxuICBGaWx0ZXJTaG93Q2hpbGRyZW5SZXNwb25zZSA9ICdmaWx0ZXJTaG93Q2hpbGRyZW5SZXNwb25zZScsXG5cbiAgLy8gRFBJX0VkaXREYXRhU2VydmVyQ29ubmVjdGlvbiwgaGF2aW5nIHR5cGUgRWRpdERhdGFTZXJ2ZXJDb25uZWN0aW9uUHJlc01vZGVsXG4gIEVkaXREYXRhU2VydmVyQ29ubmVjdGlvbiA9ICdlZGl0RGF0YVNlcnZlckNvbm5lY3Rpb24nLFxuXG4gIC8vIERQSV9JbWFnZXNFZGl0LCBoYXZpbmcgdHlwZSBJbWFnZXNFZGl0UHJlc01vZGVsXG4gIEltYWdlc0VkaXQgPSAnaW1hZ2VzRWRpdCcsXG5cbiAgLy8gRFBJX0JhY2tncm91bmRJbWFnZSwgaGF2aW5nIHR5cGUgQmFja2dyb3VuZEltYWdlUHJlc01vZGVsXG4gIEJhY2tncm91bmRJbWFnZSA9ICdiYWNrZ3JvdW5kSW1hZ2UnLFxuXG4gIC8vIERQSV9CYWNrZ3JvdW5kSW1hZ2VzLCBoYXZpbmcgdHlwZSBCYWNrZ3JvdW5kSW1hZ2VQcmVzTW9kZWxbXVxuICBCYWNrZ3JvdW5kSW1hZ2VzID0gJ2JhY2tncm91bmRJbWFnZXMnLFxuXG4gIC8vIERQSV9QcmVkaWNhdGUsIGhhdmluZyB0eXBlIFByZWRpY2F0ZVByZXNNb2RlbFxuICBQcmVkaWNhdGUgPSAncHJlZGljYXRlJyxcblxuICAvLyBEUElfUHJlZGljYXRlcywgaGF2aW5nIHR5cGUgUHJlZGljYXRlUHJlc01vZGVsW11cbiAgUHJlZGljYXRlcyA9ICdwcmVkaWNhdGVzJyxcblxuICAvLyBEUElfSW1hZ2VzRWRpdFJlc3VsdCwgaGF2aW5nIHR5cGUgSW1hZ2VzRWRpdFJlc3VsdFByZXNNb2RlbFxuICBJbWFnZXNFZGl0UmVzdWx0ID0gJ2ltYWdlc0VkaXRSZXN1bHQnLFxuXG4gIC8vIERQSV9Tb3J0RGlhbG9nUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBTb3J0RGlhbG9nUHJlc01vZGVsXG4gIFNvcnREaWFsb2dQcmVzTW9kZWwgPSAnc29ydERpYWxvZ1ByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX0NvbXBvdW5kVGFibGVDYWxjLCBoYXZpbmcgdHlwZSBDb21wb3VuZFRhYmxlQ2FsY3VsYXRpb25QcmVzTW9kZWxcbiAgQ29tcG91bmRUYWJsZUNhbGMgPSAnY29tcG91bmRUYWJsZUNhbGN1bGF0aW9uUHJlc01vZGVsJyxcblxuICAvLyBEUElfVGFibGVDYWxjLCBoYXZpbmcgdHlwZSBUYWJsZUNhbGN1bGF0aW9uUHJlc01vZGVsXG4gIFRhYmxlQ2FsYyA9ICd0YWJsZUNhbGN1bGF0aW9uUHJlc01vZGVsJyxcblxuICAvLyBEUElfVGFibGVDYWxjcywgaGF2aW5nIHR5cGUgVGFibGVDYWxjdWxhdGlvblByZXNNb2RlbFtdXG4gIFRhYmxlQ2FsY3MgPSAndGFibGVDYWxjdWxhdGlvblByZXNNb2RlbHMnLFxuXG4gIC8vIERQSV9UYWJsZUNhbGNJZGVudGlmaWVyLCBoYXZpbmcgdHlwZSBUYWJsZUNhbGNJZGVudGlmaWVyUHJlc01vZGVsXG4gIFRhYmxlQ2FsY0lkZW50aWZpZXIgPSAndGFibGVDYWxjSWRlbnRpZmllcicsXG5cbiAgLy8gRFBJX05lc3RlZFRhYmxlQ2FsY0luZm8sIGhhdmluZyB0eXBlIE5lc3RlZFRhYmxlQ2FsY0luZm9QcmVzTW9kZWxcbiAgTmVzdGVkVGFibGVDYWxjSW5mbyA9ICduZXN0ZWRUYWJsZUNhbGNJbmZvJyxcblxuICAvLyBEUElfTmVzdGVkVGFibGVDYWxjSW5mb3MsIGhhdmluZyB0eXBlIE5lc3RlZFRhYmxlQ2FsY0luZm9QcmVzTW9kZWxbXVxuICBOZXN0ZWRUYWJsZUNhbGNJbmZvcyA9ICduZXN0ZWRUYWJsZUNhbGNJbmZvcycsXG5cbiAgLy8gRFBJX09yZGVyaW5nLCBoYXZpbmcgdHlwZSBUYWJsZUNhbGNPcmRlcmluZ1ByZXNNb2RlbFxuICBPcmRlcmluZyA9ICd0YWJsZUNhbGNPcmRlcmluZ1ByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX0N1bXVsYXRpdmUsIGhhdmluZyB0eXBlIEN1bXVsYXRpdmVUYWJsZUNhbGNQcmVzTW9kZWxcbiAgQ3VtdWxhdGl2ZSA9ICdjdW11bGF0aXZlVGFibGVDYWxjUHJlc01vZGVsJyxcblxuICAvLyBEUElfUmVmZXJlbmNlT3B0aW9ucywgaGF2aW5nIHR5cGUgVGFibGVDYWxjUmVmZXJlbmNlT3B0aW9uc1ByZXNNb2RlbFxuICBSZWZlcmVuY2VPcHRpb25zID0gJ3RhYmxlQ2FsY1JlZmVyZW5jZU9wdGlvbnNQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9EaWZmZXJlbmNlLCBoYXZpbmcgdHlwZSBEaWZmZXJlbmNlVGFibGVDYWxjUHJlc01vZGVsXG4gIERpZmZlcmVuY2UgPSAnZGlmZmVyZW5jZVRhYmxlQ2FsY1ByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1dpbmRvdywgaGF2aW5nIHR5cGUgV2luZG93VGFibGVDYWxjUHJlc01vZGVsXG4gIFdpbmRvdyA9ICd3aW5kb3dUYWJsZUNhbGNQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9QZXJjZW50VG90YWwsIGhhdmluZyB0eXBlIFBlcmNlbnRUb3RhbFRhYmxlQ2FsY1ByZXNNb2RlbFxuICBQZXJjZW50VG90YWwgPSAncGVyY2VudFRvdGFsVGFibGVDYWxjUHJlc01vZGVsJyxcblxuICAvLyBEUElfUmFuaywgaGF2aW5nIHR5cGUgUmFua1RhYmxlQ2FsY1ByZXNNb2RlbFxuICBSYW5rID0gJ3JhbmtUYWJsZUNhbGNQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9DdXN0b20sIGhhdmluZyB0eXBlIEN1c3RvbVRhYmxlQ2FsY1ByZXNNb2RlbFxuICBDdXN0b20gPSAnY3VzdG9tVGFibGVDYWxjUHJlc01vZGVsJyxcblxuICAvLyBEUElfV2ViRGF0YVVybCwgaGF2aW5nIHR5cGUgV2ViRGF0YVVybFByZXNNb2RlbFxuICBXZWJEYXRhVXJsID0gJ3dlYkRhdGFVcmwnLFxuXG4gIC8vIERQSV9WaXNpdGVkV2ViRGF0YUNvbm5lY3RvcnMsIGhhdmluZyB0eXBlIFdlYkRhdGFVcmxQcmVzTW9kZWxbXVxuICBWaXNpdGVkV2ViRGF0YUNvbm5lY3RvcnMgPSAndmlzaXRlZFdlYkRhdGFDb25uZWN0b3JzJyxcblxuICAvLyBEUElfV2ViRGF0YVNlc3Npb25VcmxzLCBoYXZpbmcgdHlwZSBXZWJEYXRhVXJsUHJlc01vZGVsW11cbiAgV2ViRGF0YVNlc3Npb25VcmxzID0gJ3dlYkRhdGFTZXNzaW9uVXJscycsXG5cbiAgLy8gRFBJX1dlYkRhdGFVcmxzLCBoYXZpbmcgdHlwZSBXZWJEYXRhVXJsUHJlc01vZGVsW11cbiAgV2ViRGF0YVVybHMgPSAnd2ViRGF0YVVybHMnLFxuXG4gIC8vIERQSV9GaWVsZFBpY2tlciwgaGF2aW5nIHR5cGUgRmllbGRQaWNrZXJQcmVzTW9kZWxcbiAgRmllbGRQaWNrZXIgPSAnZmllbGRQaWNrZXInLFxuXG4gIC8vIERQSV9EZXNjcmliZUZpZWxkLCBoYXZpbmcgdHlwZSBEZXNjcmliZUZpZWxkUHJlc01vZGVsXG4gIERlc2NyaWJlRmllbGQgPSAnZGVzY3JpYmVGaWVsZCcsXG5cbiAgLy8gRFBJX1Nob3dEYXRhUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBTaG93RGF0YVByZXNNb2RlbFxuICBTaG93RGF0YVByZXNNb2RlbCA9ICdzaG93RGF0YVByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX0RhdGFUYWJsZVByZXNNb2RlbCwgaGF2aW5nIHR5cGUgU2hvd0RhdGFUYWJsZVByZXNNb2RlbFxuICBEYXRhVGFibGVQcmVzTW9kZWwgPSAnZGF0YVRhYmxlUHJlc01vZGVsJyxcblxuICAvLyBEUElfRGF0YVRhYmxlUHJlc01vZGVscywgaGF2aW5nIHR5cGUgU2hvd0RhdGFUYWJsZVByZXNNb2RlbFtdXG4gIERhdGFUYWJsZVByZXNNb2RlbHMgPSAnZGF0YVRhYmxlUHJlc01vZGVscycsXG5cbiAgLy8gRFBJX1N1bW1hcnlUYWJsZVByZXNNb2RlbHMsIGhhdmluZyB0eXBlIFNob3dEYXRhVGFibGVQcmVzTW9kZWxbXVxuICBTdW1tYXJ5VGFibGVQcmVzTW9kZWxzID0gJ3N1bW1hcnlUYWJsZVByZXNNb2RlbHMnLFxuXG4gIC8vIERQSV9SZWZyZXNoQWxsRXh0cmFjdHNQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFJlZnJlc2hBbGxFeHRyYWN0c1ByZXNNb2RlbFxuICBSZWZyZXNoQWxsRXh0cmFjdHNQcmVzTW9kZWwgPSAncmVmZXNoQWxsRXh0cmFjdHNQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9SZWZyZXNoRXh0cmFjdERhdGFTb3VyY2VQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFJlZnJlc2hFeHRyYWN0RGF0YVNvdXJjZVByZXNNb2RlbFxuICBSZWZyZXNoRXh0cmFjdERhdGFTb3VyY2VQcmVzTW9kZWwgPSAncmVmcmVzaEV4dHJhY3REYXRhc291cmNlUHJlc01vZGVsJyxcblxuICAvLyBEUElfUmVmcmVzaEV4dHJhY3REYXRhU291cmNlTGlzdCwgaGF2aW5nIHR5cGUgUmVmcmVzaEV4dHJhY3REYXRhU291cmNlUHJlc01vZGVsW11cbiAgUmVmcmVzaEV4dHJhY3REYXRhU291cmNlTGlzdCA9ICdyZWZyZXNoRXh0cmFjdERhdGFzb3VyY2VMaXN0JyxcblxuICAvLyBEUElfRXh0cmFjdEhpc3RvcnlQcmVzTW9kZWwsIGhhdmluZyB0eXBlIEV4dHJhY3RIaXN0b3J5UHJlc01vZGVsXG4gIEV4dHJhY3RIaXN0b3J5UHJlc01vZGVsID0gJ2V4dHJhY3RIaXN0b3J5UHJlc01vZGVsJyxcblxuICAvLyBEUElfRXh0cmFjdEhpc3RvcnlJdGVtUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBFeHRyYWN0SGlzdG9yeUl0ZW1QcmVzTW9kZWxcbiAgRXh0cmFjdEhpc3RvcnlJdGVtUHJlc01vZGVsID0gJ2V4dHJhY3RIaXN0b3J5SXRlbScsXG5cbiAgLy8gRFBJX0V4dHJhY3RIaXN0b3J5TGlzdCwgaGF2aW5nIHR5cGUgRXh0cmFjdEhpc3RvcnlJdGVtUHJlc01vZGVsW11cbiAgRXh0cmFjdEhpc3RvcnlMaXN0ID0gJ2V4dHJhY3RIaXN0b3J5TGlzdCcsXG5cbiAgLy8gRFBJX0RhdGFQcm92aWRlclByZXNNb2RlbCwgaGF2aW5nIHR5cGUgRGF0YVByb3ZpZGVyUHJlc01vZGVsXG4gIERhdGFQcm92aWRlclByZXNNb2RlbCA9ICdkYXRhUHJvdmlkZXJQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9Gb3JtYXRJdGVtLCBoYXZpbmcgdHlwZSBGb3JtYXRJdGVtUHJlc01vZGVsXG4gIEZvcm1hdEl0ZW0gPSAnZm9ybWF0SXRlbScsXG5cbiAgLy8gRFBJX0Zvcm1hdEl0ZW1MaXN0LCBoYXZpbmcgdHlwZSBGb3JtYXRJdGVtUHJlc01vZGVsW11cbiAgRm9ybWF0SXRlbUxpc3QgPSAnZm9ybWF0SXRlbUxpc3QnLFxuXG4gIC8vIERQSV9Gb3JtYXRDb250YWluZXIsIGhhdmluZyB0eXBlIEZvcm1hdENvbnRhaW5lclByZXNNb2RlbFxuICBGb3JtYXRDb250YWluZXIgPSAnZm9ybWF0Q29udGFpbmVyJyxcblxuICAvLyBEUElfRm9ybWF0UGFuZSwgaGF2aW5nIHR5cGUgRm9ybWF0UGFuZVByZXNNb2RlbFxuICBGb3JtYXRQYW5lID0gJ2Zvcm1hdFBhbmUnLFxuXG4gIC8vIERQSV9Gb3JtYXRTZWN0aW9uLCBoYXZpbmcgdHlwZSBGb3JtYXRTZWN0aW9uUHJlc01vZGVsXG4gIEZvcm1hdFNlY3Rpb24gPSAnZm9ybWF0U2VjdGlvbicsXG5cbiAgLy8gRFBJX0NvbGxhcHNpYmxlU2VjdGlvbiwgaGF2aW5nIHR5cGUgQ29sbGFwc2libGVTZWN0aW9uUHJlc01vZGVsXG4gIENvbGxhcHNpYmxlU2VjdGlvbiA9ICdjb2xsYXBzaWJsZVNlY3Rpb24nLFxuXG4gIC8vIERQSV9Db21wb3NpdGVDb250YWluZXIsIGhhdmluZyB0eXBlIENvbXBvc2l0ZUNvbnRhaW5lclByZXNNb2RlbFxuICBDb21wb3NpdGVDb250YWluZXIgPSAnY29tcG9zaXRlQ29udGFpbmVyJyxcblxuICAvLyBEUElfVW5pdENvbnRhaW5lciwgaGF2aW5nIHR5cGUgVW5pdENvbnRhaW5lclByZXNNb2RlbFxuICBVbml0Q29udGFpbmVyID0gJ3VuaXRDb250YWluZXInLFxuXG4gIC8vIERQSV9UYWJHcm91cCwgaGF2aW5nIHR5cGUgVGFiR3JvdXBQcmVzTW9kZWxcbiAgVGFiR3JvdXAgPSAndGFiR3JvdXAnLFxuXG4gIC8vIERQSV9UYWIsIGhhdmluZyB0eXBlIFRhYlByZXNNb2RlbFxuICBUYWIgPSAndGFiJyxcblxuICAvLyBEUElfRm9ybWF0Q29udHJvbCwgaGF2aW5nIHR5cGUgRm9ybWF0Q29udHJvbFByZXNNb2RlbFxuICBGb3JtYXRDb250cm9sID0gJ2Zvcm1hdENvbnRyb2wnLFxuXG4gIC8vIERQSV9UZXh0Q29udHJvbCwgaGF2aW5nIHR5cGUgVGV4dENvbnRyb2xQcmVzTW9kZWxcbiAgVGV4dENvbnRyb2wgPSAndGV4dENvbnRyb2wnLFxuXG4gIC8vIERQSV9OdW1lcmljQ29udHJvbCwgaGF2aW5nIHR5cGUgTnVtZXJpY0NvbnRyb2xQcmVzTW9kZWxcbiAgTnVtZXJpY0NvbnRyb2wgPSAnbnVtZXJpY0NvbnRyb2wnLFxuXG4gIC8vIERQSV9Db2xvckNvbnRyb2wsIGhhdmluZyB0eXBlIENvbG9yQ29udHJvbFByZXNNb2RlbFxuICBDb2xvckNvbnRyb2wgPSAnY29sb3JDb250cm9sJyxcblxuICAvLyBEUElfVG9nZ2xlQ29udHJvbCwgaGF2aW5nIHR5cGUgVG9nZ2xlQ29udHJvbFByZXNNb2RlbFxuICBUb2dnbGVDb250cm9sID0gJ3RvZ2dsZUNvbnRyb2wnLFxuXG4gIC8vIERQSV9TZWxlY3RvckNvbnRyb2wsIGhhdmluZyB0eXBlIFNlbGVjdG9yQ29udHJvbFByZXNNb2RlbFxuICBTZWxlY3RvckNvbnRyb2wgPSAnZW51bVN0cmluZ1N0eWxlJyxcblxuICAvLyBEUElfU3RhdHNBbmFseXRpY1NwZWMsIGhhdmluZyB0eXBlIFN0YXRzQW5hbHl0aWNTcGVjUHJlc01vZGVsXG4gIFN0YXRzQW5hbHl0aWNTcGVjID0gJ3N0YXRzQW5hbHl0aWNTcGVjJyxcblxuICAvLyBEUElfQ2x1c3RlclNwZWMsIGhhdmluZyB0eXBlIENsdXN0ZXJTcGVjUHJlc01vZGVsXG4gIENsdXN0ZXJTcGVjID0gJ2NsdXN0ZXJpbmdTcGVjJyxcblxuICAvLyBEUElfQ2x1c3RlclJlc3VsdHMsIGhhdmluZyB0eXBlIENsdXN0ZXJSZXN1bHRzUHJlc01vZGVsXG4gIENsdXN0ZXJSZXN1bHRzID0gJ2NsdXN0ZXJSZXN1bHRzJyxcblxuICAvLyBEUElfQ2x1c3RlclVuaXQsIGhhdmluZyB0eXBlIENsdXN0ZXJVbml0UHJlc01vZGVsXG4gIENsdXN0ZXJVbml0ID0gJ2NsdXN0ZXInLFxuXG4gIC8vIERQSV9DbHVzdGVyVW5pdHMsIGhhdmluZyB0eXBlIENsdXN0ZXJVbml0UHJlc01vZGVsW11cbiAgQ2x1c3RlclVuaXRzID0gJ2NsdXN0ZXJVbml0UHJlc01vZGVscycsXG5cbiAgLy8gRFBJX0NsdXN0ZXJGaWVsZEFOT1ZBLCBoYXZpbmcgdHlwZSBDbHVzdGVyRmllbGRBTk9WQVByZXNNb2RlbFxuICBDbHVzdGVyRmllbGRBTk9WQSA9ICdjbHVzdGVyRmllbGRBbm92YScsXG5cbiAgLy8gRFBJX0NsdXN0ZXJGaWVsZEFOT1ZBVGFibGUsIGhhdmluZyB0eXBlIENsdXN0ZXJGaWVsZEFOT1ZBUHJlc01vZGVsW11cbiAgQ2x1c3RlckZpZWxkQU5PVkFUYWJsZSA9ICdjbHVzdGVyRmllbGRBbm92YVRhYmxlUHJlc01vZGVsJyxcblxuICAvLyBEUElfQ2x1c3RlckVkaXQsIGhhdmluZyB0eXBlIENsdXN0ZXJFZGl0UHJlc01vZGVsXG4gIENsdXN0ZXJFZGl0ID0gJ2NsdXN0ZXJFZGl0UHJlc01vZGVsJyxcblxuICAvLyBEUElfQ2x1c3RlckRlc2NyaXB0aW9uLCBoYXZpbmcgdHlwZSBDbHVzdGVyRGVzY3JpYmVQcmVzTW9kZWxcbiAgQ2x1c3RlckRlc2NyaXB0aW9uID0gJ2NsdXN0ZXJEZXNjcmlwdGlvbicsXG5cbiAgLy8gRFBJX091dGxpZXJSZXN1bHRzLCBoYXZpbmcgdHlwZSBPdXRsaWVyUmVzdWx0c1ByZXNNb2RlbFxuICBPdXRsaWVyUmVzdWx0cyA9ICdvdXRsaWVyUmVzdWx0cycsXG5cbiAgLy8gRFBJX0Nvbm5lY3RUb0RhdGFTZXJ2ZXJTb3VyY2VSZXN1bHQsIGhhdmluZyB0eXBlIENvbm5lY3RUb0RhdGFTZXJ2ZXJTb3VyY2VSZXN1bHRQcmVzTW9kZWxcbiAgQ29ubmVjdFRvRGF0YVNlcnZlclNvdXJjZVJlc3VsdCA9ICdjb25uZWN0VG9EYXRhU2VydmVyU291cmNlUmVzdWx0JyxcblxuICAvLyBEUElfRGF0YVNlcnZlckNvbm5lY3Rpb25SZXR1cm5TdGF0dXMsIGhhdmluZyB0eXBlIENvbm5lY3RUb0RhdGFTZXJ2ZXJTb3VyY2VSZXN1bHRQcmVzTW9kZWxcbiAgRGF0YVNlcnZlckNvbm5lY3Rpb25SZXR1cm5TdGF0dXMgPSAnZGF0YVNlcnZlckNvbm5lY3Rpb25SZXR1cm5TdGF0dXMnLFxuXG4gIC8vIERQSV9XZWJRdWFudGl0YXRpdmVDb2xvckRpYWxvZywgaGF2aW5nIHR5cGUgV2ViUXVhbnRpdGF0aXZlQ29sb3JEaWFsb2dQcmVzTW9kZWxcbiAgV2ViUXVhbnRpdGF0aXZlQ29sb3JEaWFsb2cgPSAncXVhbnRpdGF0aXZlQ29sb3JEaWFsb2cnLFxuXG4gIC8vIERQSV9XZWJDYXRlZ29yaWNhbENvbG9yRGlhbG9nLCBoYXZpbmcgdHlwZSBXZWJDYXRlZ29yaWNhbENvbG9yRGlhbG9nUHJlc01vZGVsXG4gIFdlYkNhdGVnb3JpY2FsQ29sb3JEaWFsb2cgPSAnY2F0ZWdvcmljYWxDb2xvckRpYWxvZycsXG5cbiAgLy8gRFBJX1dlYlNhdmVEYXRhc291cmNlRGlhbG9nLCBoYXZpbmcgdHlwZSBXZWJTYXZlRGF0YXNvdXJjZURpYWxvZ1ByZXNNb2RlbFxuICBXZWJTYXZlRGF0YXNvdXJjZURpYWxvZyA9ICdzYXZlRGF0YXNvdXJjZURpYWxvZycsXG5cbiAgLy8gRFBJX0JvcmRlclN0eWxlU3BlYywgaGF2aW5nIHR5cGUgU3R5bGVTcGVjUHJlc01vZGVsXG4gIEJvcmRlclN0eWxlU3BlYyA9ICdib3JkZXJTdHlsZVNwZWMnLFxuXG4gIC8vIERQSV9IYWxvU3R5bGVTcGVjLCBoYXZpbmcgdHlwZSBTdHlsZVNwZWNQcmVzTW9kZWxcbiAgSGFsb1N0eWxlU3BlYyA9ICdoYWxvU3R5bGVTcGVjJyxcblxuICAvLyBEUElfTWFya3NDb2xvclViZXJFZmZlY3RzLCBoYXZpbmcgdHlwZSBNYXJrc0NvbG9yVWJlckVmZmVjdHNQcmVzTW9kZWxcbiAgTWFya3NDb2xvclViZXJFZmZlY3RzID0gJ21hcmtzQ29sb3JVYmVyRWZmZWN0cycsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsQ29sb3JFbmNvZGluZywgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxDb2xvckVuY29kaW5nUHJlc01vZGVsXG4gIENhdGVnb3JpY2FsQ29sb3JFbmNvZGluZyA9ICdjYXRlZ29yaWNhbENvbG9yRW5jb2RpbmcnLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbFNoYXBlRW5jb2RpbmcsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsU2hhcGVFbmNvZGluZ1ByZXNNb2RlbFxuICBDYXRlZ29yaWNhbFNoYXBlRW5jb2RpbmcgPSAnY2F0ZWdvcmljYWxTaGFwZUVuY29kaW5nJyxcblxuICAvLyBEUElfU2hhcGVQYWxldHRlUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBTaGFwZVBhbGV0dGVQcmVzTW9kZWxcbiAgU2hhcGVQYWxldHRlUHJlc01vZGVsID0gJ3NoYXBlUGFsZXR0ZVByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1NoYXBlUGFsZXR0ZVByZXNNb2RlbHMsIGhhdmluZyB0eXBlIFNoYXBlUGFsZXR0ZVByZXNNb2RlbFtdXG4gIFNoYXBlUGFsZXR0ZVByZXNNb2RlbHMgPSAnc2hhcGVQYWxldHRlUHJlc01vZGVscycsXG5cbiAgLy8gRFBJX0RhdGFTb3VyY2VEYXRlUHJvcGVydGllcywgaGF2aW5nIHR5cGUgRGF0YVNvdXJjZURhdGVQcm9wZXJ0aWVzUHJlc01vZGVsXG4gIERhdGFTb3VyY2VEYXRlUHJvcGVydGllcyA9ICdkYXRhc291cmNlRGF0ZVByb3BlcnRpZXMnLFxuXG4gIC8vIERQSV9EYXRlUHJvcGVydGllc0RhdGVGb3JtYXQsIGhhdmluZyB0eXBlIERhdGVQcm9wZXJ0aWVzRGF0ZUZvcm1hdFByZXNNb2RlbFxuICBEYXRlUHJvcGVydGllc0RhdGVGb3JtYXQgPSAnZGF0ZVByb3BlcnRpZXNEYXRlRm9ybWF0JyxcblxuICAvLyBEUElfRGF0ZVByb3BlcnRpZXNEYXRlRm9ybWF0cywgaGF2aW5nIHR5cGUgRGF0ZVByb3BlcnRpZXNEYXRlRm9ybWF0UHJlc01vZGVsW11cbiAgRGF0ZVByb3BlcnRpZXNEYXRlRm9ybWF0cyA9ICdkYXRlUHJvcGVydGllc0RhdGVGb3JtYXRzJyxcblxuICAvLyBEUElfSGllcmFyY2h5U2VsZWN0LCBoYXZpbmcgdHlwZSBIaWVyYXJjaHlTZWxlY3RNb2RlbFxuICBIaWVyYXJjaHlTZWxlY3QgPSAnaGllcmFyY2h5U2VsZWN0JyxcblxuICAvLyBEUElfSGllcmFyY2h5U2VsZWN0TWVtYmVyLCBoYXZpbmcgdHlwZSBIaWVyYXJjaHlTZWxlY3RNZW1iZXJQcmVzTW9kZWxcbiAgSGllcmFyY2h5U2VsZWN0TWVtYmVyID0gJ2hpZXJhcmNoeVNlbGVjdE1lbWJlcicsXG5cbiAgLy8gRFBJX0hpZXJhcmNoeVNlbGVjdE1lbWJlckxpc3QsIGhhdmluZyB0eXBlIEhpZXJhcmNoeVNlbGVjdE1lbWJlclByZXNNb2RlbFtdXG4gIEhpZXJhcmNoeVNlbGVjdE1lbWJlckxpc3QgPSAnaGllcmFyY2h5U2VsZWN0TWVtYmVyTGlzdCcsXG5cbiAgLy8gRFBJX0hpZXJhcmNoeVNldERlZmF1bHRNZW1iZXIsIGhhdmluZyB0eXBlIEhpZXJhcmNoeVNldERlZmF1bHRNZW1iZXJQcmVzTW9kZWxcbiAgSGllcmFyY2h5U2V0RGVmYXVsdE1lbWJlciA9ICdoaWVyYXJjaHlTZXREZWZhdWx0TWVtYmVyJyxcblxuICAvLyBEUElfU2VtaVN0cnVjdFNjaGVtYSwgaGF2aW5nIHR5cGUgU2VtaVN0cnVjdFNjaGVtYVByZXNNb2RlbFxuICBTZW1pU3RydWN0U2NoZW1hID0gJ3NlbWlTdHJ1Y3RTY2hlbWEnLFxuXG4gIC8vIERQSV9TZW1pU3RydWN0U2NoZW1hTWVtYmVyLCBoYXZpbmcgdHlwZSBTZW1pU3RydWN0U2NoZW1hTWVtYmVyUHJlc01vZGVsXG4gIFNlbWlTdHJ1Y3RTY2hlbWFNZW1iZXIgPSAnc2VtaVN0cnVjdFNjaGVtYU1lbWJlcicsXG5cbiAgLy8gRFBJX1NlbWlTdHJ1Y3RTY2hlbWFNZW1iZXJMaXN0LCBoYXZpbmcgdHlwZSBTZW1pU3RydWN0U2NoZW1hTWVtYmVyUHJlc01vZGVsW11cbiAgU2VtaVN0cnVjdFNjaGVtYU1lbWJlckxpc3QgPSAnc2VtaVN0cnVjdFNjaGVtYU1lbWJlckxpc3QnLFxuXG4gIC8vIERQSV9QYXJhbWV0ZXJFZGl0SW5mbywgaGF2aW5nIHR5cGUgUGFyYW1ldGVyRWRpdEluZm9QcmVzTW9kZWxcbiAgUGFyYW1ldGVyRWRpdEluZm8gPSAncGFyYW1ldGVyRWRpdEluZm8nLFxuXG4gIC8vIERQSV9Qcm9kdWN0UGFyYW1ldGVySW5mbywgaGF2aW5nIHR5cGUgUHJvZHVjdFBhcmFtZXRlckluZm9QcmVzTW9kZWxcbiAgUHJvZHVjdFBhcmFtZXRlckluZm8gPSAncHJvZHVjdFBhcmFtZXRlckluZm8nLFxuXG4gIC8vIERQSV9DYXB0aW9uZWREYXRhc291cmNlRmllbGQsIGhhdmluZyB0eXBlIENhcHRpb25lZERhdGFzb3VyY2VJbmZvUHJlc01vZGVsXG4gIENhcHRpb25lZERhdGFzb3VyY2VGaWVsZCA9ICdjYXB0aW9uZWREYXRhc291cmNlRmllbGQnLFxuXG4gIC8vIERQSV9DYXB0aW9uZWREYXRhc291cmNlRmllbGRzLCBoYXZpbmcgdHlwZSBDYXB0aW9uZWREYXRhc291cmNlSW5mb1ByZXNNb2RlbFtdXG4gIENhcHRpb25lZERhdGFzb3VyY2VGaWVsZHMgPSAnY2FwdGlvbmVkRGF0YXNvdXJjZUZpZWxkcycsXG5cbiAgLy8gRFBJX0VkaXRlZFBhcmFtZXRlclJhbmdlRG9tYWluLCBoYXZpbmcgdHlwZSBQYXJhbWV0ZXJSYW5nZURvbWFpblByZXNNb2RlbFxuICBFZGl0ZWRQYXJhbWV0ZXJSYW5nZURvbWFpbiA9ICdlZGl0ZWRQYXJhbWV0ZXJSYW5nZURvbWFpbicsXG5cbiAgLy8gRFBJX1BhcmFtZXRlclJhbmdlRG9tYWluLCBoYXZpbmcgdHlwZSBQYXJhbWV0ZXJSYW5nZURvbWFpblByZXNNb2RlbFxuICBQYXJhbWV0ZXJSYW5nZURvbWFpbiA9ICdwYXJhbWV0ZXJSYW5nZURvbWFpbicsXG5cbiAgLy8gRFBJX1BhcmFtZXRlckxpc3REb21haW4sIGhhdmluZyB0eXBlIFBhcmFtZXRlckxpc3REb21haW5QcmVzTW9kZWxcbiAgUGFyYW1ldGVyTGlzdERvbWFpbiA9ICdwYXJhbWV0ZXJMaXN0RG9tYWluJyxcblxuICAvLyBEUElfUGFyYW1ldGVyTGlzdERvbWFpbk1lbWJlciwgaGF2aW5nIHR5cGUgUGFyYW1ldGVyTGlzdERvbWFpbk1lbWJlclByZXNNb2RlbFxuICBQYXJhbWV0ZXJMaXN0RG9tYWluTWVtYmVyID0gJ3BhcmFtZXRlckxpc3REb21haW5NZW1iZXInLFxuXG4gIC8vIERQSV9QYXJhbWV0ZXJMaXN0RG9tYWluTWVtYmVycywgaGF2aW5nIHR5cGUgUGFyYW1ldGVyTGlzdERvbWFpbk1lbWJlclByZXNNb2RlbFtdXG4gIFBhcmFtZXRlckxpc3REb21haW5NZW1iZXJzID0gJ3BhcmFtZXRlckxpc3REb21haW5NZW1iZXJzJyxcblxuICAvLyBEUElfSW5kZXhlZERvbWFpbk1lbWJlciwgaGF2aW5nIHR5cGUgSW5kZXhlZERvbWFpbk1lbWJlclByZXNNb2RlbFxuICBJbmRleGVkRG9tYWluTWVtYmVyID0gJ2luZGV4ZWREb21haW5NZW1iZXInLFxuXG4gIC8vIERQSV9JbmRleGVkRG9tYWluTWVtYmVycywgaGF2aW5nIHR5cGUgSW5kZXhlZERvbWFpbk1lbWJlclByZXNNb2RlbFtdXG4gIEluZGV4ZWREb21haW5NZW1iZXJzID0gJ2luZGV4ZWREb21haW5NZW1iZXJzJyxcblxuICAvLyBEUElfTmV3SW5kZXhlZERvbWFpbk1lbWJlcnMsIGhhdmluZyB0eXBlIEluZGV4ZWREb21haW5NZW1iZXJQcmVzTW9kZWxbXVxuICBOZXdJbmRleGVkRG9tYWluTWVtYmVycyA9ICduZXdJbmRleGVkRG9tYWluTWVtYmVycycsXG5cbiAgLy8gRFBJX1BhcmFtZXRlckxpc3REb21haW5EaWZmLCBoYXZpbmcgdHlwZSBwYXJhbWV0ZXItbGlzdC1kb21haW4tZGlmZlxuICBQYXJhbWV0ZXJMaXN0RG9tYWluRGlmZiA9ICdwYXJhbWV0ZXJMaXN0RG9tYWluRGlmZicsXG5cbiAgLy8gRFBJX0luZGV4UmFuZ2UsIGhhdmluZyB0eXBlIEluZGV4UmFuZ2VQcmVzTW9kZWxcbiAgSW5kZXhSYW5nZSA9ICdpbmRleFJhbmdlJyxcblxuICAvLyBEUElfSW5kZXhSYW5nZXMsIGhhdmluZyB0eXBlIEluZGV4UmFuZ2VQcmVzTW9kZWxbXVxuICBJbmRleFJhbmdlcyA9ICdpbmRleFJhbmdlcycsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsRmluZCwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxGaW5kUHJlc01vZGVsXG4gIENhdGVnb3JpY2FsRmluZCA9ICdjYXRlZ29yaWNhbEZpbmQnLFxuXG4gIC8vIERQSV9DYXB0aW9uZWREYXRhVmFsdWUsIGhhdmluZyB0eXBlIENhcHRpb25lZERhdGFWYWx1ZVByZXNNb2RlbFxuICBDYXB0aW9uZWREYXRhVmFsdWUgPSAnY2FwdGlvbmVkRGF0YVZhbHVlJyxcblxuICAvLyBEUElfU2VsZWN0ZWRWYWx1ZUNhcHRpb24sIGhhdmluZyB0eXBlIENhcHRpb25lZERhdGFWYWx1ZVByZXNNb2RlbFxuICBTZWxlY3RlZFZhbHVlQ2FwdGlvbiA9ICdzZWxlY3RlZFZhbHVlQ2FwdGlvbicsXG5cbiAgLy8gRFBJX0RhdGFWYWx1ZUNhcHRpb25MaXN0LCBoYXZpbmcgdHlwZSBDYXB0aW9uZWREYXRhVmFsdWVQcmVzTW9kZWxbXVxuICBEYXRhVmFsdWVDYXB0aW9uTGlzdCA9ICdkYXRhVmFsdWVDYXRwaW9uTGlzdCcsXG5cbiAgLy8gRFBJX1JhbmdlRGF0YVZhbHVlLCBoYXZpbmcgdHlwZSBSYW5nZURhdGFWYWx1ZVByZXNNb2RlbFxuICBSYW5nZURhdGFWYWx1ZSA9ICdyYW5nZURhdGFWYWx1ZScsXG5cbiAgLy8gRFBJX1BhcmFtZXRlclJhbmdlRGF0YVZhbHVlLCBoYXZpbmcgdHlwZSBSYW5nZURhdGFWYWx1ZVByZXNNb2RlbFxuICBQYXJhbWV0ZXJSYW5nZURhdGFWYWx1ZSA9ICdwYXJhbWV0ZXJSYW5nZURhdGFWYWx1ZScsXG5cbiAgLy8gRFBJX0RhdGFWYWx1ZVJhbmdlQ2FwdGlvbnMsIGhhdmluZyB0eXBlIERhdGFWYWx1ZVJhbmdlQ2FwdGlvbnNQcmVzTW9kZWxcbiAgRGF0YVZhbHVlUmFuZ2VDYXB0aW9ucyA9ICdkYXRhVmFsdWVSYW5nZUNhcHRpb25zJyxcblxuICAvLyBEUElfSW5kZXBlbmRlbnREaW1lbnNpb24sIGhhdmluZyB0eXBlIEluZGVwZW5kZW50RGltZW5zaW9uUHJlc01vZGVsXG4gIEluZGVwZW5kZW50RGltZW5zaW9uID0gJ2luZGVwZW5kZW50RGltZW5zaW9uJyxcblxuICAvLyBEUElfSW5kZXBlbmRlbnREaW1lbnNpb25zLCBoYXZpbmcgdHlwZSBJbmRlcGVuZGVudERpbWVuc2lvblByZXNNb2RlbFtdXG4gIEluZGVwZW5kZW50RGltZW5zaW9ucyA9ICdpbmRlcGVuZGVudERpbWVuc2lvbnMnLFxuXG4gIC8vIERQSV9BdHRyaWJ1dGVQZXJzcGVjdGl2ZSwgaGF2aW5nIHR5cGUgUGVyc3BlY3RpdmVQcmVzTW9kZWxcbiAgQXR0cmlidXRlUGVyc3BlY3RpdmUgPSAnYXR0cmlidXRlUGVyc3BlY3RpdmUnLFxuXG4gIC8vIERQSV9DdWJlUGVyc3BlY3RpdmUsIGhhdmluZyB0eXBlIFBlcnNwZWN0aXZlUHJlc01vZGVsXG4gIEN1YmVQZXJzcGVjdGl2ZSA9ICdjdWJlUGVyc3BlY3RpdmUnLFxuXG4gIC8vIERQSV9BdHRyaWJ1dGVQZXJzcGVjdGl2ZXMsIGhhdmluZyB0eXBlIFBlcnNwZWN0aXZlUHJlc01vZGVsW11cbiAgQXR0cmlidXRlUGVyc3BlY3RpdmVzID0gJ2F0dHJpYnV0ZVBlcnNwZWN0aXZlcycsXG5cbiAgLy8gRFBJX0NhbGN1bGF0ZWRNZW1iZXJzRm9yRWRpdGluZ1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgRWRpdENhbGN1bGF0ZWRNZW1iZXJzUHJlc01vZGVsXG4gIENhbGN1bGF0ZWRNZW1iZXJzRm9yRWRpdGluZ1ByZXNNb2RlbCA9ICdjYWxjdWxhdGVkTWVtYmVyc0ZvckVkaXRpbmdQcmVzbW9kZWwnLFxuXG4gIC8vIERQSV9DYWxjdWxhdGVkTWVtYmVyLCBoYXZpbmcgdHlwZSBDYWxjdWxhdGVkTWVtYmVyUHJlc01vZGVsXG4gIENhbGN1bGF0ZWRNZW1iZXIgPSAnY2FsY3VsYXRlZE1lbWJlcicsXG5cbiAgLy8gRFBJX05ld0NhbGN1bGF0ZWRNZW1iZXIsIGhhdmluZyB0eXBlIENhbGN1bGF0ZWRNZW1iZXJQcmVzTW9kZWxcbiAgTmV3Q2FsY3VsYXRlZE1lbWJlciA9ICduZXdDYWxjdWxhdGVkTWVtYmVyJyxcblxuICAvLyBEUElfVXBkYXRlZENhbGN1bGF0ZWRNZW1iZXIsIGhhdmluZyB0eXBlIENhbGN1bGF0ZWRNZW1iZXJQcmVzTW9kZWxcbiAgVXBkYXRlZENhbGN1bGF0ZWRNZW1iZXIgPSAndXBkYXRlZENhbGN1bGF0ZWRNZW1iZXInLFxuXG4gIC8vIERQSV9DYWxjdWxhdGVkTWVtYmVyc0xpc3QsIGhhdmluZyB0eXBlIENhbGN1bGF0ZWRNZW1iZXJQcmVzTW9kZWxbXVxuICBDYWxjdWxhdGVkTWVtYmVyc0xpc3QgPSAnY2FsY3VsYXRlZE1lbWJlcnNMaXN0JyxcblxuICAvLyBEUElfQ2FsY3VsYXRlZE1lbWJlckhpZXJhcmNoeUl0ZW0sIGhhdmluZyB0eXBlIENhbGN1bGF0ZWRNZW1iZXJIaWVyYXJjaHlJdGVtUHJlc01vZGVsXG4gIENhbGN1bGF0ZWRNZW1iZXJIaWVyYXJjaHlJdGVtID0gJ2NhbGN1bGF0ZWRNZW1iZXJIaWVyYXJjaHlJdGVtJyxcblxuICAvLyBEUElfQ2FsY3VsYXRlZE1lbWJlckhpZXJhcmNoeUxpc3QsIGhhdmluZyB0eXBlIENhbGN1bGF0ZWRNZW1iZXJIaWVyYXJjaHlJdGVtUHJlc01vZGVsW11cbiAgQ2FsY3VsYXRlZE1lbWJlckhpZXJhcmNoeUxpc3QgPSAnY2FsY3VsYXRlZE1lbWJlckhpZXJhcmNoeUxpc3QnLFxuXG4gIC8vIERQSV9TdW1tYXJ5Q2FyZFByZXNNb2RlbCwgaGF2aW5nIHR5cGUgU3VtbWFyeUNhcmRQcmVzTW9kZWxcbiAgU3VtbWFyeUNhcmRQcmVzTW9kZWwgPSAnc3VtbWFyeUNhcmQnLFxuXG4gIC8vIERQSV9NZWFzdXJlU3VtbWFyeSwgaGF2aW5nIHR5cGUgTWVhc3VyZVN1bW1hcnlQcmVzTW9kZWxcbiAgTWVhc3VyZVN1bW1hcnkgPSAnbWVhc3VyZVN1bW1hcnknLFxuXG4gIC8vIERQSV9NZWFzdXJlU3VtbWFyeUxpc3QsIGhhdmluZyB0eXBlIE1lYXN1cmVTdW1tYXJ5UHJlc01vZGVsW11cbiAgTWVhc3VyZVN1bW1hcnlMaXN0ID0gJ21lYXN1cmVTdW1tYXJ5TGlzdCcsXG5cbiAgLy8gRFBJX0Fubm90YXRpb25QcmVzTW9kZWwsIGhhdmluZyB0eXBlIEFubm90YXRpb25QcmVzTW9kZWxcbiAgQW5ub3RhdGlvblByZXNNb2RlbCA9ICdhbm5vdGF0aW9uJyxcblxuICAvLyBEUElfQW5ub3RhdGlvbkxpc3QsIGhhdmluZyB0eXBlIEFubm90YXRpb25QcmVzTW9kZWxbXVxuICBBbm5vdGF0aW9uTGlzdCA9ICdhbm5vdGF0aW9uTGlzdCcsXG5cbiAgLy8gRFBJX0Fubm90YXRpb25TaGFwZVN0eWxlLCBoYXZpbmcgdHlwZSBBbm5vdGF0aW9uU2hhcGVTdHlsZVByZXNNb2RlbFxuICBBbm5vdGF0aW9uU2hhcGVTdHlsZSA9ICdhbm5vdGF0aW9uU2hhcGVTdHlsZScsXG5cbiAgLy8gRFBJX1RlbGVtZXRyeSwgaGF2aW5nIHR5cGUgVGVsZW1ldHJ5UHJlc01vZGVsXG4gIFRlbGVtZXRyeSA9ICd0ZWxlbWV0cnknLFxuXG4gIC8vIERQSV9EYXRhU291cmNlVGVsZW1ldHJ5LCBoYXZpbmcgdHlwZSBEYXRhU291cmNlVGVsZW1ldHJ5UHJlc01vZGVsXG4gIERhdGFTb3VyY2VUZWxlbWV0cnkgPSAnZGF0YVNvdXJjZVRlbGVtZXRyeScsXG5cbiAgLy8gRFBJX0RhdGFTb3VyY2VUZWxlbWV0cnlMaXN0LCBoYXZpbmcgdHlwZSBEYXRhU291cmNlVGVsZW1ldHJ5UHJlc01vZGVsW11cbiAgRGF0YVNvdXJjZVRlbGVtZXRyeUxpc3QgPSAnZGF0YVNvdXJjZVRlbGVtZXRyeUxpc3QnLFxuXG4gIC8vIERQSV9WaXN1YWxTcGVjaWZpY2F0aW9uVGVsZW1ldHJ5LCBoYXZpbmcgdHlwZSBWaXN1YWxTcGVjaWZpY2F0aW9uVGVsZW1ldHJ5UHJlc01vZGVsXG4gIFZpc3VhbFNwZWNpZmljYXRpb25UZWxlbWV0cnkgPSAndmlzdWFsU3BlY2lmaWNhdGlvblRlbGVtZXRyeScsXG5cbiAgLy8gRFBJX1Zpc3VhbFNwZWNpZmljYXRpb25UZWxlbWV0cnlMaXN0LCBoYXZpbmcgdHlwZSBWaXN1YWxTcGVjaWZpY2F0aW9uVGVsZW1ldHJ5UHJlc01vZGVsW11cbiAgVmlzdWFsU3BlY2lmaWNhdGlvblRlbGVtZXRyeUxpc3QgPSAndmlzdWFsU3BlY2lmaWNhdGlvblRlbGVtZXRyeUxpc3QnLFxuXG4gIC8vIERQSV9VbmRlcmx5aW5nRGF0YVRhYmxlLCBoYXZpbmcgdHlwZSBVbmRlcmx5aW5nRGF0YVRhYmxlUHJlc01vZGVsXG4gIFVuZGVybHlpbmdEYXRhVGFibGUgPSAndW5kZXJseWluZ0RhdGFUYWJsZScsXG5cbiAgLy8gRFBJX1VuZGVybHlpbmdEYXRhVGFibGVzLCBoYXZpbmcgdHlwZSBVbmRlcmx5aW5nRGF0YVRhYmxlUHJlc01vZGVsW11cbiAgVW5kZXJseWluZ0RhdGFUYWJsZXMgPSAndW5kZXJseWluZ0RhdGFUYWJsZXMnLFxuXG4gIC8vIERQSV9VbmRlcmx5aW5nRGF0YVRhYmxlQ29sdW1uLCBoYXZpbmcgdHlwZSBVbmRlcmx5aW5nRGF0YVRhYmxlQ29sdW1uUHJlc01vZGVsXG4gIFVuZGVybHlpbmdEYXRhVGFibGVDb2x1bW4gPSAndW5kZXJseWluZ0RhdGFUYWJsZUNvbHVtbicsXG5cbiAgLy8gRFBJX1VuZGVybHlpbmdEYXRhVGFibGVDb2x1bW5zLCBoYXZpbmcgdHlwZSBVbmRlcmx5aW5nRGF0YVRhYmxlQ29sdW1uUHJlc01vZGVsW11cbiAgVW5kZXJseWluZ0RhdGFUYWJsZUNvbHVtbnMgPSAndW5kZXJseWluZ0RhdGFUYWJsZUNvbHVtbnMnLFxuXG4gIC8vIERQSV9QYWdlQ2FjaGVJRCwgaGF2aW5nIHR5cGUgUGFnZUNhY2hlSURQcmVzTW9kZWxcbiAgUGFnZUNhY2hlSUQgPSAncGFnZUNhY2hlSWQnLFxuXG4gIC8vIERQSV9SZWxhdGlvbmFsUGFnZUNhY2hlSUQsIGhhdmluZyB0eXBlIFBhZ2VDYWNoZUlEUHJlc01vZGVsXG4gIFJlbGF0aW9uYWxQYWdlQ2FjaGVJRCA9ICdyZWxhdGlvbmFsUGFnZUNhY2hlSWQnLFxuXG4gIC8vIERQSV9TZWFyY2hSZXN1bHRzQ2FjaGVJRCwgaGF2aW5nIHR5cGUgUGFnZUNhY2hlSURQcmVzTW9kZWxcbiAgU2VhcmNoUmVzdWx0c0NhY2hlSUQgPSAnc2VhcmNoUmVzdWx0c0NhY2hlSWQnLFxuXG4gIC8vIERQSV9QYWdlSW5mbywgaGF2aW5nIHR5cGUgUGFnZUluZm9QcmVzTW9kZWxcbiAgUGFnZUluZm8gPSAncGFnZUluZm8nLFxuXG4gIC8vIERQSV9Sb3dDb2xQYWlyLCBoYXZpbmcgdHlwZSBSb3dDb2xQYWlyUHJlc01vZGVsXG4gIFJvd0NvbFBhaXIgPSAncm93Q29sUGFpcicsXG5cbiAgLy8gRFBJX1RvcExlZnRSb3dDb2wsIGhhdmluZyB0eXBlIFJvd0NvbFBhaXJQcmVzTW9kZWxcbiAgVG9wTGVmdFJvd0NvbCA9ICd0b3BMZWZ0Um93Q29sJyxcblxuICAvLyBEUElfQm90UmlnaHRSb3dDb2wsIGhhdmluZyB0eXBlIFJvd0NvbFBhaXJQcmVzTW9kZWxcbiAgQm90UmlnaHRSb3dDb2wgPSAnYm90UmlnaHRSb3dDb2wnLFxuXG4gIC8vIERQSV9Sb3dDb2xQYWlycywgaGF2aW5nIHR5cGUgUm93Q29sUGFpclByZXNNb2RlbFtdXG4gIFJvd0NvbFBhaXJzID0gJ3Jvd0NvbFBhaXJzJyxcblxuICAvLyBEUElfVGFibGVWaWV3Q2FjaGVJbmZvLCBoYXZpbmcgdHlwZSBUYWJsZVZpZXdDYWNoZVByZXNNb2RlbFxuICBUYWJsZVZpZXdDYWNoZUluZm8gPSAndGFibGVWaWV3Q2FjaGVJbmZvJyxcblxuICAvLyBEUElfVGFibGVWaWV3SW5mbywgaGF2aW5nIHR5cGUgdGFibGVWaWV3SW5mb1ByZXNNb2RlbFxuICBUYWJsZVZpZXdJbmZvID0gJ3RhYmxlVmlld0luZm8nLFxuXG4gIC8vIERQSV9UYWJsZVZpZXdDb2x1bW5JbmZvLCBoYXZpbmcgdHlwZSBUYWJsZVZpZXdDb2x1bW5JbmZvUHJlc01vZGVsXG4gIFRhYmxlVmlld0NvbHVtbkluZm8gPSAndGFibGVWaWV3Q29sdW1uSW5mbycsXG5cbiAgLy8gRFBJX1RhYmxlVmlld0NvbHVtbnMsIGhhdmluZyB0eXBlIFRhYmxlVmlld0NvbHVtbkluZm9QcmVzTW9kZWxbXVxuICBUYWJsZVZpZXdDb2x1bW5zID0gJ3RhYmxlVmlld0NvbHVtbnMnLFxuXG4gIC8vIERQSV9UYWJsZVZpZXdQYWdlSXRlbSwgaGF2aW5nIHR5cGUgVGFibGVWaWV3UGFnZUl0ZW1QcmVzTW9kZWxcbiAgVGFibGVWaWV3UGFnZUl0ZW0gPSAndGFibGVWaWV3UGFnZUl0ZW0nLFxuXG4gIC8vIERQSV9UYWJsZVZpZXdQYWdlQ29sdW1ucywgaGF2aW5nIHR5cGUgVGFibGVWaWV3UGFnZUl0ZW1QcmVzTW9kZWxbXVxuICBUYWJsZVZpZXdQYWdlQ29sdW1ucyA9ICd0YWJsZVZpZXdQYWdlQ29sdW1ucycsXG5cbiAgLy8gRFBJX1RhYmxlVmlld1BhZ2VSb3csIGhhdmluZyB0eXBlIFRhYmxlVmlld1BhZ2VSb3dQcmVzTW9kZWxcbiAgVGFibGVWaWV3UGFnZVJvdyA9ICd0YWJsZVZpZXdQYWdlUm93JyxcblxuICAvLyBEUElfVGFibGVWaWV3UGFnZVJvd3MsIGhhdmluZyB0eXBlIFRhYmxlVmlld1BhZ2VSb3dQcmVzTW9kZWxbXVxuICBUYWJsZVZpZXdQYWdlUm93cyA9ICd0YWJsZVZpZXdQYWdlUm93cycsXG5cbiAgLy8gRFBJX1RhYmxlVmlld1BhZ2UsIGhhdmluZyB0eXBlIFRhYmxlVmlld1BhZ2VQcmVzTW9kZWxcbiAgVGFibGVWaWV3UGFnZSA9ICd0YWJsZVZpZXdQYWdlJyxcblxuICAvLyBEUElfQ2F0ZWdvcmljYWxWYWx1ZVBpY2tlciwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxWYWx1ZVBpY2tlclByZXNNb2RlbFxuICBDYXRlZ29yaWNhbFZhbHVlUGlja2VyID0gJ2NhdGVnb3JpY2FsVmFsdWVQaWNrZXInLFxuXG4gIC8vIERQSV9Bbm5vdGF0aW9uU2hhcGVCb3JkZXJTdHlsZSwgaGF2aW5nIHR5cGUgTGluZVN0eWxlUHJlc01vZGVsXG4gIEFubm90YXRpb25TaGFwZUJvcmRlclN0eWxlID0gJ2Fubm90YXRpb25TaGFwZUJvcmRlclN0eWxlJyxcblxuICAvLyBEUElfQW5vdGF0aW9uU2hhcGVTdHJva2VTdHlsZSwgaGF2aW5nIHR5cGUgTGluZVN0eWxlUHJlc01vZGVsXG4gIEFub3RhdGlvblNoYXBlU3Ryb2tlU3R5bGUgPSAnYW5ub3RhdGlvblNoYXBlU3Ryb2tlU3R5bGUnLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbEJpbkVkaXRvclByZXNNb2RlbCwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxCaW5FZGl0b3JQcmVzTW9kZWxcbiAgQ2F0ZWdvcmljYWxCaW5FZGl0b3JQcmVzTW9kZWwgPSAnY2F0ZWdvcmljYWxCaW5FZGl0b3InLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbEJpbkl0ZW0sIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsQmluSXRlbVByZXNNb2RlbFxuICBDYXRlZ29yaWNhbEJpbkl0ZW0gPSAnY2F0ZWdvcmljYWxCaW5JdGVtUHJlc01vZGVsJyxcblxuICAvLyBEUElfQ2F0ZWdvcmljYWxCaW5JdGVtcywgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxCaW5JdGVtUHJlc01vZGVsW11cbiAgQ2F0ZWdvcmljYWxCaW5JdGVtcyA9ICdjYXRlZ29yaWNhbEJpbkl0ZW1QcmVzTW9kZWxzJyxcblxuICAvLyBEUElfTWVhc3VyZVBpY2tlckZpZWxkSW5mbywgaGF2aW5nIHR5cGUgTWVhc3VyZVBpY2tlckZpZWxkSW5mb1ByZXNNb2RlbFxuICBNZWFzdXJlUGlja2VyRmllbGRJbmZvID0gJ21lYXN1cmVQaWNrZXJGaWVsZEluZm8nLFxuXG4gIC8vIERQSV9NZWFzdXJlUGlja2VyRmllbGRzLCBoYXZpbmcgdHlwZSBNZWFzdXJlUGlja2VyRmllbGRJbmZvUHJlc01vZGVsW11cbiAgTWVhc3VyZVBpY2tlckZpZWxkcyA9ICdtZWFzdXJlUGlja2VyRmllbGRzJyxcblxuICAvLyBEUElfTWVhc3VyZUFnZ3JlZ2F0aW9uSW5mbywgaGF2aW5nIHR5cGUgTWVhc3VyZUFnZ3JlZ2F0aW9uSW5mb1ByZXNNb2RlbFxuICBNZWFzdXJlQWdncmVnYXRpb25JbmZvID0gJ21lYXN1cmVBZ2dyZWdhdGlvbkluZm8nLFxuXG4gIC8vIERQSV9NZWFzdXJlQWdncmVnYXRpb25zLCBoYXZpbmcgdHlwZSBNZWFzdXJlQWdncmVnYXRpb25JbmZvUHJlc01vZGVsW11cbiAgTWVhc3VyZUFnZ3JlZ2F0aW9ucyA9ICdtZWFzdXJlQWdncmVnYXRpb25zJyxcblxuICAvLyBEUElfVHVwbGVQYWlyLCBoYXZpbmcgdHlwZSBUdXBsZVBhaXJQcmVzTW9kZWxcbiAgVHVwbGVQYWlyID0gJ3R1cGxlUGFpcicsXG5cbiAgLy8gRFBJX0RpbWVuc2lvbkJvdW5kLCBoYXZpbmcgdHlwZSBEaW1lbnNpb25Cb3VuZFByZXNNb2RlbFxuICBEaW1lbnNpb25Cb3VuZCA9ICdkaW1lbnNpb25Cb3VuZCcsXG5cbiAgLy8gRFBJX1BlcnNwZWN0aXZlQm91bmRzLCBoYXZpbmcgdHlwZSBEaW1lbnNpb25Cb3VuZFByZXNNb2RlbFtdXG4gIFBlcnNwZWN0aXZlQm91bmRzID0gJ3BlcnNwZWN0aXZlQm91bmRzJyxcblxuICAvLyBEUElfRmlsdGVyUGVyc3BlY3RpdmVJbmZvUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBGaWx0ZXJQZXJzcGVjdGl2ZUluZm9QcmVzTW9kZWxcbiAgRmlsdGVyUGVyc3BlY3RpdmVJbmZvUHJlc01vZGVsID0gJ2ZpbHRlclBlcnNwZWN0aXZlSW5mbycsXG5cbiAgLy8gRFBJX1RhYmxlUmVsZXZhbmNlLCBoYXZpbmcgdHlwZSBUYWJsZVJlbGV2YW5jZVByZXNNb2RlbFxuICBUYWJsZVJlbGV2YW5jZSA9ICd0YWJsZVJlbGV2YW5jZScsXG5cbiAgLy8gRFBJX0FkZEluUmVnaXN0cmF0aW9uUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBBZGRJblJlZ2lzdHJhdGlvblByZXNNb2RlbFxuICBBZGRJblJlZ2lzdHJhdGlvblByZXNNb2RlbCA9ICdhZGRJblJlZ2lzdHJhdGlvblByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX0FkZEluUmVnaXN0cmF0aW9uUHJlc01vZGVsTGlzdCwgaGF2aW5nIHR5cGUgQWRkSW5SZWdpc3RyYXRpb25QcmVzTW9kZWxbXVxuICBBZGRJblJlZ2lzdHJhdGlvblByZXNNb2RlbExpc3QgPSAnYWRkSW5SZWdpc3RyYXRpb25QcmVzTW9kZWxMaXN0JyxcblxuICAvLyBEUElfQWRkSW5EYXNoYm9hcmRBdXRob3JpbmdXaWRnZXQsIGhhdmluZyB0eXBlIEFkZEluRGFzaGJvYXJkV2lkZ2V0UHJlc01vZGVsXG4gIEFkZEluRGFzaGJvYXJkQXV0aG9yaW5nV2lkZ2V0ID0gJ2FkZEluRGFzaGJvYXJkQXV0aG9yaW5nV2lkZ2V0UHJlc01vZGVsJyxcblxuICAvLyBEUElfQWRkSW5JbnN0YW5jZSwgaGF2aW5nIHR5cGUgQWRkSW5JbnN0YW5jZVByZXNNb2RlbFxuICBBZGRJbkluc3RhbmNlID0gJ2FkZEluSW5zdGFuY2VQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9BZGRJbkxvY2F0b3IsIGhhdmluZyB0eXBlIEFkZEluTG9jYXRvclByZXNNb2RlbFxuICBBZGRJbkxvY2F0b3IgPSAnYWRkSW5Mb2NhdG9yUHJlc01vZGVsJyxcblxuICAvLyBEUElfQWRkSW5Db250ZXh0LCBoYXZpbmcgdHlwZSBBZGRJbkNvbnRleHRcbiAgQWRkSW5Db250ZXh0ID0gJ2FkZEluQ29udGV4dCcsXG5cbiAgLy8gRFBJX0FkZEluTW9kZSwgaGF2aW5nIHR5cGUgQWRkSW5Nb2RlXG4gIEFkZEluTW9kZSA9ICdhZGRJbk1vZGUnLFxuXG4gIC8vIERQSV9TZXRBeGlzUmFuZ2VSZXN1bHQsIGhhdmluZyB0eXBlIFNldEF4aXNSYW5nZVJlc3VsdFxuICBTZXRBeGlzUmFuZ2VSZXN1bHQgPSAnc2V0QXhpc1JhbmdlUmVzdWx0JyxcblxuICAvLyBEUElfU2V0VGlja09yaWdpblJlc3VsdCwgaGF2aW5nIHR5cGUgU2V0VGlja09yaWdpblJlc3VsdFxuICBTZXRUaWNrT3JpZ2luUmVzdWx0ID0gJ3NldFRpY2tPcmlnaW5SZXN1bHQnLFxuXG4gIC8vIERQSV9TZXRUaWNrU3BhY2luZ1Jlc3VsdCwgaGF2aW5nIHR5cGUgU2V0VGlja1NwYWNpbmdSZXN1bHRcbiAgU2V0VGlja1NwYWNpbmdSZXN1bHQgPSAnc2V0VGlja1NwYWNpbmdSZXN1bHQnLFxuXG4gIC8vIERQSV9BeGlzRXh0ZW50U3RhcnRUeXBlLCBoYXZpbmcgdHlwZSBBeGlzRXh0ZW50VHlwZVxuICBBeGlzRXh0ZW50U3RhcnRUeXBlID0gJ2F4aXNFeHRlbnRTdGFydFR5cGUnLFxuXG4gIC8vIERQSV9BeGlzRXh0ZW50RW5kVHlwZSwgaGF2aW5nIHR5cGUgQXhpc0V4dGVudFR5cGVcbiAgQXhpc0V4dGVudEVuZFR5cGUgPSAnYXhpc0V4dGVudEVuZFR5cGUnLFxuXG4gIC8vIERQSV9BeGlzRXh0ZW50c1R5cGUsIGhhdmluZyB0eXBlIEF4aXNFeHRlbnRUeXBlXG4gIEF4aXNFeHRlbnRzVHlwZSA9ICdheGlzRXh0ZW50c1R5cGUnLFxuXG4gIC8vIERQSV9BZGRJbkVudmlyb25tZW50LCBoYXZpbmcgdHlwZSBBZGRJbkVudmlyb25tZW50UHJlc01vZGVsXG4gIEFkZEluRW52aXJvbm1lbnQgPSAnYWRkSW5FbnZpcm9ubWVudFByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX0FkZEluRGFzaGJvYXJkSW5mbywgaGF2aW5nIHR5cGUgQWRkSW5EYXNoYm9hcmRJbmZvUHJlc01vZGVsXG4gIEFkZEluRGFzaGJvYXJkSW5mbyA9ICdhZGRJbkRhc2hib2FyZEluZm9QcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9BZGRJblNldHRpbmdzSW5mbywgaGF2aW5nIHR5cGUgQWRkSW5TZXR0aW5nc0luZm9QcmVzTW9kZWxcbiAgQWRkSW5TZXR0aW5nc0luZm8gPSAnYWRkSW5TZXR0aW5nc0luZm8nLFxuXG4gIC8vIERQSV9BZGRJbkJvb3RzdHJhcEluZm8sIGhhdmluZyB0eXBlIEFkZEluQm9vdHN0cmFwSW5mb1ByZXNNb2RlbFxuICBBZGRJbkJvb3RzdHJhcEluZm8gPSAnYWRkSW5Cb290c3RyYXBJbmZvJyxcblxuICAvLyBEUElfQWRkSW5EZWJ1Z1NldHRpbmdzLCBoYXZpbmcgdHlwZSBBZGRJbkRlYnVnU2V0dGluZ3NQcmVzTW9kZWxcbiAgQWRkSW5EZWJ1Z1NldHRpbmdzID0gJ2FkZEluRGVidWdTZXR0aW5ncycsXG5cbiAgLy8gRFBJX1JpY2hUZXh0LCBoYXZpbmcgdHlwZSBSaWNoVGV4dFByZXNNb2RlbFxuICBSaWNoVGV4dCA9ICdyaWNoVGV4dCcsXG5cbiAgLy8gRFBJX1JpY2hUZXh0S2V5d29yZFN1Ykxpc3QsIGhhdmluZyB0eXBlIFJpY2hUZXh0S2V5d29yZFN1Ykxpc3RQcmVzTW9kZWxcbiAgUmljaFRleHRLZXl3b3JkU3ViTGlzdCA9ICdyaWNoVGV4dEtleXdvcmRzU3VibGlzdCcsXG5cbiAgLy8gRFBJX1JpY2hUZXh0S2V5d29yZFN1Ykxpc3RzLCBoYXZpbmcgdHlwZSBSaWNoVGV4dEtleXdvcmRTdWJMaXN0UHJlc01vZGVsW11cbiAgUmljaFRleHRLZXl3b3JkU3ViTGlzdHMgPSAncmljaFRleHRLZXl3b3JkU3VibGlzdHMnLFxuXG4gIC8vIERQSV9SaWNoVGV4dEtleXdvcmRMaXN0LCBoYXZpbmcgdHlwZSBSaWNoVGV4dEtleXdvcmRMaXN0UHJlc01vZGVsXG4gIFJpY2hUZXh0S2V5d29yZExpc3QgPSAncmljaFRleHRLZXl3b3Jkc0xpc3QnLFxuXG4gIC8vIERQSV9SaWNoVGV4dEJsb2NrU3R5bGUsIGhhdmluZyB0eXBlIFJpY2hUZXh0QmxvY2tTdHlsZVByZXNNb2RlbFxuICBSaWNoVGV4dEJsb2NrU3R5bGUgPSAncmljaFRleHRCbG9ja1N0eWxlJyxcblxuICAvLyBEUElfUmljaFRleHRDb250ZW50U3R5bGUsIGhhdmluZyB0eXBlIFJpY2hUZXh0Q29udGVudFN0eWxlUHJlc01vZGVsXG4gIFJpY2hUZXh0Q29udGVudFN0eWxlID0gJ3JpY2hUZXh0Q29udGVudFN0eWxlJ1xufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWNvcmUvZ2VuLXNyYy9wcmVzbGF5ZXIvUGFyYW1zLnRzXG4gKiovIiwiaW1wb3J0IHsgUGFyYW1ldGVySWQgYXMgQXBpLCBWZXJiSWQgYXMgQXBpVmVyYklkLCBWZXJzaW9uTnVtYmVyIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcblxuaW1wb3J0IHsgRG9jQ29tbWFuZHMgYXMgUHJlc0xheWVyRG9jQ29tbWFuZElkLCBVSUNvbW1hbmRzIGFzIFByZXNMYXllclVJQ29tbWFuZElkIH0gZnJvbSAnLi4vLi4vZ2VuLXNyYy9wcmVzbGF5ZXIvQ29tbWFuZElkcyc7XG5pbXBvcnQgeyBQYXJhbWV0ZXJJZCBhcyBQTCB9IGZyb20gJy4uLy4uL2dlbi1zcmMvcHJlc2xheWVyL1BhcmFtcyc7XG5pbXBvcnQgeyBDb21tYW5kTWFwcGluZ1JlZ2lzdHJ5IH0gZnJvbSAnLi9Db21tYW5kTWFwcGluZ1JlZ2lzdHJ5JztcbmltcG9ydCB7IENvbW1hbmROYW1lc3BhY2UsIENvbW1hbmRQYXJhbWV0ZXIsIENvbW1hbmRSZWdpc3RyYXRpb24gfSBmcm9tICcuL0NvbW1hbmRSZWdpc3RyYXRpb24nO1xuXG5leHBvcnQgY2xhc3MgQ29tbWFuZE1hcHBpbmdSZWdpc3RyeUZhY3Rvcnkge1xuICAvKipcbiAgICogQ3JlYXRlcyBhbmQgcG9wdWxhdGVzIGEgbmV3IENvbW1hbmRNYXBwaW5nUmVnaXN0cnkgZm9yIHRoZSBzcGVjaWZpYyB2ZXJzaW9uIG51bWJlciByZXF1ZXN0ZWRcbiAgICpcbiAgICogQHN0YXRpY1xuICAgKiBAcGFyYW0ge1ZlcnNpb25OdW1iZXJ9IHZlcnNpb25OdW1iZXJcbiAgICogQHJldHVybnMge0NvbW1hbmRNYXBwaW5nUmVnaXN0cnl9XG4gICAqIEBtZW1iZXJvZiBDb21tYW5kTWFwcGluZ1JlZ2lzdHJ5RmFjdG9yeVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjcmVhdGVDb21tYW5kTWFwcGluZ1JlZ2lzdHJ5KHZlcnNpb25OdW1iZXI6IFZlcnNpb25OdW1iZXIpOiBDb21tYW5kTWFwcGluZ1JlZ2lzdHJ5IHtcbiAgICBsZXQgcmVzdWx0ID0gbmV3IENvbW1hbmRNYXBwaW5nUmVnaXN0cnkoKTtcblxuICAgIHJlc3VsdC5hZGRDb21tYW5kKG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uKFxuICAgICAgQXBpVmVyYklkLkluaXRpYWxpemVFeHRlbnNpb24sXG4gICAgICBQcmVzTGF5ZXJEb2NDb21tYW5kSWQuSW5pdGlhbGl6ZUFkZEluSW5zdGFuY2UsXG4gICAgICBbIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5FeHRlbnNpb25Mb2NhdG9yLCBQTC5BZGRJbkxvY2F0b3IpIF0sXG4gICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuRXh0ZW5zaW9uQm9vdHN0cmFwSW5mbywgUEwuQWRkSW5Cb290c3RyYXBJbmZvKSkpO1xuXG4gICAgcmVzdWx0LmFkZENvbW1hbmQobmV3IENvbW1hbmRSZWdpc3RyYXRpb24oXG4gICAgICBBcGlWZXJiSWQuR2V0VW5kZXJseWluZ0RhdGEsXG4gICAgICBQcmVzTGF5ZXJEb2NDb21tYW5kSWQuR2V0VW5kZXJseWluZ0RhdGEsXG4gICAgICBbIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5JZ25vcmVBbGlhc2VzLCBQTC5JZ25vcmVBbGlhc2VzKSxcbiAgICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLklnbm9yZVNlbGVjdGlvbiwgUEwuSWdub3JlU2VsZWN0aW9uKSxcbiAgICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLkluY2x1ZGVBbGxDb2x1bW5zLCBQTC5JbmNsdWRlQWxsQ29sdW1ucyksXG4gICAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5NYXhSb3dzLCBQTC5NYXhSb3dzKSxcbiAgICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLlZpc3VhbElkLCBQTC5WaXN1YWxJRFBNKSBdLFxuICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLlVuZGVybHlpbmdEYXRhVGFibGUsIFBMLlVuZGVybHlpbmdEYXRhVGFibGUpKSk7XG5cbiAgICByZXN1bHQuYWRkQ29tbWFuZChuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbihcbiAgICAgIEFwaVZlcmJJZC5HZXREYXRhU3VtbWFyeURhdGEsXG4gICAgICBQcmVzTGF5ZXJEb2NDb21tYW5kSWQuR2V0U3VtbWFyeURhdGEsXG4gICAgICBbIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5JZ25vcmVBbGlhc2VzLCBQTC5JZ25vcmVBbGlhc2VzKSxcbiAgICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLklnbm9yZVNlbGVjdGlvbiwgUEwuSWdub3JlU2VsZWN0aW9uKSxcbiAgICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLlZpc3VhbElkLCBQTC5WaXN1YWxJRFBNKSBdLFxuICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLlVuZGVybHlpbmdTdW1tYXJ5RGF0YVRhYmxlLCBQTC5VbmRlcmx5aW5nRGF0YVRhYmxlKSkpO1xuXG4gICAgcmVzdWx0LmFkZENvbW1hbmQobmV3IENvbW1hbmRSZWdpc3RyYXRpb24oXG4gICAgICBBcGlWZXJiSWQuR2V0RGF0YVNvdXJjZURhdGEsXG4gICAgICBQcmVzTGF5ZXJEb2NDb21tYW5kSWQuR2V0RGF0YVNvdXJjZURhdGEsXG4gICAgICBbIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5EYXRhU291cmNlSWQsIFBMLkRhdGFzb3VyY2UpLFxuICAgICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuSWdub3JlQWxpYXNlcywgUEwuSWdub3JlQWxpYXNlcyksXG4gICAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5NYXhSb3dzLCBQTC5NYXhSb3dzKSxcbiAgICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLkNvbHVtbnNUb0luY2x1ZGUsIFBMLkZpZWxkRGlzcGxheU5hbWVzKSBdLFxuICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLkRhdGFTb3VyY2VEYXRhVGFibGUsIFBMLlVuZGVybHlpbmdEYXRhVGFibGUpKSk7XG5cbiAgICByZXN1bHQuYWRkQ29tbWFuZChuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbihcbiAgICAgIEFwaVZlcmJJZC5BcHBseUNhdGVnb3JpY2FsRmlsdGVyLFxuICAgICAgUHJlc0xheWVyRG9jQ29tbWFuZElkLkNhdGVnb3JpY2FsRmlsdGVyLFxuICAgICAgWyBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuRmllbGROYW1lLCBQTC5RdWFsaWZpZWRGaWVsZENhcHRpb24pLFxuICAgICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuRmlsdGVyVmFsdWVzLCBQTC5GaWx0ZXJBbGlhc2VzKSxcbiAgICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLkZpbHRlclVwZGF0ZVR5cGUsIFBMLkZpbHRlclVwZGF0ZVR5cGUpLFxuICAgICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuSXNFeGNsdWRlTW9kZSwgUEwuRXhjbHVkZSwgdHJ1ZSksXG4gICAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5WaXN1YWxJZCwgUEwuV29ya3NoZWV0KSxcbiAgICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLlZpc3VhbElkLCBQTC5EYXNoYm9hcmQpXSxcbiAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5GaWVsZE5hbWUsIFBMLkZpZWxkQ2FwdGlvbikpKTtcblxuICAgIHJlc3VsdC5hZGRDb21tYW5kKG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uKFxuICAgICAgQXBpVmVyYklkLkFwcGx5UmFuZ2VGaWx0ZXIsXG4gICAgICBQcmVzTGF5ZXJEb2NDb21tYW5kSWQuUmFuZ2VGaWx0ZXIsXG4gICAgICBbIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5GaWVsZE5hbWUsIFBMLlF1YWxpZmllZEZpZWxkQ2FwdGlvbiksXG4gICAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5GaWx0ZXJSYW5nZU1pbiwgUEwuUmFuZ2VNaW4sIHRydWUpLFxuICAgICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuRmlsdGVyUmFuZ2VNYXgsIFBMLlJhbmdlTWF4LCB0cnVlKSxcbiAgICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLkZpbHRlclJhbmdlTnVsbE9wdGlvbiwgUEwuSW5jbHVkZWQsIHRydWUpLFxuICAgICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuVmlzdWFsSWQsIFBMLldvcmtzaGVldCksXG4gICAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5WaXN1YWxJZCwgUEwuRGFzaGJvYXJkKV0sXG4gICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuRmllbGROYW1lLCBQTC5GaWVsZENhcHRpb24pKSk7XG5cbiAgICByZXN1bHQuYWRkQ29tbWFuZChuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbihcbiAgICAgIEFwaVZlcmJJZC5DbGVhckZpbHRlcixcbiAgICAgIFByZXNMYXllckRvY0NvbW1hbmRJZC5DbGVhckV4aXN0aW5nRmlsdGVyLFxuICAgICAgWyBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuRmllbGROYW1lLCBQTC5RdWFsaWZpZWRGaWVsZENhcHRpb24pLFxuICAgICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuVmlzdWFsSWQsIFBMLldvcmtzaGVldCksXG4gICAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5WaXN1YWxJZCwgUEwuRGFzaGJvYXJkKV0sXG4gICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuRmllbGROYW1lLCBQTC5GaWVsZENhcHRpb24pKSk7XG5cbiAgICByZXN1bHQuYWRkQ29tbWFuZChuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbihcbiAgICAgIEFwaVZlcmJJZC5HZXRTZWxlY3RlZE1hcmtzLFxuICAgICAgUHJlc0xheWVyRG9jQ29tbWFuZElkLkdldFNlbGVjdGlvbkRhdGEsXG4gICAgICBbIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5WaXN1YWxJZCwgUEwuVmlzdWFsSURQTSkgXSxcbiAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5TZWxlY3RlZERhdGEsIFBMLlNlbGVjdGlvbkRhdGEpKSk7XG5cbiAgICByZXN1bHQuYWRkQ29tbWFuZChuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbihcbiAgICAgIEFwaVZlcmJJZC5HZXRIaWdobGlnaHRlZE1hcmtzLFxuICAgICAgUHJlc0xheWVyRG9jQ29tbWFuZElkLkdldEhpZ2hsaWdodGVkRGF0YSxcbiAgICAgIFsgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLlZpc3VhbElkLCBQTC5WaXN1YWxJRFBNKSBdLFxuICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLkhpZ2hsaWdodGVkRGF0YSwgUEwuSGlnaGxpZ2h0ZWREYXRhKSkpO1xuXG4gICAgcmVzdWx0LmFkZENvbW1hbmQobmV3IENvbW1hbmRSZWdpc3RyYXRpb24oXG4gICAgICBBcGlWZXJiSWQuU2F2ZUV4dGVuc2lvblNldHRpbmdzLFxuICAgICAgUHJlc0xheWVyRG9jQ29tbWFuZElkLlNhdmVBZGRJblNldHRpbmdzLFxuICAgICAgWyBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuRXh0ZW5zaW9uTG9jYXRvciwgUEwuQWRkSW5Mb2NhdG9yKSxcbiAgICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLlNldHRpbmdzVmFsdWVzLCBQTC5BZGRJblNldHRpbmdzKV0sXG4gICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuRXh0ZW5zaW9uU2V0dGluZ3NJbmZvLCBQTC5BZGRJblNldHRpbmdzSW5mbykpKTtcblxuICAgIHJlc3VsdC5hZGRDb21tYW5kKG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uKFxuICAgICAgQXBpVmVyYklkLkdldFBhcmFtZXRlcnNGb3JTaGVldCxcbiAgICAgIFByZXNMYXllckRvY0NvbW1hbmRJZC5HZXRQYXJhbWV0ZXJNb2RlbHMsXG4gICAgICBbXSxcbiAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5QYXJhbWV0ZXJJbmZvcywgUEwuUGFyYW1ldGVyQ3RybHMpKSk7XG5cbiAgICByZXN1bHQuYWRkQ29tbWFuZChuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbihcbiAgICAgIEFwaVZlcmJJZC5GaW5kUGFyYW1ldGVyLFxuICAgICAgUHJlc0xheWVyRG9jQ29tbWFuZElkLkZpbmRQYXJhbWV0ZXJNb2RlbCxcbiAgICAgIFsgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLlBhcmFtZXRlckNhcHRpb24sIFBMLkZpZWxkQ2FwdGlvbiwgdHJ1ZSksXG4gICAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5QYXJhbWV0ZXJGaWVsZE5hbWUsIFBMLkZpZWxkTmFtZVN0cmluZywgdHJ1ZSldLFxuICAgICAgLy8gV2UgbWlnaHQgbm90IGdldCBhIHJlc3BvbnNlIGlmIHRoZSBwYXJhbWV0ZXIgaXNuJ3QgZm91bmRcbiAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5QYXJhbWV0ZXJJbmZvLCBQTC5QYXJhbWV0ZXJDdHJsLCB0cnVlKSkpO1xuXG4gICAgcmVzdWx0LmFkZENvbW1hbmQobmV3IENvbW1hbmRSZWdpc3RyYXRpb24oXG4gICAgICBBcGlWZXJiSWQuQ2hhbmdlUGFyYW1ldGVyVmFsdWUsXG4gICAgICBQcmVzTGF5ZXJEb2NDb21tYW5kSWQuU2V0UGFyYW1ldGVyVmFsdWUsXG4gICAgICBbIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5QYXJhbWV0ZXJGaWVsZE5hbWUsIFBMLkdsb2JhbEZpZWxkTmFtZSksXG4gICAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5QYXJhbWV0ZXJWYWx1ZSwgUEwuVmFsdWVTdHIpXSxcbiAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5QYXJhbWV0ZXJJbmZvLCBQTC5QYXJhbWV0ZXJDdHJsKSkpO1xuXG4gICAgcmVzdWx0LmFkZENvbW1hbmQobmV3IENvbW1hbmRSZWdpc3RyYXRpb24oXG4gICAgICBBcGlWZXJiSWQuQ2xlYXJTZWxlY3RlZE1hcmtzLFxuICAgICAgUHJlc0xheWVyRG9jQ29tbWFuZElkLkNsZWFyU2VsZWN0ZWRNYXJrcyxcbiAgICAgIFtuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuVmlzdWFsSWQsIFBMLlZpc3VhbElEUE0pXSkpO1xuXG4gICAgcmVzdWx0LmFkZENvbW1hbmQobmV3IENvbW1hbmRSZWdpc3RyYXRpb24oXG4gICAgICBBcGlWZXJiSWQuU2VsZWN0QnlWYWx1ZSxcbiAgICAgIFByZXNMYXllckRvY0NvbW1hbmRJZC5TZWxlY3RCeVZhbHVlLFxuICAgICAgW25ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5WaXN1YWxJZCwgUEwuVmlzdWFsSURQTSksXG4gICAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5TZWxlY3Rpb24sIFBMLlNlbGVjdGlvbiwgdHJ1ZSksXG4gICAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5TZWxlY3Rpb25VcGRhdGVUeXBlLCBQTC5TZWxlY3Rpb25VcGRhdGVUeXBlKSxcbiAgICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLkhpZXJWYWxTZWxlY3Rpb25Nb2RlbHMsIFBMLkhpZXJWYWxTZWxlY3Rpb25Nb2RlbHMsIHRydWUpLFxuICAgICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuRGltVmFsU2VsZWN0aW9uTW9kZWxzLCBQTC5EaW1WYWxTZWxlY3Rpb25Nb2RlbHMsIHRydWUpLFxuICAgICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuUXVhbnRSYW5nZVNlbGVjdGlvbk1vZGVscywgUEwuUXVhbnRSYW5nZVNlbGVjdGlvbk1vZGVscywgdHJ1ZSldKSk7XG5cbiAgICByZXN1bHQuYWRkQ29tbWFuZChuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbihcbiAgICAgIEFwaVZlcmJJZC5HZXREYXRhU291cmNlcyxcbiAgICAgIFByZXNMYXllckRvY0NvbW1hbmRJZC5HZXRTY2hlbWEsXG4gICAgICBbXSxcbiAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5EYXRhU2NoZW1hLCBQTC5EYXRhU2NoZW1hKSkpO1xuXG4gICAgcmVzdWx0LmFkZENvbW1hbmQobmV3IENvbW1hbmRSZWdpc3RyYXRpb24oXG4gICAgICBBcGlWZXJiSWQuUmVmcmVzaERhdGFTb3VyY2UsXG4gICAgICBQcmVzTGF5ZXJVSUNvbW1hbmRJZC5SZWZyZXNoRGF0YVNvdXJjZVVJLFxuICAgICAgW25ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5EYXRhU291cmNlSWQsIFBMLkRhdGFzb3VyY2UpXSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIENvbW1hbmROYW1lc3BhY2UuVGFiVUkpKTtcblxuICAgIHJlc3VsdC5hZGRDb21tYW5kKG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uKFxuICAgICAgQXBpVmVyYklkLkdldEZpbHRlcnMsXG4gICAgICBQcmVzTGF5ZXJEb2NDb21tYW5kSWQuR2V0V29ya3NoZWV0RmlsdGVycyxcbiAgICAgIFtuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuVmlzdWFsSWQsIFBMLlZpc3VhbElEUE0pXSxcbiAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5Xb3Jrc2hlZXRGaWx0ZXJzLCBQTC5GaWx0ZXJzSW5mbykpKTtcblxuICAgIHJlc3VsdC5hZGRDb21tYW5kKG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uKFxuICAgICAgQXBpVmVyYklkLkdldENhdGVnb3JpY2FsRG9tYWluLFxuICAgICAgUHJlc0xheWVyRG9jQ29tbWFuZElkLkdldENhdGVnb3JpY2FsRG9tYWluLFxuICAgICAgW25ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5WaXN1YWxJZCwgUEwuVmlzdWFsSURQTSksXG4gICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLkZpZWxkSWQsIFBMLkZpZWxkTmFtZSksXG4gICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLkRvbWFpblR5cGUsIFBMLkZpbHRlckRvbWFpblR5cGUpXSxcbiAgICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuQ2F0ZWdvcmljYWxEb21haW4sIFBMLkNhdGVnb3JpY2FsRG9tYWluKSkpO1xuXG4gICAgcmVzdWx0LmFkZENvbW1hbmQobmV3IENvbW1hbmRSZWdpc3RyYXRpb24oXG4gICAgICBBcGlWZXJiSWQuR2V0UmFuZ2VEb21haW4sXG4gICAgICBQcmVzTGF5ZXJEb2NDb21tYW5kSWQuR2V0UXVhbnRpdGF0aXZlRG9tYWluLFxuICAgICAgW25ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5WaXN1YWxJZCwgUEwuVmlzdWFsSURQTSksXG4gICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLkZpZWxkSWQsIFBMLkZpZWxkTmFtZSksXG4gICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLkRvbWFpblR5cGUsIFBMLkZpbHRlckRvbWFpblR5cGUpXSxcbiAgICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuUXVhbnRpdGF0aXZlRG9tYWluLCBQTC5RdWFudGl0YXRpdmVEb21haW4pKSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9zcmMvbWFwcGluZ3MvQ29tbWFuZE1hcHBpbmdSZWdpc3RyeUZhY3RvcnkudHNcbiAqKi8iLCIvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vXG4vLyBUaGlzIGZpbGUgaXMgdGhlIGNvcHlyaWdodGVkIHByb3BlcnR5IG9mIFRhYmxlYXUgU29mdHdhcmUgYW5kIGlzIHByb3RlY3RlZFxuLy8gYnkgcmVnaXN0ZXJlZCBwYXRlbnRzIGFuZCBvdGhlciBhcHBsaWNhYmxlIFUuUy4gYW5kIGludGVybmF0aW9uYWwgbGF3cyBhbmRcbi8vIHJlZ3VsYXRpb25zLlxuLy9cbi8vIFVubGljZW5zZWQgdXNlIG9mIHRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgaXMgcHJvaGliaXRlZC4gUGxlYXNlIHJlZmVyIHRvXG4vLyB0aGUgTk9USUNFUy50eHQgZmlsZSBmb3IgZnVydGhlciBkZXRhaWxzLlxuLy9cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBXQVJOSU5HOiBDb21wdXRlciBnZW5lcmF0ZWQgZmlsZS4gIERvIG5vdCBoYW5kIG1vZGlmeS5cbi8vIERFUEVORFMgT046IFsnLi4vdHlwZXNjcmlwdC9qcy1hcGkvYXBpLWNvcmUvbm9kZV9tb2R1bGVzL0B0YWJsZWF1L3ByZXNsYXllci1jb2RlZ2VuLXR5cGVzY3JpcHQvdGVtcGxhdGVzL2NvbW1hbmRzLWVudW0tdHMudGVtcGxhdGUnLCB1Jy4uL3R5cGVzY3JpcHQvanMtYXBpL2FwaS1jb3JlL3RlbXAtcHJlcy1sYXllci9hbGwtY21kLXdyYXBwZXJzLmRhdGEnXVxuXG5leHBvcnQgZW51bSBEb2NDb21tYW5kcyB7XG5cbiAgICAvLyBTYXZlcyB0aGUgc2V0dGluZ3MgZm9yIHRoZSBzcGVjaWZpZWQgYWRkLWluIGlkXG4gICAgU2F2ZUFkZEluU2V0dGluZ3MgPSAnc2F2ZS1hZGQtaW4tc2V0dGluZ3MnLFxuXG4gICAgLy8gR2V0cyB0aGUgcHJlcyBtb2RlbCBmb3IgYW4gYWRkLWluIGluc3RhbmNlLlxuICAgIEdldEFkZEluSW5zdGFuY2VQcmVzTW9kZWwgPSAnZ2V0LWFkZC1pbi1pbnN0YW5jZS1wcmVzLW1vZGVsJyxcblxuICAgIC8vIEdldHMgdGhlIHByZXMgbW9kZWwgZm9yIHRoZSBkYXNoYm9hcmQgYXV0aG9yaW5nIHdpZGdldCBmb3IgYWRkLWlucy5cbiAgICBHZXRBZGRJbkRhc2hib2FyZEF1dGhvcmluZ1dpZGdldFByZXNNb2RlbCA9ICdnZXQtYWRkLWluLWRhc2hib2FyZC1hdXRob3Jpbmctd2lkZ2V0LXByZXMtbW9kZWwnLFxuXG4gICAgLy8gR2V0cyB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGZvciBhbiBhZGQtaW4gdG8gaW5pdGlhbGl6ZSBpdHNlbGYuXG4gICAgSW5pdGlhbGl6ZUFkZEluSW5zdGFuY2UgPSAnaW5pdGlhbGl6ZS1hZGQtaW4taW5zdGFuY2UnLFxuXG4gICAgLy8gRW5hYmxlcyBvciBkaXNhYmxlIGphdmFzY3JpcHQgZGVidWdnaW5nIG9mIGFuIGFkZC1pbi5cbiAgICBTZXRBZGRJbkpzRGVidWdnaW5nRW5hYmxlZCA9ICdzZXQtYWRkLWluLWpzLWRlYnVnZ2luZy1lbmFibGVkJyxcblxuICAgIC8vIFdoZXRoZXIgb3Igbm90IHdlIHNob3VsZCBwYXVzZSBiZWZvcmUgbG9hZGluZy4gSWYgbWlzc2luZywgdG9nZ2xlIHRoZSB2YWx1ZVxuICAgIFNldFBhdXNlQmVmb3JlTG9hZGluZ0FkZEluID0gJ3NldC1wYXVzZS1iZWZvcmUtbG9hZGluZy1hZGQtaW4nLFxuXG4gICAgLy8gUmVsb2FkcyB0aGUgQWRkLUluIHdpZGdldCBhbmQgd2ViIHBhZ2UuXG4gICAgUmVsb2FkQWRkSW4gPSAncmVsb2FkLWFkZC1pbicsXG5cbiAgICAvLyBSZXRyaWV2ZXMgdGhlIGNvbnRleHQgbWVudSBmb3IgYSBkYXNoYm9hcmQgYWRkLWluLlxuICAgIEdldEFkZEluWm9uZUNvbnRleHRNZW51ID0gJ2dldC1hZGQtaW4tem9uZS1jb250ZXh0LW1lbnUnLFxuXG4gICAgLy8gR2V0cyB0aGUgcHJlcyBtb2RlbCB3aGljaCBpbmRpY2F0ZXMgd2hhdCB0aGUgZGVidWcgc2V0dGluZ3MgZm9yIGFkZC1pbnMgaXMuXG4gICAgR2V0QWRkSW5EZWJ1Z1NldHRpbmdzUHJlc01vZGVsID0gJ2dldC1hZGQtaW4tZGVidWctc2V0dGluZ3MtcHJlcy1tb2RlbCcsXG5cbiAgICAvLyBQcmltYXJ5IHVzZSBpcyBmb3IgYnVpbGRpbmcgY29udGV4dCBtZW51c1xuICAgIElzU2VsZWN0aW9uQW5FZGl0YWJsZVBhcmFtZXRlciA9ICdpcy1zZWxlY3Rpb24tYW4tZWRpdGFibGUtcGFyYW1ldGVyJyxcblxuICAgIC8vIENoZWNrIGlmIHNlbGVjdGlvbiBjYW4gYmUgdXNlZCBhcyBiYXNlIGZvciBjcmVhdGluZyBhIG5ldyBwYXJhbWV0ZXIuIFByaW1hcnkgdXNlIGlzIGZvciBidWlsZGluZyBjb250ZXh0IG1lbnVzXG4gICAgR2V0Q3JlYXRlUGFyYW1ldGVyU3RhdGUgPSAnZ2V0LWNyZWF0ZS1wYXJhbWV0ZXItc3RhdGUnLFxuXG4gICAgLy8gVXNlcyBFZGl0UGFyYW1ldGVyIHRvIGdldCBhbmQgcmV0dXJuIGluZm8gYWJvdXQgdGhlIHByZXNtb2RlbCB3aXRob3V0IG1haW50YWluaW5nIHRoZSBjb250cm9sbGVyXG4gICAgR2V0UGFyYW1ldGVyRWRpdEluZm8gPSAnZ2V0LXBhcmFtZXRlci1lZGl0LWluZm8nLFxuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgY29udHJvbGxlciBhbmQgaXRzIHN0b3JlZCBwYXJhbWV0ZXIgdGhlbiByZXR1cm4gYSBwb3B1bGF0ZWQgcHJlc21vZGVsXG4gICAgQ3JlYXRlUGFyYW1ldGVyID0gJ2NyZWF0ZS1wYXJhbWV0ZXInLFxuXG4gICAgLy8gU2FtZSB1bmRlcmx5aW5nIGxvZ2ljIGFzIENyZWF0ZVBhcmFtZXRlciBidXQgZWRpdHMgcmF0aGVyIHRoYW4gY3JlYXRpbmcgYSBuZXcgcGFyYW1ldGVyXG4gICAgRWRpdFBhcmFtZXRlcl9OZXcgPSAnZWRpdC1wYXJhbWV0ZXItbmV3JyxcblxuICAgIC8vIEFkZCBhIG1lbWJlciBvZiBhIHBhcmFtZXRlciBkb21haW4uIENoYW5nZXMgYXJlIGFwcGxpZWQgdG8gaW50ZXJtZWRpYXRlIHN0YXRlIGFuZCBzYXZlZCBvbiBjb21taXRcbiAgICBBZGRQYXJhbWV0ZXJNZW1iZXIgPSAnYWRkLXBhcmFtZXRlci1tZW1iZXInLFxuXG4gICAgLy8gRWRpdCBhIG1lbWJlciBvZiBhIHBhcmFtZXRlciBkb21haW4uIENoYW5nZXMgYXJlIGFwcGxpZWQgdG8gaW50ZXJtZWRpYXRlIHN0YXRlIGFuZCBzYXZlZCBvbiBjb21taXRcbiAgICBFZGl0UGFyYW1ldGVyTWVtYmVyID0gJ2VkaXQtcGFyYW1ldGVyLW1lbWJlcicsXG5cbiAgICAvLyBEZWxldGUgYSBzZXJpZXMgb2YgcmFuZ2VzIG9mIG1lbWJlcnMgZnJvbSB0aGUgcGFyYW1ldGVyIGxpc3QuXG4gICAgRGVsZXRlUGFyYW1ldGVyTWVtYmVycyA9ICdkZWxldGUtcGFyYW1ldGVyLW1lbWJlcnMnLFxuXG4gICAgLy8gQ29weSBhIHNlcmllcyBvZiByYW5nZXMgb2YgbWVtYmVycyBvZiBhIHBhcmFtZXRlciBsaXN0XG4gICAgQ29weVBhcmFtZXRlck1lbWJlcnMgPSAnY29weS1wYXJhbWV0ZXItbWVtYmVycycsXG5cbiAgICAvLyBNb3ZlIGEgc2VyaWVzIG9mIHJhbmdlcyBvZiBtZW1iZXJzIG9mIGEgcGFyYW1ldGVyIGxpc3RcbiAgICBNb3ZlUGFyYW1ldGVyTWVtYmVycyA9ICdtb3ZlLXBhcmFtZXRlci1tZW1iZXJzJyxcblxuICAgIC8vIENoYW5nZSBkb21haW4gb2YgYSBwYXJhbWV0ZXIuIENoYW5nZXMgYXJlIGFwcGxpZWQgdG8gaW50ZXJtZWRpYXRlIHN0YXRlIGFuZCBzYXZlZCBvbiBjb21taXRcbiAgICBFZGl0UGFyYW1ldGVyRG9tYWluVHlwZSA9ICdlZGl0LXBhcmFtZXRlci1kb21haW4tdHlwZScsXG5cbiAgICAvLyBDaGFuZ2UgZGF0YXR5cGUgb2YgYSBwYXJhbWV0ZXIuIENoYW5nZXMgYXJlIGFwcGxpZWQgdG8gaW50ZXJtZWRpYXRlIHN0YXRlIGFuZCBzYXZlZCBvbiBjb21taXRcbiAgICBFZGl0UGFyYW1ldGVyRGF0YVR5cGUgPSAnZWRpdC1wYXJhbWV0ZXItZGF0YS10eXBlJyxcblxuICAgIC8vIENoYW5nZSBkaXNwbGF5IGZvcm1hdCBvZiBhIHBhcmFtZXRlci4gQ2hhbmdlcyBhcmUgYXBwbGllZCB0byBpbnRlcm1lZGlhdGUgc3RhdGUgYW5kIHNhdmVkIG9uIGNvbW1pdFxuICAgIEVkaXRQYXJhbWV0ZXJGb3JtYXQgPSAnZWRpdC1wYXJhbWV0ZXItZm9ybWF0JyxcblxuICAgIC8vIFZhbGlkYXRlIGNoYW5nZXMgdG8gYSBwYXJhbWV0ZXIncyByYW5nZSBkb21haW4gYW5kIGFwcGx5IHRvIGludGVybWVkaWF0ZSBzdGF0ZS4gQ2hhbmdlcyBhcmUgc2F2ZWQgb24gY29tbWl0XG4gICAgRWRpdFBhcmFtZXRlclJhbmdlID0gJ2VkaXQtcGFyYW1ldGVyLXJhbmdlJyxcblxuICAgIC8vIEVkaXQgdGhlIHZhbHVlIG9mIGEgbm9uLWxpc3QgZG9tYWluIHBhcmFtZXRlclxuICAgIEVkaXRQYXJhbWV0ZXJWYWx1ZSA9ICdlZGl0LXBhcmFtZXRlci12YWx1ZScsXG5cbiAgICAvLyBFZGl0IHRoZSB2YWx1ZSBvZiBhIGxpc3QgZG9tYWluIHBhcmFtZXRlclxuICAgIEVkaXRQYXJhbWV0ZXJWYWx1ZUluZGV4ID0gJ2VkaXQtcGFyYW1ldGVyLXZhbHVlLWluZGV4JyxcblxuICAgIC8vIFVwZGF0ZSB0aGUgcGFyYW1ldGVyIGNhcHRpb24gYW5kIGRlc2NyaXB0aW9uIC0gdXNlZCB0byBrZWVwIGJhY2tlbmQgaW4gc3luYy4gTm8gdmVyaWZpY2F0aW9uL3JldHVybiBpcyByZXF1cmllZC5cbiAgICBFZGl0UGFyYW1ldGVyRGlzcGxheUluZm8gPSAnZWRpdC1wYXJhbWV0ZXItZGlzcGxheS1pbmZvJyxcblxuICAgIC8vIFVwZGF0ZSB0aGUgZG9tYWluIG9mIHRoZSBwYXJhbWV0ZXIgdXNpbmcgYSBmaWVsZCAoY29sdW1uIG9yIHBhcmFtZXRlcikgYXMgYSBiYXNlXG4gICAgVXBkYXRlUGFyYW1ldGVyRnJvbUZpZWxkID0gJ3VwZGF0ZS1wYXJhbWV0ZXItZnJvbS1maWVsZCcsXG5cbiAgICAvLyBVcGRhdGUgdGhlIGxpc3QgZG9tYWluIG9mIGEgcGFyYW1ldGVyIGZyb20gYSBwbGFpbiB0ZXh0IHJlcHJlc2VudGF0aW9uIG9mIHZhbHVlc1xuICAgIFBhcnNlUGFyYW1ldGVyTGlzdERvbWFpbiA9ICdwYXJzZS1wYXJhbWV0ZXItbGlzdC1kb21haW4nLFxuXG4gICAgLy8gQ2xlYXJzIHRoZSBwYXJhbWV0ZXIncyBkb21haW4gb2YgYWxsIG1lbWJlcnNcbiAgICBDbGVhclBhcmFtZXRlckxpc3REb21haW4gPSAnY2xlYXItcGFyYW1ldGVyLWxpc3QtZG9tYWluJyxcblxuICAgIC8vIENyZWF0ZXMgb3IgZWRpdHMgcGFyYW1ldGVyIGZyb20gaW50ZXJtZWRpYXRlIHN0YXRlLiBUYWtlcyBhIGZldyBwcm9wZXJ0aWVzIHRoYXQgYXJlIGNhY2hlZCBpbiBkaWFsb2cgYW5kIGFwcGxpZXMgdGhlbSBwcmUtY29tbWl0LlxuICAgIENvbW1pdFBhcmFtZXRlckVkaXRzID0gJ2NvbW1pdC1wYXJhbWV0ZXItZWRpdHMnLFxuXG4gICAgLy8gR2V0cyB0aGUgbW9kZWwgZm9yIGEgcGFydGljdWxhciBwYXJhbWV0ZXIgb3IgcmV0dXJucyBhbiBlbXB0eSByZXNwb25zZSBpZiBvbmUgaXMgbm90IGZvdW5kLlxuICAgIEZpbmRQYXJhbWV0ZXJNb2RlbCA9ICdmaW5kLXBhcmFtZXRlci1tb2RlbCcsXG5cbiAgICAvLyBHZXRzIHRoZSBwcmVzIG1vZGVsIGZvciB0aGUgc2hvdyBkYXRhIGRpYWxvZ1xuICAgIEdldFNob3dEYXRhUHJlc01vZGVsID0gJ2dldC1zaG93LWRhdGEtcHJlcy1tb2RlbCcsXG5cbiAgICAvLyBFeHBvcnQgdW5kZXJseWluZyBkYXRhIGZyb20gdGhlIFNob3dEYXRhRGlhbG9nIHRvIGEgQ1NWIGZpbGVcbiAgICBTaG93RGF0YUV4cG9ydFRvQ1NWID0gJ3Nob3ctZGF0YS1leHBvcnQtdG8tY3N2JyxcblxuICAgIC8vIEdldHMgdGhlIHN1bW1hcnkgZGF0YSBmb3IgYSB3b3Jrc2hlZXRcbiAgICBHZXRTdW1tYXJ5RGF0YSA9ICdnZXQtc3VtbWFyeS1kYXRhJyxcblxuICAgIC8vIEdldHMgdGhlIHVuZGVybHlpbmcgZGF0YSBmb3IgYSB3b3Jrc2hlZXRcbiAgICBHZXRVbmRlcmx5aW5nRGF0YSA9ICdnZXQtdW5kZXJseWluZy1kYXRhJyxcblxuICAgIC8vIEdldHMgdGhlIHVuZGVybHlpbmcgZGF0YSBmb3IgYSBzcGVjaWZpYyBkYXRhIHNvdXJjZS5cbiAgICBHZXREYXRhU291cmNlRGF0YSA9ICdnZXQtZGF0YS1zb3VyY2UtZGF0YScsXG5cbiAgICAvLyBTZWxlY3QgYWxsIG1hcmtzIHRoYXQgaGF2ZSB0aGUgdHVwbGUncyB2YWx1ZSBmb3IgdGhlIGdpdmVuIGZpZWxkIC5cbiAgICBTZWxlY3RCeVR1cGxlVmFsdWUgPSAnc2VsZWN0LWJ5LXR1cGxlLXZhbHVlJyxcblxuICAgIC8vIENsZWFyIGFsbCB0aGUgc2VsZWN0ZWQgbWFya3MgZm9yIHRoZSBnaXZlbiB3b3Jrc2hlZXRcbiAgICBDbGVhclNlbGVjdGVkTWFya3MgPSAnY2xlYXItc2VsZWN0ZWQtbWFya3MnLFxuXG4gICAgLy8gQ3JlYXRlcyBvciB1cGRhdGVzIGFuZCBleGlzdGluZyBmaWx0ZXIgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHVwZGF0ZXMuXG4gICAgQXBwbHlDYXRlZ29yaWNhbEZpbHRlclVwZGF0ZXMgPSAnYXBwbHktY2F0ZWdvcmljYWwtZmlsdGVyLXVwZGF0ZXMnLFxuXG4gICAgLy8gU2VhcmNoIGZpbHRlciBkb21haW4gZm9yIHRleHQgYW5kIHJldHVybiBhbnkgbWF0Y2hpbmcgdHVwbGVzLlxuICAgIENhdGVnb3JpY2FsRmlsdGVyU2VhcmNoID0gJ2NhdGVnb3JpY2FsLWZpbHRlci1zZWFyY2gnLFxuXG4gICAgLy8gQ2xlYXIgYWxsIG1lbWJlcnMgZnJvbSB0aGUgdGFibGUgb2YgdGhlIGlkZW50aWZpZWQgY2FjaGUuXG4gICAgQ2F0ZWdvcmljYWxGaWx0ZXJDbGVhclJlbGF0aW9uYWxDYWNoZSA9ICdjYXRlZ29yaWNhbC1maWx0ZXItY2xlYXItcmVsYXRpb25hbC1jYWNoZScsXG5cbiAgICAvLyBDcmVhdGUgdHVwbGVzIGZvciBhbiBleGlzdGluZyBmaWx0ZXIgZnJvbSBzdXBwbGllZCB0ZXh0LlxuICAgIEdldENhdGVnb3JpY2FsRmlsdGVyVHVwbGVzRnJvbVRleHQgPSAnZ2V0LWNhdGVnb3JpY2FsLWZpbHRlci10dXBsZXMtZnJvbS10ZXh0JyxcblxuICAgIC8vIFJldHVybnMgYSBwcmVzbW9kZWwgYmFja2luZyBhIGNhdGVnb3JpY2FsIGZpbHRlciwgaW5pdGlhbGl6aW5nIGEgZGF0YSBjYWNoZSBmb3IgZmFzdCBsb29rdXAgb2YgdGhlIGZpbHRlcidzIG1lbWJlciBkb21haW4uXG4gICAgR2V0Q2F0ZWdvcmljYWxGaWx0ZXIgPSAnZ2V0LWNhdGVnb3JpY2FsLWZpbHRlcicsXG5cbiAgICAvLyBSZXRyaWV2ZXMgYSBwYWdlIG9mIGRhdGEgdG8gZGlzcGxheSBpbiB0aGUgZmlsdGVyJ3MgbGlzdCBkb21haW5cbiAgICBHZXRDYXRlZ29yaWNhbEZpbHRlckRvbWFpblBhZ2UgPSAnZ2V0LWNhdGVnb3JpY2FsLWZpbHRlci1kb21haW4tcGFnZScsXG5cbiAgICAvLyBSZXNldCBmaWx0ZXIgdG8gY29tbWl0dGVkIHN0YXRlXG4gICAgUmVzZXRDYXRlZ29yaWNhbEZpbHRlckRlZmVycmVkID0gJ3Jlc2V0LWNhdGVnb3JpY2FsLWZpbHRlci1kZWZlcnJlZCcsXG5cbiAgICAvLyBVc2UgdW5jb21taXR0ZWQgc3RhdGUgdG8gcmVzZXQgdGhlIGZpbHRlcidzIGNvbnRyb2xsZXJcbiAgICBSZWNyZWF0ZUNhdGVnb3JpY2FsRmlsdGVyQ29udHJvbGxlciA9ICdyZWNyZWF0ZS1jYXRlZ29yaWNhbC1maWx0ZXItY29udHJvbGxlcicsXG5cbiAgICAvLyBWYWxpZGF0ZXMgYSBDYXRlZ3JvaWNhbCBGaWx0ZXIgbmFtZS5cbiAgICBWYWxpZGF0ZUNhdGVnb3JpY2FsRmlsdGVyTmFtZSA9ICd2YWxpZGF0ZS1jYXRlZ29yaWNhbC1maWx0ZXItbmFtZScsXG5cbiAgICAvLyBHZXRzIGEgc3VtbWFyeSBvZiB0aGUgZmlsdGVyIHBhdHRlcm4uXG4gICAgR2V0Q2F0ZWdvcmljYWxGaWx0ZXJQYXR0ZXJuU3VtbWFyeSA9ICdnZXQtY2F0ZWdvcmljYWwtZmlsdGVyLXBhdHRlcm4tc3VtbWFyeScsXG5cbiAgICAvLyBHZXRzIGEgc3VtbWVyeSBvZiB0aGUgZmlsdGVyIGNvbmRpdGlvbi5cbiAgICBHZXRDYXRlZ29yaWNhbEZpbHRlckNvbmRpdGlvblN1bW1hcnkgPSAnZ2V0LWNhdGVnb3JpY2FsLWZpbHRlci1jb25kaXRpb24tc3VtbWFyeScsXG5cbiAgICAvLyBMb2FkIHRoZSBjdXJyZW50IG1pbmltdW0gYW5kIG1heGltdW0gZGF0YSB2YWx1ZSByYW5nZSBmb3IgdGhlIGNvbmRpdGlvbiBmaWVsZC5cbiAgICBMb2FkQ2F0ZWdvcmljYWxGaWx0ZXJDb25kaXRpb25GaWVsZFZhbHVlUmFuZ2UgPSAnbG9hZC1jYXRlZ29yaWNhbC1maWx0ZXItY29uZGl0aW9uLWZpZWxkLXZhbHVlLXJhbmdlJyxcblxuICAgIC8vIFZhbGlkYXRlcyBhIENhdGVnb3JpY2FsIEZpbHRlcidzIGNvbmRpdGlvbiBmb3JtdWxhIGFuZCByZS13cml0ZXMgaXQuXG4gICAgVmFsaWRhdGVDYXRlZ29yaWNhbEZpbHRlckNvbmRpdGlvbkZvcm11bGEgPSAndmFsaWRhdGUtY2F0ZWdvcmljYWwtZmlsdGVyLWNvbmRpdGlvbi1mb3JtdWxhJyxcblxuICAgIC8vIEdldHMgYSBzdW1tZXJ5IG9mIHRoZSBmaWx0ZXIgbGltaXQuXG4gICAgR2V0Q2F0ZWdvcmljYWxGaWx0ZXJMaW1pdFN1bW1hcnkgPSAnZ2V0LWNhdGVnb3JpY2FsLWZpbHRlci1saW1pdC1zdW1tYXJ5JyxcblxuICAgIC8vIFZhbGlkYXRlcyBhIENhdGVnb3JpY2FsIEZpbHRlcidzIGxpbWl0IGNvdW50LlxuICAgIFZhbGlkYXRlQ2F0ZWdvcmljYWxGaWx0ZXJMaW1pdENvdW50ID0gJ3ZhbGlkYXRlLWNhdGVnb3JpY2FsLWZpbHRlci1saW1pdC1jb3VudCcsXG5cbiAgICAvLyBWYWxpZGF0ZXMgYSBDYXRlZ29yaWNhbCBGaWx0ZXIncyBsaW1pdCBmb3JtdWxhLCBhbmQgcmUtd3JpdGVzIHRoZSBmb3JtdWxhLlxuICAgIFZhbGlkYXRlQ2F0ZWdvcmljYWxGaWx0ZXJMaW1pdEZvcm11bGEgPSAndmFsaWRhdGUtY2F0ZWdvcmljYWwtZmlsdGVyLWxpbWl0LWZvcm11bGEnLFxuXG4gICAgLy8gVmFsaWRhdGVzIGEgQ2F0ZWdvcmljYWwgRmlsdGVyJ3MgbGltaXQuXG4gICAgVmFsaWRhdGVDYXRlZ29yaWNhbEZpbHRlckxpbWl0ID0gJ3ZhbGlkYXRlLWNhdGVnb3JpY2FsLWZpbHRlci1saW1pdCcsXG5cbiAgICAvLyBJbmZvcm0gY2FjaGUgd2hlbiBhIHVzZXIgY2hhbmdlcyB0aGUgcmFuZ2VcbiAgICBDYXRlZ29yaWNhbEZpbHRlclNldFJhbmdlVHlwZURlZmVycmVkID0gJ2NhdGVnb3JpY2FsLWZpbHRlci1zZXQtcmFuZ2UtdHlwZS1kZWZlcnJlZCcsXG5cbiAgICAvLyBJbmZvcm0gY2FjaGUgd2hlbiBhIHVzZXIgY2hhbmdlcyB3aGV0aGVyIHRoZSBzZWxlY3Rpb24gaXMgZXhjbHVzaXZlXG4gICAgQ2F0ZWdvcmljYWxGaWx0ZXJTZXRTZWxlY3Rpb25FeGNsdXNpdmVEZWZlcnJlZCA9ICdjYXRlZ29yaWNhbC1maWx0ZXItc2V0LXNlbGVjdGlvbi1leGNsdXNpdmUtZGVmZXJyZWQnLFxuXG4gICAgLy8gSW5mb3JtIGNhY2hlIHdoZW4gYSB1c2VyIGNoYW5nZXMgd2hldGhlciBhbiBlbXB0eSBzZWxlY3Rpb24gc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSBzZWxlY3Rpb24gb2YgJ0FsbCcgaW4gYSBNYW51YWwgc2VsZWN0aW9uIG1vZGVcbiAgICBDYXRlZ29yaWNhbEZpbHRlclNldFVzZUFsbFdoZW5NYW51YWxJc0VtcHR5RGVmZXJyZWQgPSAnY2F0ZWdvcmljYWwtZmlsdGVyLXNldC11c2UtYWxsLXdoZW4tbWFudWFsLWlzLWVtcHR5LWRlZmVycmVkJyxcblxuICAgIC8vIEluZm9ybSBjYWNoZSB3aGVuIGEgdXNlciBhbHRlcnMgdGhlIHByZXNldCB0eXBlXG4gICAgQ2F0ZWdvcmljYWxGaWx0ZXJTZXRQcmVzZXRUeXBlRGVmZXJyZWQgPSAnY2F0ZWdvcmljYWwtZmlsdGVyLXNldC1wcmVzZXQtdHlwZS1kZWZlcnJlZCcsXG5cbiAgICAvLyBJbmZvcm0gY2FjaGUgdGhlIHVzZXIgaGFzIHNlbGVjdGVkIG9uZSBvciBtb3JlIG1lbWJlcnNcbiAgICBDYXRlZ29yaWNhbEZpbHRlclNlbGVjdFJlbGF0aW9uYWxNZW1iZXJzRGVmZXJyZWQgPSAnY2F0ZWdvcmljYWwtZmlsdGVyLXNlbGVjdC1yZWxhdGlvbmFsLW1lbWJlcnMtZGVmZXJyZWQnLFxuXG4gICAgLy8gSW5mb3JtIGNhY2hlIHRoZSB1c2VyIGhhcyBkZXNlbGVjdGVkIG9uZSBvciBtb3JlIG1lbWJlcnNcbiAgICBDYXRlZ29yaWNhbEZpbHRlckRlc2VsZWN0UmVsYXRpb25hbE1lbWJlcnNEZWZlcnJlZCA9ICdjYXRlZ29yaWNhbC1maWx0ZXItZGVzZWxlY3QtcmVsYXRpb25hbC1tZW1iZXJzLWRlZmVycmVkJyxcblxuICAgIC8vIEluZm9ybSBjYWNoZSB3aGVuIGEgdXNlciBzZWxlY3RzIGV2ZXJ5dGhpbmcgaW4gdGhlIGRvbWFpblxuICAgIENhdGVnb3JpY2FsRmlsdGVyU2VsZWN0QWxsUmVsYXRpb25hbE1lbWJlcnNEZWZlcnJlZCA9ICdjYXRlZ29yaWNhbC1maWx0ZXItc2VsZWN0LWFsbC1yZWxhdGlvbmFsLW1lbWJlcnMtZGVmZXJyZWQnLFxuXG4gICAgLy8gSW5mb3JtIGNhY2hlIHdoZW4gYSB1c2VyIGRlc2VsZWN0cyBldmVyeXRoaW5nIGluIHRoZSBkb21haW5cbiAgICBDYXRlZ29yaWNhbEZpbHRlckRlc2VsZWN0QWxsUmVsYXRpb25hbE1lbWJlcnNEZWZlcnJlZCA9ICdjYXRlZ29yaWNhbC1maWx0ZXItZGVzZWxlY3QtYWxsLXJlbGF0aW9uYWwtbWVtYmVycy1kZWZlcnJlZCcsXG5cbiAgICAvLyBJbmZvcm0gY2FjaGUgdGhlIHVzZXIgd2FudHMgdG8gc2VlIGEgZGlmZmVyZW50IGRvbWFpbiAoZS5nLiByZWxldmFudCB2YWx1ZXMgb25seSlcbiAgICBDYXRlZ29yaWNhbEZpbHRlclNldERvbWFpblR5cGVEZWZlcnJlZCA9ICdjYXRlZ29yaWNhbC1maWx0ZXItc2V0LWRvbWFpbi10eXBlLWRlZmVycmVkJyxcblxuICAgIC8vIFNldCB3aGV0aGVyIGZpbHRlcnMgYXBwbHkgdG8gdG90YWxzIGFzIHdlbGwgYXMgbm9uLXRvdGFscyB0YWJsZSBjYWxjc1xuICAgIEZpbHRlckFwcGx5VG9Ub3RhbFRhYmxlQ2FsY3MgPSAnZmlsdGVyLWFwcGx5LXRvLXRvdGFsLXRhYmxlLWNhbGNzJyxcblxuICAgIC8vIEdldHMgdGhlIGxpc3Qgb2YgZmlsdGVycyB1c2VkIGluIGEgd29ya3NoZWV0XG4gICAgR2V0V29ya3NoZWV0RmlsdGVycyA9ICdnZXQtd29ya3NoZWV0LWZpbHRlcnMnLFxuXG4gICAgLy8gR2V0cyB0aGUgZG9tYWluIGZvciBhIGNhdGVnb3JpY2FsIEZpbHRlclxuICAgIEdldENhdGVnb3JpY2FsRG9tYWluID0gJ2dldC1jYXRlZ29yaWNhbC1kb21haW4nLFxuXG4gICAgLy8gR2V0cyB0aGUgZG9tYWluIGZvciBhIHF1YW50aXRhdGl2ZSBGaWx0ZXJcbiAgICBHZXRRdWFudGl0YXRpdmVEb21haW4gPSAnZ2V0LXF1YW50aXRhdGl2ZS1kb21haW4nLFxuXG5cbiAgICAvLyBcbiAgICBHZXRIaWdobGlnaHRlZERhdGEgPSAnZ2V0LWhpZ2hsaWdodGVkLWRhdGEnLFxuXG4gICAgLy8gXG4gICAgR2V0U2VsZWN0aW9uRGF0YSA9ICdnZXQtc2VsZWN0aW9uJyxcblxuICAgIC8vIFxuICAgIFNlbGVjdCA9ICdzZWxlY3QnLFxuXG4gICAgLy8gXG4gICAgU2VsZWN0QWxsID0gJ3NlbGVjdC1hbGwnLFxuXG4gICAgLy8gXG4gICAgU2VsZWN0QnlWYWx1ZSA9ICdzZWxlY3QtYnktdmFsdWUnLFxuXG4gICAgLy8gXG4gICAgU2VsZWN0Tm9uZUluY2x1ZGluZ01hc3RlciA9ICdzZWxlY3Qtbm9uZS1pbmNsdWRpbmctbWFzdGVyJyxcblxuICAgIC8vIFxuICAgIEFkZE1hbnVhbEl0ZW1zVG9GaWx0ZXIgPSAnYWRkLW1hbnVhbC1pdGVtcy10by1maWx0ZXInLFxuXG4gICAgLy8gXG4gICAgQ2F0ZWdvcmljYWxGaWx0ZXIgPSAnY2F0ZWdvcmljYWwtZmlsdGVyJyxcblxuICAgIC8vIFxuICAgIENhdGVnb3JpY2FsRmlsdGVyQnlJbmRleCA9ICdjYXRlZ29yaWNhbC1maWx0ZXItYnktaW5kZXgnLFxuXG4gICAgLy8gXG4gICAgQ2hhbmdlU2hhcmVkRmlsdGVyID0gJ2NoYW5nZS1zaGFyZWQtZmlsdGVyJyxcblxuICAgIC8vIFxuICAgIENsZWFyQ29udGV4dEZpbHRlcnMgPSAnY2xlYXItY29udGV4dC1maWx0ZXJzJyxcblxuICAgIC8vIFxuICAgIENsZWFyRXhpc3RpbmdGaWx0ZXIgPSAnY2xlYXItZXhpc3RpbmctZmlsdGVyJyxcblxuICAgIC8vIFxuICAgIERlZmF1bHRGaWx0ZXIgPSAnZGVmYXVsdC1maWx0ZXInLFxuXG4gICAgLy8gXG4gICAgRmlsdGVyR2VvID0gJ2ZpbHRlci1nZW8nLFxuXG4gICAgLy8gXG4gICAgRmlsdGVyTmVnID0gJ2ZpbHRlci1uZWcnLFxuXG4gICAgLy8gXG4gICAgRmlsdGVyTnVsbHMgPSAnZmlsdGVyLW51bGxzJyxcblxuICAgIC8vIFxuICAgIEZpbHRlclRhcmdldHMgPSAnZmlsdGVyLXRhcmdldHMnLFxuXG4gICAgLy8gXG4gICAgR2V0U2hhcmVkRmlsdGVyUHJlc01vZGVsID0gJ2dldC1zaGFyZWQtZmlsdGVyLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgSGllcmFyY2hpY2FsRmlsdGVyID0gJ2hpZXJhcmNoaWNhbC1maWx0ZXInLFxuXG4gICAgLy8gXG4gICAgS2VlcE9ubHlPckV4Y2x1ZGUgPSAna2VlcC1vbmx5LW9yLWV4Y2x1ZGUnLFxuXG4gICAgLy8gXG4gICAgUmFuZ2VGaWx0ZXIgPSAncmFuZ2UtZmlsdGVyJyxcblxuICAgIC8vIFxuICAgIFJlbERhdGVGaWx0ZXIgPSAncmVsYXRpdmUtZGF0ZS1maWx0ZXInLFxuXG4gICAgLy8gXG4gICAgUmVzZXRGaWx0ZXIgPSAncmVzZXQtZmlsdGVyJyxcblxuICAgIC8vIFxuICAgIFNob3dHZW9BdERlZmF1bHQgPSAnc2hvdy1nZW8tYXQtZGVmYXVsdCcsXG5cbiAgICAvLyBcbiAgICBTaG93U1ZBdERlZmF1bHQgPSAnc2hvdy1zdi1hdC1kZWZhdWx0JyxcblxuICAgIC8vIFxuICAgIFRvZ2dsZUxvY2tRdWlja0ZpbHRlcnMgPSAndG9nZ2xlLWxvY2stcXVpY2stZmlsdGVycycsXG5cbiAgICAvLyBcbiAgICBBZGREYXRhQ29ubmVjdGlvbiA9ICdhZGQtZGF0YS1jb25uZWN0aW9uJyxcblxuICAgIC8vIFxuICAgIEFkZERyaWxsUGF0aCA9ICdhZGQtZHJpbGwtcGF0aCcsXG5cbiAgICAvLyBcbiAgICBBZGRDcmVkZW50aWFsc0Zyb21LZXljaGFpbiA9ICdhZGQtY3JlZGVudGlhbHMtZnJvbS1rZXljaGFpbicsXG5cbiAgICAvLyBcbiAgICBBZGRDcmVkZW50aWFsc0Zyb21LZXljaGFpbkZpbGUgPSAnYWRkLWNyZWRlbnRpYWxzLWZyb20ta2V5Y2hhaW4tZmlsZScsXG5cbiAgICAvLyBcbiAgICBBZGRGaWVsZEZvbGRlciA9ICdhZGQtZmllbGQtZm9sZGVyJyxcblxuICAgIC8vIFxuICAgIEFkZFN1YnRvdGFscyA9ICdhZGQtc3VidG90YWxzJyxcblxuICAgIC8vIFxuICAgIEFkZFRvRHJpbGxQYXRoID0gJ2FkZC10by1kcmlsbC1wYXRoJyxcblxuICAgIC8vIFxuICAgIEFkZFRvRmllbGRGb2xkZXIgPSAnYWRkLXRvLWZpZWxkLWZvbGRlcicsXG5cbiAgICAvLyBcbiAgICBBZ2dyZWdhdGVNZWFzdXJlc0ZsYWcgPSAnYWdncmVnYXRlLW1lYXN1cmVzJyxcblxuICAgIC8vIFxuICAgIEFwcGx5Q2FsY3VsYXRpb24gPSAnYXBwbHktY2FsY3VsYXRpb24nLFxuXG4gICAgLy8gXG4gICAgQXBwbHlQYWdlU2V0dXBPcHRpb25zID0gJ2FwcGx5LXBhZ2Utc2V0dXAtb3B0aW9ucycsXG5cbiAgICAvLyBcbiAgICBBcHBseVRhYmxlT3B0aW9ucyA9ICdhcHBseS10YWJsZS1vcHRpb25zJyxcblxuICAgIC8vIFxuICAgIEFwcGx5VHlwZUluUGlsbCA9ICdhcHBseS10eXBlLWluLXBpbGwnLFxuXG4gICAgLy8gXG4gICAgQXNzZXJ0ID0gJ2Fzc2VydCcsXG5cbiAgICAvLyBcbiAgICBBdHRlbXB0Q29ubmVjdERhdGFTb3VyY2VzT25TaGVldCA9ICdhdHRlbXB0LWNvbm5lY3QtZGF0YXNvdXJjZXMtb24tc2hlZXQnLFxuXG4gICAgLy8gXG4gICAgQXR0ZW1wdENvbm5lY3RXb3JrYm9vayA9ICdhdHRlbXB0LWNvbm5lY3Qtd29ya2Jvb2snLFxuXG4gICAgLy8gXG4gICAgQXR0ZW1wdERhdGFTb3VyY2VzQ29ubmVjdGlvbiA9ICdhdHRlbXB0LWRhdGFzb3VyY2VzLWNvbm5lY3Rpb24nLFxuXG4gICAgLy8gXG4gICAgQXV0b1VwZGF0ZXMgPSAnYXV0by11cGRhdGUnLFxuXG4gICAgLy8gXG4gICAgQnJ1c2ggPSAnaGlnaGxpZ2h0JyxcblxuICAgIC8vIFxuICAgIEJydXNoU3BlY2lhbCA9ICdoaWdobGlnaHQtc3BlY2lhbCcsXG5cbiAgICAvLyBcbiAgICBCdWlsZERhdGFTY2hlbWFEYXRhU291cmNlQ29udGV4dE1lbnUgPSAnYnVpbGQtZGF0YS1zY2hlbWEtZGF0YS1zb3VyY2UtY29udGV4dC1tZW51JyxcblxuICAgIC8vIFxuICAgIEJ1aWxkRGF0YVNjaGVtYUNvbnRleHRNZW51ID0gJ2J1aWxkLWRhdGEtc2NoZW1hLWNvbnRleHQtbWVudScsXG5cbiAgICAvLyBcbiAgICBCdWlsZERhdGFTY2hlbWFGaWVsZENvbnRleHRNZW51ID0gJ2J1aWxkLWRhdGEtc2NoZW1hLWZpZWxkLWNvbnRleHQtbWVudScsXG5cbiAgICAvLyBcbiAgICBCdWlsZERhdGFTY2hlbWFEcmlsbFBhdGhDb250ZXh0TWVudSA9ICdidWlsZC1kYXRhLXNjaGVtYS1kcmlsbC1wYXRoLWNvbnRleHQtbWVudScsXG5cbiAgICAvLyBcbiAgICBCdWlsZEZpbGVUYWJsZUluZm9QcmVzTW9kZWwgPSAnYnVpbGQtZmlsZS10YWJsZS1pbmZvLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgQnVpbGRTaGVldFRhYkNvbnRleHRNZW51ID0gJ2J1aWxkLXNoZWV0LXRhYi1jb250ZXh0LW1lbnUnLFxuXG4gICAgLy8gXG4gICAgQ2FuY2VsRGF0YVNvdXJjZVByZXNNb2RlbCA9ICdjYW5jZWwtZGF0YXNvdXJjZS1wcmVzLW1vZGVsJyxcblxuICAgIC8vIFxuICAgIENhdEJpbk1lcmdlU3BsaXRMYWJlbCA9ICdjYXRlZ29yaWNhbC1iaW4tbWVyZ2Utc3BsaXQnLFxuXG4gICAgLy8gXG4gICAgQ2F0ZWdvcmljYWxRdWlja0ZpbHRlckVkaXQgPSAnY2F0ZWdvcmljYWwtcXVpY2stZmlsdGVyLWVkaXQnLFxuXG4gICAgLy8gXG4gICAgQ2F0ZWdvcmljYWxRdWlja0ZpbHRlckV4Y2x1ZGVWYWx1ZXMgPSAnY2F0ZWdvcmljYWwtcXVpY2stZmlsdGVyLWV4Y2x1ZGUtdmFsdWVzJyxcblxuICAgIC8vIFxuICAgIENhdGVnb3JpY2FsUXVpY2tGaWx0ZXJJbmNsdWRlQWxsV2hlbkVtcHR5ID0gJ2NhdGVnb3JpY2FsLXF1aWNrLWZpbHRlci1pbmNsdWRlLWFsbC13aGVuLWVtcHR5JyxcblxuICAgIC8vIFxuICAgIENhdGVnb3JpY2FsUXVpY2tGaWx0ZXJNb2RlID0gJ2NhdGVnb3JpY2FsLXF1aWNrLWZpbHRlci1tb2RlJyxcblxuICAgIC8vIFxuICAgIENhdGVnb3JpY2FsUXVpY2tGaWx0ZXJQYXR0ZXJuID0gJ2NhdGVnb3JpY2FsLXF1aWNrLWZpbHRlci1wYXR0ZXJuJyxcblxuICAgIC8vIFxuICAgIENoYW5nZUFnZ3JlZ2F0aW9uID0gJ2NoYW5nZS1hZ2dyZWdhdGlvbicsXG5cbiAgICAvLyBcbiAgICBDaGFuZ2VBbHBoYUxldmVsID0gJ2NoYW5nZS1hbHBoYS1sZXZlbCcsXG5cbiAgICAvLyBcbiAgICBDaGFuZ2VCb3JkZXIgPSAnY2hhbmdlLWJvcmRlcicsXG5cbiAgICAvLyBcbiAgICBDaGFuZ2VGaWVsZFR5cGUgPSAnY2hhbmdlLWZpZWxkLXR5cGUnLFxuXG4gICAgLy8gXG4gICAgQ2hhbmdlRm9yZWNhc3RDb2x1bW5UeXBlID0gJ2NoYW5nZS1mb3JlY2FzdC1jb2x1bW4tdHlwZScsXG5cbiAgICAvLyBcbiAgICBDaGFuZ2VIYWxvID0gJ2NoYW5nZS1oYWxvJyxcblxuICAgIC8vIFxuICAgIENoYW5nZU1hcmtlcnMgPSAnY2hhbmdlLW1hcmtlcnMnLFxuXG4gICAgLy8gXG4gICAgQ2hhbmdlU2l6ZSA9ICdjaGFuZ2Utc2l6ZScsXG5cbiAgICAvLyBcbiAgICBDaGFuZ2VTaGVldFRhYkNvbG9yID0gJ2NoYW5nZS1zaGVldC10YWItY29sb3InLFxuXG4gICAgLy8gXG4gICAgQ2xlYXJBbGxBeGlzUmFuZ2VzID0gJ2NsZWFyLWF4aXMtcmFuZ2VzJyxcblxuICAgIC8vIFxuICAgIENsZWFyQ2FsY01vZGVsID0gJ2NsZWFyLWNhbGN1bGF0aW9uLW1vZGVsJyxcblxuICAgIC8vIFxuICAgIENsZWFyRmlsdGVycyA9ICdjbGVhci1maWx0ZXJzJyxcblxuICAgIC8vIFxuICAgIENsZWFyRm9ybWF0dGluZyA9ICdjbGVhci1mb3JtYXR0aW5nJyxcblxuICAgIC8vIFxuICAgIENsZWFyRnV0dXJlID0gJ2NsZWFyLWZ1dHVyZScsXG5cbiAgICAvLyBcbiAgICBDbGVhckxheW91dCA9ICdjbGVhci1sYXlvdXQnLFxuXG4gICAgLy8gXG4gICAgQ2xlYXJRdWlja0ZpbHRlciA9ICdjbGVhci1xdWljay1maWx0ZXInLFxuXG4gICAgLy8gXG4gICAgQ2xlYXJTb3J0cyA9ICdjbGVhci1zb3J0cycsXG5cbiAgICAvLyBcbiAgICBDbG9zZUNvbm5lY3Rpb24gPSAnY2xvc2UtY29ubmVjdGlvbicsXG5cbiAgICAvLyBcbiAgICBDbG9zZURhdGFTb3VyY2UgPSAnY2xvc2UtZGF0YS1zb3VyY2UnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkFkZEdvb2dsZUFuYWx5dGljc0RpbWVuc2lvbiA9ICdjb25uZWN0aW9uLWFkZC1nb29nbGUtYW5hbHl0aWNzLWRpbWVuc2lvbicsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uQWRkR29vZ2xlQW5hbHl0aWNzTWVhc3VyZSA9ICdjb25uZWN0aW9uLWFkZC1nb29nbGUtYW5hbHl0aWNzLW1lYXN1cmUnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkFkZE5ld1RhYmxlID0gJ2Nvbm5lY3Rpb24tYWRkLW5ldy10YWJsZScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uQWRkQ29hbGVzY2UgPSAnY29ubmVjdGlvbi1hZGQtY29hbGVzY2UnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkFkZFBpdm90ID0gJ2Nvbm5lY3Rpb24tYWRkLXBpdm90JyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25Db252ZXJ0VG9VbmlvbkFuZEVkaXQgPSAnY29ubmVjdGlvbi1jb252ZXJ0LXRvLXVuaW9uLWFuZC1lZGl0JyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25Db252ZXJ0VG9VbmlvbiA9ICdjb25uZWN0aW9uLWNvbnZlcnQtdG8tdW5pb24nLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkVkaXRVbmlvbiA9ICdjb25uZWN0aW9uLWVkaXQtdW5pb24nLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkFkZE9yRWRpdEJhdGNoVW5pb24gPSAnY29ubmVjdGlvbi1hZGQtb3ItZWRpdC1iYXRjaC11bmlvbicsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uQ2hhbmdlVGFibGVQcm9wZXJ0eSA9ICdjb25uZWN0aW9uLWNoYW5nZS10YWJsZS1wcm9wZXJ0eScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uQ291bnRFbnRpdHkgPSAnY29ubmVjdGlvbi1jb3VudC1lbnRpdHknLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkRhdGFTZXJ2ZXJGZXRjaE1vcmVEYXRhc291cmNlcyA9ICdjb25uZWN0aW9uLWRhdGFzZXJ2ZXItZmV0Y2gtbW9yZS1kYXRhc291cmNlcycsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uRGF0YVNlcnZlclByb2plY3RTZWxlY3QgPSAnY29ubmVjdGlvbi1kYXRhc2VydmVyLWNoYW5nZS1zZWxlY3RlZC1wcm9qZWN0JyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25EYXRhU2VydmVyVXBkYXRlRmV0Y2hQYXJhbWV0ZXJzID0gJ2Nvbm5lY3Rpb24tZGF0YXNlcnZlci11cGRhdGUtZmV0Y2gtcGFyYW1ldGVycycsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uRGF0YVNlcnZlckZsdXNoQ2FjaGUgPSAnY29ubmVjdGlvbi1kYXRhc2VydmVyLWZsdXNoLWNhY2hlJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25EZWxldGVBbGxUYWJsZXMgPSAnY29ubmVjdGlvbi1kZWxldGUtYWxsLXRhYmxlcycsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uRGVsZXRlVGFibGUgPSAnY29ubmVjdGlvbi1kZWxldGUtdGFibGUnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkVkaXRDYXB0aW9uID0gJ2Nvbm5lY3Rpb24tZWRpdC1jYXB0aW9uJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25FZGl0R29vZ2xlQW5hbHl0aWNzQWNjb3VudCA9ICdjb25uZWN0aW9uLWVkaXQtZ29vZ2xlLWFuYWx5dGljcy1hY2NvdW50JyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25FZGl0R29vZ2xlQW5hbHl0aWNzRGF0ZVJhbmdlID0gJ2Nvbm5lY3Rpb24tZWRpdC1nb29nbGUtYW5hbHl0aWNzLWRhdGUtcmFuZ2UnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkVkaXRHb29nbGVBbmFseXRpY3NNZWFzdXJlR3JvdXAgPSAnY29ubmVjdGlvbi1lZGl0LWdvb2dsZS1hbmFseXRpY3MtbWVhc3VyZS1ncm91cCcsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uVG9nZ2xlR0FRdWVyeVBhcnRpdGlvbmluZyA9ICdjb25uZWN0aW9uLXRvZ2dsZS1nYS1xdWVyeS1wYXJ0aXRpb25pbmcnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkVkaXRHb29nbGVBbmFseXRpY3NQcm9wZXJ0eSA9ICdjb25uZWN0aW9uLWVkaXQtZ29vZ2xlLWFuYWx5dGljcy1wcm9wZXJ0eScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uRWRpdEdvb2dsZUFuYWx5dGljc1ZpZXcgPSAnY29ubmVjdGlvbi1lZGl0LWdvb2dsZS1hbmFseXRpY3MtdmlldycsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uRWRpdEdvb2dsZUFuYWx5dGljc1NlZ21lbnQgPSAnY29ubmVjdGlvbi1lZGl0LWdvb2dsZS1hbmFseXRpY3Mtc2VnbWVudCcsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uRWRpdEpvaW5DbGF1c2VzID0gJ2Nvbm5lY3Rpb24tZWRpdC1qb2luLWNsYXVzZXMnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkVkaXRKb2luVHlwZSA9ICdjb25uZWN0aW9uLWVkaXQtam9pbi10eXBlJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25FZGl0U1FMVGV4dCA9ICdjb25uZWN0aW9uLWVkaXQtc3FsLXRleHQnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkZldGNoRW50aXR5ID0gJ2Nvbm5lY3Rpb24tZmV0Y2gtZW50aXR5JyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25TZXRGb3JjZUV4dHJhY3RSZWZyZXNoID0gJ2Nvbm5lY3Rpb24tc2V0LWZvcmNlLWV4dHJhY3QtcmVmcmVzaCcsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uUHJlcGFyZURhdGFTb3VyY2VGb3JFZGl0ID0gJ2Nvbm5lY3Rpb24tcHJlcGFyZS1kYXRhc291cmNlLWZvci1lZGl0JyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25DbGVhclJlZnJlc2hBdHRyaWJ1dGVzID0gJ2Nvbm5lY3Rpb24tY2xlYXItcmVmcmVzaC1hdHRyaWJ1dGVzJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25SZW1vdmVHb29nbGVBbmFseXRpY3NEaW1lbnNpb24gPSAnY29ubmVjdGlvbi1yZW1vdmUtZ29vZ2xlLWFuYWx5dGljcy1kaW1lbnNpb24nLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvblJlbW92ZUdvb2dsZUFuYWx5dGljc01lYXN1cmUgPSAnY29ubmVjdGlvbi1yZW1vdmUtZ29vZ2xlLWFuYWx5dGljcy1tZWFzdXJlJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25SZW1vdmVDb2FsZXNjZSA9ICdjb25uZWN0aW9uLXJlbW92ZS1jb2FsZXNjZScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uUmVtb3ZlUGl2b3QgPSAnY29ubmVjdGlvbi1yZW1vdmUtcGl2b3QnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkFkZERhdGVQYXJzZUZvcm1hdHMgPSAnY29ubmVjdGlvbi1hZGQtZGF0ZS1wYXJzZS1mb3JtYXRzJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25SZW5hbWVUYWJsZSA9ICdjb25uZWN0aW9uLXJlbmFtZS10YWJsZScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uUmVwbGFjZVJlbGF0aW9uV2l0aFNRTFRleHQgPSAnY29ubmVjdGlvbi1yZXBsYWNlLXJlbGF0aW9uLXdpdGgtc3FsLXRleHQnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvblJlcGxhY2VUYWJsZSA9ICdjb25uZWN0aW9uLXJlcGxhY2UtdGFibGUnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvblJlc2V0VGFibGVBbGlhcyA9ICdjb25uZWN0aW9uLXJlc2V0LXRhYmxlLWFsaWFzJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25TZWxlY3RDYXRhbG9nID0gJ2Nvbm5lY3Rpb24tc2VsZWN0LWNhdGFsb2cnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvblNlbGVjdEN1YmUgPSAnY29ubmVjdGlvbi1zZWxlY3QtY3ViZScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uU2VsZWN0RGF0YWJhc2UgPSAnY29ubmVjdGlvbi1zZWxlY3QtZGF0YWJhc2UnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvblNlbGVjdFNjaGVtYSA9ICdjb25uZWN0aW9uLXNlbGVjdC1zY2hlbWEnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvblNlbGVjdFN0b3JlZFByb2NlZHVyZSA9ICdjb25uZWN0aW9uLXNlbGVjdC1zdG9yZWQtcHJvY2VkdXJlJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25TZWxlY3RXYXJlaG91c2UgPSAnY29ubmVjdGlvbi1zZWxlY3Qtd2FyZWhvdXNlJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25TZWxlY3RCaWdRdWVyeUxlZ2FjeVNRTENoZWNrQm94ID0gJ2Nvbm5lY3Rpb24tc2VsZWN0LWJpZ3F1ZXJ5LWxlZ2FjeS1jaGVjaycsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uVG9nZ2xlSGFzSGVhZGVyUm93ID0gJ2Nvbm5lY3Rpb24tdG9nZ2xlLWhhcy1oZWFkZXItcm93JyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25Ub2dnbGVUYWJsZUNsZWFuaW5nID0gJ2Nvbm5lY3Rpb24tdG9nZ2xlLXRhYmxlLWNsZWFuaW5nJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25Ub2dnbGVVc2VFeHRyYWN0ID0gJ2Nvbm5lY3Rpb24tdG9nZ2xlLXVzZS1leHRyYWN0JyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25WaWV3VGFibGVDbGVhbmluZ1Jlc3VsdHMgPSAnY29ubmVjdGlvbi12aWV3LXRhYmxlLWNsZWFuaW5nLXJlc3VsdHMnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdFRvRGF0YVNlcnZlclNvdXJjZSA9ICdjb25uZWN0LWRhdGEtc2VydmVyLWRhdGFzb3VyY2UnLFxuXG4gICAgLy8gXG4gICAgQ29uc2lkZXJaZXJvc0VtcHR5RmxhZyA9ICdjb25zaWRlci16ZXJvcy1lbXB0eScsXG5cbiAgICAvLyBcbiAgICBDb252ZXJ0VW5uYW1lZEZpZWxkcyA9ICdjb252ZXJ0LXVubmFtZWQtZmllbGRzJyxcblxuICAgIC8vIFxuICAgIENyYXNoID0gJ2NyYXNoJyxcblxuICAgIC8vIFxuICAgIENyZWF0ZUFnZ3JlZ2F0ZVJvbGUgPSAnY3JlYXRlLWFnZ3JlZ2F0ZS1yb2xlJyxcblxuICAgIC8vIFxuICAgIENyZWF0ZUNvbm5lY3Rpb24gPSAnY3JlYXRlLWNvbm5lY3Rpb24nLFxuXG4gICAgLy8gXG4gICAgQ3JlYXRlRGVmYXVsdFF1aWNrRmlsdGVyID0gJ2NyZWF0ZS1kZWZhdWx0LXF1aWNrLWZpbHRlcicsXG5cbiAgICAvLyBcbiAgICBDcmVhdGVUeXBlSW5QaWxsID0gJ2NyZWF0ZS10eXBlLWluLXBpbGwnLFxuXG4gICAgLy8gXG4gICAgQ3VzdG9tRGF0YUdyaWRGaWVsZE9yZGVyID0gJ2N1c3RvbS1kYXRhZ3JpZC1maWVsZC1vcmRlcicsXG5cbiAgICAvLyBcbiAgICBDdXN0b21EYXRlQWdncmVnYXRpb24gPSAnY3VzdG9tLWRhdGUtYWdncmVnYXRpb24nLFxuXG4gICAgLy8gXG4gICAgQ3VzdG9tU3BsaXRGaWVsZCA9ICdjdXN0b20tc3BsaXQtZmllbGQnLFxuXG4gICAgLy8gXG4gICAgRGVidWdBc3NlcnRpb24gPSAnZGVidWctYXNzZXJ0aW9uJyxcblxuICAgIC8vIFxuICAgIERlY3JlbWVudFBhcmFtZXRlclZhbHVlID0gJ2RlY3ItcGFyYW1ldGVyLXZhbHVlJyxcblxuICAgIC8vIFxuICAgIERlbGV0ZUZpZWxkcyA9ICdkZWxldGUtY2FsY3VsYXRpb24tZmllbGRzLWNvbW1hbmQnLFxuXG4gICAgLy8gXG4gICAgRGVsZXRlU2hlZXQgPSAnZGVsZXRlLXNoZWV0JyxcblxuICAgIC8vIFxuICAgIERlc2NyaWJlRHJpbGxQYXRoID0gJ2Rlc2NyaWJlLWRyaWxsLXBhdGgnLFxuXG4gICAgLy8gXG4gICAgRGVzY3JpYmVTb3J0RmlsdGVyID0gJ2Rlc2NyaWJlLXNvcnQtZmlsdGVyJyxcblxuICAgIC8vIFxuICAgIERpc21pc3NOdWxsV2FydCA9ICdkaXNtaXNzLW51bGwtd2FydCcsXG5cbiAgICAvLyBcbiAgICBEb21haW5RdWlja0ZpbHRlciA9ICdkb21haW4tcXVpY2stZmlsdGVyJyxcblxuICAgIC8vIFxuICAgIERvdWJsZUZyZWVDcmFzaCA9ICdkb3VibGUtZnJlZScsXG5cbiAgICAvLyBcbiAgICBEcm9wTm93aGVyZSA9ICdkcm9wLW5vd2hlcmUnLFxuXG4gICAgLy8gXG4gICAgRHJvcE9uU2NoZW1hVmlld2VyID0gJ2Ryb3Atb24tc2NoZW1hLXZpZXdlcicsXG5cbiAgICAvLyBcbiAgICBEcm9wT25TaGVsZiA9ICdkcm9wLW9uLXNoZWxmJyxcblxuICAgIC8vIFxuICAgIERyb3BPbkNhbGNFZGl0b3IgPSAnZHJvcC1vbi1jYWxjLWVkaXRvcicsXG5cbiAgICAvLyBcbiAgICBEcm9wT25TaG93TWUgPSAnZHJvcC1vbi1zaG93bWUnLFxuXG4gICAgLy8gXG4gICAgRHJvcFByZXBhcmUgPSAnZHJvcC1wcmVwYXJlJyxcblxuICAgIC8vIFxuICAgIER1YWxBeGlzID0gJ2R1YWwtYXhpcycsXG5cbiAgICAvLyBcbiAgICBEdXBsaWNhdGVTaGVldCA9ICdkdXBsaWNhdGUtc2hlZXQnLFxuXG4gICAgLy8gXG4gICAgRWRpdENvcHlDYWxjID0gJ2VkaXQtY29weS1jYWxjJyxcblxuICAgIC8vIFxuICAgIEVkaXREcm9wTGluZXMgPSAnZWRpdC1kcm9wLWxpbmVzJyxcblxuICAgIC8vIFxuICAgIEVkaXRFbnVtZXJhdGVkR3JvdXAgPSAnZWRpdC1lbnVtZXJhdGVkLWdyb3VwJyxcblxuICAgIC8vIFxuICAgIEVkaXROZXN0ZWRHcm91cCA9ICdlZGl0LW5lc3RlZC1ncm91cCcsXG5cbiAgICAvLyBcbiAgICBFZGl0UGlsbCA9ICdlZGl0LXBpbGwnLFxuXG4gICAgLy8gXG4gICAgRWRpdFByaW1pdGl2ZVR5cGUgPSAnZWRpdC1wcmltaXRpdmUtdHlwZScsXG5cbiAgICAvLyBcbiAgICBFbmFibGVBbGxCcnVzaGluZyA9ICdlbmFibGUtYWxsLWhpZ2hsaWdodHMnLFxuXG4gICAgLy8gXG4gICAgRW5hYmxlUXVpY2tGaWx0ZXIgPSAnZW5hYmxlLXF1aWNrLWZpbHRlcicsXG5cbiAgICAvLyBcbiAgICBFbmFibGVTaGVldEJydXNoaW5nID0gJ2VuYWJsZS1zaGVldC1oaWdobGlnaHRzJyxcblxuICAgIC8vIFxuICAgIEVuYWJsZVRoZW1lZEJydXNoaW5nID0gJ2VuYWJsZS10aGVtZWQtaGlnaGxpZ2h0cycsXG5cbiAgICAvLyBcbiAgICBFbnVtZXJhdGVWYXJpYWJsZXMgPSAnZW51bWVyYXRlLXZhcmlhYmxlcycsXG5cbiAgICAvLyBcbiAgICBFbnVtZXJhdGVWYXJpYWJsZVNlbGVjdGlvblZhbHVlcyA9ICdlbnVtZXJhdGUtdmFyaWFibGUtc2VsZWN0aW9uLXZhbHVlcycsXG5cbiAgICAvLyBcbiAgICBFc3RhYmxpc2hDb25uZWN0aW9uID0gJ2VzdGFibGlzaC1jb25uZWN0aW9uJyxcblxuICAgIC8vIFxuICAgIEVzdGFibGlzaE1hdGNoaW5nQ29ubmVjdGlvbnMgPSAnZXN0YWJsaXNoLW1hdGNoaW5nLWNvbm5lY3Rpb25zJyxcblxuICAgIC8vIFxuICAgIEV4cG9ydERhdGFUb1RleHQgPSAnZXhwb3J0LWRhdGEtdG8tdGV4dCcsXG5cbiAgICAvLyBcbiAgICBFeHRTdmNDb25maWcgPSAnZXh0LXN2Yy1jb25maWcnLFxuXG4gICAgLy8gXG4gICAgRXh0U3ZjQ29uZmlnQ29ubmVjdCA9ICdleHQtc3ZjLWNvbmZpZy1jb25uZWN0JyxcblxuICAgIC8vIFxuICAgIEV4dHJhY3QgPSAnZXh0cmFjdCcsXG5cbiAgICAvLyBcbiAgICBTZXREYXRhR3JpZEN1cnJlbnRUYWJsZSA9ICdzZXQtZGF0YS1ncmlkLWN1cnJlbnQtdGFibGUnLFxuXG4gICAgLy8gXG4gICAgRmV0Y2hUYWJsZVJlbGV2YW5jZSA9ICdmZXRjaC10YWJsZS1yZWxldmFuY2UnLFxuXG4gICAgLy8gXG4gICAgRmV0Y2hDYWNoZWRUYWJsZVJlbGV2YW5jZSA9ICdmZXRjaC1jYWNoZWQtdGFibGUtcmVsZXZhbmNlJyxcblxuICAgIC8vIFxuICAgIEZsaXBMYWJlbHMgPSAnZmxpcC1sYWJlbHMnLFxuXG4gICAgLy8gXG4gICAgRmxvYXRpbmdUb29sYmFyID0gJ3pvb20tY29udHJvbHMnLFxuXG4gICAgLy8gXG4gICAgRmxvYXRpbmdUb29sYmFyVG9nZ2xlID0gJ3pvb20tY29udHJvbHMtdG9nZ2xlJyxcblxuICAgIC8vIFxuICAgIEZvcmVjYXN0Q29uZmlnID0gJ2ZvcmVjYXN0LWNvbmZpZycsXG5cbiAgICAvLyBcbiAgICBGb3JlY2FzdFRvZ2dsZSA9ICdmb3JlY2FzdC10b2dnbGUnLFxuXG4gICAgLy8gXG4gICAgRm9ybWF0V29ya2Jvb2sgPSAnZm9ybWF0LXdvcmtib29rJyxcblxuICAgIC8vIFxuICAgIEdlb2dyYXBoaWNTZWFyY2hRdWVyeSA9ICdnZW9ncmFwaGljLXNlYXJjaC1xdWVyeScsXG5cbiAgICAvLyBcbiAgICBHZW9ncmFwaGljU2VhcmNoTG9hZERhdGEgPSAnZ2VvZ3JhcGhpYy1zZWFyY2gtbG9hZC1kYXRhJyxcblxuICAgIC8vIFxuICAgIEdlb2dyYXBoaWNTZWFyY2hJc0RhdGFEb25lTG9hZGluZyA9ICdnZW9ncmFwaGljLXNlYXJjaC1kYXRhLWRvbmUtbG9hZGluZycsXG5cbiAgICAvLyBcbiAgICBHZW9ncmFwaGljU2VhcmNoVG9nZ2xlVmlzaWJpbGl0eSA9ICdnZW9ncmFwaGljLXNlYXJjaC10b2dnbGUtdmlzaWJpbGl0eScsXG5cbiAgICAvLyBcbiAgICBHZXRFZGl0Q29ubmVjdGlvblByZXNNb2RlbCA9ICdnZXQtZWRpdC1jb25uZWN0aW9uLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0RWRpdEVudW1lcmF0ZWRHcm91cFByZXNNb2RlbCA9ICdnZXQtZWRpdC1lbnVtZXJhdGVkLWdyb3VwLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0RWRpdE5lc3RlZEdyb3VwUHJlc01vZGVsID0gJ2dldC1lZGl0LW5lc3RlZC1ncm91cC1wcmVzLW1vZGVsJyxcblxuICAgIC8vIFxuICAgIEdldEZyYW1lRmluZGVyUHJlc01vZGVsID0gJ2dldC1mcmFtZS1maW5kZXItcHJlcy1tb2RlbCcsXG5cbiAgICAvLyBcbiAgICBHZXRHb29nbGVTaGVldHNMaXN0UHJlc01vZGVsID0gJ2dldC1nb29nbGUtc2hlZXRzLWxpc3QtcHJlcy1tb2RlbCcsXG5cbiAgICAvLyBcbiAgICBHZXRHb29nbGVTaGVldFBhbmVQcmVzTW9kZWwgPSAnZ2V0LWdvb2dsZS1zaGVldC1wYW5lLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0SW5pdGlhbFNRTFByZXNNb2RlbCA9ICdnZXQtaW5pdGlhbC1zcWwtcHJlcy1tb2RlbCcsXG5cbiAgICAvLyBcbiAgICBHZXRRdWVyeUJhbmRpbmdQcmVzTW9kZWwgPSAnZ2V0LXF1ZXJ5LWJhbmRpbmctcHJlcy1tb2RlbCcsXG5cbiAgICAvLyBcbiAgICBHZXRUYWJiZWRBdXRoZW50aWNhdGlvblByZXNNb2RlbCA9ICdnZXQtdGFiYmVkLWF1dGhlbnRpY2F0aW9uLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0QWN0aXZlU2hlZXQgPSAnZ2V0LWFjdGl2ZS1zaGVldCcsXG5cbiAgICAvLyBcbiAgICBHZXRBbHBoYUxldmVsID0gJ2dldC1hbHBoYS1sZXZlbCcsXG5cbiAgICAvLyBcbiAgICBHZXRBcHBDb25maWcgPSAnZ2V0LWFwcC1jb25maWcnLFxuXG4gICAgLy8gXG4gICAgR2V0RGlzYWJsZWRTZWNvbmRhcnlEU0ZpZWxkcyA9ICdnZXQtZGlzYWJsZWQtc2Vjb25kYXJ5ZHMtZmllbGRzJyxcblxuICAgIC8vIFxuICAgIEdldEJsZW5kaW5nRmllbGRzID0gJ2dldC1ibGVuZGluZy1maWVsZHMnLFxuXG4gICAgLy8gXG4gICAgR2V0Q2FsY3VsYXRpb25QcmVzTW9kZWwgPSAnZ2V0LWNhbGN1bGF0aW9uLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0Q2F0ZWdvcmljYWxDb2xvciA9ICdnZXQtY2F0ZWdvcmljYWwtY29sb3InLFxuXG4gICAgLy8gXG4gICAgR2V0Q2xpZW50SW5mbyA9ICdnZXQtY2xpZW50LWluZm8nLFxuXG4gICAgLy8gXG4gICAgR2V0Q29tbWFuZHMgPSAnZ2V0LWNvbW1hbmRzJyxcblxuICAgIC8vIFxuICAgIEdldENvbm5lY3Rpb25EZXNjcmlwdGlvblByZXNNb2RlbCA9ICdnZXQtY29ubmVjdGlvbi1kZXNjcmlwdGlvbi1wcmVzLW1vZGVsJyxcblxuICAgIC8vIFxuICAgIEdldERTRHJvcGRvd25QcmVzTW9kZWwgPSAnZ2V0LWRzLWRyb3Bkb3duLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0RGF0YVByZXZpZXdXaW5kb3dNZXNzYWdlUHJlc01vZGVsID0gJ2dldC1kYXRhLXByZXZpZXctd2luZG93LXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0RGF0YVNvdXJjZVByZXNNb2RlbCA9ICdnZXQtZGF0YXNvdXJjZS1wcmVzLW1vZGVsJyxcblxuICAgIC8vIFxuICAgIEdldERhdGFTb3VyY2VTb3J0UHJlc01vZGVsID0gJ2dldC1kYXRhc291cmNlLXNvcnQtcHJlcy1tb2RlbCcsXG5cbiAgICAvLyBcbiAgICBHZXREYXRhU291cmNlUHJvcGVydGllc1ByZXNNb2RlbCA9ICdnZXQtZGF0YXNvdXJjZS1wcm9wZXJ0aWVzLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0Q29ubmVjdGlvblNldHRpbmdzUHJlc01vZGVsID0gJ2dldC1jb25uZWN0aW9uLXNldHRpbmdzLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0RGFzaGJvYXJkID0gJ2dldC1kYXNoYm9hcmQnLFxuXG4gICAgLy8gXG4gICAgR2V0RGF0YVByZXZpZXcgPSAnZ2V0LWRhdGEtcHJldmlldycsXG5cbiAgICAvLyBcbiAgICBHZXREYXRhYmFzZUVudW1lcmF0aW9uUHJlc01vZGVsID0gJ2dldC1kYXRhYmFzZS1lbnVtZXJhdGlvbi1wcmVzLW1vZGVsJyxcblxuICAgIC8vIFxuICAgIEdldERlZmF1bHRDb2xvciA9ICdnZXQtZGVmYXVsdC1jb2xvcicsXG5cbiAgICAvLyBcbiAgICBHZXREZWZhdWx0U2hhcGUgPSAnZ2V0LWRlZmF1bHQtc2hhcGUnLFxuXG4gICAgLy8gXG4gICAgR2V0RHJhZ1ByZXNNb2RlbEZvclRleHQgPSAnZ2V0LWRyYWctcHJlcy1tb2RlbC1mb3ItdGV4dCcsXG5cbiAgICAvLyBcbiAgICBHZXREcm9wVGFyZ2V0UHJlc01vZGVsID0gJ2dldC1kcm9wLXRhcmdldC1wcmVzLW1vZGVsJyxcblxuICAgIC8vIFxuICAgIEdldEVkaXREYXRhU2VydmVyQ29ubmVjdGlvblByZXNNb2RlbCA9ICdnZXQtZWRpdC1kYXRhLXNlcnZlci1jb25uZWN0aW9uLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0RWRpdERyb3BMaW5lc01vZGVsID0gJ2dldC1lZGl0LWRyb3AtbGluZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0RW5jb2RpbmdTdGF0ZSA9ICdnZXQtZW5jb2Rpbmctc3RhdGUnLFxuXG4gICAgLy8gXG4gICAgR2V0RW5jb2RpbmdUeXBlTWVudU1vZGVsID0gJ2dldC1lbmNvZGluZy10eXBlLW1lbnUnLFxuXG4gICAgLy8gXG4gICAgR2V0RXh0U3ZjQ29uZmlnID0gJ2dldC1leHQtc3ZjLWNvbmZpZycsXG5cbiAgICAvLyBcbiAgICBHZXRGb3JlY2FzdFByZXNNb2RlbCA9ICdnZXQtZm9yZWNhc3QtcHJlcy1tb2RlbCcsXG5cbiAgICAvLyBcbiAgICBHZXRKb2luRGVzY3JpcHRpb25QcmVzTW9kZWwgPSAnZ2V0LWpvaW4tZGVzY3JpcHRpb24tcHJlcy1tb2RlbCcsXG5cbiAgICAvLyBcbiAgICBHZXRRdWlja0ZpbHRlciA9ICdnZXQtcXVpY2stZmlsdGVyJyxcblxuICAgIC8vIFxuICAgIEdldFF1aWNrRmlsdGVycyA9ICdnZXQtcXVpY2stZmlsdGVycycsXG5cbiAgICAvLyBcbiAgICBHZXRSZWZlcmVuY2VMaW5lUHJlc01vZGVsID0gJ2dldC1yZWZlcmVuY2UtbGluZS1wcmVzLW1vZGVsJyxcblxuICAgIC8vIFxuICAgIEdldFBhcmFtZXRlcnMgPSAnZ2V0LXBhcmFtZXRlcnMnLFxuXG4gICAgLy8gXG4gICAgR2V0UGFyYW1ldGVyTW9kZWxzID0gJ2dldC1wYXJhbWV0ZXItbW9kZWxzJyxcblxuICAgIC8vIFxuICAgIEdldFBhcmFtZXRlcnNSZWdpc3RyeUluZm8gPSAnZ2V0LXBhcmFtcy1yZWdpc3RyeS1pbmZvJyxcblxuICAgIC8vIFxuICAgIEdldFBpdm90UHJlc01vZGVsID0gJ2dldC1waXZvdC1wcmVzLW1vZGVsJyxcblxuICAgIC8vIFxuICAgIEdldFNjZW5lID0gJ2dldC1zY2VuZScsXG5cbiAgICAvLyBcbiAgICBHZXRTY2hlbWFFbnVtZXJhdGlvblByZXNNb2RlbCA9ICdnZXQtc2NoZW1hLWVudW1lcmF0aW9uLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0U2hlZXRzSW5mbyA9ICdnZXQtc2hlZXRzLWluZm8nLFxuXG4gICAgLy8gXG4gICAgR2V0U2hvd01lID0gJ2dldC1zaG93LW1lJyxcblxuICAgIC8vIFxuICAgIEdldFN0YW5kYXJkQ29ubmVjdGlvbkVudW1lcmF0aW9uUHJlc01vZGVsID0gJ2dldC1zdGFuZGFyZC1jb25uZWN0aW9uLWVudW1lcmF0aW9uLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0U3RvcmVkUHJvY2VkdXJlRW51bWVyYXRpb25QcmVzTW9kZWwgPSAnZ2V0LXN0b3JlZC1wcm9jZWR1cmUtZW51bWVyYXRpb24tcHJlcy1tb2RlbCcsXG5cbiAgICAvLyBcbiAgICBHZXRTdG9yZWRQcm9jZWR1cmVQYXJhbWV0ZXJzUHJlc01vZGVsID0gJ2dldC1zdG9yZWQtcHJvY2VkdXJlLXBhcmFtZXRlcnMtcHJlcy1tb2RlbCcsXG5cbiAgICAvLyBcbiAgICBHZXRUYWJsZUVudW1lcmF0aW9uUHJlc01vZGVsID0gJ2dldC10YWJsZS1lbnVtZXJhdGlvbi1wcmVzLW1vZGVsJyxcblxuICAgIC8vIFxuICAgIEdldFRhYmxlQ2xlYW5pbmdQcmVzTW9kZWwgPSAnZ2V0LXRhYmxlLWNsZWFuaW5nLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0VGFyZ2V0RmllbGRMaXN0ID0gJ2dldC10YXJnZXQtZmllbGQtbGlzdCcsXG5cbiAgICAvLyBcbiAgICBHZXRUb3BMZXZlbENvbm5lY3Rpb25EZXNjcmlwdGlvblByZXNNb2RlbCA9ICdnZXQtdG9wLWxldmVsLWNvbm5lY3Rpb24tZGVzY3JpcHRpb24tcHJlcy1tb2RlbCcsXG5cbiAgICAvLyBcbiAgICBHZXRUeXBlSW5QaWxsUHJlc01vZGVsID0gJ2dldC10eXBlLWluLXBpbGwtcHJlcy1tb2RlbCcsXG5cbiAgICAvLyBcbiAgICBHZXRVYmVyVGlwUHJlc01vZGVsID0gJ2dldC11YmVydGlwLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0VW5pb25JbmZvUHJlc01vZGVsID0gJ2dldC11bmlvbi1pbmZvLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0VmlzdWFsID0gJ2dldC12aXN1YWwnLFxuXG4gICAgLy8gXG4gICAgR2V0Vml6RGF0YSA9ICdnZXQtdml6LWRhdGEnLFxuXG4gICAgLy8gXG4gICAgR2V0V2FyZWhvdXNlRW51bWVyYXRpb25QcmVzTW9kZWwgPSAnZ2V0LXdhcmVob3VzZS1lbnVtZXJhdGlvbi1wcmVzLW1vZGVsJyxcblxuICAgIC8vIFxuICAgIEdldFdvcmtib29rID0gJ2dldC13b3JrYm9vaycsXG5cbiAgICAvLyBcbiAgICBHZXRXb3JsZFVwZGF0ZSA9ICdnZXQtd29ybGQtdXBkYXRlJyxcblxuICAgIC8vIFxuICAgIEdvVG9TaGVldCA9ICdnb3RvLXNoZWV0JyxcblxuICAgIC8vIFxuICAgIEhlYXBDb3JydXB0aW9uQ3Jhc2ggPSAnY29ycnVwdC1oZWFwJyxcblxuICAgIC8vIFxuICAgIEhpZGVDb2x1bW5GaWVsZExhYmVsID0gJ2hpZGUtY29sdW1uLWZpZWxkLWxhYmVsJyxcblxuICAgIC8vIFxuICAgIEhpZGVFbXB0eUNvbHNGbGFnID0gJ2hpZGUtZW1wdHktY29scycsXG5cbiAgICAvLyBcbiAgICBIaWRlRW1wdHlSb3dzRmxhZyA9ICdoaWRlLWVtcHR5LXJvd3MnLFxuXG4gICAgLy8gXG4gICAgSGlkZUxhYmVsID0gJ2hpZGUtbGFiZWwnLFxuXG4gICAgLy8gXG4gICAgSGlkZVJvd0ZpZWxkTGFiZWwgPSAnaGlkZS1yb3ctZmllbGQtbGFiZWwnLFxuXG4gICAgLy8gXG4gICAgSGllcmFyY2hpY2FsUXVpY2tGaWx0ZXJVcGRhdGVTZXRGdW5jdGlvbiA9ICdoaWVyYXJjaGljYWwtcXVpY2stZmlsdGVyLXVwZGF0ZS1zZXQtZnVuY3Rpb24nLFxuXG4gICAgLy8gXG4gICAgSW5jbHVkZUluVG9vbHRpcCA9ICdpbmNsdWRlLWluLXRvb2x0aXAnLFxuXG4gICAgLy8gXG4gICAgSW5jbHVkZU90aGVyQ2F0ZWdvcmljYWxCaW4gPSAnaW5jbHVkZS1vdGhlci1jYXQtYmluJyxcblxuICAgIC8vIFxuICAgIEluY3JlbWVudEV4dHJhY3QgPSAnaW5jcmVtZW50LWV4dHJhY3QnLFxuXG4gICAgLy8gXG4gICAgSW5jcmVtZW50UGFyYW1ldGVyVmFsdWUgPSAnaW5jci1wYXJhbWV0ZXItdmFsdWUnLFxuXG4gICAgLy8gXG4gICAgQ3JlYXRlQ2FsYyA9ICdjcmVhdGUtY2FsYycsXG5cbiAgICAvLyBcbiAgICBFZGl0Q2FsYyA9ICdlZGl0LWNhbGMnLFxuXG4gICAgLy8gXG4gICAgSW52b2tlSHlwZXJsaW5rID0gJ2ludm9rZS1oeXBlcmxpbmsnLFxuXG4gICAgLy8gXG4gICAgS2VlcE9ubHlPckV4Y2x1ZGVTZWxlY3Rpb24gPSAna2VlcC1vbmx5LW9yLWV4Y2x1ZGUtc2VsZWN0aW9uJyxcblxuICAgIC8vIFxuICAgIExhYmVsRHJpbGwgPSAnbGFiZWwtZHJpbGwnLFxuXG4gICAgLy8gXG4gICAgTGFiZWxEcmlsbEN0eCA9ICdsYWJlbC1kcmlsbC1jdHgnLFxuXG4gICAgLy8gXG4gICAgTGV2ZWxEcmlsbCA9ICdsZXZlbC1kcmlsbCcsXG5cbiAgICAvLyBcbiAgICBMb2FkVXJsID0gJ2xvYWQtdXJsJyxcblxuICAgIC8vIFxuICAgIExpc3RQdWJsaXNoZWREYXRhU291cmNlcyA9ICdsaXN0LXB1Ymxpc2hlZC1kYXRhc291cmNlcycsXG5cbiAgICAvLyBcbiAgICBNYXJrTGFiZWwgPSAnbWFyay1sYWJlbCcsXG5cbiAgICAvLyBcbiAgICBNYXJrVHJhaWwgPSAnbWFyay10cmFpbCcsXG5cbiAgICAvLyBcbiAgICBNZW1vcnlEdW1wT2JqZWN0Q291bnRzID0gJ21lbW9yeS1kdW1wLW9iamVjdC1jb3VudHMnLFxuXG4gICAgLy8gXG4gICAgTWVtb3J5TGVhayA9ICdtZW1vcnktbGVhaycsXG5cbiAgICAvLyBcbiAgICBNZXJnZSA9ICdtZXJnZS1vci1zcGxpdCcsXG5cbiAgICAvLyBcbiAgICBNaWdyYXRlRGF0YVNvdXJjZSA9ICdtaWdyYXRlLWRhdGEtc291cmNlJyxcblxuICAgIC8vIFxuICAgIE1vZGlmeU1hcmtzSW5TZXQgPSAnYWRkLW9yLXJlbW92ZS1tYXJrcycsXG5cbiAgICAvLyBcbiAgICBNb3ZlQXJlYUFubm90YXRpb25UZXh0ID0gJ21vdmUtYXJlYS1hbm5vdGF0aW9uLXRleHQnLFxuXG4gICAgLy8gXG4gICAgTW92ZUNvbHVtblRvdGFscyA9ICdtb3ZlLWNvbHVtbi10b3RhbHMnLFxuXG4gICAgLy8gXG4gICAgTW92ZU1hcmsgPSAnbW92ZS1tYXJrJyxcblxuICAgIC8vIFxuICAgIE1vdmVQb2ludEFubm90YXRpb24gPSAnbW92ZS1wb2ludC1hbm5vdGF0aW9uJyxcblxuICAgIC8vIFxuICAgIE1vdmVQb2ludEFubm90YXRpb25UYXJnZXQgPSAnbW92ZS1wb2ludC1hbm5vdGF0aW9uLXRhcmdldCcsXG5cbiAgICAvLyBcbiAgICBNb3ZlUmVmZXJlbmNlTGluZSA9ICdtb3ZlLXJlZmVyZW5jZS1saW5lJyxcblxuICAgIC8vIFxuICAgIE1vdmVSb3dUb3RhbHMgPSAnbW92ZS1yb3ctdG90YWxzJyxcblxuICAgIC8vIFxuICAgIE5hdmlnYXRlVG9TaGVldCA9ICduYXZpZ2F0ZS10by1zaGVldCcsXG5cbiAgICAvLyBcbiAgICBQb3N0Q2FsY0pvaW5DbGF1c2VSZXN1bHQgPSAncG9zdC1jYWxjLWpvaW4tY2xhdXNlLXJlc3VsdCcsXG5cbiAgICAvLyBcbiAgICBOZXdEb2NEYXNoYm9hcmQgPSAnbmV3LWRhc2hib2FyZCcsXG5cbiAgICAvLyBcbiAgICBOZXdEb2NXb3Jrc2hlZXQgPSAnbmV3LXdvcmtzaGVldCcsXG5cbiAgICAvLyBcbiAgICBOb25SYW5nZWRSZW1vdmVSZWZlcmVuY2VMaW5lID0gJ25vbi1yYW5nZWQtcmVtb3ZlLXJlZmVyZW5jZS1saW5lJyxcblxuICAgIC8vIFxuICAgIE9wdGltaXplRXh0cmFjdCA9ICdvcHRpbWl6ZS1leHRyYWN0JyxcblxuICAgIC8vIFxuICAgIE9wdE91dEFjdGlvbnMgPSAnb3B0LW91dC1hY3Rpb25zJyxcblxuICAgIC8vIFxuICAgIFBhZ2VIaXN0b3J5U2V0dGluZ3MgPSAncGFnZS1oaXN0b3J5LXNldHRpbmdzJyxcblxuICAgIC8vIFxuICAgIFBhZ2VUb2dnbGVUcmFpbHMgPSAncGFnZS10b2dnbGUtdHJhaWxzJyxcblxuICAgIC8vIFxuICAgIFBhcnNlVUlOYW1lID0gJ3BhcnNlLXVpLW5hbWUnLFxuXG4gICAgLy8gXG4gICAgUGVyY2VudGFnZXMgPSAncGVyY2VudGFnZXMnLFxuXG4gICAgLy8gXG4gICAgUGVyc3BlY3RpdmVzID0gJ3BlcnNwZWN0aXZlcycsXG5cbiAgICAvLyBcbiAgICBQb3NpdGlvblBvaW50QW5ub3RhdGlvbiA9ICdwb3NpdGlvbi1wb2ludC1hbm5vdGF0aW9uJyxcblxuICAgIC8vIFxuICAgIFByb3RvY29sUG9vbExvZyA9ICdwcm90b2NvbC1wb29sLWxvZycsXG5cbiAgICAvLyBcbiAgICBQdWJsaXNoRGF0YVNvdXJjZSA9ICdwdWJsaXNoLWRhdGFzb3VyY2UnLFxuXG4gICAgLy8gXG4gICAgUHVibGlzaERhdGFTb3VyY2VGcm9tRGF0YSA9ICdwdWJsaXNoLWRhdGEtc291cmNlLWZyb20tZGF0YScsXG5cbiAgICAvLyBcbiAgICBQdWJsaXNoRGF0YVNvdXJjZUZyb21Xb3JrYm9va0RhdGEgPSAncHVibGlzaC1kYXRhLXNvdXJjZS1mcm9tLXdvcmtib29rLWRhdGEnLFxuXG4gICAgLy8gXG4gICAgUXVhbnRpdGF0aXZlUXVpY2tGaWx0ZXJFZGl0ID0gJ3F1YW50aXRhdGl2ZS1xdWljay1maWx0ZXItZWRpdCcsXG5cbiAgICAvLyBcbiAgICBRdWFudGl0YXRpdmVNb2RlUXVpY2tGaWx0ZXIgPSAncXVhbnRpdGF0aXZlLW1vZGUtcXVpY2stZmlsdGVyJyxcblxuICAgIC8vIFxuICAgIFF1ZXJ5TWlncmF0ZURhdGFTb3VyY2VzID0gJ3F1ZXJ5LW1pZ3JhdGUtZGF0YS1zb3VyY2VzJyxcblxuICAgIC8vIFxuICAgIFF1aWNrU29ydCA9ICdxdWljay1zb3J0JyxcblxuICAgIC8vIFxuICAgIFJhbmdlZEJ5SW5kZXhNZXJnZSA9ICdyYW5nZWQtYnktaW5kZXgtbWVyZ2UnLFxuXG4gICAgLy8gXG4gICAgUmFuZ2VkQnlWYWx1ZU1lcmdlID0gJ3JhbmdlZC1ieS12YWx1ZS1tZXJnZScsXG5cbiAgICAvLyBcbiAgICBSZWNvcmQgPSAncmVjb3JkJyxcblxuICAgIC8vIFxuICAgIFJlZG8gPSAncmVkbycsXG5cbiAgICAvLyBcbiAgICBSZWZyZXNoRXh0cmFjdCA9ICdyZWZyZXNoLWV4dHJhY3QnLFxuXG4gICAgLy8gXG4gICAgUmVmcmVzaEZyb21Tb3VyY2UgPSAncmVmcmVzaC1mcm9tLXNvdXJjZScsXG5cbiAgICAvLyBcbiAgICBSZWxhdGl2ZURhdGVRdWlja0ZpbHRlckVkaXQgPSAncmVsYXRpdmUtZGF0ZS1xdWljay1maWx0ZXItZWRpdCcsXG5cbiAgICAvLyBcbiAgICBSZW1vdmVBbGxSZWZlcmVuY2VMaW5lcyA9ICdyZW1vdmUtYWxsLXJlZmVyZW5jZS1saW5lcycsXG5cbiAgICAvLyBcbiAgICBSZW1vdmVEcmlsbFBhdGggPSAncmVtb3ZlLWRyaWxsLXBhdGgnLFxuXG4gICAgLy8gXG4gICAgUmVtb3ZlRXh0cmFjdCA9ICdyZW1vdmUtZXh0cmFjdCcsXG5cbiAgICAvLyBcbiAgICBSZW1vdmVGaWVsZEZvbGRlciA9ICdyZW1vdmUtZmllbGQtZm9sZGVyJyxcblxuICAgIC8vIFxuICAgIFJlbW92ZUZpZWxkTGFiZWwgPSAncmVtb3ZlLWZpZWxkLWxhYmVsJyxcblxuICAgIC8vIFxuICAgIFJlbW92ZUZpZWxkcyA9ICdyZW1vdmUtZmllbGRzJyxcblxuICAgIC8vIFxuICAgIFJlbW92ZUZpZWxkc0Zyb21TaGVsZiA9ICdyZW1vdmUtZmllbGRzLWZyb20tc2hlbGYnLFxuXG4gICAgLy8gXG4gICAgUmVtb3ZlRnJvbURyaWxsUGF0aCA9ICdyZW1vdmUtZnJvbS1kcmlsbC1wYXRoJyxcblxuICAgIC8vIFxuICAgIFJlbW92ZUZyb21GaWVsZEZvbGRlciA9ICdyZW1vdmUtZnJvbS1maWVsZC1mb2xkZXInLFxuXG4gICAgLy8gXG4gICAgUmVtb3ZlUmVmZXJlbmNlTGluZSA9ICdyZW1vdmUtcmVmZXJlbmNlLWxpbmUnLFxuXG4gICAgLy8gXG4gICAgUmVtb3ZlU3VidG90YWxzID0gJ3JlbW92ZS1zdWJ0b3RhbHMnLFxuXG4gICAgLy8gXG4gICAgUmVuYW1lRGF0YVNvdXJjZSA9ICdyZW5hbWUtZGF0YS1zb3VyY2UnLFxuXG4gICAgLy8gXG4gICAgUmVuYW1lRHJpbGxQYXRoID0gJ3JlbmFtZS1kcmlsbC1wYXRoJyxcblxuICAgIC8vIFxuICAgIFJlbmFtZUZpZWxkRm9sZGVyID0gJ3JlbmFtZS1maWVsZC1mb2xkZXInLFxuXG4gICAgLy8gXG4gICAgUmVuYW1lU2hlZXQgPSAncmVuYW1lLXNoZWV0JyxcblxuICAgIC8vIFxuICAgIFJlb3JkZXJMYWJlbHMgPSAncmVvcmRlci1sYWJlbHMnLFxuXG4gICAgLy8gXG4gICAgUmVwb3J0QnVnID0gJ3JlcG9ydC1idWcnLFxuXG4gICAgLy8gXG4gICAgUmVxdWVzdERhdGFTb3VyY2VQcmVzTW9kZWwgPSAncmVxdWVzdC1kYXRhc291cmNlLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgUmVzZXRQYXJhbWV0ZXJDdHJsVGl0bGUgPSAncmVzZXQtcGFyYW1ldGVyLWN0cmwtdGl0bGUnLFxuXG4gICAgLy8gXG4gICAgUmVzZXRUb29sdGlwID0gJ3Jlc2V0LXRvb2x0aXAnLFxuXG4gICAgLy8gXG4gICAgUmVzaXplQXJlYUFubm90YXRpb25UZXh0ID0gJ3Jlc2l6ZS1hcmVhLWFubm90YXRpb24tdGV4dCcsXG5cbiAgICAvLyBcbiAgICBSZXNpemVBeGlzID0gJ3Jlc2l6ZS1heGlzJyxcblxuICAgIC8vIFxuICAgIFJlc2l6ZUNlbGwgPSAncmVzaXplLWNlbGwnLFxuXG4gICAgLy8gXG4gICAgUmVzaXplSGVhZGVyID0gJ3Jlc2l6ZS1oZWFkZXInLFxuXG4gICAgLy8gXG4gICAgUmVzaXplUG9pbnRBbm5vdGF0aW9uID0gJ3Jlc2l6ZS1wb2ludC1hbm5vdGF0aW9uJyxcblxuICAgIC8vIFxuICAgIFJldmVydCA9ICdyZXZlcnQnLFxuXG4gICAgLy8gXG4gICAgUm90YXRlRmllbGRMYWJlbCA9ICdyb3RhdGUtZmllbGQtbGFiZWwnLFxuXG4gICAgLy8gXG4gICAgUm90YXRlTGFiZWwgPSAncm90YXRlLWxhYmVsJyxcblxuICAgIC8vIFxuICAgIFNwbGl0RmllbGRMYWJlbCA9ICdzcGxpdC1maWVsZC1sYWJlbCcsXG5cbiAgICAvLyBcbiAgICBSdW5BY3Rpb24gPSAncnVuLWFjdGlvbicsXG5cbiAgICAvLyBcbiAgICBSdW5TY3JpcHQgPSAncnVuLXNjcmlwdCcsXG5cbiAgICAvLyBcbiAgICBSdW5VcGRhdGVzID0gJ3J1bi11cGRhdGUnLFxuXG4gICAgLy8gXG4gICAgU2F2ZU1vZGVsID0gJ3NhdmUtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgU2F2ZVB1Ymxpc2hlZERTdG9GaWxlID0gJ3NhdmUtcHVibGlzaGVkLWRzLXRvLWZpbGUnLFxuXG4gICAgLy8gXG4gICAgU2VsZWN0RGF0YVNvdXJjZSA9ICdzZWxlY3QtZGF0YS1zb3VyY2UnLFxuXG4gICAgLy8gXG4gICAgU2VsZWN0RmllbGRzSW5TaGVsZiA9ICdzZWxlY3QtZmllbGRzLWluLXNoZWxmJyxcblxuICAgIC8vIFxuICAgIFNlbmREYXRhQ29ubmVjdGlvblRhYmxlVmlld01lc3NhZ2UgPSAnc2VuZC1kYXRhLWNvbm5lY3Rpb24tdGFibGV2aWV3LW1lc3NhZ2UnLFxuXG4gICAgLy8gXG4gICAgU2V0QWN0aXZlRGF0YVNvdXJjZU5hbWUgPSAnc2V0LWFjdGl2ZS1kYXRhLXNvdXJjZS1uYW1lJyxcblxuICAgIC8vIFxuICAgIFNldEFjdGl2ZUNvbm5lY3Rpb25OYW1lID0gJ3NldC1hY3RpdmUtY29ubmVjdGlvbi1uYW1lJyxcblxuICAgIC8vIFxuICAgIFNldEFjdGl2ZURhdGFTb3VyY2UgPSAnc2V0LWFjdGl2ZS1kYXRhc291cmNlJyxcblxuICAgIC8vIFxuICAgIFNldEJhc2VQYWxldHRlID0gJ3NldC1iYXNlLXBhbGV0dGUnLFxuXG4gICAgLy8gXG4gICAgU2V0Q2F0ZWdvcmljYWxDb2xvciA9ICdzZXQtY2F0ZWdvcmljYWwtY29sb3InLFxuXG4gICAgLy8gXG4gICAgU2V0RGF0YUNhY2hlRGVsdGEgPSAnc2V0LWRhdGEtY2FjaGUtZGVsdGEnLFxuXG4gICAgLy8gXG4gICAgU2V0RGF0YVByZXZpZXdBdXRvVXBkYXRlID0gJ3NldC1kYXRhLXByZXZpZXctYXV0by11cGRhdGUnLFxuXG4gICAgLy8gXG4gICAgU2V0RGF0YVByZXZpZXdDdXN0b21GaWVsZE9yZGVyID0gJ3NldC1kYXRhLXByZXZpZXctY3VzdG9tLWZpZWxkLW9yZGVyJyxcblxuICAgIC8vIFxuICAgIFNldERlZmF1bHRDb2xvciA9ICdzZXQtZGVmYXVsdC1jb2xvcicsXG5cbiAgICAvLyBcbiAgICBTZXREZWZhdWx0U2hhcGUgPSAnc2V0LWRlZmF1bHQtc2hhcGUnLFxuXG4gICAgLy8gXG4gICAgU2V0RmlsdGVyQ29udGV4dCA9ICdzZXQtZmlsdGVyLWNvbnRleHQnLFxuXG4gICAgLy8gXG4gICAgU2V0RmlsdGVyU2hhcmVkID0gJ3NldC1maWx0ZXItc2hhcmVkJyxcblxuICAgIC8vIFxuICAgIFNldEluaXRpYWxTUUwgPSAnc2V0LWluaXRpYWwtc3FsJyxcblxuICAgIC8vIFxuICAgIFNldEl0ZW1Db2xvciA9ICdzZXQtaXRlbS1jb2xvcicsXG5cbiAgICAvLyBcbiAgICBTZXRJdGVtQ29sb3JSZXNldEN1c3RvbWl6YXRpb24gPSAnc2V0LWl0ZW0tY29sb3ItcmVzZXQtY3VzdG9taXphdGlvbicsXG5cbiAgICAvLyBcbiAgICBTZXRJdGVtRW5jb2RpbmdUeXBlID0gJ3NldC1pdGVtLWVuY29kaW5nLXR5cGUnLFxuXG4gICAgLy8gXG4gICAgU2V0TWFya1NpemUgPSAnc2V0LW1hcmstc2l6ZScsXG5cbiAgICAvLyBcbiAgICBTZXRQYWdlTmF2RmxhZyA9ICdzZXQtcGFnZS1mbGFnJyxcblxuICAgIC8vIFxuICAgIFNldFBhcmFtZXRlckN0cmxEaXNwbGF5RmxhZ3MgPSAnc2V0LXBhcmFtZXRlci1jdHJsLWRpc3BsYXktZmxhZ3MnLFxuXG4gICAgLy8gXG4gICAgU2V0UGFyYW1ldGVyQ3RybERpc3BsYXlNb2RlID0gJ3NldC1wYXJhbWV0ZXItY3RybC1kaXNwbGF5LW1vZGUnLFxuXG4gICAgLy8gXG4gICAgU2V0UGFyYW1ldGVyQ3RybFRpdGxlID0gJ3NldC1wYXJhbWV0ZXItY3RybC10aXRsZScsXG5cbiAgICAvLyBcbiAgICBTZXRQYXJhbWV0ZXJWYWx1ZSA9ICdzZXQtcGFyYW1ldGVyLXZhbHVlJyxcblxuICAgIC8vIFxuICAgIFNldFByaW1pdGl2ZSA9ICdzZXQtcHJpbWl0aXZlJyxcblxuICAgIC8vIFxuICAgIFNldFF1ZXJ5QmFuZGluZyA9ICdzZXQtcXVlcnktYmFuZGluZycsXG5cbiAgICAvLyBcbiAgICBTZXRRdWlja0ZpbHRlckluY2x1ZGVkVmFsdWVzID0gJ3NldC1xdWljay1maWx0ZXItaW5jbHVkZWQnLFxuXG4gICAgLy8gXG4gICAgU2V0UmVmZXJlbmNlTGluZUZvcm11bGEgPSAnc2V0LXJlZmVyZW5jZS1saW5lLWZvcm11bGEnLFxuXG4gICAgLy8gXG4gICAgU2V0UmVmZXJlbmNlTGluZUNvbnN0YW50VmFsdWUgPSAnc2V0LXJlZmVyZW5jZS1saW5lLWNvbnN0YW50LXZhbHVlJyxcblxuICAgIC8vIFxuICAgIFNldFNoZWV0Rm9ybWF0dGluZyA9ICdzZXQtc2hlZXQtZm9ybWF0dGluZycsXG5cbiAgICAvLyBcbiAgICBTZXRTaGVldFNpemUgPSAnc2V0LXNoZWV0LXNpemUnLFxuXG4gICAgLy8gXG4gICAgU2V0VG90YWxzVHlwZSA9ICdzZXQtdG90YWxzLXR5cGUnLFxuXG4gICAgLy8gXG4gICAgU2V0V29ya2Jvb2tMb2NhbGUgPSAnc2V0LXdvcmtib29rLWxvY2FsZScsXG5cbiAgICAvLyBcbiAgICBTaG93Q2F0Q3RybFF1aWNrRmlsdGVyID0gJ3Nob3ctY2F0LWN0cmwtcXVpY2stZmlsdGVyJyxcblxuICAgIC8vIFxuICAgIFNob3dDb2xGaWVsZE5hbWVzRmxhZyA9ICdzaG93LWNvbC1maWVsZC1uYW1lcycsXG5cbiAgICAvLyBcbiAgICBTaG93Q29sVG90YWxzRmxhZyA9ICdzaG93LWNvbC10b3RhbHMnLFxuXG4gICAgLy8gXG4gICAgU2hvd0NvbHVtbkZpZWxkTGFiZWwgPSAnc2hvdy1jb2x1bW4tZmllbGQtbGFiZWwnLFxuXG4gICAgLy8gXG4gICAgU2hvd0VtcHR5Q29sc0ZsYWcgPSAnc2hvdy1lbXB0eS1jb2xzJyxcblxuICAgIC8vIFxuICAgIFNob3dFbXB0eVJvd3NGbGFnID0gJ3Nob3ctZW1wdHktcm93cycsXG5cbiAgICAvLyBcbiAgICBTaG93Rm9yZWNhc3RFZGl0b3IgPSAnc2hvdy1mb3JlY2FzdC1lZGl0b3InLFxuXG4gICAgLy8gXG4gICAgU2hvd0Z1bGxSYW5nZSA9ICdzaG93LWZ1bGwtcmFuZ2UnLFxuXG4gICAgLy8gXG4gICAgU2hvd0hlYWRlciA9ICdzaG93LWhlYWRlcicsXG5cbiAgICAvLyBcbiAgICBTaG93SGlkZGVuRGF0YSA9ICdzaG93LWhpZGRlbi1kYXRhJyxcblxuICAgIC8vIFxuICAgIFNob3dNZSA9ICdzaG93LW1lJyxcblxuICAgIC8vIFxuICAgIFNob3dRdWFudEN0cmxRdWlja0ZpbHRlciA9ICdzaG93LXF1YW50LWN0cmwtcXVpY2stZmlsdGVyJyxcblxuICAgIC8vIFxuICAgIFNob3dRdWlja0ZpbHRlckRvYyA9ICdzaG93LXF1aWNrZmlsdGVyLWRvYycsXG5cbiAgICAvLyBcbiAgICBTaG93UmVmZXJlbmNlTGluZUVkaXRvciA9ICdzaG93LXJlZmVyZW5jZS1saW5lLWVkaXRvcicsXG5cbiAgICAvLyBcbiAgICBTaG93UmVmZXJlbmNlTGluZUNvbnN0YW50VmFsdWVFZGl0b3IgPSAnc2hvdy1yZWZlcmVuY2UtbGluZS1jb25zdGFudC12YWx1ZS1lZGl0b3InLFxuXG4gICAgLy8gXG4gICAgU2hvd1JlZmVyZW5jZUxpbmVGb3JtYXR0ZXIgPSAnc2hvdy1yZWZlcmVuY2UtbGluZS1mb3JtYXR0ZXInLFxuXG4gICAgLy8gXG4gICAgU2hvd1Jvd0ZpZWxkTGFiZWwgPSAnc2hvdy1yb3ctZmllbGQtbGFiZWwnLFxuXG4gICAgLy8gXG4gICAgU2hvd1Jvd0ZpZWxkTmFtZXNGbGFnID0gJ3Nob3ctcm93LWZpZWxkLW5hbWVzJyxcblxuICAgIC8vIFxuICAgIFNob3dSb3dUb3RhbHNGbGFnID0gJ3Nob3ctcm93LXRvdGFscycsXG5cbiAgICAvLyBcbiAgICBTaW1wbGVDb21tYW5kTGlzdCA9ICdzaW1wbGUtY29tbWFuZC1saXN0JyxcblxuICAgIC8vIFxuICAgIFNsZWVwID0gJ3NsZWVwJyxcblxuICAgIC8vIFxuICAgIFNsZWVwQmFja2dyb3VuZFRocmVhZCA9ICdzbGVlcC1iYWNrZ3JvdW5kLXRocmVhZCcsXG5cbiAgICAvLyBcbiAgICBTb3J0RGF0YUdyaWRCeUNvbHVtbiA9ICdzb3J0LWRhdGFncmlkLWJ5LWNvbHVtbicsXG5cbiAgICAvLyBcbiAgICBTb3J0RGF0YUdyaWRGaWVsZHMgPSAnc29ydC1kYXRhZ3JpZC1maWVsZHMnLFxuXG4gICAgLy8gXG4gICAgU3BlY2lhbFZhbHVlcyA9ICdzcGVjaWFsLXZhbHVlcycsXG5cbiAgICAvLyBcbiAgICBTcGxpdEZpZWxkID0gJ3NwbGl0LWZpZWxkJyxcblxuICAgIC8vIFxuICAgIFN0YWNrTWFya3MgPSAnc3RhY2stbWFya3MnLFxuXG4gICAgLy8gXG4gICAgU3RhY2tPdmVyZmxvd0NyYXNoID0gJ3N0YWNrLW92ZXJmbG93JyxcblxuICAgIC8vIFxuICAgIFN1YnRvdGFsQWdncmVnYXRpb24gPSAnc3VidG90YWwtYWdncmVnYXRpb24nLFxuXG4gICAgLy8gXG4gICAgU3VidG90YWxzID0gJ3N1YnRvdGFscycsXG5cbiAgICAvLyBcbiAgICBTd2FwRmllbGRzID0gJ3N3YXAtZmllbGRzJyxcblxuICAgIC8vIFxuICAgIFN3YXBSb3dzQW5kQ29sdW1ucyA9ICdzd2FwLXJvd3MtYW5kLWNvbHVtbnMnLFxuXG4gICAgLy8gXG4gICAgVGFibGVhdUV4Y2VwdGlvbiA9ICd0YWJsZWF1LWV4Y2VwdGlvbicsXG5cbiAgICAvLyBcbiAgICBUb2dnbGVEcm9wTGluZXMgPSAndG9nZ2xlLWRyb3AtbGluZXMnLFxuXG4gICAgLy8gXG4gICAgVG9nZ2xlRmllbGRCbGVuZGluZyA9ICd0b2dnbGUtZmllbGQtYmxlbmRpbmcnLFxuXG4gICAgLy8gXG4gICAgVG9nZ2xlTWFya0xhYmVscyA9ICd0b2dnbGUtbWFyay1sYWJlbHMnLFxuXG4gICAgLy8gXG4gICAgVG9nZ2xlUGFnZVRpdGxlID0gJ3RvZ2dsZS1wYWdlLXRpdGxlJyxcblxuICAgIC8vIFxuICAgIFRvZ2dsZVBhcmFtZXRlckN0cmxEaXNwbGF5RmxhZyA9ICd0b2dnbGUtcGFyYW1ldGVyLWN0cmwtZGlzcGxheS1mbGFnJyxcblxuICAgIC8vIFxuICAgIFRvZ2dsZVBhcmFtZXRlckN0cmxUaXRsZSA9ICd0b2dnbGUtcGFyYW1ldGVyLWN0cmwtdGl0bGUnLFxuXG4gICAgLy8gXG4gICAgVG9nZ2xlUXVpY2tGaWx0ZXJUaXRsZSA9ICd0b2dnbGUtcXVpY2stZmlsdGVyLXRpdGxlJyxcblxuICAgIC8vIFxuICAgIFRvZ2dsZVZpek5hdmlnYXRpb25TZXR0aW5nID0gJ3RvZ2dsZS12aXotbmF2aWdhdGlvbi1zZXR0aW5nJyxcblxuICAgIC8vIFxuICAgIFVuZG8gPSAndW5kbycsXG5cbiAgICAvLyBcbiAgICBVbmhpZGVEYXRhID0gJ3VuaGlkZS1kYXRhJyxcblxuICAgIC8vIFxuICAgIFVuaGlkZUxhYmVsID0gJ3VuaGlkZS1sYWJlbCcsXG5cbiAgICAvLyBcbiAgICBVcGRhdGVBcmVhQW5ub3RhdGlvbiA9ICd1cGRhdGUtYXJlYS1hbm5vdGF0aW9uJyxcblxuICAgIC8vIFxuICAgIFVwZGF0ZUNhbGNTY29wZUlzb2xhdGlvbiA9ICd1cGRhdGUtc2NvcGUtaXNvbGF0aW9uLWZvci1jYWxjdWxhdGlvbicsXG5cbiAgICAvLyBcbiAgICBVcGRhdGVEYXRhU2VydmVyQ29ubmVjdGlvbkluZm8gPSAndXBkYXRlLWRhdGEtc2VydmVyLWNvbm5lY3Rpb24taW5mbycsXG5cbiAgICAvLyBcbiAgICBVcGRhdGVQb2ludEFubm90YXRpb25QdWxsYmFjayA9ICd1cGRhdGUtcG9pbnQtYW5ub3RhdGlvbi1wdWxsYmFjaycsXG5cbiAgICAvLyBcbiAgICBVcGRhdGVUYWJsZUNhbGNJbmZvID0gJ3VwZGF0ZS10YWJsZS1jYWxjLWluZm9tYXRpb24nLFxuXG4gICAgLy8gXG4gICAgVXBncmFkZUV4dHJhY3QgPSAndXBncmFkZS1leHRyYWN0JyxcblxuICAgIC8vIFxuICAgIFVzZUV4dHJhY3QgPSAndXNlLWV4dHJhY3QnLFxuXG4gICAgLy8gXG4gICAgVmFsaWRhdGVEcmlsbFBhdGhOYW1lID0gJ3ZhbGlkYXRlLWRyaWxsLXBhdGgtbmFtZScsXG5cbiAgICAvLyBcbiAgICBWYWxpZGF0ZUZvcm11bGEgPSAndmFsaWRhdGUtZm9ybXVsYScsXG5cbiAgICAvLyBcbiAgICBWYWxpZGF0ZUluaXRpYWxTUUwgPSAndmFsaWRhdGUtaW5pdGlhbC1zcWwnLFxuXG4gICAgLy8gXG4gICAgVmFsaWRhdGVRdWVyeUJhbmRpbmcgPSAndmFsaWRhdGUtcXVlcnktYmFuZGluZycsXG5cbiAgICAvLyBcbiAgICBWYWxpZGF0ZVR5cGVJblBpbGwgPSAndmFsaWRhdGUtdHlwZS1pbi1waWxsJyxcblxuICAgIC8vIFxuICAgIFZpZXdQYXJhbWV0ZXJDdHJscyA9ICd2aWV3LXBhcmFtLWN0cmxzJyxcblxuICAgIC8vIFxuICAgIFZpZXdRdWlja0ZpbHRlcnMgPSAndmlldy1xdWljay1maWx0ZXJzJyxcblxuICAgIC8vIFxuICAgIEdldFNjaGVtYSA9ICdnZXQtc2NoZW1hJyxcblxuICAgIC8vIFxuICAgIEdldFNjaGVtYVZpZXdlckRhdGFTY2hlbWEgPSAnZ2V0LXNjaGVtYS12aWV3ZXItZGF0YS1zY2hlbWEnLFxuXG4gICAgLy8gXG4gICAgQ29udmVydFRvRGltZW5zaW9uID0gJ2NvbnZlcnQtdG8tZGltZW5zaW9uJyxcblxuICAgIC8vIFxuICAgIENvbnZlcnRUb01lYXN1cmUgPSAnY29udmVydC10by1tZWFzdXJlJyxcblxuICAgIC8vIFxuICAgIENvbnZlcnRUb0NvbnRpbnVvdXMgPSAnY29udmVydC10by1jb250aW51b3VzJyxcblxuICAgIC8vIFxuICAgIENvbnZlcnRUb0Rpc2NyZXRlID0gJ2NvbnZlcnQtdG8tZGlzY3JldGUnLFxuXG4gICAgLy8gXG4gICAgUmVuYW1lRmllbGQgPSAncmVuYW1lLWZpZWxkJyxcblxuICAgIC8vIFxuICAgIEhpZGVGaWVsZCA9ICdoaWRlLWZpZWxkJyxcblxuICAgIC8vIFxuICAgIFVuaGlkZUZpZWxkID0gJ3VuaGlkZS1maWVsZCcsXG5cbiAgICAvLyBcbiAgICBIaWRlVW51c2VkRmllbGRzID0gJ2hpZGUtdW51c2VkLWZpZWxkcycsXG5cbiAgICAvLyBcbiAgICBEdXBsaWNhdGVGaWVsZHMgPSAnZHVwbGljYXRlLWZpZWxkcycsXG5cbiAgICAvLyBcbiAgICBDbGVhblZhbHVlcyA9ICdjbGVhbi12YWx1ZXMnLFxuXG4gICAgLy8gXG4gICAgUGFyc2VEYXRlID0gJ3BhcnNlLWRhdGUnLFxuXG4gICAgLy8gXG4gICAgTWFrZURhdGUgPSAnbWFrZS1kYXRlJyxcblxuICAgIC8vIFxuICAgIFNldFF1YWxpZnlOYW1lcyA9ICdzZXQtcXVhbGlmeS1uYW1lcycsXG5cbiAgICAvLyBcbiAgICBDcmVhdGVNZWFzdXJlRnJvbUNvbHVtbiA9ICdjcmVhdGUtbWVhc3VyZS1mcm9tLWNvbHVtbicsXG5cbiAgICAvLyBcbiAgICBSZW1vdmVGcm9tU2NoZW1hRHJpbGxQYXRoID0gJ3JlbW92ZS1mcm9tLXNjaGVtYS1kcmlsbC1wYXRoJyxcblxuICAgIC8vIFxuICAgIEFkZFRvU2NoZW1hRHJpbGxQYXRoID0gJ2FkZC10by1zY2hlbWEtZHJpbGwtcGF0aCcsXG5cbiAgICAvLyBcbiAgICBSZW1vdmVTY2hlbWFEcmlsbFBhdGggPSAncmVtb3ZlLXNjaGVtYS1kcmlsbC1wYXRoJyxcblxuICAgIC8vIFxuICAgIFNob3dIaWRkZW5GaWVsZHMgPSAnc2hvdy1oaWRkZW4tZmllbGRzJyxcblxuICAgIC8vIFxuICAgIFNob3dBbGlhc2VzID0gJ3Nob3ctYWxpYXNlcycsXG5cbiAgICAvLyBcbiAgICBTZXRSb3dEaXNwbGF5Q291bnQgPSAnc2V0LXJvdy1kaXNwbGF5LWNvdW50JyxcblxuICAgIC8vIFxuICAgIFNob3dTdHJ1Y3R1cmUgPSAnc2hvdy1zdHJ1Y3R1cmUnLFxuXG4gICAgLy8gXG4gICAgR3JvdXBCeVRhYmxlID0gJ2dyb3VwLWJ5LXRhYmxlJyxcblxuICAgIC8vIFxuICAgIENoYW5nZURhdGFUeXBlID0gJ2NoYW5nZS1kYXRhLXR5cGUnLFxuXG4gICAgLy8gXG4gICAgQ2hhbmdlUGl2b3RTdHJhdGVneSA9ICdjaGFuZ2UtcGl2b3Qtc3RyYXRlZ3knLFxuXG4gICAgLy8gXG4gICAgQ2hhbmdlRGlzcGxheUFsaWFzID0gJ2NoYW5nZS1kaXNwbGF5LWFsaWFzJyxcblxuICAgIC8vIFxuICAgIFNldEluY2x1ZGVTaGFyZWRNZW1iZXJzID0gJ3NldC1pbmNsdWRlLXNoYXJlZC1tZW1iZXJzJyxcblxuICAgIC8vIFxuICAgIFNldFV0aWxpdHlEaW1lbnNpb24gPSAnc2V0LXV0aWxpdHktZGltZW5zaW9uJyxcblxuICAgIC8vIFxuICAgIFNldERlZmF1bHRIaWVyYXJjaHkgPSAnc2V0LWRlZmF1bHQtaGllcmFyY2h5JyxcblxuICAgIC8vIFxuICAgIERhdGFTb3VyY2VTb3J0T3JkZXIgPSAnZGF0YS1zb3VyY2Utc29ydC1vcmRlcicsXG5cbiAgICAvLyBcbiAgICBDbGVhclV0aWxpdHlEaW1lbnNpb24gPSAnY2xlYXItdXRpbGl0eS1kaW1lbnNpb24nLFxuXG4gICAgLy8gXG4gICAgQ2xlYXJEZWZhdWx0U29ydCA9ICdjbGVhci1kZWZhdWx0LXNvcnQnLFxuXG4gICAgLy8gXG4gICAgU2V0RGVmYXVsdEFnZ3JlZ2F0aW9uID0gJ3NldC1kZWZhdWx0LWFnZ3JlZ2F0aW9uJyxcblxuICAgIC8vIFxuICAgIFNldERlZmF1bHRWVEFnZ3JlZ2F0aW9uID0gJ3NldC1kZWZhdWx0LXZ0YWdncmVnYXRpb24nLFxuXG4gICAgLy8gXG4gICAgQ2hhbmdlRmlzY2FsWWVhciA9ICdjaGFuZ2UtZmlzY2FsLXllYXInLFxuXG4gICAgLy8gXG4gICAgQ2hhbmdlU2VtYW50aWNSb2xlID0gJ2NoYW5nZS1zZW1hbnRpYy1yb2xlJyxcblxuICAgIC8vIFxuICAgIEFkZFRvU2hlZXQgPSAnYWRkLXRvLXNoZWV0JyxcblxuICAgIC8vIFxuICAgIERyb3BTY2hlbWFTZWxPblNoZWxmID0gJ2Ryb3Atc2NoZW1hLXNlbC1vbi1zaGVsZicsXG5cbiAgICAvLyBcbiAgICBBZGRUb1NjaGVtYUZpZWxkRm9sZGVyID0gJ2FkZC10by1zY2hlbWEtZmllbGQtZm9sZGVyJyxcblxuICAgIC8vIFxuICAgIFJlbW92ZUZyb21TY2hlbWFGaWVsZEZvbGRlciA9ICdyZW1vdmUtZnJvbS1zY2hlbWEtZmllbGQtZm9sZGVyJyxcblxuICAgIC8vIFxuICAgIFJlbW92ZVNjaGVtYUZpZWxkRm9sZGVyID0gJ3JlbW92ZS1zY2hlbWEtZmllbGQtZm9sZGVyJyxcblxuICAgIC8vIFxuICAgIERlZmF1bHRUZXh0Rm9ybWF0ID0gJ2RlZmF1bHQtdGV4dC1mb3JtYXQnLFxuXG4gICAgLy8gXG4gICAgRWRpdFNjaGVtYUNhcHRpb24gPSAnZWRpdC1zY2hlbWEtY2FwdGlvbicsXG5cbiAgICAvLyBcbiAgICBSZXNldFNjaGVtYUNhcHRpb24gPSAncmVzZXQtc2NoZW1hLWNhcHRpb24nLFxuXG4gICAgLy8gXG4gICAgQ3JlYXRlT3V0bGllclNldCA9ICdjcmVhdGUtb3V0bGllci1zZXQnLFxufVxuXG5leHBvcnQgZW51bSBVSUNvbW1hbmRzIHtcblxuXG4gICAgLy8gXG4gICAgQWJvdXQgPSAnYWJvdXQnLFxuXG4gICAgLy8gXG4gICAgQWRkRGF0YVNlcnZlckRhdGFTb3VyY2VVSSA9ICdhZGQtZGF0YS1zZXJ2ZXItZGF0YXNvdXJjZS11aScsXG5cbiAgICAvLyBcbiAgICBTd2l0Y2hUb0RvY3VtZW50QW5kQWRkRGF0YVNlcnZlckRhdGFTb3VyY2VVSSA9ICdzd2l0Y2gtdG8tZG9jdW1lbnQtYW5kLWFkZC1kYXRhLXNlcnZlci1kcy11aScsXG5cbiAgICAvLyBcbiAgICBBZGREcmlsbFBhdGhVSSA9ICdhZGQtZHJpbGxwYXRoLXVpJyxcblxuICAgIC8vIFxuICAgIEFkZEZpZWxkRm9sZGVyVUkgPSAnYWRkLWZpZWxkLWZvbGRlci11aScsXG5cbiAgICAvLyBcbiAgICBBZGRGaWxlVG9FeHRyYWN0VUkgPSAnYWRkLWZpbGUtdG8tZXh0cmFjdC11aScsXG5cbiAgICAvLyBcbiAgICBBZGREYXRhU291cmNlVG9FeHRyYWN0VUkgPSAnYWRkLWRhdGEtc291cmNlLXRvLWV4dHJhY3QtdWknLFxuXG4gICAgLy8gXG4gICAgQWRkUUNUb1NoZWV0VUkgPSAnYWRkLXFjLXRvLXNoZWV0LXVpJyxcblxuICAgIC8vIFxuICAgIEFkZFJlZmVyZW5jZUxpbmVVSSA9ICdhZGQtcmVmZXJlbmNlLWxpbmUtdWknLFxuXG4gICAgLy8gXG4gICAgQWRkU2NoZW1hRmllbGRGb2xkZXJVSSA9ICdhZGQtdG8tc2NoZW1hLWZpZWxkLWZvbGRlci11aScsXG5cbiAgICAvLyBcbiAgICBBZGRUYWJsZWF1U2VydmVyRFNDb25uZWN0aW9uVUkgPSAnYWRkLXRhYmxlYXUtc2VydmVyLWRzLWNvbm5lY3Rpb24tdWknLFxuXG4gICAgLy8gXG4gICAgQWRkVG9TY2hlbWFEcmlsbFBhdGhVSSA9ICdhZGQtdG8tc2NoZW1hLWRyaWxscGF0aC11aScsXG5cbiAgICAvLyBcbiAgICBBZGRUb1NoZWV0VUkgPSAnYWRkLXRvLXNoZWV0LXVpJyxcblxuICAgIC8vIFxuICAgIEFubm90YXRlVUkgPSAnYW5ub3RhdGUtdWknLFxuXG4gICAgLy8gXG4gICAgQXBwZW5kRGF0YVNvdXJjZVRvUmVtb3RlRXh0cmFjdFVJID0gJ2FwcGVuZC1kYXRhLXNvdXJjZS10by1yZW1vdGUtZXh0cmFjdC11aScsXG5cbiAgICAvLyBcbiAgICBBdHRlbXB0Q29ubmVjdERhdGFTb3VyY2VzT25TaGVldFVJID0gJ2F0dGVtcHQtY29ubmVjdC1kYXRhc291cmNlcy1vbi1zaGVldC11aScsXG5cbiAgICAvLyBcbiAgICBBdHRlbXB0RGF0YVNvdXJjZUNvbm5lY3Rpb25VSSA9ICdhdHRlbXB0LWRhdGFzb3VyY2UtY29ubmVjdC11aScsXG5cbiAgICAvLyBcbiAgICBBdXRvSGlkZVNoZWV0ID0gJ2F1dG8taGlkZS1zaGVldCcsXG5cbiAgICAvLyBcbiAgICBBdXRvbWF0aW9uQ2xpY2tNUlVJdGVtID0gJ2NsaWNrLW1ydS1pdGVtJyxcblxuICAgIC8vIFxuICAgIENhbGN1bGF0ZWRNZW1iZXJzVUkgPSAnY2FsY3VsYXRlZC1tZW1iZXJzLXVpJyxcblxuICAgIC8vIFxuICAgIENoYW5nZUFnZ3JlZ2F0aW9uVUkgPSAnY2hhbmdlLWFnZ3JlZ2F0aW9uLXVpJyxcblxuICAgIC8vIFxuICAgIENoYW5nZURhdGFTZXJ2ZXJMb2dvblVJID0gJ2NoYW5nZS1kYXRhLXNlcnZlci1sb2dvbi11aScsXG5cbiAgICAvLyBcbiAgICBDaGFuZ2VFc3NiYXNlQWxpYXNGaWxlID0gJ2NoYW5nZS1lc3NiYXNlLWFsaWFzLWZpbGUnLFxuXG4gICAgLy8gXG4gICAgQ2hhbmdlRmllbGRUeXBlVUkgPSAnY2hhbmdlLWZpZWxkLXR5cGUtdWknLFxuXG4gICAgLy8gXG4gICAgQ2hhbmdlVGFiQ29sb3JTaGVldCA9ICdjaGFuZ2UtdGFiLWNvbG9yLXNoZWV0JyxcblxuICAgIC8vIFxuICAgIENoZWNrRm9yUHJvZHVjdFVwZGF0ZXMgPSAnY2hlY2stZm9yLXByb2R1Y3QtdXBkYXRlcycsXG5cbiAgICAvLyBcbiAgICBDbGVhckRhc2hib2FyZFVJID0gJ2NsZWFyLWRhc2hib2FyZC11aScsXG5cbiAgICAvLyBcbiAgICBDbGVhclNoZWV0VUkgPSAnY2xlYXItc2hlZXQtdWknLFxuXG4gICAgLy8gXG4gICAgQ2xlYXJTdG9yeVVJID0gJ2NsZWFyLXN0b3J5LXVpJyxcblxuICAgIC8vIFxuICAgIENsZWFyVml6VUkgPSAnY2xlYXItdml6LXVpJyxcblxuICAgIC8vIFxuICAgIENsb3NlQ2FsY3VsYXRpb25VSSA9ICdjbG9zZS1jYWxjdWxhdGlvbi11aScsXG5cbiAgICAvLyBcbiAgICBDbG9zZURhdGFTb3VyY2VVSSA9ICdjbG9zZS1kYXRhc291cmNlLXVpJyxcblxuICAgIC8vIFxuICAgIENsb3NlV29ya2Jvb2sgPSAnY2xvc2Utd29ya2Jvb2snLFxuXG4gICAgLy8gXG4gICAgQ29sb3JMZWdlbmRFZGl0VUkgPSAnY29sb3ItbGVnZW5kLWVkaXQtdWknLFxuXG4gICAgLy8gXG4gICAgQ29tbWl0UGlsbEVkaXRVSSA9ICdjb21taXQtcGlsbC1lZGl0LXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3REYXRhU291cmNlVUkgPSAnY29ubmVjdC1kYXRhc291cmNlLXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3RSZXByb21wdFVJID0gJ2Nvbm5lY3QtcmVwcm9tcHQtdWknLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdFZhcmlhYmxlUHJvbXB0VUkgPSAnY29ubmVjdC12YXJpYWJsZS1wcm9tcHQtdWknLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdFZhcmlhYmxlUHJvbXB0TWF0Y2hpbmdVSSA9ICdjb25uZWN0LXZhcmlhYmxlLXByb21wdC1tYXRjaGluZy11aScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uQWRkTmV3Q3VzdG9tU1FMVUkgPSAnY29ubmVjdGlvbi1hZGQtbmV3LWN1c3RvbS1zcWwtdWknLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkFkZE5ld1RhYmxlVUkgPSAnY29ubmVjdGlvbi1hZGQtbmV3LXRhYmxlLXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25EYXRhR3JpZENvcHlVSSA9ICdjb25uZWN0aW9uLWRhdGEtZ3JpZC1jb3B5LXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25FZGl0Q3VzdG9tU1FMVUkgPSAnY29ubmVjdGlvbi1jdXN0b20tc3FsLXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25FZGl0RXh0cmFjdFVJID0gJ2Nvbm5lY3Rpb24tZXh0cmFjdC11aScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uRWRpdERCVmFyaWFibGVzVUkgPSAnY29ubmVjdGlvbi1lZGl0LWRiLXZhcmlhYmxlcy11aScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uRWRpdENvbm5lY3Rpb25VSSA9ICdjb25uZWN0aW9uLWVkaXQtY29ubmVjdGlvbi11aScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uRmluYWxpemVEYXRhU291cmNlVUkgPSAnY29ubmVjdGlvbi1maW5hbGl6ZS1kYXRhc291cmNlLXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25GaW5hbGl6ZUV4dHJhY3RTdGF0ZXNVSSA9ICdjb25uZWN0aW9uLWZpbmFsaXplLWV4dHJhY3Qtc3RhdGVzLXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25HZXRUeXBlR3JvdXBQcmVzTW9kZWxVSSA9ICdjb25uZWN0aW9uLWdldC10eXBlLWdyb3VwLXByZXMtbW9kZWwtdWknLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkdldFNhdmVkRGF0YVNvdXJjZXNQcmVzTW9kZWxVSSA9ICdjb25uZWN0aW9uLWdldC1zYXZlZC1kcy1wcmVzLW1vZGVsLXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25QYXJ0aXRpb25pbmdGYWlsdXJlVUkgPSAnY29ubmVjdGlvbi1wYXJ0aXRpb25pbmctZmFpbHVyZS11aScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uUmVwbGFjZVRhYmxlVUkgPSAnY29ubmVjdGlvbi1yZXBsYWNlLXRhYmxlLXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25TZWFyY2hDYXRhbG9nVUkgPSAnY29ubmVjdGlvbi1zZWFyY2gtY2F0YWxvZy11aScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uU2VhcmNoQ3ViZVVJID0gJ2Nvbm5lY3Rpb24tc2VhcmNoLWN1YmUtdWknLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvblNlbGVjdENhdGFsb2dVSSA9ICdjb25uZWN0aW9uLXNlbGVjdC1jYXRhbG9nLXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25TZWxlY3RDdWJlVUkgPSAnY29ubmVjdGlvbi1zZWxlY3QtY3ViZS11aScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uU2VsZWN0RGF0YWJhc2VVSSA9ICdjb25uZWN0aW9uLXNlbGVjdC1kYXRhYmFzZS11aScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uU2VsZWN0U3RhbmRhcmRDb25uZWN0aW9uVUkgPSAnY29ubmVjdGlvbi1zZWxlY3Qtc3RhbmRhcmQtY29ubmVjdGlvbi11aScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uU2VsZWN0U3RvcmVkUHJvY2VkdXJlVUkgPSAnY29ubmVjdGlvbi1zZWxlY3Qtc3RvcmVkLXByb2NlZHVyZS11aScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uU2hvd0VkaXRUYWJsZURpYWxvZ1VJID0gJ2Nvbm5lY3Rpb24tc2hvdy1lZGl0LXRhYmxlLXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25TaG93UGl2b3REaWFsb2dVSSA9ICdjb25uZWNpdG9uLXNob3ctcGl2b3QtZGlhbG9nLXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25Tb3J0Q2F0YWxvZ1VJID0gJ2Nvbm5lY3Rpb24tc29ydC1jYXRhbG9nLXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25Tb3J0Q3ViZVVJID0gJ2Nvbm5lY3Rpb24tc29ydC1jdWJlLXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25WYWxpZGF0ZUN1c3RvbVNRTFVJID0gJ2Nvbm5lY3Rpb24tdmFsaWRhdGUtY3VzdG9tLXNxbC11aScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0VG9DbG91ZEZpbGUgPSAnY29ubmVjdC10by1jbG91ZC1maWxlJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3RUb0RhdGFTZXJ2ZXJTb3VyY2VVSSA9ICdjb25uZWN0LWRhdGEtc2VydmVyLWRhdGFzb3VyY2UtdWknLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkNvbnZlcnRUb1NRTFVJID0gJ2Nvbm5lY3Rpb24tY29udmVydC10by1zcWwtdWknLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvblJlbmFtZUNvbm5lY3Rpb25VSSA9ICdjb25uZWN0aW9uLXJlbmFtZS1jb25uZWN0aW9uLXVpJyxcblxuICAgIC8vIFxuICAgIEV4cG9ydFVuZGVybHlpbmdEYXRhVG9DU1ZVSSA9ICdleHBvcnQtdG8tY3N2LXdpdGgtcHJvZ3Jlc3MtdWknLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdE9EQkNVSSA9ICdjb25uZWN0LW9kYmMtdWknLFxuXG4gICAgLy8gXG4gICAgQ29weUNyb3NzdGFiID0gJ2NvcHktY3Jvc3N0YWInLFxuXG4gICAgLy8gXG4gICAgQ29weURhdGEgPSAnY29weS1kYXRhJyxcblxuICAgIC8vIFxuICAgIENvcHlEcmlsbFBhdGhGaWVsZHNVSSA9ICdjb3B5LWRyaWxsLXBhdGgtZmllbGRzLXVpJyxcblxuICAgIC8vIFxuICAgIENvcHlGaWVsZHNEZWZuVUkgPSAnY29weS1maWVsZHMtZGVmbi11aScsXG5cbiAgICAvLyBcbiAgICBDb3B5SW1hZ2UgPSAnY29weS1pbWFnZScsXG5cbiAgICAvLyBcbiAgICBDb3B5SW1hZ2VEYXNoYm9hcmQgPSAnY29weS1pbWFnZS1kYXNoYm9hcmQnLFxuXG4gICAgLy8gXG4gICAgQ29weUltYWdlV29ya3NoZWV0ID0gJ2NvcHktaW1hZ2Utd29ya3NoZWV0JyxcblxuICAgIC8vIFxuICAgIENvcHlJbWFnZVN0b3J5ID0gJ2NvcHktaW1hZ2Utc3RvcnknLFxuXG4gICAgLy8gXG4gICAgQ29weVdvcmtzaGVldEZvcm1hdHRpbmcgPSAnY29weS1mb3JtYXR0aW5nJyxcblxuICAgIC8vIFxuICAgIENyZWF0ZUNhbGN1bGF0ZWRTZXRVSSA9ICdjcmVhdGUtY2FsY3VsYXRlZC1zZXQtdWknLFxuXG4gICAgLy8gXG4gICAgQ3JlYXRlQ2FsY3VsYXRpb25VSSA9ICdjcmVhdGUtY2FsY3VsYXRpb24tdWknLFxuXG4gICAgLy8gXG4gICAgQ3JlYXRlQ29tYmluZWRGaWVsZFVJID0gJ2NyZWF0ZS1jb21iaW5lZC1maWVsZC11aScsXG5cbiAgICAvLyBcbiAgICBDcmVhdGVDb25uZWN0aW9uVUkgPSAnY3JlYXRlLWNvbm5lY3Rpb24tdWknLFxuXG4gICAgLy8gXG4gICAgQ3JlYXRlRGF0ZUJpblVJID0gJ2NyZWF0ZS1EYXRlLWJpbi11aScsXG5cbiAgICAvLyBcbiAgICBDcmVhdGVHcm91cFNlbGVjdGlvblVJID0gJ2NyZWF0ZS1ncm91cC1zZWxlY3Rpb24tdWknLFxuXG4gICAgLy8gXG4gICAgQ3JlYXRlR3JvdXBVSSA9ICdjcmVhdGUtZ3JvdXAtdWknLFxuXG4gICAgLy8gXG4gICAgQ3JlYXRlSWRlbnRpdHlTZXQgPSAnY3JlYXRlLXVzZXItZmlsdGVyJyxcblxuICAgIC8vIFxuICAgIENyZWF0ZUxlYWZDb25uZWN0aW9uVUkgPSAnY3JlYXRlLWxlYWYtY29ubmVjdGlvbi11aScsXG5cbiAgICAvLyBcbiAgICBDcmVhdGVOdW1lcmljQmluc1VJID0gJ2NyZWF0ZS1udW1lcmljLWJpbnMtdWknLFxuXG4gICAgLy8gXG4gICAgQ3JlYXRlU2V0VUkgPSAnY3JlYXRlLXNldC11aScsXG5cbiAgICAvLyBcbiAgICBDdXN0b21EYXRlQWdncmVnYXRpb25VSSA9ICdjdXN0b20tZGF0ZS1hZ2dyZWdhdGlvbi11aScsXG5cbiAgICAvLyBcbiAgICBDdXREcmlsbFBhdGhGaWVsZHNVSSA9ICdjdXQtZHJpbGwtcGF0aC1maWVsZHMtdWknLFxuXG4gICAgLy8gXG4gICAgQ3V0RmllbGRzRGVmblVJID0gJ2N1dC1maWVsZHMtZGVmbi11aScsXG5cbiAgICAvLyBcbiAgICBEZWFjdGl2YXRlRGFzaGJvYXJkID0gJ2RlYWN0aXZhdGUtZGFzaGJvYXJkJyxcblxuICAgIC8vIFxuICAgIERlbGV0ZUNvb2tpZXMgPSAnZGVsZXRlLWNvb2tpZXMnLFxuXG4gICAgLy8gXG4gICAgRGVsZXRlRmllbGRzVUkgPSAnZGVsZXRlLWZpZWxkcy11aScsXG5cbiAgICAvLyBcbiAgICBEZWxldGVTaGVldFVJID0gJ2RlbGV0ZS1zaGVldC11aScsXG5cbiAgICAvLyBcbiAgICBEZXNjcmliZUFkaG9jQ2x1c3RlclVJID0gJ2Rlc2NyaWJlLWFkaG9jLWNsdXN0ZXItdWknLFxuXG4gICAgLy8gXG4gICAgRGVzY3JpYmVEcmlsbFBhdGhVSSA9ICdkZXNjcmliZS1kcmlsbHBhdGgtdWknLFxuXG4gICAgLy8gXG4gICAgRGVzY3JpYmVGaWVsZFVJID0gJ2Rlc2NyaWJlLWZpZWxkLXVpJyxcblxuICAgIC8vIFxuICAgIERlc2NyaWJlRm9yZWNhc3RVSSA9ICdkZXNjcmliZS1mb3JlY2FzdC11aScsXG5cbiAgICAvLyBcbiAgICBEZXNjcmliZVNjaGVtYURyaWxsUGF0aFVJID0gJ2Rlc2NyaWJlLXNjaGVtYS1kcmlsbHBhdGgtdWknLFxuXG4gICAgLy8gXG4gICAgRGVzY3JpYmVUcmVuZExpbmUgPSAnZGVzY3JpYmUtdHJlbmQtbGluZScsXG5cbiAgICAvLyBcbiAgICBEZXNjcmliZVRyZW5kTW9kZWwgPSAnZGVzY3JpYmUtdHJlbmQtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgT3BlbkRpc2NvdmVyUGFuZUxpbmtzID0gJ29wZW4tZGlzY292ZXItcGFuZS1saW5rcycsXG5cbiAgICAvLyBcbiAgICBEaXNtaXNzR29Ub1dvcmtzaGVldFRvb2x0aXBVSSA9ICdkaXNtaXNzLWdvLXRvLXdvcmtzaGVldC10b29sdGlwLXVpJyxcblxuICAgIC8vIFxuICAgIERvd25sb2FkQ29weURhdGFTb3VyY2UgPSAnZG93bmxvYWQtY29weS1kYXRhLXNvdXJjZScsXG5cbiAgICAvLyBcbiAgICBEcmlsbGRvd25VSSA9ICdkcmlsbGRvd24tdWknLFxuXG4gICAgLy8gXG4gICAgRHJvcFNjaGVtYVNlbE9uU2hlbGZVSSA9ICdkcm9wLXNjaGVtYS1zZWwtb24tc2hlbGYtdWknLFxuXG4gICAgLy8gXG4gICAgRHJvcFVJID0gJ2Ryb3AtdWknLFxuXG4gICAgLy8gXG4gICAgRHVwbGljYXRlRGF0YVNvdXJjZVVJID0gJ2R1cGxpY2F0ZS1kYXRhc291cmNlLXVpJyxcblxuICAgIC8vIFxuICAgIER1cGxpY2F0ZVNoZWV0QXNDcm9zc3RhYiA9ICdkdXBsaWNhdGUtc2hlZXQtYXMtY3Jvc3N0YWInLFxuXG4gICAgLy8gXG4gICAgRHVwbGljYXRlU2hlZXRPckNyb3NzdGFiVUkgPSAnZHVwbGljYXRlLXNoZWV0LW9yLWNyb3NzdGFiLXVpJyxcblxuICAgIC8vIFxuICAgIER1cGxpY2F0ZVNoZWV0VUkgPSAnZHVwbGljYXRlLXNoZWV0LXVpJyxcblxuICAgIC8vIFxuICAgIEVkaXRBbGlhc2VzVUkgPSAnZWRpdC1hbGlhc2VzLXVpJyxcblxuICAgIC8vIFxuICAgIEVkaXRBbm5vdGF0aW9uID0gJ2VkaXQtYW5ub3RhdGlvbicsXG5cbiAgICAvLyBcbiAgICBFZGl0QXhpc1VJID0gJ2VkaXQtYXhpcy11aScsXG5cbiAgICAvLyBcbiAgICBFZGl0Q2FsY3VsYXRlZFNldFVJID0gJ2VkaXQtY2FsY3VsYXRlZC1zZXQtdWknLFxuXG4gICAgLy8gXG4gICAgRWRpdENhbGN1bGF0aW9uVUkgPSAnZWRpdC1jYWxjdWxhdGlvbi11aScsXG5cbiAgICAvLyBcbiAgICBFZGl0Q2FwdGlvblVJID0gJ2VkaXQtY2FwdGlvbicsXG5cbiAgICAvLyBcbiAgICBFZGl0Q29tYmluZWRGaWVsZFVJID0gJ2VkaXQtY29tYmluZWQtZmllbGQnLFxuXG4gICAgLy8gXG4gICAgRWRpdENvcHlGaWVsZFVJID0gJ2VkaXQtY29weS1maWVsZC11aScsXG5cbiAgICAvLyBcbiAgICBFZGl0RGF0YVNvdXJjZVVJID0gJ2VkaXQtZGF0YXNvdXJjZS11aScsXG5cbiAgICAvLyBcbiAgICBFZGl0RGF0YVNvdXJjZUZpZWxkQWxpYXNlcyA9ICdlZGl0LWRhdGFzb3VyY2UtZmllbGQtYWxpYXNlcycsXG5cbiAgICAvLyBcbiAgICBFZGl0RGF0YVNvdXJjZUZpbHRlcnNVSSA9ICdlZGl0LWRhdGFzb3VyY2UtZmlsdGVycy11aScsXG5cbiAgICAvLyBcbiAgICBFZGl0RGF0YVNvdXJjZVNpdGVQYXRoc1VJID0gJ2VkaXQtZGF0YXNvdXJjZS1zaXRlLXBhdGhzLXVpJyxcblxuICAgIC8vIFxuICAgIEVkaXREYXRlQmluVUkgPSAnZWRpdC1kYXRlLWJpbi11aScsXG5cbiAgICAvLyBcbiAgICBFZGl0RGVmYXVsdFNvcnRVSSA9ICdlZGl0LWRlZmF1bHQtc29ydC11aScsXG5cbiAgICAvLyBcbiAgICBFZGl0RHJvcExpbmVzVUkgPSAnZWRpdC1kcm9wLWxpbmVzLXVpJyxcblxuICAgIC8vIFxuICAgIEVkaXREcm9wRmllbGRVSSA9ICdlZGl0LWRyb3AtZmllbGQtdWknLFxuXG4gICAgLy8gXG4gICAgRWRpdERhdGFTb3VyY2VSZWxhdGlvbnNoaXBzVUkgPSAnZWRpdC1kYXRhc291cmNlLXJlbGF0aW9uc2hpcHMtdWknLFxuXG4gICAgLy8gXG4gICAgRWRpdEVudW1lcmF0ZWRTZXRVSSA9ICdlZGl0LWVudW1lcmF0ZWQtc2V0JyxcblxuICAgIC8vIFxuICAgIEVkaXRGaWx0ZXJRdWlja0ZpbHRlciA9ICdlZGl0LWZpbHRlci1xdWljay1maWx0ZXInLFxuXG4gICAgLy8gXG4gICAgRWRpdEZpbHRlclVJID0gJ2VkaXQtZmlsdGVyLXVpJyxcblxuICAgIC8vIFxuICAgIEVkaXRGb3JlY2FzdFVJID0gJ2VkaXQtZm9yZWNhc3QtdWknLFxuXG4gICAgLy8gXG4gICAgRWRpdEdyb3VwVUkgPSAnZWRpdC1ncm91cC11aScsXG5cbiAgICAvLyBcbiAgICBFZGl0R3JvdXBWYWx1ZSA9ICdlZGl0LWdyb3VwLXZhbHVlJyxcblxuICAgIC8vIFxuICAgIEVkaXRHcm91cFZhbHVlTGFiZWwgPSAnZWRpdC1ncm91cC12YWx1ZS1sYWJlbCcsXG5cbiAgICAvLyBcbiAgICBFZGl0TGVnZW5kR3JvdXBWYWx1ZVVJID0gJ2VkaXQtZ3JvdXAtdmFsdWUtbGVnZW5kJyxcblxuICAgIC8vIFxuICAgIEVkaXRJbWFnZVVJID0gJ2VkaXQtaW1hZ2UtdWknLFxuXG4gICAgLy8gXG4gICAgRWRpdExlZ2VuZE1lbWJlckFsaWFzVUkgPSAnZWRpdC1sZWdlbmQtbWVtYmVyLWFsaWFzLXVpJyxcblxuICAgIC8vIFxuICAgIEVkaXRMZWdlbmRUaXRsZVVJID0gJ2VkaXQtbGVnZW5kLXRpdGxlLXVpJyxcblxuICAgIC8vIFxuICAgIEVkaXRNYXJrQ29sb3JVSSA9ICdlZGl0LW1hcmstY29sb3ItdWknLFxuXG4gICAgLy8gXG4gICAgRWRpdE1hcmtTaGFwZVVJID0gJ2VkaXQtbWFyay1zaGFwZS11aScsXG5cbiAgICAvLyBcbiAgICBFZGl0TWVtYmVyQWxpYXMgPSAnZWRpdC1tZW1iZXItYWxpYXMnLFxuXG4gICAgLy8gXG4gICAgRWRpdE1lbWJlckFsaWFzTGFiZWwgPSAnZWRpdC1tZW1iZXItYWxpYXMtbGFiZWwnLFxuXG4gICAgLy8gXG4gICAgRWRpdFBhZ2VUaXRsZVVJID0gJ2VkaXQtcGFnZS10aXRsZS11aScsXG5cbiAgICAvLyBcbiAgICBFZGl0UGFyYW1ldGVyQ3RybFRpdGxlID0gJ2VkaXQtcGFyYW0tY29udHJvbC10aXRsZScsXG5cbiAgICAvLyBcbiAgICBFZGl0UGRmUGFnZVNlbGVjdGlvblVJID0gJ2VkaXQtcGRmLXBhZ2Utc2VsZWN0aW9uLXVpJyxcblxuICAgIC8vIFxuICAgIEVkaXRQcmltYXJ5QWxpYXNlc1VJID0gJ2VkaXQtcHJpbWFyeS1hbGlhc2VzLXVpJyxcblxuICAgIC8vIFxuICAgIEVkaXRSZWZlcmVuY2VMaW5lID0gJ2VkaXQtcmVmZXJlbmNlLWxpbmUnLFxuXG4gICAgLy8gXG4gICAgRWRpdFNjaGVtYUNhbGN1bGF0aW9uVUkgPSAnZWRpdC1zY2hlbWEtY2FsY3VsYXRpb24tdWknLFxuXG4gICAgLy8gXG4gICAgRWRpdFNjaGVtYUNhbGN1bGF0aW9uUmFuZ2VVSSA9ICdlZGl0LXNjaGVtYS1jYWxjdWxhdGlvbi1yYW5nZS11aScsXG5cbiAgICAvLyBcbiAgICBFZGl0U2NoZW1hQ2FwdGlvblVJID0gJ2VkaXQtc2NoZW1hLWNhcHRpb24tdWknLFxuXG4gICAgLy8gXG4gICAgRWRpdFNjaGVtYUZpZWxkQWxpYXNVSSA9ICdlZGl0LXNjaGVtYS1maWVsZC1hbGlhcy11aScsXG5cbiAgICAvLyBcbiAgICBSZXNldFNjaGVtYUNhcHRpb25VSSA9ICdyZXNldC1zY2hlbWEtZmllbGQtYWxpYXMtdWknLFxuXG4gICAgLy8gXG4gICAgUmVzZXRNdWx0aXBsZVNjaGVtYUNhcHRpb25zVUkgPSAncmVzZXQtbXVsdGlwbGUtc2NoZW1hLWZpZWxkLWFsaWFzLXVpJyxcblxuICAgIC8vIFxuICAgIEVkaXRTY2hlbWFOdW1lcmljQmluc1VJID0gJ2VkaXQtc2NoZW1hLW51bWVyaWMtYmlucy11aScsXG5cbiAgICAvLyBcbiAgICBFZGl0U2V0VUkgPSAnZWRpdC1zZXQtdWknLFxuXG4gICAgLy8gXG4gICAgRWRpdFRpdGxlUXVpY2tGaWx0ZXIgPSAnZWRpdC10aXRsZS1xdWljay1maWx0ZXInLFxuXG4gICAgLy8gXG4gICAgRWRpdFRpdGxlVUkgPSAnZWRpdC10aXRsZScsXG5cbiAgICAvLyBcbiAgICBFZGl0VG9vbHRpcFVJID0gJ2VkaXQtdG9vbHRpcCcsXG5cbiAgICAvLyBcbiAgICBFZGl0VHJlbmRMaW5lc1VJID0gJ2VkaXQtdHJlbmQtbGluZXMtdWknLFxuXG4gICAgLy8gXG4gICAgRWRpdFVzZXJEZXNjcmlwdGlvblVJID0gJ2VkaXQtdXNlci1kZXNjcmlwdGlvbi11aScsXG5cbiAgICAvLyBcbiAgICBFZGl0V01TTWFwVGlsZVNlcnZlciA9ICdlZGl0LXdtcy1tYXAtdGlsZS1zZXJ2ZXInLFxuXG4gICAgLy8gXG4gICAgRWRpdFpvbmVQYXJhbSA9ICdlZGl0LXpvbmUtcGFyYW0nLFxuXG4gICAgLy8gXG4gICAgRWRpdFpvbmVVcmwgPSAnZWRpdC16b25lLXVybCcsXG5cbiAgICAvLyBcbiAgICBFc3RhYmxpc2hDb25uZWN0aW9uVUkgPSAnZXN0YWJsaXNoLWNvbm5lY3Rpb24tdWknLFxuXG4gICAgLy8gXG4gICAgRXN0YWJsaXNoVGFibGVhdVNlcnZlckNvbm5lY3Rpb25VSSA9ICdlc3RhYmxpc2gtdGFibGVhdS1zZXJ2ZXItY29ubmVjdGlvbi11aScsXG5cbiAgICAvLyBcbiAgICBFeGVjdXRlVUlBdXRvbWF0aW9uQnV0dG9uID0gJ2V4ZWN1dGUtdWktYnV0dG9uLWFjdGlvbicsXG5cbiAgICAvLyBcbiAgICBFeGVjdXRlVUlBdXRvbWF0aW9uQ29tYm9Cb3ggPSAnZXhlY3V0ZS11aS1jb21iby1ib3gtYWN0aW9uJyxcblxuICAgIC8vIFxuICAgIEV4ZWN1dGVVSUF1dG9tYXRpb25HZW5lcmljV2lkZ2V0ID0gJ2V4ZWN1dGUtdWktZ2VuZXJpYy13aWRnZXQtYWN0aW9uJyxcblxuICAgIC8vIFxuICAgIEV4ZWN1dGVVSUF1dG9tYXRpb25MYWJlbCA9ICdleGVjdXRlLXVpLWxhYmVsLWFjdGlvbicsXG5cbiAgICAvLyBcbiAgICBFeGVjdXRlVUlBdXRvbWF0aW9uTWVudSA9ICdleGVjdXRlLXVpLW1lbnUtYWN0aW9uJyxcblxuICAgIC8vIFxuICAgIEV4ZWN1dGVVSUF1dG9tYXRpb25JdGVtVmlldyA9ICdleGVjdXRlLXVpLWl0ZW0tdmlldy1hY3Rpb24nLFxuXG4gICAgLy8gXG4gICAgRXhlY3V0ZVVJQXV0b21hdGlvblRleHRCb3ggPSAnZXhlY3V0ZS11aS10ZXh0LWJveC1hY3Rpb24nLFxuXG4gICAgLy8gXG4gICAgRXhlY3V0ZVVJQXV0b21hdGlvblRvZ2dsZUJ1dHRvbiA9ICdleGVjdXRlLXVpLXRvZ2dsZS1idXR0b24tYWN0aW9uJyxcblxuICAgIC8vIFxuICAgIEV4ZWN1dGVVSUF1dG9tYXRpb25TbGlkZXIgPSAnZXhlY3V0ZS11aS1zbGlkZXItYWN0aW9uJyxcblxuICAgIC8vIFxuICAgIEV4ZWN1dGVVSUF1dG9tYXRpb25XaW5kb3cgPSAnZXhlY3V0ZS11aS13aW5kb3ctYWN0aW9uJyxcblxuICAgIC8vIFxuICAgIEV4ZWN1dGVVSUF1dG9tYXRpb25XZWJWaWV3ID0gJ2V4ZWN1dGUtdWktd2ViLXZpZXctYWN0aW9uJyxcblxuICAgIC8vIFxuICAgIEV4ZWN1dGVVSUF1dG9tYXRpb25UYWIgPSAnZXhlY3V0ZS11aS10YWItYWN0aW9uJyxcblxuICAgIC8vIFxuICAgIEV4ZWN1dGVVSUF1dG9tYXRpb25UZXh0QnJvd3NlciA9ICdleGVjdXRlLXVpLXRleHQtYnJvd3Nlci1hY3Rpb24nLFxuXG4gICAgLy8gXG4gICAgRXhpdEFwcGxpY2F0aW9uID0gJ2V4aXQtYXBwbGljYXRpb24nLFxuXG4gICAgLy8gXG4gICAgRXhwb3J0RGF0YSA9ICdleHBvcnQtZGF0YScsXG5cbiAgICAvLyBcbiAgICBFeHBvcnREYXRhU291cmNlVUkgPSAnZXhwb3J0LWRhdGFzb3VyY2UtdWknLFxuXG4gICAgLy8gXG4gICAgRXhwb3J0UGFja2FnZWRXb3JrYm9vayA9ICdleHBvcnQtcGFja2FnZWQnLFxuXG4gICAgLy8gXG4gICAgRXhwb3J0V29ya2Jvb2tTaGVldHNVSSA9ICdleHBvcnQtd29ya2Jvb2stc2hlZXRzLXVpJyxcblxuICAgIC8vIFxuICAgIEV4dFN2Y0NvbmZpZ1VJID0gJ2V4dC1zdmMtY29uZmlnLXVpJyxcblxuICAgIC8vIFxuICAgIEV4dHJhY3RIaXN0b3J5ID0gJ2V4dHJhY3QtaGlzdG9yeScsXG5cbiAgICAvLyBcbiAgICBFeHRyYWN0UHJvcGVydGllc1VJID0gJ2V4dHJhY3QtcHJvcGVydGllcy11aScsXG5cbiAgICAvLyBcbiAgICBFeHRyYWN0VUkgPSAnZXh0cmFjdC11aScsXG5cbiAgICAvLyBcbiAgICBGaWx0ZXJGaWVsZExhYmVsVUkgPSAnZmlsdGVyLWZpZWxkLWxhYmVsLXVpJyxcblxuICAgIC8vIFxuICAgIEZvcm1hdEFubm90YXRpb24gPSAnZm9ybWF0LWFubm90YXRpb24nLFxuXG4gICAgLy8gXG4gICAgRm9ybWF0QXhpc1VJID0gJ2Zvcm1hdC1heGlzLXVpJyxcblxuICAgIC8vIFxuICAgIEZvcm1hdENhcHRpb25UaXRsZVVJID0gJ2Zvcm1hdC1jYXB0aW9uLXRpdGxlJyxcblxuICAgIC8vIFxuICAgIEZvcm1hdEZpZWxkID0gJ2Zvcm1hdC1wYW5lJyxcblxuICAgIC8vIFxuICAgIEZvcm1hdEZpZWxkTGFiZWxVSSA9ICdmb3JtYXQtZmllbGQtbGFiZWwtdWknLFxuXG4gICAgLy8gXG4gICAgRm9ybWF0TGFiZWwgPSAnZm9ybWF0LWxhYmVsJyxcblxuICAgIC8vIFxuICAgIEZvcm1hdExlZ2VuZHNVSSA9ICdmb3JtYXQtbGVnZW5kcy11aScsXG5cbiAgICAvLyBcbiAgICBGb3JtYXRSZWZlcmVuY2VMaW5lID0gJ2Zvcm1hdC1yZWZlcmVuY2UtbGluZScsXG5cbiAgICAvLyBcbiAgICBGb3JtYXRVSSA9ICdmb3JtYXQtdWknLFxuXG4gICAgLy8gXG4gICAgRnVsbFNjcmVlbiA9ICdmdWxsc2NyZWVuJyxcblxuICAgIC8vIFxuICAgIEdldERhc2hib2FyZFNpZGVQYW5lTW9kZSA9ICdnZXQtZGFzaGJvYXJkLXNpZGVwYW5lLW1vZGUnLFxuXG4gICAgLy8gXG4gICAgR2V0RGVidWdnaW5nSW5mbyA9ICdnZXQtZGVidWdnaW5nLWluZm8nLFxuXG4gICAgLy8gXG4gICAgR2V0SWNvblBhdGhGb3JFbmNvZGluZ1R5cGUgPSAnZ2V0LWljb24tcGF0aC1mb3ItZW5jb2RpbmctdHlwZScsXG5cbiAgICAvLyBcbiAgICBHZXRJY29uUGF0aEZvclByaW1pdGl2ZVR5cGUgPSAnZ2V0LWljb24tcGF0aC1mb3ItcHJpbWl0aXZlLXR5cGUnLFxuXG4gICAgLy8gXG4gICAgR2V0VGFibGVPcHRpb25zUHJlc01vZGVsID0gJ2dldC10YWJsZS1vcHRpb25zLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0V2luZG93TmFtZVVJID0gJ2dldC13aW5kb3ctbmFtZScsXG5cbiAgICAvLyBcbiAgICBHZXRXb3Jrc2hlZXRTaWRlUGFuZU1vZGUgPSAnZ2V0LXdvcmtzaGVldC1zaWRlcGFuZS1tb2RlJyxcblxuICAgIC8vIFxuICAgIEdldEhpZGRlblNoZWV0cyA9ICdnZXQtaGlkZGVuLXNoZWV0cycsXG5cbiAgICAvLyBcbiAgICBHZXRPcGVuUGFuZU1SVXMgPSAnZ2V0LW9wZW4tcGFuZS1tcnVzJyxcblxuICAgIC8vIFxuICAgIEdldE9wZW5QYW5lU2FtcGxlV29ya2Jvb2tzID0gJ2dldC1vcGVuLXBhbmUtc2FtcGxlLXdvcmtib29rcycsXG5cbiAgICAvLyBcbiAgICBHZXRSZXRhcmdldERhdGFTb3VyY2VQcmVzTW9kZWxVSSA9ICdnZXQtcmV0YXJnZXQtZGF0YXNvdXJjZS1wcmVzLW1vZGVsLXVpJyxcblxuICAgIC8vIFxuICAgIEdldFNjaGVtYVZpZXdlclByZXNNb2RlbCA9ICdnZXQtc2NoZW1hLXZpZXdlci1wcmVzLW1vZGVsJyxcblxuICAgIC8vIFxuICAgIEdldFNlbGVjdGVkU2hlZXRzID0gJ2dldC1zZWxlY3RlZC1zaGVldHMnLFxuXG4gICAgLy8gXG4gICAgR2V0U2hlZXRTb3J0ZXJUaHVtYm5haWwgPSAnZ2V0LXNoZWV0LXNvcnRlci10aHVtYm5haWwnLFxuXG4gICAgLy8gXG4gICAgR2V0U2hlZXRUYWJVSVRodW1ibmFpbCA9ICdnZXQtc2hlZXQtdGFiLXVpLXRodW1ibmFpbCcsXG5cbiAgICAvLyBcbiAgICBHZXRTaGVldFRhYlVJVGV4dCA9ICdnZXQtc2hlZXQtdGFiLXVpLXRleHQnLFxuXG4gICAgLy8gXG4gICAgR2V0VmlzaWJsZVRyZWVJdGVtcyA9ICdnZXQtdmlzaWJsZS10cmVlLWl0ZW1zJyxcblxuICAgIC8vIFxuICAgIEdvdG9TaGVldFJhbmdlID0gJ2dvdG8nLFxuXG4gICAgLy8gXG4gICAgR290b1VSTCA9ICdnb3RvLXVybCcsXG5cbiAgICAvLyBcbiAgICBIaWRlQ2FwdGlvblVJID0gJ2hpZGUtY2FwdGlvbicsXG5cbiAgICAvLyBcbiAgICBIaWRlRmlsbXN0cmlwVUkgPSAnaGlkZS1maWxtc3RyaXAtdWknLFxuXG4gICAgLy8gXG4gICAgSGlkZVRpdGxlVUkgPSAnaGlkZS10aXRsZScsXG5cbiAgICAvLyBcbiAgICBIaWRlWm9uZVVJID0gJ2hpZGUtem9uZS11aScsXG5cbiAgICAvLyBcbiAgICBIaWRlQWxsU2hlZXRzVUkgPSAnaGlkZS1hbGwtc2hlZXRzLXVpJyxcblxuICAgIC8vIFxuICAgIFVuaGlkZUFsbFNoZWV0c1VJID0gJ3VuaGlkZS1hbGwtc2hlZXRzLXVpJyxcblxuICAgIC8vIFxuICAgIEltcG9ydExvY2FsRGF0YVVJID0gJ2ltcG9ydC1sb2NhbC1kYXRhLXVpJyxcblxuICAgIC8vIFxuICAgIEltcG9ydE1hcFNvdXJjZSA9ICdpbXBvcnQtbWFwLXNvdXJjZScsXG5cbiAgICAvLyBcbiAgICBJbXBvcnRNYXBTb3VyY2VVSSA9ICdpbXBvcnQtbWFwLXNvdXJjZS11aScsXG5cbiAgICAvLyBcbiAgICBJbXBvcnRXb3JrYm9va1VJID0gJ2ltcG9ydC13b3JrYm9vay11aScsXG5cbiAgICAvLyBcbiAgICBMb2FkRGVmYXVsdEZvcm1hdHRpbmdVSSA9ICdsb2FkLWZvcm1hdHRpbmctdWknLFxuXG4gICAgLy8gXG4gICAgTG9jYXRlRmllbGRVSSA9ICdsb2NhdGUtZmllbGQtdWknLFxuXG4gICAgLy8gXG4gICAgTG9nTWVtb3J5VXNhZ2UgPSAnbG9nLW1lbW9yeS11c2FnZScsXG5cbiAgICAvLyBcbiAgICBNYW5hZ2VMaWNlbnNpbmcgPSAnbWFuYWdlLWxpY2Vuc2luZycsXG5cbiAgICAvLyBcbiAgICBNYW5hZ2VNYXBib3ggPSAnbWFuYWdlLW1hcGJveCcsXG5cbiAgICAvLyBcbiAgICBNYW5hZ2VQdWJsaWNXb3JrYm9va3MgPSAnbWFuYWdlLXB1YmxpYycsXG5cbiAgICAvLyBcbiAgICBNYW5hZ2VNYXBTZXJ2aWNlcyA9ICdtYW5hZ2UtbWFwLXNlcnZpY2VzJyxcblxuICAgIC8vIFxuICAgIE1hcExheWVyc1VJID0gJ21hcC1sYXllcnMtdWknLFxuXG4gICAgLy8gXG4gICAgTWFuYWdlV01TID0gJ21hbmFnZS13bXMnLFxuXG4gICAgLy8gXG4gICAgVXBncmFkZURhdGFTb3VyY2VzVUkgPSAndXBncmFkZS1kYXRhc291cmNlcy11aScsXG5cbiAgICAvLyBcbiAgICBVcGdyYWRlRGF0YVNvdXJjZVVJID0gJ3VwZ3JhZGUtZGF0YXNvdXJjZS11aScsXG5cbiAgICAvLyBcbiAgICBNb3ZlUmVwb3NpdG9yeSA9ICdtb3ZlLXJlcG9zaXRvcnknLFxuXG4gICAgLy8gXG4gICAgTmV3U2NoZW1hRHJpbGxQYXRoVUkgPSAnbmV3LXNjaGVtYS1kcmlsbC1wYXRoLXVpJyxcblxuICAgIC8vIFxuICAgIE5ld1VJRGFzaGJvYXJkID0gJ25ldy1kYXNoYm9hcmQtdWknLFxuXG4gICAgLy8gXG4gICAgTmV3VUlXb3Jrc2hlZXQgPSAnbmV3LXdvcmtzaGVldC11aScsXG5cbiAgICAvLyBcbiAgICBOZXdVSVN0b3J5Ym9hcmQgPSAnbmV3LXN0b3J5Ym9hcmQtdWknLFxuXG4gICAgLy8gXG4gICAgTmV3V29ya2Jvb2sgPSAnbmV3LXdvcmtib29rJyxcblxuICAgIC8vIFxuICAgIE5leHRTaGVldCA9ICduZXh0LXNoZWV0JyxcblxuICAgIC8vIFxuICAgIE5vblJhbmdlZEVkaXRSZWZlcmVuY2VMaW5lID0gJ25vbi1yYW5nZWQtZWRpdC1yZWZlcmVuY2UtbGluZScsXG5cbiAgICAvLyBcbiAgICBPcGVuQm9va21hcmsgPSAnb3Blbi1ib29rbWFyaycsXG5cbiAgICAvLyBcbiAgICBPcGVuRnJvbVdvcmtncm91cCA9ICdvcGVuLXdvcmtib29rLWZyb20td29ya2dyb3VwJyxcblxuICAgIC8vIFxuICAgIE9wZW5NYXBTb3VyY2UgPSAnb3Blbi1tYXAtc291cmNlJyxcblxuICAgIC8vIFxuICAgIE9wZW5NYXBTb3VyY2VVSSA9ICdvcGVuLW1hcC1zb3VyY2UtdWknLFxuXG4gICAgLy8gXG4gICAgT3BlblNhbXBsZVdvcmtib29rID0gJ29wZW4tc2FtcGxlLXdvcmtib29rJyxcblxuICAgIC8vIFxuICAgIE9wZW5Xb3JrYm9vayA9ICdvcGVuLXdvcmtib29rJyxcblxuICAgIC8vIFxuICAgIE9wZW5SZWNlbnRXb3JrYm9vayA9ICdvcGVuLXJlY2VudC13b3JrYm9vaycsXG5cbiAgICAvLyBcbiAgICBPcGVuT3RoZXJGaWxlcyA9ICdvcGVuLW90aGVyLWZpbGVzJyxcblxuICAgIC8vIFxuICAgIE9wdGltaXplRXh0cmFjdFVJID0gJ29wdGltaXplLWV4dHJhY3QtdWknLFxuXG4gICAgLy8gXG4gICAgUGFnZVNldHVwID0gJ3BhZ2Utc2V0dXAnLFxuXG4gICAgLy8gXG4gICAgUGFzdGUgPSAncGFzdGUnLFxuXG4gICAgLy8gXG4gICAgUGFzdGVGaWVsZHNEZWZuVUkgPSAncGFzdGUtZmllbGRzLWRlZm4tdWknLFxuXG4gICAgLy8gXG4gICAgUGFzdGVXb3Jrc2hlZXRGb3JtYXR0aW5nID0gJ3Bhc3RlLWZvcm1hdHRpbmcnLFxuXG4gICAgLy8gXG4gICAgUERGRXhwb3J0ID0gJ2V4cG9ydC1wZGYnLFxuXG4gICAgLy8gXG4gICAgUGVyc3BlY3RpdmVzVUkgPSAncGVyc3BlY3RpdmVzLXVpJyxcblxuICAgIC8vIFxuICAgIFByZXNlbnRhdGlvbk1vZGUgPSAncHJlc2VudGF0aW9uLW1vZGUnLFxuXG4gICAgLy8gXG4gICAgUHJpbnQgPSAncHJpbnQnLFxuXG4gICAgLy8gXG4gICAgUHJvbXB0U2NyaXB0ID0gJ3Byb21wdC1jb21tYW5kJyxcblxuICAgIC8vIFxuICAgIFByb3BlcnRpZXNEYXRhU291cmNlVUkgPSAncHJvcGVydGllcy1kYXRhc291cmNlLXVpJyxcblxuICAgIC8vIFxuICAgIFB1Ymxpc2hEYXRhc291cmNlVG9Xb3JrZ3JvdXAgPSAncHVibGlzaC1kYXRhc291cmNlLXRvLXdvcmtncm91cCcsXG5cbiAgICAvLyBcbiAgICBQdWJsaXNoRGF0YXNvdXJjZVRvV29ya2dyb3VwRnJvbURhdGEgPSAncHVibGlzaC1kYXRhc291cmNlLXRvLXdvcmtncm91cC1mcm9tLWRhdGEnLFxuXG4gICAgLy8gXG4gICAgUHVibGlzaERhdGFzb3VyY2VUb1dvcmtncm91cFJhbmdlID0gJ3B1Ymxpc2gtZGF0YXNvdXJjZS10by13b3JrZ3JvdXAtcmFuZ2UnLFxuXG4gICAgLy8gXG4gICAgUHVibGlzaFdvcmtib29rVG9Xb3JrZ3JvdXAgPSAncHVibGlzaC13b3JrYm9vay10by13b3JrZ3JvdXAnLFxuXG4gICAgLy8gXG4gICAgUHVibGlzaERhdGFzb3VyY2VUb1dvcmtncm91cEZyb21Xb3JrYm9va0RhdGEgPSAncHVibGlzaC1kYXRhc291cmNlLXRvLXdvcmtncm91cC1mcm9tLXdvcmtib29rLWRhdGEnLFxuXG4gICAgLy8gXG4gICAgUHJvbXB0Rm9yRGF0YVNvdXJjZUZpbGVVSSA9ICdwcm9tcHQtZm9yLWRhdGFzb3VyY2UtZmlsZS11aScsXG5cbiAgICAvLyBcbiAgICBQcm9tcHRVbmtub3duV0RDVXJsVUkgPSAncHJvbXB0LXVua25vd24td2RjLXVybC11aScsXG5cbiAgICAvLyBcbiAgICBRdWVyeURhdGFTb3VyY2VVSSA9ICdxdWVyeS1kYXRhc291cmNlLXVpJyxcblxuICAgIC8vIFxuICAgIFF1aWNrRmlsdGVyRmllbGRMYWJlbFVJID0gJ3F1aWNrLWZpbHRlci1maWVsZC1sYWJlbC11aScsXG5cbiAgICAvLyBcbiAgICBRdWlja1RhYmxlQ2FsY1VJID0gJ3F1aWNrLXRhYmxlLWNhbGMtdWknLFxuXG4gICAgLy8gXG4gICAgUmVjb25uZWN0TWFwU291cmNlVUkgPSAncmVjb25uZWN0LW1hcC1zb3VyY2UtdWknLFxuXG4gICAgLy8gXG4gICAgUmVjb3JkUGVyZm9ybWFuY2UgPSAncmVjb3JkLXBlcmYnLFxuXG4gICAgLy8gXG4gICAgUmVmcmVzaEFsbEV4dHJhY3RzVUkgPSAncmVmcmVzaC1hbGwtZXh0cmFjdHMtdWknLFxuXG4gICAgLy8gXG4gICAgUmVmcmVzaEFsbFRodW1ibmFpbHNVSSA9ICdyZWZyZXNoLWFsbC10aHVtYm5haWxzJyxcblxuICAgIC8vIFxuICAgIFJlZnJlc2hBdXRvRXh0cmFjdFVJID0gJ3JlZnJlc2gtYXV0by1leHRyYWN0LXVpJyxcblxuICAgIC8vIFxuICAgIFJlZnJlc2hEYXRhU291cmNlVUkgPSAncmVmcmVzaC1kYXRhc291cmNlLXVpJyxcblxuICAgIC8vIFxuICAgIFJlZnJlc2hFeHRyYWN0VUkgPSAncmVmcmVzaC1leHRyYWN0LXVpJyxcblxuICAgIC8vIFxuICAgIFJlZnJlc2hGcm9tU291cmNlVUkgPSAncmVmcmVzaC1mcm9tLXNvdXJjZS11aScsXG5cbiAgICAvLyBcbiAgICBSZWZyZXNoTG9jYWxEYXRhVUkgPSAncmVmcmVzaC1sb2NhbC1kYXRhLXVpJyxcblxuICAgIC8vIFxuICAgIFJlZnJlc2hUaHVtYm5haWxVSSA9ICdyZWZyZXNoLXRodW1ibmFpbCcsXG5cbiAgICAvLyBcbiAgICBSZWxlYXNlTWVtb3J5ID0gJ3JlbGVhc2UtbWVtb3J5JyxcblxuICAgIC8vIFxuICAgIFJlbW92ZUFubm90YXRpb24gPSAncmVtb3ZlLWFubm90YXRpb24nLFxuXG4gICAgLy8gXG4gICAgUmVtb3ZlRXh0cmFjdFVJID0gJ3JlbW92ZS1leHRyYWN0LXVpJyxcblxuICAgIC8vIFxuICAgIFJlbW92ZU1SVUl0ZW0gPSAncmVtb3ZlLW1ydScsXG5cbiAgICAvLyBcbiAgICBSZW1vdmVTYXZlZERhdGFTb3VyY2VVSSA9ICdyZW1vdmUtc2F2ZWQtZGF0YXNvdXJjZScsXG5cbiAgICAvLyBcbiAgICBSZW1vdmVTaGVldEZyb21EYXNoYm9hcmRVSSA9ICdyZW1vdmUtc2hlZXQtZnJvbS1kYXNoYm9hcmQtdWknLFxuXG4gICAgLy8gXG4gICAgUmVtb3ZlVGFibGVVSSA9ICdyZW1vdmUtdGFibGUtdWknLFxuXG4gICAgLy8gXG4gICAgUmVuYW1lRGF0YVNvdXJjZVVJID0gJ3JlbmFtZS1kYXRhc291cmNlLXVpJyxcblxuICAgIC8vIFxuICAgIFJlbmFtZVNjaGVtYUZpZWxkRm9sZGVyVUkgPSAncmVuYW1lLWZpZWxkLWZvbGRlci11aScsXG5cbiAgICAvLyBcbiAgICBSZW5hbWVTY2hlbWFEcmlsbFBhdGhVSSA9ICdyZW5hbWUtc2NoZW1hLWRyaWxscGF0aC11aScsXG5cbiAgICAvLyBcbiAgICBSZW5hbWVTaGVldFVJID0gJ3JlbmFtZS1zaGVldC11aScsXG5cbiAgICAvLyBcbiAgICBSZW9yZGVyU2hlZXRzVUkgPSAncmVvcmRlci1zaGVldHMtdWknLFxuXG4gICAgLy8gXG4gICAgUmVwbGFjZURhdGFTb3VyY2VXaXRoRGF0YVNlcnZlckRhdGFTb3VyY2VVSSA9ICdyZXBsYWNlLWRhdGFzb3VyY2Utd2l0aC1kYXRhLXNlcnZlci1kYXRhc291cmNlLXVpJyxcblxuICAgIC8vIFxuICAgIFJlcGxhY2VGaWVsZFVJID0gJ3JlcGxhY2UtZmllbGQtdWknLFxuXG4gICAgLy8gXG4gICAgUmVzZXRDYXB0aW9uVUkgPSAncmVzZXQtY2FwdGlvbi11aScsXG5cbiAgICAvLyBcbiAgICBSZXNldENhcmRzID0gJ3Jlc2V0LWNhcmRzJyxcblxuICAgIC8vIFxuICAgIFJlc2V0TG9jYWxEYXRhVUkgPSAncmVtb3ZlLWxvY2FsLWRhdGEtdWknLFxuXG4gICAgLy8gXG4gICAgUmVzZXRNZXNzYWdlcyA9ICdyZXNldC1tZXNzYWdlcycsXG5cbiAgICAvLyBcbiAgICBTdGFydE9ubGluZVN5bmNDbGllbnQgPSAnc3RhcnQtb25saW5lLXN5bmMtY2xpZW50JyxcblxuICAgIC8vIFxuICAgIFJlc2V0VGl0bGVVSSA9ICdyZXNldC10aXRsZS11aScsXG5cbiAgICAvLyBcbiAgICBSZXNldFRvRGVmYXVsdHNNYXBDYXJkID0gJ3Jlc2V0LW1hcC10by1kZWZhdWx0cycsXG5cbiAgICAvLyBcbiAgICBSZXNldFdvcmtib29rID0gJ3JldmVydC13b3JrYm9vay11aScsXG5cbiAgICAvLyBcbiAgICBSZXRhcmdldERhdGFTb3VyY2UgPSAncmV0YXJnZXQtZGF0YXNvdXJjZScsXG5cbiAgICAvLyBcbiAgICBSZXRhcmdldERhdGFTb3VyY2VVSSA9ICdyZXRhcmdldC1kYXRhc291cmNlLXVpJyxcblxuICAgIC8vIFxuICAgIFNhdmVBc1dvcmtib29rID0gJ3NhdmUtYXMtd29ya2Jvb2snLFxuXG4gICAgLy8gXG4gICAgU2F2ZUJvb2ttYXJrID0gJ3NhdmUtYm9va21hcmsnLFxuXG4gICAgLy8gXG4gICAgU2F2ZURlYnVnZ2luZ1dvcmtib29rID0gJ3NhdmUtZGVidWdnaW5nLXdvcmtib29rJyxcblxuICAgIC8vIFxuICAgIFNhdmVEZWZhdWx0Rm9ybWF0dGluZ1VJID0gJ3NhdmUtZm9ybWF0dGluZy11aScsXG5cbiAgICAvLyBcbiAgICBTYXZlV29ya2Jvb2sgPSAnc2F2ZS13b3JrYm9vaycsXG5cbiAgICAvLyBcbiAgICBTY2hlbWFEZWZhdWx0TWVtYmVyVUkgPSAnc2NoZW1hLWRlZmF1bHQtbWVtYmVyLXVpJyxcblxuICAgIC8vIFxuICAgIFNjcm9sbFNoZWV0ID0gJ3Njcm9sbC1zaGVldCcsXG5cbiAgICAvLyBcbiAgICBTZXRBY2NvdW50c0RpbWVuc2lvbiA9ICdzZXQtYWNjb3VudHMtZGltZW5zaW9uJyxcblxuICAgIC8vIFxuICAgIFNldEFjdGl2ZUNvbm5lY3Rpb25VSSA9ICdzZXQtYWN0aXZlLWNvbm5lY3Rpb24tdWknLFxuXG4gICAgLy8gXG4gICAgU2V0QW5hbHl0aWNzRHJvcFRhcmdldFZpc2liaWxpdHkgPSAnc2V0LWFuYWx5dGljcy1kcm9wLXRhcmdldC12aXNpYmlsaXR5JyxcblxuICAgIC8vIFxuICAgIFNldERhc2hib2FyZFNpZGVQYW5lTW9kZSA9ICdzZXQtZGFzaGJvYXJkLXNpZGVwYW5lLW1vZGUnLFxuXG4gICAgLy8gXG4gICAgU2V0RGVmYXVsdERhdGVGb3JtYXRVSSA9ICdzZXQtZGVmYXVsdC1kYXRlLWZvcm1hdC11aScsXG5cbiAgICAvLyBcbiAgICBTZXREZWZhdWx0TG9jYXRpb25VSSA9ICdzZXQtZGVmYXVsdC1sb2NhdGlvbi11aScsXG5cbiAgICAvLyBcbiAgICBTZXREZWZhdWx0TWFwU291cmNlVUkgPSAnc2V0LWRlZmF1bHQtbWFwc291cmNlLXVpJyxcblxuICAgIC8vIFxuICAgIFNldERlZmF1bHRUZXh0Rm9ybWF0VUkgPSAnc2V0LWRlZmF1bHQtdGV4dC1mb3JtYXQtdWknLFxuXG4gICAgLy8gXG4gICAgU2V0RGVmYXVsdFV0aWxpdHlNZW1iZXIgPSAnc2V0LWRlZmF1bHQtdXRpbGl0eS1tZW1iZXInLFxuXG4gICAgLy8gXG4gICAgU2V0RnJlZUZvcm1EYXNoYm9hcmRVSSA9ICdzZXQtZnJlZS1mb3JtLWRhc2hib2FyZC11aScsXG5cbiAgICAvLyBcbiAgICBTZXRGaWx0ZXJTaGFyZWRVSSA9ICdzZXQtZmlsdGVyLXNoYXJlZC11aScsXG5cbiAgICAvLyBcbiAgICBTZXRLZXkgPSAnc2V0LWtleScsXG5cbiAgICAvLyBcbiAgICBTZXRQcm9kdWN0QXV0b1VwZGF0ZSA9ICdzZXQtYXV0by11cGRhdGUnLFxuXG4gICAgLy8gXG4gICAgU2V0UXVlcnlGYWlsdXJlID0gJ3NldC1xdWVyeS1mYWlsdXJlJyxcblxuICAgIC8vIFxuICAgIFNldFJlbmRlcmluZyA9ICdzZXQtcmVuZGVyaW5nJyxcblxuICAgIC8vIFxuICAgIFNldFJ1bnRpbWVJbW1lZGlhdGVNb2RlID0gJ3NldC1ydW50aW1lLWltbWVkaWF0ZS1tb2RlJyxcblxuICAgIC8vIFxuICAgIFNldFVJTGFuZ3VhZ2UgPSAnc2V0LXVpLWxhbmd1YWdlJyxcblxuICAgIC8vIFxuICAgIFNldFdvcmtib29rTG9jYWxlVUkgPSAnc2V0LXdvcmtib29rLWxvY2FsZS11aScsXG5cbiAgICAvLyBcbiAgICBTZXRXb3Jrc2hlZXRTaWRlUGFuZU1vZGUgPSAnc2V0LXdvcmtzaGVldC1zaWRlcGFuZS1tb2RlJyxcblxuICAgIC8vIFxuICAgIFNldFpvbmVGaXhlZFNpemVVSSA9ICdzZXQtem9uZS1maXhlZC1zaXplLXVpJyxcblxuICAgIC8vIFxuICAgIFNldHNJbk91dFVJID0gJ3Nob3ctaW4tb3V0LXNldHMnLFxuXG4gICAgLy8gXG4gICAgU2hhcGVMZWdlbmRFZGl0VUkgPSAnc2hhcGUtbGVnZW5kLWVkaXQtdWknLFxuXG4gICAgLy8gXG4gICAgU2hvd0Nsb3VkRmlsZU9BdXRoUHJvbXB0QW5kU2VsZWN0aW9uVUkgPSAnc2hvdy1jbG91ZGZpbGUtb2F1dGgtcHJvbXB0LWFuZC1zZWxlY3Rpb24tdWknLFxuXG4gICAgLy8gXG4gICAgU2hvd0Nvbm5lY3Rpb25BdXRoVUkgPSAnc2hvdy1jb25uZWN0aW9uLWF1dGgtdWknLFxuXG4gICAgLy8gXG4gICAgU2hvd0Nvbm5lY3Rpb25BdXRoQW5kRXN0YWJsaXNoQ29ubmVjdGlvblVJID0gJ3Nob3ctY29ubmVjdGlvbi1hdXRoLWFuZC1lc3RhYmxpc2gtY29ubmVjdGlvbi11aScsXG5cbiAgICAvLyBcbiAgICBTaG93Q29ubmVjdFRhYiA9ICdzaG93LWNvbm5lY3QtdGFiJyxcblxuICAgIC8vIFxuICAgIFNob3dDdXN0b21TcGxpdERpYWxvZ1VJID0gJ3Nob3ctY3VzdG9tLXNwbGl0LWRpYWxvZy11aScsXG5cbiAgICAvLyBcbiAgICBTaG93RG9jdW1lbnQgPSAnZG9jdW1lbnQnLFxuXG4gICAgLy8gXG4gICAgU2hvd0ZlYXR1cmVGbGFnRGlhbG9nID0gJ3Nob3ctZmVhdHVyZS1mbGFnLWRpYWxvZycsXG5cbiAgICAvLyBcbiAgICBTaG93RmllbGRGb3JtYXRVSSA9ICdzaG93LWZpZWxkLWZvcm1hdC11aScsXG5cbiAgICAvLyBcbiAgICBTaG93RmllbGRJblNjaGVtYVVJID0gJ3Nob3ctZmllbGQtaW4tc2NoZW1hJyxcblxuICAgIC8vIFxuICAgIFNob3dGaWxtc3RyaXBVSSA9ICdzaG93LWZpbG1zdHJpcC11aScsXG5cbiAgICAvLyBcbiAgICBTaG93R29vZ2xlU2hlZXRzU2VsZWN0aW9uVUkgPSAnc2hvdy1nb29nbGUtc2hlZXRzLXNlbGVjdGlvbi11aScsXG5cbiAgICAvLyBcbiAgICBTaG93SGVscCA9ICdzaG93LWhlbHAnLFxuXG4gICAgLy8gXG4gICAgU2hvd0hpZGVEYXNoYm9hcmRTaGVldFVJID0gJ3Nob3ctaGlkZS1kYXNoYm9hcmQtc2hlZXQtdWknLFxuXG4gICAgLy8gXG4gICAgU2hvd0hpZGVTdG9yeWJvYXJkU2hlZXRVSSA9ICdzaG93LWhpZGUtc3Rvcnlib2FyZC1zaGVldC11aScsXG5cbiAgICAvLyBcbiAgICBTaG93R3JhcGhpY3NBUEkgPSAnc2hvdy1ncmFwaGljcy1hcGktY29tbWFuZCcsXG5cbiAgICAvLyBcbiAgICBTaG93TWFwT3B0aW9uc0RpYWxvZyA9ICdzaG93LW1hcC1vcHRpb25zLWRpYWxvZycsXG5cbiAgICAvLyBcbiAgICBTaG93TWVhc3VyZXNVSSA9ICdzaG93LW1lYXN1cmVzLXVpJyxcblxuICAgIC8vIFxuICAgIFNob3dNZUN5Y2xlVUkgPSAnc2hvdy1tZS1jeWNsZS11aScsXG5cbiAgICAvLyBcbiAgICBTaG93TWVIaWRlVUkgPSAnc2hvdy1tZS1oaWRlLXVpJyxcblxuICAgIC8vIFxuICAgIFNob3dNZW1iZXJzVUkgPSAnc2hvdy1tZW1iZXJzLXVpJyxcblxuICAgIC8vIFxuICAgIFNob3dNZVRvZ2dsZVVJID0gJ3Nob3ctbWUtdG9nZ2xlLXVpJyxcblxuICAgIC8vIFxuICAgIFNob3dPQXV0aFByb21wdFVJID0gJ3Nob3ctb2F1dGgtcHJvbXB0LXVpJyxcblxuICAgIC8vIFxuICAgIFNob3dQYXJhbWV0ZXJDb250cm9sID0gJ3Nob3ctcGFyYW1ldGVyLWNvbnRyb2wnLFxuXG4gICAgLy8gXG4gICAgU2hvd1B1YmxpY1N0YXR1c0RpYWxvZyA9ICdzaG93LXB1YmxpYy1zdGF0dXMtZGlhbG9nJyxcblxuICAgIC8vIFxuICAgIFNob3dQdWJsaWNRdW90YUV4Y2VlZGVkRGlhbG9nID0gJ3Nob3ctcHVibGljLXF1b3RhLWV4Y2VlZGVkLWRpYWxvZycsXG5cbiAgICAvLyBcbiAgICBTaG93UHVibGlzaERhdGFzb3VyY2VUb1dvcmtncm91cERpYWxvZyA9ICdzaG93LXB1Ymxpc2gtZGF0YXNvdXJjZS10by13b3JrZ3JvdXAtZGlhbG9nJyxcblxuICAgIC8vIFxuICAgIFNob3dRdWVyeUJhbmRpbmdBbmRJbml0aWFsU1FMRGlhbG9nVUkgPSAnc2hvdy1xdWVyeS1iYW5kaW5nLWFuZC1pbml0aWFsLXNxbC1kaWFsb2ctdWknLFxuXG4gICAgLy8gXG4gICAgU2hvd1F1aWNrRmlsdGVyID0gJ3Nob3ctcXVpY2tmaWx0ZXInLFxuXG4gICAgLy8gXG4gICAgU2hvd1F1aWNrRmlsdGVyVUkgPSAnc2hvdy1xdWlja2ZpbHRlci11aScsXG5cbiAgICAvLyBcbiAgICBTaG93UnVudGltZUluZGljYXRvciA9ICdzaG93LXJ1bnRpbWUtaW5kaWNhdG9yJyxcblxuICAgIC8vIFxuICAgIFNob3dTaGVldFNvcnRlciA9ICdzaGVldC1zb3J0ZXInLFxuXG4gICAgLy8gXG4gICAgU2hvd1RhYmxlT3B0aW9uc0RpYWxvZyA9ICdzaG93LXRhYmxlLW9wdGlvbnMtZGlhbG9nJyxcblxuICAgIC8vIFxuICAgIFNob3dXZWJEYXRhQ29ubmVjdG9yVUkgPSAnc2hvdy13ZWItZGF0YS1jb25uZWN0b3ItdWknLFxuXG4gICAgLy8gXG4gICAgU2hvd1dpZGdldFNhbmRib3hVSSA9ICdzaG93LXdpZGdldC1zYW5kYm94LXVpJyxcblxuICAgIC8vIFxuICAgIFNpemVMZWdlbmRFZGl0VUkgPSAnc2l6ZS1sZWdlbmQtZWRpdC11aScsXG5cbiAgICAvLyBcbiAgICBTbGVlcFVJID0gJ3NsZWVwLXVpJyxcblxuICAgIC8vIFxuICAgIFNvcnRBc2NlbmRpbmdGaWVsZExhYmVsVUkgPSAnc29ydC1hc2NlbmRpbmctZmllbGQtbGFiZWwtdWknLFxuXG4gICAgLy8gXG4gICAgU29ydERlc2NlbmRpbmdGaWVsZExhYmVsVUkgPSAnc29ydC1kZXNjZW5kaW5nLWZpZWxkLWxhYmVsLXVpJyxcblxuICAgIC8vIFxuICAgIFNvcnRGaWVsZExhYmVsVUkgPSAnc29ydC1maWVsZC1sYWJlbC11aScsXG5cbiAgICAvLyBcbiAgICBTb3J0VUkgPSAnc29ydC11aScsXG5cbiAgICAvLyBcbiAgICBTcGxpdEZpZWxkVUkgPSAnc3BsaXQtZmllbGQtdWknLFxuXG4gICAgLy8gXG4gICAgU3RhY2tNYXJrc1VJID0gJ3N0YWNrLW1hcmtzLXVpJyxcblxuICAgIC8vIFxuICAgIFN0YXJ0RmlsZUNvbm5lY3Rpb25VSSA9ICdzdGFydC1maWxlLWNvbm5lY3Rpb24tdWknLFxuXG4gICAgLy8gXG4gICAgU3RhcnRQaWxsRWRpdFVJID0gJ3N0YXJ0LXBpbGwtZWRpdC11aScsXG5cbiAgICAvLyBcbiAgICBTd2l0Y2hUb0Nvbm5lY3RUYWIgPSAnc3dpdGNoLXRvLWNvbm5lY3QtdGFiJyxcblxuICAgIC8vIFxuICAgIFN3aXRjaFRvRG9jdW1lbnQgPSAnc3dpdGNoLXRvLWRvY3VtZW50JyxcblxuICAgIC8vIFxuICAgIFN3aXRjaFRvU2hlZXRTb3J0ZXIgPSAnc3dpdGNoLXRvLXNoZWV0LXNvcnRlcicsXG5cbiAgICAvLyBcbiAgICBUYWJsZUNhbGNBZGRyZXNzVUkgPSAndGFibGUtY2FsYy1hZGRyZXNzLXVpJyxcblxuICAgIC8vIFxuICAgIFRhYmxlQ2FsY0lnbm9yZVVJID0gJ3RhYmxlLWNhbGMtaWdub3JlLXVpJyxcblxuICAgIC8vIFxuICAgIFRhYmxlQ2FsY09yZGVyaW5nVUkgPSAndGFibGUtY2FsYy1vcmRlcmluZy11aScsXG5cbiAgICAvLyBcbiAgICBUYWJsZUNhbGNVSSA9ICd0YWJsZS1jYWxjLXVpJyxcblxuICAgIC8vIFxuICAgIFRvZ2dsZUNvbm5lY3RQYW5lVUkgPSAndG9nZ2xlLWNvbm5lY3QtcGFuZScsXG5cbiAgICAvLyBcbiAgICBUb2dnbGVGaWxtc3RyaXBVSSA9ICd0b2dnbGUtZmlsbXN0cmlwLXVpJyxcblxuICAgIC8vIFxuICAgIFRvZ2dsZUlOREpvaW5TZW1hbnRpY3NVSSA9ICd0b2dnbGUtaW5kLWpvaW4tc2VtYW50aWNzLXVpJyxcblxuICAgIC8vIFxuICAgIFRvZ2dsZVBpbk1SVUl0ZW0gPSAndG9nZ2xlLXBpbi1tcnUnLFxuXG4gICAgLy8gXG4gICAgVG9nZ2xlUmVmZXJlbnRpYWxJbnRlZ3JpdHlVSSA9ICd0b2dnbGUtcmVmZXJlbnRpYWwtaW50ZWdyaXR5LXVpJyxcblxuICAgIC8vIFxuICAgIFRvZ2dsZVN0YXJ0UGFnZVVJID0gJ3RvZ2dsZS1zdGFydC1wYWdlJyxcblxuICAgIC8vIFxuICAgIFRyYWNrTWVtb3J5ID0gJ3RyYWNrLW1lbW9yeScsXG5cbiAgICAvLyBcbiAgICBUcmVuZExpbmVzRmxhZ1VJID0gJ3RyZW5kLWxpbmVzLXVpJyxcblxuICAgIC8vIFxuICAgIFVwZGF0ZURlZmF1bHRzTWFwQ2FyZCA9ICd1cGRhdGUtbWFwLWRlZmF1bHRzJyxcblxuICAgIC8vIFxuICAgIFVwZ3JhZGVFeHRyYWN0c1VJID0gJ3VwZ3JhZGUtZXh0cmFjdHMtdWknLFxuXG4gICAgLy8gXG4gICAgVXBncmFkZUV4dHJhY3RVSSA9ICd1cGdyYWRlLWV4dHJhY3QtdWknLFxuXG4gICAgLy8gXG4gICAgVXNlRXh0cmFjdFVJID0gJ3VzZS1leHRyYWN0LXVpJyxcblxuICAgIC8vIFxuICAgIFVzZU1lbW9yeSA9ICd1c2UtbWVtb3J5JyxcblxuICAgIC8vIFxuICAgIFV0aWxpdHlEaW1lbnNpb25VSSA9ICd1dGlsaXR5LWRpbWVuc2lvbi11aScsXG5cbiAgICAvLyBcbiAgICBWYWxpZGF0ZUV4dHJhY3RDcmVkZW50aWFsc1VJID0gJ3ZhbGlkYXRlLWV4dHJhY3QtY3JlZGVudGlhbHMtdWknLFxuXG4gICAgLy8gXG4gICAgVmlld0NhcmQgPSAndmlldy1jYXJkJyxcblxuICAgIC8vIFxuICAgIFZpZXdUaXRsZUNhcmQgPSAndmlldy10aXRsZS1jYXJkJyxcblxuICAgIC8vIFxuICAgIFZpZXdTdW1tYXJ5Q2FyZCA9ICd2aWV3LXN1bW1hcnktY2FyZCcsXG5cbiAgICAvLyBcbiAgICBWaWV3Q2FwdGlvbkNhcmQgPSAndmlldy1jYXB0aW9uLWNhcmQnLFxuXG4gICAgLy8gXG4gICAgVmlld0NvbHVtbnNTaGVsZiA9ICd2aWV3LWNvbHVtbnMtc2hlbGYnLFxuXG4gICAgLy8gXG4gICAgVmlld1Jvd3NTaGVsZiA9ICd2aWV3LXJvd3Mtc2hlbGYnLFxuXG4gICAgLy8gXG4gICAgVmlld1BhZ2VzU2hlbGYgPSAndmlldy1wYWdlcy1zaGVsZicsXG5cbiAgICAvLyBcbiAgICBWaWV3RmlsdGVyc1NoZWxmID0gJ3ZpZXctZmlsdGVycy1zaGVsZicsXG5cbiAgICAvLyBcbiAgICBWaWV3TWVhc3VyZXNTaGVsZiA9ICd2aWV3LW1lYXN1cmVzLXNoZWxmJyxcblxuICAgIC8vIFxuICAgIFZpZXdNYXJrc1NoZWxmID0gJ3ZpZXctbWFya3Mtc2hlbGYnLFxuXG4gICAgLy8gXG4gICAgVmlld0N1cnJlbnRQYWdlQ2FyZCA9ICd2aWV3LWN1cnJlbnQtcGFnZS1jYXJkJyxcblxuICAgIC8vIFxuICAgIFZpZXdEYXRhID0gJ3ZpZXctZGF0YScsXG5cbiAgICAvLyBcbiAgICBWaWV3U1FMRGF0YVVJID0gJ3ZpZXctc3FsLWRhdGEtdWknLFxuXG4gICAgLy8gXG4gICAgVmlld0RhdGFTb3VyY2VEYXRhID0gJ3ZpZXctZGF0YXNvdXJjZS1kYXRhJyxcblxuICAgIC8vIFxuICAgIFZpZXdMZWdlbmQgPSAndmlldy1sZWdlbmQnLFxuXG4gICAgLy8gXG4gICAgVmlld1NpZGVQYW5lID0gJ3ZpZXctc2lkZS1wYW5lJyxcblxuICAgIC8vIFxuICAgIFZpZXdTdGF0dXNCYXIgPSAndmlldy1zdGF0dXNiYXInLFxuXG4gICAgLy8gXG4gICAgVmlld1N1bW1hcnlEZXRhaWwgPSAndmlldy1zdW1tYXJ5LWRldGFpbCcsXG5cbiAgICAvLyBcbiAgICBWaWV3VGFibGVEYXRhID0gJ3ZpZXctdGFibGUtZGF0YScsXG5cbiAgICAvLyBcbiAgICBWaWV3VG9vbEJhciA9ICd2aWV3LXRvb2xiYXInLFxuXG4gICAgLy8gXG4gICAgV2ViVmlld0VuYWJsZUphdmFzY3JpcHQgPSAnd2Vidmlldy1lbmFibGUtamF2YXNjcmlwdCcsXG5cbiAgICAvLyBcbiAgICBXZWJWaWV3RW5hYmxlUGx1Z2lucyA9ICd3ZWJ2aWV3LWVuYWJsZS1wbHVnaW5zJyxcblxuICAgIC8vIFxuICAgIFdlYlZpZXdCbG9ja1BvcHVwcyA9ICd3ZWJ2aWV3LWJsb2NrLXBvcHVwcycsXG5cbiAgICAvLyBcbiAgICBXZWJWaWV3RW5hYmxlVVJMSG92ZXJBY3Rpb25zID0gJ3dlYnZpZXctZW5hYmxlLXVybC1ob3Zlci1hY3Rpb25zJyxcblxuICAgIC8vIFxuICAgIFdvcmtncm91cENoYW5nZURhdGFzZXJ2ZXIgPSAnd29ya2dyb3VwLWNoYW5nZS1kYXRhc2VydmVyJyxcblxuICAgIC8vIFxuICAgIFdvcmtncm91cENoYW5nZVNlcnZlciA9ICd3b3JrZ3JvdXAtY2hhbmdlLXNlcnZlcicsXG5cbiAgICAvLyBcbiAgICBXb3JrZ3JvdXBDaGFuZ2VVc2VyID0gJ3dvcmtncm91cC1jaGFuZ2UtdXNlcicsXG5cbiAgICAvLyBcbiAgICBXb3JrZ3JvdXBSZW1vdmVMYXN0U2VydmVyID0gJ3dvcmtncm91cC1yZW1vdmUtbGFzdC1zZXJ2ZXInLFxufVxuXG5leHBvcnQgZW51bSBEb2NDb21tYW5kcyB7XG5cbiAgICAvLyBHZXRzIHRoZSBheGlzIG9wdGlvbnMgLlxuICAgIEdldEF4aXNPcHRpb25zID0gJ2dldC1heGlzLW9wdGlvbnMnLFxuXG4gICAgLy8gUmVzZXQgdGhlIGF4aXMgb3B0aW9ucyAuXG4gICAgUmVzZXRBeGlzT3B0aW9ucyA9ICdyZXNldC1heGlzLW9wdGlvbnMnLFxuXG4gICAgLy8gU2hvdyBheGlzIGVkaXQgZGlhbG9nXG4gICAgU2hvd0VkaXRBeGlzRGlhbG9nID0gJ3Nob3ctZWRpdC1heGlzLWRpYWxvZycsXG5cbiAgICAvLyBTZXRzIHRoZSBheGlzIGRpcmVjdGlvblxuICAgIFNldEF4aXNSZXZlcnNlZCA9ICdzZXQtYXhpcy1yZXZlcnNlZCcsXG5cbiAgICAvLyBTZXRzIHRoZSBheGlzIHNjYWxlIHR5cGVcbiAgICBTZXRBeGlzU2NhbGVUeXBlID0gJ3NldC1heGlzLXNjYWxlLXR5cGUnLFxuXG4gICAgLy8gU2V0cyB0aGUgbWFpbiB0aXRsZSBvZiBhIHF1YW50aXRhdGl2ZSBheGlzXG4gICAgU2V0QXhpc1RpdGxlID0gJ3NldC1heGlzLXRpdGxlJyxcblxuICAgIC8vIFNldHMgdGhlIHN1YnRpdGxlIG9mIGEgcXVhbnRpdGF0aXZlIGF4aXNcbiAgICBTZXRBeGlzU3VidGl0bGUgPSAnc2V0LWF4aXMtc3VidGl0bGUnLFxuXG4gICAgLy8gU2V0cyB3aGV0aGVyIHdlIHNob3VsZCB1c2UgdGhlIGF1dG9tYXRpYyBzdWJ0aXRsZSBmb3IgYSBxdWFudGl0YXRpdmUgYXhpc1xuICAgIFNldEF4aXNVc2VBdXRvbWF0aWNTdWJ0aXRsZSA9ICdzZXQtYXhpcy11c2UtYXV0b21hdGljLXN1YnRpdGxlJyxcblxuICAgIC8vIFNldHMgdGhlIGF4aXMgcmFuZ2UgdHlwZSBvZiBhIHF1YW50aXRhdGl2ZSBheGlzXG4gICAgU2V0QXhpc0V4dGVudFN0YXJ0VHlwZSA9ICdzZXQtYXhpcy1leHRlbnQtc3RhcnQtdHlwZScsXG5cbiAgICAvLyBTZXRzIHRoZSBheGlzIHJhbmdlIHR5cGUgb2YgYSBxdWFudGl0YXRpdmUgYXhpc1xuICAgIFNldEF4aXNFeHRlbnRFbmRUeXBlID0gJ3NldC1heGlzLWV4dGVudC1lbmQtdHlwZScsXG5cbiAgICAvLyBTZXRzIHRoZSBheGlzIHJhbmdlIHR5cGUgb2YgYSBxdWFudGl0YXRpdmUgYXhpc1xuICAgIFNldEJvdGhBeGlzRXh0ZW50c1R5cGUgPSAnc2V0LWJvdGgtYXhpcy1leHRlbnRzLXR5cGUnLFxuXG4gICAgLy8gU2V0cyB3aGV0aGVyIG9yIG5vdCB0byBmb3JjZS1pbmNsdWRlIHplcm8gb24gYSBxdWFudGl0YXRpdmUgYXhpc1xuICAgIFNldEF4aXNJbmNsdWRlWmVybyA9ICdzZXQtYXhpcy1pbmNsdWRlLXplcm8nLFxuXG4gICAgLy8gU2V0cyBuZXcgbWluL21heCByYW5nZSBlbmRpbmdzIGZvciBheGlzXG4gICAgU2V0QXhpc1JhbmdlRW5kID0gJ3NldC1heGlzLXJhbmdlLWVuZCcsXG5cbiAgICAvLyBTZXRzIG5ldyBtaW4vbWF4IHJhbmdlIGVuZGluZ3MgZm9yIGF4aXNcbiAgICBTZXRBeGlzUmFuZ2VTdGFydCA9ICdzZXQtYXhpcy1yYW5nZS1zdGFydCcsXG5cbiAgICAvLyBTeW5jaHJvbml6ZSBkdWFsIGF4ZXMgb24gYSBmb2xkZWQgcXVhbnRpdGF0aXZlIGF4aXNcbiAgICBTZXRBeGlzRm9sZFN0YXRlID0gJ3NldC1heGlzLWZvbGQtc3RhdGUnLFxuXG4gICAgLy8gU2V0IHRoZSBtYWpvciB0aWNrIG1hcmsgc3RhdGVcbiAgICBTZXRNYWpvclRpY2tNYXJrU3RhdGUgPSAnc2V0LW1ham9yLXRpY2stbWFyay1zdGF0ZScsXG5cbiAgICAvLyBTZXQgdGhlIG1pbm9yIHRpY2sgbWFyayBzdGF0ZVxuICAgIFNldE1pbm9yVGlja01hcmtTdGF0ZSA9ICdzZXQtbWlub3ItdGljay1tYXJrLXN0YXRlJyxcblxuICAgIC8vIFNldCB0aGUgbWFqb3IgdGljayBtYXJrIG9yaWdpblxuICAgIFNldE1ham9yVGlja01hcmtPcmlnaW4gPSAnc2V0LW1ham9yLXRpY2stbWFyay1vcmlnaW4nLFxuXG4gICAgLy8gU2V0IHRoZSBtaW5vciB0aWNrIG1hcmsgb3JpZ2luXG4gICAgU2V0TWlub3JUaWNrTWFya09yaWdpbiA9ICdzZXQtbWlub3ItdGljay1tYXJrLW9yaWdpbicsXG5cbiAgICAvLyBTZXQgdGhlIG1ham9yIHRpY2sgbWFyayBzcGFjaW5nXG4gICAgU2V0TWFqb3JUaWNrTWFya1NwYWNpbmcgPSAnc2V0LW1ham9yLXRpY2stbWFyay1zcGFjaW5nJyxcblxuICAgIC8vIFNldCB0aGUgbWlub3IgdGljayBtYXJrIHNwYWNpbmdcbiAgICBTZXRNaW5vclRpY2tNYXJrU3BhY2luZyA9ICdzZXQtbWlub3ItdGljay1tYXJrLXNwYWNpbmcnLFxuXG4gICAgLy8gU2V0IHRoZSBtYWpvciB0aWNrIG1hcmsgdW5pdHNcbiAgICBTZXRNYWpvclRpY2tNYXJrVW5pdHMgPSAnc2V0LW1ham9yLXRpY2stbWFyay11bml0cycsXG5cbiAgICAvLyBTZXQgdGhlIG1pbm9yIHRpY2sgbWFyayB1bml0c1xuICAgIFNldE1pbm9yVGlja01hcmtVbml0cyA9ICdzZXQtbWlub3ItdGljay1tYXJrLXVuaXRzJyxcblxuXG4gICAgLy8gXG4gICAgQm91bmRpbmdCb3hQYW4gPSAnYm91bmRpbmctYm94LXBhbicsXG5cbiAgICAvLyBcbiAgICBPblRvZ2dsZUF4aXNSYW5nZXMgPSAnb24tdG9nZ2xlLWF4aXMtcmFuZ2VzJyxcblxuICAgIC8vIFxuICAgIFBhbmVQYW4gPSAncGFuZS1wYW4nLFxuXG4gICAgLy8gXG4gICAgUGFuZVpvb20gPSAncGFuZS16b29tJyxcblxuICAgIC8vIFxuICAgIFBhbmVab29tRmFjdG9yID0gJ3BhbmUtem9vbS1mYWN0b3InLFxuXG4gICAgLy8gXG4gICAgUGFuZVpvb21QYW4gPSAncGFuZS16b29tLXBhbicsXG5cbiAgICAvLyBcbiAgICBSZW9yZGVyRm9sZGVkQXhlcyA9ICdyZW9yZGVyLWZvbGRlZC1heGVzJyxcblxuICAgIC8vIFxuICAgIFJlc2V0QXhpc1JhbmdlID0gJ3Jlc2V0LWF4aXMtcmFuZ2UnLFxuXG4gICAgLy8gXG4gICAgU2VsZWN0QXhpc1R1cGxlcyA9ICdzZWxlY3QtYXhpcy10dXBsZXMnLFxuXG4gICAgLy8gXG4gICAgU3dhcFJlZmVyZW5jZUxpbmVGaWVsZHMgPSAnc3dhcC1yZWZlcmVuY2UtbGluZS1maWVsZHMnLFxuXG4gICAgLy8gXG4gICAgU3luY2hyb25pemVBeGlzID0gJ3N5bmNocm9uaXplLWF4aXMnLFxuXG4gICAgLy8gXG4gICAgVG9nZ2xlRHVhbEF4aXMgPSAndG9nZ2xlLWR1YWwtYXhpcycsXG5cbiAgICAvLyBcbiAgICBab29tTGV2ZWwgPSAnem9vbS1sZXZlbCcsXG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9nZW4tc3JjL3ByZXNsYXllci9Db21tYW5kSWRzLnRzXG4gKiovIiwiaW1wb3J0IHsgVmVyYklkIGFzIEFwaVZlcmJJZCB9IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5cbmltcG9ydCB7IENvbW1hbmRSZWdpc3RyYXRpb24gfSBmcm9tICcuL0NvbW1hbmRSZWdpc3RyYXRpb24nO1xuXG4vKipcbiAqIFJlZ2lzdHJ5IHdoaWNoIGNvbnRhaW5zIG1hcHBpbmdzIGZyb20gYW4gQXBpIFZlcmJJZCB0byBhIHByZXMtbGF5ZXIgY29tbWFuZC5cbiAqIFRoaXMgaW5jbHVkZXMgdGhlIHBhcmFtZXRlcnMgYW5kIHJldHVybiB2YWx1ZXMgb2YgdGhlIGNvbW1hbmQgYXMgd2VsbFxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBDb21tYW5kTWFwcGluZ1JlZ2lzdHJ5XG4gKi9cbmV4cG9ydCBjbGFzcyBDb21tYW5kTWFwcGluZ1JlZ2lzdHJ5IHtcbiAgcHJpdmF0ZSBfY29tbWFuZHM6IHsgW2FwaVZlcmI6IHN0cmluZ106IENvbW1hbmRSZWdpc3RyYXRpb24gfTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBDb21tYW5kTWFwcGluZ1JlZ2lzdHJ5LlxuICAgKiBAbWVtYmVyb2YgQ29tbWFuZE1hcHBpbmdSZWdpc3RyeVxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2NvbW1hbmRzID0ge307XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBjb21tYW5kIHRvIHRoZSByZWdpc3RyeVxuICAgKlxuICAgKiBAcGFyYW0ge0NvbW1hbmRSZWdpc3RyYXRpb259IGNvbW1hbmRcbiAgICogQG1lbWJlcm9mIENvbW1hbmRNYXBwaW5nUmVnaXN0cnlcbiAgICovXG4gIHB1YmxpYyBhZGRDb21tYW5kKGNvbW1hbmQ6IENvbW1hbmRSZWdpc3RyYXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLl9jb21tYW5kc1tjb21tYW5kLmFwaVZlcmJJZF0gPSBjb21tYW5kO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoaXMgcmVnaXN0cnkgY29udGFpbnMgYSBkZWZpbml0aW9uIGZvciB0aGlzIEFwaVZlcmJJZFxuICAgKlxuICAgKiBAcGFyYW0ge0FwaVZlcmJJZH0gYXBpVmVyYklkXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgQ29tbWFuZE1hcHBpbmdSZWdpc3RyeVxuICAgKi9cbiAgcHVibGljIGhhc0NvbW1hbmQoYXBpVmVyYklkOiBBcGlWZXJiSWQpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuX2NvbW1hbmRzLmhhc093blByb3BlcnR5KGFwaVZlcmJJZCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX2NvbW1hbmRzW2FwaVZlcmJJZF0pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjb21tYW5kIHJlZ2lzdHJhdGlvbiBmb3IgdGhpcyBjb21tYW5kIGlkIG9yIHRocm93cyBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAqXG4gICAqIEBwYXJhbSB7QXBpVmVyYklkfSBhcGlWZXJiSWRcbiAgICogQHJldHVybnMge0NvbW1hbmRSZWdpc3RyYXRpb259XG4gICAqIEBtZW1iZXJvZiBDb21tYW5kTWFwcGluZ1JlZ2lzdHJ5XG4gICAqL1xuICBwdWJsaWMgZ2V0Q29tbWFuZChhcGlWZXJiSWQ6IEFwaVZlcmJJZCk6IENvbW1hbmRSZWdpc3RyYXRpb24ge1xuICAgIGlmICghdGhpcy5oYXNDb21tYW5kKGFwaVZlcmJJZCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBBcGlWZXJiOiAnICsgYXBpVmVyYklkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fY29tbWFuZHNbYXBpVmVyYklkXTtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWNvcmUvc3JjL21hcHBpbmdzL0NvbW1hbmRNYXBwaW5nUmVnaXN0cnkudHNcbiAqKi8iLCJpbXBvcnQge1xuICBFeGVjdXRlUGFyYW1ldGVycyxcbiAgTW9kZWwsXG4gIFBhcmFtZXRlcklkIGFzIEFwaVBhcmFtZXRlcklkLFxuICBWZXJiSWQgYXMgQXBpVmVyYklkLFxufSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xuXG5pbXBvcnQgeyBEb2NDb21tYW5kcyBhcyBQcmVzTGF5ZXJEb2NDb21tYW5kSWQsIFVJQ29tbWFuZHMgYXMgUHJlc0xheWVyVUlDb21tYW5kSWQgfSBmcm9tICcuLi8uLi9nZW4tc3JjL3ByZXNsYXllci9Db21tYW5kSWRzJztcbmltcG9ydCB7IFBhcmFtZXRlcklkIGFzIFByZXNMYXllclBhcmFtZXRlcklkIH0gZnJvbSAnLi4vLi4vZ2VuLXNyYy9wcmVzbGF5ZXIvUGFyYW1zJztcbmltcG9ydCB7IEFwaVRvUHJlc0xheWVyTWFwcGluZ1JlZ2lzdHJ5LCBQcmVzTGF5ZXJUb0FwaU1hcHBpbmdSZWdpc3RyeSB9IGZyb20gJy4vUGFyYW1ldGVyTWFwcGluZ1JlZ2lzdHJ5RmFjdG9yeSc7XG5cbi8qKlxuICogVGhpcyBpcyBhbiBlbnVtIHVzZWQgb25seSBpbnRlcm5hbGx5IGJ5IHRoZSBhcGktY29yZSBwcm9qZWN0LlxuICogVGhpcyBlbnVtIHJlcHJlc2VudHMgdGhlIGRpZmZlcmVuY2UgbmFtZXNwYWNlcyBhdmFpbGFibGUgZm9yIGNvbW1hbmRzLlxuICovXG5leHBvcnQgZW51bSBDb21tYW5kTmFtZXNwYWNlIHtcbiAgVGFiRG9jID0gJ3RhYmRvYycsXG4gIFRhYlVJID0gJ3RhYnVpJ1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gaW5wdXQgb3Igb3V0cHV0IHBhcmFtdGVyIGZvciBhIGNvbW1hbmQuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIENvbW1hbmRQYXJhbWV0ZXJcbiAqL1xuZXhwb3J0IGNsYXNzIENvbW1hbmRQYXJhbWV0ZXIge1xuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBDb21tYW5kUGFyYW1ldGVyLlxuICAgKiBAcGFyYW0ge0FwaVBhcmFtZXRlcklkfSBhcGlJZFxuICAgKiBAcGFyYW0ge1ByZXNMYXllclBhcmFtZXRlcklkfSBwcmVzTGF5ZXJJZFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc09wdGlvbmFsXVxuICAgKiBAbWVtYmVyb2YgQ29tbWFuZFBhcmFtZXRlclxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2FwaUlkOiBBcGlQYXJhbWV0ZXJJZCxcbiAgICBwcml2YXRlIF9wcmVzTGF5ZXJJZDogUHJlc0xheWVyUGFyYW1ldGVySWQsXG4gICAgcHJpdmF0ZSBfaXNPcHRpb25hbD86IGJvb2xlYW4pIHsgfVxuXG4gIC8qKlxuICAgKiBUaGUgSWQgb2YgdGhlIEFwaSBQYXJhbWV0ZXJcbiAgICpcbiAgICogQHJlYWRvbmx5XG4gICAqIEB0eXBlIHtBcGlQYXJhbWV0ZXJJZH1cbiAgICogQG1lbWJlcm9mIENvbW1hbmRQYXJhbWV0ZXJcbiAgICovXG4gIHB1YmxpYyBnZXQgYXBpSWQoKTogQXBpUGFyYW1ldGVySWQge1xuICAgIHJldHVybiB0aGlzLl9hcGlJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgSWQgb2YgdGhlIFByZXMgTGF5ZXIgUGFyYW1ldGVyXG4gICAqXG4gICAqIEByZWFkb25seVxuICAgKiBAdHlwZSB7UHJlc0xheWVyUGFyYW1ldGVySWR9XG4gICAqIEBtZW1iZXJvZiBDb21tYW5kUGFyYW1ldGVyXG4gICAqL1xuICBwdWJsaWMgZ2V0IHByZXNMYXllcklkKCk6IFByZXNMYXllclBhcmFtZXRlcklkIHtcbiAgICByZXR1cm4gdGhpcy5fcHJlc0xheWVySWQ7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhpcyBpcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXJcbiAgICpcbiAgICogQHJlYWRvbmx5XG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgQ29tbWFuZFBhcmFtZXRlclxuICAgKi9cbiAgcHVibGljIGdldCBpc09wdGlvbmFsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX2lzT3B0aW9uYWw7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgdGhlIGNvbXBsZXRlIG1hcHBpbmcgb2YgYW4gQXBpQ29tbWFuZCB0byBpdHMgY29ycmVzcG9uZGluZyBwcmVzLWxheWVyIGNvbW1hbmRcbiAqIGFuZCB0aGUgY29udmVyc2lvbiBvZiB0aGUgb3V0cHV0IHZhbHVlIGFzIHdlbGxcbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgQ29tbWFuZFJlZ2lzdHJhdGlvblxuICovXG5leHBvcnQgY2xhc3MgQ29tbWFuZFJlZ2lzdHJhdGlvbiB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9hcGlWZXJiSWQ6IEFwaVZlcmJJZCxcbiAgICBwcml2YXRlIF9jb21tYW5kSWQ6IFByZXNMYXllckRvY0NvbW1hbmRJZCB8IFByZXNMYXllclVJQ29tbWFuZElkLFxuICAgIHByaXZhdGUgX2lucHV0UGFyYW1ldGVyczogQ29tbWFuZFBhcmFtZXRlcltdLFxuICAgIHByaXZhdGUgX291dHB1dFBhcmFtZXRlcj86IENvbW1hbmRQYXJhbWV0ZXIsXG4gICAgcHJpdmF0ZSBfbmFtZXNwYWNlPzogc3RyaW5nXG4gICkgeyB9XG5cbiAgcHVibGljIGdldCBhcGlWZXJiSWQoKTogQXBpVmVyYklkIHtcbiAgICByZXR1cm4gdGhpcy5fYXBpVmVyYklkO1xuICB9XG5cbiAgcHVibGljIGdldCBjb21tYW5kSWQoKTogUHJlc0xheWVyRG9jQ29tbWFuZElkIHwgUHJlc0xheWVyVUlDb21tYW5kSWQge1xuICAgIHJldHVybiB0aGlzLl9jb21tYW5kSWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlucHV0cygpOiBDb21tYW5kUGFyYW1ldGVyW10ge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dFBhcmFtZXRlcnMgfHwgbmV3IEFycmF5PENvbW1hbmRQYXJhbWV0ZXI+KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG91dHB1dCgpOiBDb21tYW5kUGFyYW1ldGVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fb3V0cHV0UGFyYW1ldGVyO1xuICB9XG5cbiAgcHVibGljIGdldCBuYW1lc3BhY2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbmFtZXNwYWNlIHx8IENvbW1hbmROYW1lc3BhY2UuVGFiRG9jO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoaXMgY29tbWFuZCByZXF1aXJlcyBhbiBhZGQtaW4gbG9jYXRvciB0byBiZSBpbmplY3RlZCBpbnRvIGl0XG4gICAqXG4gICAqIEByZWFkb25seVxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIENvbW1hbmRSZWdpc3RyYXRpb25cbiAgICovXG4gIHB1YmxpYyBnZXQgbmVlZHNBZGRJbkxvY2F0b3IoKTogYm9vbGVhbiB7XG4gICAgZm9yIChjb25zdCBpbnB1dCBvZiB0aGlzLmlucHV0cykge1xuICAgICAgaWYgKGlucHV0LmFwaUlkID09PSBBcGlQYXJhbWV0ZXJJZC5FeHRlbnNpb25Mb2NhdG9yKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZGljdGlvbmFyeSBvZiBwcmVzLWxheWVyIHBhcmFtZXRlcnMgZnJvbSB0aGUgaW5wdXQgZGljdGlvbmFyeVxuICAgKiBvZiBhcGkgcGFyYW1ldGVycy5cbiAgICpcbiAgICogQHBhcmFtIHtFeGVjdXRlUGFyYW1ldGVyc30gcGFyYW1ldGVycyAtIFRoZSBwYXJhbWV0ZXJzIHRvIGNvbnZlcnRcbiAgICogQHBhcmFtIHtBcGlUb1ByZXNMYXllck1hcHBpbmdSZWdpc3RyeX0gYXBpVG9QcmVzTGF5ZXIgLSBtYXBwaW5nIHRvIGRldGVybWluZSB0aGUgY29udmVyc2lvblxuICAgKiBAcmV0dXJucyB7eyBbcGFyYW1JZDogc3RyaW5nXTogb2JqZWN0OyB9fSAtIHBhcmFtZXRlcnMgdG8gc2VuZCB0byB0aGUgcHJlcy1sYXllclxuICAgKiBAbWVtYmVyb2YgQ29tbWFuZFJlZ2lzdHJhdGlvblxuICAgKi9cbiAgcHVibGljIGNyZWF0ZVBhcmFtcyhwYXJhbWV0ZXJzOiBFeGVjdXRlUGFyYW1ldGVycywgYXBpVG9QcmVzTGF5ZXI6IEFwaVRvUHJlc0xheWVyTWFwcGluZ1JlZ2lzdHJ5KTogeyBbcGFyYW1JZDogc3RyaW5nXTogb2JqZWN0OyB9IHtcbiAgICBsZXQgcmVzdWx0OiB7IFtwYXJhbUlkOiBzdHJpbmddOiBvYmplY3Q7IH0gPSB7fTtcblxuICAgIGZvciAoY29uc3QgaW5wdXRQYXJhbSBvZiB0aGlzLmlucHV0cykge1xuICAgICAgLy8gRmlyc3QgbWFrZSBzdXJlIHRoZSBwYXJhbWV0ZXIgaXMgdGhlcmUgb3IgdGhhdCBpdCdzIG9wdGlvbmFsXG4gICAgICBpZiAoIXBhcmFtZXRlcnMuaGFzT3duUHJvcGVydHkoaW5wdXRQYXJhbS5hcGlJZCkpIHtcbiAgICAgICAgaWYgKGlucHV0UGFyYW0uaXNPcHRpb25hbCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBwYXJhbWV0ZXIgZm9yIGNvbW1hbmQ6ICcgKyBpbnB1dFBhcmFtLmFwaUlkKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBGaW5kIHRoZSBjb252ZXJzaW9uIGZ1bmN0aW9uIGZvciB0aGlzIHBhcmFtZXRlclxuICAgICAgY29uc3QgY29udmVyc2lvbkZuID0gYXBpVG9QcmVzTGF5ZXIuZ2V0KGlucHV0UGFyYW0uYXBpSWQsIGlucHV0UGFyYW0ucHJlc0xheWVySWQpO1xuXG4gICAgICAvLyBDb252ZXJ0IHRoZSBwcmVzIG1vZGVsIGFuZCBpbnNlcnQgaXQgaW50byBvdXIgcmVzdWx0cyBvYmplY3RcbiAgICAgIHJlc3VsdFtpbnB1dFBhcmFtLnByZXNMYXllcklkXSA9IGNvbnZlcnNpb25GbihwYXJhbWV0ZXJzW2lucHV0UGFyYW0uYXBpSWRdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyB0aGUgcmVzdWx0IHJlY2VpdmVkIGJhY2sgYWZ0ZXIgZXhlY3V0aW5nIGEgcHJlcy1sYXllciBjb21tYW5kXG4gICAqXG4gICAqIEBwYXJhbSB7eyBbZG9jUGFyYW1JZDogc3RyaW5nXTogb2JqZWN0OyB9fSByZXN1bHRQYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSB7UHJlc0xheWVyVG9BcGlNYXBwaW5nUmVnaXN0cnl9IHByZXNMYXllclRvQXBpXG4gICAqIEByZXR1cm5zIHtNb2RlbH1cbiAgICogQG1lbWJlcm9mIENvbW1hbmRSZWdpc3RyYXRpb25cbiAgICovXG4gIHB1YmxpYyBQcm9jZXNzUmVzdWx0KHJlc3VsdFBhcmFtZXRlcnM6IHsgW2RvY1BhcmFtSWQ6IHN0cmluZ106IG9iamVjdDsgfSwgcHJlc0xheWVyVG9BcGk6IFByZXNMYXllclRvQXBpTWFwcGluZ1JlZ2lzdHJ5KTogTW9kZWwge1xuICAgIC8vIFRPRE86IEFkZCBlcnJvciBoYW5kbGluZ1xuICAgIGlmICh0aGlzLm91dHB1dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBub091dHB1dE1vZGVsOiBNb2RlbCA9IHt9O1xuICAgICAgcmV0dXJuIG5vT3V0cHV0TW9kZWw7XG4gICAgfVxuICAgIGlmICghcmVzdWx0UGFyYW1ldGVycyB8fCAhcmVzdWx0UGFyYW1ldGVycy5oYXNPd25Qcm9wZXJ0eSh0aGlzLm91dHB1dC5wcmVzTGF5ZXJJZCkpIHtcblxuICAgICAgLy8gaWYgdGhlIG91dHB1dCByZXN1bHQgaXMgbWFya2VkIGFzIG9wdGlvbmFsLCB3ZSBkb24ndCBjb25zaWRlciB0aGlzIGFuIGVycm9yIHNpdHVhdGlvbiBhbmQganVzdCByZXR1cm4gYW4gZW1wdHkgbW9kZWxcbiAgICAgIGlmICh0aGlzLm91dHB1dC5pc09wdGlvbmFsKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGV4cGVjdGVkIHJlc3VsdCBwYXJhbWV0ZXI6ICcgKyB0aGlzLm91dHB1dC5wcmVzTGF5ZXJJZCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udmVyc2lvbkZuID0gcHJlc0xheWVyVG9BcGkuZ2V0KHRoaXMub3V0cHV0LnByZXNMYXllcklkLCB0aGlzLm91dHB1dC5hcGlJZCk7XG4gICAgcmV0dXJuIGNvbnZlcnNpb25GbihyZXN1bHRQYXJhbWV0ZXJzW3RoaXMub3V0cHV0LnByZXNMYXllcklkXSk7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1jb3JlL3NyYy9tYXBwaW5ncy9Db21tYW5kUmVnaXN0cmF0aW9uLnRzXG4gKiovIiwiaW1wb3J0IHsgTW9kZWwsIE5vdGlmaWNhdGlvbklkIGFzIEFwaSwgVmVyc2lvbk51bWJlciB9IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5cbmltcG9ydCB7IE5vdGlmaWNhdGlvbklkIGFzIFBMIH0gZnJvbSAnLi4vLi4vZ2VuLXNyYy9wcmVzbGF5ZXIvRXZlbnRzJztcbmltcG9ydCB7IFByZXNlbnRhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vZ2VuLXNyYy9wcmVzbGF5ZXIvUHJlc01vZGVscyc7XG5pbXBvcnQgeyBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlciB9IGZyb20gJy4vUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXInO1xuXG5leHBvcnQgdHlwZSBDb252ZXJzaW9uRm4gPSAocHJlc01vZGVsOiBQcmVzZW50YXRpb25Nb2RlbCkgPT4gTW9kZWw7XG5cbi8qKlxuICogU2ltcGxlIHdyYXBwZXIgd2hpY2ggaG9sZHMgYSBtYXBwaW5nIHRvIGdvIGZyb20gYSBwcmVzLWxheWVyIGV2ZW50IHRvIGFuIEFQSSBldmVudFxuICovXG5leHBvcnQgY2xhc3MgRXZlbnRNYXBwaW5nUmVnaXN0cmF0aW9uIHtcbiAgcHVibGljIGdldCBwcmVzTGF5ZXJJZCgpOiBQTCB7XG4gICAgcmV0dXJuIHRoaXMuX3ByZXNMYXllcklkO1xuICB9XG5cbiAgcHVibGljIGdldCBhcGlJZCgpOiBBcGkge1xuICAgIHJldHVybiB0aGlzLl9hcGlJZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29udmVydGVyKCk6IENvbnZlcnNpb25GbiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRlcjtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9wcmVzTGF5ZXJJZDogUEwsXG4gICAgcHJpdmF0ZSBfYXBpSWQ6IEFwaSxcbiAgICBwcml2YXRlIF9jb252ZXJ0ZXI6IENvbnZlcnNpb25GbikgeyB9XG59XG5cbi8qKlxuICogU2ltcGxlIHR5cGUgd2hpY2ggaGFzIGtleXMgb2YgUEwgZXZlbnQgaWRzIHRvIEV2ZW50TWFwcGluZ1JlZ2lzdHJhdGlvbnNcbiAqL1xuZXhwb3J0IHR5cGUgRXZlbnRNYXBwaW5nUmVnaXN0cnkgPSB7IFtrZXk6IHN0cmluZ106IEV2ZW50TWFwcGluZ1JlZ2lzdHJhdGlvbjsgfTtcblxuZXhwb3J0IGNsYXNzIEV2ZW50TWFwcGluZ1JlZ2lzdHJ5RmFjdG9yeSB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuZCBwb3B1bGF0ZXMgYSBuZXcgRXZlbnRNYXBwaW5nUmVnaXN0cnkgZm9yIHRoZSBzcGVjaWZpYyB2ZXJzaW9uIG51bWJlciByZXF1ZXN0ZWRcbiAgICpcbiAgICogQHBhcmFtIHtWZXJzaW9uTnVtYmVyfSB2ZXJzaW9uTnVtYmVyXG4gICAqIEByZXR1cm5zIHtFdmVudE1hcHBpbmdSZWdpc3RyeX1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlRXZlbnRNYXBwaW5nUmVnaXN0cnkodmVyc2lvbk51bWJlcjogVmVyc2lvbk51bWJlcik6IEV2ZW50TWFwcGluZ1JlZ2lzdHJ5IHtcbiAgICBsZXQgcmVnaXN0cnk6IEV2ZW50TWFwcGluZ1JlZ2lzdHJ5ID0ge307XG4gICAgcmVnaXN0cnlbUEwuU2VsZWN0aW9uQ2hhbmdlZF0gPSBuZXcgRXZlbnRNYXBwaW5nUmVnaXN0cmF0aW9uKFxuICAgICAgUEwuU2VsZWN0aW9uQ2hhbmdlZCxcbiAgICAgIEFwaS5TZWxlY3RlZE1hcmtzQ2hhbmdlZCxcbiAgICAgIFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnRWaXN1YWxJZFxuICAgICk7XG5cbiAgICByZWdpc3RyeVtQTC5QYXJhbWV0ZXJDaGFuZ2VkXSA9IG5ldyBFdmVudE1hcHBpbmdSZWdpc3RyYXRpb24oXG4gICAgICBQTC5QYXJhbWV0ZXJDaGFuZ2VkLFxuICAgICAgQXBpLlBhcmFtZXRlckNoYW5nZWQsXG4gICAgICBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0RmllbGRDYXB0aW9uUGFpclxuICAgICk7XG5cbiAgICByZWdpc3RyeVtQTC5GaWx0ZXJDaGFuZ2VkXSA9IG5ldyBFdmVudE1hcHBpbmdSZWdpc3RyYXRpb24oXG4gICAgICBQTC5GaWx0ZXJDaGFuZ2VkLFxuICAgICAgQXBpLkZpbHRlckNoYW5nZWQsXG4gICAgICBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0RmlsdGVyRXZlbnRcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlZ2lzdHJ5O1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9zcmMvbWFwcGluZ3MvRXZlbnRNYXBwaW5nUmVnaXN0cnlGYWN0b3J5LnRzXG4gKiovIiwiLyogdHNsaW50OmRpc2FibGUgKi9cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vL1xuLy8gVGhpcyBmaWxlIGlzIHRoZSBjb3B5cmlnaHRlZCBwcm9wZXJ0eSBvZiBUYWJsZWF1IFNvZnR3YXJlIGFuZCBpcyBwcm90ZWN0ZWRcbi8vIGJ5IHJlZ2lzdGVyZWQgcGF0ZW50cyBhbmQgb3RoZXIgYXBwbGljYWJsZSBVLlMuIGFuZCBpbnRlcm5hdGlvbmFsIGxhd3MgYW5kXG4vLyByZWd1bGF0aW9ucy5cbi8vXG4vLyBVbmxpY2Vuc2VkIHVzZSBvZiB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGlzIHByb2hpYml0ZWQuIFBsZWFzZSByZWZlciB0b1xuLy8gdGhlIE5PVElDRVMudHh0IGZpbGUgZm9yIGZ1cnRoZXIgZGV0YWlscy5cbi8vXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gV0FSTklORzogQ29tcHV0ZXIgZ2VuZXJhdGVkIGZpbGUuICBEbyBub3QgaGFuZCBtb2RpZnkuXG4vLyBERVBFTkRTIE9OOiBbJy4uL3R5cGVzY3JpcHQvanMtYXBpL2FwaS1jb3JlL25vZGVfbW9kdWxlcy9AdGFibGVhdS9wcmVzbGF5ZXItY29kZWdlbi10eXBlc2NyaXB0L3RlbXBsYXRlcy9ldmVudHMtdHMudGVtcGxhdGUnLCB1Jy4uL3R5cGVzY3JpcHQvanMtYXBpL2FwaS1jb3JlL3RlbXAtcHJlcy1sYXllci9hbGwtZXZlbnRzLmRhdGEnXVxuXG4vLyBFdmVudHMgeW91IGNhbiByZWdpc3RlciB0byByZWNlaXZlIHByZXNlbnRhdGlvbiBtb2RlbHNcbmV4cG9ydCBlbnVtIE5vdGlmaWNhdGlvbklkIHtcblxuICAvLyBUcmlnZ2VyZWQgd2hlbiBhbGlhc2VzIGFyZSB0byBiZSBlZGl0ZWQuIFVzZWQgdG8gbGF1bmNoIGEgZGlhbG9nLlxuICBFZGl0QWxpYXNlc0RpYWxvZ05vdGlmaWNhdGlvbiA9ICdlZGl0LWFsaWFzZXMtZGlhbG9nLW5vdGlmaWNhdGlvbi1ldmVudCcsXG5cbiAgLy8gZm9yIHRoZSBjYWxjdWxhdGlvbiBkaWFsb2dcbiAgQ2FsY3VsYXRpb25EaWFsb2cgPSAnY2FsY3VsYXRpb24tZGlhbG9nLWV2ZW50JyxcblxuICAvLyB1cGRhdGUgZm9yIGFuIGFkaG9jIGNhbGMgaW4gYSB0eXBlIGluIHBpbGxcbiAgVHlwZUluUGlsbCA9ICd0eXBlLWluLXBpbGwtZXZlbnQnLFxuXG4gIC8vIHJlc3VsdHMgb2YgYSB2YWxpZGF0aW9uIGNvbW1hbmRcbiAgQ29tbWFuZFZhbGlkYXRpb24gPSAnY29tbWFuZC12YWxpZGF0aW9uLWV2ZW50JyxcblxuICAvLyBldmVudCBmb3IgdGhlIGdyb3VwcyBkaWFsb2dcbiAgVXBkYXRlQ2F0ZWdvcmljYWxCaW5FZGl0RGlhbG9nID0gJ3VwZGF0ZS1jYXRlZ29yaWNhbC1iaW4tZWRpdC1kaWFsb2ctZXZlbnQnLFxuXG4gIC8vIGZvciB0aGUgY2F0ZWdvcmljYWwgY29sb3IgZGlhbG9nXG4gIENhdGVnb3JpY2FsQ29sb3IgPSAnY2F0ZWdvcmljYWwtY29sb3ItZXZlbnQnLFxuXG4gIC8vIHVwZGF0ZSB0aGUgd2ViIGNhdGVnb3JpY2FsIGNvbG9yIGRpYWxvZ1xuICBXZWJDYXRlZ29yaWNhbENvbG9yRGlhbG9nID0gJ3dlYi1jYXRlZ29yaWNhbC1jb2xvci1kaWFsb2ctZXZlbnQnLFxuXG4gIC8vIHVzZXIgaW52b2tlZCBhY3Rpb24gd2hpY2ggcmVxdWlyZXMgYSBEYXRhIEFsZXJ0IERpYWxvZ1xuICBEYXRhQWxlcnREaWFsb2cgPSAnZGF0YS1hbGVydC1kaWFsb2ctZXZlbnQnLFxuXG4gIC8vIGV2ZW50IHRvIHNlbGVjdCBmaWVsZChzKSBpbiB0aGUgZGF0YSBzY2hlbWFcbiAgRGF0YVNjaGVtYVNlbGVjdGlvbiA9ICdkYXRhLXNjaGVtYS1zZWxlY3Rpb24tZXZlbnQnLFxuXG4gIC8vIGV2ZW50IGZvciB3aGVuIHRoZSBkYXRhIHNvdXJjZSBiZWluZyBlZGl0ZWQgaXMgdXBkYXRlZFxuICBVcGRhdGVEYXRhUHJlcGFyYXRpb24gPSAndXBkYXRlLWRhdGEtcHJlcGFyYXRpb24tZXZlbnQnLFxuXG4gIC8vIGV2ZW50IGZvciB3aGVuIHRoZSBkYXRhIHNvdXJjZSBkYXRhIGlzIHVwZGF0ZWRcbiAgVXBkYXRlRGF0YVNvdXJjZURhdGEgPSAndXBkYXRlLWRhdGEtc291cmNlLWRhdGEtZXZlbnQnLFxuXG4gIC8vIGV2ZW50IGZvciB3aGVuIGEgY2xpZW50IHNob3VsZCByZXF1ZXN0IG5ldyBkYXRhIHNvdXJjZSBvciBkYXRhIHNvdXJjZSBkYXRhIHByZXMgbW9kZWxzXG4gIERhdGFTb3VyY2VVcGRhdGVOZWVkZWQgPSAnZGF0YS1zb3VyY2UtdXBkYXRlLW5lZWRlZC1ldmVudCcsXG5cbiAgLy8gZXZlbnQgZm9yIGdldHRpbmcgdGhlIHByZXMgbW9kZWwgdG8gdXBkYXRlIGZpbGUgam9pbiB0YWJsZSBwcm9wZXJ0aWVzXG4gIFRleHRGaWxlUHJvcGVydGllcyA9ICd0ZXh0LWZpbGUtcHJvcGVydGllcy1ldmVudCcsXG5cbiAgLy8gZXZlbnQgZm9yIHRoZSBkZXRhaWxlZCBlcnJvciBkaWFsb2dcbiAgVXBkYXRlRGV0YWlsZWRFcnJvckRpYWxvZyA9ICd1cGRhdGUtZGV0YWlsZWQtZXJyb3ItZGlhbG9nLWV2ZW50JyxcblxuICAvLyBub3RpZnkgY2hhbmdlcyB0byB0aGUgc3RhdGUgb2YgYSBmaWx0ZXIncyByZWxhdGlvbmFsIG1vZGVsXG4gIEZpbHRlclJlbGF0aW9uYWxTdGF0ZUNoYW5nZWQgPSAnZmlsdGVyLXJlbGF0aW9uYWwtc3RhdGUtY2hhbmdlZC1ldmVudCcsXG5cbiAgLy8gbm90aWZ5IGNoYW5nZXMgdG8gdGhlIHNpemUvc2VsZWN0aW9uIGNvdW50IG9mIGEgcmVsYXRpb25hbCBkb21haW5cbiAgRmlsdGVyUmVsYXRpb25hbERvbWFpbkNoYW5nZWQgPSAnZmlsdGVyLXJlbGF0aW9uYWwtZG9tYWluLWNoYW5nZWQtZXZlbnQnLFxuXG4gIC8vIG5vdGlmeSB3aGVuIGZpbHRlciBjYWNoZSB3YXMgcmVxdWVzdGVkIGJ1dCBub3QgZm91bmRcbiAgRmlsdGVyQ2FjaGVOb3RGb3VuZCA9ICdmaWx0ZXItY2FjaGUtbm90LWZvdW5kLWV2ZW50JyxcblxuICAvLyBIaWVyYXJjaHkgU2VsZWN0IG1vZGVsIG9ic2VydmFibGUgbm90aWZpY2F0aW9uLlxuICBIaWVyYXJjaHlOb3RpZmljYXRpb24gPSAnaGllcmFyY2h5LW5vdGlmaWNhdGlvbi1ldmVudCcsXG5cbiAgLy8gSGllcmFyY2h5IHNlbGVjdGlvbiBjaGFuZ2Ugbm90aWZpY2F0aW9ucy5cbiAgSGllcmFyY2h5U2VsZWN0aW9uID0gJ2hpZXJhcmNoeS1zZWxlY3Rpb24tZXZlbnQnLFxuXG4gIC8vIGV2ZW50IGZvciB0aGUgbWFwIG9wdGlvbnMgZGlhbG9nXG4gIE1hcE9wdGlvbnNEaWFsb2cgPSAnbWFwLW9wdGlvbnMtZGlhbG9nLWV2ZW50JyxcblxuICAvLyBub3RpZnkgdGhlIFBhZ2UgVUkoaGlkZS9zaG93IHN0YXRlcywgbGF5b3V0KSBuZWVkcyB0byBiZSB1cGRhdGVkXG4gIFVwZGF0ZVBhZ2VVSU5vdGlmaWNhdGlvbiA9ICd1cGRhdGUtcGFnZS11aW5vdGlmaWNhdGlvbi1ldmVudCcsXG5cbiAgLy8gbm90aWZ5IHRvIHRoZSBTY2VuZVZpZXcgaGFzIGJlZW4gZHJhd24uXG4gIFNjZW5lVmlld0RyYXduTm90aWZpY2F0aW9uID0gJ3NjZW5lLXZpZXctZHJhd24tbm90aWZpY2F0aW9uLWV2ZW50JyxcblxuICAvLyBUaGUgQW5pbWF0aW9uQ29udHJvbENoYW5nZSBldmVudCBmaXJlcyB3aGVuIHRoZSB1c2VyIGNsaWNrcyBhbiBhbmltYXRpb24gcGxheWJhY2sgYnV0dG9uOiBmb3J3YXJkLCBzdG9wLCBzbG93LCBmYXN0LCBldGMuXG4gIEFuaW1hdGlvbkNvbnRyb2xDaGFuZ2UgPSAnYW5pbWF0aW9uLWNvbnRyb2wtY2hhbmdlLWV2ZW50JyxcblxuICAvLyBub3RpZnkgdGhlIHNoZWV0IGhhcyBiZWVuIHJlbmFtZWRcbiAgUmVuYW1lU2hlZXROb3RpZmljYXRpb24gPSAncmVuYW1lLXNoZWV0LW5vdGlmaWNhdGlvbi1ldmVudCcsXG5cbiAgLy8gdXBkYXRlIHRoZSB3ZWIgcXVhbnRpdGF0aXZlIGNvbG9yIGRpYWxvZ1xuICBXZWJRdWFudGl0YXRpdmVDb2xvckRpYWxvZyA9ICd3ZWItcXVhbnRpdGF0aXZlLWNvbG9yLWRpYWxvZy1ldmVudCcsXG5cbiAgLy8gdXBkYXRlIHRoZSBheGlzIGVkaXQgZGlhbG9nXG4gIFVwZGF0ZUVkaXRBeGlzRGlhbG9nID0gJ3VwZGF0ZS1lZGl0LWF4aXMtZGlhbG9nLWV2ZW50JyxcblxuICAvLyBldmVudCBmb3IgdGhlIHJlZmVyZW5jZSBsaW5lIGRpYWxvZywgd2hpY2ggaXMgb25seSB2YWxpZCBkdXJpbmcgd2ViIGF1dGhvcmluZ1xuICBVcGRhdGVSZWZMaW5lRGlhbG9nID0gJ3VwZGF0ZS1yZWYtbGluZS1kaWFsb2ctZXZlbnQnLFxuXG4gIC8vIGV2ZW50IHRvIHRyaWdnZXIgb3RoZXIgcmVmZXJlbmNlIGxpbmUgZGlhbG9ncyB0byBjbG9zZVxuICBSZWZMaW5lRGlhbG9nT3BlbmluZyA9ICdyZWYtbGluZS1kaWFsb2ctb3BlbmluZy1ldmVudCcsXG5cbiAgLy8gZXZlbnQgZm9yIHRoZSBjbG9zZSBkYXRhIHNvdXJjZSBlcnJvciBkaWFsb2csIHdoaWNoIGlzIG9ubHkgdmFsaWQgZHVyaW5nIHdlYiBhdXRob3JpbmdcbiAgQ2xvc2VEYXRhU291cmNlRXJyb3JEaWFsb2cgPSAnY2xvc2UtZGF0YS1zb3VyY2UtZXJyb3ItZGlhbG9nLWV2ZW50JyxcblxuICAvLyB1cGRhdGUgdGhlIHdlYiBTYXZlIERhdGFzb3VyY2UgZGlhbG9nXG4gIFdlYlNhdmVEYXRhc291cmNlRGlhbG9nID0gJ3dlYi1zYXZlLWRhdGFzb3VyY2UtZGlhbG9nLWV2ZW50JyxcblxuICAvLyB3YXJuaW5nIHJlc3VsdGluZyBmcm9tIFdhcm5pbmdNc2dcbiAgV2FybmluZ01lc3NhZ2UgPSAnd2FybmluZy1tZXNzYWdlLWV2ZW50JyxcblxuICAvLyBldmVudCBmb3IgdGhlIHRhYmxlIGNhbGMgZGlhbG9nLCBvbiB3ZWIsIHRoaXMgaXMgb25seSB2YWxpZCBkdXJpbmcgd2ViIGF1dGhvcmluZ1xuICBUYWJsZUNhbGNEaWFsb2cgPSAndGFibGUtY2FsYy1kaWFsb2ctZXZlbnQnLFxuXG4gIC8vIHVzZXIgaW52b2tlZCBhY3Rpb24gd2hpY2ggcmVxdWlyZXMgVGFibGUgQ2FsYyBEaWFsb2dcbiAgVGFibGVDYWxjQWN0aXZhdGVEaWFsb2cgPSAndGFibGUtY2FsYy1hY3RpdmF0ZS1kaWFsb2ctZXZlbnQnLFxuXG4gIC8vIGV2ZW50IGZvciB0aGUgdHJlbmQgbGluZSBkaWFsb2dcbiAgVXBkYXRlVHJlbmRMaW5lRWRpdERpYWxvZyA9ICd1cGRhdGUtdHJlbmQtbGluZS1lZGl0LWRpYWxvZy1ldmVudCcsXG5cbiAgLy8gVGhlIHRhYmxlIHBhZ2UgY2FjaGUgaGFzIGJlZW4gcmVmcmVzaGVkOyBwYWdlcyBtdXN0IGJlIHJlbG9hZGVkIGZyb20gdGhlIGNhY2hlLlxuICBQYWdlQ2FjaGVSZWZyZXNoID0gJ3BhZ2UtY2FjaGUtcmVmcmVzaC1ldmVudCcsXG5cbiAgLy8gVGhlIHRhYmxlIHBhZ2UgY2FjaGUgaGFzIGV4cGlyZWQgYW5kIGFsbCByZXNvdXJjZXMgaGF2ZSBiZWVuIHJlbGVhc2VkLlxuICBQYWdlQ2FjaGVFeHBpcmVkID0gJ3BhZ2UtY2FjaGUtZXhwaXJlZC1ldmVudCcsXG5cbiAgLy8gQWxsIHBhZ2VzLCBpZGVudGlmaWVkIGJ5IHJvdy9jb2wsIGluIHRoZSBwcm92aWRlZCBsaXN0IGhhdmUgZXhwaXJlZCBhbmQgc2hvdWxkIGJlIHJlbG9hZGVkLlxuICBQYWdlQ2FjaGVQYWdlc0V4cGlyZWQgPSAncGFnZS1jYWNoZS1wYWdlcy1leHBpcmVkLWV2ZW50JyxcblxuICAvLyBBbGwgcGFnZXMgYmV0d2VlbSB0aGUgcmFuZ2UgKGluY2x1c2l2ZSkgaW4gdGhlIHByb3ZpZGVkIGxpc3QgaGF2ZSBleHBpcmVkIGFuZCBzaG91bGQgYmUgcmVsb2FkZWQuXG4gIFBhZ2VDYWNoZVBhZ2VSYW5nZUV4cGlyZWQgPSAncGFnZS1jYWNoZS1wYWdlLXJhbmdlLWV4cGlyZWQtZXZlbnQnLFxuXG4gIC8vIFVwZGF0ZSBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgZGlhbG9nXG4gIFJpY2hUZXh0RWRpdG9yRGlhbG9nID0gJ3JpY2gtdGV4dC1lZGl0b3ItZGlhbG9nLWV2ZW50JyxcblxuICAvLyBUcmlnZ2VyZWQgd2hlbiB0aGUgdXNlciB3YW50cyB0byByZWxvYWQgYW4gYWRkLWluIGluc3RhbmNlLlxuICBSZWxvYWRBZGRJbiA9ICdyZWxvYWQtYWRkLWluLWV2ZW50JyxcblxuICAvLyBUcmlnZ2VyZWQgd2hlbiB0aGUgc2VsZWN0ZWQgbWFya3MgaGF2ZSBjaGFuZ2VkLlxuICBTZWxlY3Rpb25DaGFuZ2VkID0gJ3NlbGVjdGlvbi1jaGFuZ2VkLWV2ZW50JyxcblxuICAvLyBUcmlnZ2VyZWQgd2hlbiB0aGUgdmFsdWUgb2YgYSBwYXJhbWV0ZXIgaGFzIGNoYW5nZWQuIEVtaXRzIHRoZSBuYW1lIGFuZCBjYXB0aW9uIG9mIHRoZSBwYXJhbWV0ZXJcbiAgUGFyYW1ldGVyQ2hhbmdlZCA9ICdwYXJhbWV0ZXItY2hhbmdlZC1ldmVudCcsXG5cbiAgLy8gVHJpZ2dlcmVkIHdoZW4gdGhlIGZpbHRlcnMgaGF2ZSBjaGFuZ2VkLlxuICBGaWx0ZXJDaGFuZ2VkID0gJ2ZpbHRlci1jaGFuZ2VkLWV2ZW50JyxcblxuICAvLyBub3RpZmljYXRpb24gdG8gbGF1bmNoIHRoZSBoeWJyaWQgVUkgc2hvd2Nhc2VcbiAgTGF1bmNoSHlicmlkVUlTaG93Y2FzZSA9ICdsYXVuY2gtaHlicmlkLXVpc2hvd2Nhc2UtZXZlbnQnLFxuXG4gIC8vIG5vdGlmaWNhdGlvbiBvZiBuZXcgZWNob2VkIHRleHQgZm9yIEh5YnJpZFVJIHNob3djYXNlIGRlbW9cbiAgSHlicmlkVUlTaG93Y2FzZUVjaG8gPSAnaHlicmlkLXVpc2hvd2Nhc2UtZWNoby1ldmVudCcsXG5cbiAgLy8gZXZlbnQgZm9yIHRoZSBiaW4gZGlhbG9nXG4gIFVwZGF0ZU51bWVyaWNCaW5FZGl0RGlhbG9nID0gJ3VwZGF0ZS1udW1lcmljLWJpbi1lZGl0LWRpYWxvZy1ldmVudCcsXG5cbiAgLy8gYSB0ZXN0IGV2ZW50IHdpdGggYSBwcmVzIG1vZGVsXG4gIFRlc3RFdmVudFdpdGhNb2RlbCA9ICd0ZXN0LWV2ZW50LXdpdGgtbW9kZWwtZXZlbnQnLFxuXG4gIC8vIGEgdGVzdCBldmVudCB3aXRob3V0IGEgcHJlcyBtb2RlbFxuICBUZXN0RXZlbnRXaXRob3V0TW9kZWwgPSAndGVzdC1ldmVudC13aXRob3V0LW1vZGVsLWV2ZW50J1xufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWNvcmUvZ2VuLXNyYy9wcmVzbGF5ZXIvRXZlbnRzLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQXBpIGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5pbXBvcnQgeyBQYXJhbSB9IGZyb20gJ0B0YWJsZWF1L2FwaS11dGlscyc7XG5cbmltcG9ydCAqIGFzIFByZXNMYXllciBmcm9tICcuLi8uLi9nZW4tc3JjL3ByZXNsYXllci9QcmVzTW9kZWxzJztcbmltcG9ydCB7IFByZXNMYXllclRvQXBpRW51bU1hcHBpbmdzIGFzIEVudW1NYXBwaW5ncyB9IGZyb20gJy4vRW51bU1hcHBpbmdzJztcblxuLyoqXG4gKiBDbGFzcyBjb250YWluaW5nIGhlbHBlciBtZXRob2RzIGZvciBjb252ZXJ0aW5nIGZyb20gUHJlc0xheWVyUHJlc01vZGVscyB0byB0aGVpciBBcGlQcmVzTW9kZWxzIGVxdWl2YWxlbnRzXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIFByZXNMYXllclRvQXBpQ29udmVydGVyXG4gKi9cbmV4cG9ydCBjbGFzcyBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlciB7XG4gIHB1YmxpYyBzdGF0aWMgUEFSQU1FVEVSU19EQl9OQU1FOiBzdHJpbmcgPSAnUGFyYW1ldGVycyc7XG5cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0U2hlZXRQYXRoKHBsU2hlZXRQYXRoOiBQcmVzTGF5ZXIuU2hlZXRQYXRoUHJlc01vZGVsKTogQXBpLlNoZWV0UGF0aCB7XG4gICAgY29uc3QgcmVzdWx0OiBBcGkuU2hlZXRQYXRoID0ge1xuICAgICAgc2hlZXROYW1lOiBwbFNoZWV0UGF0aC5zaGVldE5hbWUsXG4gICAgICBpc0Rhc2hib2FyZDogcGxTaGVldFBhdGguaXNEYXNoYm9hcmQsXG4gICAgICBzdG9yeWJvYXJkOiBwbFNoZWV0UGF0aC5zdG9yeWJvYXJkLFxuICAgICAgZmxpcGJvYXJkWm9uZUlEOiBwbFNoZWV0UGF0aC5mbGlwYm9hcmRab25lSWQsXG4gICAgICBzdG9yeVBvaW50SUQ6IHBsU2hlZXRQYXRoLnN0b3J5UG9pbnRJZCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFZpc3VhbElkKHBsVmlzdWFsSWQ6IFByZXNMYXllci5WaXN1YWxJRFByZXNNb2RlbCk6IEFwaS5WaXN1YWxJZCB7XG4gICAgY29uc3QgcmVzdWx0OiBBcGkuVmlzdWFsSWQgPSB7XG4gICAgICB3b3Jrc2hlZXQ6IHBsVmlzdWFsSWQud29ya3NoZWV0LFxuICAgICAgZGFzaGJvYXJkOiBwbFZpc3VhbElkLmRhc2hib2FyZCxcbiAgICAgIHN0b3J5Ym9hcmQ6IHBsVmlzdWFsSWQuc3Rvcnlib2FyZCxcbiAgICAgIGZsaXBib2FyZFpvbmVJRDogcGxWaXN1YWxJZC5mbGlwYm9hcmRab25lSWQsXG4gICAgICBzdG9yeVBvaW50SUQ6IHBsVmlzdWFsSWQuc3RvcnlQb2ludElkLFxuICAgIH07XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0RXh0ZW5zaW9uTG9jYXRvcihwbEFkZEluTG9jYXRvcjogUHJlc0xheWVyLkFkZEluTG9jYXRvclByZXNNb2RlbCk6IEFwaS5FeHRlbnNpb25Mb2NhdG9yIHtcbiAgICBsZXQgZGFzaGJvYXJkUGF0aCA9IHVuZGVmaW5lZDtcbiAgICBpZiAocGxBZGRJbkxvY2F0b3Iuc2hlZXRQYXRoKSB7XG4gICAgICBkYXNoYm9hcmRQYXRoID0gUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIuY29udmVydFNoZWV0UGF0aChwbEFkZEluTG9jYXRvci5zaGVldFBhdGgpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdDogQXBpLkV4dGVuc2lvbkxvY2F0b3IgPSB7XG4gICAgICBpbnN0YW5jZUlkOiBwbEFkZEluTG9jYXRvci5hZGRJbkluc3RhbmNlSWQsXG4gICAgICBkYXNoYm9hcmRQYXRoOiBkYXNoYm9hcmRQYXRoXG4gICAgfTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnREYXNoYm9hcmRJblpvbmVzKHBsRGFzaGJvYXJkOiBQcmVzTGF5ZXIuRGFzaGJvYXJkUHJlc01vZGVsKTogQXJyYXk8QXBpLkRhc2hib2FyZFpvbmU+IHtcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgQXJyYXk8QXBpLkRhc2hib2FyZFpvbmU+KCk7XG5cbiAgICBmb3IgKGNvbnN0IHpvbmVLZXkgb2YgT2JqZWN0LmtleXMocGxEYXNoYm9hcmQuem9uZXMpKSB7XG4gICAgICBjb25zdCB6b25lID0gcGxEYXNoYm9hcmQuem9uZXNbem9uZUtleV07XG4gICAgICBsZXQgYXBpWm9uZTogQXBpLkRhc2hib2FyZFpvbmUgPSB7XG4gICAgICAgIG5hbWU6IHpvbmUuem9uZUNvbW1vbi5uYW1lLFxuICAgICAgICB6b25lSWQ6IHpvbmUuem9uZUlkLFxuICAgICAgICB6b25lVHlwZTogRW51bU1hcHBpbmdzLnpvbmVUeXBlLmNvbnZlcnQoem9uZS56b25lQ29tbW9uLnpvbmVUeXBlKSxcbiAgICAgICAgaGVpZ2h0OiB6b25lLnpvbmVDb21tb24uaCxcbiAgICAgICAgd2lkdGg6IHpvbmUuem9uZUNvbW1vbi53LFxuICAgICAgICB4OiB6b25lLnpvbmVDb21tb24ueCxcbiAgICAgICAgeTogem9uZS56b25lQ29tbW9uLnlcbiAgICAgIH07XG5cbiAgICAgIHJlc3VsdC5wdXNoKGFwaVpvbmUpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnREYXNoYm9hcmRJbmZvKHBsRGFzaGJvYXJkSW5mbzogUHJlc0xheWVyLkFkZEluRGFzaGJvYXJkSW5mb1ByZXNNb2RlbCk6IEFwaS5FeHRlbnNpb25EYXNoYm9hcmRJbmZvIHtcbiAgICBjb25zdCByZXN1bHQ6IEFwaS5FeHRlbnNpb25EYXNoYm9hcmRJbmZvID0ge1xuICAgICAgem9uZXM6IFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnREYXNoYm9hcmRJblpvbmVzKHBsRGFzaGJvYXJkSW5mby5kYXNoYm9hcmRQcmVzTW9kZWwpLFxuICAgICAgbmFtZTogcGxEYXNoYm9hcmRJbmZvLmRhc2hib2FyZFByZXNNb2RlbC5zaGVldFBhdGguc2hlZXROYW1lLFxuICAgICAgZXh0ZW5zaW9uWm9uZUlkOiBwbERhc2hib2FyZEluZm8uem9uZUlkLFxuICAgICAgc2l6ZTogcGxEYXNoYm9hcmRJbmZvLmRhc2hib2FyZFByZXNNb2RlbC52aWV3cG9ydFNpemVcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydEV4dGVuc2lvbkluc3RhbmNlKHBsQWRkSW5JbnN0YW5jZTogUHJlc0xheWVyLkFkZEluSW5zdGFuY2VQcmVzTW9kZWwpOiBBcGkuRXh0ZW5zaW9uSW5zdGFuY2Uge1xuICAgIGNvbnN0IHJlc3VsdDogQXBpLkV4dGVuc2lvbkluc3RhbmNlID0ge1xuICAgICAgdXJsOiBwbEFkZEluSW5zdGFuY2UuYWRkSW5SZWdpc3RyYXRpb25QcmVzTW9kZWwudXJsLFxuICAgICAgbG9jYXRvcjogUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIuY29udmVydEV4dGVuc2lvbkxvY2F0b3IocGxBZGRJbkluc3RhbmNlLmFkZEluTG9jYXRvclByZXNNb2RlbClcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydEV4dGVuc2lvbkVuaXZyaW9ubWVudChwbEFkZEluRW52aXJvbm1lbnQ6IFByZXNMYXllci5BZGRJbkVudmlyb25tZW50UHJlc01vZGVsKTogQXBpLkV4dGVuc2lvbkVudmlyb25tZW50IHtcbiAgICBjb25zdCByZXN1bHQ6IEFwaS5FeHRlbnNpb25FbnZpcm9ubWVudCA9IHtcbiAgICAgIGV4dGVuc2lvbkNvbnRleHQ6IEVudW1NYXBwaW5ncy5leHRlbnNpb25Db250ZXh0LmNvbnZlcnQocGxBZGRJbkVudmlyb25tZW50LmFkZEluQ29udGV4dCksXG4gICAgICBleHRlbnNpb25Nb2RlOiBFbnVtTWFwcGluZ3MuZXh0ZW5zaW9uTW9kZS5jb252ZXJ0KHBsQWRkSW5FbnZpcm9ubWVudC5hZGRJbk1vZGUpLFxuICAgICAgZXh0ZW5zaW9uTG9jYWxlOiBwbEFkZEluRW52aXJvbm1lbnQuYWRkSW5Mb2NhbGUsXG4gICAgICBleHRlbnNpb25MYW5ndWFnZTogcGxBZGRJbkVudmlyb25tZW50LmFkZEluTGFuZ3VhZ2UsXG4gICAgICB0YWJsZWF1VmVyc2lvbjogcGxBZGRJbkVudmlyb25tZW50LnRhYmxlYXVWZXJzaW9uLFxuICAgICAgb3BlcmF0aW5nU3lzdGVtOiBwbEFkZEluRW52aXJvbm1lbnQub3BlcmF0aW5nU3lzdGVtLFxuICAgICAgYXBpVmVyc2lvbjogcGxBZGRJbkVudmlyb25tZW50LmFwaVZlcnNpb25cbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydEV4dGVuc2lvblNldHRpbmdzSW5mbyhwbEFkZEluU2V0dGluZ3M6IFByZXNMYXllci5BZGRJblNldHRpbmdzSW5mb1ByZXNNb2RlbCk6IEFwaS5FeHRlbnNpb25TZXR0aW5nc0luZm8ge1xuICAgIGNvbnN0IHJlc3VsdDogQXBpLkV4dGVuc2lvblNldHRpbmdzSW5mbyA9IHtcbiAgICAgIC8vIGFkZEluU2V0dGluZ3MgaXMgdW5kZWZpbmVkIGR1cmluZyBib290c3RyYXAgaW5pdGlhbGl6YXRpb25cbiAgICAgIHNldHRpbmdzVmFsdWVzOiBwbEFkZEluU2V0dGluZ3MuYWRkSW5TZXR0aW5ncyB8fCB7fVxuICAgIH07XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0RXh0ZW5zaW9uQm9vdHN0cmFwSW5mbyhwbEJvb3RzdHJhcEluZm86IFByZXNMYXllci5BZGRJbkJvb3RzdHJhcEluZm9QcmVzTW9kZWwpOiBBcGkuRXh0ZW5zaW9uQm9vdHN0cmFwSW5mbyB7XG4gICAgY29uc3QgcmVzdWx0OiBBcGkuRXh0ZW5zaW9uQm9vdHN0cmFwSW5mbyA9IHtcbiAgICAgIGV4dGVuc2lvbkRhc2hib2FyZEluZm86IFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnREYXNoYm9hcmRJbmZvKHBsQm9vdHN0cmFwSW5mby5hZGRJbkRhc2hib2FyZEluZm9QcmVzTW9kZWwpLFxuICAgICAgZXh0ZW5zaW9uRW52aXJvbm1lbnQ6IFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnRFeHRlbnNpb25Fbml2cmlvbm1lbnQocGxCb290c3RyYXBJbmZvLmFkZEluRW52aXJvbm1lbnRQcmVzTW9kZWwpLFxuICAgICAgZXh0ZW5zaW9uSW5zdGFuY2U6IFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnRFeHRlbnNpb25JbnN0YW5jZShwbEJvb3RzdHJhcEluZm8uYWRkSW5JbnN0YW5jZVByZXNNb2RlbCksXG4gICAgICBleHRlbnNpb25TZXR0aW5nc0luZm86IFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnRFeHRlbnNpb25TZXR0aW5nc0luZm8ocGxCb290c3RyYXBJbmZvLmFkZEluU2V0dGluZ3NJbmZvKVxuICAgIH07XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0RmllbGRDYXB0aW9uUGFpcihwbEZpZWxkQ2FwdGlvblBhaXI6IFByZXNMYXllci5GaWVsZENhcHRpb25QYWlyUHJlc01vZGVsKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcGxGaWVsZENhcHRpb25QYWlyLmZuO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0RmlsdGVyRXZlbnQocGxGaWx0ZXJFdmVudDogUHJlc0xheWVyLkZpbHRlckNoYW5nZUV2ZW50UHJlc01vZGVsKTogQXBpLkZpbHRlckV2ZW50IHtcbiAgICBjb25zdCByZXN1bHQ6IEFwaS5GaWx0ZXJFdmVudCA9IHtcbiAgICAgIHZpc3VhbElkOiBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0VmlzdWFsSWQocGxGaWx0ZXJFdmVudC52aXN1YWxJZFByZXNNb2RlbCksXG4gICAgICBmaWVsZE5hbWU6IHBsRmlsdGVyRXZlbnQuZmllbGRDYXB0aW9uXG4gICAgfTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0RGF0YVNjaGVtYShkYXRhU2NoZW1hOiBQcmVzTGF5ZXIuRGF0YVNjaGVtYVByZXNNb2RlbCk6IEFwaS5EYXRhU2NoZW1hIHtcbiAgICBsZXQgYXBpRGF0YVNvdXJjZXM6IEFwaS5EYXRhU291cmNlTWFwID0geyB9O1xuXG4gICAgUGFyYW0udmVyaWZ5VmFsdWUoZGF0YVNjaGVtYSwgJ2RhdGFTY2hlbWEnKTtcbiAgICBQYXJhbS52ZXJpZnlWYWx1ZShkYXRhU2NoZW1hLmRhdGFTb3VyY2VzLCAnZGF0YVNjaGVtYS5kYXRhU291cmNlcycpO1xuXG4gICAgLy8gQ29udmVydCBlYWNoIHByZXMgbGF5ZXIgZGF0YXNvdXJjZSBpbiB0aGUgc2NoZW1hIHRvIGFuIEFwaSBkYXRhc291cmNlXG4gICAgT2JqZWN0LmtleXMoZGF0YVNjaGVtYS5kYXRhU291cmNlcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAvLyBTa2lwIHRoZSBkZWZhdWx0IFBhcmFtZXRlcnMgZGF0YXNvdXJjZSB3ZSByZWNlaXZlIGZyb20gdGhlIHBsYXRmb3JtLlxuICAgICAgaWYgKGRhdGFTY2hlbWEuZGF0YVNvdXJjZXNba2V5XS5kYXRhc291cmNlICE9PSBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5QQVJBTUVURVJTX0RCX05BTUUpIHtcbiAgICAgICAgYXBpRGF0YVNvdXJjZXNba2V5XSA9IFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnREYXRhU291cmNlKGRhdGFTY2hlbWEuZGF0YVNvdXJjZXNba2V5XSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBzY2hlbWFNYXAgPSBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0V29ya3NoZWV0RGF0YVNjaGVtYU1hcChkYXRhU2NoZW1hLndvcmtzaGVldERhdGFTY2hlbWFNYXApO1xuXG4gICAgY29uc3QgcmVzdWx0OiBBcGkuRGF0YVNjaGVtYSA9IHtcbiAgICAgIGRhdGFTb3VyY2VzOiBhcGlEYXRhU291cmNlcyxcbiAgICAgIHdvcmtzaGVldERhdGFTY2hlbWFNYXA6IHNjaGVtYU1hcCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydERhdGFTb3VyY2UoZGF0YVNvdXJjZTogUHJlc0xheWVyLkRhdGFTb3VyY2VQcmVzTW9kZWwpOiBBcGkuRGF0YVNvdXJjZSB7XG4gICAgY29uc3QgZXh0cmFjdFVwZGF0ZVRpbWUgPSAoZGF0YVNvdXJjZS5leHRyYWN0VXBkYXRlVGltZSA9PT0gJycpID8gdW5kZWZpbmVkIDogZGF0YVNvdXJjZS5leHRyYWN0VXBkYXRlVGltZTtcbiAgICBjb25zdCBkYXRhU291cmNlRmllbGRzID0gbmV3IEFycmF5PEFwaS5GaWVsZD4oKTtcblxuICAgIFBhcmFtLnZlcmlmeVZhbHVlKGRhdGFTb3VyY2UsICdkYXRhU291cmNlJyk7XG4gICAgUGFyYW0udmVyaWZ5VmFsdWUoZGF0YVNvdXJjZS5maWVsZExpc3QsICdkYXRhU2NoZW1hLmZpZWxkTGlzdCcpO1xuXG4gICAgZGF0YVNvdXJjZS5maWVsZExpc3QuZm9yRWFjaCgocGxGaWVsZCkgPT4ge1xuICAgICAgLy8gSWYgdGhlIGRhdGFzb3VyY2UgY29udGFpbnMgaGllcmFyY2hpZXMgb3IgZm9sZGVycywgdGhlIGJhc2UgZmllbGQgd2lsbCBjb250YWluXG4gICAgICAvLyBhIGxpc3Qgb2YgdGhlIGZpZWxkcyBncm91cGVkIGJlbmVhdGggaXQsIHdlIGFyZSBpbnRlcmVzdGVkIGluIHRob3NlLlxuICAgICAgLy8gVGFibGVhdSBkb2VzIG5vdCBzdXBwb3J0IG5lc3RlZCBmb2xkZXJzIG9yIGhpZXJhcmNoaWVzLCBzbyB0aGlzIGRvZXMgbm90IG5lZWQgdG8gYmUgcmVjdXJzaXZlLlxuICAgICAgY29uc3QgaGllcmFyY2h5TW9kZWwgPSBwbEZpZWxkIGFzIFByZXNMYXllci5IaWVyYXJjaHlQcmVzTW9kZWw7XG5cbiAgICAgIGlmIChoaWVyYXJjaHlNb2RlbC5jb2x1bW5MaXN0KSB7IC8vIElmIGNvbHVtbiBsaXN0IGlzIGRlZmluZWQsIHRoaXMgaXMgYSBoaWVyYXJjaHkuXG4gICAgICAgIGhpZXJhcmNoeU1vZGVsLmNvbHVtbkxpc3QuZm9yRWFjaChmaWVsZCA9PiBkYXRhU291cmNlRmllbGRzLnB1c2goUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIuY29udmVydEZpZWxkKGZpZWxkKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVGhpcyBpcyBhIGJpdCBicml0dGxlIGZvciBub3csIGJ1dCB0aGlzIHZhbHVlIGlzIG5vdCBleHBvc2VkIHZpYSB0aGUgcGxhdGZvcm0gRmllbGRUeXBlIEVudW0uXG4gICAgICAgIGlmIChwbEZpZWxkLnR5cGUgIT09ICdmaWVsZC1mb2xkZXInKSB7XG4gICAgICAgICAgZGF0YVNvdXJjZUZpZWxkcy5wdXNoKFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnRGaWVsZChwbEZpZWxkKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IHJlc3VsdDogQXBpLkRhdGFTb3VyY2UgPSB7XG4gICAgICBuYW1lOiBkYXRhU291cmNlLmRhdGFzb3VyY2VDYXB0aW9uLFxuICAgICAgaWQ6IGRhdGFTb3VyY2UuZGF0YXNvdXJjZSxcbiAgICAgIGlzRXh0cmFjdDogKGV4dHJhY3RVcGRhdGVUaW1lICE9PSB1bmRlZmluZWQpLFxuICAgICAgZXh0cmFjdFVwZGF0ZVRpbWU6IGV4dHJhY3RVcGRhdGVUaW1lLFxuICAgICAgZmllbGRzOiBkYXRhU291cmNlRmllbGRzXG4gICAgfTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRXb3Jrc2hlZXREYXRhU2NoZW1hTWFwKHNjaGVtYU1hcDogeyBba2V5OiBzdHJpbmddOiBQcmVzTGF5ZXIuV29ya3NoZWV0RGF0YVNjaGVtYVByZXNNb2RlbCB9KTpcbiAgICBBcGkuV29ya3NoZWV0RGF0YVNjaGVtYU1hcCB7XG5cbiAgICBsZXQgcmVzdWx0OiBBcGkuV29ya3NoZWV0RGF0YVNjaGVtYU1hcCA9IHt9O1xuXG4gICAgT2JqZWN0LmtleXMoc2NoZW1hTWFwKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIC8vIFdlIG5lZWQgdG8gcmVtb3ZlIGFueSByZWZlcmVuY2VzIHRvIHRoZSBcIlBhcmFtZXRlcnNcIiBkYXRhc291cmNlLiAgVGhpcyBpcyB0cmVhdGVkIGFzIGEgc2VwYXJhdGVcbiAgICAgIC8vIGRhdGFzb3VyY2UgYnkgdGhlIHBsYXRmb3JtLCBidXQgdGhlIEV4dGVuc2lvbnMgQVBJIGFjY2Vzc2VzIFBhcmFtZXRlcnMgZGlyZWN0bHkuXG4gICAgICBsZXQgY2xlYW5SZWZlcmVuY2VkRGF0YVNvdXJjZUxpc3QgPSBzY2hlbWFNYXBba2V5XS5yZWZlcmVuY2VkRGF0YVNvdXJjZUxpc3QuZmlsdGVyKChkc05hbWUpID0+IHtcbiAgICAgICAgcmV0dXJuIGRzTmFtZSAhPT0gUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIuUEFSQU1FVEVSU19EQl9OQU1FO1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHdvcmtzaGVldERhdGFTb3VyY2VJbmZvOiBBcGkuV29ya3NoZWV0RGF0YVNvdXJjZUluZm8gPSB7XG4gICAgICAgIHByaW1hcnlEYXRhU291cmNlOiBzY2hlbWFNYXBba2V5XS5wcmltYXJ5RGF0YXNvdXJjZSxcbiAgICAgICAgcmVmZXJlbmNlZERhdGFTb3VyY2VMaXN0OiBjbGVhblJlZmVyZW5jZWREYXRhU291cmNlTGlzdFxuICAgICAgfTtcblxuICAgICAgcmVzdWx0W2tleV0gPSB3b3Jrc2hlZXREYXRhU291cmNlSW5mbztcbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRGaWVsZChwbEZpZWxkOiBQcmVzTGF5ZXIuRmllbGRQcmVzTW9kZWwpOiBBcGkuRmllbGQge1xuICAgIGNvbnN0IGZpZWxkQ29sdW1uID0gcGxGaWVsZCBhcyBQcmVzTGF5ZXIuRmllbGRDb2x1bW5QcmVzTW9kZWw7XG4gICAgY29uc3QgZ3JvdXBDb2x1bW4gPSBwbEZpZWxkIGFzIFByZXNMYXllci5Hcm91cFByZXNNb2RlbDtcblxuICAgIGxldCBhZ2dyZWdhdGlvbiA9IEFwaS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Ob25lO1xuICAgIGxldCByb2xlID0gQXBpLkZpZWxkUm9sZVR5cGUuVW5rbm93bjtcbiAgICBsZXQgaXNDYWxjdWxhdGVkID0gZmFsc2U7XG5cbiAgICAvLyBXZSBleHBlY3QgdGhhdCBldmVyeSBGaWVsZFByZXNNb2RlbCB3ZSBnZXQgYmFjayBmcm9tIHRoZSBjb21tYW5kIHRoYXQgcmV0dXJucyBGaWVsZFByZXNNb2RlbHNcbiAgICAvLyBpcyBhY3R1YWxseSBhbiBpbnN0YW5jZSBvZiB0aGUgZGVyaXZlZCBGaWVsZENvbHVtblByZXNNb2RlbC5cbiAgICBpZiAoZmllbGRDb2x1bW4uYWdncmVnYXRpb24gJiYgZmllbGRDb2x1bW4uZmllbGRSb2xlKSB7XG4gICAgICBhZ2dyZWdhdGlvbiA9IEVudW1NYXBwaW5ncy5maWVsZEFnZ3JlZ2F0aW9uVHlwZS5jb252ZXJ0KGZpZWxkQ29sdW1uLmFnZ3JlZ2F0aW9uKTtcbiAgICAgIHJvbGUgPSBFbnVtTWFwcGluZ3MuZmllbGRSb2xlVHlwZS5jb252ZXJ0KGZpZWxkQ29sdW1uLmZpZWxkUm9sZSk7XG4gICAgICBpc0NhbGN1bGF0ZWQgPSBmaWVsZENvbHVtbi5pc0NhbGN1bGF0ZWQgfHwgZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCBJbnRlcm5hbCBFcnJvcjogZmllbGQgcHJlcyBtb2RlbCBpcyBtaXNzaW5nIGV4cGVjdGVkIHByb3BlcnRpZXMuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0OiBBcGkuRmllbGQgPSB7XG4gICAgICBuYW1lOiBwbEZpZWxkLmRlc2NyaXB0aW9uLFxuICAgICAgaWQ6IHBsRmllbGQubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwbEZpZWxkLnVzZXJDYXB0aW9uLFxuICAgICAgYWdncmVnYXRpb246IGFnZ3JlZ2F0aW9uLFxuICAgICAgaXNIaWRkZW46ICEhKHBsRmllbGQuaXNIaWRkZW4pLFxuICAgICAgaXNHZW5lcmF0ZWQ6IHBsRmllbGQuaXNHZW5lcmF0ZWQsXG4gICAgICBpc0NhbGN1bGF0ZWRGaWVsZDogaXNDYWxjdWxhdGVkLFxuICAgICAgcm9sZTogcm9sZSxcbiAgICAgIGlzQ29tYmluZWRGaWVsZDogISEoZ3JvdXBDb2x1bW4uaXNDb21iaW5lZEZpZWxkKVxuICAgIH07XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9zcmMvbWFwcGluZ3MvUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIudHNcbiAqKi8iLCJpbXBvcnQge1xuICBEYXNoYm9hcmRPYmplY3RUeXBlLFxuICBEYXRhVHlwZSxcbiAgRGF0ZVJhbmdlVHlwZSxcbiAgRGF0ZVN0ZXBQZXJpb2QsXG4gIERvbWFpblJlc3RyaWN0aW9uVHlwZSxcbiAgRXh0ZW5zaW9uQ29udGV4dCxcbiAgRXh0ZW5zaW9uTW9kZSxcbiAgRmllbGRBZ2dyZWdhdGlvblR5cGUsXG4gIEZpZWxkUm9sZVR5cGUsXG4gIEZpbHRlckRvbWFpblR5cGUsXG4gIEZpbHRlck51bGxPcHRpb24sXG4gIEZpbHRlclVwZGF0ZVR5cGVcbn0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcbmltcG9ydCB7IEVudW1Db252ZXJ0ZXIgfSBmcm9tICdAdGFibGVhdS9hcGktdXRpbHMnO1xuXG5pbXBvcnQgKiBhcyBFbnVtcyBmcm9tICcuLi8uLi9nZW4tc3JjL3ByZXNsYXllci9FbnVtcyc7XG5cbi8qIHRzbGludDpkaXNhYmxlOnR5cGVkZWYgLSBEaXNhYmxlIHRoaXMgdG8gbWFrZSBkZWNsYXJpbmcgdGhlc2UgY2xhc3NlcyBhIGJpdCBlYXNpZXIgKi9cbmV4cG9ydCBjbGFzcyBQcmVzTGF5ZXJUb0FwaUVudW1NYXBwaW5ncyB7XG4gIHB1YmxpYyBzdGF0aWMgem9uZVR5cGUgPSBuZXcgRW51bUNvbnZlcnRlcjxFbnVtcy5ab25lVHlwZSwgRGFzaGJvYXJkT2JqZWN0VHlwZT4oe1xuICAgIFtFbnVtcy5ab25lVHlwZS5aVF9JbnZhbGlkXTogRGFzaGJvYXJkT2JqZWN0VHlwZS5CbGFuayxcbiAgICBbRW51bXMuWm9uZVR5cGUuWlRfVml6XTogRGFzaGJvYXJkT2JqZWN0VHlwZS5Xb3Jrc2hlZXQsXG4gICAgW0VudW1zLlpvbmVUeXBlLlpUX0NvbG9yTGVnZW5kXTogRGFzaGJvYXJkT2JqZWN0VHlwZS5MZWdlbmQsXG4gICAgW0VudW1zLlpvbmVUeXBlLlpUX1NoYXBlTGVnZW5kXTogRGFzaGJvYXJkT2JqZWN0VHlwZS5MZWdlbmQsXG4gICAgW0VudW1zLlpvbmVUeXBlLlpUX1NpemVMZWdlbmRdOiBEYXNoYm9hcmRPYmplY3RUeXBlLkxlZ2VuZCxcbiAgICBbRW51bXMuWm9uZVR5cGUuWlRfTWFwTGVnZW5kXTogRGFzaGJvYXJkT2JqZWN0VHlwZS5MZWdlbmQsXG4gICAgW0VudW1zLlpvbmVUeXBlLlpUX1F1aWNrRmlsdGVyXTogRGFzaGJvYXJkT2JqZWN0VHlwZS5RdWlja0ZpbHRlcixcbiAgICBbRW51bXMuWm9uZVR5cGUuWlRfSGlnaGxpZ2h0ZXJdOiBEYXNoYm9hcmRPYmplY3RUeXBlLkJsYW5rLCAvLyBUT0RPXG4gICAgW0VudW1zLlpvbmVUeXBlLlpUX0N1cnJQYWdlXTogRGFzaGJvYXJkT2JqZWN0VHlwZS5QYWdlRmlsdGVyLFxuICAgIFtFbnVtcy5ab25lVHlwZS5aVF9FbXB0eV06IERhc2hib2FyZE9iamVjdFR5cGUuQmxhbmssXG4gICAgW0VudW1zLlpvbmVUeXBlLlpUX1RpdGxlXTogRGFzaGJvYXJkT2JqZWN0VHlwZS5UaXRsZSxcbiAgICBbRW51bXMuWm9uZVR5cGUuWlRfVGV4dF06IERhc2hib2FyZE9iamVjdFR5cGUuVGV4dCxcbiAgICBbRW51bXMuWm9uZVR5cGUuWlRfQml0bWFwXTogRGFzaGJvYXJkT2JqZWN0VHlwZS5JbWFnZSxcbiAgICBbRW51bXMuWm9uZVR5cGUuWlRfV2ViXTogRGFzaGJvYXJkT2JqZWN0VHlwZS5XZWJQYWdlLFxuICAgIFtFbnVtcy5ab25lVHlwZS5aVF9BZGRJbl06IERhc2hib2FyZE9iamVjdFR5cGUuRXh0ZW5zaW9uLCAvLyBUT0RPXG4gICAgW0VudW1zLlpvbmVUeXBlLlpUX1BhcmFtQ3RybF06IERhc2hib2FyZE9iamVjdFR5cGUuUGFyYW1ldGVyQ29udHJvbCxcbiAgICBbRW51bXMuWm9uZVR5cGUuWlRfRmxpcGJvYXJkTmF2XTogRGFzaGJvYXJkT2JqZWN0VHlwZS5CbGFuayxcbiAgICBbRW51bXMuWm9uZVR5cGUuWlRfRmxpcGJvYXJkXTogRGFzaGJvYXJkT2JqZWN0VHlwZS5CbGFuayxcbiAgICBbRW51bXMuWm9uZVR5cGUuWlRfTGF5b3V0QmFzaWNdOiBEYXNoYm9hcmRPYmplY3RUeXBlLkJsYW5rLFxuICAgIFtFbnVtcy5ab25lVHlwZS5aVF9MYXlvdXRGbG93XTogRGFzaGJvYXJkT2JqZWN0VHlwZS5CbGFuayxcbiAgICBbRW51bXMuWm9uZVR5cGUuWlRfTGF5b3V0RnJlZUZvcm1dOiBEYXNoYm9hcmRPYmplY3RUeXBlLkJsYW5rLFxuICAgIFtFbnVtcy5ab25lVHlwZS5aVF9FbmRdOiBEYXNoYm9hcmRPYmplY3RUeXBlLkJsYW5rLFxuICAgIFtFbnVtcy5ab25lVHlwZS5aVF9CdXR0b25dOiBEYXNoYm9hcmRPYmplY3RUeXBlLkJsYW5rLFxuICB9LCBEYXNoYm9hcmRPYmplY3RUeXBlLkJsYW5rKTtcblxuICBwdWJsaWMgc3RhdGljIGV4dGVuc2lvbkNvbnRleHQgPSBuZXcgRW51bUNvbnZlcnRlcjxFbnVtcy5BZGRJbkNvbnRleHQsIEV4dGVuc2lvbkNvbnRleHQ+KHtcbiAgICBbRW51bXMuQWRkSW5Db250ZXh0LlVua25vd25dOiBFeHRlbnNpb25Db250ZXh0LlVua25vd24sXG4gICAgW0VudW1zLkFkZEluQ29udGV4dC5EZXNrdG9wXTogRXh0ZW5zaW9uQ29udGV4dC5EZXNrdG9wLFxuICAgIFtFbnVtcy5BZGRJbkNvbnRleHQuU2VydmVyXTogRXh0ZW5zaW9uQ29udGV4dC5TZXJ2ZXJcbiAgfSk7XG5cbiAgcHVibGljIHN0YXRpYyBleHRlbnNpb25Nb2RlID0gbmV3IEVudW1Db252ZXJ0ZXI8RW51bXMuQWRkSW5Nb2RlLCBFeHRlbnNpb25Nb2RlPih7XG4gICAgW0VudW1zLkFkZEluTW9kZS5Vbmtub3duXTogRXh0ZW5zaW9uTW9kZS5Vbmtub3duLFxuICAgIFtFbnVtcy5BZGRJbk1vZGUuQXV0aG9yaW5nXTogRXh0ZW5zaW9uTW9kZS5BdXRob3JpbmcsXG4gICAgW0VudW1zLkFkZEluTW9kZS5WaWV3aW5nXTogRXh0ZW5zaW9uTW9kZS5WaWV3aW5nXG4gIH0pO1xuXG4gIHB1YmxpYyBzdGF0aWMgZGF0YVR5cGUgPSBuZXcgRW51bUNvbnZlcnRlcjxFbnVtcy5EYXRhVHlwZSwgRGF0YVR5cGU+ICh7XG4gICAgW0VudW1zLkRhdGFUeXBlLkRUX0JPT0xFQU5dOiBEYXRhVHlwZS5Cb29sLFxuICAgIFtFbnVtcy5EYXRhVHlwZS5EVF9EQVRFXTogRGF0YVR5cGUuRGF0ZSxcbiAgICBbRW51bXMuRGF0YVR5cGUuRFRfREFURVRJTUVdOiBEYXRhVHlwZS5EYXRlVGltZSxcbiAgICBbRW51bXMuRGF0YVR5cGUuRFRfSU5URUdFUl06IERhdGFUeXBlLkludCxcbiAgICBbRW51bXMuRGF0YVR5cGUuRFRfUkVBTF06IERhdGFUeXBlLkZsb2F0LFxuICAgIFtFbnVtcy5EYXRhVHlwZS5EVF9TVFJJTkddOiBEYXRhVHlwZS5TdHJpbmcsXG4gICAgW0VudW1zLkRhdGFUeXBlLkRUX1NQQVRJQUxdOiBEYXRhVHlwZS5TcGF0aWFsXG4gIH0pO1xuXG4gIHB1YmxpYyBzdGF0aWMgZmllbGRBZ2dyZWdhdGlvblR5cGUgPSBuZXcgRW51bUNvbnZlcnRlcjxFbnVtcy5BZ2dUeXBlLCBGaWVsZEFnZ3JlZ2F0aW9uVHlwZT4oe1xuICAgIFtFbnVtcy5BZ2dUeXBlLkFHR19BVFRSXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuQXR0cixcbiAgICBbRW51bXMuQWdnVHlwZS5BR0dfQVZHXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuQXZnLFxuICAgIFtFbnVtcy5BZ2dUeXBlLkFHR19DT1VOVF06IEZpZWxkQWdncmVnYXRpb25UeXBlLkNvdW50LFxuICAgIFtFbnVtcy5BZ2dUeXBlLkFHR19DT1VOVERdOiBGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Db3VudGQsXG4gICAgW0VudW1zLkFnZ1R5cGUuQUdHX0RBWV06IEZpZWxkQWdncmVnYXRpb25UeXBlLkRheSxcbiAgICBbRW51bXMuQWdnVHlwZS5BR0dfRU5EXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuRW5kLFxuICAgIFtFbnVtcy5BZ2dUeXBlLkFHR19IT1VSXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuSG91cixcbiAgICBbRW51bXMuQWdnVHlwZS5BR0dfSU5PVVRdOiBGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Jbk91dCxcbiAgICBbRW51bXMuQWdnVHlwZS5BR0dfS1VSVE9TSVNdOiBGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5LdXJ0b3NpcyxcbiAgICBbRW51bXMuQWdnVHlwZS5BR0dfTUFYXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuTWF4LFxuICAgIFtFbnVtcy5BZ2dUeXBlLkFHR19NRFldOiBGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5NZHksXG4gICAgW0VudW1zLkFnZ1R5cGUuQUdHX01FRElBTl06IEZpZWxkQWdncmVnYXRpb25UeXBlLk1lZGlhbixcbiAgICBbRW51bXMuQWdnVHlwZS5BR0dfTUlOXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuTWluLFxuICAgIFtFbnVtcy5BZ2dUeXBlLkFHR19NSU5VVEVdOiBGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5NaW51dGUsXG4gICAgW0VudW1zLkFnZ1R5cGUuQUdHX01PTlRIWUVBUl06IEZpZWxkQWdncmVnYXRpb25UeXBlLk1vbnRoWWVhcixcbiAgICBbRW51bXMuQWdnVHlwZS5BR0dfTk9ORV06IEZpZWxkQWdncmVnYXRpb25UeXBlLk5vbmUsXG4gICAgW0VudW1zLkFnZ1R5cGUuQUdHX1FUUl06IEZpZWxkQWdncmVnYXRpb25UeXBlLlF0cixcbiAgICBbRW51bXMuQWdnVHlwZS5BR0dfUVVBUlQxXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuUXVhcnQxLFxuICAgIFtFbnVtcy5BZ2dUeXBlLkFHR19RVUFSVDNdOiBGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5RdWFydDMsXG4gICAgW0VudW1zLkFnZ1R5cGUuQUdHX1NFQ09ORF06IEZpZWxkQWdncmVnYXRpb25UeXBlLlNlY29uZCxcbiAgICBbRW51bXMuQWdnVHlwZS5BR0dfU0tFV05FU1NdOiBGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Ta2V3bmVzcyxcbiAgICBbRW51bXMuQWdnVHlwZS5BR0dfU1RERVZdOiBGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5TdGRldixcbiAgICBbRW51bXMuQWdnVHlwZS5BR0dfU1RERVZQXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuU3RkZXZwLFxuICAgIFtFbnVtcy5BZ2dUeXBlLkFHR19TVU1dOiBGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5TdW0sXG4gICAgW0VudW1zLkFnZ1R5cGUuVFJVTkNfREFZXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNEYXksXG4gICAgW0VudW1zLkFnZ1R5cGUuVFJVTkNfSE9VUl06IEZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jSG91cixcbiAgICBbRW51bXMuQWdnVHlwZS5UUlVOQ19NSU5VVEVdOiBGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5UcnVuY01pbnV0ZSxcbiAgICBbRW51bXMuQWdnVHlwZS5UUlVOQ19NT05USF06IEZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jTW9udGgsXG4gICAgW0VudW1zLkFnZ1R5cGUuVFJVTkNfUVRSXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNRdHIsXG4gICAgW0VudW1zLkFnZ1R5cGUuVFJVTkNfU0VDT05EXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNTZWNvbmQsXG4gICAgW0VudW1zLkFnZ1R5cGUuVFJVTkNfV0VFS106IEZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jV2VlayxcbiAgICBbRW51bXMuQWdnVHlwZS5UUlVOQ19ZRUFSXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNZZWFyLFxuICAgIFtFbnVtcy5BZ2dUeXBlLkFHR19VU0VSXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuVXNlcixcbiAgICBbRW51bXMuQWdnVHlwZS5BR0dfVkFSXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuVmFyLFxuICAgIFtFbnVtcy5BZ2dUeXBlLkFHR19WQVJQXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuVmFycCxcbiAgICBbRW51bXMuQWdnVHlwZS5BR0dfV0VFS106IEZpZWxkQWdncmVnYXRpb25UeXBlLldlZWssXG4gICAgW0VudW1zLkFnZ1R5cGUuQUdHX1dFRUtEQVldOiBGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5XZWVrZGF5LFxuICAgIFtFbnVtcy5BZ2dUeXBlLkFHR19ZRUFSXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuWWVhcixcbiAgfSk7XG5cbiAgcHVibGljIHN0YXRpYyBmaWVsZFJvbGVUeXBlID0gbmV3IEVudW1Db252ZXJ0ZXI8RW51bXMuRmllbGRSb2xlLCBGaWVsZFJvbGVUeXBlPih7XG4gICAgW0VudW1zLkZpZWxkUm9sZS5ST0xFX0RJTUVOU0lPTl06IEZpZWxkUm9sZVR5cGUuRGltZW5zaW9uLFxuICAgIFtFbnVtcy5GaWVsZFJvbGUuUk9MRV9NRUFTVVJFXTogRmllbGRSb2xlVHlwZS5NZWFzdXJlXG4gIH0pO1xuXG4gIHB1YmxpYyBzdGF0aWMgcGFyYW1ldGVyVHlwZXNEb21haW5UeXBlID0gbmV3IEVudW1Db252ZXJ0ZXI8RW51bXMuUGFyYW1ldGVyVHlwZXNEb21haW5UeXBlLCBEb21haW5SZXN0cmljdGlvblR5cGU+KHtcbiAgICBbRW51bXMuUGFyYW1ldGVyVHlwZXNEb21haW5UeXBlLkRvbWFpbl9BbnldOiBEb21haW5SZXN0cmljdGlvblR5cGUuQWxsLFxuICAgIFtFbnVtcy5QYXJhbWV0ZXJUeXBlc0RvbWFpblR5cGUuRG9tYWluX0xpc3RdOiBEb21haW5SZXN0cmljdGlvblR5cGUuTGlzdCxcbiAgICBbRW51bXMuUGFyYW1ldGVyVHlwZXNEb21haW5UeXBlLkRvbWFpbl9SYW5nZV06IERvbWFpblJlc3RyaWN0aW9uVHlwZS5SYW5nZSxcbiAgfSk7XG5cbiAgcHVibGljIHN0YXRpYyBkYXRlU3RlcFBlcmlvZCA9IG5ldyBFbnVtQ29udmVydGVyPEVudW1zLkRhdGVQZXJpb2RUeXBlLCBEYXRlU3RlcFBlcmlvZD4oe1xuICAgIFtFbnVtcy5EYXRlUGVyaW9kVHlwZS5QZXJpb2RZZWFyXTogRGF0ZVN0ZXBQZXJpb2QuWWVhcnMsXG4gICAgW0VudW1zLkRhdGVQZXJpb2RUeXBlLlBlcmlvZFF1YXJ0ZXJdOiBEYXRlU3RlcFBlcmlvZC5RdWFydGVycyxcbiAgICBbRW51bXMuRGF0ZVBlcmlvZFR5cGUuUGVyaW9kTW9udGhdOiBEYXRlU3RlcFBlcmlvZC5Nb250aHMsXG4gICAgW0VudW1zLkRhdGVQZXJpb2RUeXBlLlBlcmlvZFdlZWtdOiBEYXRlU3RlcFBlcmlvZC5XZWVrcyxcbiAgICBbRW51bXMuRGF0ZVBlcmlvZFR5cGUuUGVyaW9kRGF5XTogRGF0ZVN0ZXBQZXJpb2QuRGF5cyxcbiAgICBbRW51bXMuRGF0ZVBlcmlvZFR5cGUuUGVyaW9kSG91cl06IERhdGVTdGVwUGVyaW9kLkhvdXJzLFxuICAgIFtFbnVtcy5EYXRlUGVyaW9kVHlwZS5QZXJpb2RNaW51dGVdOiBEYXRlU3RlcFBlcmlvZC5NaW51dGVzLFxuICAgIFtFbnVtcy5EYXRlUGVyaW9kVHlwZS5QZXJpb2RTZWNvbmRdOiBEYXRlU3RlcFBlcmlvZC5TZWNvbmRzXG4gIH0pO1xuXG4gIHB1YmxpYyBzdGF0aWMgZGF0ZVJhbmdlVHlwZSA9IG5ldyBFbnVtQ29udmVydGVyPEVudW1zLkZpbHRlcnNSZWxhdGl2ZURhdGVSYW5nZVR5cGUsIERhdGVSYW5nZVR5cGU+KHtcbiAgICBbRW51bXMuRmlsdGVyc1JlbGF0aXZlRGF0ZVJhbmdlVHlwZS5SYW5nZUN1cnJlbnRdOiBEYXRlUmFuZ2VUeXBlLkN1cnJlbnQsXG4gICAgW0VudW1zLkZpbHRlcnNSZWxhdGl2ZURhdGVSYW5nZVR5cGUuUmFuZ2VDdXJyZW50VG9EYXRlXTogRGF0ZVJhbmdlVHlwZS5Ub0RhdGUsXG4gICAgW0VudW1zLkZpbHRlcnNSZWxhdGl2ZURhdGVSYW5nZVR5cGUuUmFuZ2VMYXN0MV06IERhdGVSYW5nZVR5cGUuTGFzdCxcbiAgICBbRW51bXMuRmlsdGVyc1JlbGF0aXZlRGF0ZVJhbmdlVHlwZS5SYW5nZUxhc3ROXTogRGF0ZVJhbmdlVHlwZS5MYXN0TixcbiAgICBbRW51bXMuRmlsdGVyc1JlbGF0aXZlRGF0ZVJhbmdlVHlwZS5SYW5nZU5leHQxXTogRGF0ZVJhbmdlVHlwZS5OZXh0LFxuICAgIFtFbnVtcy5GaWx0ZXJzUmVsYXRpdmVEYXRlUmFuZ2VUeXBlLlJhbmdlTmV4dE5dOiBEYXRlUmFuZ2VUeXBlLk5leHROXG4gIH0pO1xuXG4gIHB1YmxpYyBzdGF0aWMgZmlsdGVyRG9tYWluVHlwZSA9IG5ldyBFbnVtQ29udmVydGVyPEVudW1zLkZpbHRlcnNEb21haW5UeXBlLCBGaWx0ZXJEb21haW5UeXBlPiAoe1xuICAgIFtFbnVtcy5GaWx0ZXJzRG9tYWluVHlwZS5SZWxldmFudF06IEZpbHRlckRvbWFpblR5cGUuUmVsZXZhbnQsXG4gICAgW0VudW1zLkZpbHRlcnNEb21haW5UeXBlLkRhdGFiYXNlXTogRmlsdGVyRG9tYWluVHlwZS5EYXRhYmFzZVxuICB9KTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwaVRvUHJlc0xheWVyRW51bU1hcHBpbmdzIHtcbiAgcHVibGljIHN0YXRpYyBmaWx0ZXJVcGRhdGVUeXBlID0gbmV3IEVudW1Db252ZXJ0ZXI8RmlsdGVyVXBkYXRlVHlwZSwgRW51bXMuRmlsdGVyVXBkYXRlVHlwZT4gKHtcbiAgICBbRmlsdGVyVXBkYXRlVHlwZS5BZGRdOiBFbnVtcy5GaWx0ZXJVcGRhdGVUeXBlLkFERCxcbiAgICBbRmlsdGVyVXBkYXRlVHlwZS5BbGxdOiBFbnVtcy5GaWx0ZXJVcGRhdGVUeXBlLkFMTCxcbiAgICBbRmlsdGVyVXBkYXRlVHlwZS5SZXBsYWNlXTogRW51bXMuRmlsdGVyVXBkYXRlVHlwZS5SRVBMQUNFLFxuICAgIFtGaWx0ZXJVcGRhdGVUeXBlLlJlbW92ZV06IEVudW1zLkZpbHRlclVwZGF0ZVR5cGUuUkVNT1ZFXG4gIH0pO1xuXG4gIHB1YmxpYyBzdGF0aWMgbnVsbE9wdGlvbiA9IG5ldyBFbnVtQ29udmVydGVyPEZpbHRlck51bGxPcHRpb24sIEVudW1zLkZpbHRlcnNRdWFudGl0YXRpdmVJbmNsdWRlZFZhbHVlcz4gKHtcbiAgICBbRmlsdGVyTnVsbE9wdGlvbi5BbGxWYWx1ZXNdOiBFbnVtcy5GaWx0ZXJzUXVhbnRpdGF0aXZlSW5jbHVkZWRWYWx1ZXMuQWxsLFxuICAgIFtGaWx0ZXJOdWxsT3B0aW9uLk5vbk51bGxWYWx1ZXNdOiBFbnVtcy5GaWx0ZXJzUXVhbnRpdGF0aXZlSW5jbHVkZWRWYWx1ZXMuTm9uTnVsbCxcbiAgICBbRmlsdGVyTnVsbE9wdGlvbi5OdWxsVmFsdWVzXTogRW51bXMuRmlsdGVyc1F1YW50aXRhdGl2ZUluY2x1ZGVkVmFsdWVzLk51bGxcbiAgfSk7XG5cbiAgcHVibGljIHN0YXRpYyBmaWx0ZXJEb21haW5UeXBlID0gbmV3IEVudW1Db252ZXJ0ZXI8RmlsdGVyRG9tYWluVHlwZSwgRW51bXMuRmlsdGVyc0RvbWFpblR5cGU+ICh7XG4gICAgW0ZpbHRlckRvbWFpblR5cGUuUmVsZXZhbnRdOiBFbnVtcy5GaWx0ZXJzRG9tYWluVHlwZS5SZWxldmFudCxcbiAgICBbRmlsdGVyRG9tYWluVHlwZS5EYXRhYmFzZV06IEVudW1zLkZpbHRlcnNEb21haW5UeXBlLkRhdGFiYXNlXG4gIH0pO1xufVxuLyogdHNsaW50OmVuYWJsZTp0eXBlZGVmICovXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9zcmMvbWFwcGluZ3MvRW51bU1hcHBpbmdzLnRzXG4gKiovIiwiLyogdHNsaW50OmRpc2FibGUgKi9cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vL1xuLy8gVGhpcyBmaWxlIGlzIHRoZSBjb3B5cmlnaHRlZCBwcm9wZXJ0eSBvZiBUYWJsZWF1IFNvZnR3YXJlIGFuZCBpcyBwcm90ZWN0ZWRcbi8vIGJ5IHJlZ2lzdGVyZWQgcGF0ZW50cyBhbmQgb3RoZXIgYXBwbGljYWJsZSBVLlMuIGFuZCBpbnRlcm5hdGlvbmFsIGxhd3MgYW5kXG4vLyByZWd1bGF0aW9ucy5cbi8vXG4vLyBVbmxpY2Vuc2VkIHVzZSBvZiB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGlzIHByb2hpYml0ZWQuIFBsZWFzZSByZWZlciB0b1xuLy8gdGhlIE5PVElDRVMudHh0IGZpbGUgZm9yIGZ1cnRoZXIgZGV0YWlscy5cbi8vXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gV0FSTklORzogQ29tcHV0ZXIgZ2VuZXJhdGVkIGZpbGUuICBEbyBub3QgaGFuZCBtb2RpZnkuXG4vLyBERVBFTkRTIE9OOiBbJy4uL3R5cGVzY3JpcHQvanMtYXBpL2FwaS1jb3JlL25vZGVfbW9kdWxlcy9AdGFibGVhdS9wcmVzbGF5ZXItY29kZWdlbi10eXBlc2NyaXB0L3RlbXBsYXRlcy9lbnVtLXRzLnRlbXBsYXRlJywgdScuLi90eXBlc2NyaXB0L2pzLWFwaS9hcGktY29yZS90ZW1wLXByZXMtbGF5ZXIvYWxsLWVudW1zLmRhdGEnXVxuXG4vLyBcbmV4cG9ydCBlbnVtIERhdGFTY2FsaW5nIHtcblxuICAvLyBcbiAgU0NBTElOR19OT05FID0gJ25vbmUnLFxuXG4gIC8vIFxuICBTQ0FMSU5HX1NUQU5EQVJESVpFRCA9ICdzdGFuZGFyZGl6ZWQnLFxuXG4gIC8vIFxuICBTQ0FMSU5HX05PUk1BTElaRUQgPSAnbm9ybWFsaXplZCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBGb3JlY2FzdE1vZGVsVHlwZSB7XG5cbiAgLy8gXG4gIEZvcmVjYXN0TW9kZWxUeXBlQXV0b1NlYXNvbiA9ICdhdXRvLXNlYXNvbicsXG5cbiAgLy8gXG4gIEZvcmVjYXN0TW9kZWxUeXBlQXV0byA9ICdhdXRvJyxcblxuICAvLyBcbiAgRm9yZWNhc3RNb2RlbFR5cGVDdXN0b20gPSAnY3VzdG9tJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEZvcmVjYXN0UmFuZ2VUeXBlIHtcblxuICAvLyBcbiAgRm9yZWNhc3RSYW5nZVR5cGVBdXRvID0gJ2F1dG8nLFxuXG4gIC8vIFxuICBGb3JlY2FzdFJhbmdlVHlwZU5leHQgPSAnbmV4dCcsXG5cbiAgLy8gXG4gIEZvcmVjYXN0UmFuZ2VUeXBlRW5kT2YgPSAnZW5kLW9mJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEZvcmVjYXN0U3RhdHVzIHtcblxuICAvLyBcbiAgRlNfVkFMSUQgPSAnZnMtdmFsaWQnLFxuXG4gIC8vIFxuICBGU19JTlZBTElEX0RBVEVUSU1FID0gJ2ZzLWludmFsaWQtZGF0ZXRpbWUnLFxuXG4gIC8vIFxuICBGU19JTlZBTElEX1JFU1BPTlNFID0gJ2ZzLWludmFsaWQtcmVzcG9uc2UnLFxuXG4gIC8vIFxuICBGU19ORUVEX01PUkVfREFUQSA9ICdmcy1uZWVkLW1vcmUtZGF0YScsXG5cbiAgLy8gXG4gIEZTX1RJTUVfU0VSSUVTX1RPT19TSE9SVCA9ICdmcy10aW1lLXNlcmllcy10b28tc2hvcnQnLFxuXG4gIC8vIFxuICBGU19USU1FX1NFUklFU19JUlJFR1VMQVIgPSAnZnMtdGltZS1zZXJpZXMtaXJyZWd1bGFyJyxcblxuICAvLyBcbiAgRlNfTlVMTF9EQVRFVElNRSA9ICdmcy1udWxsLWRhdGV0aW1lJyxcblxuICAvLyBcbiAgRlNfTlVMTF9SRVNQT05TRSA9ICdmcy1udWxsLXJlc3BvbnNlJyxcblxuICAvLyBcbiAgRlNfTUVUQURBVEFfSU5WQUxJRCA9ICdmcy1tZXRhZGF0YS1pbnZhbGlkJyxcblxuICAvLyBcbiAgRlNfTk9fUkVTUE9OU0UgPSAnZnMtbm8tcmVzcG9uc2UnLFxuXG4gIC8vIFxuICBGU19FWENFU1NfREFUQSA9ICdmcy1leGNlc3MtZGF0YScsXG5cbiAgLy8gXG4gIEZTX0VYQ0VTU19QQVJUSVRJT05TID0gJ2ZzLWV4Y2Vzcy1wYXJ0aXRpb25zJyxcblxuICAvLyBcbiAgRlNfRElNRU5TSU9OX0lOVkFMSUQgPSAnZnMtZGltZW5zaW9uLWludmFsaWQnLFxuXG4gIC8vIFxuICBGU19UQUJMRUNBTENfSU5WQUxJRCA9ICdmcy10YWJsZWNhbGMtaW52YWxpZCcsXG5cbiAgLy8gXG4gIEZTX1RJTUVfU0VSSUVTX1RPT19JUlJFR1VMQVIgPSAnZnMtdGltZS1zZXJpZXMtdG9vLWlycmVndWxhcicsXG5cbiAgLy8gXG4gIEZTX0FHR1JFR0FURV9GSUxURVIgPSAnZnMtYWdncmVnYXRlLWZpbHRlcicsXG5cbiAgLy8gXG4gIEZTX0RJU0FHR1JFR0FURV9SRVNQT05TRSA9ICdmcy1kaXNhZ2dyZWdhdGUtcmVzcG9uc2UnLFxuXG4gIC8vIFxuICBGU19QRVJDRU5UQUdFX0lOVkFMSUQgPSAnZnMtcGVyY2VudGFnZS1pbnZhbGlkJyxcblxuICAvLyBcbiAgRlNfVE9UQUxfSU5WQUxJRCA9ICdmcy10b3RhbC1pbnZhbGlkJyxcblxuICAvLyBcbiAgRlNfRVhDRVNTX0RBVEVUSU1FID0gJ2ZzLWV4Y2Vzcy1kYXRldGltZScsXG5cbiAgLy8gXG4gIEZTX0RBVEVfQUdHX0lOQ09NUEFUSUJMRSA9ICdmcy1kYXRlLWFnZy1pbmNvbXBhdGlibGUnLFxuXG4gIC8vIFxuICBGU19USU1FX1NFUklFU19OT1RfUE9TSVRJVkUgPSAnZnMtdGltZS1zZXJpZXMtbm90LXBvc2l0aXZlJyxcblxuICAvLyBcbiAgRlNfUkVRVUVTVEVEX01PREVMX0lOVkFMSUQgPSAnZnMtcmVxdWVzdGVkLW1vZGVsLWludmFsaWQnLFxuXG4gIC8vIFxuICBGU19UT09fU0hPUlRfRk9SX1NFQVNPTiA9ICdmcy10b28tc2hvcnQtZm9yLXNlYXNvbicsXG5cbiAgLy8gXG4gIEZTX1JFUVVFU1RFRF9NT0RFTF9VTlNUQUJMRSA9ICdmcy1yZXF1ZXN0ZWQtbW9kZWwtdW5zdGFibGUnLFxuXG4gIC8vIFxuICBGU19VTkRFRklORUQgPSAnZnMtdW5kZWZpbmVkJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFN0eWxlQXR0cmlidXRlIHtcblxuICAvLyBcbiAgc2FBbHRlcm5hdGVUZXh0ID0gJ3NhQWx0ZXJuYXRlVGV4dCcsXG5cbiAgLy8gXG4gIHNhQWx0TWFya0NvbG9yID0gJ3NhQWx0TWFya0NvbG9yJyxcblxuICAvLyBcbiAgc2FBc3BlY3QgPSAnc2FBc3BlY3QnLFxuXG4gIC8vIFxuICBzYUF1dG9TdWJ0aXRsZSA9ICdzYUF1dG9TdWJ0aXRsZScsXG5cbiAgLy8gXG4gIHNhQmFja2dyb3VuZENvbG9yID0gJ3NhQmFja2dyb3VuZENvbG9yJyxcblxuICAvLyBcbiAgc2FCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5ID0gJ3NhQmFja2dyb3VuZFRyYW5zcGFyZW5jeScsXG5cbiAgLy8gXG4gIHNhQmFuZFNpemUgPSAnc2FCYW5kU2l6ZScsXG5cbiAgLy8gXG4gIHNhQmFuZENvbG9yID0gJ3NhQmFuZENvbG9yJyxcblxuICAvLyBcbiAgc2FCYW5kTGV2ZWwgPSAnc2FCYW5kTGV2ZWwnLFxuXG4gIC8vIFxuICBzYUJvZHlUeXBlID0gJ3NhQm9keVR5cGUnLFxuXG4gIC8vIFxuICBzYUJvcmRlckNvbG9yID0gJ3NhQm9yZGVyQ29sb3InLFxuXG4gIC8vIFxuICBzYUJvcmRlckNvbG9yVG9wID0gJ3NhQm9yZGVyQ29sb3JUb3AnLFxuXG4gIC8vIFxuICBzYUJvcmRlckNvbG9yUmlnaHQgPSAnc2FCb3JkZXJDb2xvclJpZ2h0JyxcblxuICAvLyBcbiAgc2FCb3JkZXJDb2xvckJvdHRvbSA9ICdzYUJvcmRlckNvbG9yQm90dG9tJyxcblxuICAvLyBcbiAgc2FCb3JkZXJDb2xvckxlZnQgPSAnc2FCb3JkZXJDb2xvckxlZnQnLFxuXG4gIC8vIFxuICBzYUJvcmRlclN0eWxlID0gJ3NhQm9yZGVyU3R5bGUnLFxuXG4gIC8vIFxuICBzYUJvcmRlclN0eWxlVG9wID0gJ3NhQm9yZGVyU3R5bGVUb3AnLFxuXG4gIC8vIFxuICBzYUJvcmRlclN0eWxlUmlnaHQgPSAnc2FCb3JkZXJTdHlsZVJpZ2h0JyxcblxuICAvLyBcbiAgc2FCb3JkZXJTdHlsZUJvdHRvbSA9ICdzYUJvcmRlclN0eWxlQm90dG9tJyxcblxuICAvLyBcbiAgc2FCb3JkZXJTdHlsZUxlZnQgPSAnc2FCb3JkZXJTdHlsZUxlZnQnLFxuXG4gIC8vIFxuICBzYUJvcmRlcldpZHRoID0gJ3NhQm9yZGVyV2lkdGgnLFxuXG4gIC8vIFxuICBzYUJvcmRlcldpZHRoVG9wID0gJ3NhQm9yZGVyV2lkdGhUb3AnLFxuXG4gIC8vIFxuICBzYUJvcmRlcldpZHRoUmlnaHQgPSAnc2FCb3JkZXJXaWR0aFJpZ2h0JyxcblxuICAvLyBcbiAgc2FCb3JkZXJXaWR0aEJvdHRvbSA9ICdzYUJvcmRlcldpZHRoQm90dG9tJyxcblxuICAvLyBcbiAgc2FCb3JkZXJXaWR0aExlZnQgPSAnc2FCb3JkZXJXaWR0aExlZnQnLFxuXG4gIC8vIFxuICBzYUJveHBsb3RTdHlsZSA9ICdzYUJveHBsb3RTdHlsZScsXG5cbiAgLy8gXG4gIHNhQnJlYWtPblNwZWNpYWwgPSAnc2FCcmVha09uU3BlY2lhbCcsXG5cbiAgLy8gXG4gIHNhQ2VsbCA9ICdzYUNlbGwnLFxuXG4gIC8vIFxuICBzYUNlbGxXID0gJ3NhQ2VsbFcnLFxuXG4gIC8vIFxuICBzYUNlbGxIID0gJ3NhQ2VsbEgnLFxuXG4gIC8vIFxuICBzYUNlbGxRID0gJ3NhQ2VsbFEnLFxuXG4gIC8vIFxuICBzYUNlbGxRTWFyayA9ICdzYUNlbGxRTWFyaycsXG5cbiAgLy8gXG4gIHNhQ29sb3IgPSAnc2FDb2xvcicsXG5cbiAgLy8gXG4gIHNhQ29sb3JNb2RlID0gJ3NhQ29sb3JNb2RlJyxcblxuICAvLyBcbiAgc2FDb2xMZXZlbHMgPSAnc2FDb2xMZXZlbHMnLFxuXG4gIC8vIFxuICBzYUNvbFZlcnRMZXZlbHMgPSAnc2FDb2xWZXJ0TGV2ZWxzJyxcblxuICAvLyBcbiAgc2FDb2xIb3JpekhlaWdodCA9ICdzYUNvbEhvcml6SGVpZ2h0JyxcblxuICAvLyBcbiAgc2FDb2xWZXJ0SGVpZ2h0ID0gJ3NhQ29sVmVydEhlaWdodCcsXG5cbiAgLy8gRGVwcmVjYXRlZFxuICBzYUNvbEhlaWdodCA9ICdzYUNvbEhlaWdodCcsXG5cbiAgLy8gXG4gIHNhQ29sV2lkdGggPSAnc2FDb2xXaWR0aCcsXG5cbiAgLy8gXG4gIHNhQ29udGVudCA9ICdzYUNvbnRlbnQnLFxuXG4gIC8vIFxuICBzYURpc3BsYXlGaWVsZExhYmVscyA9ICdzYURpc3BsYXlGaWVsZExhYmVscycsXG5cbiAgLy8gXG4gIHNhRGlzcGxheUhlYWRlciA9ICdzYURpc3BsYXlIZWFkZXInLFxuXG4gIC8vIFxuICBzYURpc3BsYXlBbHRlcm5hdGVUZXh0ID0gJ3NhRGlzcGxheUFsdGVybmF0ZVRleHQnLFxuXG4gIC8vIFxuICBzYURpdkxldmVsID0gJ3NhRGl2TGV2ZWwnLFxuXG4gIC8vIFxuICBzYUVuYWJsZWQgPSAnc2FFbmFibGVkJyxcblxuICAvLyBcbiAgc2FGaWxsQWJvdmVDb2xvciA9ICdzYUZpbGxBYm92ZUNvbG9yJyxcblxuICAvLyBcbiAgc2FGaWxsQmVsb3dDb2xvciA9ICdzYUZpbGxCZWxvd0NvbG9yJyxcblxuICAvLyBcbiAgc2FGaWxsQ29sb3IgPSAnc2FGaWxsQ29sb3InLFxuXG4gIC8vIFxuICBzYUZvZ0JHQ29sb3IgPSAnc2FGb2dCR0NvbG9yJyxcblxuICAvLyBcbiAgc2FGb2dEZXNhdHVyYXRpb25XaXRob3V0U2VsZWN0aW9uID0gJ3NhRm9nRGVzYXR1cmF0aW9uV2l0aG91dFNlbGVjdGlvbicsXG5cbiAgLy8gXG4gIHNhRm9nRGVzYXR1cmF0aW9uV2l0aFNlbGVjdGlvbiA9ICdzYUZvZ0Rlc2F0dXJhdGlvbldpdGhTZWxlY3Rpb24nLFxuXG4gIC8vIFxuICBzYUZvbnQgPSAnc2FGb250JyxcblxuICAvLyBcbiAgc2FGb250RmFtaWx5ID0gJ3NhRm9udEZhbWlseScsXG5cbiAgLy8gXG4gIHNhRm9udFNpemUgPSAnc2FGb250U2l6ZScsXG5cbiAgLy8gXG4gIHNhRm9udFN0eWxlID0gJ3NhRm9udFN0eWxlJyxcblxuICAvLyBcbiAgc2FGb250V2VpZ2h0ID0gJ3NhRm9udFdlaWdodCcsXG5cbiAgLy8gXG4gIHNhR2VvZ3JhcGhpY0FyZWFUeXBlID0gJ3NhR2VvZ3JhcGhpY0FyZWFUeXBlJyxcblxuICAvLyBcbiAgc2FIQWxpZ24gPSAnc2FIQWxpZ24nLFxuXG4gIC8vIFxuICBzYUhhbG9Db2xvciA9ICdzYUhhbG9Db2xvcicsXG5cbiAgLy8gXG4gIHNhSGFsb0NvbG9yU2VsZWN0ZWQgPSAnc2FIYWxvQ29sb3JTZWxlY3RlZCcsXG5cbiAgLy8gXG4gIHNhSGFzRmlsbCA9ICdzYUhhc0ZpbGwnLFxuXG4gIC8vIFxuICBzYUhhc0hhbG8gPSAnc2FIYXNIYWxvJyxcblxuICAvLyBEZXByZWNhdGVkXG4gIHNhSGFzTGFiZWwgPSAnc2FIYXNMYWJlbCcsXG5cbiAgLy8gXG4gIHNhSGFzU3Ryb2tlID0gJ3NhSGFzU3Ryb2tlJyxcblxuICAvLyBcbiAgc2FIZWlnaHQgPSAnc2FIZWlnaHQnLFxuXG4gIC8vIFxuICBzYUhlaWdodEhlYWRlciA9ICdzYUhlaWdodEhlYWRlcicsXG5cbiAgLy8gXG4gIHNhSGlnaGxpZ2h0TGVnZW5kID0gJ3NhSGlnaGxpZ2h0TGVnZW5kJyxcblxuICAvLyBcbiAgc2FIbmF4aXMgPSAnc2FIbmF4aXMnLFxuXG4gIC8vIFxuICBzYUhubGFiZWwgPSAnc2FIbmxhYmVsJyxcblxuICAvLyBcbiAgc2FJblRvb2x0aXAgPSAnc2FJblRvb2x0aXAnLFxuXG4gIC8vIFxuICBzYUxpbmVFbmQgPSAnc2FMaW5lRW5kJyxcblxuICAvLyBcbiAgc2FMaW5lRW5kU2l6ZSA9ICdzYUxpbmVFbmRTaXplJyxcblxuICAvLyBcbiAgc2FMaW5lSW50ZXJwb2xhdGlvbiA9ICdzYUxpbmVJbnRlcnBvbGF0aW9uJyxcblxuICAvLyBcbiAgc2FMaW5lTWFya2VyUG9zaXRpb24gPSAnc2FMaW5lTWFya2VyUG9zaXRpb24nLFxuXG4gIC8vIFxuICBzYUxpbmVQYXR0ZXJuID0gJ3NhTGluZVBhdHRlcm4nLFxuXG4gIC8vIFxuICBzYUxpbmVQYXR0ZXJuT25seSA9ICdzYUxpbmVQYXR0ZXJuT25seScsXG5cbiAgLy8gXG4gIHNhTGluZVZpc2liaWxpdHkgPSAnc2FMaW5lVmlzaWJpbGl0eScsXG5cbiAgLy8gXG4gIHNhTWFwID0gJ3NhTWFwJyxcblxuICAvLyBcbiAgc2FNYXBTdHlsZSA9ICdzYU1hcFN0eWxlJyxcblxuICAvLyBcbiAgc2FNYXJnaW4gPSAnc2FNYXJnaW4nLFxuXG4gIC8vIFxuICBzYU1hcmdpblRvcCA9ICdzYU1hcmdpblRvcCcsXG5cbiAgLy8gXG4gIHNhTWFyZ2luUmlnaHQgPSAnc2FNYXJnaW5SaWdodCcsXG5cbiAgLy8gXG4gIHNhTWFyZ2luQm90dG9tID0gJ3NhTWFyZ2luQm90dG9tJyxcblxuICAvLyBcbiAgc2FNYXJnaW5MZWZ0ID0gJ3NhTWFyZ2luTGVmdCcsXG5cbiAgLy8gXG4gIHNhTWFya0NvbG9yID0gJ3NhTWFya0NvbG9yJyxcblxuICAvLyBcbiAgc2FNYXJrVHJhbnNwYXJlbmN5ID0gJ3NhTWFya1RyYW5zcGFyZW5jeScsXG5cbiAgLy8gXG4gIHNhTWFya0xhYmVsc1Nob3cgPSAnc2FNYXJrTGFiZWxzU2hvdycsXG5cbiAgLy8gXG4gIHNhUnVubmluZ09yZGVyTGFiZWxzU2hvdyA9ICdzYVJ1bm5pbmdPcmRlckxhYmVsc1Nob3cnLFxuXG4gIC8vIFxuICBzYU1hcmtMYWJlbHNNb2RlID0gJ3NhTWFya0xhYmVsc01vZGUnLFxuXG4gIC8vIFxuICBzYU1hcmtMYWJlbHNDdWxsID0gJ3NhTWFya0xhYmVsc0N1bGwnLFxuXG4gIC8vIFxuICBzYU1hcmtMYWJlbHNMaW5lRW5kRmlyc3QgPSAnc2FNYXJrTGFiZWxzTGluZUVuZEZpcnN0JyxcblxuICAvLyBcbiAgc2FNYXJrTGFiZWxzTGluZUVuZExhc3QgPSAnc2FNYXJrTGFiZWxzTGluZUVuZExhc3QnLFxuXG4gIC8vIFxuICBzYU1hcmtMYWJlbHNSYW5nZU1pbiA9ICdzYU1hcmtMYWJlbHNSYW5nZU1pbicsXG5cbiAgLy8gXG4gIHNhTWFya0xhYmVsc1JhbmdlTWF4ID0gJ3NhTWFya0xhYmVsc1JhbmdlTWF4JyxcblxuICAvLyBcbiAgc2FNYXJrTGFiZWxzUmFuZ2VTY29wZSA9ICdzYU1hcmtMYWJlbHNSYW5nZVNjb3BlJyxcblxuICAvLyBcbiAgc2FNYXJrTGFiZWxzUmFuZ2VGaWVsZCA9ICdzYU1hcmtMYWJlbHNSYW5nZUZpZWxkJyxcblxuICAvLyBcbiAgc2FNYXJrTWFya2Vyc01vZGUgPSAnc2FNYXJrTWFya2Vyc01vZGUnLFxuXG4gIC8vIFxuICBzYU1heEhlaWdodCA9ICdzYU1heEhlaWdodCcsXG5cbiAgLy8gXG4gIHNhTWF4Rm9udFNpemUgPSAnc2FNYXhGb250U2l6ZScsXG5cbiAgLy8gXG4gIHNhTWF4U3Ryb2tlV2lkdGggPSAnc2FNYXhTdHJva2VXaWR0aCcsXG5cbiAgLy8gXG4gIHNhTWF4V2lkdGggPSAnc2FNYXhXaWR0aCcsXG5cbiAgLy8gXG4gIHNhTWlkU3Ryb2tlV2lkdGggPSAnc2FNaWRTdHJva2VXaWR0aCcsXG5cbiAgLy8gXG4gIHNhTWluSGVpZ2h0ID0gJ3NhTWluSGVpZ2h0JyxcblxuICAvLyBcbiAgc2FNaW5Gb250U2l6ZSA9ICdzYU1pbkZvbnRTaXplJyxcblxuICAvLyBcbiAgc2FNaW5MZW5ndGggPSAnc2FNaW5MZW5ndGgnLFxuXG4gIC8vIFxuICBzYU1pbk1hcFNpemUgPSAnc2FNaW5NYXBTaXplJyxcblxuICAvLyBcbiAgc2FNaW5TaXplID0gJ3NhTWluU2l6ZScsXG5cbiAgLy8gXG4gIHNhTWluU3Ryb2tlV2lkdGggPSAnc2FNaW5TdHJva2VXaWR0aCcsXG5cbiAgLy8gXG4gIHNhTWluV2lkdGggPSAnc2FNaW5XaWR0aCcsXG5cbiAgLy8gXG4gIHNhTm9uaGlnaGxpZ2h0Q29sb3IgPSAnc2FOb25oaWdobGlnaHRDb2xvcicsXG5cbiAgLy8gXG4gIHNhT21pdE9uU3BlY2lhbCA9ICdzYU9taXRPblNwZWNpYWwnLFxuXG4gIC8vIFxuICBzYU9wYWNpdHkgPSAnc2FPcGFjaXR5JyxcblxuICAvLyBcbiAgc2FPcmllbnRhdGlvbiA9ICdzYU9yaWVudGF0aW9uJyxcblxuICAvLyBcbiAgc2FQYWRkaW5nID0gJ3NhUGFkZGluZycsXG5cbiAgLy8gXG4gIHNhUGFkZGluZ1RvcCA9ICdzYVBhZGRpbmdUb3AnLFxuXG4gIC8vIFxuICBzYVBhZGRpbmdSaWdodCA9ICdzYVBhZGRpbmdSaWdodCcsXG5cbiAgLy8gXG4gIHNhUGFkZGluZ0JvdHRvbSA9ICdzYVBhZGRpbmdCb3R0b20nLFxuXG4gIC8vIFxuICBzYVBhZGRpbmdMZWZ0ID0gJ3NhUGFkZGluZ0xlZnQnLFxuXG4gIC8vIFxuICBzYVBhbGV0dGUgPSAnc2FQYWxldHRlJyxcblxuICAvLyBcbiAgc2FSZW5kZXJGb2xkUmV2ZXJzZWQgPSAnc2FSZW5kZXJGb2xkUmV2ZXJzZWQnLFxuXG4gIC8vIFxuICBzYVJldmVyc2VQYWxldHRlID0gJ3NhUmV2ZXJzZVBhbGV0dGUnLFxuXG4gIC8vIFxuICBzYVJvdW5kaW5nID0gJ3NhUm91bmRpbmcnLFxuXG4gIC8vIFxuICBzYVJvd0hvcml6TGV2ZWxzID0gJ3NhUm93SG9yaXpMZXZlbHMnLFxuXG4gIC8vIFxuICBzYVJvd0hvcml6V2lkdGggPSAnc2FSb3dIb3JpeldpZHRoJyxcblxuICAvLyBcbiAgc2FSb3dMZXZlbHMgPSAnc2FSb3dMZXZlbHMnLFxuXG4gIC8vIFxuICBzYVJvd1ZlcnRXaWR0aCA9ICdzYVJvd1ZlcnRXaWR0aCcsXG5cbiAgLy8gXG4gIHNhU2VwYXJhdG9yID0gJ3NhU2VwYXJhdG9yJyxcblxuICAvLyBcbiAgc2FTaGFwZSA9ICdzYVNoYXBlJyxcblxuICAvLyBEZXByZWNhdGVkXG4gIHNhU2hvd0xhYmVscyA9ICdzYVNob3dMYWJlbHMnLFxuXG4gIC8vIFxuICBzYVNpemUgPSAnc2FTaXplJyxcblxuICAvLyBcbiAgc2FTaXplQmFyID0gJ3NhU2l6ZUJhcicsXG5cbiAgLy8gXG4gIHNhU21hcnRBdXRvQWxpZ25tZW50ID0gJ3NhU21hcnRBdXRvQWxpZ25tZW50JyxcblxuICAvLyBcbiAgc2FTcGFjZSA9ICdzYVNwYWNlJyxcblxuICAvLyBcbiAgc2FTdHJva2VDb2xvciA9ICdzYVN0cm9rZUNvbG9yJyxcblxuICAvLyBcbiAgc2FTdHJva2VTaXplID0gJ3NhU3Ryb2tlU2l6ZScsXG5cbiAgLy8gXG4gIHNhU3VidGl0bGUgPSAnc2FTdWJ0aXRsZScsXG5cbiAgLy8gXG4gIHNhVGV4dEFsaWduID0gJ3NhVGV4dEFsaWduJyxcblxuICAvLyBcbiAgc2FUZXh0QWxpZ25EZWZhdWx0ID0gJ3NhVGV4dEFsaWduRGVmYXVsdCcsXG5cbiAgLy8gXG4gIHNhVGV4dERlY29yYXRpb24gPSAnc2FUZXh0RGVjb3JhdGlvbicsXG5cbiAgLy8gXG4gIHNhVGV4dEluZGVudCA9ICdzYVRleHRJbmRlbnQnLFxuXG4gIC8vIFxuICBzYVRleHRPcmllbnRhdGlvbiA9ICdzYVRleHRPcmllbnRhdGlvbicsXG5cbiAgLy8gXG4gIHNhVGV4dEZvcm1hdCA9ICdzYVRleHRGb3JtYXQnLFxuXG4gIC8vIFxuICBzYVRpY2tDb2xvciA9ICdzYVRpY2tDb2xvcicsXG5cbiAgLy8gXG4gIHNhVGlja0xlbmd0aCA9ICdzYVRpY2tMZW5ndGgnLFxuXG4gIC8vIERlcHJlY2F0ZWRcbiAgc2FUaWNrU3BhY2luZyA9ICdzYVRpY2tTcGFjaW5nJyxcblxuICAvLyBcbiAgc2FUaXRsZSA9ICdzYVRpdGxlJyxcblxuICAvLyBcbiAgc2FUb3RhbExhYmVsID0gJ3NhVG90YWxMYWJlbCcsXG5cbiAgLy8gXG4gIHNhVkFsaWduID0gJ3NhVkFsaWduJyxcblxuICAvLyBcbiAgc2FWZXJ0aWNhbEFsaWduID0gJ3NhVmVydGljYWxBbGlnbicsXG5cbiAgLy8gXG4gIHNhVmVydGljYWxBbGlnbkRlZmF1bHQgPSAnc2FWZXJ0aWNhbEFsaWduRGVmYXVsdCcsXG5cbiAgLy8gXG4gIHNhVm5heGlzID0gJ3NhVm5heGlzJyxcblxuICAvLyBcbiAgc2FWbmxhYmVsID0gJ3NhVm5sYWJlbCcsXG5cbiAgLy8gXG4gIHNhV2Fybk9uU3BlY2lhbCA9ICdzYVdhcm5PblNwZWNpYWwnLFxuXG4gIC8vIFxuICBzYVdhc2hvdXQgPSAnc2FXYXNob3V0JyxcblxuICAvLyBcbiAgc2FXaGlza2VyRW5kID0gJ3NhV2hpc2tlckVuZCcsXG5cbiAgLy8gXG4gIHNhV2hpc2tlclN0cm9rZUNvbG9yID0gJ3NhV2hpc2tlclN0cm9rZUNvbG9yJyxcblxuICAvLyBcbiAgc2FXaGlza2VyU3Ryb2tlU2l6ZSA9ICdzYVdoaXNrZXJTdHJva2VTaXplJyxcblxuICAvLyBcbiAgc2FXaWR0aCA9ICdzYVdpZHRoJyxcblxuICAvLyBcbiAgc2FXaWR0aEhlYWRlciA9ICdzYVdpZHRoSGVhZGVyJyxcblxuICAvLyBcbiAgc2FXcmFwID0gJ3NhV3JhcCcsXG5cbiAgLy8gXG4gIHNhWm9vbSA9ICdzYVpvb20nLFxuXG4gIC8vIFNwZWNpYWwgYXR0cmlidXRlcyB1c2VkIGZvciBtYXRjaGluZ1xuICBzYU5vbmUgPSAnc2FOb25lJyxcblxuICAvLyBTcGVjaWFsIGF0dHJpYnV0ZXMgdXNlZCBmb3IgbWF0Y2hpbmdcbiAgc2FBbnkgPSAnc2FBbnknXG59XG5cbi8vIGxvd2VzdCBiaXQgb2YgZW51bSB2YWx1ZSBkZW5vdGVzIHR3by10b25lIHN0eWxlczsgbmV3bHkgYWRkZWQgc3R5bGVzIHNob3VsZCBmb2xsb3cgdGhpcyBwYXR0ZXJuLlxuZXhwb3J0IGVudW0gQm94cGxvdFN0eWxlIHtcblxuICAvLyBtYXNrIGZvciBjaGVja2luZyBpZiBhIHN0eWxlIGlzIHR3by10b25lXG4gIEJveHBsb3RTdHlsZVR3b1RvbmUgPSAndHdvLXRvbmUnLFxuXG4gIC8vIFxuICBCb3hwbG90U3R5bGVNb2Rlcm4gPSAnbW9kZXJuJyxcblxuICAvLyBcbiAgQm94cGxvdFN0eWxlR2xhc3MgPSAnZ2xhc3MnLFxuXG4gIC8vIFxuICBCb3hwbG90U3R5bGVDbGFzc2ljID0gJ2NsYXNzaWMnLFxuXG4gIC8vIFxuICBCb3hwbG90U3R5bGVDbGFzc2ljVHdvVG9uZSA9ICdjbGFzc2ljLXR3by10b25lJ1xufVxuXG4vLyB1c2VkIGZvciBib3hwbG90cyBhbmQgcHJlZGljdGlvbiBiYW5kIHdoaXNrZXJzXG5leHBvcnQgZW51bSBXaGlza2VyRW5kIHtcblxuICAvLyBcbiAgV2hpc2tlckVuZE5vbmUgPSAnbm9uZScsXG5cbiAgLy8gXG4gIFdoaXNrZXJFbmRTbWFsbCA9ICdzbWFsbCcsXG5cbiAgLy8gXG4gIFdoaXNrZXJFbmRMYXJnZSA9ICdsYXJnZSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTdHlsZUVsZW1lbnQge1xuXG4gIC8vIFxuICBlbGVtZW50QXhpcyA9ICdlbGVtZW50QXhpcycsXG5cbiAgLy8gXG4gIGVsZW1lbnRDZWxsID0gJ2VsZW1lbnRDZWxsJyxcblxuICAvLyBcbiAgZWxlbWVudERhdGFsYWJlbCA9ICdlbGVtZW50RGF0YWxhYmVsJyxcblxuICAvLyBcbiAgZWxlbWVudERyb3BzcG90ID0gJ2VsZW1lbnREcm9wc3BvdCcsXG5cbiAgLy8gXG4gIGVsZW1lbnRIZWFkZXIgPSAnZWxlbWVudEhlYWRlcicsXG5cbiAgLy8gXG4gIGVsZW1lbnRGaWVsZExhYmVsID0gJ2VsZW1lbnRGaWVsZExhYmVsJyxcblxuICAvLyBcbiAgZWxlbWVudEZpZWxkTGFiZWxEZWNvcmF0aW9uID0gJ2VsZW1lbnRGaWVsZExhYmVsRGVjb3JhdGlvbicsXG5cbiAgLy8gXG4gIGVsZW1lbnRGaWVsZExhYmVsU3Bhbm5lciA9ICdlbGVtZW50RmllbGRMYWJlbFNwYW5uZXInLFxuXG4gIC8vIFxuICBlbGVtZW50TGFiZWwgPSAnZWxlbWVudExhYmVsJyxcblxuICAvLyBcbiAgZWxlbWVudE1hcmsgPSAnZWxlbWVudE1hcmsnLFxuXG4gIC8vIFxuICBlbGVtZW50UGFuZSA9ICdlbGVtZW50UGFuZScsXG5cbiAgLy8gXG4gIGVsZW1lbnRUYWJsZSA9ICdlbGVtZW50VGFibGUnLFxuXG4gIC8vIFxuICBlbGVtZW50V29ya3NoZWV0ID0gJ2VsZW1lbnRXb3Jrc2hlZXQnLFxuXG4gIC8vIFxuICBlbGVtZW50QmFzZXNoZWV0ID0gJ2VsZW1lbnRCYXNlc2hlZXQnLFxuXG4gIC8vIFxuICBlbGVtZW50RGFzaGJvYXJkID0gJ2VsZW1lbnREYXNoYm9hcmQnLFxuXG4gIC8vIFxuICBlbGVtZW50U3Rvcnlib2FyZCA9ICdlbGVtZW50U3Rvcnlib2FyZCcsXG5cbiAgLy8gXG4gIGVsZW1lbnRDYXB0aW9uID0gJ2VsZW1lbnRDYXB0aW9uJyxcblxuICAvLyBcbiAgZWxlbWVudERyb3BsaW5lID0gJ2VsZW1lbnREcm9wbGluZScsXG5cbiAgLy8gXG4gIGVsZW1lbnRSZWZsaW5lID0gJ2VsZW1lbnRSZWZsaW5lJyxcblxuICAvLyBcbiAgZWxlbWVudFJlZkJhbmQgPSAnZWxlbWVudFJlZkJhbmQnLFxuXG4gIC8vIFxuICBlbGVtZW50UmVmQm94cGxvdCA9ICdlbGVtZW50UmVmQm94cGxvdCcsXG5cbiAgLy8gXG4gIGVsZW1lbnRHcmlkbGluZSA9ICdlbGVtZW50R3JpZGxpbmUnLFxuXG4gIC8vIFxuICBlbGVtZW50WmVyb2xpbmUgPSAnZWxlbWVudFplcm9saW5lJyxcblxuICAvLyBcbiAgZWxlbWVudFRyZW5kbGluZSA9ICdlbGVtZW50VHJlbmRsaW5lJyxcblxuICAvLyBcbiAgZWxlbWVudFRhYmxlRGl2ID0gJ2VsZW1lbnRUYWJsZURpdicsXG5cbiAgLy8gXG4gIGVsZW1lbnRIZWFkZXJEaXYgPSAnZWxlbWVudEhlYWRlckRpdicsXG5cbiAgLy8gXG4gIGVsZW1lbnRNYXBwZWRJbWFnZSA9ICdlbGVtZW50TWFwcGVkSW1hZ2UnLFxuXG4gIC8vIFxuICBlbGVtZW50QWN0aW9uID0gJ2VsZW1lbnRBY3Rpb24nLFxuXG4gIC8vIFxuICBlbGVtZW50VGl0bGUgPSAnZWxlbWVudFRpdGxlJyxcblxuICAvLyBcbiAgZWxlbWVudExlZ2VuZCA9ICdlbGVtZW50TGVnZW5kJyxcblxuICAvLyBcbiAgZWxlbWVudExlZ2VuZFRpdGxlID0gJ2VsZW1lbnRMZWdlbmRUaXRsZScsXG5cbiAgLy8gXG4gIGVsZW1lbnRMZWdlbmRUaXRsZVRleHQgPSAnZWxlbWVudExlZ2VuZFRpdGxlVGV4dCcsXG5cbiAgLy8gXG4gIGVsZW1lbnRBeGlzVGl0bGUgPSAnZWxlbWVudEF4aXNUaXRsZScsXG5cbiAgLy8gXG4gIGVsZW1lbnRBbm5vdGF0aW9uID0gJ2VsZW1lbnRBbm5vdGF0aW9uJyxcblxuICAvLyBcbiAgZWxlbWVudERhc2hUaXRsZSA9ICdlbGVtZW50RGFzaFRpdGxlJyxcblxuICAvLyBcbiAgZWxlbWVudERhc2hTdWJ0aXRsZSA9ICdlbGVtZW50RGFzaFN1YnRpdGxlJyxcblxuICAvLyBcbiAgZWxlbWVudERhc2hUZXh0ID0gJ2VsZW1lbnREYXNoVGV4dCcsXG5cbiAgLy8gXG4gIGVsZW1lbnREYXNoWm9uZSA9ICdlbGVtZW50RGFzaFpvbmUnLFxuXG4gIC8vIFxuICBlbGVtZW50RGFzaENvbnRhaW5lciA9ICdlbGVtZW50RGFzaENvbnRhaW5lcicsXG5cbiAgLy8gXG4gIGVsZW1lbnRTY3JvbGxiYXIgPSAnZWxlbWVudFNjcm9sbGJhcicsXG5cbiAgLy8gU3RhdGljIG9uL29mZiBtYXAgbGF5ZXJzXG4gIGVsZW1lbnRNYXBMYXllciA9ICdlbGVtZW50TWFwTGF5ZXInLFxuXG4gIC8vIENvbnRhaW5zIHdhc2hvdXRcbiAgZWxlbWVudE1hcCA9ICdlbGVtZW50TWFwJyxcblxuICAvLyBJbml0aWFsbHkgZm9yIFVyYmFuTWFwcGluZy9DbGFyaXRhcyBkYXRhXG4gIGVsZW1lbnRNYXBEYXRhTGF5ZXIgPSAnZWxlbWVudE1hcERhdGFMYXllcicsXG5cbiAgLy8gXG4gIGVsZW1lbnRRdWlja0ZpbHRlciA9ICdlbGVtZW50UXVpY2tGaWx0ZXInLFxuXG4gIC8vIFxuICBlbGVtZW50UXVpY2tGaWx0ZXJUaXRsZSA9ICdlbGVtZW50UXVpY2tGaWx0ZXJUaXRsZScsXG5cbiAgLy8gXG4gIGVsZW1lbnRQYXJhbWV0ZXJDdHJsID0gJ2VsZW1lbnRQYXJhbWV0ZXJDdHJsJyxcblxuICAvLyBcbiAgZWxlbWVudFBhcmFtZXRlckN0cmxUaXRsZSA9ICdlbGVtZW50UGFyYW1ldGVyQ3RybFRpdGxlJyxcblxuICAvLyBcbiAgZWxlbWVudFBhZ2VDYXJkVGl0bGUgPSAnZWxlbWVudFBhZ2VDYXJkVGl0bGUnLFxuXG4gIC8vIFxuICBlbGVtZW50U3RvcnlEZXNjcmlwdGlvbiA9ICdlbGVtZW50U3RvcnlEZXNjcmlwdGlvbicsXG5cbiAgLy8gXG4gIGVsZW1lbnRTdG9yeVBvaW50Q2FwdGlvbiA9ICdlbGVtZW50U3RvcnlQb2ludENhcHRpb24nLFxuXG4gIC8vIFxuICBlbGVtZW50U3RvcnlUaXRsZSA9ICdlbGVtZW50U3RvcnlUaXRsZScsXG5cbiAgLy8gXG4gIGVsZW1lbnRUb29sdGlwID0gJ2VsZW1lbnRUb29sdGlwJyxcblxuICAvLyBcbiAgZWxlbWVudEFsbCA9ICdlbGVtZW50QWxsJyxcblxuICAvLyBcbiAgZWxlbWVudFBhZ2VDYXJkQm9keSA9ICdlbGVtZW50UGFnZUNhcmRCb2R5JyxcblxuICAvLyBcbiAgZWxlbWVudERhdGFIaWdobGlnaHRlciA9ICdlbGVtZW50RGF0YUhpZ2hsaWdodGVyJyxcblxuICAvLyBcbiAgZWxlbWVudERhdGFIaWdobGlnaHRlclRpdGxlID0gJ2VsZW1lbnREYXRhSGlnaGxpZ2h0ZXJUaXRsZScsXG5cbiAgLy8gU3BlY2lhbCBlbGVtZW50cyB1c2VkIGZvciBtYXRjaGluZyBhbmQgb3JnYW5pemF0aW9uXG4gIGVsZW1lbnROb25lID0gJ2VsZW1lbnROb25lJyxcblxuICAvLyBTcGVjaWFsIGVsZW1lbnRzIHVzZWQgZm9yIG1hdGNoaW5nIGFuZCBvcmdhbml6YXRpb25cbiAgZWxlbWVudEFueSA9ICdlbGVtZW50QW55JyxcblxuICAvLyBTcGVjaWFsIGVsZW1lbnRzIHVzZWQgZm9yIG1hdGNoaW5nIGFuZCBvcmdhbml6YXRpb25cbiAgZWxlbWVudFJvb3QgPSAnZWxlbWVudFJvb3QnXG59XG5cbi8vIERvIG5vdCBtZXNzIHdpdGggdGhlc2UgdmFsdWVzLiBUaGV5IGFyZSBzb21ldGltZXMgdXNlZCBhcyBhcnJheSBpbmRleGVzL2JvdW5kc1xuZXhwb3J0IGVudW0gU3R5bGVEYXRhQ2xhc3Mge1xuXG4gIC8vIFxuICBkY05vcm1hbCA9ICdkY05vcm1hbCcsXG5cbiAgLy8gXG4gIGRjVG90YWwgPSAnZGNUb3RhbCcsXG5cbiAgLy8gXG4gIGRjU3VidG90YWwgPSAnZGNTdWJ0b3RhbCcsXG5cbiAgLy8gXG4gIGRjQ09VTlQgPSAnZGNDT1VOVCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTdHlsZUZpZWxkU2NvcGUge1xuXG4gIC8vIFxuICBmc05vbmUgPSAnZnNOb25lJyxcblxuICAvLyBcbiAgZnNSb3dzID0gJ2ZzUm93cycsXG5cbiAgLy8gXG4gIGZzQ29scyA9ICdmc0NvbHMnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU3R5bGVTd2F0Y2gge1xuXG4gIC8vIFxuICBzc1Vuc3BlY2lmaWVkID0gJ3NzVW5zcGVjaWZpZWQnLFxuXG4gIC8vIFxuICBzc0xpZ2h0ID0gJ3NzTGlnaHQnLFxuXG4gIC8vIFxuICBzc0RhcmsgPSAnc3NEYXJrJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFRhYmxlYXVGb250U3R5bGUge1xuXG4gIC8vIFxuICBOb3JtYWxTdHlsZSA9ICdmb250LXN0eWxlLW5vcm1hbCcsXG5cbiAgLy8gXG4gIEl0YWxpYyA9ICdmb250LXN0eWxlLWl0YWxpYydcbn1cblxuLy8gVW5zdXBwb3J0ZWQgZm9yIEJldHN5XG5leHBvcnQgZW51bSBUZXh0RGVjb3JhdGlvbiB7XG5cbiAgLy8gXG4gIE5vRGVjb3JhdGlvbiA9ICd0ZXh0LWRlY29yYXRpb24tbm9uZScsXG5cbiAgLy8gXG4gIFVuZGVybGluZSA9ICd0ZXh0LWRlY29yYXRpb24tdW5kZXJsaW5lJyxcblxuICAvLyBub3QgeWV0IHN1cHBvcnRlZFxuICBPdmVybGluZSA9ICd0ZXh0LWRlY29yYXRpb24tb3ZlcmxpbmUnLFxuXG4gIC8vIFxuICBTdHJpa2V0aHJvdWdoID0gJ3RleHQtZGVjb3JhdGlvbi1zdHJpa2V0aHJvdWdoJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEZvbnRXZWlnaHQge1xuXG4gIC8vIFxuICBOb3JtYWxXZWlnaHQgPSAnZm9udC13ZWlnaHQtbm9ybWFsJyxcblxuICAvLyBcbiAgQm9sZCA9ICdmb250LXdlaWdodC1ib2xkJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFRleHRPcmllbnQge1xuXG4gIC8vIFxuICBUT19BdXRvID0gJ3RleHQtb3JpZW50LWF1dG8nLFxuXG4gIC8vIFxuICBUT19Ib3J6ID0gJ3RleHQtb3JpZW50LWhvcml6b250YWwnLFxuXG4gIC8vIFxuICBUT19WZXJ0VXAgPSAndGV4dC1vcmllbnQtdmVydGljYWwtdXAnLFxuXG4gIC8vIFxuICBUT19WZXJ0RG93biA9ICd0ZXh0LW9yaWVudC12ZXJ0aWNhbC1kb3duJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFRleHRBbGlnbiB7XG5cbiAgLy8gXG4gIFRBX1N0YXJ0ID0gJ3RleHQtYWxpZ24tc3RhcnQnLFxuXG4gIC8vIFxuICBUQV9DZW50ZXIgPSAndGV4dC1hbGlnbi1jZW50ZXInLFxuXG4gIC8vIFxuICBUQV9FbmQgPSAndGV4dC1hbGlnbi1lbmQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gVGV4dFdyYXBNb2RlIHtcblxuICAvLyBcbiAgVGV4dFdyYXBPZmYgPSAndGV4dC13cmFwLW9mZicsXG5cbiAgLy8gXG4gIFRleHRXcmFwVHJ1bmNhdGUgPSAndGV4dC13cmFwLXRydW5jYXRlJyxcblxuICAvLyBcbiAgVGV4dFdyYXBPbiA9ICd0ZXh0LXdyYXAtb24nLFxuXG4gIC8vIFxuICBUZXh0V3JhcEF1dG8gPSAndGV4dC13cmFwLWF1dG8nXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gVGV4dFdob2xlTGluZU1vZGUge1xuXG4gIC8vIFxuICBUZXh0V2hvbGVMaW5lT2ZmID0gJ3RleHQtd2hvbGUtbGluZS1vZmYnLFxuXG4gIC8vIFxuICBUZXh0V2hvbGVMaW5lT24gPSAndGV4dC13aG9sZS1saW5lLW9uJyxcblxuICAvLyBcbiAgVGV4dFdob2xlTGluZUF1dG8gPSAndGV4dC13aG9sZS1saW5lLWF1dG8nXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gVGV4dEJyZWFrTW9kZSB7XG5cbiAgLy8gXG4gIFRleHRCcmVha1doaXRlc3BhY2VPbmx5ID0gJ3RleHQtYnJlYWstd3Mtb25seScsXG5cbiAgLy8gXG4gIFRleHRCcmVha0F1dG8gPSAndGV4dC1icmVhay1hdXRvJ1xufVxuXG4vLyB0eXBlIG9mIGFnZ3JlZ2F0aW9uXG5leHBvcnQgZW51bSBBZ2dUeXBlIHtcblxuICAvLyBcbiAgQUdHX1NVTSA9ICdzdW0nLFxuXG4gIC8vIFxuICBBR0dfQVZHID0gJ2F2ZXJhZ2UnLFxuXG4gIC8vIFxuICBBR0dfTUlOID0gJ21pbicsXG5cbiAgLy8gXG4gIEFHR19NQVggPSAnbWF4JyxcblxuICAvLyBcbiAgQUdHX1NUREVWID0gJ3N0ZC1kZXYnLFxuXG4gIC8vIFxuICBBR0dfU1RERVZQID0gJ3N0ZC1kZXYtcCcsXG5cbiAgLy8gXG4gIEFHR19WQVIgPSAndmFyJyxcblxuICAvLyBcbiAgQUdHX1ZBUlAgPSAndmFyLXAnLFxuXG4gIC8vIFxuICBBR0dfQ09VTlQgPSAnY291bnQnLFxuXG4gIC8vIFxuICBBR0dfQ09VTlREID0gJ2NvdW50LWQnLFxuXG4gIC8vIFxuICBBR0dfTUVESUFOID0gJ21lZGlhbicsXG5cbiAgLy8gXG4gIEFHR19BVFRSID0gJ2F0dHInLFxuXG4gIC8vIFxuICBBR0dfTk9ORSA9ICdub25lJyxcblxuICAvLyBcbiAgQUdHX1BFUkNFTlRJTEUgPSAncGVyY2VudGlsZScsXG5cbiAgLy8gXG4gIEFHR19ZRUFSID0gJ3llYXInLFxuXG4gIC8vIFxuICBBR0dfUVRSID0gJ3F0cicsXG5cbiAgLy8gXG4gIEFHR19NT05USCA9ICdtb250aCcsXG5cbiAgLy8gXG4gIEFHR19EQVkgPSAnZGF5JyxcblxuICAvLyBcbiAgQUdHX0hPVVIgPSAnaG91cicsXG5cbiAgLy8gXG4gIEFHR19NSU5VVEUgPSAnbWludXRlJyxcblxuICAvLyBcbiAgQUdHX1NFQ09ORCA9ICdzZWNvbmQnLFxuXG4gIC8vIFxuICBBR0dfV0VFSyA9ICd3ZWVrJyxcblxuICAvLyBcbiAgQUdHX1dFRUtEQVkgPSAnd2Vla2RheScsXG5cbiAgLy8gXG4gIEFHR19NT05USFlFQVIgPSAnbW9udGgteWVhcicsXG5cbiAgLy8gXG4gIEFHR19NRFkgPSAnbWR5JyxcblxuICAvLyBcbiAgQUdHX0VORCA9ICdlbmQnLFxuXG4gIC8vIFxuICBUUlVOQ19ZRUFSID0gJ3RydW5jLXllYXInLFxuXG4gIC8vIFxuICBUUlVOQ19RVFIgPSAndHJ1bmMtcXRyJyxcblxuICAvLyBcbiAgVFJVTkNfTU9OVEggPSAndHJ1bmMtbW9udGgnLFxuXG4gIC8vIFxuICBUUlVOQ19XRUVLID0gJ3RydW5jLXdlZWsnLFxuXG4gIC8vIFxuICBUUlVOQ19EQVkgPSAndHJ1bmMtZGF5JyxcblxuICAvLyBcbiAgVFJVTkNfSE9VUiA9ICd0cnVuYy1ob3VyJyxcblxuICAvLyBcbiAgVFJVTkNfTUlOVVRFID0gJ3RydW5jLW1pbnV0ZScsXG5cbiAgLy8gXG4gIFRSVU5DX1NFQ09ORCA9ICd0cnVuYy1zZWNvbmQnLFxuXG4gIC8vIFxuICBBR0dfUVVBUlQxID0gJ3F1YXJ0MScsXG5cbiAgLy8gXG4gIEFHR19RVUFSVDMgPSAncXVhcnQzJyxcblxuICAvLyBcbiAgQUdHX1NLRVdORVNTID0gJ3NrZXduZXNzJyxcblxuICAvLyBcbiAgQUdHX0tVUlRPU0lTID0gJ2t1cnRvc2lzJyxcblxuICAvLyBcbiAgQUdHX0lOT1VUID0gJ2luLW91dCcsXG5cbiAgLy8gXG4gIEFHR19TVU1fWFNRUiA9ICdzdW0teHNxcicsXG5cbiAgLy8gXG4gIEFHR19VU0VSID0gJ3VzZXInLFxuXG4gIC8vIFxuICBBR0dfQ09MTEVDVCA9ICdjb2xsZWN0JyxcblxuICAvLyBcbiAgQUdHX0NPVkFSID0gJ2NvdmFyJyxcblxuICAvLyBcbiAgQUdHX0NPVkFSUCA9ICdjb3ZhcnAnLFxuXG4gIC8vIFxuICBBR0dfQ09SUiA9ICdjb3JyJ1xufVxuXG4vLyBEYXRhVmFsdWVGb3JtYXR0ZXI6OkRhdGFUeXBlRW5jb2RpbmdzIGhhcyBoYXJkY29kZWQgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gZm9sbG93aW5nIGVudW0gbWVtYmVycy4gU28gYW55IGNoYW5nZXMgaGVyZSBzaG91bGQgYmUgZG9uZSB0aGVyZSB0b29cbmV4cG9ydCBlbnVtIERhdGFUeXBlIHtcblxuICAvLyBcbiAgRFRfSU5URUdFUiA9ICdpbnRlZ2VyJyxcblxuICAvLyBcbiAgRFRfUkVBTCA9ICdyZWFsJyxcblxuICAvLyBcbiAgRFRfU1RSSU5HID0gJ2NzdHJpbmcnLFxuXG4gIC8vIFxuICBEVF9EQVRFVElNRSA9ICdkYXRldGltZScsXG5cbiAgLy8gXG4gIERUX0JPT0xFQU4gPSAnYm9vbGVhbicsXG5cbiAgLy8gXG4gIERUX0RBVEUgPSAnZGF0ZScsXG5cbiAgLy8gXG4gIERUX1RVUExFID0gJ3R1cGxlJyxcblxuICAvLyBcbiAgRFRfU1BBVElBTCA9ICdzcGF0aWFsJyxcblxuICAvLyBcbiAgRFRfVU5LTk9XTiA9ICd1bmtub3duJyxcblxuICAvLyBcbiAgRFRfQklOQVJZID0gJ2JpbmFyeScsXG5cbiAgLy8gXG4gIERUX1RJTUUgPSAndGltZSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTb3J0RGlyZWN0aW9uIHtcblxuICAvLyBhc2NlbmRpbmdcbiAgU1RfQVNDID0gJ2FzYycsXG5cbiAgLy8gZGVzY2VuZGluZ1xuICBTVF9ERVNDID0gJ2Rlc2MnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU29ydFR5cGUge1xuXG4gIC8vIFVzZSB0aGUgZGVmaW5lZCBvcmRlcmluZ1xuICBTVF9OQVRVUkFMID0gJ2RhdGEtc291cmNlLW9yZGVyJyxcblxuICAvLyBBbHBoYWJldGljL251bWVyaWMgb3JkZXJpbmcgb2YgZGF0YVxuICBTVF9BTFBIQUJFVElDID0gJ2FscGhhJyxcblxuICAvLyBTcGVjaWZ5IGEgc2Vjb25kYXJ5IGZpZWxkXG4gIFNUX0NPTVBVVEVEID0gJ2ZpZWxkJyxcblxuICAvLyBNYW51YWxseSBkZWZpbmVkIG9yZGVyaW5nXG4gIFNUX01BTlVBTCA9ICdtYW51YWwnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU29ydEVuZCB7XG5cbiAgLy8gXG4gIFNUX1RPUCA9ICd0b3AnLFxuXG4gIC8vIFxuICBTVF9CT1RUT00gPSAnYm90dG9tJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEZvcmVjYXN0Q29sdW1uVHlwZSB7XG5cbiAgLy8gXG4gIEZPUkVDQVNUX05PTkUgPSAnbm9uZScsXG5cbiAgLy8gXG4gIEZPUkVDQVNUX1ZBTFVFID0gJ3ZhbHVlJyxcblxuICAvLyBcbiAgRk9SRUNBU1RfSU5ESUNBVE9SID0gJ2luZGljYXRvcicsXG5cbiAgLy8gXG4gIEZPUkVDQVNUX1BSRUNJU0lPTiA9ICdwcmVjaXNpb24nLFxuXG4gIC8vIFxuICBGT1JFQ0FTVF9RVUFMSVRZID0gJ3F1YWxpdHknLFxuXG4gIC8vIFxuICBGT1JFQ0FTVF9GSVRfVFJFTkQgPSAnZml0X3RyZW5kJyxcblxuICAvLyBcbiAgRk9SRUNBU1RfUFJFQ0lTSU9OX1BFUkNFTlQgPSAncHJlY2lzaW9uX3BlcmNlbnQnLFxuXG4gIC8vIFxuICBGT1JFQ0FTVF9QUkVESUNUSU9OX0lOVEVSVkFMX1VQUEVSID0gJ3ByZWRpY3Rpb25fdXBwZXInLFxuXG4gIC8vIFxuICBGT1JFQ0FTVF9QUkVESUNUSU9OX0lOVEVSVkFMX0xPV0VSID0gJ3ByZWRpY3Rpb25fbG93ZXInXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gTWFya01hcmtlcnNNb2RlIHtcblxuICAvLyBcbiAgTU1NX0F1dG8gPSAnbW1tLWF1dG8nLFxuXG4gIC8vIFxuICBNTU1fQWxsID0gJ21tbV9hbGwnLFxuXG4gIC8vIFxuICBNTU1fTm9uZSA9ICdtbW1fbm9uZScsXG5cbiAgLy8gXG4gIE1NTV9EZWZhdWx0ID0gJ21tbV9kZWZhdWx0J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFBlcmNlbnRNb2RlIHtcblxuICAvLyBcbiAgUEVSQ0VOVF9DRUxMX0lOX1BBTkUgPSAnY2VsbC1pbi1wYW5lJyxcblxuICAvLyBcbiAgUEVSQ0VOVF9ST1dfSU5fUEFORSA9ICdyb3ctaW4tcGFuZScsXG5cbiAgLy8gXG4gIFBFUkNFTlRfQ09MVU1OX0lOX1BBTkUgPSAnY29sdW1uLWluLXBhbmUnLFxuXG4gIC8vIFxuICBQRVJDRU5UX1BBTkUgPSAncGFuZScsXG5cbiAgLy8gXG4gIFBFUkNFTlRfUk9XID0gJ3JvdycsXG5cbiAgLy8gXG4gIFBFUkNFTlRfQ09MVU1OID0gJ2NvbHVtbicsXG5cbiAgLy8gXG4gIFBFUkNFTlRfVEFCTEUgPSAndGFibGUnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU3BlY2lhbFZhbHVlc01vZGUge1xuXG4gIC8vIFxuICBTUEVDSUFMX1ZBTFVFU19ISURFX0FORF9XQVJOID0gJ2hpZGUtYW5kLXdhcm4nLFxuXG4gIC8vIFxuICBTUEVDSUFMX1ZBTFVFU19ISURFID0gJ2hpZGUnLFxuXG4gIC8vIFxuICBTUEVDSUFMX1ZBTFVFU19ISURFX0JSRUFLX0xJTkVTID0gJ2hpZGUtYnJlYWstbGluZXMnLFxuXG4gIC8vIFxuICBTUEVDSUFMX1ZBTFVFU19TSE9XID0gJ3Nob3cnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gTGF5b3V0VHlwZSB7XG5cbiAgLy8gXG4gIExBWU9VVF9DQVJURVNJQU4gPSAnY2FydGVzaWFuJyxcblxuICAvLyBcbiAgTEFZT1VUX0RFRkFVTFQgPSAnZGVmYXVsdCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTaGVsZlR5cGUge1xuXG4gIC8vIFxuICBTVF9OT05FID0gJ25vbmUtc2hlbGYnLFxuXG4gIC8vIFxuICBTVF9DT0xVTU5TX1NIRUxGID0gJ2NvbHVtbnMtc2hlbGYnLFxuXG4gIC8vIFxuICBTVF9ST1dTX1NIRUxGID0gJ3Jvd3Mtc2hlbGYnLFxuXG4gIC8vIFxuICBTVF9QQUdFU19TSEVMRiA9ICdwYWdlcy1zaGVsZicsXG5cbiAgLy8gXG4gIFNUX0ZJTFRFUl9TSEVMRiA9ICdmaWx0ZXItc2hlbGYnLFxuXG4gIC8vIFxuICBTVF9JTUFHRV9TSEVMRiA9ICdpbWFnZS1zaGVsZicsXG5cbiAgLy8gXG4gIFNUX01FQVNVUkVTX1NIRUxGID0gJ21lYXN1cmVzLXNoZWxmJyxcblxuICAvLyBcbiAgU1RfU0hPV01FX1NIRUxGID0gJ3Nob3ctbWUtc2hlbGYnLFxuXG4gIC8vIFxuICBTVF9FTkNPRElOR19TSEVMRiA9ICdlbmNvZGluZy1zaGVsZicsXG5cbiAgLy8gXG4gIFNUX0NMVVNURVJfU0hFTEYgPSAnY2x1c3Rlci1zaGVsZicsXG5cbiAgLy8gXG4gIFNUX0dFT01FVFJZX1NIRUxGID0gJ2dlb21ldHJ5LXNoZWxmJyxcblxuICAvLyBcbiAgU1RfRU5EID0gJ2VuZC1zaGVsZicsXG5cbiAgLy8gXG4gIFNUX0ZJTkFMID0gJ2ZpbmFsLXNoZWxmJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFJlc3RyaWN0VHlwZSB7XG5cbiAgLy8gXG4gIFJUX0lOVEVSU0VDVCA9ICdydC1pbnRlcnNlY3Rpb24nLFxuXG4gIC8vIFxuICBSVF9VTklPTiA9ICdydC11bmlvbidcbn1cblxuLy8gXG5leHBvcnQgZW51bSBUb29sdGlwTW9kZSB7XG5cbiAgLy8gXG4gIFRNX05PTkUgPSAnbm9uZScsXG5cbiAgLy8gXG4gIFRNX1NUSUNLWSA9ICdzdGlja3knLFxuXG4gIC8vIFxuICBUTV9TTU9PVEggPSAnc21vb3RoJyxcbn1cblxuLy8gXG5leHBvcnQgZW51bSBDb2x1bW5Hcm91cHMge1xuXG4gIC8vIDB4MDFcbiAgQ09MU19JTl9PVVRQVVQgPSAnY29scy1pbi1vdXRwdXQnLFxuXG4gIC8vIDB4MDJcbiAgQ09MU19JTl9GSUxURVJfU0hFTEYgPSAnY29scy1pbi1maWx0ZXItc2hlbGYnLFxuXG4gIC8vIDB4MDRcbiAgQ09MU19SRUZfQllfRklMVEVSUyA9ICdjb2xzLXJlZi1ieS1maWx0ZXJzJyxcblxuICAvLyAweDA4XG4gIENPTFNfUkVGX0JZX09NRUFTVVJFUyA9ICdjb2xzLXJlZi1ieS1vbWVhc3VyZXMnLFxuXG4gIC8vIDB4MTBcbiAgQ09MU19SRUZfQllfSk9JTl9MT0QgPSAnY29scy1yZWYtYnktam9pbi1sb2QnLFxuXG4gIC8vIDB4MjBcbiAgQ09MU19ISURERU4gPSAnY29scy1oaWRkZW4nLFxuXG4gIC8vIDB4NDBcbiAgQ09MU19SRUZfQllfU09SVFMgPSAnY29scy1yZWYtYnktc29ydHMnLFxuXG4gIC8vIFxuICBDT0xTX1JFRl9CWV9GSUxURVJTX09SX1NPUlRTID0gJ2NvbHMtcmVmLWJ5LWZpbHRlcnMtb3Itc29ydHMnLFxuXG4gIC8vIFxuICBDT0xTX09OX1NIRUxWRVMgPSAnY29scy1vbi1zaGVsdmVzJyxcblxuICAvLyBcbiAgQ09MU19BTEwgPSAnY29scy1hbGwnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gQnV0dG9uc09wdGlvbiB7XG5cbiAgLy8gXG4gIEJPX0hJREUgPSAnYnV0dG9ucy1oaWRlJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFNlbGVjdGlvblJlbGF4YXRpb25PcHRpb24ge1xuXG4gIC8vIFxuICBTUk9fQUxMT1cgPSAnc2VsZWN0aW9uLXJlbGF4YXRpb24tYWxsb3cnLFxuXG4gIC8vIFxuICBTUk9fRElTQUxMT1cgPSAnc2VsZWN0aW9uLXJlbGF4YXRpb24tZGlzYWxsb3cnLFxufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEVuY29kaW5nVHlwZSB7XG5cbiAgLy8gYSB0ZXh0IGVuY29kaW5nXG4gIEVUX1RFWFQgPSAndGV4dC1lbmNvZGluZycsXG5cbiAgLy8gYSBjb2xvciBlbmNvZGluZ1xuICBFVF9DT0xPUiA9ICdjb2xvci1lbmNvZGluZycsXG5cbiAgLy8gYSBzaXplIGVuY29kaW5nXG4gIEVUX1NJWkUgPSAnc2l6ZS1lbmNvZGluZycsXG5cbiAgLy8gYSBzaGFwZSBlbmNvZGluZ1xuICBFVF9TSEFQRSA9ICdzaGFwZS1lbmNvZGluZycsXG5cbiAgLy8gYW4gaW1hZ2UgZW5jb2RpbmdcbiAgRVRfSU1BR0UgPSAnaW1hZ2UtZW5jb2RpbmcnLFxuXG4gIC8vIGEgc29ydCAocGF0aCkgZW5jb2RpbmcgKGN1cnJlbnRseSBvbmx5IGZvciBsaW5lIG9yIHBvbHlnb24gY2hhcnRzKVxuICBFVF9TT1JUID0gJ3NvcnQtZW5jb2RpbmcnLFxuXG4gIC8vIGEgd2VkZ2Ugc2l6ZSAoYW5nbGUpIGVuY29kaW5nIChjdXJyZW50bHkgb25seSBmb3IgcGllIGNoYXJ0cylcbiAgRVRfV0VER0VTSVpFID0gJ3dlZGdlLXNpemUtZW5jb2RpbmcnLFxuXG4gIC8vIGEgZ2VvbWV0cnkgZW5jb2RpbmdcbiAgRVRfR0VPTUVUUlkgPSAnZ2VvbWV0cnktZW5jb2RpbmcnLFxuXG4gIC8vIGEgbGV2ZWwgb2YgZGV0YWlsIGVuY29kaW5nXG4gIEVUX0xPRCA9ICdsZXZlbC1vZi1kZXRhaWwtZW5jb2RpbmcnLFxuXG4gIC8vIGVuY29kaW5nIHVzZWQgZm9yIHRoZSBkYXRhIGhpZ2hsaWdodGVyL2xlZ2VuZCBtZWNoYW5pc21cbiAgRVRfSElHSExJR0hUID0gJ2hpZ2hsaWdodC1lbmNvZGluZycsXG5cbiAgLy8gYSB0b29sdGlwIGVuY29kaW5nXG4gIEVUX1RPT0xUSVAgPSAndG9vbHRpcC1lbmNvZGluZycsXG5cbiAgLy8gYSB0ZW1wb3JhcnkgbGFiZWwgcGxhY2VkIGFib3ZlIG1hcmtzIGZvciB0aGUgdGFibGUgY2FsYyBkaWFsb2dcbiAgRVRfUlVOTklOR09SREVSID0gJ3J1bm5pbmdvcmRlci1lbmNvZGluZycsXG5cbiAgLy8gdGhlIG51bWJlciBvZiBlbmNvZGluZ3MsIHRoaXMgaXMgaW52YWxpZCBpbnB1dCBmb3IgYW4gZW5jb2RpbmcgcHJlc2VudGF0aW9uIG1vZGVsXG4gIE5VTV9FTkNPRElOR1MgPSAnbnVtLWVuY29kaW5ncycsXG5cbiAgLy8gYW4gaW52YWxpZCBlbmNvZGluZ1xuICBFVF9JTlZBTElEID0gJ2ludmFsaWQtZW5jb2RpbmcnXG59XG5cbi8vIEVudW1lcmF0aW9uIG9mIHZhbGlkIGhvcml6b250YWwgYWxpZ25tZW50cy5cbmV4cG9ydCBlbnVtIExhYmVsSEFsaWdubWVudCB7XG5cbiAgLy8gXG4gIExIQV9MZWZ0ID0gJ2gtYWxpZ24tbGVmdCcsXG5cbiAgLy8gXG4gIExIQV9DZW50ZXIgPSAnaC1hbGlnbi1jZW50ZXInLFxuXG4gIC8vIFxuICBMSEFfUmlnaHQgPSAnaC1hbGlnbi1yaWdodCcsXG5cbiAgLy8gXG4gIExIQV9BdXRvbWF0aWMgPSAnaC1hbGlnbi1hdXRvJ1xufVxuXG4vLyBFbnVtZXJhdGlvbiBvZiB2YWxpZCB2ZXJ0aWNhbCBhbGlnbm1lbnRzLlxuZXhwb3J0IGVudW0gTGFiZWxWQWxpZ25tZW50IHtcblxuICAvLyBcbiAgTFZBX0JvdHRvbSA9ICd2LWFsaWduLWJvdHRvbScsXG5cbiAgLy8gXG4gIExWQV9DZW50ZXIgPSAndi1hbGlnbi1jZW50ZXInLFxuXG4gIC8vIFxuICBMVkFfVG9wID0gJ3YtYWxpZ24tdG9wJyxcblxuICAvLyBcbiAgTFZBX0F1dG9tYXRpYyA9ICd2LWFsaWduLWF1dG8nXG59XG5cbi8vIEVudW1lcmF0aW9uIG9mIHZhbGlkIGxhYmVsIHBvc2l0aW9ucy5cbmV4cG9ydCBlbnVtIExhYmVsUG9zaXRpb24ge1xuXG4gIC8vIFBvc2l0aW9uIGVhY2ggdGV4dCBydW4gcmVsYXRpdmUgdG8gdGhlIGNlbnRlciBvZiB0aGUgb3JpZ2luYWwgYmJveC4gIFVzZSB0aGUgb3JpZ2luYWwgYmJveCBhcyB0aGUgaGVpZ2h0IGFuZCB3aWR0aCBvZiB0aGUgdGV4dCBtYXJrLiAgVXNlZCBmb3Igbm9uLXN0YWNrZWQgT08gdGV4dCBtYXJrcy5cbiAgQ2VudGVySW5PcmlnaW5hbEJib3ggPSAnbGFiZWwtcG9zaXRpb24tY2VudGVyLWluLW9yaWdpbmFsLWJveCcsXG5cbiAgLy8gUG9zaXRpb24gZWFjaCB0ZXh0IHJ1biByZWxhdGl2ZSB0byB0aGUgYm90dG9tIGxlZnQgY29ybmVyIG9mIHRoZSBtZWFzdXJlZCBiYm94LiBVc2UgdGhlIG1lYXN1cmVkIGJib3ggYXMgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIGxhYmVsLiBVc2VkIGZvciBsYWJlbHNcbiAgT3JpZ2luQXRMb3dlckxlZnQgPSAnbGFiZWwtcG9zaXRpb24tb3JpZ2luLWF0LWxvd2VyLWxlZnQnLFxuXG4gIC8vIFBvc2l0aW9uIGVhY2ggdGV4dCBydW4gcmVsYXRpdmUgdG8gdGhlIGNlbnRlciBvZiB0aGUgbWVhc3VyZWQgYmJveC4gVXNlIHRoZSBtZWFzdXJlZCBiYm94IGFzIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSB0ZXh0IG1hcmsuIFVzZWQgZm9yIG1vc3QgdGV4dCBtYXJrcy5cbiAgT3JpZ2luQXRDZW50ZXIgPSAnbGFiZWwtcG9zaXRpb24tb3JpZ2luLWF0LWNlbnRlcidcbn1cblxuLy8gRW51bWVyYXRpb24gb2Ygd2F5cyB0byB1c2UgY29sb3IuICBWYWx1ZXMgY2FuIGJlIG9yJ2VkIHRvZ2V0aGVyIHRvIG1ha2UgYSBtYXNrIGZvciBhbGxvd2VkIG9wdGlvbnNcbmV4cG9ydCBlbnVtIENvbG9yTW9kZSB7XG5cbiAgLy8gQ29sb3IgdXNlciBzcGVjaWZpZWRcbiAgQ0xSTV9Vc2VyID0gJ2Nscm0tdXNlcicsXG5cbiAgLy8gQ29sb3Igc2VsZWN0ZWQgYXV0b21hdGljYWxseVxuICBDTFJNX0F1dG8gPSAnY2xybS1hdXRvJyxcblxuICAvLyBDb2xvciBtYXRjaGVzIG1hcmsgY29sb3JcbiAgQ0xSTV9NYXRjaCA9ICdjbHJtLW1hdGNoJyxcblxuICAvLyBObyBjb2xvciAodHJhbnNwYXJlbnQgb3Igbm90IGRyYXduKVxuICBDTFJNX05vbmUgPSAnY2xybS1ub25lJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIE1hcmtMYWJlbHNNb2RlIHtcblxuICAvLyBcbiAgTUxNX0FsbCA9ICdtbG0tYWxsJyxcblxuICAvLyBcbiAgTUxNX1NlbGVjdGlvbiA9ICdtbG0tc2VsZWN0aW9uJyxcblxuICAvLyBcbiAgTUxNX0hpZ2hsaWdodCA9ICdtbG0taGlnaGxpZ2h0JyxcblxuICAvLyBcbiAgTUxNX0xpbmVFbmRzID0gJ21sbS1saW5lLWVuZHMnLFxuXG4gIC8vIG1pbi9tYXggc2V0dGluZ1xuICBNTE1fUmFuZ2UgPSAnbWxtLXJhbmdlJyxcblxuICAvLyBtb3N0IHJlY2VudCAob25seSByZWxldmFudCB3aGVuIGRhdGUgZmllbGQgaXMgaW4gcGxheSlcbiAgTUxNX01vc3RSZWNlbnQgPSAnbWxtLW1vc3QtcmVjZW50JyxcblxuICAvLyAuLi50aGlzIGlzIFwiIHZpcnR1YWwgXCIgKHJ1bnRpbWUgb25seSwgbm90IHNhdmVkLCBub3Qgc2hvd24gYXMgYSB1c2VyIHNldHRpbmdcbiAgTUxNX011bHRpcGxlVmFsdWVzID0gJ21sbS1tdWx0aXBsZS12YWx1ZXMnLFxuXG4gIC8vIFxuICBNTE1fRGVmYXVsdCA9ICdtbG0tZGVmYXVsdCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBNYXJrTGFiZWxzU2NvcGUge1xuXG4gIC8vIFxuICBNTFNfVGFibGUgPSAnbWxzLXRhYmxlJyxcblxuICAvLyBcbiAgTUxTX1BhbmUgPSAnbWxzLXBhbmUnLFxuXG4gIC8vIFxuICBNTFNfQ2VsbCA9ICdtbHMtY2VsbCcsXG5cbiAgLy8gXG4gIE1MU19NdWx0aU1hcmsgPSAnbWxzLW11bHRpbWFyaycsXG5cbiAgLy8gLi4udGhpcyBpcyBcIiB2aXJ0dWFsIFwiIChydW50aW1lIG9ubHksIG5vdCBzYXZlZCwgbm90IHNob3duIGFzIGEgdXNlciBzZXR0aW5nKVxuICBNTFNfTXVsdGlwbGVWYWx1ZXMgPSAnbWxzLW11bHRpcGxlLXZhbHVlcycsXG5cbiAgLy8gXG4gIE1MU19EZWZhdWx0ID0gJ21scy1kZWZhdWx0J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIE1hcmtMYWJlbHNWaXNpYmlsaXR5IHtcblxuICAvLyBcbiAgTUxWX0hpZGRlbiA9ICdtbHYtaGlkZGVuJyxcblxuICAvLyBcbiAgTUxWX1Zpc2libGUgPSAnbWx2LXZpc2libGUnLFxuXG4gIC8vIFxuICBNTFZfVXNlQ3VycmVudCA9ICdtbHYtdXNlLWN1cnJlbnQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU3RhY2tpbmdNb2RlIHtcblxuICAvLyBcbiAgU3RhY2tpbmdPZmYgPSAnb2ZmJyxcblxuICAvLyBcbiAgU3RhY2tpbmdPbiA9ICdvbicsXG5cbiAgLy8gXG4gIFN0YWNraW5nQXV0byA9ICdhdXRvJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIE1hcmtBbGlnbm1lbnQge1xuXG4gIC8vIFxuICBNYXJrQWxpZ25tZW50TGVmdCA9ICdtYXJrLWFsaWdubWVudC1sZWZ0JyxcblxuICAvLyBcbiAgTWFya0FsaWdubWVudFJpZ2h0ID0gJ21hcmstYWxpZ25tZW50LXJpZ2h0JyxcblxuICAvLyBcbiAgTWFya0FsaWdubWVudENlbnRlciA9ICdtYXJrLWFsaWdubWVudC1jZW50ZXInXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gUGFuZUxhYmVsQ29tcG9zaXRpb24ge1xuXG4gIC8vIFxuICBQTENfTm9uZSA9ICdwYW5lLWxhYmVsLWNvbXBvc2l0aW9uLW5vbmUnLFxuXG4gIC8vIFxuICBQTENfTWl4ZWQgPSAncGFuZS1sYWJlbC1jb21wb3NpdGlvbi1taXhlZCcsXG5cbiAgLy8gXG4gIFBMQ19BbGwgPSAncGFuZS1sYWJlbC1jb21wb3NpdGlvbi1hbGwnXG59XG5cbi8vIFRoZSB1c2VyLXNwZWNpZmllZCBtYXJrIHR5cGUgb24gdGhlIE1hcmtzIENhcmRcbmV4cG9ydCBlbnVtIFByaW1pdGl2ZVR5cGUge1xuXG4gIC8vIFxuICBQVF9BVVRPTUFUSUMgPSAnYXV0b21hdGljJyxcblxuICAvLyBcbiAgUFRfVEVYVCA9ICd0ZXh0JyxcblxuICAvLyBcbiAgUFRfSU1BR0UgPSAnaW1hZ2UnLFxuXG4gIC8vIFxuICBQVF9TSEFQRSA9ICdzaGFwZScsXG5cbiAgLy8gXG4gIFBUX1JFQ1RBTkdMRSA9ICdyZWN0YW5nbGUnLFxuXG4gIC8vIFxuICBQVF9CQVIgPSAnYmFyJyxcblxuICAvLyBcbiAgUFRfR0FOVFQgPSAnZ2FudHQnLFxuXG4gIC8vIFxuICBQVF9TUVVBUkUgPSAnc3F1YXJlJyxcblxuICAvLyBcbiAgUFRfQ0lSQ0xFID0gJ2NpcmNsZScsXG5cbiAgLy8gXG4gIFBUX1BPTFlMSU5FID0gJ3BvbHlsaW5lJyxcblxuICAvLyBsaW5lIGNoYXJ0XG4gIFBUX0xJTkUgPSAnbGluZScsXG5cbiAgLy8gXG4gIFBUX1BPTFlHT04gPSAncG9seWdvbicsXG5cbiAgLy8gYXJlYSBjaGFydFxuICBQVF9BUkVBID0gJ2FyZWEnLFxuXG4gIC8vIFxuICBQVF9QSUUgPSAncGllJyxcblxuICAvLyBcbiAgUFRfTVVMVElQT0xZR09OID0gJ211bHRpcG9seWdvbicsXG5cbiAgLy8gTm90IGFuIGFjdHVhbCBwcmltaXRpdmUgdHlwZS4gVGhpcyBpcyBqdXN0IHVzZWQgdG8gZmxhZyB0aGUgVUkgdGhhdCBtdWx0aXBsZSB0eXBlcyBhcmUgaW4gcGxheS5cbiAgUFRfTVVMVElQTEUgPSAnbXVsdGlwbGUnLFxuXG4gIC8vIHVzZWQgZm9yIGxvb3Bpbmcgb3ZlciBhbGwgdmFsdWVzXG4gIE5VTV9QUklNSVRJVkVTID0gJ2NvdW50JyxcblxuICAvLyB1c2VkIHRvIGZsYWcgYW4gdW5zZXQgb3IgaW52YWxpZCBzdGF0ZVxuICBQVF9JTlZBTElEID0gJ2ludmFsaWQnXG59XG5cbi8vIERlZmluZXMgdGhlIHdheSBhIGdpdmVuIHByaW1pdGl2ZSBiZWhhdmVzIG9uIGEgdml6IC0gZm9yIGluc3RhbmNlLCBhIFBUX0NJUkNMRSBpcyB0cmVhdGVkIGFzIGEgcG9pbnQsIHdoaWxlIGEgUFRfUE9MWUdPTiB3b3VsZCBiZSB0cmVhdGVkIGFzIGFuIGFyZWEuXG5leHBvcnQgZW51bSBNYXJrVHlwZSB7XG5cbiAgLy8gXG4gIE1UX1BPSU5UID0gJ3BvaW50JyxcblxuICAvLyBcbiAgTVRfTElORSA9ICdsaW5lJyxcblxuICAvLyBcbiAgTVRfQVJFQSA9ICdhcmVhJyxcblxuICAvLyBcbiAgTVRfSU5WQUxJRCA9ICdpbnZhbGlkJ1xufVxuXG4vLyBQYW5lQXhpcyBpcyB1c2VkIHRvIGRlc2NyaWJlIHdoaWNoIGF4aXMgb2YgYSBwYW5lIGlzIHRoZSBpbmRlcGVuZGVudCBheGlzLlxuZXhwb3J0IGVudW0gUGFuZUF4aXMge1xuXG4gIC8vIFRoZSBpbmRlcGVuZGVudCBheGlzIGlzIGluZmVycmVkIGZyb20gb3RoZXIgcHJvcGVydGllcyBvZiB0aGUgcGFuZS5cbiAgQVhJU19BVVRPID0gJ2F1dG8nLFxuXG4gIC8vIFxuICBBWElTX1ggPSAneCcsXG5cbiAgLy8gXG4gIEFYSVNfWSA9ICd5J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFJvdW5kaW5nIHtcblxuICAvLyBcbiAgUm91bmRpbmdfTm9uZSA9ICdub25lJyxcblxuICAvLyBcbiAgUm91bmRpbmdfU21hbGwgPSAnc21hbGwnLFxuXG4gIC8vIFxuICBSb3VuZGluZ19NZWRpdW0gPSAnbWVkaXVtJyxcblxuICAvLyBcbiAgUm91bmRpbmdfTGFyZ2UgPSAnbGFyZ2UnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gTGluZUVuZCB7XG5cbiAgLy8gXG4gIExpbmVFbmRfTm9uZSA9ICdub25lJyxcblxuICAvLyBcbiAgTGluZUVuZF9BcnJvdyA9ICdhcnJvdycsXG5cbiAgLy8gXG4gIExpbmVFbmRfT3BlbkFycm93ID0gJ29wZW4tYXJyb3cnLFxuXG4gIC8vIFxuICBMaW5lRW5kX0RvdCA9ICdkb3QnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gTGluZUVuZFNpemUge1xuXG4gIC8vIFxuICBMaW5lRW5kU2l6ZV9TbWFsbGVzdCA9ICdzbWFsbGVzdCcsXG5cbiAgLy8gXG4gIExpbmVFbmRTaXplX1NtYWxsZXIgPSAnc21hbGxlcicsXG5cbiAgLy8gXG4gIExpbmVFbmRTaXplX1NtYWxsID0gJ3NtYWxsJyxcblxuICAvLyBcbiAgTGluZUVuZFNpemVfTWVkaXVtID0gJ21lZGl1bScsXG5cbiAgLy8gXG4gIExpbmVFbmRTaXplX0xhcmdlID0gJ2xhcmdlJyxcblxuICAvLyBcbiAgTGluZUVuZFNpemVfTGFyZ2VyID0gJ2xhcmdlcicsXG5cbiAgLy8gXG4gIExpbmVFbmRTaXplX0xhcmdlc3QgPSAnbGFyZ2VzdCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBCb2R5VHlwZSB7XG5cbiAgLy8gXG4gIEJvZHlUeXBlX05vbmUgPSAnbm9uZScsXG5cbiAgLy8gXG4gIEJvZHlUeXBlX0JveCA9ICdib3gnLFxuXG4gIC8vIFxuICBCb2R5VHlwZV9FZGdlID0gJ2VkZ2UnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU3R5bGVUaGVtZSB7XG5cbiAgLy8gXG4gIHRoZW1lQ2xhc3NpYyA9ICdjbGFzc2ljJyxcblxuICAvLyBcbiAgdGhlbWVNb2Rlcm4gPSAnbW9kZXJuJyxcblxuICAvLyBcbiAgdGhlbWVDbGVhbiA9ICdjbGVhbicsXG5cbiAgLy8gXG4gIHRoZW1lU21vb3RoID0gJ3Ntb290aCcsXG5cbiAgLy8gXG4gIHRoZW1lQ3VzdG9tID0gJ2N1c3RvbSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBBeGlzRm9sZFN0YXRlIHtcblxuICAvLyBcbiAgYWZOb25lID0gJ25vbmUnLFxuXG4gIC8vIFxuICBhZkZvbGRlZCA9ICdmb2xkZWQnLFxuXG4gIC8vIFxuICBhZlN5bmNocm9uaXplZCA9ICdzeW5jaHJvbml6ZWQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gTGluZVBhdHRlcm4ge1xuXG4gIC8vIFxuICBMaW5lUGF0dGVybk5vbmUgPSAnbm9uZScsXG5cbiAgLy8gXG4gIExpbmVQYXR0ZXJuU29saWQgPSAnc29saWQnLFxuXG4gIC8vIFxuICBMaW5lUGF0dGVybkRhc2hlZCA9ICdkYXNoZWQnLFxuXG4gIC8vIFxuICBMaW5lUGF0dGVybkRvdHRlZCA9ICdkb3R0ZWQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gTGluZVZpc2liaWxpdHkge1xuXG4gIC8vIFxuICBMaW5lVmlzaWJpbGl0eUF1dG8gPSAnYXV0b21hdGljJyxcblxuICAvLyBcbiAgTGluZVZpc2liaWxpdHlPbiA9ICdvbicsXG5cbiAgLy8gXG4gIExpbmVWaXNpYmlsaXR5T2ZmID0gJ29mZidcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTdHlsZXNMaW5lUGF0dGVybiB7XG5cbiAgLy8gXG4gIFN0eWxlc0xpbmVQYXR0ZXJuU29saWQgPSAnc29saWQnLFxuXG4gIC8vIFxuICBTdHlsZXNMaW5lUGF0dGVybkRhc2hlZCA9ICdkYXNoZWQnLFxuXG4gIC8vIFxuICBTdHlsZXNMaW5lUGF0dGVybkRvdHRlZCA9ICdkb3R0ZWQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gTGluZUNhcCB7XG5cbiAgLy8gXG4gIExpbmVDYXBGbGF0ID0gJ2ZsYXQnLFxuXG4gIC8vIFxuICBMaW5lQ2FwU3F1YXJlID0gJ3NxdWFyZScsXG5cbiAgLy8gXG4gIExpbmVDYXBSb3VuZCA9ICdyb3VuZCcsXG5cbiAgLy8gXG4gIExpbmVDYXBUcmlhbmdsZSA9ICd0cmlhbmdsZSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBMaW5lSm9pbiB7XG5cbiAgLy8gXG4gIEJldmVsSm9pbiA9ICdiZXZlbCcsXG5cbiAgLy8gXG4gIE1pdGVySm9pbiA9ICdtaXRlcicsXG5cbiAgLy8gXG4gIFJvdW5kSm9pbiA9ICdyb3VuZCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBMaW5lQWxpZ25tZW50IHtcblxuICAvLyBcbiAgQWxpZ25tZW50Q2VudGVyID0gJ2NlbnRlcicsXG5cbiAgLy8gXG4gIEFsaWdubWVudEluc2V0ID0gJ2luc2V0J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEZpbGxNb2RlIHtcblxuICAvLyBcbiAgRmlsbEV2ZW5PZGQgPSAnZXZlbi1vZGQnLFxuXG4gIC8vIFxuICBGaWxsV2luZGluZyA9ICd3aW5kaW5nJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEJvcmRlclN0eWxlIHtcblxuICAvLyBub25lXG4gIEJvcmRlclN0eWxlTm9uZSA9ICdicy1ub25lJyxcblxuICAvLyBoaWRkZW5cbiAgQm9yZGVyU3R5bGVIaWRkZW4gPSAnYnMtaGlkZGVuJyxcblxuICAvLyBkb3R0ZWRcbiAgQm9yZGVyU3R5bGVEb3R0ZWQgPSAnYnMtZG90dGVkJyxcblxuICAvLyBkYXNoZWRcbiAgQm9yZGVyU3R5bGVEYXNoZWQgPSAnYnMtZGFzaGVkJyxcblxuICAvLyBzb2xpZFxuICBCb3JkZXJTdHlsZVNvbGlkID0gJ2JzLXNvbGlkJyxcblxuICAvLyBkb3VibGVcbiAgQm9yZGVyU3R5bGVEb3VibGUgPSAnYnMtZG91YmxlJyxcblxuICAvLyBncm9vdmVcbiAgQm9yZGVyU3R5bGVHcm9vdmUgPSAnYnMtZ3Jvb3ZlJyxcblxuICAvLyByaWRnZVxuICBCb3JkZXJTdHlsZVJpZGdlID0gJ2JzLXJpZGdlJyxcblxuICAvLyBpbnNldFxuICBCb3JkZXJTdHlsZUluc2V0ID0gJ2JzLWluc2V0JyxcblxuICAvLyBvdXRzZXRcbiAgQm9yZGVyU3R5bGVPdXRzZXQgPSAnYnMtb3V0c2V0JyxcblxuICAvLyBpbnZhbGlkXG4gIEJvcmRlclN0eWxlSW52YWxpZCA9ICdicy1pbnZhbGlkJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIENvbG9yUGFsZXR0ZVR5cGUge1xuXG4gIC8vIFxuICBDb2xvclBhbGV0dGVSZWd1bGFyID0gJ2NvbG9yLXBhbGV0dGUtcmVndWxhcicsXG5cbiAgLy8gXG4gIENvbG9yUGFsZXR0ZU9yZGVyZWREaXZlcmdpbmcgPSAncGFsZXR0ZS1vcmRlcmVkLWRpdmVyZ2luZycsXG5cbiAgLy8gXG4gIENvbG9yUGFsZXR0ZU9yZGVyZWRMaW5lYXIgPSAncGFsZXR0ZS1vcmRlcmVkLWxpbmVhcidcbn1cblxuLy8gXG5leHBvcnQgZW51bSBQYWxldHRlRmxhZ3Mge1xuXG4gIC8vIFxuICBQYWxldHRlRmxhZ05vbmUgPSAncGFsZXR0ZS1mbGFnLW5vbmUnLFxuXG4gIC8vIFxuICBQYWxldHRlRmxhZ0N1c3RvbSA9ICdwYWxldHRlLWZsYWctY3VzdG9tJyxcblxuICAvLyBcbiAgUGFsZXR0ZUZsYWdOb3RRdWFudGl0YXRpdmUgPSAncGFsZXR0ZS1mbGFnLW5vdC1xdWFudGl0YXRpdmUnLFxuXG4gIC8vIFxuICBQYWxldHRlRmxhZ05vdENhdGVnb3JpY2FsID0gJ3BhbGV0dGUtZmxhZy1ub3QtY2F0ZWdvcmljYWwnLFxuXG4gIC8vIFxuICBQYWxldHRlRmxhZ05vdFJlZmVyZW5jZUJhbmQgPSAncGFsZXR0ZS1mbGFnLW5vdC1yZWZlcmVuY2UtYmFuZCcsXG5cbiAgLy8gXG4gIFBhbGV0dGVGbGFnTm90Qm94cGxvdCA9ICdwYWxldHRlLWZsYWctbm90LWJveHBsb3QnLFxuXG4gIC8vIFxuICBQYWxldHRlRmxhZ05vdEZpbGxlZE1hcExpZ2h0ID0gJ3BhbGV0dGUtZmxhZy1ub3QtZmlsbGVkLW1hcC1saWdodCcsXG5cbiAgLy8gXG4gIFBhbGV0dGVGbGFnTm90RmlsbGVkTWFwRGFyayA9ICdwYWxldHRlLWZsYWctbm90LWZpbGxlZC1tYXAtZGFyaycsXG5cbiAgLy8gXG4gIFBhbGV0dGVGbGFnTGVnYWN5ID0gJ3BhbGV0dGUtZmxhZy1sZWdhY3knXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gRGVmYXVsdFBhbGV0dGVUeXBlIHtcblxuICAvLyBcbiAgU21hbGxOb21pbmFsID0gJ3BhbGV0dGUtZGVmYXVsdC1zbWFsbC1ub21pbmFsJyxcblxuICAvLyBcbiAgTGFyZ2VOb21pbmFsID0gJ3BhbGV0dGUtZGVmYXVsdC1sYXJnZS1ub21pbmFsJyxcblxuICAvLyBcbiAgT3JkaW5hbCA9ICdwYWxldHRlLWRlZmF1bHQtb3JkaW5hbCcsXG5cbiAgLy8gXG4gIFF1YW50aXRhdGl2ZVBvc2l0aXZlID0gJ3BhbGV0dGUtZGVmYXVsdC1xdWFudC1wb3MnLFxuXG4gIC8vIFxuICBRdWFudGl0YXRpdmVOZWdhdGl2ZSA9ICdwYWxldHRlLWRlZmF1bHQtcXVhbnQtbmVnJyxcblxuICAvLyBcbiAgUXVhbnRpdGF0aXZlRGl2ZXJnaW5nID0gJ3BhbGV0dGUtZGVmYXVsdC1xdWFudC1kaXYnLFxuXG4gIC8vIFxuICBRdWFudGl0YXRpdmVQb3NpdGl2ZUxpZ2h0ID0gJ3BhbGV0dGUtZGVmYXVsdC1xdWFudC1wb3MtbGlnaHQnLFxuXG4gIC8vIFxuICBRdWFudGl0YXRpdmVOZWdhdGl2ZUxpZ2h0ID0gJ3BhbGV0dGUtZGVmYXVsdC1xdWFudC1uZWctbGlnaHQnLFxuXG4gIC8vIFxuICBRdWFudGl0YXRpdmVEaXZlcmdpbmdMaWdodCA9ICdwYWxldHRlLWRlZmF1bHQtcXVhbnQtZGl2LWxpZ2h0JyxcblxuICAvLyBcbiAgUXVhbnRpdGF0aXZlUG9zaXRpdmVBcmVhID0gJ3BhbGV0dGUtZGVmYXVsdC1xdWFudC1wb3MtYXJlYScsXG5cbiAgLy8gXG4gIFF1YW50aXRhdGl2ZU5lZ2F0aXZlQXJlYSA9ICdwYWxldHRlLWRlZmF1bHQtcXVhbnQtbmVnLWFyZWEnLFxuXG4gIC8vIFxuICBRdWFudGl0YXRpdmVEaXZlcmdpbmdBcmVhID0gJ3BhbGV0dGUtZGVmYXVsdC1xdWFudC1kaXYtYXJlYSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTaG93Qm91bmRzIHtcblxuICAvLyBcbiAgQm90aCA9ICdzaG93LWJvdGgnLFxuXG4gIC8vIFxuICBVcHBlciA9ICdzaG93LXVwcGVyJyxcblxuICAvLyBcbiAgTG93ZXIgPSAnc2hvdy1sb3dlcidcbn1cblxuLy8gU2FtcGxlIHZzLiBwb3B1bGF0aW9uIHN0YW5kYXJkIGRldmlhdGlvblxuZXhwb3J0IGVudW0gU3REZXZUeXBlIHtcblxuICAvLyBcbiAgU2FtcGxlID0gJ3N0ZGV2LXNhbXBsZScsXG5cbiAgLy8gXG4gIFBvcHVsYXRpb24gPSAnc3RkZXYtcG9wdWxhdGlvbidcbn1cblxuLy8gXG5leHBvcnQgZW51bSBSZWZlcmVuY2VMaW5lRm9ybXVsYUdyb3VwIHtcblxuICAvLyBcbiAgTm9uZSA9ICdub25lJyxcblxuICAvLyBcbiAgTGluZSA9ICdsaW5lJyxcblxuICAvLyBcbiAgQmFuZCA9ICdiYW5kJyxcblxuICAvLyBcbiAgRGlzdHJpYnV0aW9uID0gJ2Rpc3RyaWJ1dGlvbicsXG5cbiAgLy8gXG4gIEJveHBsb3QgPSAnYm94cGxvdCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBSZWZlcmVuY2VMaW5lU2NvcGVUeXBlIHtcblxuICAvLyBcbiAgUGVyQ2VsbCA9ICdwZXItY2VsbCcsXG5cbiAgLy8gXG4gIFBlclBhbmUgPSAncGVyLXBhbmUnLFxuXG4gIC8vIFxuICBQZXJUYWJsZSA9ICdwZXItdGFibGUnLFxufVxuXG4vLyBob3cgc2hvdWxkIHRoZSBsaW5lIGJlIGxhYmVsZWRcbmV4cG9ydCBlbnVtIFJlZmVyZW5jZUxpbmVMYWJlbFR5cGUge1xuXG4gIC8vIG5vIGxhYmVsXG4gIE5vbmUgPSAnbm9uZScsXG5cbiAgLy8gYW4gYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbGFiZWxcbiAgQXV0b21hdGljID0gJ2F1dG9tYXRpYycsXG5cbiAgLy8gXG4gIFZhbHVlID0gJ3ZhbHVlJyxcblxuICAvLyBcbiAgQ29tcHV0YXRpb24gPSAnY29tcHV0YXRpb24nLFxuXG4gIC8vIGEgdXNlciBkZWZpbmVkIGxhYmVsXG4gIEN1c3RvbSA9ICdjdXN0b20nLFxufVxuXG4vLyBob3cgc2hvdWxkIHRoZSBsaW5lIGJlIGNvbXB1dGVkXG5leHBvcnQgZW51bSBSZWZlcmVuY2VMaW5lRm9ybXVsYVR5cGUge1xuXG4gIC8vIGEgdXNlciBzcGVjaWZpZWQgY29uc3RhbnQgdmFsdWVcbiAgQ29uc3RhbnQgPSAnY29uc3RhbnQnLFxuXG4gIC8vIFxuICBUb3RhbCA9ICd0b3RhbCcsXG5cbiAgLy8gdG90YWwgb2YgYWxsIHZhbHVlcyBhdCB0aGUgZ2l2ZW4gc2NvcGUgPC0gaXMgdGhpcyBjb3JyZWN0PyBsb29rcyBsaWtlIGNvbW1lbnQgZnJvbSBGb3JtdWxhVG90YWxcbiAgU3VtID0gJ3N1bScsXG5cbiAgLy8gbWluaW11bSB2YWx1ZSBpbiB0aGUgc2NvcGVcbiAgTWluID0gJ21pbicsXG5cbiAgLy8gbWF4aW11bSB2YWx1ZSBpbiB0aGUgc2NvcGVcbiAgTWF4ID0gJ21heCcsXG5cbiAgLy8gYXZlcmFnZSB2YWx1ZSBpbiB0aGUgc2NvcGVcbiAgQXZlcmFnZSA9ICdhdmVyYWdlJyxcblxuICAvLyBtZWRpYW4gdmFsdWUgaW4gdGhlIHNjb3BlXG4gIE1lZGlhbiA9ICdtZWRpYW4nLFxuXG4gIC8vIHRoZSBuIHF1YW50aWxlcyB2YWx1ZXMgaW4gdGhlIHNjb3BlXG4gIFF1YW50aWxlcyA9ICdxdWFudGlsZXMnLFxuXG4gIC8vIGEgZ2l2ZW4gcGVyY2VudGlsZSBpbiB0aGUgc2NvcGVcbiAgUGVyY2VudGlsZSA9ICdwZXJjZW50aWxlJyxcblxuICAvLyBtZWFuICstIHN0YW5kYXJkIGRldmlhdGlvblxuICBTdGFuZGFyZERldmlhdGlvbiA9ICdzdGFuZGFyZC1kZXZpYXRpb24nLFxuXG4gIC8vIGEgZ2l2ZW4gY29uZmlkZW5jZSBpbnRlcnZhbCBhcm91bmQgdGhlIG1lYW5cbiAgQ29uZmlkZW5jZUludGVydmFsID0gJ2NvbmZpZGVuY2UtaW50ZXJ2YWwnLFxuXG4gIC8vIFxuICBNZWRpYW5Db25maWRlbmNlSW50ZXJ2YWwgPSAnbWVkaWFuLWNvbmZpZGVuY2UtaW50ZXJ2YWwnXG59XG5cbi8vIExpbmUgb3IgY29uZmlkZW5jZSBpbnRlcnZhbCBvciBib3RoXG5leHBvcnQgZW51bSBSZWZlcmVuY2VMaW5lQ29uZmlkZW5jZUludGVydmFsU3RhdGUge1xuXG4gIC8vIGRpc3BsYXkgbGluZSBvbmx5XG4gIExpbmVPbmx5ID0gJ2xpbmUtb25seScsXG5cbiAgLy8gZGlzcGxheSB0aGUgbGluZSBhbmQgYSBjb25maWRlbmNlIGludGVydmFsXG4gIExpbmVBbmRDb25maWRlbmNlSW50ZXJ2YWwgPSAnbGluZS1hbmQtaW50ZXJ2YWwnLFxuXG4gIC8vIGRpc3BsYXkgY29uZmlkZW5jZSBpbnRlcnZhbCBvbmx5XG4gIENvbmZpZGVuY2VJbnRlcnZhbE9ubHkgPSAnaW50ZXJ2YWwtb25seSdcbn1cblxuLy8gdHlwZSBvZiBkaXN0cmlidXRpb24uIGkuZS4gUGVyY2VudGFnZSwgUGVyY2VudGlsZSwgUXVhbnRpbGUsIGFuZCBTdGFuZGFyZCBEZXZpYXRpb25cbmV4cG9ydCBlbnVtIFJlZmVyZW5jZUxpbmVEaXN0cmlidXRpb25UeXBlIHtcblxuICAvLyBkaXN0cmlidXRpb24gdHlwZSBwZXJjZW50YWdlXG4gIFBlcmNlbnRhZ2VzID0gJ3BlcmNlbnRhZ2VzJyxcblxuICAvLyBkaXN0cmlidXRpb24gdHlwZSBwZXJjZW50aWxlXG4gIFBlcmNlbnRpbGVzID0gJ3BlcmNlbnRpbGVzJyxcblxuICAvLyBkaXN0cmlidXRpb24gdHlwZSBxdWFudGlsZVxuICBRdWFudGlsZXMgPSAncXVhbnRpbGVzJyxcblxuICAvLyBkaXN0cmlidXRpb24gdHlwZSBzdGFuZGFyZCBkZXZpYXRpb25cbiAgU3RhbmRhcmREZXZpYXRpb24gPSAnc3RhbmRhcmQtZGV2aWF0aW9uJ1xufVxuXG4vLyB0aGUga2luZCBvZiBMT0QgY2FsYyB0byB1c2UgZm9yIGEgZ2l2ZW4gcmVmZXJlbmNlIGxpbmVcbmV4cG9ydCBlbnVtIFJlZmVyZW5jZUxpbmVMT0RDYWxjVHlwZSB7XG5cbiAgLy8gQ3JlYXRlIGEgZm9ybXVsYSB1c2luZyBhIEZJWEVELWxpa2UgbGV2ZWwtb2YtZGV0YWlsIGNhbGN1bGF0aW9uLCB0byB3aGljaCBzaGVldCBmaWx0ZXJzIGFwcGx5LCB0aGF0IHdpbGwgZ28gb250byBhIHNwZWNpZmljIHNoZWV0XG4gIE1lYXN1cmVGb3JtdWxhID0gJ21lYXN1cmUtZm9ybXVsYScsXG5cbiAgLy8gQ3JlYXRlIGEgYm9vbGVhbiBmb3JtdWxhIHRoYXQgY2FuIGJlIHVzZWQgYXMgYSBmaWx0ZXJcbiAgQm9vbGVhbkZpbHRlciA9ICdib29sZWFuLWZpbHRlcidcbn1cblxuLy8gXG5leHBvcnQgZW51bSBCb3hwbG90V2hpc2tlclR5cGUge1xuXG4gIC8vIFxuICBTdGFuZGFyZCA9ICdzdGFuZGFyZCcsXG5cbiAgLy8gXG4gIE1pbm1heCA9ICdtaW5tYXgnXG59XG5cbi8vIGNhdGVnb3JpZXMgb2YgY29ubmVjdGlvbiB0eXBlcyBkaXNwbGF5ZWQgYnkgdGhlIGNvbm5lY3Rpb24gVUlcbmV4cG9ydCBlbnVtIENvbm5lY3Rpb25UeXBlQ2F0ZWdvcnkge1xuXG4gIC8vIHN0YW5kYXJkIGRhdGFiYXNlXG4gIENUQ19EYXRhYmFzZSA9ICdkYXRhYmFzZScsXG5cbiAgLy8gJ01vcmUgSXRlbXMgLi4uJyBtZXRhIGl0ZW1cbiAgQ1RDX01vcmUgPSAnbW9yZScsXG5cbiAgLy8gT3RoZXIgZmlsZSB0eXBlc1xuICBDVENfT3RoZXIgPSAnb3RoZXInLFxuXG4gIC8vIGludmFsaWQgY29ubmVjdGlvbiBjYXRlZ29yeVxuICBDVENfSW52YWxpZCA9ICdpbnZhbGlkJ1xufVxuXG4vLyBhIGxvZ2ljYWwgZ3JvdXBpbmcgb2YgY29ubmVjdGlvbiB0eXBlcyBkaXNwbGF5ZWQgYnkgdGhlIGNvbm5lY3Rpb24gVUlcbmV4cG9ydCBlbnVtIENvbm5lY3Rpb25UeXBlR3JvdXAge1xuXG4gIC8vIGluIGEgZmlsZVxuICBDVEdfRmlsZSA9ICdmaWxlJyxcblxuICAvLyBvbiBhIHNlcnZlclxuICBDVEdfU2VydmVyID0gJ3NlcnZlcicsXG5cbiAgLy8gb24gYSByZWNlbnQgc2VydmVyXG4gIENUR19NcnVTZXJ2ZXIgPSAnbXJ1LXNlcnZlcicsXG5cbiAgLy8gaW52YWxpZCBncm91cFxuICBDVEdfSW52YWxpZCA9ICdpbnZhbGlkJ1xufVxuXG4vLyBUaGUgdHlwZSBvZiBtZXRhZGF0YSBhIGNvbHVtbiBjb250YWluc1xuZXhwb3J0IGVudW0gQ3ViZU1ldGFkYXRhQ2F0ZWdvcnkge1xuXG4gIC8vIGN1YmUncyBuYW1lXG4gIENNQ19OYW1lID0gJ25hbWUnLFxuXG4gIC8vIGN1YmUncyBkZXNjcmlwdGlvblxuICBDTUNfRGVzY3JpcHRpb24gPSAnZGVzY3JpcHRpb24nLFxuXG4gIC8vIGN1YmUncyBsYXN0IHVwZGF0ZWQgdGltZXN0YW1wXG4gIENNQ19MYXN0VXBkYXRlZCA9ICdsYXN0LXVwZGF0ZWQnLFxuXG4gIC8vIGludmFsaWRcbiAgQ01DX0ludmFsaWQgPSAnaW52YWxpZCdcbn1cblxuLy8gVGhlIHR5cGUgb2Ygd2lkZ2V0IHRvIGRpc3BsYXkgdG8gdGhlIHVzZXIgd2hlbiB0aGV5IGFyZSBzcGVjaWZ5aW5nIGNvbm5lY3Rpb24gaW5mb1xuZXhwb3J0IGVudW0gQ29ubmVjdGlvbldpZGdldFR5cGUge1xuXG4gIC8vIHNob3cgdGhlIGpvaW4gYXJlYVxuICBDV1RfSm9pbkFyZWEgPSAnam9pbi1hcmVhJyxcblxuICAvLyBzaG93IHRoZSBjdWJlIHNlbGVjdGlvbiB1aVxuICBDV1RfQ3ViZVNlbGVjdGlvbiA9ICdjdWJlLXNlbGVjdGlvbicsXG5cbiAgLy8gc2hvdyB0aGUgZ29vZ2xlIGFuYWx5dGljcyB1aVxuICBDV1RfR29vZ2xlQW5hbHl0aWNzID0gJ2dvb2dsZS1hbmFseXRpY3MnLFxuXG4gIC8vIHNob3cgdGhlIHRhYmxlYXUgc2VydmVyIHVpXG4gIENXVF9UYWJsZWF1U2VydmVyID0gJ3RhYmxlYXUtc2VydmVyJyxcblxuICAvLyBkbyBub3Qgc2hvdyBhbnkgY29ubmVjdGlvbiB3aWRnZXRcbiAgQ1dUX05vV2lkZ2V0ID0gJ25vLXdpZGdldCcsXG5cbiAgLy8gaW52YWxpZFxuICBDV1RfSW52YWxpZCA9ICdpbnZhbGlkJ1xufVxuXG4vLyBUaGUgdHlwZSBvZiBnb29nbGUgYW5hbHl0aWNzIGJhc2ljIGluZm9cbmV4cG9ydCBlbnVtIEdvb2dsZUJhc2ljSW5mb1R5cGUge1xuXG4gIC8vIGdvb2dsZSBhbmFseXRpY3MgYWNjb3VudFxuICBHQV9BY2NvdW50ID0gJ2dhLWFjY291bnQnLFxuXG4gIC8vIGdvb2dsZSBhbmFseXRpY3MgcHJvcGVydHlcbiAgR0FfUHJvcGVydHkgPSAnZ2EtcHJvcGVydHknLFxuXG4gIC8vIGdvb2dsZSBhbmFseXRpY3Mgdmlld1xuICBHQV9WaWV3ID0gJ2dhLXZpZXcnLFxuXG4gIC8vIGludmFsaWRcbiAgR0FfSW52YWxpZCA9ICdpbnZhbGlkJ1xufVxuXG4vLyBUaGUgd2F5IGluIHdoaWNoIGEgcGllY2Ugb2YgY29ubmVjdGlvbiBpbmZvcm1hdGlvbiBpcyBzcGVjaWZpZWRcbmV4cG9ydCBlbnVtIENvbm5lY3Rpb25TcGVjaWZpY2F0aW9uVHlwZSB7XG5cbiAgLy8gVXNlcyBhIGNvbWJvIGJveFxuICBDU1RfQ29tYm9Cb3ggPSAnY29tYm8tYm94JyxcblxuICAvLyBVc2VzIGEgbGluZSBlZGl0XG4gIENTVF9MaW5lRWRpdCA9ICdsaW5lLWVkaXQnLFxuXG4gIC8vIFVzZXMgYSBsaW5lIGVkaXQgd2l0aCBhIGJyb3dzZSBidXR0b24gbmV4dCB0byBpdFxuICBDU1RfTGluZUVkaXRCcm93c2UgPSAnbGluZS1lZGl0LWJyb3dzZScsXG5cbiAgLy8gaW52YWxpZFxuICBDU1RfSW52YWxpZCA9ICdpbnZhbGlkJ1xufVxuXG4vLyBHQSBEYXRlIFJhbmdlXG5leHBvcnQgZW51bSBEYXRlUmFuZ2Uge1xuXG4gIC8vIFxuICBEYXRlUmFuZ2VGaXJzdCA9ICdkYXRlLXJhbmdlLWZpcnN0JyxcblxuICAvLyBcbiAgRGF0ZVJhbmdlTGFzdDMwRGF5cyA9ICdkYXRlLXJhbmdlLWxhc3QzMCcsXG5cbiAgLy8gXG4gIERhdGVSYW5nZVRvZGF5ID0gJ2RhdGUtcmFuZ2UtdG9kYXknLFxuXG4gIC8vIFxuICBEYXRlUmFuZ2VZZXN0ZXJkYXkgPSAnZGF0ZS1yYW5nZS15ZXN0ZXJkYXknLFxuXG4gIC8vIFxuICBEYXRlUmFuZ2VMYXN0V2VlayA9ICdkYXRlLXJhbmdlLWxhc3Qtd2VlaycsXG5cbiAgLy8gXG4gIERhdGVSYW5nZUxhc3RNb250aCA9ICdkYXRlLXJhbmdlLWxhc3QtbW9udGgnLFxuXG4gIC8vIFxuICBEYXRlUmFuZ2VMYXN0WWVhciA9ICdkYXRlLXJhbmdlLWxhc3QteWVhcicsXG5cbiAgLy8gXG4gIERhdGVSYW5nZVRoaXNXZWVrVG9ZZXN0ZXJkYXkgPSAnZGF0ZS1yYW5nZS10aGlzLXdlZWstdG8teWVzdGVyZGF5JyxcblxuICAvLyBcbiAgRGF0ZVJhbmdlVGhpc01vbnRoVG9ZZXN0ZXJkYXkgPSAnZGF0ZS1yYW5nZS10aGlzLW1vbnRoLXRvLXllc3RlcmRheScsXG5cbiAgLy8gXG4gIERhdGVSYW5nZVRoaXNZZWFyVG9ZZXN0ZXJkYXkgPSAnZGF0ZS1yYW5nZS10aGlzLXllYXItdG8teWVzdGVyZGF5JyxcblxuICAvLyBcbiAgRGF0ZVJhbmdlTGFzdFdlZWtUb1llc3RlcmRheSA9ICdkYXRlLXJhbmdlLWxhc3Qtd2Vlay10by15ZXN0ZXJkYXknLFxuXG4gIC8vIFxuICBEYXRlUmFuZ2VMYXN0TW9udGhUb1llc3RlcmRheSA9ICdkYXRlLXJhbmdlLWxhc3QtbW9udGgtdG8teWVzdGVyZGF5JyxcblxuICAvLyBcbiAgRGF0ZVJhbmdlTGFzdFllYXJUb1llc3RlcmRheSA9ICdkYXRlLXJhbmdlLWxhc3QteWVhci10by15ZXN0ZXJkYXknLFxuXG4gIC8vIFxuICBEYXRlUmFuZ2VGaXhlZFJhbmdlID0gJ2RhdGUtcmFuZ2UtZml4ZWQtcmFuZ2UnLFxuXG4gIC8vIFxuICBEYXRlUmFuZ2VGaXhlZFN0YXJ0ID0gJ2RhdGUtcmFuZ2UtZml4ZWQtc3RhcnQnLFxuXG4gIC8vIFxuICBEYXRlUmFuZ2VDb3VudCA9ICdkYXRlLXJhbmdlLWNvdW50J1xufVxuXG4vLyBTcGVjaWZpZXMgdGhlIHR5cGUgb2Ygd2lkZ2V0IHRvIHNob3cgaW4gQ29ubmVjdFNlcnZlcldpZGdldFxuZXhwb3J0IGVudW0gQ29ubmVjdFNlcnZlcldpZGdldFR5cGUge1xuXG4gIC8vIGludmFsaWRcbiAgQ1NXVF9JbnZhbGlkID0gJ2ludmFsaWQnLFxuXG4gIC8vIG1pY3Jvc29mdCBhY2Nlc3NcbiAgQ1NXVF9BY2Nlc3MgPSAnYWNjZXNzJyxcblxuICAvLyBnZW5lcmljIG9kYmNcbiAgQ1NXVF9PREJDID0gJ29kYmMnLFxuXG4gIC8vIGN1YmVzXG4gIENTV1RfQ3ViZSA9ICdjdWJlJyxcblxuICAvLyByZWxhdGlvbmFsIGRhdGEgc291cmNlc1xuICBDU1dUX1JlbGF0aW9uYWwgPSAncmVsYXRpb25hbCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBBdXRoZW50aWNhdGlvbkVudW1zTW9kZSB7XG5cbiAgLy8gbm8gYXV0aGVudGljYXRpb24gd2lkZ2V0XG4gIEF1dGhNb2RlTm9uZSA9ICdhdXRoLW1vZGUtbm9uZScsXG5cbiAgLy8gdXNlcm5hbWUgYW5kIHBhc3N3b3JkXG4gIEF1dGhNb2RlQmFzaWMgPSAnYXV0aC1tb2RlLWJhc2ljJyxcblxuICAvLyB1c2VybmFtZSBhbmQgcGFzc3dvcmQgY2FuIGJlIGJsYW5rXG4gIEF1dGhNb2RlQmFzaWNOb1ZhbGlkYXRlRmllbGRzID0gJ2F1dGgtbW9kZS1iYXNpYy1uby12YWxpZGF0ZS1maWVsZHMnLFxuXG4gIC8vIG9ubHkgdXNlcm5hbWVcbiAgQXV0aE1vZGVCYXNpY1VzZXJOYW1lT25seSA9ICdhdXRoLW1vZGUtYmFzaWMtdXNlcm5hbWUtb25seScsXG5cbiAgLy8gYXdzIGFjY2VzcyBrZXkgYW5kIHNlY3JldCBJRFxuICBBdXRoTW9kZUJhc2ljQVdTID0gJ2F1dGgtbW9kZS1iYXNpYy1hd3MnLFxuXG4gIC8vIHVzZXJuYW1lLCBwYXNzd29yZCwgYW5kIGEgbGlzdCBvZiBBdXRoT3B0aW9ucyB3aXRoIHJhZGlvIGJ1dHRvbnNcbiAgQXV0aE1vZGVSYWRpbyA9ICdhdXRoLW1vZGUtcmFkaW8nLFxuXG4gIC8vIExpa2UgQXV0aE1vZGVSYWRpbywgYnV0IGVuYWJsZSB1c2VybmFtZS9wYXNzd29yZCBldmVuIGZvciBpbnRlZ3JhdGVkIGF1dGhcbiAgQXV0aE1vZGVSYWRpb1VuaW5kZW50ZWQgPSAnYXV0aC1tb2RlLXJhZGlvLXVuaW5kZW50ZWQnLFxuXG4gIC8vIHVzZXJuYW1lLCBwYXNzd29yZCwgYW5kIGEgbGlzdCBvZiBBdXRoT3B0aW9ucyB3aXRoIGEgY29tYm9ib3hcbiAgQXV0aE1vZGVDb21ib0JveCA9ICdhdXRoLW1vZGUtY29tYm9ib3gnLFxuXG4gIC8vIExpa2UgQXV0aE1vZGVDb21ib2JveCwgYnV0IHdpdGggb3B0aW9uIG5vdCByZXF1aXJpbmcgdXNlcm5hbWUvcGFzc3dvcmRcbiAgQXV0aE1vZGVDb21ib0JveEludGVncmF0ZWQgPSAnYXV0aC1tb2RlLWNvbWJvYm94LWludGVncmF0ZWQnLFxuXG4gIC8vIGRyaXZlciwgYXV0aGVudGljYXRpb24sIHVzZXJuYW1lLCByZWFsbSwgZXRjXG4gIEF1dGhNb2RlSGl2ZSA9ICdhdXRoLW1vZGUtaGl2ZScsXG5cbiAgLy8gbm9uZSwgYXp1cmUgbWFya2V0cGxhY2UgYWNjb3VudCwgZXhwbGljaXRcbiAgQXV0aE1vZGVPRGF0YSA9ICdhdXRoLW1vZGUtb2RhdGEnLFxuXG4gIC8vIGVkaXRpb24sIGF1dGhlbnRpY2F0aW9uLCBzc28gZG9tYWluLCBldGNcbiAgQXV0aE1vZGVTaGFyZVBvaW50ID0gJ2F1dGgtbW9kZS1zaGFyZXBvaW50JyxcblxuICAvLyB1c2VybmFtZSwgcGFzc3dvcmQsIGNsaWVudCwgJiBsYW5ndWFnZVxuICBBdXRoTW9kZVNBUEJXID0gJ2F1dGgtbW9kZS1zYXBidycsXG5cbiAgLy8gQWJpbGl0eSB0byBzd2l0Y2ggYmV0d2VlbiB0d28gZGlmZmVyZW50IGF1dGggbW9kZXMgZWFjaCBpbiB0aGVpciBvd24gbW9kYWwgZGlhbG9ncyAoYmFzaWMgYW5kIG9hdXRoKVxuICBBdXRoTW9kZVN3aXRjaE1vZGFsID0gJ2F1dGgtbW9kZS1zd2l0Y2gtbW9kYWwnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gQXV0aGVudGljYXRpb25FbnVtc1JlY29ubmVjdE1vZGUge1xuXG4gIC8vIEF1dGggbm90IG5lZWRlZCBmb3IgcmVjb25uZWN0XG4gIFJlY29ubmVjdE1vZGVOb25lID0gJ3JlY29ubmVjdC1tb2RlLW5vbmUnLFxuXG4gIC8vIFVzZXJuYW1lIGFuZCBwYXNzd29yZFxuICBSZWNvbm5lY3RNb2RlQmFzaWMgPSAncmVjb25uZWN0LW1vZGUtYmFzaWMnLFxuXG4gIC8vIEFjY2VzcyBmaWxlXG4gIFJlY29ubmVjdE1vZGVBY2Nlc3MgPSAncmVjb25uZWN0LW1vZGUtYWNjZXNzJyxcblxuICAvLyBNaWNyb3NvZnQgQXp1cmUgRGF0YSBNYXJrZXQgKE9EYXRhKVxuICBSZWNvbm5lY3RNb2RlRGF0YU1hcmtldCA9ICdyZWNvbm5lY3QtbW9kZS1kYXRhLW1hcmtldCcsXG5cbiAgLy8gR29vZ2xlIE9BdXRoXG4gIFJlY29ubmVjdE1vZGVHb29nbGVPQXV0aCA9ICdyZWNvbm5lY3QtbW9kZS1nb29nbGUtb2F1dGgnLFxuXG4gIC8vIFNhbGVzZm9yY2VPQXV0aCwgd2l0aCB0aGUgb3B0aW9uIG9mIHVzZXJuYW1lL3Bhc3N3b3JkIGF1dGhcbiAgUmVjb25uZWN0TW9kZVNhbGVzZm9yY2VPQXV0aCA9ICdyZWNvbm5lY3QtbW9kZS1zYWxlc2ZvcmNlLW9hdXRoJyxcblxuICAvLyBXZWIgZGF0YSBjb25uZWN0b3JcbiAgUmVjb25uZWN0TW9kZVdlYkRhdGEgPSAncmVjb25uZWN0LW1vZGUtd2ViLWRhdGEnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gQXV0aGVudGljYXRpb25FbnVtc0F1dGhPcHRpb24ge1xuXG4gIC8vIEZJUlNUXG4gIEF1dGhFeHBsaWNpdCA9ICdhdXRoLW9wdGlvbi1leHBsaWNpdCcsXG5cbiAgLy8gXG4gIEF1dGhFeHBsaWNpdFVuaW5kZW50ZWQgPSAnYXV0aC1vcHRpb24tZXhwbGljaXQtdW5pbmRlbnRlZCcsXG5cbiAgLy8gXG4gIEF1dGhVc2VXaW5kb3dzID0gJ2F1dGgtb3B0aW9uLXVzZS13aW5kb3dzJyxcblxuICAvLyBcbiAgQXV0aFVzZVdpbmRvd3NQcmVmZXJyZWQgPSAnYXV0aC1vcHRpb24td2luZG93cy1wcmVmZXJyZWQnLFxuXG4gIC8vIFxuICBBdXRoVGVyYWRhdGEgPSAnYXV0aC1vcHRpb24tdGVyYWRhdGEnLFxuXG4gIC8vIFxuICBBdXRoTERBUCA9ICdhdXRoLW9wdGlvbi1sZGFwJyxcblxuICAvLyBcbiAgQXV0aFZpcnR1YWxOb2RlID0gJ2F1dGgtb3B0aW9uLXZpcnR1YWwtbm9kZScsXG5cbiAgLy8gXG4gIEF1dGhPRGF0YUFjY291bnQgPSAnYXV0aC1vcHRpb24tb2RhdGEnLFxuXG4gIC8vIFxuICBBdXRoTm9uZSA9ICdhdXRoLW9wdGlvbi1ub25lJyxcblxuICAvLyBcbiAgQXV0aEtlcmJlcm9zID0gJ2F1dGgtb3B0aW9uLWtlcmJlcm9zJyxcblxuICAvLyBJbnRyb2R1Y2VkIGZvciBLZXJiZXJvcyB3aXRoIGZhbGxiYWNrLCByZWNvZ25pemluZyB0aGF0IHRoZSBkYiBtYXkgb3IgbWF5IG5vdCBiZSBvbiBXaW5kb3dzXG4gIEF1dGhJbnRlZ3JhdGVkID0gJ2F1dGgtb3B0aW9uLWludGVncmF0ZWQnLFxuXG4gIC8vIFxuICBBdXRoVXNlcm5hbWUgPSAnYXV0aC1vcHRpb24tdXNlcm5hbWUnLFxuXG4gIC8vIFxuICBBdXRoVXNlcm5hbWVBbmRQYXNzd29yZCA9ICdhdXRoLW9wdGlvbi11c2VybmFtZS1hbmQtcGFzc3dvcmQnLFxuXG4gIC8vIFxuICBBdXRoU1NMID0gJ2F1dGgtb3B0aW9uLXNzbCcsXG5cbiAgLy8gXG4gIEF1dGhIRElFbXVsYXRvciA9ICdhdXRoLWhkaS1lbXVsYXRvcicsXG5cbiAgLy8gXG4gIEF1dGhIRElTZXJ2aWNlID0gJ2F1dGgtaGRpLXNlcnZpY2UnLFxuXG4gIC8vIFxuICBBdXRoSFRUUCA9ICdhdXRoLWh0dHAnLFxuXG4gIC8vIFxuICBBdXRoSFRUUFMgPSAnYXV0aC1odHRwcycsXG5cbiAgLy8gXG4gIEF1dGhBY2Nlc3NOb1NlY3VyaXR5ID0gJ2F1dGgtb3B0aW9uLWFjY2Vzcy1ubycsXG5cbiAgLy8gXG4gIEF1dGhBY2Nlc3NZZXNTZWN1cml0eSA9ICdhdXRoLW9wdGlvbi1hY2Nlc3MteWVzJyxcblxuICAvLyBcbiAgQXV0aE9BdXRoID0gJ2F1dGgtb2F1dGgnLFxuXG4gIC8vIFxuICBBdXRoRm9ybXMgPSAnYXV0aC1mb3JtcycsXG5cbiAgLy8gXG4gIEF1dGhUaGlyZFBhcnR5U1NPID0gJ2F1dGgtdGhpcmQtcGFydHktU1NPJyxcblxuICAvLyBMQVNUXG4gIEF1dGhJbnZhbGlkID0gJ2F1dGgtb3B0aW9uLWludmFsaWQnXG59XG5cbi8vIGRhdGEgc291cmNlIHZhbGlkYXRpb24gbW9kZXNcbmV4cG9ydCBlbnVtIERhdGFTb3VyY2VQYXJzZXJWYWxpZGF0aW9uTW9kZSB7XG5cbiAgLy8gXG4gIFdvcmtib29rTG9hZFZhbGlkYXRpb24gPSAnd29ya2Jvb2stbG9hZC12YWxpZGF0aW9uJyxcblxuICAvLyBcbiAgQXV0b1ZhbGlkYXRpb24gPSAnYXV0by12YWxpZGF0aW9uJyxcblxuICAvLyBcbiAgRm9yY2VWYWxpZGF0aW9uID0gJ2ZvcmNlLXZhbGlkYXRpb24nLFxuXG4gIC8vIFxuICBQcmV2ZW50VmFsaWRhdGlvbiA9ICdwcmV2ZW50LXZhbGlkYXRpb24nLFxuXG4gIC8vIFxuICBQcmV2ZW50VmFsaWRhdGlvbkFuZFRocm93ID0gJ3ByZXZlbnQtdmFsaWRhdGlvbi1hbmQtdGhyb3cnXG59XG5cbi8vIEVudW0gZm9yIERhdGFHcmlkL01ldGFkYXRhR3JpZCBmaWVsZHMgcmVvcmRlcmluZ1xuZXhwb3J0IGVudW0gRmllbGRPcmRlclR5cGUge1xuXG4gIC8vIFxuICBEQVRBU09VUkNFX09SREVSID0gJ2RhdGFzb3VyY2Utb3JkZXInLFxuXG4gIC8vIFxuICBBTFBIQV9QRVJfVEFCTEUgPSAnYWxwaGEtcGVyLXRhYmxlJyxcblxuICAvLyBcbiAgQUxQSEFCRVRJQ0FMX09SREVSID0gJ2FscGhhYmV0aWNhbC1vcmRlcicsXG5cbiAgLy8gXG4gIENVU1RPTV9PUkRFUiA9ICdjdXN0b20tb3JkZXInXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gTGluZUludGVycG9sYXRpb25Nb2RlIHtcblxuICAvLyBcbiAgTElNX0xpbmVhciA9ICdsaW0tbGluZWFyJyxcblxuICAvLyBcbiAgTElNX1N0ZXAgPSAnbGltLXN0ZXAnLFxuXG4gIC8vIFxuICBMSU1fSnVtcCA9ICdsaW0tanVtcCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBMaW5lTWFya2VyUG9zaXRpb24ge1xuXG4gIC8vIFxuICBMTVBfTGVmdCA9ICdsbXAtbGVmdCcsXG5cbiAgLy8gXG4gIExNUF9DZW50ZXIgPSAnbG1wLWNlbnRlcicsXG5cbiAgLy8gXG4gIExNUF9SaWdodCA9ICdsbXAtcmlnaHQnXG59XG5cbi8vIEVudW1lcmF0aW9uIGZvciB0aGUgdHlwZSBvZiBqb2luIGNvbm5lY3RpbmcgdHdvIHRhYmxlc1xuZXhwb3J0IGVudW0gU1FMSm9pblR5cGUge1xuXG4gIC8vIFxuICBTUUxfSW5uZXJKb2luID0gJ3NxbC1pbm5lci1qb2luJyxcblxuICAvLyBcbiAgU1FMX0xlZnRKb2luID0gJ3NxbC1sZWZ0LWpvaW4nLFxuXG4gIC8vIFxuICBTUUxfUmlnaHRKb2luID0gJ3NxbC1yaWdodC1qb2luJyxcblxuICAvLyBcbiAgU1FMX0Z1bGxKb2luID0gJ3NxbC1mdWxsLWpvaW4nLFxuXG4gIC8vIFxuICBTUUxfQ3Jvc3NKb2luID0gJ3NxbC1jcm9zcy1qb2luJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEZvbGRlclJvbGUge1xuXG4gIC8vIFxuICBGT0xERVJfRElNRU5TSU9OUyA9ICdkaW1lbnNpb25zJyxcblxuICAvLyBcbiAgRk9MREVSX01FQVNVUkVTID0gJ21lYXN1cmUnLFxuXG4gIC8vIFxuICBGT0xERVJfR1JPVVBTID0gJ2dyb3VwcycsXG5cbiAgLy8gXG4gIEZPTERFUl9QQVJBTUVURVJTID0gJ3BhcmFtZXRlcnMnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gRmllbGRUeXBlSWNvblNldCB7XG5cbiAgLy8gXG4gIEZUX1NFVF9BTEwgPSAnYWxsJyxcblxuICAvLyBcbiAgRlRfU0VUX0NVQkVfTUVBU1VSRVMgPSAnY3ViZS1tZWFzdXJlcycsXG5cbiAgLy8gXG4gIEZUX1NFVF9DVUJFX0RJTUVOU0lPTlMgPSAnY3ViZS1kaW1lbnNpb25zJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEZpZWxkUGl2b3RTdHJhdGVneSB7XG5cbiAgLy8gXG4gIFBJVk9UX09OX0tFWSA9ICdwaXZvdC1vbi1rZXknLFxuXG4gIC8vIFxuICBQSVZPVF9PTl9BTElBUyA9ICdwaXZvdC1vbi1hbGlhcydcbn1cblxuLy8gXG5leHBvcnQgZW51bSBBbGlhc1R5cGUge1xuXG4gIC8vIFxuICBBTElBU19OT1RTRVQgPSAnYWxpYXMtbm90LXNldCcsXG5cbiAgLy8gXG4gIEFMSUFTX0JFR0lOID0gJ2FsaWFzLWJlZ2luJyxcblxuICAvLyBcbiAgQUxJQVNfS0VZID0gJ2FsaWFzLWtleScsXG5cbiAgLy8gXG4gIEFMSUFTX0tFWV9OQU1FID0gJ2FsaWFzLWtleS1uYW1lJyxcblxuICAvLyBcbiAgQUxJQVNfS0VZX01FRE5BTUUgPSAnYWxpYXMta2V5LW1lZG5hbWUnLFxuXG4gIC8vIFxuICBBTElBU19LRVlfTE9OR05BTUUgPSAnYWxpYXMta2V5LWxvbmduYW1lJyxcblxuICAvLyBcbiAgQUxJQVNfTkFNRSA9ICdhbGlhcy1uYW1lJyxcblxuICAvLyBcbiAgQUxJQVNfTkFNRV9LRVkgPSAnYWxpYXMtbmFtZS1rZXknLFxuXG4gIC8vIFxuICBBTElBU19NRUROQU1FID0gJ2FsaWFzLW1lZG5hbWUnLFxuXG4gIC8vIFxuICBBTElBU19NRUROQU1FX0tFWSA9ICdhbGlhcy1tZWRuYW1lLWtleScsXG5cbiAgLy8gXG4gIEFMSUFTX0xPTkdOQU1FID0gJ2FsaWFzLWxvbmduYW1lJyxcblxuICAvLyBcbiAgQUxJQVNfTE9OR05BTUVfS0VZID0gJ2FsaWFzLWxvbmduYW1lLWtleScsXG5cbiAgLy8gXG4gIEFMSUFTX0VORCA9ICdhbGlhcy1lbmQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gQWxpYXNUeXBlcyB7XG5cbiAgLy8gXG4gIE1BU0tfQUxJQVNfS0VZID0gJ21hc2stYWxpYXMta2V5JyxcblxuICAvLyBcbiAgTUFTS19BTElBU19OQU1FID0gJ21hc2stYWxpYXMtbmFtZScsXG5cbiAgLy8gXG4gIE1BU0tfQUxJQVNfTUVETkFNRSA9ICdtYXNrLWFsaWFzLW1lZG5hbWUnLFxuXG4gIC8vIFxuICBNQVNLX0FMSUFTX0xPTkdOQU1FID0gJ21hc2stYWxpYXMtbG9uZ25hbWUnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gRmllbGRSb2xlIHtcblxuICAvLyBcbiAgUk9MRV9ESU1FTlNJT04gPSAnZGltZW5zaW9uJyxcblxuICAvLyBcbiAgUk9MRV9NRUFTVVJFID0gJ21lYXN1cmUnLFxuXG4gIC8vIFxuICBST0xFX1VOS05PV04gPSAndW5rbm93bidcbn1cblxuLy8gXG5leHBvcnQgZW51bSBGaWVsZFR5cGUge1xuXG4gIC8vIFxuICBUWVBFX1FVQU5USVRBVElWRSA9ICdxdWFudGl0YXRpdmUnLFxuXG4gIC8vIFxuICBUWVBFX09SRElOQUwgPSAnb3JkaW5hbCcsXG5cbiAgLy8gXG4gIFRZUEVfTk9NSU5BTCA9ICdub21pbmFsJyxcblxuICAvLyBcbiAgVFlQRV9VTktOT1dOID0gJ3Vua25vd24nXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gRGF0YVNvdXJjZU9yZGVyIHtcblxuICAvLyBcbiAgRFNPX0FMUEhBQkVUSUMgPSAnZHNvLWFscGhhYmV0aWMnLFxuXG4gIC8vIFxuICBEU09fT1JESU5BTCA9ICdkc28tb3JkaW5hbCdcbn1cblxuLy8gV2hlcmUgdGhlIGNvbHVtbiBjb21lcyBmcm9tXG5leHBvcnQgZW51bSBDb2x1bW5DbGFzcyB7XG5cbiAgLy8gQSBtZXRhZGF0YSBjb2x1bW4gKE8gb3IgUSBNZWFzdXJlcylcbiAgQ09MX01FVEFEQVRBID0gJ2NvbC1tZXRhZGF0YScsXG5cbiAgLy8gQSBwaHlzaWNhbCBjb2x1bW4gb24gdGhlIGRhdGFiYXNlXG4gIENPTF9EQVRBQkFTRSA9ICdjb2wtZGF0YWJhc2UnLFxuXG4gIC8vIEEgbnVtYmVyaWMgYmluIChhIHNwZWNpYWwga2luZCBvZiBjYWxjdWxhdGVkIGNvbHVtbilcbiAgQ09MX05VTUVSSUNCSU4gPSAnY29sLW51bWVyaWNiaW4nLFxuXG4gIC8vIEEgQ2F0ZWdvcmljYWwgYmluIChncm91cClcbiAgQ09MX0NBVEVHT1JJQ0FMQklOID0gJ2NvbC1jYXRlZ29yaWNhbGJpbicsXG5cbiAgLy8gQSBjb2x1bW4gaW5zdGFuY2VcbiAgQ09MX0lOU1RBTkNFID0gJ2NvbC1pbnN0YW5jZScsXG5cbiAgLy8gQSAocmF3KSBtZHggY2FsY3VsYXRlZCBjb2x1bW5cbiAgQ09MX01EWENBTEMgPSAnY29sLW1keGNhbGMnLFxuXG4gIC8vIEEgdXNlci1kZWZpbmVkIGNhbGN1bGF0ZWQgY29sdW1uLCBUYWJsZWF1IGV4cHJlc3Npb24gc3ludGF4XG4gIENPTF9VU0VSQ0FMQyA9ICdjb2wtdXNlcmNhbGMnLFxuXG4gIC8vIEEgY29sdW1uIHRoYXQgd291bGQgaGF2ZSBiZWVuIENPTF9EQVRBQkFTRSwgYnV0IHRoZSB1bmRlcmx5aW5nIGRhdGFiYXNlIGNvbHVtbiBkb2VzIG5vdCBleGlzdFxuICBDT0xfREFOR0xJTkcgPSAnY29sLWRhbmdsaW5nJyxcblxuICAvLyBBIGNvbHVtbiB0aGF0IGNvbnRhaW5zIGxvY2FsIHN1cHBsaWVkIGRhdGEgKGUuZy4gTGF0aXR1ZGUpXG4gIENPTF9MT0NBTERBVEEgPSAnY29sLWxvY2FsZGF0YScsXG5cbiAgLy8gQSBjb2x1bW4gdGhhdCBjb250YWlucyBhIHZpc3VhbCBtb2RlbCBhdHRyaWJ1dGUgKGUuZy4gUGFuZUluZGV4LCBDb2xvciwgLi4uKVxuICBDT0xfVklTVUFMREFUQSA9ICdjb2wtdmlzdWFsZGF0YScsXG5cbiAgLy8gQSBjb2x1bW4gdGhhdCdzIGEgR3JvdXAgKGEgXCIgU2V0IFwiIGluIFVJIHRlcm1pbm9sb2d5KVxuICBDT0xfR1JPVVAgPSAnY29sLWdyb3VwJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFZUQWdnVHlwZSB7XG5cbiAgLy8gXG4gIFZUQUdHX1NVTSA9ICdzdW0nLFxuXG4gIC8vIFxuICBWVEFHR19BVkcgPSAnYXZnJyxcblxuICAvLyBcbiAgVlRBR0dfTUlOID0gJ21pbicsXG5cbiAgLy8gXG4gIFZUQUdHX01BWCA9ICdtYXgnLFxuXG4gIC8vIFxuICBWVEFHR19TRVJWRVIgPSAnc2VydmVyJyxcblxuICAvLyBcbiAgVlRBR0dfTk9ORSA9ICdub25lJyxcblxuICAvLyBcbiAgVlRBR0dfREVGQVVMVCA9ICdkZWZhdWx0J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEVudGl0eVR5cGUge1xuXG4gIC8vIFxuICBOb0VudW1lcmF0aW9uRW50aXR5ID0gJ25vLWVudW1lcmF0aW9uLWVudGl0eScsXG5cbiAgLy8gXG4gIERhdGFiYXNlRW50aXR5ID0gJ2RhdGFiYXNlLWVudGl0eScsXG5cbiAgLy8gXG4gIFNjaGVtYUVudGl0eSA9ICdzY2hlbWEtZW50aXR5JyxcblxuICAvLyBcbiAgVGFibGVFbnRpdHkgPSAndGFibGUtZW50aXR5J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFBpY2tFbnRpdHlTZWFyY2hUeXBlIHtcblxuICAvLyBcbiAgUGlja0VudGl0eVNlYXJjaFR5cGVfU3RhcnRzV2l0aCA9ICdzdGFydHMtd2l0aCcsXG5cbiAgLy8gXG4gIFBpY2tFbnRpdHlTZWFyY2hUeXBlX0NvbnRhaW5zID0gJ2NvbnRhaW5zJyxcblxuICAvLyBcbiAgUGlja0VudGl0eVNlYXJjaFR5cGVfRXhhY3RNYXRjaCA9ICdleGFjdC1tYXRjaCcsXG5cbiAgLy8gXG4gIFBpY2tFbnRpdHlTZWFyY2hUeXBlX0RFRkFVTFQgPSAnZGVmYXVsdCdcbn1cblxuLy8gUGFyc2luZyBtZXRob2RzIGFuZCBzdHJ1Y3R1cmVzLlxuZXhwb3J0IGVudW0gRXhwcmVzc2lvbk9wIHtcblxuICAvLyBcbiAgTG9naWNhbE9yID0gJ29wLWxvZ2ljYWwtb3InLFxuXG4gIC8vIFxuICBMb2dpY2FsQW5kID0gJ29wLWxvZ2ljYWwtYW5kJyxcblxuICAvLyBcbiAgTG9naWNhbE5vdCA9ICdvcC1sb2dpY2FsLW5vdCcsXG5cbiAgLy8gXG4gIEJpdHdpc2VYT3IgPSAnb3AtYml0d2lzZS14b3InLFxuXG4gIC8vIFxuICBCaXR3aXNlT3IgPSAnb3AtYml0d2lzZS1vcicsXG5cbiAgLy8gXG4gIEVxdWFscyA9ICdvcC1lcXVhbHMnLFxuXG4gIC8vIFxuICBHcmVhdGVyID0gJ29wLWdyZWF0ZXInLFxuXG4gIC8vIFxuICBMZXNzID0gJ29wLWxlc3MnLFxuXG4gIC8vIFxuICBHRXF1YWwgPSAnb3AtZ2VxdWFsJyxcblxuICAvLyBcbiAgTEVxdWFsID0gJ29wLWxlcXVhbCcsXG5cbiAgLy8gXG4gIE5FcXVhbCA9ICdvcC1uZXF1YWwnLFxuXG4gIC8vIFxuICBQbHVzID0gJ29wLXBsdXMnLFxuXG4gIC8vIFxuICBNaW51cyA9ICdvcC1taW51cycsXG5cbiAgLy8gXG4gIEJpdHdpc2VBbmQgPSAnb3AtYml0d2lzZS1hbmQnLFxuXG4gIC8vIFxuICBNdWx0aXBseSA9ICdvcC1tdWx0aXBseScsXG5cbiAgLy8gXG4gIERpdmlkZSA9ICdvcC1kaXZpZGUnLFxuXG4gIC8vIFxuICBNb2R1bG8gPSAnb3AtbW9kdWxvJyxcblxuICAvLyBcbiAgUG93ZXIgPSAnb3AtcG93ZXInLFxuXG4gIC8vIFxuICBQb3NpdGl2ZSA9ICdvcC1wb3NpdGl2ZScsXG5cbiAgLy8gXG4gIE5lZ2F0aXZlID0gJ29wLW5lZ2F0aXZlJyxcblxuICAvLyBcbiAgQml0d2lzZU5vdCA9ICdvcC1iaXR3aXNlLW5vdCcsXG5cbiAgLy8gXG4gIENvbHVtbiA9ICdvcC1jb2x1bW4nLFxuXG4gIC8vIFxuICBTdHJpbmcgPSAnb3Atc3RyaW5nJyxcblxuICAvLyBcbiAgTnVtYmVyID0gJ29wLW51bWJlcicsXG5cbiAgLy8gXG4gIERhdGUgPSAnb3AtZGF0ZScsXG5cbiAgLy8gXG4gIEJvb2xlYW4gPSAnb3AtYm9vbGVhbicsXG5cbiAgLy8gXG4gIEZ1bmNhbGwgPSAnb3AtZnVuY2FsbCcsXG5cbiAgLy8gXG4gIExQYXJlbiA9ICdvcC1scGFyZW4nLFxuXG4gIC8vIFxuICBSUGFyZW4gPSAnb3AtcnBhcmVuJyxcblxuICAvLyBcbiAgQ29tbWEgPSAnb3AtY29tbWEnLFxuXG4gIC8vIFxuICBJZGVudCA9ICdvcC1pZGVudCcsXG5cbiAgLy8gXG4gIE51bGwgPSAnb3AtbnVsbCcsXG5cbiAgLy8gXG4gIElmID0gJ29wLWlmJyxcblxuICAvLyBcbiAgRWxzZWlmID0gJ29wLWVsc2VpZicsXG5cbiAgLy8gXG4gIENhc2UgPSAnb3AtY2FzZScsXG5cbiAgLy8gXG4gIFdoZW4gPSAnb3Atd2hlbicsXG5cbiAgLy8gXG4gIFRoZW4gPSAnb3AtdGhlbicsXG5cbiAgLy8gXG4gIEVsc2UgPSAnb3AtZWxzZScsXG5cbiAgLy8gXG4gIEVuZEV4cHIgPSAnb3AtZW5kZXhwcicsXG5cbiAgLy8gXG4gIFdoaXRlc3BhY2UgPSAnb3Atd2hpdGVzcGFjZScsXG5cbiAgLy8gXG4gIENvbW1lbnQgPSAnb3AtY29tbWVudCcsXG5cbiAgLy8gXG4gIExCcmFjZSA9ICdvcC1sYnJhY2UnLFxuXG4gIC8vIFxuICBSQnJhY2UgPSAnb3AtcmJyYWNlJyxcblxuICAvLyBcbiAgQ29sb24gPSAnb3AtY29sb24nLFxuXG4gIC8vIFxuICBCYXIgPSAnb3AtYmFyJyxcblxuICAvLyBcbiAgVHh0eXBlID0gJ29wLXR4dHlwZScsXG5cbiAgLy8gXG4gIEVuZCA9ICdvcC1lbmQnLFxuXG4gIC8vIFxuICBSQnJhY2tldHMgPSAnb3AtcmJyYWNrZXRzJyxcblxuICAvLyB1c2VkIHRvIHJlcHJlc2VudCBpbnZhbGlkIHRva2Vuc1xuICBJbnZhbGlkID0gJ29wLWludmFsaWQnXG59XG5cbi8vIHRyaS1zdGF0ZSBib29sXG5leHBvcnQgZW51bSBUcmlCb29sIHtcblxuICAvLyBcbiAgVEJfSW52YWxpZCA9ICd0cmlib29sLWludmFsaWQnLFxuXG4gIC8vIFxuICBUQl9GYWxzZSA9ICd0cmlib29sLWZhbHNlJyxcblxuICAvLyBcbiAgVEJfVHJ1ZSA9ICd0cmlib29sLXRydWUnXG59XG5cbi8vIHRhYmxlIGNhbGMgcmVmZXJlbmNlIG9wdGlvbnMgc2V0XG5leHBvcnQgZW51bSBSZWZlcmVuY2VPcHRpb25zU2V0IHtcblxuICAvLyBcbiAgUk9TX1JlbGF0aXZlID0gJ3JlZmVyZW5jZS1vcHRpb25zLXNldC1yZWxhdGl2ZScsXG5cbiAgLy8gXG4gIFJPU19GaXhlZCA9ICdyZWZlcmVuY2Utb3B0aW9ucy1zZXQtZml4ZWQnLFxuXG4gIC8vIFxuICBST1NfUGFyYW1ldGVyID0gJ3JlZmVyZW5jZS1vcHRpb25zLXNldC1wYXJhbWV0ZXInLFxuXG4gIC8vIFxuICBST1NfTm9uZSA9ICdyZWZlcmVuY2Utb3B0aW9ucy1zZXQtbm9uZSdcbn1cblxuLy8gd2lkZ2V0IHN0YXRlXG5leHBvcnQgZW51bSBXaWRnZXRTdGF0ZSB7XG5cbiAgLy8gXG4gIEhpZGRlbiA9ICd3aWRnZXQtc3RhdGUtaGlkZGVuJyxcblxuICAvLyBcbiAgRGlzYWJsZWQgPSAnd2lkZ2V0LXN0YXRlLWRpc2FibGVkJyxcblxuICAvLyBcbiAgRW5hYmxlZCA9ICd3aWRnZXQtc3RhdGUtZW5hYmxlZCdcbn1cblxuLy8gcmFuayB0eXBlXG5leHBvcnQgZW51bSBSYW5rVHlwZSB7XG5cbiAgLy8gXG4gIENvbXBldGl0aW9uID0gJ3JhbmstdHlwZS1jb21wZXRpdGlvbicsXG5cbiAgLy8gXG4gIE1vZGlmaWVkQ29tcGV0aXRpb24gPSAncmFuay10eXBlLW1vZGlmaWVkLWNvbXBldGl0aW9uJyxcblxuICAvLyBcbiAgRGVuc2UgPSAncmFuay10eXBlLWRlbnNlJyxcblxuICAvLyBcbiAgVW5pcXVlID0gJ3JhbmstdHlwZS11bmlxdWUnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gVGFibGVDYWxjQ29tbWFuZFR5cGUge1xuXG4gIC8vIFxuICBUYWJsZUNhbGNDb21tYW5kQ2xlYXIgPSAnY2xlYXInXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gQ2FsY05lc3RpbmdMZXZlbCB7XG5cbiAgLy8gXG4gIFByaW1hcnkgPSAncHJpbWFyeScsXG5cbiAgLy8gdXNlZCBvbmx5IGZvciB0eXBlICE9IFRDX0NVU1RPTVxuICBTZWNvbmRhcnkgPSAnc2Vjb25kYXJ5JyxcblxuICAvLyB1c2VkIG9ubHkgZm9yIHR5cGUgPT0gVENfQ1VTVE9NXG4gIE5lc3RlZCA9ICduZXN0ZWQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gRGVjaW1hbE1vZGUge1xuXG4gIC8vIFxuICBEZWNpbWFsTW9kZUF1dG9tYXRpYyA9ICdhdXRvbWF0aWMnLFxuXG4gIC8vIFxuICBEZWNpbWFsTW9kZU1hbnVhbCA9ICdtYW51YWwnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gVGFibGVDYWxjT3JkZXJpbmdUeXBlIHtcblxuICAvLyBBZHZhbmNlZC4uLlxuICBPVEZpZWxkID0gJ2ZpZWxkJyxcblxuICAvLyBUYWJsZSAoQWNyb3NzKVxuICBPVFJvd3MgPSAncm93cycsXG5cbiAgLy8gVGFibGUgKERvd24pXG4gIE9UQ29sdW1ucyA9ICdjb2x1bW5zJyxcblxuICAvLyBUYWJsZSAoQWNyb3NzIHRoZW4gRG93bilcbiAgT1RUYWJsZSA9ICd0YWJsZScsXG5cbiAgLy8gVGFibGUgKERvd24gdGhlbiBBY3Jvc3MpXG4gIE9UVGFibGVDb2x1bW5QcmVjZWRlbmNlID0gJ3RhYmxlLWNvbHVtbi1wcmVjZWRlbmNlJyxcblxuICAvLyBQYW5lIEFjcm9zc1xuICBPVFJvd0luUGFuZSA9ICdyb3ctaW4tcGFuZScsXG5cbiAgLy8gUGFuZSAoRG93bilcbiAgT1RDb2x1bW5JblBhbmUgPSAnY29sdW1uLWluLXBhbmUnLFxuXG4gIC8vIFBhbmUgKEFjcm9zcyB0aGVuIERvd24pXG4gIE9UUGFuZSA9ICdwYW5lJyxcblxuICAvLyBQYW5lIChEb3duIHRoZW4gQWNyb3NzKVxuICBPVFBhbmVDb2x1bW5QcmVjZWRlbmNlID0gJ3BhbmUtY29sdW1uLXByZWNlZGVuY2UnLFxuXG4gIC8vIENlbGxcbiAgT1RDZWxsSW5QYW5lID0gJ2NlbGwtaW4tcGFuZSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBUYWJsZUNhbGNTb3J0TW9kZSB7XG5cbiAgLy8gXG4gIFNNX0F1dG9tYXRpYyA9ICdzb3J0LW1vZGUtYXV0b21hdGljJyxcblxuICAvLyBcbiAgU01fQ3VzdG9tID0gJ3NvcnQtbW9kZS1jdXN0b20nXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gVGFibGVDYWxjVGFibGVDYWxjVHlwZSB7XG5cbiAgLy8gbm9uZSAodXNlZCB0byBpbml0aWFsaXplIHZhcmlhYmxlcylcbiAgVENfTk9ORSA9ICdub25lJyxcblxuICAvLyBSdW5uaW5nIFRvdGFsXG4gIFRDX0NVTVVMQVRJVkUgPSAnY3VtdWxhdGl2ZScsXG5cbiAgLy8gTW92aW5nIENhbGN1bGF0aW9uXG4gIFRDX1dJTkRPVyA9ICd3aW5kb3cnLFxuXG4gIC8vIERpZmZlcmVuY2UgRnJvbVxuICBUQ19ESUZGID0gJ2RpZmYnLFxuXG4gIC8vIFBlcmNlbnQgRGlmZmVyZW5jZSBGcm9tXG4gIFRDX1BDVERJRkYgPSAncGN0LWRpZmYnLFxuXG4gIC8vIFBlcmNlbnQgRnJvbVxuICBUQ19QQ1RWQUxVRSA9ICdwY3QtdmFsdWUnLFxuXG4gIC8vIFBlcmNlbnQgT2YgVG90YWxcbiAgVENfUENUVE9UQUwgPSAncGN0LXRvdGFsJyxcblxuICAvLyBSYW5rXG4gIFRDX1JBTksgPSAncmFuaycsXG5cbiAgLy8gUGVyY2VudGlsZVxuICBUQ19QQ1RSQU5LID0gJ3BjdC1yYW5rJyxcblxuICAvLyBDdXN0b21cbiAgVENfQ1VTVE9NID0gJ2N1c3RvbSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBRdWlja1RhYmxlQ2FsY0NvbW1hbmRUeXBlIHtcblxuICAvLyBcbiAgUXVpY2tUYWJsZUNhbGNDb21tYW5kUnVuVG90YWwgPSAncnVuLXRvdGFsJyxcblxuICAvLyBcbiAgUXVpY2tUYWJsZUNhbGNDb21tYW5kRGlmZmVyZW5jZSA9ICdkaWZmZXJlbmNlJyxcblxuICAvLyBcbiAgUXVpY2tUYWJsZUNhbGNDb21tYW5kUGN0RGlmZiA9ICdwY3QtZGlmZicsXG5cbiAgLy8gXG4gIFF1aWNrVGFibGVDYWxjQ29tbWFuZFBjdFRvdGFsID0gJ3BjdC10b3RhbCcsXG5cbiAgLy8gXG4gIFF1aWNrVGFibGVDYWxjQ29tbWFuZFJhbmsgPSAncmFuaycsXG5cbiAgLy8gXG4gIFF1aWNrVGFibGVDYWxjQ29tbWFuZFBjdFJhbmsgPSAncGN0LXJhbmsnLFxuXG4gIC8vIFxuICBRdWlja1RhYmxlQ2FsY0NvbW1hbmRNb3ZpbmdBdmcgPSAnbW92aW5nLWF2ZycsXG5cbiAgLy8gXG4gIFF1aWNrVGFibGVDYWxjQ29tbWFuZFl0ZCA9ICd5dGQnLFxuXG4gIC8vIFxuICBRdWlja1RhYmxlQ2FsY0NvbW1hbmRDZ3IgPSAnY2dyJyxcblxuICAvLyBcbiAgUXVpY2tUYWJsZUNhbGNDb21tYW5kWU92ZXJZID0gJ3ktb3Zlci15JyxcblxuICAvLyBcbiAgUXVpY2tUYWJsZUNhbGNDb21tYW5kWXRkR3Jvd3RoID0gJ3l0ZC1ncm93dGgnLFxuXG4gIC8vIFxuICBRdWlja1RhYmxlQ2FsY0NvbW1hbmRDdXN0b20gPSAnY3VzdG9tJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFRhYmxlQ2FsY0FkZHJlc3NDb21tYW5kVHlwZSB7XG5cbiAgLy8gXG4gIFRhYmxlQ2FsY0FkZHJlc3NDb21tYW5kUmVsID0gJ3JlbCcsXG5cbiAgLy8gXG4gIFRhYmxlQ2FsY0FkZHJlc3NDb21tYW5kQWJzID0gJ2FicycsXG5cbiAgLy8gXG4gIFRhYmxlQ2FsY0FkZHJlc3NDb21tYW5kUGFyYW0gPSAncGFyYW0nLFxuXG4gIC8vIFxuICBUYWJsZUNhbGNBZGRyZXNzQ29tbWFuZE1vcmUgPSAnbW9yZSdcbn1cblxuLy8gcmVsYXRpdmUgYWRkcmVzc2luZ1xuZXhwb3J0IGVudW0gVGFibGVDYWxjUmVsYXRpdmVBZGRyZXNzIHtcblxuICAvLyBcbiAgUmVsQWRkckZpcnN0ID0gJ3JlbGF0aXZlLWFkZHJlc3MtZmlyc3QnLFxuXG4gIC8vIFxuICBSZWxBZGRyUHJldmlvdXMgPSAncmVsYXRpdmUtYWRkcmVzcy1wcmV2aW91cycsXG5cbiAgLy8gXG4gIFJlbEFkZHJOZXh0ID0gJ3JlbGF0aXZlLWFkZHJlc3MtbmV4dCcsXG5cbiAgLy8gXG4gIFJlbEFkZHJMYXN0ID0gJ3JlbGF0aXZlLWFkZHJlc3MtbGFzdCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBDYXRlZ29yaWNhbEJpbkl0ZW1UeXBlIHtcblxuICAvLyBcbiAgVW5iaW5uZWQgPSAndW5iaW5uZWQnLFxuXG4gIC8vIFxuICBCaW5NZW1iZXIgPSAnY2F0ZWdvcmljYWwtYmluLW1lbWJlcicsXG5cbiAgLy8gXG4gIEJpbiA9ICdjYXRlZ29yaWNhbC1iaW4nXG59XG5cbi8vIFRoZSBjbGFzcyBwcm9wZXJ0aWVzXG5leHBvcnQgZW51bSBDcmVkZW50aWFsVHlwZVByb3BlcnRpZXNGbGFnIHtcblxuICAvLyBcbiAgTm9uZSA9ICdub25lJyxcblxuICAvLyBcbiAgR2VuZXJpY0F1dGhDbGFzcyA9ICdnZW5lcmljLWF1dGgtY2xhc3MnLFxuXG4gIC8vIFxuICBQcm92aWRlckNsYXNzID0gJ3Byb3ZpZGVyLWNsYXNzJyxcblxuICAvLyBcbiAgRGF0YUNvbm5lY3Rpb25DbGFzcyA9ICdkYXRhLWNvbm5lY3Rpb24tY2xhc3MnXG59XG5cbi8vIFRoZSBjb25uZWN0b3IgdHlwZVxuZXhwb3J0IGVudW0gQ29ubmVjdG9yVHlwZSB7XG5cbiAgLy8gXG4gIEludmFsaWQgPSAnaW52YWxpZCcsXG5cbiAgLy8gXG4gIFdlYkRhdGFDb25uZWN0b3IgPSAnd2ViLWRhdGEtY29ubmVjdG9yJyxcblxuICAvLyBcbiAgQ2xvdWRGaWxlQ29ubmVjdG9yID0gJ2Nsb3VkLWZpbGUtY29ubmVjdG9yJyxcblxuICAvLyBcbiAgTGVnYWN5Q29ubmVjdG9yID0gJ2xlZ2FjeS1jb25uZWN0b3InXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gVGFibGVQaWxsSWNvbiB7XG5cbiAgLy8gXG4gIExpc3RJdGVtID0gJ2xpc3QtaXRlbScsXG5cbiAgLy8gXG4gIFNoZWV0ID0gJ3NoZWV0JyxcblxuICAvLyBcbiAgRm91bmRUYWJsZSA9ICdmb3VuZC10YWJsZScsXG5cbiAgLy8gXG4gIE5hbWVkUmFuZ2UgPSAnbmFtZWQtcmFuZ2UnLFxuXG4gIC8vIFxuICBTdG9yZWRQcm9jZWR1cmUgPSAnc3RvcmVkLXByb2NlZHVyZSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBKb2luVmFsaWRhdGlvbkVycm9yIHtcblxuICAvLyBcbiAgSlZFX05vRXJyb3IgPSAnbm8tZXJyb3InLFxuXG4gIC8vIFxuICBKVkVfRW1wdHlDbGF1c2UgPSAnZW1wdHktY2xhdXNlJyxcblxuICAvLyBcbiAgSlZFX1R5cGVNaXNtYXRjaCA9ICd0eXBlLW1pc21hdGNoJyxcblxuICAvLyBcbiAgSlZFX0ludmFsaWRGaWVsZCA9ICdpbnZhbGlkLWZpZWxkJyxcblxuICAvLyBcbiAgSlZFX0JhZENsYXVzZSA9ICdiYWQtY2xhdXNlJyxcblxuICAvLyBcbiAgSlZFX0JhZElucHV0UmVsYXRpb24gPSAnYmFkLWlucHV0LXJlbGF0aW9uJyxcblxuICAvLyBcbiAgSlZFX1JlcGVhdGVkRmllbGRSZWZlcmVuY2VzID0gJ3JlcGVhdGVkLWZpZWxkLXJlZmVyZW5jZXMnLFxuXG4gIC8vIFxuICBKVkVfVW5zdXBwb3J0ZWRKb2luVHlwZSA9ICd1bnN1cHBvcnRlZC1qb2luLXR5cGUnLFxuXG4gIC8vIFxuICBKVkVfSW52YWxpZENhbGN1bGF0aW9uID0gJ2ludmFsaWQtY2FsY3VsYXRpb24nLFxuXG4gIC8vIFxuICBKVkVfTm9uU3BhdGlhbFR5cGUgPSAnbm9uLXNwYXRpYWwtdHlwZScsXG5cbiAgLy8gXG4gIEpWRV9Ob25TcGF0aWFsQ29tcGFyaXNvbiA9ICdub24tc3BhdGlhbC1jb21wJyxcblxuICAvLyBcbiAgSlZFX1Vua25vd24gPSAndW5rbm93bidcbn1cblxuLy8gXG5leHBvcnQgZW51bSBDb25uZWN0aW9uVHlwZUVudW0ge1xuXG4gIC8vIC1kLXMgaXMgdXNlZCB0byBmb3JjZSB0aGUgZW51bSBnZW5lcmF0b3IgdG8gZ2VuZXJhdGUgRFMgd2l0aCBjYXBpdGFsIGxldHRlcnMgaW4gLmNzIGp1c3QgbGlrZSB0aGUgLmNwcFxuICBJbnZhbGlkRFMgPSAnaW52YWxpZC1kLXMnLFxuXG4gIC8vIFxuICBGaWxlRFMgPSAnZmlsZS1kLXMnLFxuXG4gIC8vIFxuICBTZXJ2ZXJEUyA9ICdzZXJ2ZXItZC1zJyxcblxuICAvLyBcbiAgSW50ZXJuZXREUyA9ICdpbnRlcm5ldC1kLXMnLFxuXG4gIC8vIFxuICBUYWJsZWF1U2VydmVyRFMgPSAndGFibGVhdS1zZXJ2ZXItZC1zJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIENvbm5lY3Rpb25FcnJvclN0YWdlIHtcblxuICAvLyBcbiAgVW5rbm93biA9ICd1bmtub3duJyxcblxuICAvLyBcbiAgQ3JlYXRlUHJvdG9jb2xGYWlsZWQgPSAnY3JlYXRlLXByb3RvY29sLWZhaWxlZCcsXG5cbiAgLy8gXG4gIExvYWRNZXRhZGF0YUZhaWxlZCA9ICdsb2FkLW1ldGFkYXRhLWZhaWxlZCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTZXRUaWNrT3JpZ2luUmVzdWx0IHtcblxuICAvLyBcbiAgU3VjY2VzcyA9ICdzZXQtdGljay1vcmlnaW4tc3VjY2Vzcy1yZXN1bHQnLFxuXG4gIC8vIFxuICBQYXJzZUZhaWx1cmUgPSAnc2V0LXRpY2stb3JpZ2luLXBhcnNlLWZhaWx1cmUtcmVzdWx0JyxcblxuICAvLyBcbiAgVmFsdWVGYWlsdXJlID0gJ3NldC10aWNrLW9yaWdpbi12YWx1ZS1mYWlsdXJlLXJlc3VsdCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTZXRUaWNrU3BhY2luZ1Jlc3VsdCB7XG5cbiAgLy8gXG4gIFN1Y2Nlc3MgPSAnc2V0LXRpY2stc3BhY2luZy1zdWNjZXNzLXJlc3VsdCcsXG5cbiAgLy8gXG4gIFBhcnNlRmFpbHVyZSA9ICdzZXQtdGljay1zcGFjaW5nLXBhcnNlLWZhaWx1cmUtcmVzdWx0JyxcblxuICAvLyBcbiAgVmFsdWVGYWlsdXJlID0gJ3NldC10aWNrLXNwYWNpbmctdmFsdWUtZmFpbHVyZS1yZXN1bHQnXG59XG5cbi8vIFRoZSByZXN1bHQgb2Ygc2V0dGluZyBvbmUgZW5kIG9mIGFuIGF4aXMgcmFuZ2VcbmV4cG9ydCBlbnVtIFNldEF4aXNSYW5nZVJlc3VsdCB7XG5cbiAgLy8gXG4gIFN1Y2Nlc3MgPSAnc2V0LWF4aXMtcmFuZ2Utc3VjY2Vzcy1yZXN1bHQnLFxuXG4gIC8vIFxuICBGYWlsdXJlID0gJ3NldC1heGlzLXJhbmdlLWZhaWx1cmUtcmVzdWx0J1xufVxuXG4vLyBUaGUgdHlwZSBvZiBhbiBheGlzJyBleHRlbnRcbmV4cG9ydCBlbnVtIEF4aXNFeHRlbnRUeXBlIHtcblxuICAvLyBcbiAgQXV0b21hdGljID0gJ2F4aXMtZXh0ZW50LWF1dG9tYXRpYycsXG5cbiAgLy8gXG4gIFVuaWZvcm0gPSAnYXhpcy1leHRlbnQtdW5pZm9ybScsXG5cbiAgLy8gXG4gIEluZGVwZW5kZW50ID0gJ2F4aXMtZXh0ZW50LWluZGVwZW5kZW50JyxcblxuICAvLyBcbiAgRml4ZWQgPSAnYXhpcy1leHRlbnQtZml4ZWQnXG59XG5cbi8vIEVudW1lcmF0aW9uIG9mIHVuaXRzIHRpY2sgc3BhY2luZyBjYW4gdGFrZVxuZXhwb3J0IGVudW0gVGlja1NwYWNpbmdVbml0cyB7XG5cbiAgLy8gXG4gIE5vVW5pdHMgPSAnbm8tdW5pdHMnLFxuXG4gIC8vIFxuICBZZWFycyA9ICd5ZWFycycsXG5cbiAgLy8gXG4gIFF1YXJ0ZXJzID0gJ3F1YXJ0ZXJzJyxcblxuICAvLyBcbiAgTW9udGhzID0gJ21vbnRocycsXG5cbiAgLy8gXG4gIFdlZWtzID0gJ3dlZWtzJyxcblxuICAvLyBcbiAgRGF5cyA9ICdkYXlzJyxcblxuICAvLyBcbiAgSG91cnMgPSAnaG91cnMnLFxuXG4gIC8vIFxuICBNaW51dGVzID0gJ21pbnV0ZXMnLFxuXG4gIC8vIFxuICBTZWNvbmRzID0gJ3NlY29uZHMnXG59XG5cbi8vIEVudW1lcmF0aW9uIG9mIHdoZXRoZXIgdG90YWxzIGFyZSBpbmNsdWRlZCBpbiBvciBleGNsdWRlZCBmcm9tIHRoZSBjb2xvciBlbmNvZGluZ1xuZXhwb3J0IGVudW0gVG90YWxzSW5jbHVzaW9uIHtcblxuICAvLyBUb3RhbHMgaW5jbHVkZWQgaW4gY29sb3IgZW5jb2RpbmdcbiAgSW5jbHVkZVRvdGFscyA9ICdpbmNsdWRlLXRvdGFscycsXG5cbiAgLy8gVG90YWxzIGV4Y2x1ZGVkIGZyb20gY29sb3IgZW5jb2RpbmdcbiAgRXhjbHVkZVRvdGFscyA9ICdleGNsdWRlLXRvdGFscydcbn1cblxuLy8gSG93IHRpY2sgbWFya3MgYXJlIGJlaW5nIGNhbGN1bGF0ZWRcbmV4cG9ydCBlbnVtIFRpY2tNYXJrU3RhdGUge1xuXG4gIC8vIFxuICBUaWNrc0F1dG9tYXRpYyA9ICd0aWNrcy1hdXRvbWF0aWMnLFxuXG4gIC8vIFxuICBUaWNrc01hbnVhbCA9ICd0aWNrcy1tYW51YWwnLFxuXG4gIC8vIFxuICBUaWNrc05vbmUgPSAndGlja3MtTm9uZSdcbn1cblxuLy8gU2V0dGluZyBmb3IgdHlwZSBvZiBheGlzIHJhbmdlXG5leHBvcnQgZW51bSBBeGlzUmFuZ2VUeXBlIHtcblxuICAvLyBcbiAgQXV0b21hdGljUmFuZ2UgPSAnYXV0b21hdGljLXJhbmdlJyxcblxuICAvLyBcbiAgVW5pZm9ybVJhbmdlID0gJ3VuaWZvcm0tcmFuZ2UnLFxuXG4gIC8vIFxuICBJbmRlcGVuZGVudFJhbmdlID0gJ2luZGVwZW5kZW50LXJhbmdlJyxcblxuICAvLyBcbiAgRml4ZWRSYW5nZSA9ICdmaXhlZC1yYW5nZScsXG5cbiAgLy8gXG4gIEZpeGVkTWluID0gJ2ZpeGVkLW1pbicsXG5cbiAgLy8gXG4gIEZpeGVkTWF4ID0gJ2ZpeGVkLW1heCcsXG5cbiAgLy8gXG4gIEZpeGVkTWluVW5pZm9ybU1heCA9ICdmaXhlZC1taW4tdW5pZm9ybS1tYXgnLFxuXG4gIC8vIFxuICBGaXhlZE1pbkluZGVwZW5kZW50TWF4ID0gJ2ZpeGVkLW1pbi1pbmRlcGVuZGVudC1tYXgnLFxuXG4gIC8vIFxuICBGaXhlZE1heFVuaWZvcm1NaW4gPSAnZml4ZWQtbWF4LXVuaWZvcm0tbWluJyxcblxuICAvLyBcbiAgRml4ZWRNYXhJbmRlcGVuZGVudE1pbiA9ICdmaXhlZC1tYXgtaW5kZXBlbmRlbnQtbWluJyxcblxuICAvLyBcbiAgRml4ZWRSYW5nZU9yZGluYWwgPSAnZml4ZWQtcmFuZ2Utb3JkaW5hbCdcbn1cblxuLy8gcmVwcmVzZW50cyB0eXBlIG9mIHdpZGdldCBvbiB0aGUgdG9vbGJhciBvZiByaWNoIHRleHQgZWRpdG9yXG5leHBvcnQgZW51bSBSaWNoVGV4dEVkaXRvcldpZGdldEtleSB7XG5cbiAgLy8gXG4gIE5vbmUgPSAnbm9uZScsXG5cbiAgLy8gXG4gIEZvbnRTaXplID0gJ2ZvbnRzaXplJyxcblxuICAvLyBcbiAgRm9udE5hbWUgPSAnZm9udG5hbWUnLFxuXG4gIC8vIFxuICBGb250Q29sb3IgPSAnY29sb3InLFxuXG4gIC8vIFxuICBCb2xkID0gJ2JvbGQnLFxuXG4gIC8vIFxuICBJdGFsaWMgPSAnaXRhbGljJyxcblxuICAvLyBcbiAgVW5kZXJsaW5lID0gJ3VuZGVybGluZScsXG5cbiAgLy8gXG4gIEFsaWduTGVmdCA9ICdqdXN0aWZ5bGVmdCcsXG5cbiAgLy8gXG4gIEFsaWduQ2VudGVyID0gJ2p1c3RpZnljZW50ZXInLFxuXG4gIC8vIFxuICBBbGlnblJpZ2h0ID0gJ2p1c3RpZnlyaWdodCcsXG5cbiAgLy8gXG4gIENsZWFyRm9ybWF0dGluZyA9ICdjbGVhcmZvcm1hdHRpbmcnLFxuXG4gIC8vIFxuICBUYWJsZWF1S2V5d29yZHMgPSAndGFibGVhdWtleXdvcmRzJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIENlbGxTaXplQ2hhbmdlIHtcblxuICAvLyBcbiAgQ1NDX1RhbGxlciA9ICd0YWxsZXInLFxuXG4gIC8vIFxuICBDU0NfU2hvcnRlciA9ICdzaG9ydGVyJyxcblxuICAvLyBcbiAgQ1NDX1dpZGVyID0gJ3dpZGVyJyxcblxuICAvLyBcbiAgQ1NDX05hcnJvd2VyID0gJ25hcnJvd2VyJyxcblxuICAvLyBcbiAgQ1NDX0JpZ2dlciA9ICdiaWdnZXInLFxuXG4gIC8vIFxuICBDU0NfU21hbGxlciA9ICdzbWFsbGVyJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIENlbGxUeXBlRW51bSB7XG5cbiAgLy8gXG4gIENMVF9TcXVhcmUgPSAnc3F1YXJlJyxcblxuICAvLyBcbiAgQ0xUX1RleHQgPSAndGV4dCdcbn1cblxuLy8gcmVwcmVzZW50cyB0eXBlIG9mIGZvcm1hdHRpbmcgcHJlcyBtb2RlbFxuZXhwb3J0IGVudW0gVHlwZU9mRm9ybWF0SXRlbSB7XG5cbiAgLy8gXG4gIEZUX0Zvcm1hdEl0ZW0gPSAnZm9ybWF0SXRlbScsXG5cbiAgLy8gXG4gIEZUX0Zvcm1hdENvbnRhaW5lciA9ICdmb3JtYXRDb250YWluZXInLFxuXG4gIC8vIFxuICBGVF9Gb3JtYXRDb250cm9sID0gJ2Zvcm1hdENvbnRyb2wnXG59XG5cbi8vIHJlcHJlc2VudHMgdHlwZSBvZiBmb3JtYXR0aW5nIGNvbnRhaW5lclxuZXhwb3J0IGVudW0gVHlwZU9mRm9ybWF0Q29udGFpbmVyIHtcblxuICAvLyBcbiAgRlRfRm9ybWF0UGFuZSA9ICdmb3JtYXRQYW5lJyxcblxuICAvLyBcbiAgRlRfRm9ybWF0U2VjdGlvbiA9ICdmb3JtYXRTZWN0aW9uJyxcblxuICAvLyBcbiAgRlRfQ29sbGFwc2libGVTZWN0aW9uID0gJ2NvbGxhcHNpYmxlU2VjdGlvbicsXG5cbiAgLy8gXG4gIEZUX0NvbXBvc2l0ZUNvbnRhaW5lciA9ICdjb21wb3NpdGVDb250YWluZXInLFxuXG4gIC8vIFxuICBGVF9Vbml0Q29udGFpbmVyID0gJ3VuaXRDb250YWluZXInLFxuXG4gIC8vIFxuICBGVF9UYWIgPSAndGFiJyxcblxuICAvLyBcbiAgRlRfVGFiR3JvdXAgPSAndGFiR3JvdXAnXG59XG5cbi8vIHJlcHJlc2VudHMgdHlwZSBvZiBmb3JtYXR0aW5nIGNvbnRyb2xcbmV4cG9ydCBlbnVtIFR5cGVPZkZvcm1hdENvbnRyb2wge1xuXG4gIC8vIFxuICBGVF9Ob25lID0gJ25vbmUnLFxuXG4gIC8vIFxuICBGVF9OdW1lcmljQ29udHJvbCA9ICdudW1lcmljLWNvbnRyb2wnLFxuXG4gIC8vIFxuICBGVF9UZXh0Q29udHJvbCA9ICd0ZXh0LWNvbnRyb2wnLFxuXG4gIC8vIFxuICBGVF9Db2xvckNvbnRyb2wgPSAnY29sb3ItY29udHJvbCcsXG5cbiAgLy8gXG4gIEZUX1NlbGVjdG9yQ29udHJvbCA9ICdzZWxlY3Rvci1jb250cm9sJyxcblxuICAvLyBcbiAgRlRfVG9nZ2xlQ29udHJvbCA9ICd0b2dnbGUtY29udHJvbCdcbn1cblxuLy8gcmVwcmVzZW50cyB0eXBlIG9mIGZvcm1hdHRpbmcgd2lkZ2V0XG5leHBvcnQgZW51bSBGb3JtYXRXaWRnZXRLZXkge1xuXG4gIC8vIFxuICBGV0tfTm9uZSA9ICdub25lJyxcblxuICAvLyBcbiAgRldLX0ZvbnRGYW1pbHkgPSAnZm9udEZhbWlseScsXG5cbiAgLy8gXG4gIEZXS19Gb250U2l6ZSA9ICdmb250U2l6ZScsXG5cbiAgLy8gXG4gIEZXS19Db2xvclN3YXRjaCA9ICdjb2xvclN3YXRjaCcsXG5cbiAgLy8gXG4gIEZXS19Cb2xkID0gJ2JvbGQnLFxuXG4gIC8vIFxuICBGV0tfSXRhbGljcyA9ICdpdGFsaWNzJyxcblxuICAvLyBcbiAgRldLX1VuZGVybGluZSA9ICd1bmRlcmxpbmUnLFxuXG4gIC8vIFxuICBGV0tfTGluZVZpc2liaWxpdHkgPSAnbGluZVZpc2liaWxpdHknLFxuXG4gIC8vIFxuICBGV0tfTGluZVBhdHRlcm4gPSAnbGluZVBhdHRlcm4nLFxuXG4gIC8vIFxuICBGV0tfTGluZVNpemUgPSAnbGluZVNpemUnLFxuXG4gIC8vIFxuICBGV0tfTnVtYmVyVHlwZSA9ICdudW1lcmljVHlwZScsXG5cbiAgLy8gXG4gIEZXS19EZWNpbWFsUGxhY2VzID0gJ2RlY2ltYWxQbGFjZXMnLFxuXG4gIC8vIFxuICBGV0tfVGhvdXNhbmRzU2VwYXJhdG9yID0gJ3Rob3VzYW5kc1NlcGFyYXRvcicsXG5cbiAgLy8gXG4gIEZXS19OdW1lcmljVW5pdHMgPSAnbnVtZXJpY1VuaXRzJ1xufVxuXG4vLyByZXByZXNlbnRzIGlkZW50aWZpZXIgZm9yIGVhY2ggbm9kZSBpbiBmb3JtYXQgcGFuZVxuZXhwb3J0IGVudW0gRm9ybWF0Tm9kZUlkZW50aWZpZXIge1xuXG4gIC8vIFxuICBGb3JtYXRfTm9uZV9LZXkgPSAnbm9uZScsXG5cbiAgLy8gXG4gIEZvcm1hdF9Xb3JrYm9va19LZXkgPSAnd29ya2Jvb2snLFxuXG4gIC8vIFxuICBGb3JtYXRfRm9udF9LZXkgPSAnZm9udCcsXG5cbiAgLy8gXG4gIEZvcm1hdF9Db2xvcl9LZXkgPSAnY29sb3InLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZXNfS2V5ID0gJ2xpbmVzJyxcblxuICAvLyBcbiAgRm9ybWF0X0ZvbnRBbGxfS2V5ID0gJ2ZvbnQtYWxsJyxcblxuICAvLyBcbiAgRm9ybWF0X0ZvbnRBbGxDb250cm9sc19LZXkgPSAnZm9udC1hbGwtY29udHJvbHMnLFxuXG4gIC8vIFxuICBGb3JtYXRfRm9udE1vcmVfS2V5ID0gJ2ZvbnQtbW9yZScsXG5cbiAgLy8gXG4gIEZvcm1hdF9Gb250V29ya3NoZWV0VGl0bGVzX0tleSA9ICd3b3Jrc2hlZXQtdGl0bGVzJyxcblxuICAvLyBcbiAgRm9ybWF0X0ZvbnRUb29sVGlwX0tleSA9ICdmb250LXRvb2x0aXAnLFxuXG4gIC8vIFxuICBGb3JtYXRfRm9udFdvcmtzaGVldF9LZXkgPSAnZm9udC13b3Jrc2hlZXQnLFxuXG4gIC8vIFxuICBGb3JtYXRfRm9udERhc2hUaXRsZXNfS2V5ID0gJ2Rhc2gtdGl0bGVzJyxcblxuICAvLyBcbiAgRm9ybWF0X0ZvbnRTdG9yeVRpdGxlc19LZXkgPSAnc3RvcnktdGl0bGVzJyxcblxuICAvLyBcbiAgRm9ybWF0X0ZvbnRUaXRsZXNDb250cm9sc19LZXkgPSAndGl0bGVzLWNvbnRyb2xzJyxcblxuICAvLyBcbiAgRm9ybWF0X0ZvbnRUb29sdGlwQ29udHJvbHNfS2V5ID0gJ3Rvb2x0aXAtY29udHJvbHMnLFxuXG4gIC8vIFxuICBGb3JtYXRfRm9udFdvcmtzaGVldENvbnRyb2xzX0tleSA9ICd3b3Jrc2hlZXQtY29udHJvbHMnLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZU1vcmVfS2V5ID0gJ2xpbmUtbW9yZScsXG5cbiAgLy8gXG4gIEZvcm1hdF9MaW5lR3JpZF9LZXkgPSAnbGluZS1ncmlkJyxcblxuICAvLyBcbiAgRm9ybWF0X0xpbmVHcmlkVGFic19LZXkgPSAnbGluZS1ncmlkLXRhYnMnLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZVplcm9fS2V5ID0gJ2xpbmUtemVybycsXG5cbiAgLy8gXG4gIEZvcm1hdF9MaW5lWmVyb1RhYnNfS2V5ID0gJ2xpbmUtemVyby10YWJzJyxcblxuICAvLyBcbiAgRm9ybWF0X0xpbmVBeGlzVGlja19LZXkgPSAnbGluZS1heGlzLXRpY2snLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZUF4aXNUaWNrVGFic19LZXkgPSAnbGluZS1heGlzLXRpY2stdGFicycsXG5cbiAgLy8gXG4gIEZvcm1hdF9MaW5lQXhpc1J1bGVyX0tleSA9ICdsaW5lLWF4aXMtcnVsZXInLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZUF4aXNSdWxlclRhYnNfS2V5ID0gJ2xpbmUtYXhpcy1ydWxlci10YWJzJyxcblxuICAvLyBcbiAgRm9ybWF0X0xpbmVIZWFkZXJEaXZpZGVyX0tleSA9ICdsaW5lLWhlYWRlci1kaXZpZGVyJyxcblxuICAvLyBcbiAgRm9ybWF0X0xpbmVIZWFkZXJEaXZpZGVyVGFic19LZXkgPSAnbGluZS1oZWFkZXItZGl2aWRlci10YWJzJyxcblxuICAvLyBcbiAgRm9ybWF0X0xpbmVQYW5lRGl2aWRlcl9LZXkgPSAnbGluZS1wYW5lRGl2aWRlcicsXG5cbiAgLy8gXG4gIEZvcm1hdF9MaW5lUGFuZURpdmlkZXJUYWJzX0tleSA9ICdsaW5lLXBhbmVEaXZpZGVyLXRhYnMnLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZUdyaWRBbGxfS2V5ID0gJ2xpbmUtZ3JpZC1hbGwnLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZUdyaWRSb3dfS2V5ID0gJ2xpbmUtZ3JpZC1yb3cnLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZUdyaWRDb2x1bW5fS2V5ID0gJ2xpbmUtZ3JpZC1jb2x1bW4nLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZVplcm9BbGxfS2V5ID0gJ2xpbmUtemVyby1hbGwnLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZVplcm9Sb3dfS2V5ID0gJ2xpbmUtemVyby1yb3cnLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZVplcm9Db2x1bW5fS2V5ID0gJ2xpbmUtemVyby1jb2x1bW4nLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZUF4aXNUaWNrQWxsX0tleSA9ICdsaW5lLWF4aXMtdGljay1hbGwnLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZUF4aXNUaWNrUm93X0tleSA9ICdsaW5lLWF4aXMtdGljay1yb3cnLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZUF4aXNUaWNrQ29sdW1uX0tleSA9ICdsaW5lLWF4aXMtdGljay1jb2x1bW4nLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZUF4aXNSdWxlckFsbF9LZXkgPSAnbGluZS1heGlzLXJ1bGVyLWFsbCcsXG5cbiAgLy8gXG4gIEZvcm1hdF9MaW5lQXhpc1J1bGVyUm93X0tleSA9ICdsaW5lLWF4aXMtcnVsZXItcm93JyxcblxuICAvLyBcbiAgRm9ybWF0X0xpbmVBeGlzUnVsZXJDb2x1bW5fS2V5ID0gJ2xpbmUtYXhpcy1ydWxlci1jb2x1bW4nLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZVJlZmVyZW5jZV9LZXkgPSAnbGluZS1yZWZlcmVuY2UnLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZURyb3BfS2V5ID0gJ2xpbmUtZHJvcCcsXG5cbiAgLy8gXG4gIEZvcm1hdF9MaW5lVHJlbmRfS2V5ID0gJ2xpbmUtdHJlbmQnLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZVZpc2liaWxpdHlfS2V5ID0gJ2xpbmUtdmlzaWJpbGl0eScsXG5cbiAgLy8gXG4gIEZvcm1hdF9MaW5lUGF0dGVybl9LZXkgPSAnbGluZS1wYXR0ZXJuJyxcblxuICAvLyBcbiAgRm9ybWF0X0xpbmVXaWR0aF9LZXkgPSAnbGluZS13aWR0aCcsXG5cbiAgLy8gXG4gIEZvcm1hdF9MaW5lQ29sb3JfS2V5ID0gJ2xpbmUtY29sb3InLFxuXG4gIC8vIFxuICBGb3JtYXRfVGlja0NvbG9yX0tleSA9ICd0aWNrLWNvbG9yJyxcblxuICAvLyBcbiAgRm9ybWF0X0JvcmRlclBhdHRlcm5fS2V5ID0gJ2JvcmRlci1wYXR0ZXJuJyxcblxuICAvLyBcbiAgRm9ybWF0X0JvcmRlckNvbG9yX0tleSA9ICdib3JkZXItY29sb3InLFxuXG4gIC8vIFxuICBGb3JtYXRfRGl2aWRlckNvbG9yX0tleSA9ICdkaXZpZGVyLWNvbG9yJyxcblxuICAvLyBcbiAgRm9ybWF0X0ZvbnRGYW1pbHlfS2V5ID0gJ2ZvbnQtZmFtaWx5LWtleScsXG5cbiAgLy8gXG4gIEZvcm1hdF9Gb250U2l6ZV9LZXkgPSAnZm9udC1zaXplLWtleScsXG5cbiAgLy8gXG4gIEZvcm1hdF9Cb2xkX0tleSA9ICdib2xkLWtleScsXG5cbiAgLy8gXG4gIEZvcm1hdF9JdGFsaWNzX0tleSA9ICdpdGFsaWNzLWtleScsXG5cbiAgLy8gXG4gIEZvcm1hdF9VbmRlcmxpbmVfS2V5ID0gJ3VuZGVybGluZS1rZXknLFxuXG4gIC8vIFxuICBGb3JtYXRfRm9udENvbG9yX0tleSA9ICdmb250LWNvbG9yLWtleScsXG5cbiAgLy8gXG4gIEZvcm1hdF9OdW1iZXJfQ29udGFpbmVyX0tleSA9ICdudW1iZXItY29udGFpbmVyJyxcblxuICAvLyBcbiAgRm9ybWF0X051bWJlcl9UeXBlX0tleSA9ICdudW1iZXItY29udGFpbmVyLXR5cGUnLFxuXG4gIC8vIFxuICBGb3JtYXRfTnVtYmVyX1VuaXRzX0tleSA9ICdudW1iZXItY29udGFpbmVyLXVuaXRzJyxcblxuICAvLyBcbiAgRm9ybWF0X051bWJlcl9EZWNpbWFsX0tleSA9ICdudW1iZXItY29udGFpbmVyLWRlY2ltYWwnLFxuXG4gIC8vIFxuICBGb3JtYXRfTnVtYmVyX1Rob3VzYW5kc19TZXBhcmF0b3JfS2V5ID0gJ251bWJlci1jb250YWluZXItdGhvdXNhbmRzLXNlcGFyYXRvcicsXG5cbiAgLy8gXG4gIEZvcm1hdF9Gb250UGlja2VyTWluaW1hbF9LZXkgPSAnZm9udC1waWNrZXItbWluaW1hbCcsXG5cbiAgLy8gXG4gIEZvcm1hdF9Gb250UGlja2VyRGVmYXVsdF9LZXkgPSAnZm9udC1waWNrZXItZGVmYXVsdCcsXG5cbiAgLy8gXG4gIEZvcm1hdF9MaW5lUGlja2VyRGVmYXVsdF9LZXkgPSAnbGluZS1waWNrZXItZGVmYXVsdCcsXG5cbiAgLy8gXG4gIEZvcm1hdF9MaW5lUGlja2VyTm9WaXNfS2V5ID0gJ2xpbmUtcGlja2VyLW5vLXZpc2liaWxpdHknLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZUF4aXNUaWNrUGlja2VyX0tleSA9ICdsaW5lLWF4aXMtdGljay1waWNrZXInXG59XG5cbi8vIEZvcm1hdCBwcmVwZW5kZWQgdG8gZm9ybWF0IHN0cmluZ3MgdG8gc3BlY2lmeSB0eXBlXG5leHBvcnQgZW51bSBGb3JtYXRDb2RlIHtcblxuICAvLyBcbiAgQXV0b0Zvcm1hdCA9ICdhdXRvLWZvcm1hdCcsXG5cbiAgLy8gXG4gIFN5c3RlbUxvbmdEYXRlID0gJ3N5c3RlbS1sb25nLWRhdGUnLFxuXG4gIC8vIFxuICBTeXN0ZW1TaG9ydERhdGUgPSAnc3lzdGVtLXNob3J0LWRhdGUnLFxuXG4gIC8vIFxuICBTeXN0ZW1OdW1iZXIgPSAnc3lzdGVtLW51bWJlcicsXG5cbiAgLy8gXG4gIFN5c3RlbUN1cnJlbmN5ID0gJ3N5c3RlbS1jdXJyZW5jeScsXG5cbiAgLy8gXG4gIFN5c3RlbVRpbWUgPSAnc3lzdGVtLXRpbWUnLFxuXG4gIC8vIFxuICBDdXN0b20gPSAnY3VzdG9tJyxcblxuICAvLyBcbiAgQ3VzdG9tSUNVID0gJ2N1c3RvbS1pY3UnLFxuXG4gIC8vIFxuICBDdXN0b21OdW1iZXIgPSAnY3VzdG9tLW51bWJlcicsXG5cbiAgLy8gXG4gIEN1c3RvbUN1cnJlbmN5ID0gJ2N1c3RvbS1jdXJyZW5jeScsXG5cbiAgLy8gXG4gIEN1c3RvbVNjaWVudGlmaWMgPSAnY3VzdG9tLXNjaWVudGlmaWMnLFxuXG4gIC8vIFxuICBDdXN0b21QZXJjZW50YWdlID0gJ2N1c3RvbS1wZXJjZW50YWdlJ1xufVxuXG4vLyBVbml0cyBzcGVjaWZpZWQgaW4gYSBmb3JtYXQgc3RyaW5nXG5leHBvcnQgZW51bSBVbml0c0Zvcm1hdEVudW0ge1xuXG4gIC8vIFxuICBVbml0c0ZtdE5vbmUgPSAndW5pdHMtbm9uZScsXG5cbiAgLy8gXG4gIFVuaXRzRm10VGhvdXNhbmRzID0gJ3VuaXRzLXRob3VzYW5kcycsXG5cbiAgLy8gXG4gIFVuaXRzRm10TWlsbGlvbnMgPSAndW5pdHMtbWlsbGlvbnMnLFxuXG4gIC8vIFxuICBVbml0c0ZtdEJpbGxpb25zRW5nbGlzaCA9ICd1bml0cy1iaWxsaW9ucy1lbmdsaXNoJyxcblxuICAvLyBcbiAgVW5pdHNGbXRCaWxsaW9uc1N0YW5kYXJkID0gJ3VuaXRzLWJpbGxpb25zLXN0YW5kYXJkJ1xufVxuXG4vLyByZXByZXNlbnRzIHRoZSBjb2xvciBzd2F0Y2ggdGhhdCB3aWxsIGJlIHVzZWQgaW4gdGhlIENvbG9yQ29udHJvbFByZXNNb2RlbFxuZXhwb3J0IGVudW0gQ29sb3JTd2F0Y2hUeXBlIHtcblxuICAvLyBcbiAgQ1NUX0RhcmsgPSAnZGFyay1zd2F0Y2gnLFxuXG4gIC8vIFxuICBDU1RfTGlnaHQgPSAnbGlnaHQtc3dhdGNoJ1xufVxuXG4vLyByZXByZXNlbnRzIHRoZSB0eXBlIG9mIGEgc3R5bGUgcGlja2VyLCBhZmZlY3RpbmcgdGhlIHByZXZpZXcgcmVuZGVyaW5nIGFuZCwgcG9zc2libHksIHRoZSBsYXlvdXRcbmV4cG9ydCBlbnVtIFBpY2tlclR5cGUge1xuXG4gIC8vIFxuICBQVF9Ob25lID0gJ25vbmUnLFxuXG4gIC8vIFxuICBQVF9Gb250ID0gJ2ZvbnQnLFxuXG4gIC8vIFxuICBQVF9MaW5lID0gJ2xpbmUnLFxuXG4gIC8vIFxuICBQVF9OdW1iZXIgPSAnbnVtYmVyJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFVwZGF0ZVNjb3BlIHtcblxuICAvLyBcbiAgVVNfV29ya3NoZWV0ID0gJ3dvcmtzaGVldCcsXG5cbiAgLy8gXG4gIFVTX0Rhc2hib2FyZCA9ICdkYXNoYm9hcmQnLFxuXG4gIC8vIFxuICBVU19RdWlja0ZpbHRlcnMgPSAncXVpY2stZmlsdGVycycsXG5cbiAgLy8gXG4gIFVTX1N0b3J5ID0gJ3N0b3J5J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFBhcmFtZXRlckN0cmxUeXBlc0Rpc3BsYXlNb2RlIHtcblxuICAvLyBcbiAgTU9ERV9UWVBFX0lOID0gJ3R5cGVfaW4nLFxuXG4gIC8vIFxuICBNT0RFX0NPTVBBQ1RfTElTVCA9ICdjb21wYWN0JyxcblxuICAvLyBcbiAgTU9ERV9MSVNUID0gJ2xpc3QnLFxuXG4gIC8vIFxuICBNT0RFX1NMSURFUiA9ICdzbGlkZXInLFxuXG4gIC8vIFxuICBNT0RFX0RBVEVUSU1FID0gJ2RhdGV0aW1lJ1xufVxuXG4vLyBmbGFncyBmb3IgZGlzcGxheSBvcHRpb25zXG5leHBvcnQgZW51bSBQYXJhbWV0ZXJDdHJsVHlwZXNEaXNwbGF5RmxhZyB7XG5cbiAgLy8gXG4gIERJU1BMQVlfQ1VTVE9NX1RJVExFID0gJ2N1c3RvbV90aXRsZScsXG5cbiAgLy8gXG4gIERJU1BMQVlfSElERV9TTElERVJfU0xJREVSID0gJ2hpZGVfc2xpZGVyX3NsaWRlcicsXG5cbiAgLy8gXG4gIERJU1BMQVlfSElERV9TTElERVJfUkVBRE9VVCA9ICdoaWRlX3NsaWRlcl9yZWFkb3V0JyxcblxuICAvLyBcbiAgRElTUExBWV9ISURFX1NMSURFUl9CVVRUT05TID0gJ2hpZGVfc2xpZGVyX2J1dHRvbnMnXG59XG5cbi8vIFRoZSBmb2xsb3cgc3VwcG9ydHMgMTAyNCBjdXN0b20gcGFsZXR0ZXMsIGVhY2ggd2l0aCA0bSBzaGFwZXMuIEVuY29kaW5nIGlzIHBhbGV0dGUgJmx0OyZsdDsgUGFsZXR0ZVNoaWZ0IHwgc2hhcGUuXG5leHBvcnQgZW51bSBTaGFwZUVuY29kZUNvbnN0YW50cyB7XG5cbiAgLy8gU2hpZnQgdmFsdWUgZm9yIHBhbGV0dGVcbiAgRW5jb2RlUGFsZXR0ZVNoaWZ0ID0gJ3BhbGV0dGVTaGlmdCcsXG5cbiAgLy8gTWFzayBmb3IgZ2V0dGluZyBwYWxldHRlIGZyb20gZW5jb2RlZCB2YWx1ZS4gKFRoZW4gc2hpZnQgZG93bilcbiAgRW5jb2RlUGFsZXR0ZU1hc2sgPSAncGFsZXR0ZU1hc2snLFxuXG4gIC8vIE1hc2sgZm9yIGdldHRpbmcgc2hhcGUgZnJvbSBlbmNvZGVkIHZhbHVlXG4gIEVuY29kZVNoYXBlTWFzayA9ICdzaGFwZU1hc2snXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU2hhcGVUeXBlIHtcblxuICAvLyBcbiAgU2hhcGVDaXJjbGUgPSAnY2lyY2xlJyxcblxuICAvLyBcbiAgU2hhcGVTcXVhcmUgPSAnc3F1YXJlJyxcblxuICAvLyBcbiAgU2hhcGVQbHVzID0gJ3BsdXMnLFxuXG4gIC8vIFxuICBTaGFwZVRpbWVzID0gJ3RpbWVzJyxcblxuICAvLyBcbiAgU2hhcGVBc3RlcmlzayA9ICdhc3RlcmlzaycsXG5cbiAgLy8gXG4gIFNoYXBlRGlhbW9uZCA9ICdkaWFtb25kJyxcblxuICAvLyBcbiAgU2hhcGVUcmlhbmdsZSA9ICd0cmlhbmdsZScsXG5cbiAgLy8gXG4gIFNoYXBlRG93blRyaWFuZ2xlID0gJ2Rvd24tdHJpYW5nbGUnLFxuXG4gIC8vIFxuICBTaGFwZUxlZnRUcmlhbmdsZSA9ICdsZWZ0LXRyaWFuZ2xlJyxcblxuICAvLyBcbiAgU2hhcGVSaWdodFRyaWFuZ2xlID0gJ3JpZ2h0LXRyaWFuZ2xlJyxcblxuICAvLyBcbiAgTWF4QWxsU2hhcGVzID0gJ2ludmFsaWQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU2hhcGVQYWxldHRlIHtcblxuICAvLyBidWlsdC1pbiBwYWxldHRlXG4gIFNoYXBlUGFsZXR0ZUZpbGxlZCA9ICdmaWxsZWQnLFxuXG4gIC8vIGN1c3RvbSBwYWxldHRlc1xuICBTaGFwZVBhbGV0dGVDdXN0b20xID0gJ2N1c3RvbTEnLFxuXG4gIC8vIFxuICBTaGFwZVBhbGV0dGVDdXN0b20yID0gJ2N1c3RvbTInLFxuXG4gIC8vIFxuICBTaGFwZVBhbGV0dGVDdXN0b20zID0gJ2N1c3RvbTMnLFxuXG4gIC8vIFxuICBTaGFwZVBhbGV0dGVDdXN0b200ID0gJ2N1c3RvbTQnLFxuXG4gIC8vIFxuICBTaGFwZVBhbGV0dGVDdXN0b201ID0gJ2N1c3RvbTUnLFxuXG4gIC8vIFxuICBTaGFwZVBhbGV0dGVDdXN0b202ID0gJ2N1c3RvbTYnLFxuXG4gIC8vIFxuICBTaGFwZVBhbGV0dGVDdXN0b203ID0gJ2N1c3RvbTcnLFxuXG4gIC8vIFxuICBTaGFwZVBhbGV0dGVDdXN0b204ID0gJ2N1c3RvbTgnLFxuXG4gIC8vIFxuICBTaGFwZVBhbGV0dGVDdXN0b205ID0gJ2N1c3RvbTknLFxuXG4gIC8vIFxuICBTaGFwZVBhbGV0dGVDdXN0b20xMCA9ICdjdXN0b20xMCcsXG5cbiAgLy8gXG4gIFNoYXBlUGFsZXR0ZUN1c3RvbTExID0gJ2N1c3RvbTExJyxcblxuICAvLyBhbmQgc28gb24uLi5cbiAgU2hhcGVQYWxldHRlQ3VzdG9tMTIgPSAnY3VzdG9tMTInLFxuXG4gIC8vIFxuICBTaGFwZVBhbGV0dGVIaWRkZW4gPSAnaGlkZGVuJ1xufVxuXG4vLyBTaGFwZVR5cGUgYW5kIHBhbGV0dGUgbWFwcGVkIGludG8gYSBzaW5nbGUgdmFsdWUuIFRoaXMgZW51bSBkZXBlbmRzIG9uIFNoYXBlVHlwZSBhbmQgdGhlIGltcGxlbWVudGF0aW9uIG9mIFNoYXBlTWFuYWdlcjo6SW50RW5jb2RlLlxuZXhwb3J0IGVudW0gU2hhcGVJRCB7XG5cbiAgLy8gXG4gIFNoYXBlSURDaXJjbGUgPSAnc2hhcGVJRENpcmNsZScsXG5cbiAgLy8gXG4gIFNoYXBlSURTcXVhcmUgPSAnc2hhcGVJRFNxdWFyZScsXG5cbiAgLy8gXG4gIFNoYXBlSURQbHVzID0gJ3NoYXBlSURQbHVzJyxcblxuICAvLyBcbiAgU2hhcGVJRFRpbWVzID0gJ3NoYXBlSURUaW1lcycsXG5cbiAgLy8gXG4gIFNoYXBlSURBc3RlcmlzayA9ICdzaGFwZUlEQXN0ZXJpc2snLFxuXG4gIC8vIFxuICBTaGFwZUlERGlhbW9uZCA9ICdzaGFwZUlERGlhbW9uZCcsXG5cbiAgLy8gXG4gIFNoYXBlSURUcmlhbmdsZSA9ICdzaGFwZUlEVHJpYW5nbGUnLFxuXG4gIC8vIFxuICBTaGFwZUlERG93blRyaWFuZ2xlID0gJ3NoYXBlSUREb3duVHJpYW5nbGUnLFxuXG4gIC8vIFxuICBTaGFwZUlETGVmdFRyaWFuZ2xlID0gJ3NoYXBlSURMZWZ0VHJpYW5nbGUnLFxuXG4gIC8vIFxuICBTaGFwZUlEUmlnaHRUcmlhbmdsZSA9ICdzaGFwZUlEUmlnaHRUcmlhbmdsZScsXG5cbiAgLy8gXG4gIFNoYXBlSURGaWxsZWRDaXJjbGUgPSAnc2hhcGVJREZpbGxlZENpcmNsZScsXG5cbiAgLy8gXG4gIFNoYXBlSURGaWxsZWRTcXVhcmUgPSAnc2hhcGVJREZpbGxlZFNxdWFyZScsXG5cbiAgLy8gXG4gIFNoYXBlSURGaWxsZWRQbHVzID0gJ3NoYXBlSURGaWxsZWRQbHVzJyxcblxuICAvLyBcbiAgU2hhcGVJREZpbGxlZFRpbWVzID0gJ3NoYXBlSURGaWxsZWRUaW1lcycsXG5cbiAgLy8gXG4gIFNoYXBlSURGaWxsZWRTdGFyID0gJ3NoYXBlSURGaWxsZWRTdGFyJyxcblxuICAvLyBcbiAgU2hhcGVJREZpbGxlZERpYW1vbmQgPSAnc2hhcGVJREZpbGxlZERpYW1vbmQnLFxuXG4gIC8vIFxuICBTaGFwZUlERmlsbGVkVHJpYW5nbGUgPSAnc2hhcGVJREZpbGxlZFRyaWFuZ2xlJyxcblxuICAvLyBcbiAgU2hhcGVJREZpbGxlZERvd25UcmlhbmdsZSA9ICdzaGFwZUlERmlsbGVkRG93blRyaWFuZ2xlJyxcblxuICAvLyBcbiAgU2hhcGVJREZpbGxlZExlZnRUcmlhbmdsZSA9ICdzaGFwZUlERmlsbGVkTGVmdFRyaWFuZ2xlJyxcblxuICAvLyBcbiAgU2hhcGVJREZpbGxlZFJpZ2h0VHJpYW5nbGUgPSAnc2hhcGVJREZpbGxlZFJpZ2h0VHJpYW5nbGUnLFxuXG4gIC8vIDArKFNoYXBlUGFsZXR0ZUhpZGRlbjw8RW5jb2RlUGFsZXR0ZVNoaWZ0KVxuICBTaGFwZUlEVW5zY2FsZWRGaWxsZWRDaXJjbGUgPSAnc2hhcGVJRFVuc2NhbGVkRmlsbGVkQ2lyY2xlJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIExlZ2VuZFR5cGVFbnVtIHtcblxuICAvLyBcbiAgQ29sb3IgPSAnY29sb3InLFxuXG4gIC8vIFxuICBTaGFwZSA9ICdzaGFwZScsXG5cbiAgLy8gXG4gIFNpemUgPSAnc2l6ZScsXG5cbiAgLy8gXG4gIEhpZ2hsaWdodExlZ2VuZCA9ICdoaWdobGlnaHQnLFxuXG4gIC8vIFxuICBNYXAgPSAnbWFwJyxcbn1cblxuLy8gXG5leHBvcnQgZW51bSBCcnVzaFNwZWNpYWxGaWVsZHMge1xuXG4gIC8vIFxuICBCU0ZfSW52YWxpZCA9ICdpbnZhbGlkJyxcblxuICAvLyBcbiAgQlNGX0FsbEZpZWxkcyA9ICdhbGwnLFxuXG4gIC8vIFxuICBCU0ZfRGF0ZXNBbmRUaW1lcyA9ICdkYXRlLXRpbWUnLFxuXG4gIC8vIFxuICBCU0ZfVHJhaWxzID0gJ3RyYWlscycsXG5cbiAgLy8gXG4gIEJTRl9FbnRpcmVUYWJsZSA9ICd0YWJsZSdcbn1cblxuLy8gd2hhdCBraW5kIG9mIGN1cnZlIHdpbGwgYmUgZml0IHRvIHRoZSBkYXRhIGdpdmVuIHJlc3BvbnNlIHZhcmlhYmxlIFkgYW5kIGEgc2luZ2xlIHF1YW50aXRhdGl2ZSBmYWN0b3IgWFxuZXhwb3J0IGVudW0gVHJlbmRMaW5lRml0VHlwZSB7XG5cbiAgLy8gZXF1YXRpb24gPSBZIH4gWCArIDFcbiAgVHJlbmRMaW5lRml0VHlwZV9fTGluZWFyRml0ID0gJ2xpbmVhcicsXG5cbiAgLy8gZXF1YXRpb24gPSBZIH4gWF4yICsgWCArIDFcbiAgVHJlbmRMaW5lRml0VHlwZV9fUG9seW5vbWlhbEZpdCA9ICdwb2x5bm9taWFsJyxcblxuICAvLyBlcXVhdGlvbiA9IFkgfiBsb2coWClcbiAgVHJlbmRMaW5lRml0VHlwZV9fTG9nRml0ID0gJ2xvZycsXG5cbiAgLy8gZXF1YXRpb24gPSBZIH4gZXhwKFgpXG4gIFRyZW5kTGluZUZpdFR5cGVfX0V4cEZpdCA9ICdleHAnLFxuXG4gIC8vIGVxdWF0aW9uID0gWSB+IFheYlxuICBUcmVuZExpbmVGaXRUeXBlX19Qb3dlckZpdCA9ICdwb3dlcidcbn1cblxuLy8gdHlwZSBmb3IgY29tcG9uZW50cyBvZiBhIGNvbW1hbmQgcHJlc2VudGF0aW9uIG1vZGVsXG5leHBvcnQgZW51bSBDb21tYW5kc0VudW1JdGVtVHlwZSB7XG5cbiAgLy8gaXRlbSB3aXRoIHRleHQgYW5kIGFuIGFzc29jaWF0ZWQgY29tbWFuZFxuICBJdGVtID0gJ2l0ZW0nLFxuXG4gIC8vIGR5bmFtaWMgcmFuZ2Ugb2YgaXRlbXMgZ2VuZXJhdGVkIGJ5IGFuIGFzc29jaWF0ZWQgY29tbWFuZFxuICBJdGVtUmFuZ2UgPSAncmFuZ2UnLFxuXG4gIC8vIGxpc3Qgb2Ygc3ViY29tbWFuZHNcbiAgU3ViQ29tbWFuZHNJdGVtID0gJ3N1YmNvbW1hbmRzJyxcblxuICAvLyBsb2dpY2FsIHNlcGFyYXRpb24gYmV0d2VlbiBncm91cHMgb2YgY29tbWFuZHNcbiAgU2VwYXJhdG9ySXRlbSA9ICdzZXBhcmF0b3InXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gUGFyYW1ldGVyVHlwZXNEb21haW5UeXBlIHtcblxuICAvLyBcbiAgRG9tYWluX0FueSA9ICdhbnknLFxuXG4gIC8vIFxuICBEb21haW5fTGlzdCA9ICdsaXN0JyxcblxuICAvLyBcbiAgRG9tYWluX1JhbmdlID0gJ3JhbmdlJ1xufVxuXG4vLyBDYXRlZ29yaWNhbCBmaWx0ZXIgdHlwZSB1c2FnZS5cbmV4cG9ydCBlbnVtIEZpbHRlcnNDYXRlZ29yaWNhbEZpbHRlclR5cGUge1xuXG4gIC8vIFxuICBWaXN1YWwgPSAndmlzdWFsJyxcblxuICAvLyBcbiAgRXh0cmFjdCA9ICdleHRyYWN0JyxcblxuICAvLyBcbiAgR3JvdXAgPSAnZ3JvdXAnXG59XG5cbi8vIEZpbHRlciBjb250ZXh0IGRvbWFpbnNcbmV4cG9ydCBlbnVtIEZpbHRlcnNEb21haW5UeXBlIHtcblxuICAvLyBcbiAgUmVsZXZhbnQgPSAncmVsZXZhbnQnLFxuXG4gIC8vIFxuICBDYXNjYWRpbmcgPSAnY2FzY2FkaW5nJyxcblxuICAvLyBcbiAgQ2FzY2FkaW5nQ29udGV4dCA9ICdjYXNjYWRpbmctY29udGV4dCcsXG5cbiAgLy8gXG4gIENvbnRleHQgPSAnY29udGV4dCcsXG5cbiAgLy8gXG4gIERhdGFiYXNlID0gJ2FsbCdcbn1cblxuLy8gU2VsZWN0aW9uIChyZWxhdGlvbmFsIG9ubHkpIC0gUmFuZ2UgdHlwZVxuZXhwb3J0IGVudW0gRmlsdGVyc1JhbmdlVHlwZSB7XG5cbiAgLy8gXG4gIEFsbCA9ICdhbGwnLFxuXG4gIC8vIFxuICBTZWxlY3RlZCA9ICdzZWxlY3RlZCcsXG5cbiAgLy8gXG4gIE1hbnVhbCA9ICdtYW51YWwnXG59XG5cbi8vIFBhdHRlcm4gYmFzZWQgZmlsdGVyaW5nXG5leHBvcnQgZW51bSBGaWx0ZXJzUGF0dGVyblR5cGUge1xuXG4gIC8vIHN0YXJ0cyB3aXRoIHRoZSBzcGVjaWZpZWQgcGF0dGVybiB0ZXh0XG4gIFN0YXJ0c1dpdGggPSAnc3RhcnRzLXdpdGgnLFxuXG4gIC8vIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkIHBhdHRlcm4gdGV4dFxuICBFbmRzV2l0aCA9ICdlbmRzLXdpdGgnLFxuXG4gIC8vIGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgcGF0dGVybiB0ZXh0XG4gIENvbnRhaW5zID0gJ2NvbnRhaW5zJyxcblxuICAvLyBleGFjdGx5IG1hdGNoZXMgdGhlIHNwZWNpZmllZCBwYXR0ZXJuIHRleHRcbiAgRXhhY3RNYXRjaCA9ICdleGFjdC1tYXRjaCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBGaWx0ZXJzTGltaXRUeXBlIHtcblxuICAvLyBcbiAgTm9uZSA9ICdub25lJyxcblxuICAvLyBcbiAgQnlGaWVsZCA9ICdieS1maWVsZCcsXG5cbiAgLy8gXG4gIEZvcm11bGEgPSAnZm9ybXVsYSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBGaWx0ZXJzQ29uZGl0aW9uVHlwZSB7XG5cbiAgLy8gXG4gIE5vbmUgPSAnbm9uZScsXG5cbiAgLy8gXG4gIEJ5RmllbGQgPSAnYnktZmllbGQnLFxuXG4gIC8vIFxuICBGb3JtdWxhID0gJ2Zvcm11bGEnXG59XG5cbi8vIEhpZ2hlciBsZXZlbCBpbnRlcHJldGF0aW9uIG9mIGEgcmVsYXRpdmUgZGF0ZSBmaWx0ZXIncyByYW5nZVxuZXhwb3J0IGVudW0gRmlsdGVyc1JlbGF0aXZlRGF0ZVJhbmdlVHlwZSB7XG5cbiAgLy8gXG4gIFJhbmdlQ3VycmVudCA9ICdjdXJyJyxcblxuICAvLyBcbiAgUmFuZ2VDdXJyZW50VG9EYXRlID0gJ3RvZGF0ZScsXG5cbiAgLy8gXG4gIFJhbmdlTGFzdDEgPSAnbGFzdCcsXG5cbiAgLy8gXG4gIFJhbmdlTmV4dDEgPSAnbmV4dCcsXG5cbiAgLy8gXG4gIFJhbmdlTGFzdE4gPSAnbGFzdG4nLFxuXG4gIC8vIFxuICBSYW5nZU5leHROID0gJ25leHRuJyxcblxuICAvLyBcbiAgUmFuZ2VPdGhlcjEgPSAnb3RoZXInLFxuXG4gIC8vIFxuICBSYW5nZU90aGVyTiA9ICdvdGhlcm4nLFxuXG4gIC8vIFxuICBSYW5nZUludmFsaWQgPSAnaW52YWxpZCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBGaWx0ZXJzRmlsdGVyTW9kZSB7XG5cbiAgLy8gXG4gIExvY2FsID0gJ2xvY2FsJyxcblxuICAvLyBcbiAgR2xvYmFsID0gJ2dsb2JhbCcsXG5cbiAgLy8gXG4gIFNoYXJlZCA9ICdzaGFyZWQnLFxuXG4gIC8vIFxuICBNYXBwZWRHbG9iYWwgPSAnbWFwcGVkLWdsb2JhbCdcbn1cblxuLy8gSG93IHVuY29tbWl0dGVkIHNlbGVjdGlvbiBzdGF0ZSBpcyBiZWluZyB0cmFja2VkXG5leHBvcnQgZW51bSBGaWx0ZXJzU2VsZWN0aW9uVHJhY2tpbmcge1xuXG4gIC8vIFBhc3NlZCBtZW1iZXJzIGhhdmUgYmVlbiB1cGRhdGVkOiBlYWNoIGluY2x1ZGVkIG1lbWJlcnMnIHNlbGVjdGlvbiBzdGF0ZSBzaG91bGQgYmUgZmxpcHBlZCBmcm9tIGl0cyBpbml0aWFsIHN0YXRlLlxuICBEaWZmZXJlbmNlc0Zyb21CYXNlID0gJ2RpZmZlcmVuY2VzJyxcblxuICAvLyBQYXNzZWQgbWVtYmVycyBzaG91bGQgYmUgdW5jb25kaXRpb25hbGx5IHNlbGVjdGVkXG4gIFNlbGVjdGVkVmFsdWVzID0gJ3NlbGVjdGVkJyxcblxuICAvLyBEb24ndCBzYXZlIGFueSBzZWxlY3Rpb24gc3RhdGUuIFRoaXMgc2F2ZXMgbWVtb3J5IGF0IHRoZSBjb3N0IG9mIG5vdCBiZWluZyByZWNvdmVyYWJsZSBpZiB0aGUgY29udHJvbGxlciBpcyBnb25lLlxuICBOb25lID0gJ2RvbnQtdHJhY2stc2VsZWN0aW9uLXN0YXRlJ1xufVxuXG4vLyBmaWx0ZXIgdXBkYXRlIG9wdGlvbnNcbmV4cG9ydCBlbnVtIEZpbHRlclVwZGF0ZVR5cGUge1xuXG4gIC8vIHNlbGVjdCBhbGwgdmFsdWVzIGluIGZpbHRlclxuICBBTEwgPSAnZmlsdGVyLWFsbCcsXG5cbiAgLy8gYWRkIGl0ZW1zIHRvIGV4aXN0aW5nIGZpbHRlclxuICBBREQgPSAnZmlsdGVyLWFkZCcsXG5cbiAgLy8gcmVtb3ZlIGl0ZW1zIGZyb20gZXhpc3RpbmcgZmlsdGVyXG4gIFJFTU9WRSA9ICdmaWx0ZXItcmVtb3ZlJyxcblxuICAvLyByZXBsYWNlIGV4aXN0aW5nIGZpbHRlciB3aXRoIGdpdmVuIG9wdGlvbnNcbiAgUkVQTEFDRSA9ICdmaWx0ZXItcmVwbGFjZScsXG5cbiAgLy8gbWl4dHVyZSBvZiBhZGQgKyByZW1vdmFsXG4gIERFTFRBID0gJ2ZpbHRlci1kZWx0YScsXG5cbiAgLy8gY2xlYXIgdGhlIGZpbHRlclxuICBDTEVBUiA9ICdmaWx0ZXItY2xlYXInLFxuXG4gIC8vIGVhY2ggdmFsdWUgaW4gdGhlIGZpbHRlciwgYnV0IGluZGl2aWR1YWxseSBzZWxlY3RlZFxuICBFQUNIID0gJ2ZpbHRlci1lYWNoJ1xufVxuXG4vLyBhZGRpdGlvbmFsIGNvbnRleHQgbmVlZGVkIHRvIHBlcmZvcm0gYSBmaWx0ZXIgdXBkYXRlIGNvcnJlY3RseVxuZXhwb3J0IGVudW0gRmlsdGVyVXBkYXRlUXVhbGlmaWVyVHlwZSB7XG5cbiAgLy8gdGhlIGZpbHRlcidzIGRvbWFpbiBpcyBhIG1hbnVhbGx5IHR5cGVkIGluIG9yIHNlbGVjdGVkIHN1YnNldCBvZiB0aGUgZnVsbCBkb21haW5cbiAgQ1VTVE9NX0RPTUFJTiA9ICdmaWx0ZXItdXBkYXRlLWN1c3RvbS1kb21haW4nLFxuXG4gIC8vIG5vIHF1YWxpZmljYXRpb25zIHRvIHRoZSBmaWx0ZXItdXBkYXRlIGFyZSBzcGVjaWZpZWRcbiAgTk9fUVVBTElGSUNBVElPTlMgPSAnZmlsdGVyLXVwZGF0ZS1uby1xdWFsJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEZpbHRlcnNQcmVzZXRUeXBlIHtcblxuICAvLyBrZWVwIHRoZSBzZWxlY3Rpb24gY2hvc2VuIGJ5IHRoZSB1c2VyXG4gIE5vbmUgPSAnbm9uZScsXG5cbiAgLy8gdXBkYXRlIHRvIHRoZSBsYXRlc3QgdmFsdWVzIGluIHRoZSBkYXRhYmFzZVxuICBMYXN0VmFsdWVzID0gJ2xhc3QtdmFsdWVzJyxcblxuICAvLyBcbiAgQ3VycmVudFZhbHVlcyA9ICdjdXJyZW50LXZhbHVlcydcbn1cblxuLy8gTm90ZTogYW4gZW1wdHkgcmFuZ2UgKGJvdGggZW5kcG9pbnRzIE5VTEwpIGlzIGRlZmluZWQgdG8gbWVhbiAnYWxsIG5vbi1OVUxMIHZhbHVlcycsIGJ5IHN5bW1ldHJ5IHdpdGggd2hhdCBhIHNpbmdsZS1lbmRlZCByYW5nZSBtZWFucywgc28gYW4gZW1wdHkgcmFuZ2UgYW5kIEluUmFuZ2UgcmVhbGx5IG1lYW5zIE5vbk51bGwsIGFuZCBhbiBlbXB0eSByYW5nZSBhbmQgblJhbmdlT3JOdWxsIHJlYWxseSBtZWFucyBBbGxcbmV4cG9ydCBlbnVtIEZpbHRlcnNRdWFudGl0YXRpdmVJbmNsdWRlZFZhbHVlcyB7XG5cbiAgLy8gdGhlIGlkZW50aXR5IGZpbHRlciAoZXZlcnl0aGluZyBpcyBpbmNsdWRlZClcbiAgQWxsID0gJ2luY2x1ZGUtYWxsJyxcblxuICAvLyBhbGwgdmFsdWVzIHdoaWNoIGFyZSBub24tbnVsbHB0clxuICBOb25OdWxsID0gJ2luY2x1ZGUtbm9uLW51bGwnLFxuXG4gIC8vIGFsbCB2YWx1ZXMgd2hpY2ggYXJlIG51bGxwdHJcbiAgTnVsbCA9ICdpbmNsdWRlLW51bGwnLFxuXG4gIC8vIG9ubHkgdmFsdWVzIHdpdGhpbiB0aGUgcmFuZ2UgYW5kIHdoaWNoIGFyZSBub24gbnVsbFxuICBJblJhbmdlID0gJ2luY2x1ZGUtcmFuZ2UnLFxuXG4gIC8vIHZhbHVlcyB3aXRoaW4gdGhlIHJhbmdlIG9yIHdoaWNoIGFyZSBudWxscHRyXG4gIEluUmFuZ2VPck51bGwgPSAnaW5jbHVkZS1yYW5nZS1vci1udWxsJyxcblxuICAvLyBhbGwgdmFsdWVzIGFyZSBmaWx0ZXJlZCBvdXQuIFVzZXIgY2Fubm90IGNyZWF0ZSB0aGlzIHR5cGUgb2YgZmlsdGVyIGRpcmVjdGx5OyBpcyBvbmx5IGNyZWF0ZWQgd2hlbiB0d28gZmlsdGVycyBpbnRlcnNlY3QgYW5kIHRoZWlyIGluY2x1ZGVkVmFsdWVzIGNvbmZsaWN0IHNvIHRoZXkgd2lsbCBpbmNsdWRlIG5vdGhpbmcgKGUuZy4sIE5vbk51bGwgd2l0aCBOdWxsKVxuICBOb25lID0gJ2luY2x1ZGUtbm9uZSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBEYXRlUGVyaW9kVHlwZSB7XG5cbiAgLy8gXG4gIFBlcmlvZFllYXIgPSAneWVhcicsXG5cbiAgLy8gXG4gIFBlcmlvZFF1YXJ0ZXIgPSAncXVhcnRlcicsXG5cbiAgLy8gXG4gIFBlcmlvZE1vbnRoID0gJ21vbnRoJyxcblxuICAvLyBcbiAgUGVyaW9kV2VlayA9ICd3ZWVrJyxcblxuICAvLyBcbiAgUGVyaW9kRGF5ID0gJ2RheScsXG5cbiAgLy8gXG4gIFBlcmlvZEhvdXIgPSAnaG91cicsXG5cbiAgLy8gXG4gIFBlcmlvZE1pbnV0ZSA9ICdtaW51dGUnLFxuXG4gIC8vIFxuICBQZXJpb2RTZWNvbmQgPSAnc2Vjb25kJ1xufVxuXG4vLyBGaXNjYWwgWWVhciBTdGFydGluZyBNb250aFxuZXhwb3J0IGVudW0gRllTVmFsdWVzIHtcblxuICAvLyBcbiAgRllTVmFsdWVzX19GWVNfSkFOVUFSWSA9ICdmeXMtamFudWFyeScsXG5cbiAgLy8gXG4gIEZZU1ZhbHVlc19fRllTX0ZFQlJVQVJZID0gJ2Z5cy1mZWJydWFyeScsXG5cbiAgLy8gXG4gIEZZU1ZhbHVlc19fRllTX01BUkNIID0gJ2Z5cy1tYXJjaCcsXG5cbiAgLy8gXG4gIEZZU1ZhbHVlc19fRllTX0FQUklMID0gJ2Z5cy1hcHJpbCcsXG5cbiAgLy8gXG4gIEZZU1ZhbHVlc19fRllTX01BWSA9ICdmeXMtbWF5JyxcblxuICAvLyBcbiAgRllTVmFsdWVzX19GWVNfSlVORSA9ICdmeXMtanVuZScsXG5cbiAgLy8gXG4gIEZZU1ZhbHVlc19fRllTX0pVTFkgPSAnZnlzLWp1bHknLFxuXG4gIC8vIFxuICBGWVNWYWx1ZXNfX0ZZU19BVUdVU1QgPSAnZnlzLWF1Z3VzdCcsXG5cbiAgLy8gXG4gIEZZU1ZhbHVlc19fRllTX1NFUFRFTUJFUiA9ICdmeXMtc2VwdGVtYmVyJyxcblxuICAvLyBcbiAgRllTVmFsdWVzX19GWVNfT0NUT0JFUiA9ICdmeXMtb2N0b2JlcicsXG5cbiAgLy8gXG4gIEZZU1ZhbHVlc19fRllTX05PVkVNQkVSID0gJ2Z5cy1ub3ZlbWJlcicsXG5cbiAgLy8gXG4gIEZZU1ZhbHVlc19fRllTX0RFQ0VNQkVSID0gJ2Z5cy1kZWNlbWJlcidcbn1cblxuLy8gXG5leHBvcnQgZW51bSBQYWdlTmF2RmxhZ3NGbGFncyB7XG5cbiAgLy8gXG4gIE5vbmUgPSAnbm9uZScsXG5cbiAgLy8gXG4gIExvb3BlZFBsYXliYWNrID0gJ2xvb3BlZC1wbGF5YmFjaycsXG5cbiAgLy8gXG4gIFNob3dEcm9wZG93biA9ICdzaG93LWRyb3Bkb3duJyxcblxuICAvLyBcbiAgU2hvd1NsaWRlciA9ICdzaG93LXNsaWRlcicsXG5cbiAgLy8gXG4gIFNob3dQbGF5Q3RybHMgPSAnc2hvdy1wbGF5LWNvbnRyb2xzJyxcblxuICAvLyBcbiAgU2hvd1RyYWlsQ3RybHMgPSAnc2hvdy10cmFpbC1jb250cm9scycsXG5cbiAgLy8gXG4gIFN5bmNocm9uaXplZCA9ICdzeW5jaHJvbml6ZWQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gUGFnZVRyYWlsRW51bXNNYXJrc1RvVHJhaWwge1xuXG4gIC8vIFxuICBNYW51YWwgPSAnbWFudWFsJyxcblxuICAvLyBcbiAgQWxsID0gJ2FsbCcsXG5cbiAgLy8gXG4gIFNlbGVjdGVkID0gJ3NlbGVjdGVkJyxcblxuICAvLyBcbiAgSGlnaGxpZ2h0ZWQgPSAnaGlnaGxpZ2h0ZWQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gUGFnZVRyYWlsRW51bXNUcmFpbFR5cGUge1xuXG4gIC8vIFxuICBNYXJrcyA9ICdtYXJrcycsXG5cbiAgLy8gXG4gIFRyYWlscyA9ICd0cmFpbHMnLFxuXG4gIC8vIFxuICBCb3RoID0gJ2JvdGgnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gUGFnZVRyYWlsRW51bXNUcmFpbEVmZmVjdCB7XG5cbiAgLy8gXG4gIE5vbmUgPSAnbm9uZScsXG5cbiAgLy8gXG4gIFRyYW5zcGFyZW5jeSA9ICd0cmFuc3BhcmVuY3knXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gUGFnZVRyYWlsRW51bXNUcmFpbEZsYWdzIHtcblxuICAvLyBcbiAgTm9GbGFncyA9ICduby1mbGFncycsXG5cbiAgLy8gXG4gIERyYXdJZkhpZ2hsaWdodGVkID0gJ2RyYXctaWYtaGlnaGxpZ2h0ZWQnLFxuXG4gIC8vIFxuICBEcmF3SWZTZWxlY3RlZCA9ICdkcmF3LWlmLXNlbGVjdGVkJyxcblxuICAvLyBcbiAgRHJhd0Fsd2F5cyA9ICdkcmF3LWFsd2F5cycsXG5cbiAgLy8gXG4gIExpbmVzRW5hYmxlZCA9ICdsaW5lcy1lbmFibGVkJ1xufVxuXG4vLyBzaW1wbGUgcGFnZSBjaGFuZ2UgY29tbWFuZHNcbmV4cG9ydCBlbnVtIENoYW5nZVBhZ2VDaGFuZ2VUeXBlIHtcblxuICAvLyBcbiAgVG9GaXJzdCA9ICdmaXJzdCcsXG5cbiAgLy8gXG4gIFRvTmV4dCA9ICduZXh0JyxcblxuICAvLyBcbiAgVG9QcmV2ID0gJ3ByZXZpb3VzJyxcblxuICAvLyBcbiAgVG9MYXN0ID0gJ2xhc3QnXG59XG5cbi8vIFN0b3AsIHN0YXJ0IGluIGEgZGlyZWN0aW9uLCBvciBzZXQgc3BlZWQgb2YgcGFnZSBhbmltYXRpb25cbmV4cG9ydCBlbnVtIENoYW5nZVBhZ2VQYWdlQW5pbWF0aW9uQ29udHJvbCB7XG5cbiAgLy8gXG4gIFN0b3AgPSAnc3RvcCcsXG5cbiAgLy8gXG4gIEZvcndhcmQgPSAnZm9yd2FyZCcsXG5cbiAgLy8gXG4gIEJhY2t3YXJkID0gJ2JhY2t3YXJkJyxcblxuICAvLyBcbiAgU2xvd1NwZWVkID0gJ3Nsb3ctc3BlZWQnLFxuXG4gIC8vIFxuICBOb3JtYWxTcGVlZCA9ICdub3JtYWwtc3BlZWQnLFxuXG4gIC8vIFxuICBGYXN0U3BlZWQgPSAnZmFzdC1zcGVlZCcsXG5cbiAgLy8gXG4gIFRvZ2dsZUZvcndhcmQgPSAndG9nZ2xlLWZvcndhcmQnLFxuXG4gIC8vIFxuICBUb2dnbGVCYWNrd2FyZCA9ICd0b2dnbGUtYmFja3dhcmQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gTGVnZW5kSXRlbUxheW91dCB7XG5cbiAgLy8gXG4gIExlZ2VuZEl0ZW1MYXlvdXRWZXJ0ID0gJ3ZlcnRpY2FsJyxcblxuICAvLyBcbiAgTGVnZW5kSXRlbUxheW91dEhvcnogPSAnaG9yaXpvbnRhbCcsXG5cbiAgLy8gXG4gIExlZ2VuZEl0ZW1MYXlvdXRHcmlkID0gJ2dyaWQnLFxuXG4gIC8vIFxuICBMZWdlbmRJdGVtTGF5b3V0QXV0byA9ICdhdXRvJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIExlZ2VuZEl0ZW1PcmRlciB7XG5cbiAgLy8gXG4gIExlZ2VuZEl0ZW1PcmRlck5vcm1hbCA9ICdub3JtYWwnLFxuXG4gIC8vIFxuICBMZWdlbmRJdGVtT3JkZXJSZXZlcnNlZCA9ICdyZXZlcnNlZCcsXG5cbiAgLy8gXG4gIExlZ2VuZEl0ZW1PcmRlckF1dG8gPSAnYXV0bydcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTaXplTW9kZSB7XG5cbiAgLy8gXG4gIFNpemVNb2RlQXV0byA9ICdzaXplLW1vZGUtYXV0bycsXG5cbiAgLy8gXG4gIFNpemVNb2RlRml4ZWQgPSAnc2l6ZS1tb2RlLWZpeGVkJyxcblxuICAvLyBcbiAgU2l6ZU1vZGVNaW4gPSAnc2l6ZS1tb2RlLW1pbicsXG5cbiAgLy8gXG4gIFNpemVNb2RlTWF4ID0gJ3NpemUtbW9kZS1tYXgnLFxuXG4gIC8vIFxuICBTaXplTW9kZVJhbmdlID0gJ3NpemUtbW9kZS1yYW5nZScsXG5cbiAgLy8gXG4gIFNpemVNb2RlRml0V2lkdGggPSAnc2l6ZS1tb2RlLWZpdC13aWR0aCcsXG5cbiAgLy8gXG4gIFNpemVNb2RlRml0SGVpZ2h0ID0gJ3NpemUtbW9kZS1oZWlnaHQnLFxuXG4gIC8vIFxuICBTaXplTW9kZVNjcm9sbEhlaWdodCA9ICdzaXplLW1vZGUtc2Nyb2xsLWhlaWdodCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTaG93TWVDb21tYW5kVHlwZSB7XG5cbiAgLy8gXG4gIFNIT1dNRV9URVhUID0gJ3RleHQnLFxuXG4gIC8vIFxuICBTSE9XTUVfSEVBVCA9ICdoZWF0JyxcblxuICAvLyBcbiAgU0hPV01FX1NQT1RUQUJMRSA9ICdzcG90LXRhYmxlJyxcblxuICAvLyBcbiAgU0hPV01FX0JBUkhPUklaID0gJ2Jhci1ob3JpeicsXG5cbiAgLy8gXG4gIFNIT1dNRV9CQVJTVEFDSyA9ICdiYXItc3RhY2snLFxuXG4gIC8vIFxuICBTSE9XTUVfQkFSU0lERSA9ICdiYXItc2lkZScsXG5cbiAgLy8gXG4gIFNIT1dNRV9CQVJNRUFTVVJFID0gJ2Jhci1tZWFzdXJlJyxcblxuICAvLyBcbiAgU0hPV01FX09MSU5FID0gJ28tbGluZScsXG5cbiAgLy8gXG4gIFNIT1dNRV9RSUxJTkUgPSAncWktbGluZScsXG5cbiAgLy8gXG4gIFNIT1dNRV9PQVJFQSA9ICdvLWFyZWEnLFxuXG4gIC8vIFxuICBTSE9XTUVfUUlBUkVBID0gJ3FpLWFyZWEnLFxuXG4gIC8vIFxuICBTSE9XTUVfQ0lSQ0xFID0gJ2NpcmNsZScsXG5cbiAgLy8gXG4gIFNIT1dNRV9DSVJDTEVTSURFID0gJ2NpcmNsZS1zaWRlJyxcblxuICAvLyBcbiAgU0hPV01FX0dBTlRUID0gJ2dhbnR0JyxcblxuICAvLyBcbiAgU0hPV01FX1NDQVRURVIgPSAnc2NhdHRlcicsXG5cbiAgLy8gXG4gIFNIT1dNRV9TQ0FUVEVSTUFUUklYID0gJ3NjYXR0ZXItbWF0cml4JyxcblxuICAvLyBcbiAgU0hPV01FX0hJU1RPR1JBTSA9ICdoaXN0b2dyYW0nLFxuXG4gIC8vIFxuICBTSE9XTUVfTUFQUyA9ICdtYXBzJyxcblxuICAvLyBcbiAgU0hPV01FX0ZJTExFRE1BUFMgPSAnZmlsbGVkLW1hcHMnLFxuXG4gIC8vIFxuICBTSE9XTUVfUElFUyA9ICdwaWVzJyxcblxuICAvLyBcbiAgU0hPV01FX0RVQUxCQVJMSU5FID0gJ2R1YWwtYmFyLWxpbmUnLFxuXG4gIC8vIFxuICBTSE9XTUVfRFVBTExJTkUgPSAnZHVhbC1saW5lJyxcblxuICAvLyBcbiAgU0hPV01FX0JVTExFVCA9ICdidWxsZXQnLFxuXG4gIC8vIFxuICBTSE9XTUVfVFJFRU1BUCA9ICd0cmVlbWFwJyxcblxuICAvLyBcbiAgU0hPV01FX0JVQkJMRSA9ICdidWJibGUnLFxuXG4gIC8vIFxuICBTSE9XTUVfQk9YUExPVCA9ICdib3gtcGxvdCcsXG59XG5cbi8vIGljb24gdG8gZGlzcGxheSBmb3IgYW4gaXRlbSBvbiBhIHNoZWxmXG5leHBvcnQgZW51bSBTaGVsZkljb25UeXBlIHtcblxuICAvLyBub3Qgc2V0XG4gIFNJVF9Ob25lID0gJ25vbmUnLFxuXG4gIC8vIGluY29tcGF0aWJsZSBmaWVsZFxuICBTSVRfSW5jb21wYXRpYmxlRmllbGQgPSAnaW5jb21wYXRpYmxlLWZpZWxkJyxcblxuICAvLyByZW1vdGVcbiAgU0lUX1JlbW90ZSA9ICdyZW1vdGUnLFxuXG4gIC8vIGdyb3VwXG4gIFNJVF9Hcm91cCA9ICdncm91cCcsXG5cbiAgLy8gdGFibGUgY2FsY1xuICBTSVRfVGFibGVDYWxjID0gJ3RhYmxlLWNhbGMnLFxuXG4gIC8vIGl0ZW0gY29tZXMgZnJvbSBhIHNlY29uZGFyeSBkYXRhc291cmNlXG4gIFNJVF9TZWNvbmRhcnlEYXRhc291cmNlID0gJ3NlY29uZGFyeS1kYXRhc291cmNlJyxcblxuICAvLyB0YWJsZSBjYWxjIGZyb20gYSBzZWNvbmRhcnkgZGF0YXNvdXJjZVxuICBTSVRfVGFibGVDYWxjU2Vjb25kYXJ5ID0gJ3RhYmxlLWNhbGMtc2Vjb25kYXJ5JyxcblxuICAvLyBmb3JlY2FzdFxuICBTSVRfRm9yZWNhc3QgPSAnZm9yZWNhc3QnLFxuXG4gIC8vIGFzY2VuZGluZyBzb3J0XG4gIFNJVF9Tb3J0QXNjID0gJ3NvcnQtYXNjJyxcblxuICAvLyBkZXNjZW5kaW5nIHNvcnRcbiAgU0lUX1NvcnREZXNjID0gJ3NvcnQtZGVzYycsXG5cbiAgLy8gYWxwaGFiZXRpYyBhc2NlbmRpbmcgc29ydFxuICBTSVRfU29ydEFscGhhYmV0aWNBc2MgPSAnc29ydC1hbHBoYWJldGljLWFzYycsXG5cbiAgLy8gYWxwaGFiZXRpYyBkZXNjZW5kaW5nIHNvcnRcbiAgU0lUX1NvcnRBbHBoYWJldGljRGVzYyA9ICdzb3J0LWFscGhhYmV0aWMtZGVzYydcbn1cblxuLy8gaWNvbiB0byBkaXNwbGF5IGZvciBhbiBpdGVtIG9uIHRoZSBmaWx0ZXJzIHNoZWxmXG5leHBvcnQgZW51bSBGaWx0ZXJJY29uVHlwZSB7XG5cbiAgLy8gYSBnbG9iYWwgZmlsdGVyIGljb25cbiAgRklUX0dsb2JhbCA9ICdnbG9iYWwtZmlsdGVyJyxcblxuICAvLyBhIHNoYXJlZCBmaWx0ZXIgaWNvblxuICBGSVRfU2hhcmVkID0gJ3NoYXJlZC1maWx0ZXInLFxuXG4gIC8vIGEgbWFwcGVkIHNoYXJlZCBzb3VyY2UgZmlsdGVyIGljb25cbiAgRklUX01hcHBlZFNoYXJlZFNvdXJjZSA9ICdtYXBwZWQtc2hhcmVkLXNvdXJjZS1maWx0ZXInLFxuXG4gIC8vIGEgbWFwcGVkIHNoYXJlZCB0YXJnZXQgZmlsdGVyIGljb25cbiAgRklUX01hcHBlZFNoYXJlZFRhcmdldCA9ICdtYXBwZWQtc2hhcmVkLXRhcmdldC1maWx0ZXInLFxuXG4gIC8vIGEgc2xpY2luZyBmaWx0ZXIgaWNvblxuICBGSVRfU2xpY2UgPSAnc2xpY2UtZmlsdGVyJyxcblxuICAvLyBhIGxvY2FsIGZpbHRlciBpY29uXG4gIEZJVF9Mb2NhbCA9ICdsb2NhbC1maWx0ZXInLFxuXG4gIC8vIGEgbWFwcGVkIGdsb2JhbCBzb3VyY2UgZmlsdGVyIGljb25cbiAgRklUX01hcHBlZEdsb2JhbFNvdXJjZSA9ICdtYXBwZWQtZ2xvYmFsLXNvdXJjZS1maWx0ZXInLFxuXG4gIC8vIGEgbWFwcGVkIGdsb2JhbCB0YXJnZXQgZmlsdGVyIGljb25cbiAgRklUX01hcHBlZEdsb2JhbFRhcmdldCA9ICdtYXBwZWQtZ2xvYmFsLXRhcmdldC1maWx0ZXInLFxuXG4gIC8vIG5vdCBhIGZpbHRlclxuICBGSVRfTm9uZSA9ICduby1maWx0ZXInXG59XG5cbi8vIHVzZWQgdG8gaW5kaWNhdGUgaWYgYSBmaWVsZCBpcyBwYXJ0IG9mIGEgZHVhbCBheGlzXG5leHBvcnQgZW51bSBJdGVtRHJhd1N0eWxlIHtcblxuICAvLyBub3QgcGFydCBvZiBhIGR1YWwgYXhpc1xuICBJVEVNX0RSQVdTVFlMRV9OT1JNQUwgPSAnbm9ybWFsJyxcblxuICAvLyBmaXJzdCBpdGVtIG9uIGR1YWwgYXhpc1xuICBJVEVNX0RSQVdTVFlMRV9PUEVORUQgPSAnb3BlbmVkJyxcblxuICAvLyBzZWNvbmQgaXRlbSBvbiBkdWFsIGF4aXNcbiAgSVRFTV9EUkFXU1RZTEVfQ0xPU0VEID0gJ2Nsb3NlZCcsXG5cbiAgLy8gbWlkZGxlIGl0ZW0gaW4gYSBzZXQgb2YgbGF5ZXJzXG4gIElURU1fRFJBV1NUWUxFX01JRERMRSA9ICdtaWRkbGUnXG59XG5cbi8vIGluZGljYXRlcyB0aGUgc2l6ZSBvZiBwYWdlIGZvciBhIHNoZWV0XG5leHBvcnQgZW51bSBQYWdlU2l6ZU9wdGlvbiB7XG5cbiAgLy8gXG4gIFBBR0VTSVpFX0xFVFRFUiA9ICdsZXR0ZXInLFxuXG4gIC8vIFxuICBQQUdFU0laRV9MRUdBTCA9ICdsZWdhbCcsXG5cbiAgLy8gXG4gIFBBR0VTSVpFX05PVEUgPSAnbm90ZScsXG5cbiAgLy8gXG4gIFBBR0VTSVpFX0ZPTElPID0gJ2ZvbGlvJyxcblxuICAvLyBcbiAgUEFHRVNJWkVfVEFCTE9JRCA9ICd0YWJsb2lkJyxcblxuICAvLyBcbiAgUEFHRVNJWkVfTEVER0VSID0gJ2xlZGdlcicsXG5cbiAgLy8gXG4gIFBBR0VTSVpFX1NUQVRFTUVOVCA9ICdzdGF0ZW1lbnQnLFxuXG4gIC8vIFxuICBQQUdFU0laRV9FWEVDVVRJVkUgPSAnZXhlY3V0aXZlJyxcblxuICAvLyBcbiAgUEFHRVNJWkVfQTMgPSAnYTMnLFxuXG4gIC8vIFxuICBQQUdFU0laRV9BNCA9ICdhNCcsXG5cbiAgLy8gXG4gIFBBR0VTSVpFX0E1ID0gJ2E1JyxcblxuICAvLyBcbiAgUEFHRVNJWkVfQjQgPSAnYjQnLFxuXG4gIC8vIFxuICBQQUdFU0laRV9CNSA9ICdiNScsXG5cbiAgLy8gXG4gIFBBR0VTSVpFX1FVQVJUTyA9ICdxdWFydG8nLFxuXG4gIC8vIFxuICBQQUdFU0laRV9VTlNQRUNJRklFRCA9ICd1bnNwZWNpZmllZCcsXG59XG5cbi8vIEluZGljYXRlcyB0aGUgbGF5b3V0IG9mIHBhZ2UgZm9yIGEgc2hlZXRcbmV4cG9ydCBlbnVtIFBhZ2VPcmllbnRhdGlvbiB7XG5cbiAgLy8gXG4gIE9yaWVudGF0aW9uUHJpbnRlciA9ICdwcmludGVyJyxcblxuICAvLyBcbiAgT3JpZW50YXRpb25Qb3J0cmFpdCA9ICdwb3J0cmFpdCcsXG5cbiAgLy8gXG4gIE9yaWVudGF0aW9uTGFuZHNjYXBlID0gJ2xhbmRzY2FwZSdcbn1cblxuLy8gSW5kaWNhdGVzIHRoZSBtYW5uZXIgb2Ygc2NhbGluZyBvZiBwYWdlIGZvciBhIHNoZWV0XG5leHBvcnQgZW51bSBTY2FsZU1vZGUge1xuXG4gIC8vIFxuICBTY2FsZUF1dG8gPSAnYXV0bycsXG5cbiAgLy8gXG4gIFNjYWxlUGVyY2VudGFnZSA9ICdwZXJjZW50JyxcblxuICAvLyBcbiAgU2NhbGVGaXRQYWdlcyA9ICdmaXQtcGFnZXMnXG59XG5cbi8vIEluZGljYXRlcyB0aGUgZGVmYXVsdC9zZWxlY3RhYmxlIHNjYWxpbmcgb2YgcGFnZSBmb3IgYSBzaGVldFxuZXhwb3J0IGVudW0gUGFnZVNjYWxpbmdPcHRpb24ge1xuXG4gIC8vIFxuICBTY2FsZVBjdEF1dG8gPSAnYXV0bycsXG5cbiAgLy8gXG4gIFNjYWxlUGN0NDAwID0gJ3BjdDQwMCcsXG5cbiAgLy8gXG4gIFNjYWxlUGN0MjAwID0gJ3BjdDIwMCcsXG5cbiAgLy8gXG4gIFNjYWxlUGN0MTAwID0gJ3BjdDEwMCcsXG5cbiAgLy8gXG4gIFNjYWxlUGN0OTAgPSAncGN0OTAnLFxuXG4gIC8vIFxuICBTY2FsZVBjdDgwID0gJ3BjdDgwJyxcblxuICAvLyBcbiAgU2NhbGVQY3Q3NSA9ICdwY3Q3NScsXG5cbiAgLy8gXG4gIFNjYWxlUGN0NjAgPSAncGN0NjAnLFxuXG4gIC8vIFxuICBTY2FsZVBjdDUwID0gJ3BjdDUwJyxcblxuICAvLyBcbiAgU2NhbGVQY3QyNSA9ICdwY3QyNSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTaGVldFJhbmdlIHtcblxuICAvLyBcbiAgU2hlZXRSYW5nZUFsbCA9ICdhbGwnLFxuXG4gIC8vIFxuICBTaGVldFJhbmdlQWN0aXZlID0gJ2FjdGl2ZScsXG5cbiAgLy8gXG4gIFNoZWV0UmFuZ2VTZWxlY3RlZCA9ICdzZWxlY3RlZCdcbn1cblxuLy8gc2hlZXQgdHlwZVxuZXhwb3J0IGVudW0gU2hlZXRUeXBlIHtcblxuICAvLyBcbiAgVFlQRV9XT1JLU0hFRVQgPSAnd29ya3NoZWV0JyxcblxuICAvLyBcbiAgVFlQRV9EQVNIQk9BUkQgPSAnZGFzaGJvYXJkJyxcblxuICAvLyBcbiAgVFlQRV9TVE9SWSA9ICdzdG9yeSdcbn1cblxuLy8gYSBkYXNoYm9hcmQgaW1hZ2UgbWV0cmljJ3MgdHlwZVxuZXhwb3J0IGVudW0gQ2xpZW50VUlNZXRyaWNUeXBlIHtcblxuICAvLyBcbiAgVUlNVF9TY3JvbGxiYXJNZXRyaWMgPSAnc2Nyb2xsYmFyLW1ldHJpYycsXG5cbiAgLy8gXG4gIFVJTVRfUUZpbHRlckZpeGVkTWV0cmljID0gJ3EtZmlsdGVyLWZpeGVkLW1ldHJpYycsXG5cbiAgLy8gXG4gIFVJTVRfUUZpbHRlclNsaWRlck1ldHJpYyA9ICdxLWZpbHRlci1zbGlkZXItbWV0cmljJyxcblxuICAvLyBcbiAgVUlNVF9RRmlsdGVyUmVhZG91dE1ldHJpYyA9ICdxLWZpbHRlci1yZWFkb3V0LW1ldHJpYycsXG5cbiAgLy8gXG4gIFVJTVRfQ0ZpbHRlckZpeGVkTWV0cmljID0gJ2MtZmlsdGVyLWZpeGVkLW1ldHJpYycsXG5cbiAgLy8gbWluaW11bSBjaGVjay9yYWRpb2xpc3QgaXRlbSBzaXplXG4gIFVJTVRfQ0ZpbHRlckl0ZW1NZXRyaWMgPSAnYy1maWx0ZXItaXRlbS1tZXRyaWMnLFxuXG4gIC8vIFxuICBVSU1UX0hGaWx0ZXJGaXhlZE1ldHJpYyA9ICdoLWZpbHRlci1maXhlZC1tZXRyaWMnLFxuXG4gIC8vIG1pbmltdW0gaGllcmFyY2hpY2FsIGl0ZW0gc2l6ZVxuICBVSU1UX0hGaWx0ZXJJdGVtTWV0cmljID0gJ2gtZmlsdGVyLWl0ZW0tbWV0cmljJyxcblxuICAvLyBcbiAgVUlNVF9DbVNsaWRlckZpbHRlck1ldHJpYyA9ICdjbS1zbGlkZXItZmlsdGVyLW1ldHJpYycsXG5cbiAgLy8gXG4gIFVJTVRfQ21Ecm9wZG93bkZpbHRlck1ldHJpYyA9ICdjbS1kcm9wZG93bi1maWx0ZXItbWV0cmljJyxcblxuICAvLyBcbiAgVUlNVF9DbVBhdHRlcm5GaWx0ZXJNZXRyaWMgPSAnY20tcGF0dGVybi1maWx0ZXItbWV0cmljJyxcblxuICAvLyBcbiAgVUlNVF9SRGF0ZUZpbHRlck1ldHJpYyA9ICdyLWRhdGUtZmlsdGVyLW1ldHJpYycsXG5cbiAgLy8gXG4gIFVJTVRfUkRhdGVQRmlsdGVyTWV0cmljID0gJ3ItZGF0ZS1wLWZpbHRlci1tZXRyaWMnLFxuXG4gIC8vIFxuICBVSU1UX1BhcmFtVHlwZUluTWV0cmljID0gJ3BhcmFtLXR5cGUtaW4tbWV0cmljJyxcblxuICAvLyBcbiAgVUlNVF9QYXJhbUNvbXBhY3RMaXN0TWV0cmljID0gJ3BhcmFtLWNvbXBhY3QtbGlzdC1tZXRyaWMnLFxuXG4gIC8vIFxuICBVSU1UX1BhcmFtTGlzdE1ldHJpYyA9ICdwYXJhbS1saXN0LW1ldHJpYycsXG5cbiAgLy8gXG4gIFVJTVRfUGFyYW1TbGlkZXJNZXRyaWMgPSAncGFyYW0tc2xpZGVyLW1ldHJpYycsXG5cbiAgLy8gXG4gIFVJTVRfUGFyYW1EYXRlVGltZU1ldHJpYyA9ICdwYXJhbS1kYXRlLXRpbWUtbWV0cmljJyxcblxuICAvLyBcbiAgVUlNVF9DRmlsdGVyQXBwbHlNZXRyaWMgPSAnYy1maWx0ZXItYXBwbHktbWV0cmljJyxcblxuICAvLyBcbiAgVUlNVF9DbVR5cGVJblNlYXJjaE1ldHJpYyA9ICdjbS10eXBlLWluLXNlYXJjaC1tZXRyaWMnLFxuXG4gIC8vIG1pbmltdW0gY3VzdG9tIGxpc3QgaXRlbSBzaXplXG4gIFVJTVRfQ0ZpbHRlckN1c3RvbUl0ZW1NZXRyaWMgPSAnYy1maWx0ZXItY3VzdG9tLWl0ZW0tbWV0cmljJ1xufVxuXG4vLyBhIHJlZ2lvbiBvZiBhIHZpeiB3aGVyZSBzb3J0IGluZGljYXRvcnMgbWF5IGFwcGVhclxuZXhwb3J0IGVudW0gU29ydFJlZ2lvblR5cGUge1xuXG4gIC8vIFxuICBTUlRfTEFCRUxTX1ggPSAneGhlYWRlcicsXG5cbiAgLy8gXG4gIFNSVF9MQUJFTFNfWSA9ICd5aGVhZGVyJyxcblxuICAvLyBcbiAgU1JUX0xBQkVMU19GSUVMRCA9ICd1bGVmdCcsXG5cbiAgLy8gXG4gIFNSVF9BWElTX0xFRlQgPSAnbGVmdGF4aXMnLFxuXG4gIC8vIFxuICBTUlRfQVhJU19CT1RUT00gPSAnYm90dG9tYXhpcycsXG5cbiAgLy8gXG4gIFNSVF9BWElTX1JJR0hUID0gJ3JpZ2h0YXhpcycsXG5cbiAgLy8gXG4gIFNSVF9BWElTX1RPUCA9ICd0b3BheGlzJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFF0Q3Vyc29yU2hhcGUge1xuXG4gIC8vIFxuICBBcnJvd0N1cnNvciA9ICdhcnJvdycsXG5cbiAgLy8gXG4gIFVwQXJyb3dDdXJzb3IgPSAndXAtYXJyb3cnLFxuXG4gIC8vIFxuICBDcm9zc0N1cnNvciA9ICdjcm9zcycsXG5cbiAgLy8gXG4gIFdhaXRDdXJzb3IgPSAnd2FpdCcsXG5cbiAgLy8gXG4gIElCZWFtQ3Vyc29yID0gJ2liZWFtJyxcblxuICAvLyBcbiAgU2l6ZVZlckN1cnNvciA9ICdzaXplLXZlcicsXG5cbiAgLy8gXG4gIFNpemVIb3JDdXJzb3IgPSAnc2l6ZS1ob3InLFxuXG4gIC8vIFxuICBTaXplQkRpYWdDdXJzb3IgPSAnc2l6ZS1iZGlhZycsXG5cbiAgLy8gXG4gIFNpemVGRGlhZ0N1cnNvciA9ICdzaXplLWZkaWFnJyxcblxuICAvLyBcbiAgU2l6ZUFsbEN1cnNvciA9ICdzaXplLWFsbCcsXG5cbiAgLy8gXG4gIEJsYW5rQ3Vyc29yID0gJ2JsYW5rJyxcblxuICAvLyBcbiAgU3BsaXRWQ3Vyc29yID0gJ3NwbGl0LXYnLFxuXG4gIC8vIFxuICBTcGxpdEhDdXJzb3IgPSAnc3BsaXQtaCcsXG5cbiAgLy8gXG4gIFBvaW50aW5nSGFuZEN1cnNvciA9ICdwb2ludGluZy1oYW5kJyxcblxuICAvLyBcbiAgRm9yYmlkZGVuQ3Vyc29yID0gJ2ZvcmJpZGRlbicsXG5cbiAgLy8gXG4gIFdoYXRzVGhpc0N1cnNvciA9ICd3aGF0cy10aGlzJyxcblxuICAvLyBcbiAgQnVzeUN1cnNvciA9ICdidXN5JyxcblxuICAvLyBcbiAgT3BlbkhhbmRDdXJzb3IgPSAnb3Blbi1oYW5kJyxcblxuICAvLyBcbiAgQ2xvc2VkSGFuZEN1cnNvciA9ICdjbG9zZWQtaGFuZCcsXG5cbiAgLy8gXG4gIERyYWdDb3B5Q3Vyc29yID0gJ2RyYWctY29weScsXG5cbiAgLy8gXG4gIERyYWdNb3ZlQ3Vyc29yID0gJ2RyYWctbW92ZScsXG5cbiAgLy8gXG4gIERyYWdMaW5rQ3Vyc29yID0gJ2RyYWctbGluaydcbn1cblxuLy8gc3BlY2lmaWVzIHZhcmlvdXMgY29tcG9uZW50cyBvZiBhIHZpeiB0aGF0IGFyZSByZW5kZXJlZCBhcyBpbWFnZXNcbmV4cG9ydCBlbnVtIFZpekltYWdlUmVnaW9uIHtcblxuICAvLyB0aGUgbWFpbiB2aXogYXJlYVxuICBWSVpfUkVHSU9OX1RBQkxFID0gJ3ZpeicsXG5cbiAgLy8geSBheGlzIGl0ZW1zXG4gIFZJWl9SRUdJT05fUk9XSEVBREVSUyA9ICd5aGVhZGVyJyxcblxuICAvLyBcbiAgVklaX1JFR0lPTl9MRUZUQVhJUyA9ICdsZWZ0YXhpcycsXG5cbiAgLy8gXG4gIFZJWl9SRUdJT05fUklHSFRBWElTID0gJ3JpZ2h0YXhpcycsXG5cbiAgLy8geCBheGlzIGl0ZW1zXG4gIFZJWl9SRUdJT05fQ09MVU1OSEVBREVSUyA9ICd4aGVhZGVyJyxcblxuICAvLyBcbiAgVklaX1JFR0lPTl9CT1RUT01BWElTID0gJ2JvdHRvbWF4aXMnLFxuXG4gIC8vIFxuICBWSVpfUkVHSU9OX1RPUEFYSVMgPSAndG9wYXhpcycsXG5cbiAgLy8gc3BhY2luZyBhcmVhc1xuICBWSVpfUkVHSU9OX1VQUEVSTEVGVCA9ICd1bGVmdCcsXG5cbiAgLy8gXG4gIFZJWl9SRUdJT05fVVBQRVJSSUdIVCA9ICd1cmlnaHQnLFxuXG4gIC8vIFxuICBWSVpfUkVHSU9OX0xPV0VSTEVGVCA9ICdsbGVmdCcsXG5cbiAgLy8gXG4gIFZJWl9SRUdJT05fTE9XRVJSSUdIVCA9ICdscmlnaHQnLFxuXG4gIC8vIGxhYmVsbGluZyBhcmVhc1xuICBWSVpfUkVHSU9OX1RJVExFID0gJ3RpdGxlJyxcblxuICAvLyBcbiAgVklaX1JFR0lPTl9DQVBUSU9OID0gJ2NhcHRpb24nLFxuXG4gIC8vIGxlZ2VuZCBhcmVhc1xuICBWSVpfUkVHSU9OX0NPTE9STEVHRU5EID0gJ2NvbG9yJyxcblxuICAvLyBcbiAgVklaX1JFR0lPTl9TSEFQRUxFR0VORCA9ICdzaGFwZScsXG5cbiAgLy8gXG4gIFZJWl9SRUdJT05fU0laRUxFR0VORCA9ICdzaXplJyxcblxuICAvLyBcbiAgVklaX1JFR0lPTl9ISUdITElHSFRMRUdFTkQgPSAnaGlnaGxpZ2h0LWxlZ2VuZCcsXG5cbiAgLy8gXG4gIFZJWl9SRUdJT05fTUFQTEVHRU5EID0gJ21hcCcsXG5cbiAgLy8gbGVnZW5kIHRpdGxlc1xuICBWSVpfUkVHSU9OX0NPTE9STEVHRU5EVElUTEUgPSAnY29sb3ItdGl0bGUnLFxuXG4gIC8vIFxuICBWSVpfUkVHSU9OX1NIQVBFTEVHRU5EVElUTEUgPSAnc2hhcGUtdGl0bGUnLFxuXG4gIC8vIFxuICBWSVpfUkVHSU9OX1NJWkVMRUdFTkRUSVRMRSA9ICdzaXplLXRpdGxlJyxcblxuICAvLyBcbiAgVklaX1JFR0lPTl9ISUdITElHSFRMRUdFTkRUSVRMRSA9ICdoaWdobGlnaHQtbGVnZW5kLXRpdGxlJyxcblxuICAvLyBcbiAgVklaX1JFR0lPTl9NQVBMRUdFTkRUSVRMRSA9ICdtYXAtdGl0bGUnLFxuXG4gIC8vIGxlZ2VuZCBib2RpZXNcbiAgVklaX1JFR0lPTl9DT0xPUkxFR0VOREJPRFkgPSAnY29sb3ItYm9keScsXG5cbiAgLy8gXG4gIFZJWl9SRUdJT05fU0hBUEVMRUdFTkRCT0RZID0gJ3NoYXBlLWJvZHknLFxuXG4gIC8vIFxuICBWSVpfUkVHSU9OX1NJWkVMRUdFTkRCT0RZID0gJ3NpemUtYm9keScsXG5cbiAgLy8gXG4gIFZJWl9SRUdJT05fSElHSExJR0hUTEVHRU5EQk9EWSA9ICdoaWdobGlnaHQtbGVnZW5kLWJvZHknLFxuXG4gIC8vIFxuICBWSVpfUkVHSU9OX01BUExFR0VOREJPRFkgPSAnbWFwLWJvZHknLFxuXG4gIC8vIFRoZXNlIGFyZSByZWdpb24gbmFtZXMgKHJhbmdlcyBvZiBvdGhlciBlbnVtcylcbiAgVklaX1JFR0lPTl9FTkQgPSAnZW5kJyxcbn1cblxuLy8gbmFtZXMgb2YgbGVnYWN5IG1lbnUgaXRlbXNcbmV4cG9ydCBlbnVtIExlZ2FjeU1lbnVOYW1lIHtcblxuICAvLyB2aWV3IHVuZGVybHlpbmcgZGF0YVxuICBMTV9OQU1FX1ZJRVdEQVRBID0gJ3ZpZXdkYXRhJyxcblxuICAvLyBleHBvcnQgaW1hZ2VcbiAgTE1fTkFNRV9FWFBPUlRJTUFHRSA9ICdleHBvcnRpbWFnZScsXG5cbiAgLy8gZXhwb3J0IGRhdGFcbiAgTE1fTkFNRV9FWFBPUlREQVRBID0gJ2V4cG9ydGRhdGEnLFxuXG4gIC8vIGV4cG9ydCBhcyBjcm9zc3RhYlxuICBMTV9OQU1FX0VYUE9SVENST1NTVEFCID0gJ2V4cG9ydGNyb3NzdGFiJyxcblxuICAvLyBwcmludCB0byBwZGZcbiAgTE1fTkFNRV9QUklOVCA9ICdwcmludCdcbn1cblxuLy8gc3RhdGVzIG9mIGxlZ2FjeSBtZW51IGl0ZW1zXG5leHBvcnQgZW51bSBMZWdhY3lNZW51U3RhdGUge1xuXG4gIC8vIHZpc2libGUgc3RhdGVcbiAgTE1fU1RBVEVfVklTSUJMRSA9ICd2aXNpYmxlJyxcblxuICAvLyBjaGVja2VkIHN0YXRlXG4gIExNX1NUQVRFX0NIRUNLRUQgPSAnY2hlY2tlZCcsXG5cbiAgLy8gZ3JheWVkIHN0YXRlXG4gIExNX1NUQVRFX0dSQVlFRCA9ICdncmF5ZWQnLFxuXG4gIC8vIHJhZGlvIHN0YXRlXG4gIExNX1NUQVRFX1JBRElPID0gJ3JhZGlvJyxcbn1cblxuLy8gXG5leHBvcnQgZW51bSBNZW1iZXJVbmlxdWVuZXNzVHlwZSB7XG5cbiAgLy8gXG4gIFVuaXF1ZVdpdGhpbkN1YmUgPSAnY3ViZS11bmlxdWUnLFxuXG4gIC8vIFxuICBVbmlxdWVXaXRoaW5IaWVyYXJjaHkgPSAnaGllcmFyY2h5LXVuaXF1ZScsXG5cbiAgLy8gXG4gIFVuaXF1ZVdpdGhpbkxldmVsID0gJ2xldmVsLXVuaXF1ZScsXG5cbiAgLy8gXG4gIFVuaXF1ZVdpdGhpblBhcmVudCA9ICdwYXJlbnQtdW5pcXVlJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIERpbWVuc2lvblR5cGUge1xuXG4gIC8vIGp1c3QgYSByZWd1bGFyIGRpbWVuc2lvbiwgbm8gc3BlY2lhbCBzZW1hbnRpY3NcbiAgUmVndWxhckRpbWVuc2lvbiA9ICdyZWd1bGFyLWRpbWVuc2lvbicsXG5cbiAgLy8gdGhlIG1lYXN1cmVzIGRpbWVuc2lvbiwgd2hpY2ggd2UgZG9uJ3QgbW9kZWwgYXMgc3VjaFxuICBNZWFzdXJlRGltZW5zaW9uID0gJ21lYXN1cmUtZGltZW5zaW9uJyxcblxuICAvLyBhIHRpbWUgZGltZW5zaW9uXG4gIFRpbWVEaW1lbnNpb24gPSAndGltZS1kaW1lbnNpb24nXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU2NoZW1hVmlld2VyRGF0YVNvdXJjZVR5cGUge1xuXG4gIC8vIFxuICBTVlRfRFNfTk9STUFMID0gJ2RhdGFzb3VyY2UnLFxuXG4gIC8vIFxuICBTVlRfRFNfTk9STUFMX1BSSU1BUlkgPSAnZGF0YXNvdXJjZS1wcmltYXJ5JyxcblxuICAvLyBcbiAgU1ZUX0RTX05PUk1BTF9TRUNPTkRBUlkgPSAnZGF0YXNvdXJjZS1zZWNvbmRhcnknLFxuXG4gIC8vIFxuICBTVlRfRFNfRVhUUkFDVCA9ICdleHRyYWN0JyxcblxuICAvLyBcbiAgU1ZUX0RTX0VYVFJBQ1RfUFJJTUFSWSA9ICdleHRyYWN0LXByaW1hcnknLFxuXG4gIC8vIFxuICBTVlRfRFNfRVhUUkFDVF9TRUNPTkRBUlkgPSAnZXh0cmFjdC1zZWNvbmRhcnknLFxuXG4gIC8vIFxuICBTVlRfRFNfQ1VCRSA9ICdjdWJlJyxcblxuICAvLyBcbiAgU1ZUX0RTX0NVQkVfUFJJTUFSWSA9ICdjdWJlLXByaW1hcnknLFxuXG4gIC8vIFxuICBTVlRfRFNfQ1VCRV9TRUNPTkRBUlkgPSAnY3ViZS1zZWNvbmRhcnknLFxuXG4gIC8vIFxuICBTVlRfRFNfU0VSVkVSID0gJ3NlcnZlcicsXG5cbiAgLy8gXG4gIFNWVF9EU19TRVJWRVJfUFJJTUFSWSA9ICdzZXJ2ZXItcHJpbWFyeScsXG5cbiAgLy8gXG4gIFNWVF9EU19TRVJWRVJfU0VDT05EQVJZID0gJ3NlcnZlci1zZWNvbmRhcnknXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU2NoZW1hSXRlbVR5cGUge1xuXG4gIC8vIFxuICBJVF9ESU1FTlNJT04gPSAnZGltZW5zaW9uJyxcblxuICAvLyBcbiAgSVRfSElFUkFSQ0hZID0gJ2hpZXJhcmNoeScsXG5cbiAgLy8gXG4gIElUX0xFVkVMID0gJ2xldmVsJyxcblxuICAvLyBcbiAgSVRfQ0FURUdPUklDQUwgPSAnY2F0ZWdvcmljYWwnLFxuXG4gIC8vIFxuICBJVF9NRUFTVVJFID0gJ21lYXN1cmUnLFxuXG4gIC8vIFxuICBJVF9WQUxVRSA9ICd2YWx1ZScsXG5cbiAgLy8gXG4gIElUX0dST1VQID0gJ2dyb3VwJyxcblxuICAvLyBcbiAgSVRfRk9MREVSID0gJ2ZvbGRlcicsXG5cbiAgLy8gXG4gIElUX1RBQkxFID0gJ3RhYmxlJyxcblxuICAvLyBcbiAgSVRfRFJJTExQQVRIID0gJ2RyaWxscGF0aCcsXG5cbiAgLy8gXG4gIElUX1BBUkFNRVRFUiA9ICdwYXJhbWV0ZXInLFxuXG4gIC8vIFxuICBJVF9IRUFERVIgPSAnaGVhZGVyJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZSB7XG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9CTEFOSyA9ICdibGFuaycsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9SRUxBVElPTkFMID0gJ3JlbGF0aW9uYWwnLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfQ1VCRSA9ICdjdWJlJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX0RBVEVUSU1FID0gJ2RhdGV0aW1lJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX0RBVEUgPSAnZGF0ZScsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9USU1FID0gJ3RpbWUnLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfVEVYVCA9ICd0ZXh0JyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX05VTUJFUiA9ICdudW1iZXInLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfQ1VSUkVOQ1kgPSAnY3VycmVuY3knLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfQk9PTCA9ICdib29sJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX0hJRVJBUkNIWSA9ICdoaWVyYXJjaHknLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfTEVWRUwgPSAnbGV2ZWwnLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfQVRUUklCVVRFID0gJ2F0dHJpYnV0ZScsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9GT0xERVJfQ0xPU0VEID0gJ2ZvbGRlci1jbG9zZWQnLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfRk9MREVSX09QRU4gPSAnZm9sZGVyLW9wZW4nLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfR1JPVVAgPSAnZ3JwJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX0lOVkFMSURfR1JPVVAgPSAnaW52YWxpZC1ncnAnLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfU1ZSX0dSUCA9ICdzdnItZ3JwJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX0lOVkFMSURfU1ZSX0dSUCA9ICdpbnZhbGlkLXN2ci1ncnAnLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfTlVNRVJJQ19CSU5fTyA9ICdudW1lcmljLWJpbi1vJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX05VTUVSSUNfQklOX1EgPSAnbnVtZXJpYy1iaW4tcScsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9JTlZBTElEX05VTUVSSUNfQklOID0gJ2ludmFsaWQtbnVtZXJpYy1iaW4nLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfRFJJTExQQVRIID0gJ2RyaWxscGF0aCcsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9WQUxJRF9TWVNHUlAgPSAndmFsaWQtc3lzZ3JwJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX0lOVkFMSURfU1lTR1JQID0gJ2ludmFsaWQtc3lzZ3JwJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX0NBVF9CSU4gPSAnY2F0LWJpbicsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9DQVRfQklOX0dFT0dBUEhJQ19PID0gJ2NhdC1iaW4tZ2VvZ2FwaGljLW8nLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfQ0FUX0JJTl9HRU9HQVBISUNfUSA9ICdjYXQtYmluLWdlb2dhcGhpYy1xJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX0lOVkFMSURfQ0FUX0JJTiA9ICdpbnZhbGlkLWNhdC1iaW4nLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfSU5WQUxJRF9DQVRfQklOX0dFT0dBUEhJQ19PID0gJ2ludmFsaWQtY2F0LWJpbi1nZW9nYXBoaWMtbycsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9JTlZBTElEX0NBVF9CSU5fR0VPR0FQSElDX1EgPSAnaW52YWxpZC1jYXQtYmluLWdlb2dhcGhpYy1xJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX0dFT0dSQVBISUMgPSAnZ2VvZ3JhcGhpYycsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9JTlZBTElEX0dFT0dSQVBISUNfTyA9ICdpbnZhbGlkLWdlb2dyYXBoaWMtbycsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9JTlZBTElEX0dFT0dSQVBISUNfUSA9ICdpbnZhbGlkLWdlb2dyYXBoaWMtcScsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9JREVOVF9TRVQgPSAnaWRlbnQtc2V0JyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX0lOVkFMSURfSURFTlRfU0VUID0gJ2ludmFsaWQtaWRlbnQtc2V0JyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX1RBQkxFID0gJ3RhYmxlJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX05PTkUgPSAnbm9uZSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVNZWFzdXJlVHlwZSB7XG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZU1lYXN1cmVUeXBlX19TVlRfQ1VCRV9NX0JMQU5LID0gJ2N1YmUtbS1ibGFuaycsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZU1lYXN1cmVUeXBlX19TVlRfQ1VCRV9NX0ZPTERFUl9DTE9TRUQgPSAnY3ViZS1tLWZvbGRlci1jbG9zZWQnLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVNZWFzdXJlVHlwZV9fU1ZUX0NVQkVfTV9GT0xERVJfT1BFTiA9ICdjdWJlLW0tZm9sZGVyLW9wZW4nLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVNZWFzdXJlVHlwZV9fU1ZUX0NVQkVfTV9EQVRFVElNRSA9ICdjdWJlLW0tZGF0ZXRpbWUnLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVNZWFzdXJlVHlwZV9fU1ZUX0NVQkVfTV9EQVRFID0gJ2N1YmUtbS1kYXRlJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRDdWJlTWVhc3VyZVR5cGVfX1NWVF9DVUJFX01fVElNRSA9ICdjdWJlLW0tdGltZScsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZU1lYXN1cmVUeXBlX19TVlRfQ1VCRV9NX1RFWFQgPSAnY3ViZS1tLXRleHQnLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVNZWFzdXJlVHlwZV9fU1ZUX0NVQkVfTV9OVU1CRVIgPSAnY3ViZS1tLW51bWJlcicsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZU1lYXN1cmVUeXBlX19TVlRfQ1VCRV9NX0NVUlJFTkNZID0gJ2N1YmUtbS1jdXJyZW5jeScsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZU1lYXN1cmVUeXBlX19TVlRfQ1VCRV9NX0JPT0xFQU4gPSAnY3ViZS1tLWJvb2xlYW4nLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVNZWFzdXJlVHlwZV9fU1ZUX0NVQkVfTV9HRU9HUkFQSElDID0gJ2N1YmUtbS1nZW9ncmFwaGljJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGUge1xuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlX19TVlRfQ1VCRV9EX0JMQU5LID0gJ2N1YmUtZC1ibGFuaycsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfSElFUkFSQ0hZID0gJ2N1YmUtZC1oaWVyYXJjaHknLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlX19TVlRfQ1VCRV9EX0xFVkVMID0gJ2N1YmUtZC1sZXZlbCcsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfSElFUl9DQUxDID0gJ2N1YmUtZC1oaWVyLWNhbGMnLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlX19TVlRfQ1VCRV9EX0xWTF9DQUxDID0gJ2N1YmUtZC1sdmwtY2FsYycsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfSElFUl9HRU8gPSAnY3ViZS1kLWhpZXItZ2VvJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRDdWJlRGltZW5zaW9uVHlwZV9fU1ZUX0NVQkVfRF9ISUVSX0dFT19DVVNUT00gPSAnY3ViZS1kLWhpZXItZ2VvLWN1c3RvbScsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfRk9MREVSX0NMT1NFRCA9ICdjdWJlLWQtZm9sZGVyLWNsb3NlZCcsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfRk9MREVSX09QRU4gPSAnY3ViZS1kLWZvbGRlci1vcGVuJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRDdWJlRGltZW5zaW9uVHlwZV9fU1ZUX0NVQkVfRF9BVFRSSUJVVEUgPSAnY3ViZS1kLWF0dHJpYnV0ZScsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfVEVYVCA9ICdjdWJlLWQtdGV4dCcsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfREFURVRJTUUgPSAnY3ViZS1kLWRhdGV0aW1lJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRDdWJlRGltZW5zaW9uVHlwZV9fU1ZUX0NVQkVfRF9EQVRFVElNRV9JTlZBTElEID0gJ2N1YmUtZC1kYXRldGltZS1pbnZhbGlkJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRDdWJlRGltZW5zaW9uVHlwZV9fU1ZUX0NVQkVfRF9EQVRFID0gJ2N1YmUtZC1kYXRlJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRDdWJlRGltZW5zaW9uVHlwZV9fU1ZUX0NVQkVfRF9EQVRFX0lOVkFMSUQgPSAnY3ViZS1kLWRhdGUtaW52YWxpZCcsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfR0VPR1JBUEhJQyA9ICdjdWJlLWQtZ2VvZ3JhcGhpYycsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfR0VPR1JBUEhJQ19JTlZBTElEID0gJ2N1YmUtZC1nZW9ncmFwaGljLWludmFsaWQnLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlX19TVlRfQ1VCRV9EX0dFT0dSQVBISUNfQ1VTVE9NID0gJ2N1YmUtZC1nZW9ncmFwaGljLWN1c3RvbScsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfR0VPR1JBUEhJQ19DVVNUT01fSU5WQUxJRCA9ICdjdWJlLWQtZ2VvZ3JhcGhpYy1jdXN0b20taW52YWxpZCcsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfVkFSWUlORyA9ICdjdWJlLWQtdmFyeWluZycsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfVURBID0gJ2N1YmUtZC11ZGEnLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlX19TVlRfQ1VCRV9EX05VTUJFUiA9ICdjdWJlLWQtbnVtYmVyJ1xufVxuXG4vLyBJbmRpY2F0ZXMgdGhlIHNlbGVjdGlvbiBtb2RlOiBTaW5nbGUgfCBNdWx0aXBsZS5cbmV4cG9ydCBlbnVtIEhTTVNlbGVjdGlvbk1vZGUge1xuXG4gIC8vIFxuICBTaW5nbGUgPSAnc2VsZWN0aW9uLW1vZGUtc2luZ2xlJyxcblxuICAvLyBcbiAgTXVsdGlwbGUgPSAnc2VsZWN0aW9uLW1vZGUtbXVsdGlwbGUnXG59XG5cbi8vIEluZGljYXRlcyB3aGF0IGRlZmF1bHQgbWVtYmVyIHRvIHVzZSBmb3IgYSBoaWVyYXJjaGljYWwgZmllbGQuXG5leHBvcnQgZW51bSBIU01EZWZhdWx0TWVtYmVyVHlwZSB7XG5cbiAgLy8gXG4gIFVzZURlZmF1bHRNZW1iZXIgPSAndXNlLWRlZmF1bHQtbWVtYmVyJyxcblxuICAvLyBcbiAgVXNlQWxsTWVtYmVyID0gJ3VzZS1hbGwtbWVtYmVyJyxcblxuICAvLyBcbiAgVXNlU2VsZWN0ZWRNZW1iZXIgPSAndXNlLXNlbGVjdGVkLW1lbWJlcidcbn1cblxuLy8gSGllcmFyY2hpY2FsIHNlbGVjdCBtb2RlbCBwcmVzZW50YXRpb24gbGF5ZXIgbm90aWZpY2F0aW9uLlxuZXhwb3J0IGVudW0gSFNNTm90aWZpY2F0aW9uVHlwZSB7XG5cbiAgLy8gXG4gIFVwZGF0ZWQgPSAnaHNtLW5vdGlmaWNhdGlvbi11cGRhdGVkJyxcblxuICAvLyBcbiAgTWlzc2luZ01lbWJlcnMgPSAnaHNtLW5vdGlmaWNhdGlvbi1taXNzaW5nLW1lbWJlcnMnXG59XG5cbi8vIFR5cGUgb2YgaGllcmFyY2h5IGNvbW1hbmQgc2VsZWN0aW9uIHRvIGJlIHBlcmZvcm1lZC5cbmV4cG9ydCBlbnVtIEhTTVNlbGVjdGlvblJlcXVlc3RUeXBlIHtcblxuICAvLyBcbiAgU2VsZWN0TW9kZSA9ICdoc20tc2VsZWN0aW9uLXJlcXVlc3Qtc2VsZWN0LW1vZGUnLFxuXG4gIC8vIFxuICBNZW1iZXJEZXNjZW5kYW50c1N0YXRlID0gJ2hzbS1zZWxlY3Rpb24tcmVxdWVzdC1kZXNjZW5kYW50cy1zdGF0ZScsXG5cbiAgLy8gXG4gIFNlbGVjdGVkTWVtYmVyVHVwbGUgPSAnaHNtLXNlbGVjdGlvbi1yZXF1ZXN0LXNlbGVjdGVkLW1lbWJlci10dXBsZScsXG5cbiAgLy8gXG4gIFNlbGVjdGVkTWVtYmVyQ2FwdGlvbiA9ICdoc20tc2VsZWN0aW9uLXJlcXVlc3Qtc2VsZWN0ZWQtbWVtYmVyLWNhcHRpb24nXG59XG5cbi8vIFR5cGUgb2YgaGllcmFyY2h5IG1lbWJlciBzZWxlY3Rpb24gdG8gYmUgcGVyZm9ybWVkLlxuZXhwb3J0IGVudW0gSFNNTWVtYmVyU2VsZWN0UmVxdWVzdFR5cGUge1xuXG4gIC8vIFxuICBTZWxlY3RNZW1iZXIgPSAnaHNtLW1lbWJlci1yZXF1ZXN0LXNlbGVjdC1tZW1iZXInLFxuXG4gIC8vIFxuICBTZWxlY3RTdWJ0cmVlID0gJ2hzbS1tZW1iZXItcmVxdWVzdC1zZWxlY3Qtc3VidHJlZScsXG5cbiAgLy8gXG4gIFNlbGVjdExldmVsID0gJ2hzbS1tZW1iZXItcmVxdWVzdC1zZWxlY3QtbGV2ZWwnLFxuXG4gIC8vIFxuICBNZW1iZXJTZWxlY3QgPSAnaHNtLW1lbWJlci1yZXF1ZXN0LW1lbWJlci1zZWxlY3QnLFxuXG4gIC8vIFxuICBNZW1iZXJMZXZlbCA9ICdoc20tbWVtYmVyLXJlcXVlc3QtbWVtYmVyLWxldmVsJ1xufVxuXG4vLyBIaWVyYXJjaHkgbGV2ZWwgc2VsZWN0aW9uIHN0YXRlLlxuZXhwb3J0IGVudW0gSFNNTGV2ZWxTZWxlY3Rpb25TdGF0ZSB7XG5cbiAgLy8gXG4gIEFsbFNlbGVjdGVkID0gJ2hzbS1hbGwtc2VsZWN0ZWQnLFxuXG4gIC8vIFxuICBOb25lU2VsZWN0ZWQgPSAnaHNtLW5vbmUtc2VsZWN0ZWQnLFxuXG4gIC8vIFxuICBTb21lU2VsZWN0ZWQgPSAnaHNtLXNvbWUtc2VsZWN0ZWQnLFxuXG4gIC8vIFVzZWQgd2hlbiBhIHF1ZXJ5IGlzIG1hZGUgb2YgbGV2ZWxzIHRoYXQgZG9uJ3QgZXhpc3QgaW4gdGhlIGdpdmVuIHN1YnRyZWUuIFdlIG5lZWQgdG8gZGlzdGluZ3Vpc2ggdGhhdCBmcm9tIG5vbmUgc2VsZWN0ZWQgd2hpY2ggaW1wbGllcyB0aGF0IG1lbWJlcnMgZXhpc3QgYnV0IGFyZSBub3Qgc2VsZWN0ZWQuXG4gIFVua25vd25TZWxlY3RlZCA9ICdoc20tdW5rbm93bi1zZWxlY3RlZCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBIU01NZW1iZXJMb2FkU3RhdGUge1xuXG4gIC8vIFxuICBBbGxMb2FkZWQgPSAnaHNtLWFsbC1sb2FkZWQnLFxuXG4gIC8vIFxuICBOb25lTG9hZGVkID0gJ2hzbS1ub25lLWxvYWRlZCcsXG5cbiAgLy8gXG4gIFNvbWVMb2FkZWQgPSAnaHNtLXNvbWUtbG9hZGVkJ1xufVxuXG4vLyBSZXR1cm4gdmFsdWUgZnJvbSBDb25uZWN0aW9uU3RhdGVDb250cm9sbGVyIGNvbm5lY3QgbWV0aG9kc1xuZXhwb3J0IGVudW0gQ29ubmVjdGlvbkF0dGVtcHRSZXN1bHQge1xuXG4gIC8vIEFsbCBkYXRhIHNvdXJjZXMgcmVxdWVzdGVkIGFyZSBjb25uZWN0ZWQuXG4gIENBUl9Db25uZWN0ZWQgPSAnY29ubmVjdGVkJyxcblxuICAvLyBOb3QgYWxsIGRhdGEgc291cmNlcyBhcmUgY29ubmVjdGVkLlxuICBDQVJfTm90Q29ubmVjdGVkID0gJ25vdC1jb25uZWN0ZWQnLFxuXG4gIC8vIFRoZSB1c2VyIGludGVycnVwdGVkIHRoZSBjb25uZWN0aW9uIGZsb3cgdG8gZWRpdCBhIGNvbm5lY3Rpb24uXG4gIENBUl9Vc2VyRWRpdENvbm5lY3Rpb24gPSAndXNlci1lZGl0LWNvbm5lY3Rpb24nLFxuXG4gIC8vIFRoZSBjb25uZWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhlIGN1cnJlbnQgcGxhdGZvcm0uXG4gIENBUl9Db25uZWN0aW9uTm90U3VwcG9ydGVkID0gJ2Nvbm5lY3Rpb24tbm90LXN1cHBvcnRlZCdcbn1cblxuLy8gUmV0dXJuIHZhbHVlIGZyb20gQ29ubmVjdFRvRGF0YVNlcnZlclNvdXJjZUNvbW1hbmQ6OkRvXG5leHBvcnQgZW51bSBEYXRhU2VydmVyQ29ubmVjdGlvblJlc3VsdCB7XG5cbiAgLy8gVGhlIGRhdGEgc291cmNlIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBhZGRlZC5cbiAgRFNDUl9TdWNjZXNzID0gJ3N1Y2Nlc3MnLFxuXG4gIC8vIEVycm9yIHRoYXQgd2FzIGhhbmRsZWQuIFRoZXJlJ3Mgbm8gbW9yZSB0byBkbyAoZXguIGNhbmNlbCwgb3IgYW4gZXhjZXB0aW9uIHRoYXQgdGhlIGNvbW1hbmQganVzdCBwcmludGVkIHRvIHRoZSBlcnJvciBkaWFsb2cpLlxuICBEU0NSX0ZhaWx1cmUgPSAnZmFpbHVyZScsXG5cbiAgLy8gVHJ5IGFnYWluIGFmdGVyIG1ha2luZyBhIG5ldyB3b3JrYm9vay5cbiAgRFNDUl9SZXF1aXJlc1dvcmtib29rRG9jID0gJ3JlcXVpcmVzLXdvcmtib29rJyxcblxuICAvLyBUcnkgYWdhaW4gYWZ0ZXIgbG9nZ2luZyBiYWNrIG9uIHRvIFRhYmxlYXUgc2VydmVyLlxuICBEU0NSX1JlcXVpcmVzQXV0aGVudGljYXRpb24gPSAncmVxdWlyZXMtYXV0aGVudGljYXRpb24nLFxuXG4gIC8vIFRyeSBhZ2FpbiBhZnRlciBnZXR0aW5nIGRhdGFiYXNlIGNyZWRlbnRpYWxzIGZyb20gdGhlIHVzZXIuIFBhc3MgdGhlbSBpbiB0aHJvdWdoIHRoZSBEUElfRGF0YXNvdXJjZVVzZXJuYW1lIGFuZCB0aGUgRFBJX0RhdGFzb3VyY2VQYXNzd29yZCBwYXJhbWV0ZXJzLlxuICBEU0NSX1JlcXVpcmVzREJDcmVkZW50aWFscyA9ICdyZXF1aXJlcy1kYi1jcmVkZW50aWFscycsXG5cbiAgLy8gVHJ5IGFnYWluIGFmdGVyIGFzc29jaWF0aW5nIGFuIE9BdXRoIGtleSBmcm9tIHRoZSB1c2VyIGtleWNoYWluIHdpdGggdGhlIGRhdGEgc291cmNlLlxuICBEU0NSX1JlcXVpcmVzT0F1dGhLZXlBc3NvY2lhdGlvbiA9ICdyZXF1aXJlcy1vYXV0aC1rZXktYXNzb2NpYXRpb24nLFxuXG4gIC8vIFRoZSBPQXV0aCBjcmVkZW50aWFscyB1c2VkIHRvIGNvbm5lY3QgdG8gdGhlIGRhdGFzb3VyY2UgYXJlIG5vdCB2YWxpZC5cbiAgRFNDUl9SZXF1aXJlc1ZhbGlkT0F1dGhLZXkgPSAncmVxdWlyZXMtdmFsaWQtb2F1dGgta2V5JyxcblxuICAvLyBNdWx0aXBsZSBsZWFmIGNvbm5lY3Rpb25zIHdpdGhpbiBhIGZlZGVyYXRlZCBkYXRhIHNvdXJjZSBjb250YWluIGVycm9ycyAoZS5nLiwgbXVsdGlwbGUgbGVhZnMgbWlnaHQgbmVlZCBjcmVkZW50aWFscykuXG4gIERTQ1JfRmVkZXJhdGVkRXJyb3IgPSAnZmVkZXJhdGVkLWVycm9yJ1xufVxuXG4vLyBUeXBlIG9mIGVycm9yIGVuY291bnRlcmVkIHdoaWxlIGF0dGVtcHRpbmcgdG8gY29ubmVjdC5cbmV4cG9ydCBlbnVtIENvbm5lY3Rpb25FcnJvclR5cGUge1xuXG4gIC8vIEF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzIGFyZSBuZWVkZWQgaW4gb3JkZXIgdG8gY29ubmVjdC5cbiAgQ0VUX05lZWRzQXV0aGVudGljYXRpb24gPSAnbmVlZHMtYXV0aGVudGljYXRpb24nLFxuXG4gIC8vIFRoZSBkYXRhIHNvdXJjZSBpcyBwcm92aWRlZCBieSBEYXRhIFNlcnZlciwgYnV0IG5vIERhdGEgU2VydmVyIGNvbm5lY3Rpb24gaXMgcHJlc2VudC5cbiAgQ0VUX0RhdGFTZXJ2ZXJEaXNjb25uZWN0ZWQgPSAnZGF0YS1zZXJ2ZXItZGlzY29ubmVjdGVkJyxcblxuICAvLyBBbiBleGNlcHRpb24gb2NjdXJyZWQgd2hpbGUgY29ubmVjdGluZy4gIFRoaXMgY291bGQgYmUgY2F1c2VkIGJ5IGEgYmFkIHBhc3N3b3JkLCBvciB3cm9uZyBwYXRoL3VybC5cbiAgQ0VUX0V4Y2VwdGlvbldoaWxlQ29ubmVjdGluZyA9ICdleGNlcHRpb24td2hpbGUtY29ubmVjdGluZycsXG5cbiAgLy8gQW4gZXhjZXB0aW9uIG9jY3VycmVkIHdoaWxlIHRyeWluZyB0byBjb25uZWN0IHRoZSBkYXRhIHNvdXJjZSBhcyBhIHdob2xlLlxuICBDRVRfRXhjZXB0aW9uV2hpbGVDb25uZWN0aW5nRGF0YVNvdXJjZSA9ICdleGNlcHRpb24td2hpbGUtY29ubmVjdGluZy1kYXRhLXNvdXJjZScsXG5cbiAgLy8gVGhlIGNvbm5lY3Rpb24gaXMgbm90IHN1cHBvcnRlZC5cbiAgQ0VUX0Nvbm5lY3Rpb25Ob3RTdXBwb3J0ZWQgPSAnY29ubmVjdGlvbi1ub3Qtc3VwcG9ydGVkJyxcblxuICAvLyBBbiB1bmV4cGVjdGVkIGV4Y2VwdGlvbiBvY2N1cnJlZC5cbiAgQ0VUX1VuZXhwZWN0ZWRFeGNlcHRpb24gPSAndW5leHBlY3RlZC1leGNlcHRpb24nXG59XG5cbi8vIGlkZW50aWZpZXMgdGhlIHBpZWNlIG9mIHRoZSB2aXN1YWxcbmV4cG9ydCBlbnVtIFZpc3VhbFBhcnQge1xuXG4gIC8vIGRlZmF1bHQgYnVja2V0IGlmIHR5cGUgaXNuJ3Qgc3BlY2lmaWVkXG4gIFZQX01pc2MgPSAnbWlzYycsXG5cbiAgLy8gXG4gIFZQX0Fubm90YXRpb25zID0gJ2Fubm90YXRpb25zJyxcblxuICAvLyBcbiAgVlBfQXhpc1J1bGVzID0gJ2F4aXMtcnVsZXMnLFxuXG4gIC8vIFxuICBWUF9Ub3BBeGlzID0gJ3RvcC1heGlzJyxcblxuICAvLyBcbiAgVlBfQm90dG9tQXhpcyA9ICdib3R0b20tYXhpcycsXG5cbiAgLy8gXG4gIFZQX0xlZnRBeGlzID0gJ2xlZnQtYXhpcycsXG5cbiAgLy8gXG4gIFZQX1JpZ2h0QXhpcyA9ICdyaWdodC1heGlzJyxcblxuICAvLyBcbiAgVlBfQmFja2dyb3VuZCA9ICdiYWNrZ3JvdW5kJyxcblxuICAvLyBcbiAgVlBfQm9yZGVycyA9ICdib3JkZXJzJyxcblxuICAvLyBcbiAgVlBfQ2FwdGlvbiA9ICdjYXB0aW9uJyxcblxuICAvLyBcbiAgVlBfQ2VsbEJvcmRlcnMgPSAnY2VsbC1ib3JkZXJzJyxcblxuICAvLyBcbiAgVlBfRGVjb3JhdGlvbiA9ICdkZWNvcmF0aW9uJyxcblxuICAvLyBcbiAgVlBfRHJvcExpbmVzID0gJ2Ryb3AtbGluZXMnLFxuXG4gIC8vIFxuICBWUF9YTGFiZWxzID0gJ3gtbGFiZWxzJyxcblxuICAvLyBcbiAgVlBfWUxhYmVscyA9ICd5LWxhYmVscycsXG5cbiAgLy8gXG4gIFZQX0xlZ2VuZHMgPSAnbGVnZW5kcycsXG5cbiAgLy8gXG4gIFZQX01hcmtzID0gJ21hcmtzJyxcblxuICAvLyBcbiAgVlBfTWFya0xhYmVscyA9ICdtYXJrLWxhYmVscycsXG5cbiAgLy8gXG4gIFZQX01hcmtUcmFpbHMgPSAnbWFyay10cmFpbHMnLFxuXG4gIC8vIFxuICBWUF9SZWZlcmVuY2VCYW5kcyA9ICdyZWYtYmFuZHMnLFxuXG4gIC8vIFxuICBWUF9SZWZlcmVuY2VMaW5lcyA9ICdyZWYtbGluZXMnLFxuXG4gIC8vIFxuICBWUF9QYW5lQm9yZGVycyA9ICdwYW5lLWJvcmRlcnMnLFxuXG4gIC8vIFxuICBWUF9TY3JvbGxCYXJzID0gJ3Njcm9sbC1iYXJzJyxcblxuICAvLyBcbiAgVlBfVGl0bGUgPSAndGl0bGUnLFxuXG4gIC8vIFxuICBWUF9UcmVuZExpbmVzID0gJ3RyZW5kLWxpbmVzJyxcblxuICAvLyBcbiAgVlBfVXBwZXJNYXBMYXllcnMgPSAndXBwZXItbWFwLWxheWVycydcbn1cblxuLy8gRGV0YWlscyBvZiB0aGUgcGFydCB3aXRoaW4gYW4gRWxlbWVudElkXG5leHBvcnQgZW51bSBTY2VuZU1vZGVsVHlwZXNEZXRhaWwge1xuXG4gIC8vIFxuICBOb0RldGFpbCA9ICduby1kZXRhaWwnLFxuXG4gIC8vIFxuICBNYXJrRGV0YWlsID0gJ21hcmstZGV0YWlsJyxcblxuICAvLyBcbiAgTGFiZWxEZXRhaWwgPSAnbGFiZWwtZGV0YWlsJyxcblxuICAvLyBcbiAgTGFiZWxIYW5kbGVEZXRhaWwgPSAnbGFiZWwtaGFuZGxlLWRldGFpbCcsXG5cbiAgLy8gXG4gIFRvcExlZnRIYW5kbGVEZXRhaWwgPSAndG9wLWxlZnQtaGFuZGxlLWRldGFpbCcsXG5cbiAgLy8gXG4gIFRvcE1pZEhhbmRsZURldGFpbCA9ICd0b3AtbWlkLWhhbmRsZS1kZXRhaWwnLFxuXG4gIC8vIFxuICBUb3BSaWdodEhhbmRsZURldGFpbCA9ICd0b3AtcmlnaHQtaGFuZGxlLWRldGFpbCcsXG5cbiAgLy8gXG4gIFJpZ2h0TWlkSGFuZGxlRGV0YWlsID0gJ3JpZ2h0LW1pZC1oYW5kbGUtZGV0YWlsJyxcblxuICAvLyBcbiAgQm90dG9tUmlnaHRIYW5kbGVEZXRhaWwgPSAnYm90dG9tLXJpZ2h0LWhhbmRsZS1kZXRhaWwnLFxuXG4gIC8vIFxuICBCb3R0b21NaWRIYW5kbGVEZXRhaWwgPSAnYm90dG9tLW1pZC1oYW5kbGUtZGV0YWlsJyxcblxuICAvLyBcbiAgQm90dG9tTGVmdEhhbmRsZURldGFpbCA9ICdib3R0b20tbGVmdC1oYW5kbGUtZGV0YWlsJyxcblxuICAvLyBcbiAgTGVmdE1pZEhhbmRsZURldGFpbCA9ICdsZWZ0LW1pZC1oYW5kbGUtZGV0YWlsJyxcblxuICAvLyBcbiAgTGluZURldGFpbCA9ICdsaW5lLWRldGFpbCcsXG5cbiAgLy8gXG4gIEFycm93SGFuZGxlRGV0YWlsID0gJ2Fycm93LWhhbmRsZS1kZXRhaWwnLFxuXG4gIC8vIFxuICBUZXh0Q2VudGVySGFuZGxlRGV0YWlsID0gJ3RleHQtY2VudGVyLWhhbmRsZS1kZXRhaWwnLFxuXG4gIC8vIFxuICBUZXh0Qm94SGFuZGxlRGV0YWlsID0gJ3RleHQtYm94LWhhbmRsZS1kZXRhaWwnLFxuXG4gIC8vIFxuICBNYXJrQXJyb3dIYW5kbGVEZXRhaWwgPSAnbWFyay1hcnJvdy1oYW5kbGUtZGV0YWlsJyxcblxuICAvLyBcbiAgTWFya01vdmFibGVIYW5kbGVEZXRhaWwgPSAnbWFyay1tb3ZhYmxlLWhhbmRsZS1kZXRhaWwnLFxuXG4gIC8vIFxuICBNYXJrQW5jaG9yRGV0YWlsID0gJ21hcmstYW5jaG9yLWRldGFpbCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTY2VuZU1vZGVsVHlwZXNIaXRUeXBlIHtcblxuICAvLyBcbiAgTm9IaXQgPSAnbm8taGl0JyxcblxuICAvLyBcbiAgQXJlYUhpdCA9ICdhcmVhLWhpdCcsXG5cbiAgLy8gXG4gIE5lYXJIaXQgPSAnbmVhci1oaXQnLFxuXG4gIC8vIFxuICBFeGFjdEhpdCA9ICdleGFjdC1oaXQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU2NlbmVNb2RlbFR5cGVzSGl0VGVzdFN0eWxlIHtcblxuICAvLyBcbiAgQm91bmRzVGVzdCA9ICdib3VuZHMtdGVzdCcsXG5cbiAgLy8gXG4gIEV4YWN0VGVzdCA9ICdleGFjdC10ZXN0JyxcblxuICAvLyBcbiAgUmFkaWFsRGlzdGFuY2VUZXN0ID0gJ3JhZGlhbC1kaXN0YW5jZS10ZXN0JyxcblxuICAvLyBcbiAgTGFiZWxUZXN0ID0gJ2xhYmVsLXRlc3QnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU2NlbmVNb2RlbFR5cGVzSGl0VGVzdEZsYWdzIHtcblxuICAvLyBcbiAgSGl0VGVzdEFsbCA9ICdoaXQtdGVzdC1hbGwnLFxuXG4gIC8vIFxuICBIaXRUZXN0SWdub3JlTGFiZWxzID0gJ2hpdC10ZXN0LWlnbm9yZS1sYWJlbHMnLFxuXG4gIC8vIFxuICBIaXRUZXN0SWdub3JlQW5ub3RhdGlvbnMgPSAnaGl0LXRlc3QtaWdub3JlLWFubm90YXRpb25zJyxcblxuICAvLyBcbiAgSGl0VGVzdEZvck92ZXJsYXkgPSAnaGl0LXRlc3QtZm9yLW92ZXJsYXknXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gQW5ub3RhdGVFbnVtIHtcblxuICAvLyBcbiAgQUVfTWFyayA9ICdtYXJrJyxcblxuICAvLyBcbiAgQUVfUG9pbnQgPSAncG9pbnQnLFxuXG4gIC8vIFxuICBBRV9BcmVhID0gJ2FyZWEnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gTWFya0VudW0ge1xuXG4gIC8vIFxuICBNRV9BdXRvID0gJ2F1dG8nLFxuXG4gIC8vIFxuICBNRV9PbiA9ICdvbicsXG5cbiAgLy8gXG4gIE1FX09mZiA9ICdvZmYnLFxuXG4gIC8vIFxuICBNRV9DbGVhciA9ICdjbGVhcidcbn1cblxuLy8gXG5leHBvcnQgZW51bSBab29tTGV2ZWwge1xuXG4gIC8vIFxuICBaT09NX0VOVElSRV9WSUVXID0gJ3pvb20tZW50aXJlLXZpZXcnLFxuXG4gIC8vIFxuICBaT09NX0ZJVF9XSURUSCA9ICd6b29tLWZpdC13aWR0aCcsXG5cbiAgLy8gXG4gIFpPT01fRklUX0hFSUdIVCA9ICd6b29tLWZpdC1oZWlnaHQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gQWN0aW9uVHlwZSB7XG5cbiAgLy8gXG4gIEFUX1Vua25vd24gPSAndW5rbm93bicsXG5cbiAgLy8gXG4gIEFUX0JydXNoID0gJ2JydXNoJyxcblxuICAvLyBcbiAgQVRfRmlsdGVyID0gJ2ZpbHRlcicsXG5cbiAgLy8gXG4gIEFUX1VSTCA9ICd1cmwnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU2hlbGZEcm9wQWN0aW9uIHtcblxuICAvLyBcbiAgU2RhUmVwbGFjZSA9ICdyZXBsYWNlJyxcblxuICAvLyBcbiAgU2RhQ29tYmluZSA9ICdjb21iaW5lJyxcblxuICAvLyBcbiAgU2RhSW5zZXJ0ID0gJ2luc2VydCcsXG5cbiAgLy8gXG4gIFNkYVN3YXAgPSAnc3dhcCcsXG5cbiAgLy8gXG4gIFNkYVJlcGxhY2VBbGwgPSAncmVwbGFjZS1hbGwnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU2hlbGZEcm9wQ29udGV4dCB7XG5cbiAgLy8gXG4gIFNoZWxmRHJvcENvbnRleHRfTm9uZSA9ICdub25lJyxcblxuICAvLyBcbiAgU2hlbGZEcm9wQ29udGV4dF9DYXRlZ29yaWNhbCA9ICdjYXRlZ29yaWNhbCcsXG5cbiAgLy8gXG4gIFNoZWxmRHJvcENvbnRleHRfUXVhbnRpdGF0aXZlID0gJ3F1YW50aXRhdGl2ZSdcbn1cblxuLy8gRHJhZy9Ecm9wIHNvdXJjZSBhbmQgdGFyZ2V0XG5leHBvcnQgZW51bSBEcmFnRHJvcFR5cGUge1xuXG4gIC8vIGRyYWcgZnJvbSBvciBkcm9wIG9udG8gdml6XG4gIERyYWdEcm9wX1ZpeiA9ICdkcmFnLWRyb3Atdml6JyxcblxuICAvLyBkcmFnIGZyb20gb3IgZHJvcCBvbnRvIHNoZWxmXG4gIERyYWdEcm9wX1NoZWxmID0gJ2RyYWctZHJvcC1zaGVsZicsXG5cbiAgLy8gZHJhZyBmcm9tIG9yIGRyb3Agb250byBzY2hlbWFcbiAgRHJhZ0Ryb3BfU2NoZW1hID0gJ2RyYWctZHJvcC1zY2hlbWEnLFxuXG4gIC8vIGRyYWcgZnJvbSBvciBkcm9wIG9udG8gbm93aGVyZVxuICBEcmFnRHJvcF9Ob25lID0gJ2RyYWctZHJvcC1ub25lJyxcblxuICAvLyBkcmFnIGZyb20gb3IgZHJvcCBvbnRvIGNhbGN1bGF0aW9uIGVkaXRvclxuICBEcmFnRHJvcF9DYWxjdWxhdGlvbkVkaXRvciA9ICdkcmFnLWRyb3AtY2FsY3VsYXRpb24tZWRpdG9yJyxcblxuICAvLyBkcmFnIGZyb20gcGl2b3Qgd2luZG93XG4gIERyYWdEcm9wX1Bpdm90ID0gJ2RyYWctZHJvcC1waXZvdCdcbn1cblxuLy8gRGlhbG9nIHR5cGUgcmVsYXRlZCB0byByZWRpcmVjdCBhY3Rpb24gcmVxdWlyZWQgYnkgVUlcbmV4cG9ydCBlbnVtIENvbW1hbmRSZWRpcmVjdFR5cGUge1xuXG4gIC8vIGFkZCBuZXcgZGF0YSBjb25uZWN0aW9uIGRpYWxvZ1xuICBDb21tYW5kUmVkaXJlY3RfQWRkRGF0YUNvbm5lY3Rpb24gPSAnY29tbWFuZC1yZWRpcmVjdC1hZGQtZGF0YS1jb25uZWN0aW9uJyxcblxuICAvLyBjcmVhdGUgZHJpbGwgcGF0aCBkaWFsb2dcbiAgQ29tbWFuZFJlZGlyZWN0X0FkZERyaWxsUGF0aCA9ICdjb21tYW5kLXJlZGlyZWN0LWFkZC1kcmlsbC1wYXRoJyxcblxuICAvLyBjb25maXJtYXRpb24gZGlhbG9nXG4gIENvbW1hbmRSZWRpcmVjdF9Db25maXJtYXRpb24gPSAnY29tbWFuZC1yZWRpcmVjdC1jb25maXJtYXRpb24nLFxuXG4gIC8vIHNob3dzIHRoZSBmb3JtYXQgd29ya2Jvb2sgcGFuZVxuICBDb21tYW5kUmVkaXJlY3RfRm9ybWF0V29ya2Jvb2sgPSAnY29tbWFuZC1yZWRpcmVjdC1mb3JtYXQtd29ya2Jvb2snLFxuXG4gIC8vIG5vdGlmaWNhdGlvbiBkaWFsb2dcbiAgQ29tbWFuZFJlZGlyZWN0X05vdGlmaWNhdGlvbiA9ICdjb21tYW5kLXJlZGlyZWN0LW5vdGlmaWNhdGlvbicsXG5cbiAgLy8gc2hvdyBudW1iZXIgZm9ybWF0dGluZyBkaWFsb2dcbiAgQ29tbWFuZFJlZGlyZWN0X051bWJlckZvcm1hdCA9ICdjb21tYW5kLXJlZGlyZWN0LW51bWJlci1mb3JtYXQnLFxuXG4gIC8vIGZ1bGwtZmVhdHVyZWQgZWRpdG9yXG4gIENvbW1hbmRSZWRpcmVjdF9FZGl0ID0gJ2NvbW1hbmQtcmVkaXJlY3QtZWRpdCcsXG5cbiAgLy8gcXVpY2sgZWRpdG9yXG4gIENvbW1hbmRSZWRpcmVjdF9RdWlja0VkaXQgPSAnY29tbWFuZC1yZWRpcmVjdC1xdWljay1lZGl0JyxcblxuICAvLyBpbmxpbmUgcmVuYW1lIGZpZWxkXG4gIENvbW1hbmRSZWRpcmVjdF9SZW5hbWVGaWVsZCA9ICdjb21tYW5kLXJlZGlyZWN0LXJlbmFtZS1maWVsZCcsXG5cbiAgLy8gcmVuYW1lIGRyaWxsIHBhdGggZGlhbG9nXG4gIENvbW1hbmRSZWRpcmVjdF9SZW5hbWVEcmlsbFBhdGggPSAnY29tbWFuZC1yZWRpcmVjdC1yZW5hbWUtZHJpbGwtcGF0aCcsXG5cbiAgLy8gcmVuYW1lIHNoZWV0IGRpYWxvZ1xuICBDb21tYW5kUmVkaXJlY3RfUmVuYW1lU2hlZXQgPSAnY29tbWFuZC1yZWRpcmVjdC1yZW5hbWUtc2hlZXQnLFxuXG4gIC8vIGVkaXQgd2ViIHpvbmUgdXJsXG4gIENvbW1hbmRSZWRpcmVjdF9FZGl0V2ViWm9uZVVybCA9ICdjb21tYW5kLXJlZGlyZWN0LWVkaXQtd2ViLXpvbmUtdXJsJyxcblxuICAvLyBlZGl0IGZvcm1hdHRpbmdcbiAgQ29tbWFuZFJlZGlyZWN0X0VkaXRGb3JtYXR0aW5nID0gJ2NvbW1hbmQtcmVkaXJlY3QtZWRpdC1mb3JtYXR0aW5nJyxcblxuICAvLyBjYXRlZ29yaWNhbCBiaW4gZWRpdCBkaWFsb2dcbiAgQ29tbWFuZFJlZGlyZWN0X0NhdGVnb3JpY2FsQmluRWRpdCA9ICdjb21tYW5kLXJlZGlyZWN0LWNhdGVnb3JpY2FsLWJpbi1lZGl0JyxcblxuICAvLyBudW1lcmljIGJpbiBlZGl0IGRpYWxvZ1xuICBDb21tYW5kUmVkaXJlY3RfTnVtZXJpY0JpbkVkaXQgPSAnY29tbWFuZC1yZWRpcmVjdC1udW1lcmljLWJpbi1lZGl0JyxcblxuICAvLyByaWNoIHRleHQgZGlhbG9nXG4gIENvbW1hbmRSZWRpcmVjdF9SaWNoVGV4dCA9ICdjb21tYW5kLXJlZGlyZWN0LXJpY2gtdGV4dCcsXG5cbiAgLy8gZGVsZXRlIHNoZWV0IGRpYWxvZ1xuICBDb21tYW5kUmVkaXJlY3RfRGVsZXRlU2hlZXQgPSAnY29tbWFuZC1yZWRpcmVjdC1kZWxldGUtc2hlZXQnLFxuXG4gIC8vIE5vIHJlZGlyZWN0IHJlcXVpcmVkXG4gIENvbW1hbmRSZWRpcmVjdF9Ob25lID0gJ2NvbW1hbmQtcmVkaXJlY3Qtbm9uZSdcbn1cblxuLy8gRGlyZWN0aXZlcyBmb3IgaGV1cmlzdGljYWxseSBpbnRlcnByZXRpbmcgdXNlciBpbnRlbnQgb2YgY29tbWFuZFxuZXhwb3J0IGVudW0gSGV1cmlzdGljQ29tbWFuZFJlaW50ZXJwcmV0YXRpb24ge1xuXG4gIC8vIERpcmVjdHMgVGFibGVhdSB0byBub3QgcmVpbnRlcnByZXQgc3BlY2lmaWNzIG9mIHRoZSBjb21tYW5kXG4gIERvTm90UmVpbnRlcnByZXRDb21tYW5kID0gJ2RvLW5vdC1yZWludGVycHJldC1jb21tYW5kJyxcblxuICAvLyBEaXJlY3RzIFRhYmxlYXUgdG8gZ3Vlc3MgdGhhdCB3aGVuIHRoZSB1c2VyIHNlbGVjdGVkIGFsbCBpdGVtcyBpbiBhIGZpbHRlciwgdGhlIGludGVudCB3YXMgYWN0dWFsbHkgdG8gc2VsZWN0IEFMTFxuICBDYXRlZ29yaWNhbEZpbHRlcl9JbmZlckFsbFdoZW5FdmVyeXRoaW5nU2VsZWN0ZWQgPSAnY2F0ZWdvcmljYWwtZmlsdGVyLWluZmVyLWFsbC13aGVuLWV2ZXJ5dGhpbmctc2VsZWN0ZWQnXG59XG5cbi8vIGZpbHRlciB0eXBlc1xuZXhwb3J0IGVudW0gRmlsdGVyVHlwZSB7XG5cbiAgLy8gUXVhbnRpdGF0aXZlXG4gIEZMVFJfUXVhbnRpdGF0aXZlID0gJ1F1YW50aXRhdGl2ZScsXG5cbiAgLy8gQ2F0ZWdvcmljYWxcbiAgRkxUUl9DYXRlZ29yaWNhbCA9ICdDYXRlZ29yaWNhbCcsXG5cbiAgLy8gSGllcmFyY2hpY2FsXG4gIEZMVFJfSGllcmFyY2hpY2FsID0gJ0hpZXJhcmNoaWNhbCcsXG5cbiAgLy8gUmVsYXRpdmUgRGF0ZVxuICBGTFRSX1JlbGF0aXZlRGF0ZSA9ICdSZWxhdGl2ZURhdGUnLFxuXG4gIC8vIFJlbGF0aXZlRGF0ZVBpY2tcbiAgRkxUUl9SZWxhdGl2ZURhdGVQaWNrID0gJ1JlbGF0aXZlRGF0ZVBpY2snLFxuXG4gIC8vIE5vdFNwZWNpZmllZFxuICBGTFRSX0RlZmF1bHQgPSAnRmlsdGVyRGVmYXVsdCdcbn1cblxuLy8gUGFyYW1ldGVyIGVycm9yc1xuZXhwb3J0IGVudW0gUGFyYW1ldGVyRXJyb3Ige1xuXG4gIC8vIGZpZWxkIGFnZ3JlZ2F0aW9uIGlzIGludmFsaWRcbiAgSW52YWxpZEFnZ0ZpZWxkcyA9ICdpbnZhbGlkLWFnZy1maWVsZHMnLFxuXG4gIC8vIGZpZWxkIGlzIGludmFsaWRcbiAgSW52YWxpZEZpZWxkcyA9ICdpbnZhbGlkLWZpZWxkcycsXG5cbiAgLy8gZmlsdGVyIHZhbHVlcyBhcmUgaW52YWxpZFxuICBJbnZhbGlkRmlsdGVyVmFsdWVzID0gJ2ludmFsaWQtZmlsdGVyLXZhbHVlcycsXG5cbiAgLy8gZGF0ZSB2YWx1ZSBpcyBpbnZhbGlkXG4gIEludmFsaWREYXRlcyA9ICdpbnZhbGlkLWRhdGVzJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFNlbGVjdGlvblR5cGUge1xuXG4gIC8vIFxuICBTVF9UdXBsZXMgPSAndHVwbGVzJyxcblxuICAvLyBcbiAgU1RfTm9kZXMgPSAnbm9kZXMnLFxuXG4gIC8vIFxuICBTVF9UcmVuZExpbmVzID0gJ3RyZW5kLWxpbmVzJyxcblxuICAvLyBcbiAgU1RfTGVnZW5kSXRlbXMgPSAnbGVnZW5kLWl0ZW1zJyxcblxuICAvLyBcbiAgU1RfUmVmTGluZXMgPSAncmVmLWxpbmVzJyxcblxuICAvLyBcbiAgU1RfQW5ub3RhdGlvbnMgPSAnYW5ub3RhdGlvbnMnLFxuXG4gIC8vIFxuICBTVF9PcmllbnRlZE5vZGVzID0gJ29yaWVudGVkLW5vZGVzJyxcblxuICAvLyBcbiAgU1RfU2hlbGZGaWVsZHMgPSAnc2hlbGYtZmllbGRzJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFNlbGVjdGlvblVwZGF0ZVR5cGUge1xuXG4gIC8vIFxuICBTVV9BREQgPSAnc2VsZWN0LWFkZCcsXG5cbiAgLy8gXG4gIFNVX1JFTU9WRSA9ICdzZWxlY3QtcmVtb3ZlJyxcblxuICAvLyBcbiAgU1VfUkVQTEFDRSA9ICdzZWxlY3QtcmVwbGFjZSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTZWxlY3RPcHRpb25zIHtcblxuICAvLyBObyBrZXkgZG93blxuICBTZWxlY3RPcHRpb25zU2ltcGxlID0gJ3NlbGVjdC1vcHRpb25zLXNpbXBsZScsXG5cbiAgLy8gQ3RybCBrZXkgZG93blxuICBTZWxlY3RPcHRpb25zVG9nZ2xlID0gJ3NlbGVjdC1vcHRpb25zLXRvZ2dsZScsXG5cbiAgLy8gU2hpZnQga2V5IGRvd25cbiAgU2VsZWN0T3B0aW9uc1JhbmdlID0gJ3NlbGVjdC1vcHRpb25zLXJhbmdlJyxcblxuICAvLyBVc3VhbGx5IHRyaWdnZXJlZCBieSByaWdodCBjbGlja1xuICBTZWxlY3RPcHRpb25zTW91c2VNZW51ID0gJ3NlbGVjdC1vcHRpb25zLW1lbnUnLFxuXG4gIC8vIEFuIGF0dGVtcHQgdG8gc2VsZWN0IHZpYSBzZWFyY2hcbiAgU2VsZWN0T3B0aW9uc1NlYXJjaE1hdGNoID0gJ3NlbGVjdC1vcHRpb25zLXNlYXJjaCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBXaGl0ZXNwYWNlU2VsZWN0aW9uQmVoYXZpb3Ige1xuXG4gIC8vIENsZWFyIHNlbGVjdGlvbiBvdmVyIHdoaXRlc3BhY2UgYmFzZWQgb24gZGVmYXVsdCBmYWN0b3JzIChpLmUuLCBhcmUgd2UgaW4gYXBwZW5kIG1vZGU/KVxuICBEZWZhdWx0ID0gJ2RlZmF1bHQnLFxuXG4gIC8vIEFsd2F5cyBjbGVhciBzZWxlY3Rpb24gb3ZlciB3aGl0ZXNwYWNlXG4gIEFsd2F5c0NsZWFyID0gJ2Fsd2F5cy1jbGVhcicsXG5cbiAgLy8gTmV2ZXIgY2xlYXIgc2VsZWN0aW9uIG92ZXIgd2hpdGVzcGFjZVxuICBOZXZlckNsZWFyID0gJ25ldmVyLWNsZWFyJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIE9yaWVudGF0aW9uIHtcblxuICAvLyBcbiAgVmVydGljYWwgPSAnby12ZXJ0JyxcblxuICAvLyBcbiAgSG9yaXpvbnRhbCA9ICdvLWhvcml6JyxcblxuICAvLyBcbiAgT0F1dG9tYXRpYyA9ICdvLWF1dG8nXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU2NhbGVUeXBlIHtcblxuICAvLyBcbiAgTG9nID0gJ2xvZycsXG5cbiAgLy8gXG4gIExpbmVhciA9ICdsaW5lYXInXG59XG5cbi8vIHR5cGUgb2Ygb2JqZWN0IGFjdGlvbiBhcHBsaWVzIHRvXG5leHBvcnQgZW51bSBTb3VyY2VUeXBlIHtcblxuICAvLyBhbGwgc2hlZXRzIGluIHRoZSB3b3JrYm9va1xuICBTVF9BbGwgPSAnYWxsJyxcblxuICAvLyBhbGwgc2hlZXRzIHJlZmVyZW5jaW5nIGEgZ2l2ZW4gZGF0YXNvdXJjZVxuICBTVF9EYXRhc291cmNlID0gJ2RhdGFzb3VyY2UnLFxuXG4gIC8vIHdvcmtzaGVldCBvciBkYXNoYm9hcmRcbiAgU1RfU2hlZXQgPSAnc2hlZXQnXG59XG5cbi8vIGhvdyBhbiBhY3Rpb24gZ2V0cyBhY3RpdmF0ZWRcbmV4cG9ydCBlbnVtIEFjdGl2YXRpb25NZXRob2Qge1xuXG4gIC8vIGUuZy4gYnkgcGlja2luZyBhbiBvcHRpb24gZnJvbSBhIGNvbnRleHQgbWVudVxuICBBTV9FeHBsaWNpdCA9ICdleHBsaWNpdGx5JyxcblxuICAvLyBhdXRvIGFjdGl2YXRlZCB3aGVuIG1hcmtzIGFyZSBzZWxlY3RlZFxuICBBTV9PblNlbGVjdCA9ICdvbi1zZWxlY3QnLFxuXG4gIC8vIGF1dG8gYWN0aXZhdGVkIHdoZW4gdGhlIHVzZXIgbW92ZXMgdGhlIG1vdXNlIG92ZXIgYSBtYXJrXG4gIEFNX09uSG92ZXIgPSAnb24taG92ZXInXG59XG5cbi8vIHdoZXRoZXIgYW4gYWN0aW9uIHNob3VsZCBiZSBydW4gd2hlbiBzZWxlY3Rpb24gaXMgY2xlYXJlZFxuZXhwb3J0IGVudW0gT25DbGVhciB7XG5cbiAgLy8gZG8gbm90aGluZywgZS5nLiBsZWF2ZSBmaWx0ZXIgaW4gcGxhY2VcbiAgT0NfTm90aGluZyA9ICdub3RoaW5nJyxcblxuICAvLyBzaG93IGFsbCB2YWx1ZXNcbiAgT0NfU2hvd0FsbCA9ICdzaG93LWFsbCcsXG5cbiAgLy8gZXhjbHVkZSBldmVyeXRoaW5nXG4gIE9DX0V4Y2x1ZGVBbGwgPSAnZXhjbHVkZS1hbGwnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gTWVyZ2VPclNwbGl0IHtcblxuICAvLyBcbiAgTU9TX01FUkdFID0gJ21lcmdlJyxcblxuICAvLyBcbiAgTU9TX1NQTElUID0gJ3NwbGl0J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIE1hcmtMYXlvdXRQcmltaXRpdmUge1xuXG4gIC8vIFxuICBTaGFwZVByaW1pdGl2ZSA9ICdzaGFwZScsXG5cbiAgLy8gXG4gIExpbmVQcmltaXRpdmUgPSAnbGluZScsXG5cbiAgLy8gXG4gIEJhclByaW1pdGl2ZSA9ICdiYXInLFxuXG4gIC8vIFxuICBQb2xhckJhclByaW1pdGl2ZSA9ICdwb2xhci1iYXInLFxuXG4gIC8vIFxuICBUZXh0UHJpbWl0aXZlID0gJ3RleHQnLFxuXG4gIC8vIFxuICBMYWJlbFByaW1pdGl2ZSA9ICdsYWJlbCcsXG5cbiAgLy8gXG4gIFBpZVByaW1pdGl2ZSA9ICdwaWUnLFxuXG4gIC8vIFxuICBBcmVhUHJpbWl0aXZlID0gJ2FyZWEnLFxuXG4gIC8vIFxuICBQb2x5Z29uUHJpbWl0aXZlID0gJ3BvbHlnb24nLFxuXG4gIC8vIFxuICBNdWx0aXBvbHlnb25QcmltaXRpdmUgPSAnbXVsdGlwb2x5Z29uJyxcblxuICAvLyBcbiAgU3F1YXJlUHJpbWl0aXZlID0gJ3NxdWFyZSdcbn1cblxuLy8gRG9lcyB0aGUgUGFuZVR5cGUvUHJpbWl0aXZlVHlwZS9MYXlvdXRUeXBlIHRyaXBsZXQgcmVzdWx0IGluIHZlcnkgc3BlY2lmaWMgbGF5b3V0IHJ1bGVzP1xuZXhwb3J0IGVudW0gTWFya0xheW91dFZpelR5cGUge1xuXG4gIC8vIE5vIHNwZWNpYWwgcnVsZXNcbiAgU3RhbmRhcmQgPSAnc3RhbmRhcmQnLFxuXG4gIC8vIEdlbmVyaWMgT08gU3RhY2tlZCBydWxlc1xuICBPT1N0YWNrZWQgPSAnb28tc3RhY2tlZCcsXG5cbiAgLy8gT08gR2FudHQgU3RhY2tlZCBydWxlc1xuICBHYW50dFN0YWNrZWQgPSAnZ2FudHQtc3RhY2tlZCcsXG5cbiAgLy8gVHJlZW1hcFxuICBUcmVlbWFwID0gJ3RyZWVtYXAnLFxuXG4gIC8vIEJ1YmJsZSBDaGFydCAtLSBPTyBQYWNrZWQgY2lyY2xlcyBvciBzaGFwZXNcbiAgQnViYmxlID0gJ2J1YmJsZScsXG5cbiAgLy8gV29yZGxlXG4gIFdvcmRsZSA9ICd3b3JkbGUnLFxuXG4gIC8vIEhpZ2hsaWdodCBUYWJsZVxuICBIaWdobGlnaHQgPSAnaGlnaGxpZ2h0J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIE1hcmtMYXlvdXRIYW5kbGVTcGVjaWFscyB7XG5cbiAgLy8gXG4gIENhdGVnb3JpY2FsQXhpcyA9ICdjYXRlZ29yaWNhbC1heGlzJyxcblxuICAvLyBcbiAgU2hvd1NwZWNpYWxzID0gJ3Nob3ctc3BlY2lhbHMnLFxuXG4gIC8vIFxuICBPbWl0U3BlY2lhbHMgPSAnb21pdC1zcGVjaWFscycsXG5cbiAgLy8gXG4gIEJyZWFrT25TcGVjaWFscyA9ICdicmVhay1vbi1zcGVjaWFscydcbn1cblxuLy8gXG5leHBvcnQgZW51bSBNYXJrTGF5b3V0TWFya0ZsYWcge1xuXG4gIC8vIG1hcmsgZG9lcyBub3QgY29ubmVjdCB0byB0aGUgbmV4dCBtYXJrXG4gIEVuZCA9ICdlbmQnLFxuXG4gIC8vIGxhc3QgbWFyayBpbiBhIG11bHRpLXByaW1pdGl2ZVxuICBFbmRQcmltaXRpdmUgPSAnZW5kcHJpbWl0aXZlJyxcblxuICAvLyBsYXN0IG1hcmsgaGFzIGFuIGVkZ2UgY29ubmVjdG9yIHRvIGZpcnN0IG1hcmtcbiAgQ2xvc2VkUHJpbWl0aXZlID0gJ2Nsb3NlZHByaW1pdGl2ZScsXG5cbiAgLy8gdmlzdWFsIG1hcmtlciBzaG91bGQgYmUgZGlzcGxheWVkXG4gIE1hcmtlZCA9ICdtYXJrZWQnLFxuXG4gIC8vIHZpc3VhbCBtYXJrZXIgc2hvdWxkIGJlIGRpc3BsYXllZCBpZiBsYWJlbGxlZFxuICBNYXJrZWRJZkxhYmVsID0gJ21hcmtlZGlmbGFiZWwnLFxuXG4gIC8vIGRpc3BsYXkgZGVidWcgaW5mb3JtYXRpb25cbiAgRGVidWcgPSAnZGVidWcnLFxuXG4gIC8vIHVzZXIgZmxhZ3MgY2FuIGJlZ2luIGhlcmVcbiAgVXNlciA9ICd1c2VyJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIE1hcmtMYXlvdXRQYW5lRmxhZyB7XG5cbiAgLy8gQWxsb3dzIHNjZW5lIHRvIGJlIHBhbm5lZCBpbiB0aGUgWCBkaXJlY3Rpb25cbiAgRW5hYmxlUGFuWCA9ICdlbmFibGUtcGFuLXgnLFxuXG4gIC8vIEFsbG93cyBzY2VuZSB0byBiZSBwYW5uZWQgaW4gdGhlIFkgZGlyZWN0aW9uXG4gIEVuYWJsZVBhblkgPSAnZW5hYmxlLXBhbi15JyxcblxuICAvLyBBbGxvd3MgdGhlIHBvc2l0aW9ucyBvZiBtYXJrcyB0byBiZSBzY2FsZWQgaW4gdGhlIFggZGlyZWN0aW9uIGFzIHRoZSB2aWV3IGlzIHpvb21lZFxuICBFbmFibGVab29tWCA9ICdlbmFibGUtem9vbS14JyxcblxuICAvLyBBbGxvd3MgdGhlIHBvc2l0aW9ucyBvZiBtYXJrcyB0byBiZSBzY2FsZWQgaW4gdGhlIFkgZGlyZWN0aW9uIGFzIHRoZSB2aWV3IGlzIHpvb21lZFxuICBFbmFibGVab29tWSA9ICdlbmFibGUtem9vbS15JyxcblxuICAvLyBBbGxvd3MgdGhlIHNpemUgb2YgbWFya3MgdG8gYmUgc2NhbGVkIGluIHRoZSBYIGRpcmVjdGlvbiBhcyB0aGUgdmlldyBpcyB6b29tZWQ7IHJlcXVpcmVzIHdpZHRoIGluIGRvbWFpbiBjb29yZGluYXRlc1xuICBFbmFibGVTY2FsZVggPSAnZW5hYmxlLXNjYWxlLXgnLFxuXG4gIC8vIEFsbG93cyB0aGUgc2l6ZSBvZiBtYXJrcyB0byBiZSBzY2FsZWQgaW4gdGhlIFkgZGlyZWN0aW9uIGFzIHRoZSB2aWV3IGlzIHpvb21lZDsgcmVxdWlyZXMgaGVpZ2h0IGluIGRvbWFpbiBjb29yZGluYXRlc1xuICBFbmFibGVTY2FsZVkgPSAnZW5hYmxlLXNjYWxlLXknLFxuXG4gIC8vIENsaXAgdG8gY2VsbCBib3JkZXJzIGluIHRoZSB4IGRpcmVjdGlvblxuICBDbGlwVG9DZWxsWCA9ICdjbGlwLXRvLWNlbGwteCcsXG5cbiAgLy8gQ2xpcCB0byBjZWxsIGJvcmRlcnMgaW4gdGhlIHkgZGlyZWN0aW9uXG4gIENsaXBUb0NlbGxZID0gJ2NsaXAtdG8tY2VsbC15JyxcblxuICAvLyBVc2UgY2VsbCBjbGlwcGluZyBmb3Igc2VsZWN0aW9uXG4gIENsaXBUb0NlbGxGb3JTZWxlY3Rpb24gPSAnY2xpcC10by1jZWxsLWZvci1zZWxlY3Rpb24nLFxuXG4gIC8vIFRoZSB4LWF4aXMgaXMgb24gdG9wIG9mIHBhbmVcbiAgWEF4aXNPblRvcCA9ICd4LWF4aXMtb24tdG9wJyxcblxuICAvLyBUaGUgeS1heGlzIGlzIG9uIHRoZSByaWdodCBvZiBwYW5lXG4gIFlBeGlzT25SaWdodCA9ICd5LWF4aXMtb24tcmlnaHQnLFxuXG4gIC8vIFRoZSBwYW5lIGhhcyBjZWxscyBpbiB0aGUgeCBheGlzXG4gIEhhc0NlbGxzWCA9ICdoYXMtY2VsbHMteCcsXG5cbiAgLy8gVGhlIHBhbmUgaGFzIGNlbGxzIGluIHRoZSB5IGF4aXNcbiAgSGFzQ2VsbHNZID0gJ2hhcy1jZWxscy15J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIE1hcmtMYXlvdXREcm9wTGluZUZsYWcge1xuXG4gIC8vIFNob3cgZHJvcCBsaW5lcyBvbiBzZWxlY3RlZCBtYXJrXG4gIERyb3BMaW5lU2hvd1NlbGVjdGVkID0gJ2Ryb3BsaW5lLXNob3ctc2VsZWN0ZWQnLFxuXG4gIC8vIFNob3cgZHJvcCBsaW5lcyBvbiBhbGwgbWFya3NcbiAgRHJvcExpbmVTaG93QWxsID0gJ2Ryb3BsaW5lLXNob3ctYWxsJyxcblxuICAvLyBEcm9wIGxpbmUgdG8geC1heGlzXG4gIERyb3BMaW5lWCA9ICdkcm9wbGluZS14JyxcblxuICAvLyBEcm9wIGxpbmUgdG8geS1heGlzXG4gIERyb3BMaW5lWSA9ICdkcm9wbGluZS15JyxcblxuICAvLyBTaG93IGxhYmVscyBvbiBkcm9wIGxpbmVzXG4gIERyb3BMaW5lTGFiZWxzID0gJ2Ryb3BsaW5lLWxhYmVscydcbn1cblxuLy8gSWRlbnRpZmllcyB0aGUgb2Zmc2V0IGZvciBhIHBhcnRpY3VsYXIgdGFibGUgaW4gdGhlIGFycmF5IG9mIHRhYmxlcyBpbiBQRE1hcmtzUHJlc01vZGVsXG5leHBvcnQgZW51bSBNYXJrTGF5b3V0RGF0YVRhYmxlSUQge1xuXG4gIC8vIFRoZSB0YWJsZSB0aGF0IGNvbnRhaW5zIHRoZSBtYXJrIGluZm9ybWF0aW9uXG4gIE1hcmtUYWJsZSA9ICdtYXJrLXRhYmxlJyxcblxuICAvLyBUaGUgdGFibGUgdGhhdCBjb250YWlucyB0ZXh0IHJ1bnMgZm9yIHRleHQgbWFya3MgYW5kIGxhYmVsc1xuICBUZXh0UnVuVGFibGUgPSAndGV4dC1ydW4tdGFibGUnLFxuXG4gIC8vIFRoZSB0YWJsZSB0aGF0IGNvbnRhaW5zIHRleHQgc3R5bGVzIGZvciBlYWNoIHRleHQgcnVuLlxuICBUZXh0U3R5bGVUYWJsZSA9ICd0ZXh0LXN0eWxlLXRhYmxlJ1xufVxuXG4vLyBXaGljaCBsYWJlbGluZyBhbGdvcml0aG0gc2hvdWxkIGJlIHVzZWQ/ICBDbG9zZWx5IHJlbGF0ZWQgdG8gTWFya0xheW91dDo6Vml6VHlwZVxuZXhwb3J0IGVudW0gTGFiZWxMYXlvdXRUeXBlIHtcblxuICAvLyBObyBsYWJlbHNcbiAgTEFCRUxfTEFZT1VUX05PTkUgPSAndW5sYWJlbGVkJyxcblxuICAvLyBUcmVlbWFwIC0gbGFiZWxzIGluc2lkZSB0aGUgcmVjdGFuZ2xlc1xuICBMQUJFTF9MQVlPVVRfVFJFRU1BUCA9ICd0cmVlbWFwLWxhYmVscycsXG5cbiAgLy8gQnViYmxlIENoYXJ0IC0gbGFiZWxzIGluc2lkZSB0aGUgc2hhcGVzXG4gIExBQkVMX0xBWU9VVF9CVUJCTEVDSEFSVCA9ICdidWJibGUtbGFiZWxzJyxcblxuICAvLyBTY2F0dGVycGxvdCAtIGR5bmFtaWMgYmVzdC1maXQgbGFiZWxzXG4gIExBQkVMX0xBWU9VVF9TQ0FUVEVSUExPVCA9ICdzY2F0dGVycGxvdC1sYWJlbHMnLFxuXG4gIC8vIFN0YW5kYXJkIGxhYmVsaW5nXG4gIExBQkVMX0xBWU9VVF9TVEFOREFSRCA9ICdzdGFuZGFyZC1sYWJlbHMnLFxuXG4gIC8vIEhpZ2hsaWdodCB0YWJsZVxuICBMQUJFTF9MQVlPVVRfSElHSExJR0hUX1RBQkxFID0gJ2hpZ2hsaWdodC10YWJsZS1sYWJlbHMnXG59XG5cbi8vIE1hcmtMYXllciByZXByZXNlbnRzIHRoZSBsYXllcnMgb2YgYSBtYXJrIGdpdmVuIHRoZSB2YXJpb3VzIHN0YXRlc1xuZXhwb3J0IGVudW0gTWFya0xheWVyIHtcblxuICAvLyBcbiAgTm9ybWFsVW5kZXIgPSAnbm9ybWFsVW5kZXInLFxuXG4gIC8vIFxuICBOb3JtYWxPbiA9ICdub3JtYWxPbicsXG5cbiAgLy8gXG4gIFNlbGVjdGVkVW5kZXIgPSAnc2VsZWN0ZWRVbmRlcicsXG5cbiAgLy8gXG4gIFNlbGVjdGVkT24gPSAnc2VsZWN0ZWRPbicsXG5cbiAgLy8gXG4gIEhpZ2hsaWdodGVkVW5kZXIgPSAnaGlnaGxpZ2h0ZWRVbmRlcicsXG5cbiAgLy8gXG4gIEhpZ2hsaWdodGVkT24gPSAnaGlnaGxpZ2h0ZWRPbicsXG5cbiAgLy8gXG4gIEVkZ2VVbmRlciA9ICdlZGdlVW5kZXInLFxuXG4gIC8vIFxuICBFZGdlT24gPSAnZWRnZU9uJyxcblxuICAvLyBcbiAgQm9yZGVyID0gJ2JvcmRlcicsXG5cbiAgLy8gXG4gIFNlbGVjdGVkVW5kZXIxID0gJ3NlbGVjdGVkVW5kZXIxJyxcblxuICAvLyBcbiAgU2VsZWN0ZWRPbjEgPSAnc2VsZWN0ZWRPbjEnLFxuXG4gIC8vIFxuICBVblNlbGVjdGVkQ3VzdG9tU2hhcGUgPSAndW5TZWxlY3RlZEN1c3RvbVNoYXBlJyxcblxuICAvLyBcbiAgTm9ybWFsQWxwaGFNYXNrID0gJ25vcm1hbEFscGhhTWFzaycsXG5cbiAgLy8gXG4gIEhhbG9BbHBoYU1hc2sgPSAnaGFsb0FscGhhTWFzaycsXG5cbiAgLy8gXG4gIEhpZ2hsaWdodGVkVW5kZXIxID0gJ2hpZ2hsaWdodGVkVW5kZXIxJyxcblxuICAvLyBcbiAgSGlnaGxpZ2h0ZWRPbjEgPSAnaGlnaGxpZ2h0ZWRPbjEnLFxuXG4gIC8vIFxuICBTZWxlY3RlZEVkZ2VVbmRlciA9ICdzZWxlY3RlZEVkZ2VVbmRlcicsXG5cbiAgLy8gXG4gIEJsb2JVbmRlciA9ICdibG9iVW5kZXInLFxuXG4gIC8vIFxuICBCbG9iT24gPSAnYmxvYk9uJyxcblxuICAvLyBcbiAgSG92ZXJPdmVybGF5ID0gJ2hvdmVyT3ZlcmxheScsXG5cbiAgLy8gXG4gIFByZXNzZWRPdmVybGF5ID0gJ3ByZXNzZWRPdmVybGF5J1xufVxuXG4vLyBDb2xvck92ZXJyaWRlTW9kZSByZXByZXNlbnRzIHRoZSBkaWZmZXJlbnQgd2F5cyBpbiB3aGljaCBtYXJrIGNvbG9ycyBtYXkgYmUgbW9kaWZpZWQuXG5leHBvcnQgZW51bSBDb2xvck92ZXJyaWRlTW9kZSB7XG5cbiAgLy8gXG4gIENvbG9yT3ZlcnJpZGVOb25lID0gJ2NvbG9yT3ZlcnJpZGVOb25lJyxcblxuICAvLyBcbiAgQ29sb3JPdmVycmlkZUZvZyA9ICdjb2xvck92ZXJyaWRlRm9nJyxcblxuICAvLyBcbiAgQ29sb3JPdmVycmlkZU9wYXF1ZSA9ICdjb2xvck92ZXJyaWRlT3BhcXVlJyxcblxuICAvLyBcbiAgQ29sb3JPdmVycmlkZVJlcGxhY2VBbHBoYSA9ICdjb2xvck92ZXJyaWRlUmVwbGFjZUFscGhhJyxcblxuICAvLyBcbiAgQ29sb3JPdmVycmlkZUNvdW50ID0gJ2NvbG9yT3ZlcnJpZGVDb3VudCdcbn1cblxuLy8gQ29sb3JUcmFuc2Zvcm1Nb2RlIHJlcHJlc2VudHMgdGhlIGRpZmZlcmVudCB3YXlzIGluIHdoaWNoIG1hcmsgY29sb3JzIG1heSBiZSBtb2RpZmllZC5cbmV4cG9ydCBlbnVtIENvbG9yVHJhbnNmb3JtTW9kZSB7XG5cbiAgLy8gXG4gIENvbG9yVHJhbnNmb3JtTm9uZSA9ICdjb2xvclRyYW5zZm9ybU5vbmUnLFxuXG4gIC8vIFxuICBDb2xvclRyYW5zZm9ybUZvZyA9ICdjb2xvclRyYW5zZm9ybUZvZycsXG5cbiAgLy8gXG4gIENvbG9yVHJhbnNmb3JtT3BhcXVlID0gJ2NvbG9yVHJhbnNmb3JtT3BhcXVlJyxcblxuICAvLyBcbiAgQ29sb3JUcmFuc2Zvcm1PdmVycmlkZUNvbG9yID0gJ2NvbG9yVHJhbnNmb3JtT3ZlcnJpZGVDb2xvcicsXG5cbiAgLy8gXG4gIENvbG9yVHJhbnNmb3JtT3ZlcnJpZGVBbHBoYSA9ICdjb2xvclRyYW5zZm9ybU92ZXJyaWRlQWxwaGEnXG59XG5cbi8vIE1hcmtTdGF0ZSByZXByZXNlbnRzIHZhbGlkIHN0YXRlcyBmb3IgYSBtYXJrLlxuZXhwb3J0IGVudW0gTWFya1N0YXRlIHtcblxuICAvLyBcbiAgTWFya1N0YXRlTm9ybWFsID0gJ21hcmtTdGF0ZU5vcm1hbCcsXG5cbiAgLy8gXG4gIE1hcmtTdGF0ZUhpZ2hsaWdodGVkID0gJ21hcmtTdGF0ZUhpZ2hsaWdodGVkJyxcblxuICAvLyBcbiAgTWFya1N0YXRlU2VsZWN0ZWQgPSAnbWFya1N0YXRlU2VsZWN0ZWQnLFxuXG4gIC8vIFxuICBNYXJrU3RhdGVJbnZpc2libGUgPSAnbWFya1N0YXRlSW52aXNpYmxlJ1xufVxuXG4vLyBMaW5lU3RhdGUgcmVwcmVzZW50cyB2YWxpZCBzdGF0ZXMgZm9yIGEgbGluZSBtdWx0aS1tYXJrLlxuZXhwb3J0IGVudW0gTGluZVN0YXRlIHtcblxuICAvLyBcbiAgTGluZVN0YXRlTm9ybWFsID0gJ2xpbmVTdGF0ZU5vcm1hbCcsXG5cbiAgLy8gXG4gIExpbmVTdGF0ZUhpZ2hsaWdodGVkID0gJ2xpbmVTdGF0ZUhpZ2hsaWdodGVkJyxcblxuICAvLyBcbiAgTGluZVN0YXRlU2VsZWN0ZWQgPSAnbGluZVN0YXRlU2VsZWN0ZWQnXG59XG5cbi8vIFJlbmRlclBhc3MgcmVwcmVzZW50cyBlYWNoIHBhc3Mgb3ZlciB0aGUgc2NlbmUgZWxlbWVudHMgYXMgZWFjaCBsYXllciBpcyByZW5kZXJlZC5cbmV4cG9ydCBlbnVtIFJlbmRlclBhc3Mge1xuXG4gIC8vIFxuICBOb3JtYWxVbmRlclBhc3MgPSAnbm9ybWFsVW5kZXJQYXNzJyxcblxuICAvLyBcbiAgTm9ybWFsT25QYXNzID0gJ25vcm1hbE9uUGFzcycsXG5cbiAgLy8gXG4gIEhpZ2hsaWdodGVkVW5kZXJQYXNzID0gJ2hpZ2hsaWdodGVkVW5kZXJQYXNzJyxcblxuICAvLyBcbiAgSGlnaGxpZ2h0ZWRPblBhc3MgPSAnaGlnaGxpZ2h0ZWRPblBhc3MnLFxuXG4gIC8vIFxuICBTZWxlY3RlZFVuZGVyUGFzcyA9ICdzZWxlY3RlZFVuZGVyUGFzcycsXG5cbiAgLy8gXG4gIFNlbGVjdGVkT25QYXNzID0gJ3NlbGVjdGVkT25QYXNzJyxcblxuICAvLyBcbiAgUmVuZGVyUGFzc0NvdW50ID0gJ3JlbmRlclBhc3NDb3VudCdcbn1cblxuLy8gVGhlIHJvbGUgYXNzb2NpYXRlZCB3aXRoIGEgc2NlbmUgZWxlbWVudC4gVGhpcyBhbGxvd3MgdGhlIGRyYXcgb3JkZXJpbmcgdG8gYmUgbW9yZSBlZmZpY2llbnQuXG5leHBvcnQgZW51bSBFbGVtZW50Um9sZSB7XG5cbiAgLy8gXG4gIE1vZGVsQ29udGFpbmVyUm9sZSA9ICdtb2RlbENvbnRhaW5lclJvbGUnLFxuXG4gIC8vIFxuICBCYWNrZ3JvdW5kUm9sZSA9ICdiYWNrZ3JvdW5kUm9sZScsXG5cbiAgLy8gXG4gIFVuZGVyTWFya1JvbGUgPSAndW5kZXJNYXJrUm9sZScsXG5cbiAgLy8gXG4gIE1hcmtSb2xlID0gJ21hcmtSb2xlJyxcblxuICAvLyBcbiAgVW5kZXJMYWJlbFJvbGUgPSAndW5kZXJMYWJlbFJvbGUnLFxuXG4gIC8vIFxuICBMYWJlbFJvbGUgPSAnbGFiZWxSb2xlJyxcblxuICAvLyBcbiAgRm9yZWdyb3VuZFJvbGUgPSAnZm9yZWdyb3VuZFJvbGUnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gUGF0aEVsZW1lbnQge1xuXG4gIC8vIFxuICBQYXRoTW92ZVRvID0gJ21vdmV0bycsXG5cbiAgLy8gXG4gIFBhdGhMaW5lVG8gPSAnbGluZXRvJyxcblxuICAvLyBcbiAgUGF0aEN1cnZlVG8gPSAnY3VydmV0bydcbn1cblxuLy8gVGhlIHNlcmlhbGl6YXRpb24gaXMgc3RpbGwgZHVwbGljYXRlZCBpbiBKc29uVXRpbHM6OlpvbmVVdGlsczo6Wm9uZU5hbWVzIGFuZCB0eXBlcy5qc1xuZXhwb3J0IGVudW0gWm9uZVR5cGUge1xuXG4gIC8vIFxuICBaVF9JbnZhbGlkID0gJ2ludmFsaWQnLFxuXG4gIC8vIHNlY3Rpb246IG5hbWUgPSB3b3Jrc2hlZXQgbmFtZVxuICBaVF9WaXogPSAndml6JyxcblxuICAvLyBcbiAgWlRfQ29sb3JMZWdlbmQgPSAnY29sb3InLFxuXG4gIC8vIFxuICBaVF9TaGFwZUxlZ2VuZCA9ICdzaGFwZScsXG5cbiAgLy8gXG4gIFpUX1NpemVMZWdlbmQgPSAnc2l6ZScsXG5cbiAgLy8gXG4gIFpUX01hcExlZ2VuZCA9ICdtYXAnLFxuXG4gIC8vIHBhcmFtID0gZmllbGQgbmFtZVxuICBaVF9RdWlja0ZpbHRlciA9ICdmaWx0ZXInLFxuXG4gIC8vIHBhcmFtID0gZmllbGQgbmFtZVxuICBaVF9IaWdobGlnaHRlciA9ICdoaWdobGlnaHRlcicsXG5cbiAgLy8gXG4gIFpUX0N1cnJQYWdlID0gJ2N1cnJlbnQtcGFnZScsXG5cbiAgLy8gc2VjdGlvbjogbmFtZSB1bnVzZWRcbiAgWlRfRW1wdHkgPSAnZW1wdHknLFxuXG4gIC8vIHBhcmFtID0gdGl0bGVcbiAgWlRfVGl0bGUgPSAndGl0bGUnLFxuXG4gIC8vIHBhcmFtID0gdGV4dFxuICBaVF9UZXh0ID0gJ3RleHQnLFxuXG4gIC8vIHBhcmFtID0gZmlsZSBuYW1lXG4gIFpUX0JpdG1hcCA9ICdiaXRtYXAnLFxuXG4gIC8vIHBhcmFtID0gVVJMXG4gIFpUX1dlYiA9ICd3ZWInLFxuXG4gIC8vIHBhcmFtID0gYWRkLWluIGlkXG4gIFpUX0FkZEluID0gJ2FkZC1pbicsXG5cbiAgLy8gXG4gIFpUX0J1dHRvbiA9ICdidXR0b24tb2JqZWN0JyxcblxuICAvLyBwYXJhbSA9IGZpZWxkIG5hbWVcbiAgWlRfUGFyYW1DdHJsID0gJ3BhcmFtY3RybCcsXG5cbiAgLy8gXG4gIFpUX0ZsaXBib2FyZE5hdiA9ICdmbGlwYm9hcmQtbmF2JyxcblxuICAvLyBcbiAgWlRfRmxpcGJvYXJkID0gJ2ZsaXBib2FyZCcsXG5cbiAgLy8gc2VjdGlvbjogbGF5b3V0XG4gIFpUX0xheW91dEJhc2ljID0gJ2xheW91dC1iYXNpYycsXG5cbiAgLy8gXG4gIFpUX0xheW91dEZsb3cgPSAnbGF5b3V0LWZsb3cnLFxuXG4gIC8vIFxuICBaVF9MYXlvdXRGcmVlRm9ybSA9ICdsYXlvdXQtZnJlZS1mb3JtJyxcblxuICAvLyB1c2VkIG9ubHkgZm9yIGVudW0gaXRlcmF0aW9uXG4gIFpUX0VuZCA9ICdlbmQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gQ29udGVudFR5cGUge1xuXG4gIC8vIHNlY3Rpb246IG5hbWUgPSB3b3Jrc2hlZXQgbmFtZVxuICBDVF9WaXogPSAndml6JyxcblxuICAvLyBcbiAgQ1RfQ29sb3JMZWdlbmQgPSAnY29sb3InLFxuXG4gIC8vIFxuICBDVF9TaGFwZUxlZ2VuZCA9ICdzaGFwZScsXG5cbiAgLy8gXG4gIENUX1NpemVMZWdlbmQgPSAnc2l6ZScsXG5cbiAgLy8gXG4gIENUX01hcExlZ2VuZCA9ICdtYXAnLFxuXG4gIC8vIHBhcmFtID0gZmllbGQgbmFtZVxuICBDVF9RdWlja0ZpbHRlciA9ICdmaWx0ZXInLFxuXG4gIC8vIHBhcmFtID0gZmllbGQgbmFtZVxuICBDVF9IaWdobGlnaHRlciA9ICdoaWdobGlnaHRlcicsXG5cbiAgLy8gXG4gIENUX0N1cnJQYWdlID0gJ2N1cnJlbnQtcGFnZScsXG5cbiAgLy8gcGFyYW0gPSBmaWVsZCBuYW1lXG4gIENUX1BhcmFtQ3RybCA9ICdwYXJhbWN0cmwnLFxuXG4gIC8vIHBhcmFtID0gdGl0bGVcbiAgQ1RfVGl0bGUgPSAndGl0bGUnLFxuXG4gIC8vIHBhcmFtID0gdGV4dFxuICBDVF9UZXh0ID0gJ3RleHQnLFxuXG4gIC8vIHBhcmFtID0gZmlsZSBuYW1lXG4gIENUX0JpdG1hcCA9ICdiaXRtYXAnLFxuXG4gIC8vIHBhcmFtID0gVVJMXG4gIENUX1dlYiA9ICd3ZWInLFxuXG4gIC8vIHBhcmFtID0gYWRkLWluIGlkXG4gIENUX0FkZEluID0gJ2FkZC1pbicsXG5cbiAgLy8gXG4gIENUX0J1dHRvbiA9ICdidXR0b24nLFxuXG4gIC8vIFxuICBDVF9GbGlwYm9hcmROYXYgPSAnZmxpcGJvYXJkLW5hdicsXG5cbiAgLy8gXG4gIENUX0ZsaXBib2FyZCA9ICdmbGlwYm9hcmQnLFxuXG4gIC8vIERlbm90ZXMgdGhhdCB0aGlzIHpvbmUgaGFzIG5vIGNvbnRlbnQgYW5kIHRoZXJlZm9yZSBoYXMgYSBtZWFuaW5nZnVsIGxheW91dCB0eXBlXG4gIENUX05vbmUgPSAnY29udGVudC1ub25lJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFpvbmVMYXlvdXRUeXBlIHtcblxuICAvLyBzZWN0aW9uOiBsYXlvdXRcbiAgWkxUX0Jhc2ljID0gJ2Jhc2ljJyxcblxuICAvLyBcbiAgWkxUX0ZyZWVGb3JtID0gJ2ZyZWUtZm9ybScsXG5cbiAgLy8gXG4gIFpMVF9GbG93ID0gJ2Zsb3cnLFxuXG4gIC8vIFxuICBaTFRfRGlzdHJpYnV0ZUV2ZW5seSA9ICdkaXN0cmlidXRlLWV2ZW5seScsXG5cbiAgLy8gXG4gIFpMVF9Ucml2aWFsID0gJ3RyaXZpYWwnXG59XG5cbi8vIFJlY3RhbmxnZXMgaW4gdGhlIGJveCBtb2RlbFxuZXhwb3J0IGVudW0gQm94VHlwZSB7XG5cbiAgLy8gYm91bmRpbmcgcmVjdGFuZ2xlIGluIHRoZSBib3ggbW9kZWxcbiAgQlRfQm91bmRpbmcgPSAnYm91bmRpbmcnLFxuXG4gIC8vIGJvcmRlciByZWN0YW5nbGUgaW4gdGhlIGJveCBtb2RlbCBleGNsdWRpbmcgbWFyZ2luc1xuICBCVF9Cb3JkZXIgPSAnYm9yZGVyJyxcblxuICAvLyBjb250ZW50IHJlYWN0bmFnZSBpbiB0aGUgYm94IG1vZGVsIGV4Y2x1ZGluZyBtYXJnaW5zIHBsdXMgYm9yZGVycyBhbmQgcGFkZGluZ3NcbiAgQlRfQ29udGVudCA9ICdjb250ZW50J1xufVxuXG4vLyBSZXByZXNlbnRzIHRoZSB0eXBlIG9mIGNvbW1hbmQgdG8gYmUgcGVyZm9ybWVkIG9uIHRoZSB6LW9yZGVyIG9mIGEgem9uZVxuZXhwb3J0IGVudW0gTW9kaWZ5Wm9uZVpPcmRlckNvbW1hbmRUeXBlIHtcblxuICAvLyBcbiAgTW9kaWZ5Wm9uZVpPcmRlckNvbW1hbmRGcm9udCA9ICdmcm9udCcsXG5cbiAgLy8gXG4gIE1vZGlmeVpvbmVaT3JkZXJDb21tYW5kQmFjayA9ICdiYWNrJyxcblxuICAvLyBcbiAgTW9kaWZ5Wm9uZVpPcmRlckNvbW1hbmRSZWxhdGl2ZVBvcyA9ICdyZWwtcG9zJ1xufVxuXG4vLyBFbnVtZXJhdGlvbiBvZiB2YWxpZCBob3Jpem9udGFsIGFsaWdubWVudHMgZm9yIHRleHQgcmVnaW9ucy5cbmV4cG9ydCBlbnVtIFRleHRSZWdpb25IQWxpZ24ge1xuXG4gIC8vIFxuICBUSEFfTGVmdCA9ICdoLWFsaWduLWxlZnQnLFxuXG4gIC8vIFxuICBUSEFfQ2VudGVyID0gJ2gtYWxpZ24tY2VudGVyJyxcblxuICAvLyBcbiAgVEhBX1JpZ2h0ID0gJ2gtYWxpZ24tcmlnaHQnLFxuXG4gIC8vIFxuICBUSEFfQXV0b21hdGljID0gJ2gtYWxpZ24tYXV0bydcbn1cblxuLy8gRW51bWVyYXRpb24gb2YgdmFsaWQgdmVydGljYWwgYWxpZ25tZW50cyBmb3IgdGV4dCByZWdpb25zLlxuZXhwb3J0IGVudW0gVGV4dFJlZ2lvblZBbGlnbiB7XG5cbiAgLy8gXG4gIFRWQV9Cb3R0b20gPSAndi1hbGlnbi1ib3R0b20nLFxuXG4gIC8vIFxuICBUVkFfQ2VudGVyID0gJ3YtYWxpZ24tY2VudGVyJyxcblxuICAvLyBcbiAgVFZBX1RvcCA9ICd2LWFsaWduLXRvcCcsXG5cbiAgLy8gXG4gIFRWQV9BdXRvbWF0aWMgPSAndi1hbGlnbi1hdXRvJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEF1dG9Db21wbGV0ZUl0ZW1UeXBlIHtcblxuICAvLyBcbiAgQUNJVF9JbnZhbGlkID0gJ2ludmFsaWQnLFxuXG4gIC8vIFxuICBBQ0lUX0ZpZWxkID0gJ2ZpZWxkJyxcblxuICAvLyBcbiAgQUNJVF9GdW5jdGlvbiA9ICdmdW5jJyxcblxuICAvLyBcbiAgQUNJVF9TZXBhcmF0b3IgPSAnc2VwYXJhdG9yJyxcblxuICAvLyBcbiAgQUNJVF9IZWFkZXIgPSAnaGVhZGVyJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIENhbGN1bGF0aW9uQ29udGV4dCB7XG5cbiAgLy8gXG4gIENDX0NhbGN1bGF0aW9uRGlhbG9nID0gJ2NhbGN1bGF0aW9uLWRpYWxvZycsXG5cbiAgLy8gXG4gIENDX1R5cGVJblBpbGwgPSAndHlwZS1pbi1waWxsJyxcblxuICAvLyBcbiAgQ0NfRmlsdGVyVG9wID0gJ2ZpbHRlci10b3AnLFxuXG4gIC8vIFxuICBDQ19GaWx0ZXJDb25kaXRpb24gPSAnZmlsdGVyLWNvbmRpdGlvbicsXG5cbiAgLy8gXG4gIENDX0pvaW5DYWxjRGlhbG9nID0gJ2pvaW4tY2FsYy1kaWFsb2cnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gRm9yZWNhc3RDb21wb25lbnRUeXBlIHtcblxuICAvLyBcbiAgRm9yZWNhc3RDb21wb25lbnRUeXBlX19FVFNfTk9ORSA9ICdldHMtbm9uZScsXG5cbiAgLy8gXG4gIEZvcmVjYXN0Q29tcG9uZW50VHlwZV9fRVRTX0FERElUSVZFID0gJ2V0cy1hZGRpdGl2ZScsXG5cbiAgLy8gXG4gIEZvcmVjYXN0Q29tcG9uZW50VHlwZV9fRVRTX01VTFRJUExJQ0FUSVZFID0gJ2V0cy1tdWx0aXBsaWNhdGl2ZSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBQcmVkaWN0aW9uSW50ZXJ2YWxBeGlzIHtcblxuICAvLyBcbiAgUElfQVhJU19OT05FID0gJ25vbmUnLFxuXG4gIC8vIFxuICBQSV9BWElTX1ggPSAnYXhpcy14JyxcblxuICAvLyBcbiAgUElfQVhJU19ZID0gJ2F4aXMteSdcbn1cblxuLy8gSW5kaWNhdGVzIHRoZSB0eXBlIG9mIHF1aWNrIGZpbHRlclxuZXhwb3J0IGVudW0gUXVpY2tGaWx0ZXJUeXBlIHtcblxuICAvLyBcbiAgUUZUX1Vua25vd24gPSAndW5rbm93bicsXG5cbiAgLy8gXG4gIFFGVF9RdWFudGl0YXRpdmUgPSAncXVhbnRpdGF0aXZlJyxcblxuICAvLyBcbiAgUUZUX1JlbGF0aXZlRGF0ZSA9ICdyZWxhdGl2ZS1kYXRlJyxcblxuICAvLyBcbiAgUUZUX0hpZXJhcmNoeSA9ICdoaWVyYXJjaHknLFxuXG4gIC8vIFxuICBRRlRfQ2F0ZWdvcmljYWwgPSAnY2F0ZWdvcmljYWwnXG59XG5cbi8vIEluZGljYXRlcyBhIGNhdGVnb3JpY2FsIFVJIGNvbnRyb2xcbmV4cG9ydCBlbnVtIFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxDdHJsIHtcblxuICAvLyBcbiAgUXVpY2tGaWx0ZXJDYXRlZ29yaWNhbEN0cmxfX1FGQ0NfUmVhZG91dCA9ICdyZWFkb3V0JyxcblxuICAvLyBcbiAgUXVpY2tGaWx0ZXJDYXRlZ29yaWNhbEN0cmxfX1FGQ0NfU2xpZGVyID0gJ3NsaWRlcicsXG5cbiAgLy8gXG4gIFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxDdHJsX19RRkNDX1N0ZXBCdG5zID0gJ3N0ZXAtYnV0dG9ucycsXG5cbiAgLy8gXG4gIFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxDdHJsX19RRkNDX0FsbEJ0biA9ICdhbGwtYnV0dG9ucycsXG5cbiAgLy8gXG4gIFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxDdHJsX19RRkNDX0ZpbHRlclN0YXRlID0gJ2ZpbHRlcnN0YXRlLWJ1dHRvbicsXG5cbiAgLy8gXG4gIFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxDdHJsX19RRkNDX1NlYXJjaCA9ICdzZWFyY2gnLFxuXG4gIC8vIFxuICBRdWlja0ZpbHRlckNhdGVnb3JpY2FsQ3RybF9fUUZDQ19Eb21haW4gPSAnZG9tYWluJyxcblxuICAvLyBcbiAgUXVpY2tGaWx0ZXJDYXRlZ29yaWNhbEN0cmxfX1FGQ0NfTW9yZUZld2VyQnV0dG9uID0gJ21vcmVmZXdlci1idXR0b24nLFxuXG4gIC8vIFxuICBRdWlja0ZpbHRlckNhdGVnb3JpY2FsQ3RybF9fUUZDQ19FeGNsdWRlID0gJ2V4Y2x1ZGUnLFxuXG4gIC8vIFxuICBRdWlja0ZpbHRlckNhdGVnb3JpY2FsQ3RybF9fUUZDQ19Nb2RlID0gJ21vZGUnLFxuXG4gIC8vIFxuICBRdWlja0ZpbHRlckNhdGVnb3JpY2FsQ3RybF9fUUZDQ19MZXZlbHMgPSAnbGV2ZWxzJyxcblxuICAvLyBcbiAgUXVpY2tGaWx0ZXJDYXRlZ29yaWNhbEN0cmxfX1FGQ0NfQXBwbHlCdXR0b24gPSAnYXBwbHktYnV0dG9uJ1xufVxuXG4vLyBJbmRpY2F0ZXMgYSBjYXRlZ29yaWNhbCBtb2RlXG5leHBvcnQgZW51bSBRdWlja0ZpbHRlckNhdGVnb3JpY2FsTW9kZSB7XG5cbiAgLy8gXG4gIFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxNb2RlX19RRkNNX0NoZWNrTGlzdCA9ICdjaGVjay1saXN0JyxcblxuICAvLyBcbiAgUXVpY2tGaWx0ZXJDYXRlZ29yaWNhbE1vZGVfX1FGQ01fUmFkaW9MaXN0ID0gJ3JhZGlvLWxpc3QnLFxuXG4gIC8vIFxuICBRdWlja0ZpbHRlckNhdGVnb3JpY2FsTW9kZV9fUUZDTV9Ecm9wZG93biA9ICdkcm9wZG93bicsXG5cbiAgLy8gXG4gIFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxNb2RlX19RRkNNX1NsaWRlciA9ICdzbGlkZXInLFxuXG4gIC8vIFxuICBRdWlja0ZpbHRlckNhdGVnb3JpY2FsTW9kZV9fUUZDTV9QYXR0ZXJuID0gJ3BhdHRlcm4nLFxuXG4gIC8vIFxuICBRdWlja0ZpbHRlckNhdGVnb3JpY2FsTW9kZV9fUUZDTV9UeXBlSW5MaXN0ID0gJ3R5cGUtaW4tbGlzdCcsXG5cbiAgLy8gXG4gIFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxNb2RlX19RRkNNX0NoZWNrRHJvcGRvd24gPSAnY2hlY2stZHJvcGRvd24nLFxufVxuXG4vLyBJbmRpY2F0ZXMgYSBxdWFudGl0YXRpdmUgVUkgY29udHJvbFxuZXhwb3J0IGVudW0gUXVpY2tGaWx0ZXJRdWFudGl0YXRpdmVDdHJsIHtcblxuICAvLyBcbiAgUXVpY2tGaWx0ZXJRdWFudGl0YXRpdmVDdHJsX19RRlFDX1JlYWRvdXRzID0gJ3JlYWRvdXRzJyxcblxuICAvLyBcbiAgUXVpY2tGaWx0ZXJRdWFudGl0YXRpdmVDdHJsX19RRlFDX1NsaWRlciA9ICdzbGlkZXInLFxuXG4gIC8vIFxuICBRdWlja0ZpbHRlclF1YW50aXRhdGl2ZUN0cmxfX1FGUUNfTnVsbEN0cmxzID0gJ251bGwtY29udHJvbHMnLFxuXG4gIC8vIFxuICBRdWlja0ZpbHRlclF1YW50aXRhdGl2ZUN0cmxfX1FGUUNfUmVsZGF0ZVBpY2tlciA9ICdyZWwtZGF0ZS1waWNrZXInLFxuXG4gIC8vIFxuICBRdWlja0ZpbHRlclF1YW50aXRhdGl2ZUN0cmxfX1FGUUNfRG9tYWluID0gJ2RvbWFpbicsXG5cbiAgLy8gXG4gIFF1aWNrRmlsdGVyUXVhbnRpdGF0aXZlQ3RybF9fUUZRQ19Nb3JlRmV3ZXJCdXR0b24gPSAnbW9yZWZld2VyLWJ1dHRvbicsXG5cbiAgLy8gXG4gIFF1aWNrRmlsdGVyUXVhbnRpdGF0aXZlQ3RybF9fUUZRQ19GaWx0ZXJTdGF0ZSA9ICdmaWx0ZXJzdGF0ZS1idXR0b24nXG59XG5cbi8vIEluZGljYXRlcyBhIHF1YW50aXRhdGl2ZSBtb2RlXG5leHBvcnQgZW51bSBRdWlja0ZpbHRlclF1YW50aXRhdGl2ZU1vZGUge1xuXG4gIC8vIFxuICBRdWlja0ZpbHRlclF1YW50aXRhdGl2ZU1vZGVfX1FGUU1fTWluTWF4ID0gJ21pbi1tYXgnLFxuXG4gIC8vIFxuICBRdWlja0ZpbHRlclF1YW50aXRhdGl2ZU1vZGVfX1FGUU1fTWluT25seSA9ICdtaW4tb25seScsXG5cbiAgLy8gXG4gIFF1aWNrRmlsdGVyUXVhbnRpdGF0aXZlTW9kZV9fUUZRTV9NYXhPbmx5ID0gJ21heC1vbmx5JyxcblxuICAvLyBcbiAgUXVpY2tGaWx0ZXJRdWFudGl0YXRpdmVNb2RlX19RRlFNX1JlbERhdGUgPSAncmVsLWRhdGUnLFxuXG4gIC8vIFxuICBRdWlja0ZpbHRlclF1YW50aXRhdGl2ZU1vZGVfX1FGUU1fUmVsUGljayA9ICdyZWwtcGljaydcbn1cblxuLy8gV2hlcmUgaXMgcmVuZGVyaW5nIGhhcHBlbmluZyAtIGNsaWVudCBvciBzZXJ2ZXJcbmV4cG9ydCBlbnVtIFJlbmRlck1vZGUge1xuXG4gIC8vIFxuICBSZW5kZXJNb2RlU2VydmVyID0gJ3JlbmRlci1tb2RlLXNlcnZlcicsXG5cbiAgLy8gXG4gIFJlbmRlck1vZGVDbGllbnQgPSAncmVuZGVyLW1vZGUtY2xpZW50J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEFkZE9yUmVtb3ZlTWFya3Mge1xuXG4gIC8vIFxuICBBT1JNX0FERCA9ICdhZGQnLFxuXG4gIC8vIFxuICBBT1JNX1JFTU9WRSA9ICdyZW1vdmUnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gVmlzdWFsRG9jRW51bXNHZW9TZWFyY2hWaXNpYmlsaXR5IHtcblxuICAvLyBcbiAgR1NWX09uID0gJ29uJyxcblxuICAvLyBcbiAgR1NWX09mZiA9ICdvZmYnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gVmlzdWFsRG9jRW51bXNNYXBTY2FsZVZpc2liaWxpdHkge1xuXG4gIC8vIFxuICBNU1ZfT24gPSAnb24nLFxuXG4gIC8vIFxuICBNU1ZfT2ZmID0gJ29mZidcbn1cblxuLy8gXG5leHBvcnQgZW51bSBWaXN1YWxEb2NFbnVtc0F1dG9EcmlsbFZpc2liaWxpdHkge1xuXG4gIC8vIFxuICBBRFZfT24gPSAnb24nLFxuXG4gIC8vIFxuICBBRFZfT2ZmID0gJ29mZidcbn1cblxuLy8gXG5leHBvcnQgZW51bSBWaXN1YWxEb2NFbnVtc01hcFRvb2xTZWxlY3Rpb24ge1xuXG4gIC8vIFxuICBNVF9QYW5fTWFwID0gJ3Bhbi1tYXAnLFxuXG4gIC8vIFxuICBNVF9SZWN0YW5ndWxhcl9TZWxlY3Rpb24gPSAncmVjdGFuZ3VsYXItc2VsZWN0aW9uJyxcblxuICAvLyBcbiAgTVRfUmFkaWFsX1NlbGVjdGlvbiA9ICdyYWRpYWwtc2VsZWN0aW9uJyxcblxuICAvLyBcbiAgTVRfWm9vbV9JbiA9ICd6b29tLWluJyxcblxuICAvLyBcbiAgTVRfWm9vbV9PdXQgPSAnem9vbS1vdXQnLFxuXG4gIC8vIFxuICBNVF9TaW5nbGVfU2VsZWN0aW9uID0gJ3NpbmdsZS1zZWxlY3Rpb24nLFxuXG4gIC8vIFxuICBNVF9MYXNzb19TZWxlY3Rpb24gPSAnbGFzc28tc2VsZWN0aW9uJyxcblxuICAvLyBcbiAgTVRfQWxsX1NlbGVjdGlvbl9Ub29scyA9ICdhbGwtc2VsZWN0aW9uLXRvb2xzJyxcblxuICAvLyBcbiAgTVRfQXJlYV9ab29tID0gJ2FyZWEtem9vbScsXG5cbiAgLy8gXG4gIE1UX05vX1Rvb2xzID0gJ25vLXRvb2xzJyxcblxuICAvLyBcbiAgTVRfQWR2YW5jZWRfU2VsZWN0aW9uX1Rvb2xzID0gJ2FkdmFuY2VkLXNlbGVjdGlvbi10b29scycsXG5cbiAgLy8gXG4gIE1UX01hcF9Ub29scyA9ICdtYXAtdG9vbHMnLFxuXG4gIC8vIFxuICBNVF9Ob25fTWFwX1Rvb2xzID0gJ25vbi1tYXAtdG9vbHMnLFxuXG4gIC8vIFxuICBNVF9Ub29sX01hc2sgPSAndG9vbC1tYXNrJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFZpc3VhbERvY0VudW1zRmxvYXRpbmdUb29sYmFyVmlzaWJpbGl0eSB7XG5cbiAgLy8gXG4gIEZUVl9BdXRvID0gJ2F1dG8nLFxuXG4gIC8vIFxuICBGVFZfU2hvdyA9ICdzaG93JyxcblxuICAvLyBcbiAgRlRWX0hpZGUgPSAnaGlkZSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBWaXN1YWxEb2NFbnVtc1Zpek5hdmlnYXRpb25TZXR0aW5nIHtcblxuICAvLyBcbiAgTkFWX0F1dG8gPSAnYXV0bycsXG5cbiAgLy8gXG4gIE5BVl9GaXhlZCA9ICdmaXhlZCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBWaXN1YWxEb2NFbnVtc1pvb21UeXBlIHtcblxuICAvLyBcbiAgUGVyY2VudCA9ICdwZXJjZW50JyxcblxuICAvLyBcbiAgRW50aXJlVmlldyA9ICdlbnRpcmUtdmlldycsXG5cbiAgLy8gXG4gIEZpdFdpZHRoID0gJ2ZpdC13aWR0aCcsXG5cbiAgLy8gXG4gIEZpdEhlaWdodCA9ICdmaXQtaGVpZ2h0J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFNoZWV0U2Nyb2xsRGlyZWN0aW9uIHtcblxuICAvLyBzY3JvbGwtZmlyc3RcbiAgU2hlZXRTY3JvbGxGaXJzdCA9ICdzY3JvbGwtZmlyc3QnLFxuXG4gIC8vIHNjcm9sbC1wcmV2XG4gIFNoZWV0U2Nyb2xsUHJldiA9ICdzY3JvbGwtcHJldicsXG5cbiAgLy8gc2Nyb2xsLW5leHRcbiAgU2hlZXRTY3JvbGxOZXh0ID0gJ3Njcm9sbC1uZXh0JyxcblxuICAvLyBzY3JvbGwtbGFzdFxuICBTaGVldFNjcm9sbExhc3QgPSAnc2Nyb2xsLWxhc3QnXG59XG5cbi8vIGFnZ3JlZ2F0aW9uIHR5cGUgZm9yIHBlcnNwZWN0aXZlc1xuZXhwb3J0IGVudW0gUGVyc3BlY3RpdmVVdGlsc0FnZ3JlZ2F0ZVR5cGUge1xuXG4gIC8vIFxuICBSRUFMSVRZID0gJ3JlYWxpdHknLFxuXG4gIC8vIFxuICBGSVJTVCA9ICdmaXJzdC10aW1lLWluLWN1YmUnLFxuXG4gIC8vIFxuICBMQVNUID0gJ2xhdGVzdC10aW1lLWluLWN1YmUnLFxuXG4gIC8vIFxuICBDVVNUT01fRk9SX0NVQkUgPSAnY3VzdG9tLWZvci1jdWJlJyxcblxuICAvLyBcbiAgQ1VTVE9NX1BFUl9BVFRSSUJVVEUgPSAnY3VzdG9tLXBlci1hdHRyaWJ1dGUnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gWm9uZUVkZ2VNb3ZlIHtcblxuICAvLyBcbiAgRWRnZURyYWcgPSAnZWRnZS1kcmFnJyxcblxuICAvLyBcbiAgRWRnZVNuYXBBbGlnbiA9ICdlZGdlLXNuYXAtYWxpZ24nLFxuXG4gIC8vIFxuICBFZGdlU25hcFBvc2l0aW9uID0gJ2VkZ2Utc25hcC1wb3NpdGlvbidcbn1cblxuLy8gXG5leHBvcnQgZW51bSBGb3JtYXRDb250cm9sVHlwZSB7XG5cbiAgLy8gXG4gIEZDVF9OT05FID0gJ2ZjdC1ub25lJyxcblxuICAvLyBcbiAgRkNUX0NvbG9yID0gJ2ZjdC1jb2xvcicsXG5cbiAgLy8gXG4gIEZDVF9Gb250ID0gJ2ZjdC1mb250JyxcblxuICAvLyBcbiAgRkNUX0JvcmRlciA9ICdmY3QtYm9yZGVyJyxcblxuICAvLyBcbiAgRkNUX1N0cm9rZSA9ICdmY3Qtc3Ryb2tlJyxcblxuICAvLyBcbiAgRkNUX051bWJlciA9ICdmY3QtbnVtYmVyJyxcblxuICAvLyBcbiAgRkNUX0xheW91dCA9ICdmY3QtbGF5b3V0JyxcblxuICAvLyBcbiAgRkNUX1RleHQgPSAnZmN0LXRleHQnLFxuXG4gIC8vIFxuICBGQ1RfT3B0Q29sb3IgPSAnZmN0LW9wdGNvbG9yJyxcblxuICAvLyBcbiAgRkNUX0JhbmRDb2xvciA9ICdmY3QtYmFuZGNvbG9yJyxcblxuICAvLyBcbiAgRkNUX0JhbmRTaXplID0gJ2ZjdC1iYW5kc2l6ZScsXG5cbiAgLy8gXG4gIEZDVF9CYW5kTGV2ZWwgPSAnZmN0LWJhbmRsZXZlbCcsXG5cbiAgLy8gXG4gIEZDVF9EaXZMZXZlbCA9ICdmY3QtZGl2bGV2ZWwnLFxuXG4gIC8vIFxuICBGQ1RfU3BlY1ZhbHNUZXh0ID0gJ2ZjdC1zcGVjdmFsc3RleHQnLFxuXG4gIC8vIFxuICBGQ1RfU3BlY1ZhbHNHcmFwaCA9ICdmY3Qtc3BlY3ZhbHNncmFwaCcsXG5cbiAgLy8gXG4gIEZDVF9IQWxpZ24gPSAnZmN0LWhhbGlnbicsXG5cbiAgLy8gXG4gIEZDVF9PcmllbnQgPSAnZmN0LW9yaWVudCcsXG5cbiAgLy8gXG4gIEZDVF9Sb3VuZGluZyA9ICdmY3Qtcm91bmRpbmcnLFxuXG4gIC8vIFxuICBGQ1RfTGluZUVuZCA9ICdmY3QtbGluZWVuZCcsXG5cbiAgLy8gXG4gIEZDVF9MaW5lRW5kU2l6ZSA9ICdmY3QtbGluZWVuZHNpemUnLFxuXG4gIC8vIFxuICBGQ1RfQm9keVR5cGUgPSAnZmN0LWJvZHl0eXBlJyxcblxuICAvLyBcbiAgRkNUX0FscGhhTGV2ZWwgPSAnZmN0LWFscGhhbGV2ZWwnLFxuXG4gIC8vIFxuICBGQ1RfTGluZUludGVycG9sYXRpb24gPSAnZmN0LWxpbmUtaW50ZXJwb2xhdGlvbicsXG5cbiAgLy8gXG4gIEZDVF9MaW5lTWFya2VyUG9zaXRpb24gPSAnZmN0LWxpbmUtbWFya2VyLXBvc2l0aW9uJyxcblxuICAvLyBcbiAgRkNUX01hcmtCb3JkZXIgPSAnZmN0LW1hcmtib3JkZXInLFxuXG4gIC8vIFxuICBGQ1RfTWFya0hhbG8gPSAnZmN0LW1hcmtoYWxvJyxcblxuICAvLyBcbiAgRkNUX01hcmtNYXJrZXJzID0gJ2ZjdC1tYXJrbWFya2VycycsXG5cbiAgLy8gXG4gIEZDVF9SZWZMaW5lUGFsZXR0ZSA9ICdmY3QtcmVmbGluZXBhbGV0dGUnLFxuXG4gIC8vIFxuICBGQ1RfUmV2ZXJzZSA9ICdmY3QtcmV2ZXJzZScsXG5cbiAgLy8gXG4gIEZDVF9XaGlza2VycyA9ICdmY3Qtd2hpc2tlcnMnLFxuXG4gIC8vIFxuICBGQ1RfQm94cGxvdFBhbGV0dGUgPSAnZmN0LWJveHBsb3RwYWxldHRlJyxcblxuICAvLyBcbiAgRkNUX1NvbGlkU3Ryb2tlID0gJ2ZjdC1zb2xpZHN0cm9rZScsXG5cbiAgLy8gXG4gIEZDVF9Cb3hwbG90U3R5bGUgPSAnZmN0LWJveHBsb3RzdHlsZScsXG5cbiAgLy8gXG4gIEZDVF9Cb3hwbG90Q29tcG91bmRGaWxsID0gJ2ZjdC1ib3hwbG90Y29tcG91bmRmaWxsJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEZvcm1hdENvbnRyb2xGbGFnIHtcblxuICAvLyBcbiAgRkNGX1Zpc3VhbFN0eWxlc2hlZXQgPSAnZmNmX3Zpc3VhbHN0eWxlc2hlZXQnLFxuXG4gIC8vIFxuICBGQ0ZfUGFuZVN0eWxlc2hlZXQgPSAnZmNmX3BhbmVzdHlsZXNoZWV0JyxcblxuICAvLyBcbiAgRkNGX0ZpeGVkU2NvcGUgPSAnZmNmX2ZpeGVkc2NvcGUnLFxuXG4gIC8vIFxuICBGQ0ZfQWxsb3dUcmFuc3BhcmVuY3kgPSAnZmNmX2FsbG93dHJhbnNwYXJlbmN5J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEFwcENvbmZpZ0VudW0ge1xuXG4gIC8vIGRlZmF1bHQgZGlyZWN0b3J5IHdoZXJlIFRhYmxlYXUgZmluZHMgZGF0YSBzb3VyY2VzLCBsb2dzLCBzaGFwZXMsIGV0Yy5cbiAgQUNTX1JlcG9zaXRvcnlEaXIgPSAncmVwb3NpdG9yeS1kaXInLFxuXG4gIC8vIGFwcGxpY2F0aW9uIGRpcmVjdG9yeVxuICBBQ1NfQXBwbGljYXRpb25EaXIgPSAnYXBwbGljYXRpb24tZGlyJyxcblxuICAvLyBzYW1wbGUgd29ya2Jvb2tzIGRpcmVjdG9yeVxuICBBQ1NfU2FtcGxlc0RpciA9ICdzYW1wbGVzLWRpcidcbn1cblxuLy8gXG5leHBvcnQgZW51bSBEZWx0YVR5cGUge1xuXG4gIC8vIFxuICBERUxUQV9OT05FID0gJ25vbmUnLFxuXG4gIC8vIFxuICBERUxUQV9BRERFRCA9ICdhZGRlZCcsXG5cbiAgLy8gXG4gIERFTFRBX0VESVRFRCA9ICdlZGl0ZWQnLFxuXG4gIC8vIFxuICBERUxUQV9SRU1PVkVEID0gJ3JlbW92ZWQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gRXh0cmFjdFR5cGUge1xuXG4gIC8vIFxuICBFeHRyYWN0VHlwZV9BbGwgPSAnZXh0cmFjdC10eXBlLWFsbCcsXG5cbiAgLy8gXG4gIEV4dHJhY3RUeXBlX1NvbWUgPSAnZXh0cmFjdC10eXBlLXNvbWUnLFxuXG4gIC8vIFxuICBFeHRyYWN0VHlwZV9Ob25lID0gJ2V4dHJhY3QtdHlwZS1ub25lJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEV4dHJhY3RSZWZyZXNoU3RhdHVzIHtcblxuICAvLyBcbiAgRXh0cmFjdFJlZnJlc2hfTm9uZSA9ICdleHRyYWN0LXJlZnJlc2gtbm9uZScsXG5cbiAgLy8gXG4gIEV4dHJhY3RSZWZyZXNoX1BlbmRpbmcgPSAnZXh0cmFjdC1yZWZyZXNoLXBlbmRpbmcnLFxuXG4gIC8vIFxuICBFeHRyYWN0UmVmcmVzaF9JblByb2dyZXNzID0gJ2V4dHJhY3QtcmVmcmVzaC1pbnByb2dyZXNzJyxcblxuICAvLyBcbiAgRXh0cmFjdFJlZnJlc2hfRG9uZSA9ICdleHRyYWN0LXJlZnJlc2gtZG9uZScsXG5cbiAgLy8gXG4gIEV4dHJhY3RSZWZyZXNoX0Vycm9yID0gJ2V4dHJhY3QtcmVmcmVzaC1lcnJvcicsXG5cbiAgLy8gXG4gIEV4dHJhY3RSZWZyZXNoX0NhbmNlbGVkID0gJ2V4dHJhY3QtcmVmcmVzaC1jYW5jZWxlZCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBNYXBVbml0U2VsZWN0aW9uRW51bSB7XG5cbiAgLy8gXG4gIE1VU19BdXRvbWF0aWMgPSAnYXV0b21hdGljJyxcblxuICAvLyBcbiAgTVVTX01ldHJpYyA9ICdtZXRyaWMnLFxuXG4gIC8vIFxuICBNVVNfVVMgPSAndXMnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gRGF0YUNvbm5lY3Rpb25IaXN0b3J5UmVmcmVzaFR5cGUge1xuXG4gIC8vIFxuICBSVF9GVUxMID0gJ2Z1bGwnLFxuXG4gIC8vIFxuICBSVF9JTkNSRU1FTlQgPSAnaW5jcmVtZW50JyxcblxuICAvLyBcbiAgUlRfQVBQRU5EX0ZST01fREFUQV9TT1VSQ0UgPSAnYXBwZW5kLWZyb20tZGF0YS1zb3VyY2UnLFxuXG4gIC8vIFxuICBSVF9BUFBFTkRfRlJPTV9GSUxFID0gJ2FwcGVuZC1mcm9tLWZpbGUnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gQ2FsY1N0eWxlIHtcblxuICAvLyBcbiAgU0NFX1NUWUxFX0RFRkFVTFQgPSAnc3R5bGVfZGVmYXVsdCcsXG5cbiAgLy8gXG4gIFNDRV9TVFlMRV9QUklNQVJZX0ZJRUxEID0gJ3N0eWxlX3ByaW1fZmllbGQnLFxuXG4gIC8vIFxuICBTQ0VfU1RZTEVfU0VDT05EQVJZX0ZJRUxEID0gJ3N0eWxlX3NlY19maWVsZCcsXG5cbiAgLy8gXG4gIFNDRV9TVFlMRV9MT0NBTF9GVU5DVElPTiA9ICdzdHlsZV9sb2NhbF9mdW5jJyxcblxuICAvLyBcbiAgU0NFX1NUWUxFX1JFTU9URV9GVU5DVElPTiA9ICdzdHlsZV9yZW1vdGVfZnVuYycsXG5cbiAgLy8gXG4gIFNDRV9TVFlMRV9QQVJBTUVURVIgPSAnc3R5bGVfcGFyYW0nLFxuXG4gIC8vIFxuICBTQ0VfU1RZTEVfQ09NTUVOVCA9ICdzdHlsZV9jb21tZW50JyxcblxuICAvLyBcbiAgU0NFX1NUWUxFX0lOVkFMSURfRklFTEQgPSAnc3R5bGVfaW52YWxpZF9maWVsZCcsXG5cbiAgLy8gXG4gIFNDRV9TVFlMRV9UQUJMRV9FWFBSID0gJ3N0eWxlX3RhYmxlX2V4cHInLFxuXG4gIC8vIFxuICBTQ0VfU1RZTEVfU1RSSU5HID0gJ3N0eWxlX3N0cmluZycsXG5cbiAgLy8gXG4gIFNDRV9TVFlMRV9ESVNBQkxFRCA9ICdzdHlsZV9kaXNhYmxlZCcsXG5cbiAgLy8gXG4gIFNDRV9TVFlMRV9EUkFHX09WRVJfRklFTEQgPSAnc3R5bGVfZHJhZ19vdmVyX2ZpZWxkJyxcblxuICAvLyBcbiAgU0NFX1NUWUxFX0RSQUdfT1ZFUl9TRUwgPSAnc3R5bGVfZHJhZ19vdmVyX3NlbCcsXG5cbiAgLy8gXG4gIFNDRV9TVFlMRV9TRUxFQ1RJT04gPSAnc3R5bGVfc2VsZWN0aW9uJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEZ1bmN0aW9uR3JvdXAge1xuXG4gIC8vIFxuICBGR19OVU1FUklDID0gJ251bScsXG5cbiAgLy8gXG4gIEZHX1NUUklORyA9ICdzdHInLFxuXG4gIC8vIFxuICBGR19EQVRFID0gJ2RhdGUnLFxuXG4gIC8vIFxuICBGR19DQVNUID0gJ2Nhc3QnLFxuXG4gIC8vIFxuICBGR19MT0dJQ0FMID0gJ2xvZ2ljJyxcblxuICAvLyBcbiAgRkdfQUdHUkVHQVRFID0gJ2FnZycsXG5cbiAgLy8gXG4gIEZHX09QRVJBVE9SID0gJ29wZXInLFxuXG4gIC8vIFxuICBGR19TWVNURU0gPSAnc3lzJyxcblxuICAvLyBcbiAgRkdfUEFTU1RIUlUgPSAncGFzcycsXG5cbiAgLy8gXG4gIEZHX1NQRUNJQUwgPSAnc3BlYycsXG5cbiAgLy8gXG4gIEZHX1VTRVIgPSAndXNlcicsXG5cbiAgLy8gXG4gIEZHX1RBQkxFQ0FMQyA9ICd0YWJsZSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBGdW5jdGlvbkFyZ1R5cGUge1xuXG4gIC8vIFxuICBGQVRfTk9ORSA9ICdub25lJyxcblxuICAvLyBcbiAgRkFUX0JPT0wgPSAnYm9vbGVhbicsXG5cbiAgLy8gXG4gIEZBVF9SRUFMID0gJ3JlYWwnLFxuXG4gIC8vIFxuICBGQVRfSU5UID0gJ2ludGVnZXInLFxuXG4gIC8vIFxuICBGQVRfU1RSID0gJ3N0cicsXG5cbiAgLy8gXG4gIEZBVF9EQVRFVElNRSA9ICdkYXRldGltZScsXG5cbiAgLy8gXG4gIEZBVF9EQVRFID0gJ2RhdGUnLFxuXG4gIC8vIFxuICBGQVRfTE9DQUxTVFIgPSAnbG9jc3RyJyxcblxuICAvLyBcbiAgRkFUX05VTEwgPSAnbmlsJyxcblxuICAvLyBcbiAgRkFUX0VSUk9SID0gJ2VycicsXG5cbiAgLy8gXG4gIEZBVF9BTlkgPSAnYW55JyxcblxuICAvLyBcbiAgRkFUX0JJTiA9ICdiaW4nLFxuXG4gIC8vIFxuICBGQVRfVFVQTEUgPSAndHVwJyxcblxuICAvLyBcbiAgRkFUX0xPQ0FMUkVBTCA9ICdsb2NyZWFsJyxcblxuICAvLyBcbiAgRkFUX0xPQ0FMSU5UID0gJ2xvY2ludCcsXG5cbiAgLy8gXG4gIEZBVF9TUEFUSUFMID0gJ3NwYXRpYWwnXG59XG5cbi8vIGxvZ2ljYWwgcG9zaXRpb24gb2YgYWN0aXZpdHkgc3VjaCBhcyBCZWdhbiBvciBFbmRlZFxuZXhwb3J0IGVudW0gQWN0aXZpdHlEaXNwb3NpdGlvbiB7XG5cbiAgLy8gbm8gYWN0aXZpdHlcbiAgTm9EaXNwb3NpdGlvbiA9ICduby1kaXNwb3NpdGlvbicsXG5cbiAgLy8gYWN0aXZpdHkgaGFzIGJlZ2FuXG4gIEJlZ2FuID0gJ2JlZ2FuJyxcblxuICAvLyBhY3Rpdml0eSBoYXMgZW5kZWRcbiAgRW5kZWQgPSAnZW5kZWQnLFxuXG4gIC8vIGFjdGl2aXR5IGhhcyBvY2N1cnJlZCBidXQgbmVpdGhlciBiZWdhbiBub3IgZW5kZWQgaXMga25vd25cbiAgT2NjdXJyZWQgPSAnb2NjdXJyZWQnLFxuXG4gIC8vIGluZGVmaW5pdGUgYWN0aXZpdHkgaXMgZXhlY3V0aW5nXG4gIEFjdGl2ZSA9ICdhY3RpdmUnLFxuXG4gIC8vIGluZGVmaW5pdGUgYWN0aXZpdHkgaGFzIHlpZWxkZWQgKGUuZy4sIGlkbGUsIHdhaXRpbmcsIHNsZWVwaW5nLCBxdWllc2NlKVxuICBJZGxlID0gJ2lkbGUnXG59XG5cbi8vIHJlc3VsdCBvZiBhY3Rpdml0eSBzdWNoIGFzIFN1Y2Nlc3MgYW5kIEZhaWx1cmVcbmV4cG9ydCBlbnVtIEFjdGl2aXR5UmVzdWx0IHtcblxuICAvLyBhY3Rpdml0eSBoYXMgbm8gcmVzdWx0XG4gIE5vUmVzdWx0ID0gJ25vLXJlc3VsdCcsXG5cbiAgLy8gYWN0aXZpdHkgZW5kZWQgd2l0aCBzdWNjZXNzXG4gIFN1Y2NlZWRlZCA9ICdzdWNjZWVkZWQnLFxuXG4gIC8vIGFjdGl2aXR5IGVuZGVkIHdpdGggZmFpbHVyZVxuICBGYWlsZWQgPSAnZmFpbHVyZScsXG5cbiAgLy8gYWN0aXZpdHkgZW5kZWQgd2l0aCB0aHJvd24gZXhjZXB0aW9uXG4gIFRocmV3RXhjZXB0aW9uID0gJ3RocmV3LWV4Y2VwdGlvbicsXG5cbiAgLy8gYWN0aXZpdHkgZW5kZWQgZHVlIHRvIGEgdGltZW91dFxuICBUaW1lZE91dCA9ICd0aW1lZC1vdXQnLFxuXG4gIC8vIGFjdGl2aXR5IHdhcyBjYW5jZWxlZFxuICBDYW5jZWxlZCA9ICdjYW5jZWxlZCcsXG5cbiAgLy8gYWN0aXZpdHkgaGFzIHVua25vd24gcmVzdWx0XG4gIFVua25vd25SZXN1bHQgPSAndW5rbm93bi1yZXN1bHQnXG59XG5cbi8vIHR5cGUgb2YgYW5hbHl0aWNzIG9iamVjdFxuZXhwb3J0IGVudW0gQW5hbHl0aWNzT2JqZWN0VHlwZSB7XG5cbiAgLy8gXG4gIENvbnN0YW50UmVmZXJlbmNlTGluZSA9ICdjb25zdGFudC1yZWZlcmVuY2UtbGluZScsXG5cbiAgLy8gXG4gIEF2ZXJhZ2VSZWZlcmVuY2VMaW5lID0gJ2F2ZXJhZ2UtcmVmZXJlbmNlLWxpbmUnLFxuXG4gIC8vIFxuICBDdXN0b21SZWZlcmVuY2VMaW5lID0gJ2N1c3RvbS1yZWZlcmVuY2UtbGluZScsXG5cbiAgLy8gXG4gIEN1c3RvbVJlZmVyZW5jZUJhbmQgPSAnY3VzdG9tLXJlZmVyZW5jZS1iYW5kJyxcblxuICAvLyBcbiAgQXZlcmFnZUFuZE5pbmV0eUZpdmUgPSAnYXZlcmFnZS1hbmQtbmluZXR5LWZpdmUnLFxuXG4gIC8vIFxuICBNZWRpYW5BbmROaW5ldHlGaXZlID0gJ21lZGlhbi1hbmQtbmluZXR5LWZpdmUnLFxuXG4gIC8vIFxuICBDdXN0b21EaXN0cmlidXRpb25CYW5kID0gJ2N1c3RvbS1kaXN0cmlidXRpb24tYmFuZCcsXG5cbiAgLy8gXG4gIEJveHBsb3QgPSAnYm94cGxvdCcsXG5cbiAgLy8gXG4gIEN1c3RvbUJveHBsb3QgPSAnY3VzdG9tLWJveHBsb3QnLFxuXG4gIC8vIFxuICBUb3RhbHMgPSAndG90YWxzJyxcblxuICAvLyBcbiAgVHJlbmRMaW5lT2JqZWN0ID0gJ3RyZW5kLWxpbmUtb2JqZWN0JyxcblxuICAvLyBcbiAgRm9yZWNhc3QgPSAnZm9yZWNhc3QnLFxuXG4gIC8vIFxuICBDbHVzdGVyID0gJ2NsdXN0ZXInLFxuXG4gIC8vIFxuICBPdXRsaWVyID0gJ291dGxpZXInLFxuXG4gIC8vIFxuICBNZWRpYW5BbmRRdWFydGlsZXMgPSAnbWVkaWFuLWFuZC1xdWFydGlsZXMnLFxuXG4gIC8vIFxuICBVbmtub3duID0gJ3Vua25vd24nXG59XG5cbi8vIHRhcmdldCB3aGVyZSBhbiBhbmFseXRpY3Mgb2JqZWN0IG1heSBiZSBkcm9wcGVkXG5leHBvcnQgZW51bSBBbmFseXRpY3NPYmplY3REcm9wVGFyZ2V0IHtcblxuICAvLyBcbiAgVGFyZ2V0Q2VsbCA9ICd0YXJnZXQtY2VsbCcsXG5cbiAgLy8gXG4gIFRhcmdldFBhbmUgPSAndGFyZ2V0LXBhbmUnLFxuXG4gIC8vIFxuICBUYXJnZXRUYWJsZSA9ICd0YXJnZXQtdGFibGUnLFxuXG4gIC8vIFxuICBUYXJnZXRMaW5lYXIgPSAndGFyZ2V0LWxpbmVhcicsXG5cbiAgLy8gXG4gIFRhcmdldExvZyA9ICd0YXJnZXQtbG9nJyxcblxuICAvLyBcbiAgVGFyZ2V0RXhwb25lbnRpYWwgPSAndGFyZ2V0LWV4cG9uZW50aWFsJyxcblxuICAvLyBcbiAgVGFyZ2V0UG9seW5vbWlhbCA9ICd0YXJnZXQtcG9seW5vbWlhbCcsXG5cbiAgLy8gXG4gIFRhcmdldFBvd2VyID0gJ3RhcmdldC1wb3dlcicsXG5cbiAgLy8gXG4gIFRhcmdldEZvcmVjYXN0ID0gJ3RhcmdldC1mb3JlY2FzdCcsXG5cbiAgLy8gXG4gIFRhcmdldENsdXN0ZXIgPSAndGFyZ2V0LWNsdXN0ZXInLFxuXG4gIC8vIFxuICBUYXJnZXRPdXRsaWVyID0gJ3RhcmdldC1vdXRsaWVyJyxcblxuICAvLyBcbiAgVGFyZ2V0U3VidG90YWxzID0gJ3RhcmdldC1zdWJ0b3RhbHMnLFxuXG4gIC8vIFxuICBUYXJnZXRDb2x1bW5Ub3RhbHMgPSAndGFyZ2V0LWNvbHVtbi10b3RhbHMnLFxuXG4gIC8vIFxuICBUYXJnZXRSb3dUb3RhbHMgPSAndGFyZ2V0LXJvdy10b3RhbHMnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gQ2FsY0FwcGx5UmVzdWx0IHtcblxuICAvLyBjYXB0aW9uIGZvciBuZXcgY2FsY3VsYXRpb24gaXMgaW52YWxpZFxuICBJTlZBTElEX0NBUFRJT04gPSAnaW52YWxpZC1jYXB0aW9uLWZvci1uZXctY2FsYycsXG5cbiAgLy8gZm9ybXVsYSBpcyBpbnZhbGlkXG4gIElOVkFMSURfRk9STVVMQSA9ICdpbnZhbGlkLWZvcm11bGEnLFxuXG4gIC8vIHN1Y2Nlc3NmdWxseSBhcHBsaWVkXG4gIFNVQ0NFRUQgPSAnc3VjY2VlZCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBVSUF1dG9tYXRpb25Db21tYW5kU3RhdHVzIHtcblxuICAvLyBcbiAgVUlBdXRvbWF0aW9uQ29tbWFuZFN0YXR1c19TdWNjZXNzID0gJ3N1Y2Nlc3MnLFxuXG4gIC8vIFxuICBVSUF1dG9tYXRpb25Db21tYW5kU3RhdHVzX1Vuc3VwcG9ydGVkQ29udHJvbFR5cGVFcnJvciA9ICd1bnN1cHBvcnRlZC1jb250cm9sLXR5cGUtZXJyb3InLFxuXG4gIC8vIFxuICBVSUF1dG9tYXRpb25Db21tYW5kU3RhdHVzX1Vuc3VwcG9ydGVkQWN0aW9uRXJyb3IgPSAndW5zdXBwb3J0ZWQtYWN0aW9uLWVycm9yJyxcblxuICAvLyBcbiAgVUlBdXRvbWF0aW9uQ29tbWFuZFN0YXR1c19Db21wb25lbnROb3RGb3VuZEVycm9yID0gJ2NvbXBvbmVudC1ub3QtZm91bmQtZXJyb3InLFxuXG4gIC8vIFxuICBVSUF1dG9tYXRpb25Db21tYW5kU3RhdHVzX1Vua25vd25FcnJvciA9ICd1bmtub3duLWVycm9yJyxcblxuICAvLyBcbiAgVUlBdXRvbWF0aW9uQ29tbWFuZFN0YXR1c19TYXZlRXJyb3IgPSAnc2F2ZS1lcnJvcicsXG5cbiAgLy8gXG4gIFVJQXV0b21hdGlvbkNvbW1hbmRTdGF0dXNfQmFkSW5wdXRFcnJvciA9ICdiYWQtaW5wdXQtZXJyb3InXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gRHJvcFdoZW4ge1xuXG4gIC8vIFxuICBEcm9wV2hlbk5ldmVyID0gJ25ldmVyJyxcblxuICAvLyBcbiAgRHJvcFdoZW5BbHdheXMgPSAnYWx3YXlzJyxcblxuICAvLyBcbiAgRHJvcFdoZW5TZWxlY3RlZCA9ICd3aGVuLXNlbGVjdGVkJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFZhbHVlRG9tYWluVHlwZSB7XG5cbiAgLy8gaW52YWxpZCBkb21haW5cbiAgRE9NQUlOX0lOVkFMSUQgPSAnZG9tYWluLWludmFsaWQnLFxuXG4gIC8vIHVzZXIgY2FuIHR5cGUgaW4gYW55IHZhbHVlIHRoZXkgcGxlYXNlXCIgMVxuICBET01BSU5fRlJFRV9FTlRSWSA9ICdkb21haW4tZnJlZS1lbnRyeScsXG5cbiAgLy8gdXNlciBtdXN0IHNlbGVjdCBhIHZhbHVlIGZyb20gdGhlIGxpc3RcbiAgRE9NQUlOX0xJU1QgPSAnZG9tYWluLWxpc3QnLFxuXG4gIC8vIHVzZXIgY2FuIGZyZWVseSBlbnRlciB2YWx1ZXMgYXMgbG9uZyBhcyB0aGV5IGFyZSBhYm92ZSBtaW4gdmFsdWVcbiAgRE9NQUlOX01JTiA9ICdkb21haW4tbWluJyxcblxuICAvLyB1c2VyIGNhbiBmcmVlbHkgZW50ZXIgdmFsdWVzIGFzIGxvbmcgYXMgdGhleSBhcmUgYmVsb3cgbWF4IHZhbHVlXG4gIERPTUFJTl9NQVggPSAnZG9tYWluLW1heCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBPcGVyYXRpb25UeXBlIHtcblxuICAvLyBcbiAgRXF1YWxzID0gJ2VxdWFscycsXG5cbiAgLy8gXG4gIE5vdEVxdWFscyA9ICdub3QtZXF1YWxzJyxcblxuICAvLyBcbiAgTGVzc1RoYW4gPSAnbGVzcy10aGFuJyxcblxuICAvLyBcbiAgTGVzc1RoYW5FcXVhbCA9ICdsZXNzLXRoYW4tZXF1YWwnLFxuXG4gIC8vIFxuICBHcmVhdGVyVGhhbiA9ICdncmVhdGVyLXRoYW4nLFxuXG4gIC8vIFxuICBHcmVhdGVyVGhhbkVxdWFsID0gJ2dyZWF0ZXItdGhhbi1lcXVhbCcsXG5cbiAgLy8gXG4gIFJhbmdlSW5jbHVzaXZlID0gJ3JhbmdlLWluY2x1c2l2ZSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBEcm9wRmllbGRSZXN1bHQge1xuXG4gIC8vIFxuICBEcm9wRmllbGRObyA9ICdubycsXG5cbiAgLy8gXG4gIERyb3BGaWVsZFllcyA9ICd5ZXMnLFxuXG4gIC8vIFxuICBEcm9wRmllbGRMb2NrID0gJ2xvY2snLFxuXG4gIC8vIFxuICBEcm9wRmllbGRGaWx0ZXIgPSAnZmlsdGVyJyxcblxuICAvLyBcbiAgRHJvcEZpZWxkRGlzYWdncmVnYXRlID0gJ2Rpc2FnZ3JlZ2F0ZSdcbn1cblxuLy8gcmVzb2x1dGlvbiB0eXBlIGZvciBhIG5hbWUgY29uZmxpY3RcbmV4cG9ydCBlbnVtIE5hbWVDb25mbGljdFJlc29sdXRpb24ge1xuXG4gIC8vIFxuICBOUkNfVXNlT2xkID0gJ3VzZS1vbGQnLFxuXG4gIC8vIFxuICBOUkNfVXNlTmV3ID0gJ3VzZS1uZXcnLFxuXG4gIC8vIFxuICBOUkNfUmVuYW1lTmV3ID0gJ3JlbmFtZS1uZXcnXG59XG5cbi8vIHVzZSBlaXRoZXIgYSBzdHJpbmcgc2VwYXJhdG9yIG9yIGEgc2V0IG51bWJlciBvZiBjaGFyYWN0ZXJzXG5leHBvcnQgZW51bSBTZXBhcmF0b3JUeXBlIHtcblxuICAvLyBcbiAgU2VwYXJhdG9yVHlwZV9fU3RyaW5nU2VwYXJhdG9yID0gJ3N0cmluZy1zZXBhcmF0b3InLFxuXG4gIC8vIFxuICBTZXBhcmF0b3JUeXBlX19DaGFyYWN0ZXJDb3VudFNlcGFyYXRvciA9ICdjaGFyYWN0ZXItY291bnQtc2VwYXJhdG9yJ1xufVxuXG4vLyBzcGxpdCBnbG9iYWxseSBvciBvbmx5IG9uIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9yIG9ubHkgb24gdGhlIGxhc3Qgb2NjdXJyZW5jZVxuZXhwb3J0IGVudW0gU3BsaXRNb2RlIHtcblxuICAvLyBcbiAgU3BsaXRNb2RlX19DU19BTEwgPSAnc3BsaXQtYWxsJyxcblxuICAvLyBcbiAgU3BsaXRNb2RlX19DU19GSVJTVCA9ICdzcGxpdC1maXJzdCcsXG5cbiAgLy8gXG4gIFNwbGl0TW9kZV9fQ1NfTEFTVCA9ICdzcGxpdC1sYXN0J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIE5vZGVTZWxlY3Rpb25UeXBlIHtcblxuICAvLyBcbiAgTm9kZVNlbGVjdGlvbl9Ob25lID0gJ25vbmUnLFxuXG4gIC8vIFxuICBOb2RlU2VsZWN0aW9uX1NpbmdsZVJvdyA9ICdzaW5nbGUtcm93JyxcblxuICAvLyBcbiAgTm9kZVNlbGVjdGlvbl9NdWx0aVJvdyA9ICdtdWx0aS1yb3cnLFxuXG4gIC8vIFxuICBOb2RlU2VsZWN0aW9uX1NpbmdsZUNvbHVtbiA9ICdzaW5nbGUtY29sdW1uJyxcblxuICAvLyBcbiAgTm9kZVNlbGVjdGlvbl9NdWx0aUNvbHVtbiA9ICdtdWx0aS1jb2x1bW4nLFxuXG4gIC8vIFxuICBOb2RlU2VsZWN0aW9uX01peGVkID0gJ21peGVkJ1xufVxuXG4vLyBpY29ucyBmb3IgQWN0aW9ue1NvdXJjZS9EZXN0fUNvbWJvXG5leHBvcnQgZW51bSBTb3VyY2VEZXN0SWNvbiB7XG5cbiAgLy8gXG4gIFNESV9EYXRhU291cmNlID0gJ2RhdGEtc291cmNlJyxcblxuICAvLyBcbiAgU0RJX1dvcmtzaGVldCA9ICd3b3Jrc2hlZXQnLFxuXG4gIC8vIFxuICBTRElfRGFzaGJvYXJkID0gJ2Rhc2hib2FyZCcsXG5cbiAgLy8gXG4gIFNESV9BbGwgPSAnYWxsJ1xufVxuXG4vLyBwb3NpdGlvbiBhbmQgb3JpZW50YXRpb24gb2YgbGVnZW5kcyBvbiBhIHNoZWV0XG5leHBvcnQgZW51bSBMZWdlbmRMYXlvdXQge1xuXG4gIC8vIFxuICBMTF9SaWdodFZlcnRpY2FsID0gJ3JpZ2h0LXZlcnRpY2FsJyxcblxuICAvLyBcbiAgTExfUmlnaHRIb3Jpem9udGFsID0gJ3JpZ2h0LWhvcml6b250YWwnLFxuXG4gIC8vIFxuICBMTF9Cb3R0b21WZXJ0aWNhbCA9ICdib3R0b20tdmVydGljYWwnLFxuXG4gIC8vIFxuICBMTF9Cb3R0b21Ib3Jpem9udGFsID0gJ2JvdHRvbS1ob3Jpem9udGFsJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEdldEpzb25SZXNwb25zZUVudW0ge1xuXG4gIC8vIHRoZSBqc29uIHJlcG9uc2UgZXhpc3RzIGFuZCBpcyB2YWxpZFxuICBKU09OX09LID0gJ29rJyxcblxuICAvLyB0aGUgc2hlZXQgc3BlY2lmaWVkIGlzIG5vdCB2YWxpZFxuICBKU09OX05PX1NIRUVUID0gJ25vLXNoZWV0JyxcblxuICAvLyB0aGUgZmllbGQgaWQgaXMgaW52YWxpZCBmb3IgdGhpcyBmaWx0ZXJcbiAgSlNPTl9JTlZBTElEX0ZJRUxEID0gJ2ludmFsaWQtZmllbGQnXG59XG5cbi8vIGNsaWVudCBtZXRyaWMgZGVzY3JpcHRpb25zXG5leHBvcnQgZW51bSBDbGllbnRNZXRyaWMge1xuXG4gIC8vIFVua25vd24gTWV0cmljXG4gIENNX1Vua25vd24gPSAnVU5LTldOJyxcblxuICAvLyBCb290c3RyYXAgUmVxdWVzdFxuICBDTV9Cb290c3RyYXBSZXF1ZXN0ID0gJ0JUU1RSUCcsXG5cbiAgLy8gUHJvY2VzcyBQcmltYXJ5IFBheWxvYWRcbiAgQ01fUHJvY2Vzc1ByaW1hcnlQYXlsb2FkID0gJ1BST1BSSScsXG5cbiAgLy8gUHJvY2VzcyBTZWNvbmRhcnkgUGF5bG9hZFxuICBDTV9Qcm9jZXNzU2Vjb25kYXJ5UGF5bG9hZCA9ICdQUk9TRUMnLFxuXG4gIC8vIEluaXRpYWxpemUgTW9kZWxzXG4gIENNX0luaXRpYWxpemVNb2RlbHMgPSAnTURMSU5JJyxcblxuICAvLyBIYW5kbGUgTW9kZWwgRXZlbnRzXG4gIENNX0hhbmRsZU1vZGVsRXZlbnRzID0gJ01ETEVWVCcsXG5cbiAgLy8gRXhlY3V0ZSBMb2NhbCBDb21tYW5kXG4gIENNX0V4ZWN1dGVMb2NhbENvbW1hbmQgPSAnRVhFTE9DJyxcblxuICAvLyBFeGVjdXRlIFJlbW90ZSBDb21tYW5kXG4gIENNX0V4ZWN1dGVSZW1vdGVDb21tYW5kID0gJ0VYRVJFTScsXG5cbiAgLy8gUHJvY2VzcyBMb2NhbCBDb21tYW5kIFJlc3BvbnNlXG4gIENNX1Byb2Nlc3NMb2NhbFJlc3BvbnNlID0gJ1BST0xPQycsXG5cbiAgLy8gUHJvY2VzcyBSZW1vdGUgQ29tbWFuZCBSZXNwb25zZVxuICBDTV9Qcm9jZXNzUmVtb3RlUmVzcG9uc2UgPSAnUFJPUkVNJyxcblxuICAvLyBSZW5kZXIgUGFuZXRhYmxlXG4gIENNX1JlbmRlclBhbmV0YWJsZSA9ICdSTkRSUFQnLFxuXG4gIC8vIFJlbmRlciBSZWdpb25cbiAgQ01fUmVuZGVyUmVnaW9uID0gJ1JORFJSRycsXG5cbiAgLy8gUnVudGltZSBtb2RlbCBwcmVzbW9kZWwgY29udmVyc2lvblxuICBDTV9SdW50aW1lQ29udmVyc2lvbiA9ICdSVENPTlYnLFxuXG4gIC8vIENsaWVudCBMb2FkZWRcbiAgQ01fQ2xpZW50TG9hZGVkID0gJ0NMTlRMRCcsXG5cbiAgLy8gQXBwbGljYXRpb24gU3RhcnR1cFxuICBDTV9BcHBsaWNhdGlvblN0YXJ0dXAgPSAnQVBQU1RSJyxcblxuICAvLyBBcHBsaWNhdGlvbiBJbnRlcmFjdGl2ZVxuICBDTV9BcHBsaWNhdGlvbkludGVyYWN0aXZlID0gJ0FQUElOVCcsXG5cbiAgLy8gQWxsIFpvbmVzIExvYWRlZFxuICBDTV9BbGxab25lc0xvYWRlZCA9ICdBTExaTlMnLFxuXG4gIC8vIFRvb2xiYXIgTGF5b3V0XG4gIENNX1Rvb2xiYXJMYXlvdXQgPSAnVEJSTEFZJyxcblxuICAvLyBUb29sYmFyIEhhbmRsZU5ld1Rvb2xiYXJcbiAgQ01fVG9vbGJhckhhbmRsZU5ld1Rvb2xiYXIgPSAnVEJSSE5UJyxcblxuICAvLyBUb29sYmFyIEFkZFRvb2xiYXJcbiAgQ01fVG9vbGJhckFkZFRvb2xiYXIgPSAnVEJSQUREJyxcblxuICAvLyBUb29sYmFyIEhhbmRsZVJlc2l6ZVxuICBDTV9Ub29sYmFySGFuZGxlUmVzaXplID0gJ1RCUkhSRScsXG5cbiAgLy8gSmF2YVNjcmlwdCBNb2R1bGUgbG9hZGVkIGFzeW5jaHJvbm91c2x5XG4gIENNX01vZHVsZUxvYWRlZCA9ICdNRExPQUQnXG59XG5cbi8vIHJlc3VsdCBjb2RlIGZvciBpbWFnZXMgZWRpdCBvcGVyYXRpb25cbmV4cG9ydCBlbnVtIEltYWdlc0VkaXRSZXN1bHRDb2RlIHtcblxuICAvLyBcbiAgSUVSX1N1Y2Nlc3MgPSAnc3VjY2VzcycsXG5cbiAgLy8gXG4gIElFUl9FbXB0eUNhcHRpb24gPSAnZW1wdHktY2FwdGlvbicsXG5cbiAgLy8gXG4gIElFUl9EdXBsaWNhdGVDYXB0aW9uID0gJ2R1cGxpY2F0ZS1jYXB0aW9uJyxcblxuICAvLyBcbiAgSUVSX0ZhaWxlZFZhbGlkYXRpb24gPSAnZmFpbGVkLXZhbGlkYXRpb24nLFxuXG4gIC8vIFxuICBJRVJfSW52YWxpZFVSTCA9ICdpbnZhbGlkLXVybCcsXG5cbiAgLy8gXG4gIElFUl9FbXB0eVhSYW5nZSA9ICdlbXB0eS14LXJhbmdlJyxcblxuICAvLyBcbiAgSUVSX0VtcHR5WVJhbmdlID0gJ2VtcHR5LXktcmFuZ2UnLFxuXG4gIC8vIFxuICBJRVJfTm9JbWFnZVByZXZpZXcgPSAnbm8taW1hZ2UtcHJldmlldycsXG5cbiAgLy8gXG4gIElFUl9SZW5kZXJFeGNlcHRpb24gPSAncmVuZGVyLWV4Y2VwdGlvbicsXG5cbiAgLy8gXG4gIElFUl9UYWJsZWF1RXhjZXB0aW9uID0gJ3RhYmxlYXUtZXhjZXB0aW9uJ1xufVxuXG4vLyB0aGUgc291cmNlIG9mIHRoZSB1bmRlcmx5aW5nIGRhdGEgdXNlZCBieSB0aGUgZGF0YSBwcm92aWRlclxuZXhwb3J0IGVudW0gRGF0YVByb3ZpZGVyVHlwZSB7XG5cbiAgLy8gXG4gIERQX0RhdGFzb3VyY2UgPSAnZGF0YXNvdXJjZScsXG5cbiAgLy8gXG4gIERQX1NlbGVjdGlvbiA9ICdzZWxlY3Rpb24nLFxuXG4gIC8vIFxuICBEUF9FZGl0b3IgPSAnZWRpdG9yJyxcblxuICAvLyBcbiAgRFBfVGFibGUgPSAndGFibGUnLFxuXG4gIC8vIFxuICBEUF9TUUxRdWVyeSA9ICdzcWwtcXVlcnknXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gRGFzaGJvYXJkRGV2aWNlTGF5b3V0IHtcblxuICAvLyBcbiAgRGFzaGJvYXJkRGV2aWNlTGF5b3V0X0RlZmF1bHQgPSAnZGVmYXVsdCcsXG5cbiAgLy8gXG4gIERhc2hib2FyZERldmljZUxheW91dF9EZXNrdG9wID0gJ2Rlc2t0b3AnLFxuXG4gIC8vIFxuICBEYXNoYm9hcmREZXZpY2VMYXlvdXRfVGFibGV0ID0gJ3RhYmxldCcsXG5cbiAgLy8gXG4gIERhc2hib2FyZERldmljZUxheW91dF9QaG9uZSA9ICdwaG9uZSdcbn1cblxuLy8gd2hvIGlzIGNhbGxpbmcgdGhlIGRldmljZSBkZXRlY3Rpb24gbG9naWNcbmV4cG9ydCBlbnVtIERldmljZVNvdXJjZSB7XG5cbiAgLy8gTm90aGluZyBzcGVjaWFsIGFib3V0IHRoZSBjYWxsZXIgdG8gdGhlIGRldGVjdGlvbiBsb2dpYy4gVGhpcyBtZWFucyBpdCBpcyB0aGUgd2ViIGJyb3dzZXIuXG4gIERldmljZVNvdXJjZV9Vbmtub3duID0gJ3Vua25vd24nLFxuXG4gIC8vIHRoZSBzbmFwc2hvdCBzZXJ2aWNlIGZvciB0aGUgbW9iaWxlIGFwcFxuICBEZXZpY2VTb3VyY2VfU25hcHNob3RTZXJ2aWNlID0gJ3NuYXBzaG90LXNydicsXG5cbiAgLy8gdGhlIDpkZXZpY2UgdXJsIHBhcmFtZXRlclxuICBEZXZpY2VTb3VyY2VfVXJsUGFyYW0gPSAndXJsLXBhcmFtJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIERhc2hib2FyZFNpemluZ0RpbWVuc2lvbiB7XG5cbiAgLy8gXG4gIE5vRGltZW5zaW9uID0gJ25vJyxcblxuICAvLyBcbiAgTWluV2lkdGhEaW1lbnNpb24gPSAnbWlud2lkdGgnLFxuXG4gIC8vIFxuICBNaW5IZWlnaHREaW1lbnNpb24gPSAnbWluaGVpZ2h0JyxcblxuICAvLyBcbiAgTWF4V2lkdGhEaW1lbnNpb24gPSAnbWF4d2lkdGgnLFxuXG4gIC8vIFxuICBNYXhIZWlnaHREaW1lbnNpb24gPSAnbWF4aGVpZ2h0JyxcblxuICAvLyBcbiAgRml4ZWRXaWR0aERpbWVuc2lvbiA9ICdmaXhlZHdpZHRoJyxcblxuICAvLyBcbiAgRml4ZWRIZWlnaHREaW1lbnNpb24gPSAnZml4ZWRoZWlnaHQnLFxuXG4gIC8vIFxuICBTY3JvbGxhYmxlSGVpZ2h0RGltZW5zaW9uID0gJ3Njcm9sbGFibGVoZWlnaHQnLFxuXG4gIC8vIFxuICBNaW5EaW1lbnNpb25zID0gJ21pbnMnLFxuXG4gIC8vIFxuICBNYXhEaW1lbnNpb25zID0gJ21heHMnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gRmxpcGJvYXJkTmF2VHlwZSB7XG5cbiAgLy8gXG4gIENhcHRpb24gPSAnY2FwdGlvbicsXG5cbiAgLy8gXG4gIE51bWJlciA9ICdudW1iZXInLFxuXG4gIC8vIFxuICBEb3QgPSAnZG90JyxcblxuICAvLyBcbiAgQXJyb3dPbmx5ID0gJ2Fycm93b25seSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBEYXNoYm9hcmRTaXppbmdNb2RlIHtcblxuICAvLyBcbiAgVW5zcGVjaWZpZWRTaXppbmcgPSAndW5zcGVjaWZpZWQnLFxuXG4gIC8vIFxuICBBdXRvbWF0aWNTaXppbmcgPSAnYXV0b21hdGljJyxcblxuICAvLyBcbiAgRml4ZWRTaXppbmcgPSAnZml4ZWQnLFxuXG4gIC8vIFxuICBSYW5nZVNpemluZyA9ICdyYW5nZScsXG5cbiAgLy8gXG4gIFZTY3JvbGxTaXppbmcgPSAndnNjcm9sbCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBHcmlkT3ZlcmxheU1vZGUge1xuXG4gIC8vIFxuICBHT01fQXV0b21hdGljID0gJ2dvbS1hdXRvbWF0aWMnLFxuXG4gIC8vIFxuICBHT01fT24gPSAnZ29tLW9uJyxcblxuICAvLyBcbiAgR09NX09mZiA9ICdnb20tb2ZmJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEZpZWxkUGlja2VyRGlhbG9nVXNlQ2FzZSB7XG5cbiAgLy8gXG4gIEZpZWxkUGlja2VyRGlhbG9nVXNlQ2FzZV9SZXBsYWNlRmllbGQgPSAncmVwbGFjZS1maWVsZC11c2UtY2FzZScsXG5cbiAgLy8gXG4gIEZpZWxkUGlja2VyRGlhbG9nVXNlQ2FzZV9DcmVhdGVJZGVudGl0eVNldCA9ICdjcmVhdGUtaWRlbnRpdHktc2V0JyxcblxuICAvLyBcbiAgRmllbGRQaWNrZXJEaWFsb2dVc2VDYXNlX0VkaXREYXRhc3JvdWNlQWxpYXNlcyA9ICdlZGl0LWRhdGFzb3VyY2UtYWxpYXNlcy11c2UtY2FzZScsXG5cbiAgLy8gXG4gIEZpZWxkUGlja2VyRGlhbG9nVXNlQ2FzZV9FZGl0RmlsdGVycyA9ICdlZGl0LWZpbHRlcnMtdXNlLWNhc2UnLFxuXG4gIC8vIFxuICBGaWVsZFBpY2tlckRpYWxvZ1VzZUNhc2VfRXh0cmFjdEZpbHRlciA9ICdpbmNyZW1lbnRhbC1leHRyYWN0LXVzZS1jYXNlJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFNpZGVUeXBlIHtcblxuICAvLyBcbiAgU1RfVG9wID0gJ3RvcCcsXG5cbiAgLy8gXG4gIFNUX1JpZ2h0ID0gJ3JpZ2h0JyxcblxuICAvLyBcbiAgU1RfQm90dG9tID0gJ2JvdHRvbScsXG5cbiAgLy8gXG4gIFNUX0xlZnQgPSAnbGVmdCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBXb3JrZ3JvdXBQdWJsaXNoRXJyb3JUeXBlIHtcblxuICAvLyBcbiAgRUFfTm9uZSA9ICdlYS1ub25lJyxcblxuICAvLyBcbiAgRUFfV2FybmluZyA9ICdlYS13YXJuaW5nJyxcblxuICAvLyBcbiAgRUFfUHJvbXB0ID0gJ2VhLXByb21wdCcsXG5cbiAgLy8gXG4gIEVBX0luZm8gPSAnZWEtaW5mbycsXG5cbiAgLy8gXG4gIEVBX1NlcnZlciA9ICdlYS1zZXJ2ZXInXG59XG5cbi8vIEluZGljYXRlcyB3aGV0aGVyIHRoZSB1c2VyIGhhcyBzaWduZWQgaW4gb3IgaXMgc2lnbmVkIGludG8gYSBzZXJ2ZXJcbmV4cG9ydCBlbnVtIFNlcnZlckNvbm5lY3Rpb25TdGF0dXMge1xuXG4gIC8vIFRoZSB1c2VyIGhhcyBuZXZlciBzaWduZWQgaW5cbiAgTmV2ZXJTaWduZWRJbiA9ICdzZXJ2ZXItY29ubmVjdGlvbi1zdGF0dXMtbmV2ZXItc2lnbmVkLWluJyxcblxuICAvLyBUaGUgdXNlciBoYXMgc2lnbmVkIGluIGF0IGxlYXN0IG9uY2VcbiAgSGFzU2lnbmVkSW4gPSAnc2VydmVyLWNvbm5lY3Rpb25fc3RhdHVzLWhhcy1zaWduZWQtaW4nLFxuXG4gIC8vIEF1dG8gc2lnbiBpbiB3aWxsIGJlIGF0dGVtcHRlZFxuICBXaWxsQXV0b1NpZ25JbiA9ICdzZXJ2ZXItY29ubmVjdGlvbl9zdGF0dXMtd2lsbC1hdXRvLXNpZ24taW4nLFxuXG4gIC8vIFRoZSB1c2VyIGlzIHNpZ25lZCBpblxuICBTaWduZWRJbiA9ICdzZXJ2ZXItY29ubmVjdGlvbl9zdGF0dXMtc2lnbmVkLWluJ1xufVxuXG4vLyBTdGFydCBvZiBXZWVrIChTdGFydGluZyBEYXkpXG5leHBvcnQgZW51bSBTT1dWYWx1ZSB7XG5cbiAgLy8gXG4gIFNPV1ZhbHVlX19TT1dfU1lTVEVNREVGQVVMVCA9ICdzb3ctc3lzdGVtLWRlZmF1bHQnLFxuXG4gIC8vIFxuICBTT1dWYWx1ZV9fU09XXzdEQVlQRVJJT0QgPSAnc293LTctZGF5LXBlcmlvZCcsXG5cbiAgLy8gXG4gIFNPV1ZhbHVlX19TT1dfU1VOREFZID0gJ3Nvdy1zdW5kYXknLFxuXG4gIC8vIFxuICBTT1dWYWx1ZV9fU09XX01PTkRBWSA9ICdzb3ctbW9uZGF5JyxcblxuICAvLyBcbiAgU09XVmFsdWVfX1NPV19UVUVTREFZID0gJ3Nvdy10dWVzZGF5JyxcblxuICAvLyBcbiAgU09XVmFsdWVfX1NPV19XRURORVNEQVkgPSAnc293LXdlZG5lc2RheScsXG5cbiAgLy8gXG4gIFNPV1ZhbHVlX19TT1dfVEhVUlNEQVkgPSAnc293LXRodXJzZGF5JyxcblxuICAvLyBcbiAgU09XVmFsdWVfX1NPV19GUklEQVkgPSAnc293LWZyaWRheScsXG5cbiAgLy8gXG4gIFNPV1ZhbHVlX19TT1dfU0FUVVJEQVkgPSAnc293LXNhdHVyZGF5JyxcblxuICAvLyBcbiAgU09XVmFsdWVfX1NPV19JU084NjAxV0VFSyA9ICdzb3ctaXNvODYwMS13ZWVrJ1xufVxuXG4vLyBUeXBlIG9mIEZpbmQgdG8gcGVyZm9ybVxuZXhwb3J0IGVudW0gRmluZFR5cGUge1xuXG4gIC8vIFN0YXJ0cyBXaXRoXG4gIEZpbmRUeXBlX1N0YXJ0cyA9ICdmaW5kdHlwZS1zdGFydHMnLFxuXG4gIC8vIEVuZHMgV2l0aFxuICBGaW5kVHlwZV9FbmRzID0gJ2ZpbmR0eXBlLWVuZHMnLFxuXG4gIC8vIENvbnRhaW5zXG4gIEZpbmRUeXBlX0NvbnRhaW5zID0gJ2ZpbmR0eXBlLWNvbnRhaW5zJyxcblxuICAvLyBFeGFjdFxuICBGaW5kVHlwZV9FeGFjdCA9ICdmaW5kdHlwZS1leGFjdCdcbn1cblxuLy8gUGVyc3BlY3RpdmVUeXBlIG9mIGEgZ2l2ZW4gUGVyc3BlY3RpdmVQcmVzTW9kZWxcbmV4cG9ydCBlbnVtIFBlcnNwZWN0aXZlRW51bVBlcnNwZWN0aXZlVHlwZSB7XG5cbiAgLy8gUmVhbGl0eVxuICBQZXJzcGVjdGl2ZVR5cGVfUmVhbGl0eSA9ICdwZXJzcGVjdGl2ZXR5cGUtcmVhbGl0eScsXG5cbiAgLy8gRmlyc3RcbiAgUGVyc3BlY3RpdmVUeXBlX0ZpcnN0ID0gJ3BlcnNwZWN0aXZldHlwZS1maXJzdCcsXG5cbiAgLy8gTGFzdFxuICBQZXJzcGVjdGl2ZVR5cGVfTGFzdCA9ICdwZXJzcGVjdGl2ZXR5cGUtbGFzdCcsXG5cbiAgLy8gQ3VzdG9tXG4gIFBlcnNwZWN0aXZlVHlwZV9DdXN0b20gPSAncGVyc3BlY3RpdmV0eXBlLWN1c3RvbSdcbn1cblxuLy8gTGlzdCBvZiBvcHRpb25zIGZvciB3aGF0IHRvIHdyaXRlIG91dCBmcm9tIGdldC1ydW50aW1lLWluZm9cbmV4cG9ydCBlbnVtIFJ1bnRpbWVJbmZvUnVudGltZU91dHB1dCB7XG5cbiAgLy8gb3V0cHV0IHRoZSBWVEwgZnJvbSB0aGUgcHJvZHVjZXJzXG4gIFJhd1ZUTCA9ICdyYXctdnRsJyxcblxuICAvLyBvdXRwdXQgdGhlIGRhdGEgc3RvcmUgZnJvbSB0aGUgcHJvZHVjZXJzXG4gIFJhd1N0b3JlID0gJ3Jhdy1zdG9yZScsXG5cbiAgLy8gb3V0cHV0IHRoZSBncmFwaCBhbmQgY29tcGlsZWQgVlRMXG4gIFBheWxvYWRWVEwgPSAncGF5bG9hZC12dGwnLFxuXG4gIC8vIG91dHB1dCB0aGUgZmluYWwgZGF0YSBzdG9yZSBhZnRlciB0cmFuc2Zvcm1zIGFyZSBydW5cbiAgRmluYWxTdG9yZSA9ICdmaW5hbC1zdG9yZScsXG5cbiAgLy8gb3V0cHV0IHRoZSBWVEwgYW5kIGRhdGEgc3RvcmUgZnJvbSB0aGUgcHJvZHVjZXJzXG4gIElucHV0ID0gJ2lucHV0JyxcblxuICAvLyBvdXRwdXQgdGhlIGZpbmFsIFZUTCBhbmQgZGF0YSBzdG9yZSBhZnRlciBjb21waWxhdGlvbiBhbmQgcnVubmluZ1xuICBPdXRwdXQgPSAnb3V0cHV0J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEdlb21ldHJ5VHlwZSB7XG5cbiAgLy8gXG4gIEVtcHR5ID0gJ2VtcHR5JyxcblxuICAvLyBcbiAgTXVsdGlQb2x5Z29uID0gJ211bHRpUG9seWdvbicsXG5cbiAgLy8gXG4gIE11bHRpUG9pbnQgPSAnbXVsdGlQb2ludCcsXG5cbiAgLy8gXG4gIE11bHRpTGluZVN0cmluZyA9ICdtdWx0aUxpbmVTdHJpbmcnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gTWFya1NpemluZ1NldHRpbmcge1xuXG4gIC8vIFxuICBNYXJrc1NjYWxpbmdBdXRvbWF0aWMgPSAnbWFya3Mtc2NhbGluZy1hdXRvbWF0aWMnLFxuXG4gIC8vIFxuICBNYXJrc1NjYWxpbmdPbiA9ICdtYXJrcy1zY2FsaW5nLW9uJyxcblxuICAvLyBcbiAgTWFya3NTY2FsaW5nT2ZmID0gJ21hcmtzLXNjYWxpbmctb2ZmJ1xufVxuXG4vLyBFbnVtZXJhdGlvbiBmb3IgY2FyZCB0eXBlIG9uIHdvcmtzaGVldHMuXG5leHBvcnQgZW51bSBDYXJkVHlwZSB7XG5cbiAgLy8gQ2FyZE1hbmFnZXIgdHJlYXRzIHplcm8gc3BlY2lhbGx5LCBzbyB3ZSBjYW4ndCBzdGFydCBhdCB6ZXJvLlxuICBDb2x1bW5zID0gJ2NhcmR0eXBlLWNvbHVtbnMnLFxuXG4gIC8vIFxuICBSb3dzID0gJ2NhcmR0eXBlLXJvd3MnLFxuXG4gIC8vIFxuICBQYWdlcyA9ICdjYXJkdHlwZS1wYWdlcycsXG5cbiAgLy8gXG4gIEN1cnJlbnRQYWdlID0gJ2NhcmR0eXBlLWN1cnJlbnRQYWdlJyxcblxuICAvLyBcbiAgRmlsdGVycyA9ICdjYXJkdHlwZS1maWx0ZXJzJyxcblxuICAvLyBcbiAgTWFya3MgPSAnY2FyZHR5cGUtbWFya3MnLFxuXG4gIC8vIFxuICBNZWFzdXJlcyA9ICdjYXJkdHlwZS1tZWFzdXJlcycsXG5cbiAgLy8gXG4gIENvbG9yTGVnZW5kID0gJ2NhcmR0eXBlLWNvbG9yTGVnZW5kJyxcblxuICAvLyBcbiAgU2hhcGVMZWdlbmQgPSAnY2FyZHR5cGUtc2hhcGVMZWdlbmQnLFxuXG4gIC8vIFxuICBTaXplTGVnZW5kID0gJ2NhcmR0eXBlLXNpemVMZWdlbmQnLFxuXG4gIC8vIFxuICBNYXBMZWdlbmQgPSAnY2FyZHR5cGUtbWFwTGVnZW5kJyxcblxuICAvLyBcbiAgVGl0bGUgPSAnY2FyZHR5cGUtdGl0bGUnLFxuXG4gIC8vIFxuICBDYXB0aW9uID0gJ2NhcmR0eXBlLWNhcHRpb24nLFxuXG4gIC8vIFxuICBTdW1tYXJ5ID0gJ2NhcmR0eXBlLXN1bW1hcnknLFxuXG4gIC8vIFxuICBQYXJhbWV0ZXIgPSAnY2FyZHR5cGUtcGFyYW1ldGVyJyxcblxuICAvLyBcbiAgUXVpY2tGaWx0ZXIgPSAnY2FyZHR5cGUtcXVpY2tGaWx0ZXInLFxuXG4gIC8vIFxuICBIaWdobGlnaHRlciA9ICdjYXJkdHlwZS1oaWdobGlnaHRlcidcbn1cblxuLy8gSW5kaWNhdGVzIHRoZSB0eXBlIG9mIHRhYmxlIGRhdGEgdG8gYmUgZGlzcGxheWVkLlxuZXhwb3J0IGVudW0gVGFibGVWaWV3RGF0YVR5cGUge1xuXG4gIC8vIFRhYmxlIHZpZXcgd2l0aCBlYWNoIGNvbHVtbiBpcyBzcGVjaWZpZWQgYnkgRmllbGROYW1lLiBEUElfQ29sdW1ucyBpcyByZXF1aXJlZC5cbiAgVGFibGVWaWV3RmllbGREYXRhID0gJ3RhYmxlLXZpZXctZmllbGQtZGF0YScsXG5cbiAgLy8gVGFibGUgdmlldyB3aGVyZSB0aGUgY29sdW1ucyBhcmUgZGVmaW5lZCBieSBhIGdyb3VwLiBEUElfRmllbGROYW1lIGlzIHJlcXVpcmVkLlxuICBUYWJsZVZpZXdHcm91cERhdGEgPSAndGFibGUtdmlldy1ncm91cC1kYXRhJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFdhcm5pbmdUeXBlIHtcblxuICAvLyBcbiAgTElOS19FUlJPUiA9ICdsaW5rZXJyb3InLFxuXG4gIC8vIFxuICBPVkVSTEFQX1RFWFQgPSAnV2Fybk92ZXJsYXBwaW5nVGV4dCcsXG5cbiAgLy8gXG4gIElOVkFMSURfV09SS1NIRUVUID0gJ1dhcm5JbnZhbGlkV29ya3NoZWV0JyxcblxuICAvLyBcbiAgT1BFTl9CT09LID0gJ29wZW5ib29rJyxcblxuICAvLyBcbiAgT1BFTl9EQVRBU09VUkNFID0gJ29wZW5kYXRhc291cmNlJyxcblxuICAvLyBcbiAgT1BFTl9TSEVFVCA9ICdvcGVuc2hlZXQnLFxuXG4gIC8vIFxuICBMT0NBTERBVEFfQU1CSUdVSVRZID0gJ0xvY2FsRGF0YUFtYmlndWl0eScsXG5cbiAgLy8gXG4gIExPQ0FMREFUQV9NSVNNQVRDSCA9ICdMb2NhbERhdGFNaXNtYXRjaCcsXG5cbiAgLy8gXG4gIE1JU1NJTkdfTE9DQUxfVElMRSA9ICdNaXNzaW5nTG9jYWxUaWxlcycsXG5cbiAgLy8gXG4gIE1BUF9USUxFX0RPV05MT0FEID0gJ01hcFRpbGVEb3dubG9hZEVycm9yJyxcblxuICAvLyBcbiAgTUFQX1RJTEVfSU5URVJNSVRURU5UID0gJ01hcFRpbGVJbnRlcm1pdHRlbnQnLFxuXG4gIC8vIFxuICBNQVBfVElMRV9SRUdJT04gPSAnTWFwVGlsZVJlZ2lvbicsXG5cbiAgLy8gXG4gIE1BUF9TRVJWRVJfRk9SQklEREVOID0gJ01hcFNlcnZlckZvcmJpZGRlbicsXG5cbiAgLy8gXG4gIERNX0NBTk5PVF9TQ09SRSA9ICdETUNhbm5vdFNjb3JlJyxcblxuICAvLyBcbiAgRE1fU0NPUklOR19OT1RfUkVDID0gJ0RNU2NvcmluZ05vdFJlY29tbWVuZGVkJyxcblxuICAvLyBcbiAgTE9DQUxfREFUQV9MSUJSQVJZX01JU1NJTkcgPSAnTG9jYWxEYXRhTGlicmFyeU1pc3NpbmcnLFxuXG4gIC8vIFxuICBETV9NSVNTSU5HX01PREVMID0gJ0RNTWlzc2luZ01vZGVsJyxcblxuICAvLyBcbiAgRElfTk9fTElOSyA9ICdESU5vTGluaycsXG5cbiAgLy8gXG4gIExPQ0FMREFUQV9OT19HRU9NRVRSWSA9ICdMb2NhbERhdGFOb0dlb21ldHJ5JyxcblxuICAvLyBcbiAgTE9DQUxEQVRBX05PX0dFT01FVFJZX1VQR1JBREUgPSAnTG9jYWxEYXRhTm9HZW9tZXRyeVVwZ3JhZGUnLFxuXG4gIC8vIFxuICBESV9OT19SRUxBVElPTlNISVBTID0gJ0RJTm9SZWxhdGlvbnNoaXBzJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFdvcmtib29rVUlNb2RlIHtcblxuICAvLyBcbiAgRGF0YVRhYiA9ICdkYXRhLXRhYicsXG5cbiAgLy8gXG4gIERvY3VtZW50ID0gJ2RvY3VtZW50JyxcblxuICAvLyBcbiAgU2hlZXRTb3J0ZXIgPSAnc2hlZXQtc29ydGVyJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFRvcExldmVsTWVudUl0ZW0ge1xuXG4gIC8vIFxuICBGaWxlID0gJ2ZpbGUnLFxuXG4gIC8vIFxuICBEYXRhID0gJ2RhdGEnLFxuXG4gIC8vIFxuICBXb3Jrc2hlZXQgPSAnd29ya3NoZWV0JyxcblxuICAvLyBcbiAgRGFzaGJvYXJkID0gJ2Rhc2hib2FyZCcsXG5cbiAgLy8gXG4gIEFuYWx5c2lzID0gJ2FuYWx5c2lzJyxcblxuICAvLyBcbiAgRm9ybWF0ID0gJ2Zvcm1hdCcsXG5cbiAgLy8gXG4gIE1hcCA9ICdtYXAnLFxuXG4gIC8vIFxuICBIZWxwID0gJ2hlbHAnXG59XG5cbi8vIEVudW1lcmF0aW9uIGZvciBkaWZmZXJlbnQgdHlwZXMgb2YgQWRkSW5zIChQcm9qZWN0IEZyZWxhcmQpXG5leHBvcnQgZW51bSBBZGRJblR5cGUge1xuXG4gIC8vIFxuICBJbnZhbGlkID0gJ2ludmFsaWQnLFxuXG4gIC8vIFxuICBEYXNoYm9hcmQgPSAnZGFzaGJvYXJkJ1xufVxuXG4vLyBFbnVtZXJhdGlvbiBvZiBkaWZmZXJlbnQgY29udGV4dHMgYW4gYWRkLWluIGNhbiBydW4gaW5cbmV4cG9ydCBlbnVtIEFkZEluQ29udGV4dCB7XG5cbiAgLy8gXG4gIFVua25vd24gPSAndW5rbm93bicsXG5cbiAgLy8gXG4gIERlc2t0b3AgPSAnZGVza3RvcCcsXG5cbiAgLy8gXG4gIFNlcnZlciA9ICdzZXJ2ZXInXG59XG5cbi8vIEVudW1lcmF0aW9uIG9mIGRpZmZlcmVudCBtb2RlcyBhbiBhZGQtaW4gY2FuIHJ1biBpblxuZXhwb3J0IGVudW0gQWRkSW5Nb2RlIHtcblxuICAvLyBcbiAgVW5rbm93biA9ICd1bmtub3duJyxcblxuICAvLyBcbiAgQXV0aG9yaW5nID0gJ2F1dGhvcmluZycsXG5cbiAgLy8gXG4gIFZpZXdpbmcgPSAndmlld2luZydcbn1cblxuLy8gTWFya2VycyBmb3IgYXJyYXktb2YtZmxvYXQgZW5jb2Rpbmcgb2YgZ2VvbWV0cnlcbmV4cG9ydCBlbnVtIExpbmVhckZsb2F0R2VvbWV0cnlNYXJrZXIge1xuXG4gIC8vIFxuICBMRkdfSW52YWxpZCA9ICdpbnZhbGlkJyxcblxuICAvLyBcbiAgTEZHX011bHRpUG9seWdvbiA9ICdtdWx0aVBvbHlnb24nLFxuXG4gIC8vIFxuICBMRkdfTXVsdGlMaW5lID0gJ211bHRpTGluZScsXG5cbiAgLy8gXG4gIExGR19NdWx0aVBvaW50ID0gJ211bHRpUG9pbnQnLFxuXG4gIC8vIFxuICBMRkdfU3RhcnRPYmplY3QgPSAnc3RhcnRPYmplY3QnLFxuXG4gIC8vIFxuICBMRkdfU3RhcnRQb2x5Z29uID0gJ3N0YXJ0UG9seWdvbicsXG5cbiAgLy8gXG4gIExGR19TdGFydExpbmUgPSAnc3RhcnRMaW5lJyxcblxuICAvLyBcbiAgTEZHX0VuZEdlb21ldHJ5ID0gJ2VuZEdlb21ldHJ5J1xufVxuXG4vLyBFbnVtZXJhdGlvbiBmb3IgZGF0YSBhbGVydCB0eXBlcy5cbmV4cG9ydCBlbnVtIERhdGFBbGVydFR5cGUge1xuXG4gIC8vIFxuICBEYXRhUHJlc2VudCA9ICdkYXRhLXByZXNlbnQnLFxuXG4gIC8vIFxuICBDb25zdENvbXBhcmlzb24gPSAnY29uc3QtY29tcGFyaXNvbidcbn1cblxuLy8gRW51bWVyYXRpb24gZm9yIHZhbGlkIG9wZXJhdGlvbnMgaW4gZGF0YSBhbGVydCBjb25kaXRpb25zXG5leHBvcnQgZW51bSBEYXRhQWxlcnRDb25kaXRpb25PcGVyYXRpb25UeXBlIHtcblxuICAvLyBcbiAgR3JlYXRlclRoYW4gPSAnZ3JlYXRlci10aGFuJyxcblxuICAvLyBcbiAgR3JlYXRlclRoYW5FcXVhbCA9ICdncmVhdGVyLXRoYW4tZXF1YWwnLFxuXG4gIC8vIFxuICBFcXVhbHMgPSAnZXF1YWxzJyxcblxuICAvLyBcbiAgTGVzc1RoYW4gPSAnbGVzcy10aGFuJyxcblxuICAvLyBcbiAgTGVzc1RoYW5FcXVhbCA9ICdsZXNzLXRoYW4tZXF1YWwnXG59XG5cbi8vIEVudW1lcmF0aW9uIGZvciBtb2RlcyB0aGUgZGF0YSBhbGVydCBkaWFsb2cgY291bGQgYmUgaW5cbmV4cG9ydCBlbnVtIERhdGFBbGVydERpYWxvZ01vZGUge1xuXG4gIC8vIFxuICBDcmVhdGUgPSAnY3JlYXRlJyxcblxuICAvLyBcbiAgRWRpdCA9ICdlZGl0J1xufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWNvcmUvZ2VuLXNyYy9wcmVzbGF5ZXIvRW51bXMudHNcbiAqKi8iLCJpbXBvcnQgeyBNb2RlbCwgUGFyYW1ldGVySWQgYXMgQXBpLCBTaGVldFBhdGgsIFZlcnNpb25OdW1iZXIgfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xuXG5pbXBvcnQgeyBQYXJhbWV0ZXJJZCBhcyBQTCB9IGZyb20gJy4uLy4uL2dlbi1zcmMvcHJlc2xheWVyL1BhcmFtcyc7XG5pbXBvcnQgeyBQcmVzZW50YXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL2dlbi1zcmMvcHJlc2xheWVyL1ByZXNNb2RlbHMnO1xuaW1wb3J0IHsgQWN0aXZlTWFya3NEYXRhQ29udmVydGVyIH0gZnJvbSAnLi9BY3RpdmVNYXJrc0RhdGFDb252ZXJ0ZXInO1xuaW1wb3J0IHsgQXBpVG9QcmVzTGF5ZXJDb252ZXJ0ZXIgfSBmcm9tICcuL0FwaVRvUHJlc0xheWVyQ29udmVydGVyJztcbmltcG9ydCB7IEZpbHRlcnNDb252ZXJ0ZXIgfSBmcm9tICcuL0ZpbHRlcnNDb252ZXJ0ZXInO1xuaW1wb3J0IHsgTWFwcGluZ1JlZ2lzdHJ5IH0gZnJvbSAnLi9NYXBwaW5nUmVnaXN0cnknO1xuaW1wb3J0IHsgUGFyYW1ldGVyc0RhdGFDb252ZXJ0ZXIgfSBmcm9tICcuL1BhcmFtZXRlcnNEYXRhQ29udmVydGVyJztcbmltcG9ydCB7IFByZXNMYXllclRvQXBpQ29udmVydGVyIH0gZnJvbSAnLi9QcmVzTGF5ZXJUb0FwaUNvbnZlcnRlcic7XG5pbXBvcnQgeyBVbmRlcmx5aW5nRGF0YUNvbnZlcnRlciB9IGZyb20gJy4vVW5kZXJseWluZ0RhdGFDb252ZXJ0ZXInO1xuXG4vKnRzbGludDpkaXNhYmxlLW5leHQtbGluZSAqL1xuY29uc3QgaWQgPSBmdW5jdGlvbihpblBhcmFtOiBhbnkpOiBhbnkgeyByZXR1cm4gaW5QYXJhbTsgfVxuXG4vKipcbiAqIEZhY3RvcnkgY2xhc3MgZm9yIGNyZWF0aW5nIHBhcmFtZXRlcnMgbWFwcGluZ3MgYmFzZWQgb24gdGhlIFZlcnNpb25OdW1iZXIgb2YgdGhlIEFwaVxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBQYXJhbWV0ZXJNYXBwaW5nUmVnaXN0cnlGYWN0b3J5XG4gKi9cbmV4cG9ydCBjbGFzcyBQYXJhbWV0ZXJNYXBwaW5nUmVnaXN0cnlGYWN0b3J5IHtcbiAgcHVibGljIHN0YXRpYyBjcmVhdGVQcmVzTGF5ZXJUb0FwaVBhcmFtUmVnaXN0cnkodmVyc2lvbk51bWJlcjogVmVyc2lvbk51bWJlcik6IFByZXNMYXllclRvQXBpTWFwcGluZ1JlZ2lzdHJ5IHtcbiAgICBsZXQgcmVzdWx0ID0gbmV3IFByZXNMYXllclRvQXBpTWFwcGluZ1JlZ2lzdHJ5KCk7XG5cbiAgICAvLyBUT0RPIC0gY2hlY2sgdGhlIHZlcnNpb24gbnVtYmVyIGFuZCBjb25zdHJ1Y3QgYXBwcm9wcmlhdGUgY29udmVyc2lvbnNcblxuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oXG4gICAgICBQTC5BZGRJbkxvY2F0b3IsXG4gICAgICBBcGkuRXh0ZW5zaW9uTG9jYXRvcixcbiAgICAgIFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnRFeHRlbnNpb25Mb2NhdG9yKTtcblxuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oXG4gICAgICBQTC5BZGRJbkJvb3RzdHJhcEluZm8sXG4gICAgICBBcGkuRXh0ZW5zaW9uQm9vdHN0cmFwSW5mbyxcbiAgICAgIFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnRFeHRlbnNpb25Cb290c3RyYXBJbmZvXG4gICAgKTtcblxuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oXG4gICAgICBQTC5VbmRlcmx5aW5nRGF0YVRhYmxlLFxuICAgICAgQXBpLlVuZGVybHlpbmdEYXRhVGFibGUsXG4gICAgICBVbmRlcmx5aW5nRGF0YUNvbnZlcnRlci5idWlsZFVuZGVybHlpbmdEYXRhVGFibGUuYmluZCh1bmRlZmluZWQsIGZhbHNlKVxuICAgICk7XG5cbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKFxuICAgICAgUEwuVW5kZXJseWluZ0RhdGFUYWJsZSxcbiAgICAgIEFwaS5VbmRlcmx5aW5nU3VtbWFyeURhdGFUYWJsZSxcbiAgICAgIFVuZGVybHlpbmdEYXRhQ29udmVydGVyLmJ1aWxkVW5kZXJseWluZ0RhdGFUYWJsZS5iaW5kKHVuZGVmaW5lZCwgdHJ1ZSlcbiAgICApO1xuXG4gICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihcbiAgICAgIFBMLlVuZGVybHlpbmdEYXRhVGFibGUsXG4gICAgICBBcGkuRGF0YVNvdXJjZURhdGFUYWJsZSxcbiAgICAgIFVuZGVybHlpbmdEYXRhQ29udmVydGVyLmJ1aWxkVW5kZXJseWluZ0RhdGFUYWJsZS5iaW5kKHVuZGVmaW5lZCwgdHJ1ZSlcbiAgICApO1xuXG4gICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihcbiAgICAgIFBMLkZpZWxkQ2FwdGlvbixcbiAgICAgIEFwaS5GaWVsZE5hbWUsXG4gICAgICBpZFxuICAgICk7XG5cbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKFxuICAgICAgUEwuU2VsZWN0aW9uRGF0YSxcbiAgICAgIEFwaS5TZWxlY3RlZERhdGEsXG4gICAgICBBY3RpdmVNYXJrc0RhdGFDb252ZXJ0ZXIuYnVpbGRTZWxlY3RlZERhdGFUYWJsZVxuICAgICk7XG5cbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKFxuICAgICAgUEwuSGlnaGxpZ2h0ZWREYXRhLFxuICAgICAgQXBpLkhpZ2hsaWdodGVkRGF0YSxcbiAgICAgIEFjdGl2ZU1hcmtzRGF0YUNvbnZlcnRlci5idWlsZEhpZ2hsaWdodGVkRGF0YVRhYmxlXG4gICAgKTtcblxuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oXG4gICAgICBQTC5BZGRJblNldHRpbmdzSW5mbyxcbiAgICAgIEFwaS5FeHRlbnNpb25TZXR0aW5nc0luZm8sXG4gICAgICBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0RXh0ZW5zaW9uU2V0dGluZ3NJbmZvXG4gICAgKTtcblxuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oXG4gICAgICBQTC5Xb3Jrc2hlZXQsXG4gICAgICBBcGkuV29ya3NoZWV0TmFtZSxcbiAgICAgIGlkXG4gICAgKTtcblxuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oXG4gICAgICBQTC5QYXJhbWV0ZXJDdHJscyxcbiAgICAgIEFwaS5QYXJhbWV0ZXJJbmZvcyxcbiAgICAgIFBhcmFtZXRlcnNEYXRhQ29udmVydGVyLmNvbnZlcnRQYXJhbWV0ZXJMaXN0XG4gICAgKTtcblxuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oXG4gICAgICBQTC5QYXJhbWV0ZXJDdHJsLFxuICAgICAgQXBpLlBhcmFtZXRlckluZm8sXG4gICAgICBQYXJhbWV0ZXJzRGF0YUNvbnZlcnRlci5jb252ZXJ0UGFyYW1ldGVyXG4gICAgKTtcblxuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oXG4gICAgICBQTC5EYXRhU2NoZW1hLFxuICAgICAgQXBpLkRhdGFTY2hlbWEsXG4gICAgICBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0RGF0YVNjaGVtYVxuICAgICk7XG5cbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKFxuICAgICAgUEwuRmlsdGVyc0luZm8sXG4gICAgICBBcGkuV29ya3NoZWV0RmlsdGVycyxcbiAgICAgIEZpbHRlcnNDb252ZXJ0ZXIuY29udmVydEZpbHRlcnNQcmVzTW9kZWxcbiAgICApO1xuXG4gICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihcbiAgICAgIFBMLkNhdGVnb3JpY2FsRG9tYWluLFxuICAgICAgQXBpLkNhdGVnb3JpY2FsRG9tYWluLFxuICAgICAgRmlsdGVyc0NvbnZlcnRlci5jb252ZXJ0Q2F0ZWdvcmljYWxEb21haW5cbiAgICApO1xuXG4gICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihcbiAgICAgIFBMLlF1YW50aXRhdGl2ZURvbWFpbixcbiAgICAgIEFwaS5RdWFudGl0YXRpdmVEb21haW4sXG4gICAgICBGaWx0ZXJzQ29udmVydGVyLmNvbnZlcnRRdWFudGl0YXRpdmVEb21haW5cbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlQXBpVG9QcmVzTGF5ZXJQYXJhbVJlZ2lzdHJ5KHZlcnNpb25OdW1iZXI6IFZlcnNpb25OdW1iZXIpOiBBcGlUb1ByZXNMYXllck1hcHBpbmdSZWdpc3RyeSB7XG4gICAgbGV0IHJlc3VsdCA9IG5ldyBBcGlUb1ByZXNMYXllck1hcHBpbmdSZWdpc3RyeSgpO1xuXG4gICAgLy8gVE9ETyAtIGNoZWNrIHRoZSB2ZXJzaW9uIG51bWJlciBhbmQgY29uc3RydWN0IGFwcHJvcHJpYXRlIGNvbnZlcnNpb25zXG5cbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKEFwaS5FeHRlbnNpb25Mb2NhdG9yLCBQTC5BZGRJbkxvY2F0b3IsIEFwaVRvUHJlc0xheWVyQ29udmVydGVyLmNvbnZlcnRFeHRlbnNpb25Mb2NhdG9yKTtcbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKEFwaS5TZXR0aW5nc1ZhbHVlcywgUEwuQWRkSW5TZXR0aW5ncywgaWQpO1xuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oQXBpLklnbm9yZUFsaWFzZXMsIFBMLklnbm9yZUFsaWFzZXMsIGlkKTtcbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKEFwaS5JZ25vcmVTZWxlY3Rpb24sIFBMLklnbm9yZVNlbGVjdGlvbiwgaWQpO1xuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oQXBpLkluY2x1ZGVBbGxDb2x1bW5zLCBQTC5JbmNsdWRlQWxsQ29sdW1ucywgaWQpO1xuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oQXBpLk1heFJvd3MsIFBMLk1heFJvd3MsIGlkKTtcbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKEFwaS5WaXN1YWxJZCwgUEwuVmlzdWFsSURQTSwgQXBpVG9QcmVzTGF5ZXJDb252ZXJ0ZXIuY29udmVydFZpc3VhbElkKTtcbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKEFwaS5Db2x1bW5zVG9JbmNsdWRlLCBQTC5GaWVsZERpc3BsYXlOYW1lcywgaWQpO1xuXG4gICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihBcGkuRmllbGROYW1lLCBQTC5RdWFsaWZpZWRGaWVsZENhcHRpb24sIGlkKTtcbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKEFwaS5GaWx0ZXJWYWx1ZXMsIFBMLkZpbHRlckFsaWFzZXMsIEFwaVRvUHJlc0xheWVyQ29udmVydGVyLmNvbnZlcnRGaWx0ZXJWYWx1ZXMpO1xuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oQXBpLkZpbHRlclVwZGF0ZVR5cGUsIFBMLkZpbHRlclVwZGF0ZVR5cGUsIEFwaVRvUHJlc0xheWVyQ29udmVydGVyLmNvbnZlcnRGaWx0ZXJUeXBlKTtcbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKEFwaS5Jc0V4Y2x1ZGVNb2RlLCBQTC5FeGNsdWRlLCBpZCk7XG4gICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihBcGkuRmlsdGVyUmFuZ2VNaW4sIFBMLlJhbmdlTWluLCBpZCk7XG4gICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihBcGkuRmlsdGVyUmFuZ2VNYXgsIFBMLlJhbmdlTWF4LCBpZCk7XG4gICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihBcGkuRmlsdGVyUmFuZ2VOdWxsT3B0aW9uLCBQTC5JbmNsdWRlZCwgQXBpVG9QcmVzTGF5ZXJDb252ZXJ0ZXIuQ29udmVydE51bGxPcHRpb24pO1xuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oQXBpLkZpZWxkSWQsIFBMLkZpZWxkTmFtZSwgaWQpO1xuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oQXBpLkRvbWFpblR5cGUsIFBMLkZpbHRlckRvbWFpblR5cGUsIEFwaVRvUHJlc0xheWVyQ29udmVydGVyLkNvbnZlcnRGaWx0ZXJEb21haW5UeXBlKTtcblxuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oQXBpLlZpc3VhbElkLCBQTC5Xb3Jrc2hlZXQsIEFwaVRvUHJlc0xheWVyQ29udmVydGVyLmNvbnZlcnRWaXN1YWxJZFRvV29ya3NoZWV0KTtcbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKEFwaS5WaXN1YWxJZCwgUEwuRGFzaGJvYXJkLCBBcGlUb1ByZXNMYXllckNvbnZlcnRlci5jb252ZXJ0VmlzdWFsSWRUb0Rhc2hib2FyZCk7XG5cbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKEFwaS5QYXJhbWV0ZXJDYXB0aW9uLCBQTC5GaWVsZENhcHRpb24sIGlkKTtcbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKEFwaS5QYXJhbWV0ZXJGaWVsZE5hbWUsIFBMLkZpZWxkTmFtZVN0cmluZywgaWQpO1xuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oQXBpLlBhcmFtZXRlckZpZWxkTmFtZSwgUEwuR2xvYmFsRmllbGROYW1lLCBpZCk7XG4gICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihBcGkuUGFyYW1ldGVyVmFsdWUsIFBMLlZhbHVlU3RyLCBpZCk7XG5cbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKFxuICAgICAgQXBpLlNoZWV0UGF0aCxcbiAgICAgIFBMLlNoZWV0UGF0aFBNLFxuICAgICAgcG0gPT4gQXBpVG9QcmVzTGF5ZXJDb252ZXJ0ZXIuY29udmVydFNoZWV0UGF0aChwbSBhcyBTaGVldFBhdGgpXG4gICAgKTtcblxuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oQXBpLlNlbGVjdGlvbiwgUEwuU2VsZWN0aW9uLCBpZCk7XG4gICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihBcGkuU2VsZWN0aW9uVXBkYXRlVHlwZSwgUEwuU2VsZWN0aW9uVXBkYXRlVHlwZSwgaWQpO1xuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oQXBpLkhpZXJWYWxTZWxlY3Rpb25Nb2RlbHMsIFBMLkhpZXJWYWxTZWxlY3Rpb25Nb2RlbHMsIGlkKTtcbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKEFwaS5RdWFudFJhbmdlU2VsZWN0aW9uTW9kZWxzLCBQTC5RdWFudFJhbmdlU2VsZWN0aW9uTW9kZWxzLCBpZCk7XG4gICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihBcGkuRGltVmFsU2VsZWN0aW9uTW9kZWxzLCBQTC5EaW1WYWxTZWxlY3Rpb25Nb2RlbHMsIGlkKTtcblxuICAgIC8vIFRoZSBwYXJhbSBQTC5EYXRhc291cmNlIGlzIHRoZSBJRCBzdHJpbmcgZm9yIGEgc3BlY2lmaWMgZGF0YXNvdXJjZSwgbm90IHRvIGJlIGNvbmZ1c2VkXG4gICAgLy8gd2l0aCB0aGUgcGFyYW0gUEwuRGF0YVNvdXJjZSwgd2hpY2ggaXMgdGhlIGZ1bGwgcHJlcyBtb2RlbCBmb3IgYSBkYXRhIHNvdXJjZS5cbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKEFwaS5EYXRhU291cmNlSWQsIFBMLkRhdGFzb3VyY2UsIGlkKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwaVRvUHJlc0xheWVyTWFwcGluZ1JlZ2lzdHJ5XG4gIGV4dGVuZHMgTWFwcGluZ1JlZ2lzdHJ5PEFwaSwgUEwsIChhcGlNb2RlbDogTW9kZWwpID0+IFByZXNlbnRhdGlvbk1vZGVsPiB7fVxuXG5leHBvcnQgY2xhc3MgUHJlc0xheWVyVG9BcGlNYXBwaW5nUmVnaXN0cnlcbiAgZXh0ZW5kcyBNYXBwaW5nUmVnaXN0cnk8UEwsIEFwaSwgKHByZXNMYXllclBtOiBQcmVzZW50YXRpb25Nb2RlbCkgPT4gTW9kZWw+IHt9XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9zcmMvbWFwcGluZ3MvUGFyYW1ldGVyTWFwcGluZ1JlZ2lzdHJ5RmFjdG9yeS50c1xuICoqLyIsImltcG9ydCB7XG4gIERhdGFIZWFkZXIsXG4gIERhdGFUYWJsZSxcbiAgRGF0YVZhbHVlLFxuICBIaWdobGlnaHRlZE1hcmtzVGFibGUsXG4gIE1hcmtJbmZvLFxuICBNYXJrVHlwZSxcbiAgU2VsZWN0ZWRNYXJrc1RhYmxlXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5cbmltcG9ydCB7XG4gIERhdGFEaWN0aW9uYXJ5UHJlc01vZGVsLFxuICBIaWdobGlnaHRlZERhdGFQcmVzTW9kZWwsXG4gIFNlbGVjdGlvbkRhdGFQcmVzTW9kZWwsXG4gIFZpekRhdGFQcmVzTW9kZWxcbn0gZnJvbSAnLi4vLi4vZ2VuLXNyYy9wcmVzbGF5ZXIvUHJlc01vZGVscyc7XG5pbXBvcnQgeyBQcmVzTGF5ZXJUb0FwaUVudW1NYXBwaW5ncyBhcyBFbnVtTWFwcGluZyB9IGZyb20gJy4vRW51bU1hcHBpbmdzJztcbmltcG9ydCB7IFVuZGVybHlpbmdEYXRhQ29udmVydGVyIH0gZnJvbSAnLi9VbmRlcmx5aW5nRGF0YUNvbnZlcnRlcic7XG5cbi8qKlxuICogQ29udGFpbnMgbG9naWMgZm9yIGNvbnZlcnRpbmcgdGhlIGFjdGl2ZSBtYXJrcyBvbiBhIHZpeiBpbnRvIHRoZSBBUEkgcHJlcyBtb2RlbHMuXG4gKiBJbiB0aGUgb3JpZ2luYWwgcHJvamVjdCwgbW9zdCBvZiB0aGlzIHdhcyBpbiB0aGUgUHJvY2Vzc0FjdGl2ZU1hcmtzIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBjbGFzcyBBY3RpdmVNYXJrc0RhdGFDb252ZXJ0ZXIge1xuICBwdWJsaWMgc3RhdGljIGJ1aWxkU2VsZWN0ZWREYXRhVGFibGUoc2VsZWN0ZWREYXRhOiBTZWxlY3Rpb25EYXRhUHJlc01vZGVsKTogU2VsZWN0ZWRNYXJrc1RhYmxlIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogQWN0aXZlTWFya3NEYXRhQ29udmVydGVyLmJ1aWxkQWN0aXZlTWFya3NMaXN0KHNlbGVjdGVkRGF0YS5kYXRhRGljdGlvbmFyeSwgc2VsZWN0ZWREYXRhLnZpekRhdGEpXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYnVpbGRIaWdobGlnaHRlZERhdGFUYWJsZShoaWdobGlnaHRlZERhdGE6IEhpZ2hsaWdodGVkRGF0YVByZXNNb2RlbCk6IEhpZ2hsaWdodGVkTWFya3NUYWJsZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IEFjdGl2ZU1hcmtzRGF0YUNvbnZlcnRlci5idWlsZEFjdGl2ZU1hcmtzTGlzdChoaWdobGlnaHRlZERhdGEuZGF0YURpY3Rpb25hcnksIGhpZ2hsaWdodGVkRGF0YS52aXpEYXRhKVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBidWlsZEFjdGl2ZU1hcmtzTGlzdChkYXRhRGljdGlvbmFyeTogRGF0YURpY3Rpb25hcnlQcmVzTW9kZWwsIHZpekRhdGE6IFZpekRhdGFQcmVzTW9kZWwpOiBBcnJheTxEYXRhVGFibGU+IHtcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgQXJyYXk8RGF0YVRhYmxlPigpO1xuXG4gICAgLy8gVGhlIGRhdGEgbW9kZWwgZm9yIHRoZSBWaXpEYXRhUHJlc01vZGVsIGlzIGEgbGl0dGxlIHN0cmFuZ2UsIHNvIHRoaXMgcGFyc2luZyB0YWtlcyBzb21lIHRpbWUgdG8gZmlndXJlIG91dC5cbiAgICAvLyBUaGVyZSBjYW4gYmUgbXVsdGlwbGUgcGFuZXMgb2YgZGF0YSwgc28gd2UgbXVzdCBnbyB0aHJvdWdoIHRoZW0gb25lIGF0IGEgdGltZSB0byBjcmVhdGUgZGF0YSB0YWJsZXNcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZpekRhdGEucGFuZUNvbHVtbnNEYXRhLnBhbmVDb2x1bW5zTGlzdC5sZW5ndGg7IGkrKykge1xuXG4gICAgICAvLyBOZWVkIHRvIGZpbHRlciB0byBmaW5kIGFsbCB0aGUgY29sdW1ucyB3aGljaCBhcmUgaW4gdGhpcyBwYW5lXG4gICAgICBjb25zdCBjb2x1bW5zID0gdml6RGF0YS5wYW5lQ29sdW1uc0RhdGEudml6RGF0YUNvbHVtbnMuZmlsdGVyKHZpekRhdGFDb2x1bW4gPT4ge1xuICAgICAgICAvLyBXZSBrbm93IHRoaXMgY29sdW1uIG1hdHRlcnMgZm9yIHRoZSBjdXJyZW50IHBhbmUgaWYgdGhpcyBwYW5lJ3MgaW5kZXggaXMgaW4gcGFuZUluZGljZXNcbiAgICAgICAgcmV0dXJuIHZpekRhdGFDb2x1bW4ucGFuZUluZGljZXMuaW5kZXhPZihpKSA+IC0xO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIENyZWF0ZSBhIG1hcHBpbmcgb2Ygd2hpY2ggaW5kZXggaW4gdGhlIGRhdGEgZGljdGlvbmFyeSBvdXIgY29sdW1ucyBhcmUgaW5cbiAgICAgIGNvbnN0IGNvbHVtbkluZGljZXMgPSBjb2x1bW5zLm1hcCh2aXpEYXRhQ29sdW1uID0+IHtcblxuICAgICAgICAvLyBUaGUgY29sdW1uSW5kZXggaXMgaW4gdGhlIHNhbWUgcG9zaXRpb24gYXMgdGhlIHBhbmVJbmRleFxuICAgICAgICBjb25zdCBwYW5lSW5kZXggPSB2aXpEYXRhQ29sdW1uLnBhbmVJbmRpY2VzLmluZGV4T2YoaSk7XG4gICAgICAgIGNvbnN0IGNvbHVtbkluZGV4ID0gdml6RGF0YUNvbHVtbi5jb2x1bW5JbmRpY2VzW3BhbmVJbmRleF07XG4gICAgICAgIHJldHVybiBjb2x1bW5JbmRleDtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBHZXQgdGhlIGRhdGEgZm9yIHRoZSBwYW5lIHdlIGFyZSBwcm9jZXNzaW5nXG4gICAgICBjb25zdCB2aXpQYW5lID0gdml6RGF0YS5wYW5lQ29sdW1uc0RhdGEucGFuZUNvbHVtbnNMaXN0W2ldO1xuXG4gICAgICBpZiAodml6UGFuZS52aXpQYW5lQ29sdW1ucy5sZW5ndGggIT09IGNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTWFsZm9ybWVkIGRhdGEgdGFibGUnKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaGVhZGVycyA9IG5ldyBBcnJheTxEYXRhSGVhZGVyPigpO1xuICAgICAgY29uc3Qgcm93cyA9IG5ldyBBcnJheTxBcnJheTxEYXRhVmFsdWU+PigpO1xuXG4gICAgICAvLyBDb2x1bW4gMCB3aWxsIGJlIHRoZSB0dXBsZSBpZCBjb2x1bW4uIFdlIGNhbiB1c2UgdGhpcyBhcyBhIGNvdW50ZXIgZm9yIGhvdyBtYW55IHJvd3Mgd2UgaGF2ZVxuICAgICAgY29uc3QgdHVwbGVJZHMgPSB2aXpQYW5lLnZpelBhbmVDb2x1bW5zWzBdLnR1cGxlSWRzO1xuICAgICAgY29uc3QgbWFya3MgPSBuZXcgQXJyYXk8TWFya0luZm8+KCk7XG4gICAgICBmb3IgKGxldCB0dXBsZUluZGV4ID0gMDsgdHVwbGVJbmRleCA8IHR1cGxlSWRzLmxlbmd0aDsgdHVwbGVJbmRleCsrKSB7XG4gICAgICAgIC8vIFRPRE8gTmVlZCB0byByZXZhbHVhdGUgdGhlIHBsYWNlIG9mIHRoaXMgbG9naWMuIElmIGl0IHR1cm5zIG91dCB0aGF0IHdlIG5lZWQgYSBzZXBhcmF0ZSBjb21tYW5kXG4gICAgICAgIC8vIGNhbGwgdG8gZ2V0IHRoZSBtYXJrcyBpbmZvLCB0aGVuIHRoaXMgbG9naWMgc2hvdWxkIG5vdCBiZSBoZXJlIGJ1dCBpbnN0ZWFkIGluIGEgbGF5ZXIgYWJvdmUgc29tZXdoZXJlXG4gICAgICAgIGxldCBtYXJrOiBNYXJrSW5mbyA9IHtcbiAgICAgICAgICB0eXBlOiBNYXJrVHlwZS5CYXIsIC8vIGhhcmRjb2RpbmcgdGhpcyBmb3Igbm93XG4gICAgICAgICAgY29sb3I6ICdyZWQnLCAvLyBoYXJkY29kaW5nIHRoaXMgZm9yIG5vd1xuICAgICAgICAgIHR1cGxlSWQ6IHR1cGxlSWRzW3R1cGxlSW5kZXhdLFxuICAgICAgICB9O1xuICAgICAgICBtYXJrcy5wdXNoKG1hcmspO1xuICAgICAgICAvLyBXZSB3aWxsIGhhdmUgMSBsZXNzIHZhbHVlIGluIHRoaXMgcm93IHNpbmNlIHRoZXJlJ3MgdGhlIHR1cGxlSWQgY29sdW1uXG4gICAgICAgIGNvbnN0IGNlbGxzID0gbmV3IEFycmF5PERhdGFWYWx1ZT4odml6UGFuZS52aXpQYW5lQ29sdW1ucy5sZW5ndGggLSAxKTtcblxuICAgICAgICBmb3IgKGxldCBqID0gMS8qIHNraXAgdGhlIGZpcnN0IHdoaWNoIGlzIHR1cGxlIGlkcyAqLzsgaiA8IHZpelBhbmUudml6UGFuZUNvbHVtbnMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAvLyBOZXh0LCB3ZSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY29sdW1uIHdlIGFyZSByZWFkaW5nIGRhdGEgZm9yXG4gICAgICAgICAgY29uc3QgY29sdW1uID0gY29sdW1uc1tjb2x1bW5JbmRpY2VzW2pdXTtcbiAgICAgICAgICBjb25zdCB2aXpQYW5lQ29sdW1uRGF0YSA9IHZpelBhbmUudml6UGFuZUNvbHVtbnNbal07XG5cbiAgICAgICAgICAvLyBEZWZpbmUgdGhlIGhlYWRlciB3aGVuIHdlIGFyZSBwcm9jZXNzaW5nIHRoZSBmaXJzdCByb3dcbiAgICAgICAgICBpZiAodHVwbGVJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgaGVhZGVyOiBEYXRhSGVhZGVyID0ge1xuICAgICAgICAgICAgICBkYXRhVHlwZTogRW51bU1hcHBpbmcuZGF0YVR5cGUuY29udmVydChjb2x1bW4uZGF0YVR5cGUpLFxuICAgICAgICAgICAgICBmaWVsZE5hbWU6IGNvbHVtbi5mbixcbiAgICAgICAgICAgICAgaXNSZWZlcmVuY2VkOiB0cnVlLFxuICAgICAgICAgICAgICBpbmRleDogaiAtIDEsXG4gICAgICAgICAgICAgIGZpZWxkQ2FwdGlvbjogY29sdW1uLmZpZWxkQ2FwdGlvblxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaGVhZGVycy5wdXNoKGhlYWRlcik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBVbmRlcmx5aW5nRGF0YUNvbnZlcnRlci5sb29rdXBWYWx1ZUZyb21EaWN0aW9uYXJ5KFxuICAgICAgICAgICAgZGF0YURpY3Rpb25hcnksIGNvbHVtbi5kYXRhVHlwZSwgdml6UGFuZUNvbHVtbkRhdGEudmFsdWVJbmRpY2VzW3R1cGxlSW5kZXhdKTtcblxuICAgICAgICAgIGNvbnN0IGFsaWFzVmFsdWUgPSBVbmRlcmx5aW5nRGF0YUNvbnZlcnRlci5sb29rdXBWYWx1ZUZyb21EaWN0aW9uYXJ5KFxuICAgICAgICAgICAgZGF0YURpY3Rpb25hcnksIGNvbHVtbi5kYXRhVHlwZSwgdml6UGFuZUNvbHVtbkRhdGEuYWxpYXNJbmRpY2VzW3R1cGxlSW5kZXhdKSB8fCAnJztcblxuICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gYWxpYXNWYWx1ZTsgLy8gVE9ETyAtIEZpZ3VyZSBvdXQgaG93IHRvIHVzZSB0aGUgZm9ybWF0U3RyaW5nc1xuXG4gICAgICAgICAgY29uc3QgZGF0YUNlbGw6IERhdGFWYWx1ZSA9IHtcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgIGZvcm1hdHRlZFZhbHVlOiBmb3JtYXR0ZWRWYWx1ZSxcbiAgICAgICAgICAgIGFsaWFzZWRWYWx1ZTogYWxpYXNWYWx1ZVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICAvLyBBZGQgb3VyIGNlbGwgdG8gdGhpcyByb3dcbiAgICAgICAgICBjZWxsc1tqIC0gMV0gPSBkYXRhQ2VsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJvd3MucHVzaChjZWxscyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFUYWJsZTogRGF0YVRhYmxlID0ge1xuICAgICAgICBkYXRhVGFibGU6IHJvd3MsXG4gICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgIG1hcmtzOiBtYXJrc1xuICAgICAgfTtcblxuICAgICAgcmVzdWx0LnB1c2goZGF0YVRhYmxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9zcmMvbWFwcGluZ3MvQWN0aXZlTWFya3NEYXRhQ29udmVydGVyLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgRW51bXMgZnJvbSAnLi4vLi4vZ2VuLXNyYy9wcmVzbGF5ZXIvRW51bXMnO1xuaW1wb3J0IHtcbiAgRGF0YURpY3Rpb25hcnlQcmVzTW9kZWwsXG4gIFVuZGVybHlpbmdEYXRhVGFibGVDb2x1bW5QcmVzTW9kZWwsXG4gIFVuZGVybHlpbmdEYXRhVGFibGVQcmVzTW9kZWwsXG4gIFZpekRhdGFQcmVzTW9kZWxcbn0gZnJvbSAnLi4vLi4vZ2VuLXNyYy9wcmVzbGF5ZXIvUHJlc01vZGVscyc7XG5pbXBvcnQgeyBQcmVzTGF5ZXJUb0FwaUVudW1NYXBwaW5ncyBhcyBFbnVtTWFwcGluZyB9IGZyb20gJy4vRW51bU1hcHBpbmdzJztcblxuaW1wb3J0IHsgRGF0YUhlYWRlciwgRGF0YVRhYmxlLCBEYXRhVmFsdWUsIFVuZGVybHlpbmdEYXRhVGFibGUgfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xuXG4vKipcbiAqIENvbnRhaW5zIHN0YXRpYyBoZWxwZXIgbWV0aG9kcyBmb3IgY29udmVydGluZyBmcm9tIGFuIHVuZGVybHlpbmcgZGF0YSBwcmVzIG1vZGVsIGludG8gdGhlIGFwaSByZXByZXNlbnRhdGlvbi5cbiAqIE1vc3Qgb2YgdGhlIGNvZGUgaXMgYSBkaXJlY3QgcG9ydCBmcm9tIEFwaVVuZGVybHlpbmdEYXRhSGFuZGxlci5jc1xuICogaHR0cHM6Ly9vcGVuZ3Jvay9zb3VyY2UveHJlZi90ZWFtc19uZWFyL3dvcmtncm91cC92cWx3ZWIvc2NyaXB0c2hhcnAvc3JjL1VJL0FwaS9BcGlVbmRlcmx5aW5nRGF0YUhhbmRsZXIuY3NcbiAqL1xuZXhwb3J0IGNsYXNzIFVuZGVybHlpbmdEYXRhQ29udmVydGVyIHtcbiAgcHVibGljIHN0YXRpYyBsb29rdXBWYWx1ZUZyb21EaWN0aW9uYXJ5KGRhdGFEaWN0aW9uYXJ5OiBEYXRhRGljdGlvbmFyeVByZXNNb2RlbCwgZHQ6IEVudW1zLkRhdGFUeXBlLCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgLy8gcGVyIGNsIDI4MDM5NiAvIGJ1Z3ppZCA4MTE5NyBuZWdhdGl2ZSBkYXRhIHZhbHVlIGluZGV4IG1lYW5zIHRoYXQgaXQgaXMgc3BlY2lhbFxuICAgICAgZHQgPSBFbnVtcy5EYXRhVHlwZS5EVF9TVFJJTkc7XG4gICAgICBpbmRleCA9IC1pbmRleCAtIDE7XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdCByYXdWYWx1ZSA9IFVuZGVybHlpbmdEYXRhQ29udmVydGVyLmdldFJhd1ZhbHVlKGRhdGFEaWN0aW9uYXJ5LCBkdCwgaW5kZXgpO1xuICAgIGlmIChyYXdWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgcmVzdWx0ID0gcmF3VmFsdWUudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueSAqL1xuICBwdWJsaWMgc3RhdGljIGdldFJhd1ZhbHVlKGRhdGFEaWN0aW9uYXJ5OiBEYXRhRGljdGlvbmFyeVByZXNNb2RlbCwgZHQ6IEVudW1zLkRhdGFUeXBlLCBpbmRleDogbnVtYmVyKTogYW55IHtcbiAgICBpZiAoIWRhdGFEaWN0aW9uYXJ5LmRhdGFTZWdtZW50cykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZGF0YURpY3Rpb25hcnkuZGF0YVNlZ21lbnRzKSkge1xuICAgICAgY29uc3QgZGF0YVNlZ21lbnQgPSBkYXRhRGljdGlvbmFyeS5kYXRhU2VnbWVudHNba2V5XTtcbiAgICAgIGZvciAoY29uc3QgZGF0YUNvbHVtbiBvZiBkYXRhU2VnbWVudC5kYXRhQ29sdW1ucykge1xuICAgICAgICBpZiAoIWRhdGFDb2x1bW4gfHwgZGF0YUNvbHVtbi5kYXRhVHlwZSAhPT0gZHQpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbmRleCA8IGRhdGFDb2x1bW4uZGF0YVZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gZGF0YUNvbHVtbi5kYXRhVmFsdWVzW2luZGV4XTtcbiAgICAgICAgfVxuXG4gICAgICAgIGluZGV4IC09IGRhdGFDb2x1bW4uZGF0YVZhbHVlcy5sZW5ndGg7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBidWlsZERhdGFUYWJsZShcbiAgICBkYXRhRGljdGlvbmFyeTogRGF0YURpY3Rpb25hcnlQcmVzTW9kZWwsIGNvbHVtbnM6IEFycmF5PFVuZGVybHlpbmdEYXRhVGFibGVDb2x1bW5QcmVzTW9kZWw+KTogRGF0YVRhYmxlIHtcbiAgICBjb25zdCByZXN1bHQ6IERhdGFUYWJsZSA9IHtcbiAgICAgIGRhdGFUYWJsZTogVW5kZXJseWluZ0RhdGFDb252ZXJ0ZXIuYnVpbGRUYWJsZShkYXRhRGljdGlvbmFyeSwgY29sdW1ucyksXG4gICAgICBoZWFkZXJzOiBjb2x1bW5zLm1hcCgoYywgaSkgPT4gVW5kZXJseWluZ0RhdGFDb252ZXJ0ZXIuYnVpbGRDb2x1bW5Nb2RlbChjLCBpKSlcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYnVpbGRVbmRlcmx5aW5nRGF0YVRhYmxlKGlzU3VtbWFyeTogYm9vbGVhbiwgdW5kZXJseWluZ0RhdGFUYWJsZTogVW5kZXJseWluZ0RhdGFUYWJsZVByZXNNb2RlbCk6IFVuZGVybHlpbmdEYXRhVGFibGUge1xuICAgIGNvbnN0IHJlc3VsdDogVW5kZXJseWluZ0RhdGFUYWJsZSA9IHtcbiAgICAgIGRhdGE6IFVuZGVybHlpbmdEYXRhQ29udmVydGVyLmJ1aWxkRGF0YVRhYmxlKHVuZGVybHlpbmdEYXRhVGFibGUuZGF0YURpY3Rpb25hcnksIHVuZGVybHlpbmdEYXRhVGFibGUudW5kZXJseWluZ0RhdGFUYWJsZUNvbHVtbnMpLFxuICAgICAgaXNTdW1tYXJ5OiBpc1N1bW1hcnlcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYnVpbGRBY3RpdmVNYXJrc1RhYmxlKGRhdGFEaWN0aW9uYXJ5OiBEYXRhRGljdGlvbmFyeVByZXNNb2RlbCwgdml6RGF0YTogVml6RGF0YVByZXNNb2RlbCk6IERhdGFUYWJsZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBidWlsZENvbHVtbk1vZGVsKGNvbHVtbjogVW5kZXJseWluZ0RhdGFUYWJsZUNvbHVtblByZXNNb2RlbCwgaW5kZXg6IG51bWJlcik6IERhdGFIZWFkZXIge1xuICAgIHJldHVybiB7XG4gICAgICBkYXRhVHlwZTogRW51bU1hcHBpbmcuZGF0YVR5cGUuY29udmVydChjb2x1bW4uZGF0YVR5cGUpLFxuICAgICAgZmllbGROYW1lOiBjb2x1bW4uZm4sXG4gICAgICBmaWVsZENhcHRpb246IGNvbHVtbi5maWVsZENhcHRpb24sXG4gICAgICBpc1JlZmVyZW5jZWQ6ICEhY29sdW1uLmlzUmVmZXJlbmNlZCxcbiAgICAgIGluZGV4OiBpbmRleFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBidWlsZFRhYmxlKFxuICAgIGRhdGFEaWN0aW9uYXJ5OiBEYXRhRGljdGlvbmFyeVByZXNNb2RlbCwgY29sdW1uczogQXJyYXk8VW5kZXJseWluZ0RhdGFUYWJsZUNvbHVtblByZXNNb2RlbD4pOiBBcnJheTxBcnJheTxEYXRhVmFsdWU+PiB7XG5cbiAgICBpZiAoY29sdW1ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBuZXcgQXJyYXk8QXJyYXk8RGF0YVZhbHVlPj4oKTtcbiAgICB9XG5cbiAgICBjb25zdCByb3dDb3VudCA9IGNvbHVtbnNbMF0uZm9ybWF0VmFsSWR4cy5sZW5ndGg7XG4gICAgY29uc3QgY29sdW1uQ291bnQgPSBjb2x1bW5zLmxlbmd0aDtcblxuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBBcnJheTxBcnJheTxEYXRhVmFsdWU+Pihyb3dDb3VudCk7XG5cbiAgICAvLyBJbml0aWFsaXplIGFsbCBvZiBvdXIgcm93c1xuICAgIGZvciAobGV0IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCByb3dDb3VudDsgcm93SW5kZXgrKykge1xuICAgICAgcmVzdWx0W3Jvd0luZGV4XSA9IG5ldyBBcnJheTxEYXRhVmFsdWU+KGNvbHVtbkNvdW50KTtcbiAgICB9XG5cbiAgICAvLyBHbyB0aHJvdWdoIGNvbHVtbi1ieS1jb2x1bW4gYW5kIGNvbnZlcnQgdGhlIHZhbHVlc1xuICAgIGZvciAobGV0IGNvbHVtbkluZGV4ID0gMDsgY29sdW1uSW5kZXggPCBjb2x1bW5Db3VudDsgY29sdW1uSW5kZXgrKykge1xuICAgICAgY29uc3QgY29sdW1uID0gY29sdW1uc1tjb2x1bW5JbmRleF07XG4gICAgICBmb3IgKGxldCByb3dJbmRleCA9IDA7IHJvd0luZGV4IDwgcm93Q291bnQ7IHJvd0luZGV4KyspIHtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSBVbmRlcmx5aW5nRGF0YUNvbnZlcnRlci5sb29rdXBWYWx1ZUZyb21EaWN0aW9uYXJ5KFxuICAgICAgICAgICAgZGF0YURpY3Rpb25hcnksIEVudW1zLkRhdGFUeXBlLkRUX1NUUklORywgY29sdW1uLmZvcm1hdFZhbElkeHNbcm93SW5kZXhdKTtcblxuICAgICAgICBpZiAoZm9ybWF0dGVkVmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Zvcm1hdHRlZFZhbHVlIHdhcyBudWxsJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YWx1ZTogRGF0YVZhbHVlID0ge1xuICAgICAgICAgIHZhbHVlOiBVbmRlcmx5aW5nRGF0YUNvbnZlcnRlci5sb29rdXBWYWx1ZUZyb21EaWN0aW9uYXJ5KFxuICAgICAgICAgICAgZGF0YURpY3Rpb25hcnksIGNvbHVtbi5kYXRhVHlwZSwgY29sdW1uLnZhbHVlSW5kaWNlc1tyb3dJbmRleF0pLFxuICAgICAgICAgIGZvcm1hdHRlZFZhbHVlOiBmb3JtYXR0ZWRWYWx1ZSxcbiAgICAgICAgICBhbGlhc2VkVmFsdWU6IGZvcm1hdHRlZFZhbHVlXG4gICAgICAgIH07XG5cbiAgICAgICAgcmVzdWx0W3Jvd0luZGV4XVtjb2x1bW5JbmRleF0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9zcmMvbWFwcGluZ3MvVW5kZXJseWluZ0RhdGFDb252ZXJ0ZXIudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBBcGkgZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcblxuaW1wb3J0ICogYXMgUHJlc0xheWVyIGZyb20gJy4uLy4uL2dlbi1zcmMvcHJlc2xheWVyL1ByZXNNb2RlbHMnO1xuaW1wb3J0IHsgQXBpVG9QcmVzTGF5ZXJFbnVtTWFwcGluZ3MgYXMgRW51bUNvbnZlcnRlciB9IGZyb20gJy4vRW51bU1hcHBpbmdzJztcblxuLyoqXG4gKiBDbGFzcyBjb250YWluaW5nIGhlbHBlciBtZXRob2RzIGZvciBjb252ZXJ0aW5nIGZyb20gQXBpUHJlc01vZGVscyB0byB0aGVpciBQcmVzTGF5ZXIgZXF1aXZhbGVudHNcbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgQXBpVG9QcmVzTGF5ZXJDb252ZXJ0ZXJcbiAqL1xuZXhwb3J0IGNsYXNzIEFwaVRvUHJlc0xheWVyQ29udmVydGVyIHtcbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0U2hlZXRQYXRoKGFwaVNoZWV0UGF0aD86IEFwaS5TaGVldFBhdGgpOiBQcmVzTGF5ZXIuU2hlZXRQYXRoUHJlc01vZGVsIHtcbiAgICBpZiAoIWFwaVNoZWV0UGF0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzaGVldFBhdGggbm90IGRlZmluZWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQ6IFByZXNMYXllci5TaGVldFBhdGhQcmVzTW9kZWwgPSB7XG4gICAgICBzaGVldE5hbWU6IGFwaVNoZWV0UGF0aC5zaGVldE5hbWUsXG4gICAgICBpc0Rhc2hib2FyZDogYXBpU2hlZXRQYXRoLmlzRGFzaGJvYXJkLFxuICAgICAgc3Rvcnlib2FyZDogYXBpU2hlZXRQYXRoLnN0b3J5Ym9hcmQgfHwgJycsXG4gICAgICBmbGlwYm9hcmRab25lSWQ6IGFwaVNoZWV0UGF0aC5mbGlwYm9hcmRab25lSUQgfHwgMCxcbiAgICAgIHN0b3J5UG9pbnRJZDogYXBpU2hlZXRQYXRoLnN0b3J5UG9pbnRJRCB8fCAwLFxuICAgIH07XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0RXh0ZW5zaW9uTG9jYXRvcihhcGlFeHRlbnNpb25Mb2NhdG9yOiBBcGkuRXh0ZW5zaW9uTG9jYXRvcik6IFByZXNMYXllci5BZGRJbkxvY2F0b3JQcmVzTW9kZWwge1xuICAgIGNvbnN0IHJlc3VsdDogUHJlc0xheWVyLkFkZEluTG9jYXRvclByZXNNb2RlbCA9IHtcbiAgICAgIGFkZEluSW5zdGFuY2VJZDogYXBpRXh0ZW5zaW9uTG9jYXRvci5pbnN0YW5jZUlkLFxuICAgICAgc2hlZXRQYXRoOiBBcGlUb1ByZXNMYXllckNvbnZlcnRlci5jb252ZXJ0U2hlZXRQYXRoKGFwaUV4dGVuc2lvbkxvY2F0b3IuZGFzaGJvYXJkUGF0aClcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFZpc3VhbElkKGFwaVZpc3VhbGlkOiBBcGkuVmlzdWFsSWQpOiBQcmVzTGF5ZXIuVmlzdWFsSURQcmVzTW9kZWwge1xuICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgIHdvcmtzaGVldDogYXBpVmlzdWFsaWQud29ya3NoZWV0LFxuICAgICAgZGFzaGJvYXJkOiBhcGlWaXN1YWxpZC5kYXNoYm9hcmQsXG4gICAgICBzdG9yeWJvYXJkOiBhcGlWaXN1YWxpZC5zdG9yeWJvYXJkLFxuICAgICAgc3RvcnlQb2ludElkOiBhcGlWaXN1YWxpZC5zdG9yeVBvaW50SUQsXG4gICAgICBmbGlwYm9hcmRab25lSWQ6IGFwaVZpc3VhbGlkLmZsaXBib2FyZFpvbmVJRFxuICAgIH07XG5cbiAgICByZXR1cm4gcmVzdWx0IGFzIFByZXNMYXllci5WaXN1YWxJRFByZXNNb2RlbDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFZpc3VhbElkVG9Xb3Jrc2hlZXQoYXBpVmlzdWFsSWQ6IEFwaS5WaXN1YWxJZCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGFwaVZpc3VhbElkLndvcmtzaGVldDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFZpc3VhbElkVG9EYXNoYm9hcmQoYXBpVmlzdWFsSWQ6IEFwaS5WaXN1YWxJZCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGFwaVZpc3VhbElkLmRhc2hib2FyZCB8fCAnJztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydEZpbHRlclZhbHVlcyhmaWx0ZXJWYWx1ZXM6IEFycmF5PHN0cmluZz4pOiBBcnJheTxzdHJpbmc+IHtcbiAgICBpZiAoZmlsdGVyVmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gcGxhdGZvcm0gY29kZSBleHBlY3RzIGFuIGVtcHR5IHN0cmluZyBmb3IgY2xlYXJpbmcgZmlsdGVyIHZhbHVlc1xuICAgICAgcmV0dXJuIFsnJ107XG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXJWYWx1ZXM7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRGaWx0ZXJUeXBlKGZpbHRlclVwZGF0ZVR5cGU6IEFwaS5GaWx0ZXJVcGRhdGVUeXBlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRW51bUNvbnZlcnRlci5maWx0ZXJVcGRhdGVUeXBlLmNvbnZlcnQoZmlsdGVyVXBkYXRlVHlwZSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIENvbnZlcnROdWxsT3B0aW9uKG51bGxPcHRpb246IEFwaS5GaWx0ZXJOdWxsT3B0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRW51bUNvbnZlcnRlci5udWxsT3B0aW9uLmNvbnZlcnQobnVsbE9wdGlvbik7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIENvbnZlcnRGaWx0ZXJEb21haW5UeXBlKGZpbHRlckRvbWFpblR5cGU6IEFwaS5GaWx0ZXJEb21haW5UeXBlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRW51bUNvbnZlcnRlci5maWx0ZXJEb21haW5UeXBlLmNvbnZlcnQoZmlsdGVyRG9tYWluVHlwZSk7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1jb3JlL3NyYy9tYXBwaW5ncy9BcGlUb1ByZXNMYXllckNvbnZlcnRlci50c1xuICoqLyIsImltcG9ydCB7XG4gIENhdGVnb3JpY2FsRG9tYWluLFxuICBDYXRlZ29yaWNhbEZpbHRlcixcbiAgRGF0YVZhbHVlLFxuICBGaWx0ZXIsXG4gIEZpbHRlclR5cGUsXG4gIFJhbmdlRG9tYWluLFxuICBSYW5nZUZpbHRlcixcbiAgUmVsYXRpdmVEYXRlRmlsdGVyLFxufSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xuXG5pbXBvcnQge1xuICBEYXRhVHlwZSxcbiAgRmlsdGVyc1F1YW50aXRhdGl2ZUluY2x1ZGVkVmFsdWVzIGFzIEluY2x1ZGVkVmFsdWVzLFxuICBGaWx0ZXJUeXBlIGFzIFByZXNMYXllckZpbHRlclR5cGUsXG59IGZyb20gJy4uLy4uL2dlbi1zcmMvcHJlc2xheWVyL0VudW1zJztcblxuaW1wb3J0IHtcbiAgQ2F0ZWdvcmljYWxEb21haW5QcmVzTW9kZWwsXG4gIEZpbHRlckluZm9QcmVzTW9kZWwsXG4gIEZpbHRlclZhbHVlUHJlc01vZGVsLFxuICBRdWFudGl0YXRpdmVEb21haW5QcmVzTW9kZWwsXG59IGZyb20gJy4uLy4uL2dlbi1zcmMvcHJlc2xheWVyL1ByZXNNb2RlbHMnO1xuXG5pbXBvcnQgeyBQcmVzTGF5ZXJUb0FwaUVudW1NYXBwaW5ncyBhcyBFbnVtTWFwcGluZ3MgfSBmcm9tICcuL0VudW1NYXBwaW5ncyc7XG5pbXBvcnQgeyBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlciB9IGZyb20gJy4vUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXInO1xuXG5leHBvcnQgY2xhc3MgRmlsdGVyc0NvbnZlcnRlciB7XG4gIHB1YmxpYyBzdGF0aWMgY29udmVydEZpbHRlcnNQcmVzTW9kZWwoZmlsdGVyUG1zOiBGaWx0ZXJJbmZvUHJlc01vZGVsW10pOiBGaWx0ZXJbXSB7XG4gICAgbGV0IGZpbHRlcnM6IEZpbHRlcltdID0gW107XG4gICAgZmlsdGVyUG1zLmZvckVhY2goIGZpbHRlclBtID0+IHtcbiAgICAgIHN3aXRjaCAoZmlsdGVyUG0uZmlsdGVyVHlwZSkge1xuICAgICAgICBjYXNlIFByZXNMYXllckZpbHRlclR5cGUuRkxUUl9DYXRlZ29yaWNhbDoge1xuICAgICAgICAgIGZpbHRlcnMucHVzaChGaWx0ZXJzQ29udmVydGVyLmNvbnZlcnRDYXRlZ29yaWNhbEZpbHRlclByZXNNb2RlbChmaWx0ZXJQbSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBQcmVzTGF5ZXJGaWx0ZXJUeXBlLkZMVFJfUXVhbnRpdGF0aXZlOiB7XG4gICAgICAgICAgZmlsdGVycy5wdXNoKEZpbHRlcnNDb252ZXJ0ZXIuY29udmVydFF1YW50aXRhdGl2ZUZpbHRlclByZXNNb2RlbChmaWx0ZXJQbSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBQcmVzTGF5ZXJGaWx0ZXJUeXBlLkZMVFJfUmVsYXRpdmVEYXRlOiB7XG4gICAgICAgICAgZmlsdGVycy5wdXNoKEZpbHRlcnNDb252ZXJ0ZXIuY29udmVydFJlbGF0aXZlRGF0ZUZpbHRlclByZXNNb2RlbChmaWx0ZXJQbSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGZpbHRlcnM7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRDYXRlZ29yaWNhbEZpbHRlclByZXNNb2RlbChmaWx0ZXJQbTogRmlsdGVySW5mb1ByZXNNb2RlbCk6IENhdGVnb3JpY2FsRmlsdGVyIHtcbiAgICBsZXQgc2VsZWN0ZWRWYWx1ZXM6IERhdGFWYWx1ZVtdID0gZmlsdGVyUG0uY2F0ZWdvcmljYWxGaWx0ZXJJbmZvLmNhcHRpb25lZEZpbHRlclZhbHVlTGlzdC5tYXAoZmlsdGVyVmFsdWUgPT4ge1xuICAgICAgcmV0dXJuIEZpbHRlcnNDb252ZXJ0ZXIuY29udmVydEZpbHRlclZhbHVlUHJlc01vZGVsKGZpbHRlclZhbHVlKTtcbiAgICB9KTtcbiAgICBsZXQgZmlsdGVyOiBDYXRlZ29yaWNhbEZpbHRlciA9IHtcbiAgICAgIHZhbHVlczogc2VsZWN0ZWRWYWx1ZXMsXG4gICAgICBpc0V4Y2x1ZGU6IGZpbHRlclBtLmNhdGVnb3JpY2FsRmlsdGVySW5mby5leGNsdWRlLFxuICAgICAgZmlsdGVyVHlwZTogRmlsdGVyVHlwZS5DYXRlZ29yaWNhbCxcbiAgICAgIGZpZWxkQ2FwdGlvbjogZmlsdGVyUG0uZmllbGRDYXB0aW9uLFxuICAgICAgZmllbGROYW1lOiBmaWx0ZXJQbS5mbixcbiAgICAgIHZpc3VhbElkOiBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0VmlzdWFsSWQoZmlsdGVyUG0udmlzdWFsSWRQcmVzTW9kZWwpXG4gICAgfTtcbiAgICByZXR1cm4gZmlsdGVyO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0UXVhbnRpdGF0aXZlRmlsdGVyUHJlc01vZGVsKGZpbHRlclBtOiBGaWx0ZXJJbmZvUHJlc01vZGVsKTogUmFuZ2VGaWx0ZXIge1xuICAgIGxldCBtaW5WYWx1ZTogRGF0YVZhbHVlID0gRmlsdGVyc0NvbnZlcnRlci5jb252ZXJ0RmlsdGVyVmFsdWVQcmVzTW9kZWwoXG4gICAgICBmaWx0ZXJQbS5xdWFudGl0YXRpdmVGaWx0ZXJJbmZvLmNhcHRpb25lZFJhbmdlTWluXG4gICAgKTtcbiAgICBsZXQgbWF4VmFsdWU6IERhdGFWYWx1ZSA9IEZpbHRlcnNDb252ZXJ0ZXIuY29udmVydEZpbHRlclZhbHVlUHJlc01vZGVsKFxuICAgICAgZmlsdGVyUG0ucXVhbnRpdGF0aXZlRmlsdGVySW5mby5jYXB0aW9uZWRSYW5nZU1heFxuICAgICk7XG4gICAgbGV0IGZpbHRlcjogUmFuZ2VGaWx0ZXIgPSB7XG4gICAgICBmaWx0ZXJUeXBlOiBGaWx0ZXJUeXBlLlJhbmdlLFxuICAgICAgZmllbGRDYXB0aW9uOiBmaWx0ZXJQbS5maWVsZENhcHRpb24sXG4gICAgICBmaWVsZE5hbWU6IGZpbHRlclBtLmZuLFxuICAgICAgdmlzdWFsSWQ6IFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnRWaXN1YWxJZChmaWx0ZXJQbS52aXN1YWxJZFByZXNNb2RlbCksXG4gICAgICBtaW46IG1pblZhbHVlLFxuICAgICAgbWF4OiBtYXhWYWx1ZSxcbiAgICAgIGluY2x1ZGVOdWxsVmFsdWVzOiBGaWx0ZXJzQ29udmVydGVyLmNvbnZlcnRJbmNsdWRlZE51bGxWYWx1ZXMoZmlsdGVyUG0ucXVhbnRpdGF0aXZlRmlsdGVySW5mby5pbmNsdWRlZClcbiAgICB9O1xuICAgIHJldHVybiBmaWx0ZXI7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRSZWxhdGl2ZURhdGVGaWx0ZXJQcmVzTW9kZWwoZmlsdGVyUG06IEZpbHRlckluZm9QcmVzTW9kZWwpOiBSZWxhdGl2ZURhdGVGaWx0ZXIge1xuICAgIGxldCBhbmNob3JEYXRlVmFsdWU6IERhdGFWYWx1ZSA9IEZpbHRlcnNDb252ZXJ0ZXIuY29udmVydEZpbHRlclZhbHVlUHJlc01vZGVsKFxuICAgICAgZmlsdGVyUG0ucmVsYXRpdmVEYXRlRmlsdGVySW5mby5jYXB0aW9uZWRBbmNob3JEYXRlXG4gICAgKTtcbiAgICBsZXQgZmlsdGVyOiBSZWxhdGl2ZURhdGVGaWx0ZXIgPSB7XG4gICAgICBmaWx0ZXJUeXBlOiBGaWx0ZXJUeXBlLlJlbGF0aXZlRGF0ZSxcbiAgICAgIGZpZWxkQ2FwdGlvbjogZmlsdGVyUG0uZmllbGRDYXB0aW9uLFxuICAgICAgZmllbGROYW1lOiBmaWx0ZXJQbS5mbixcbiAgICAgIHZpc3VhbElkOiBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0VmlzdWFsSWQoZmlsdGVyUG0udmlzdWFsSWRQcmVzTW9kZWwpLFxuICAgICAgYW5jaG9yRGF0ZTogYW5jaG9yRGF0ZVZhbHVlLFxuICAgICAgcGVyaW9kVHlwZTogRW51bU1hcHBpbmdzLmRhdGVTdGVwUGVyaW9kLmNvbnZlcnQoZmlsdGVyUG0ucmVsYXRpdmVEYXRlRmlsdGVySW5mby5kYXRlUGVyaW9kVHlwZSksXG4gICAgICByYW5nZVR5cGU6IEVudW1NYXBwaW5ncy5kYXRlUmFuZ2VUeXBlLmNvbnZlcnQoZmlsdGVyUG0ucmVsYXRpdmVEYXRlRmlsdGVySW5mby5kYXRlUmFuZ2VUeXBlKSxcbiAgICAgIHJhbmdlTjogZmlsdGVyUG0ucmVsYXRpdmVEYXRlRmlsdGVySW5mby5yYW5nZU5cbiAgICB9O1xuICAgIHJldHVybiBmaWx0ZXI7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRDYXRlZ29yaWNhbERvbWFpbihkb21haW5QbTogQ2F0ZWdvcmljYWxEb21haW5QcmVzTW9kZWwpOiBDYXRlZ29yaWNhbERvbWFpbiB7XG4gICAgbGV0IGRvbWFpblZhbHVlczogQXJyYXk8RGF0YVZhbHVlPiA9IGRvbWFpblBtLmNhcHRpb25lZEZpbHRlclZhbHVlTGlzdC5tYXAoZmlsdGVyVmFsdWUgPT4ge1xuICAgICAgcmV0dXJuIEZpbHRlcnNDb252ZXJ0ZXIuY29udmVydEZpbHRlclZhbHVlUHJlc01vZGVsKGZpbHRlclZhbHVlKTtcbiAgICB9KTtcbiAgICByZXR1cm4geyB2YWx1ZXM6IGRvbWFpblZhbHVlc307XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRRdWFudGl0YXRpdmVEb21haW4oZG9tYWluUG06IFF1YW50aXRhdGl2ZURvbWFpblByZXNNb2RlbCk6IFJhbmdlRG9tYWluIHtcbiAgICBsZXQgbWluVmFsdWU6IERhdGFWYWx1ZSA9IEZpbHRlcnNDb252ZXJ0ZXIuY29udmVydEZpbHRlclZhbHVlUHJlc01vZGVsKGRvbWFpblBtLmNhcHRpb25lZFJhbmdlTWluKTtcbiAgICBsZXQgbWF4VmFsdWU6IERhdGFWYWx1ZSA9IEZpbHRlcnNDb252ZXJ0ZXIuY29udmVydEZpbHRlclZhbHVlUHJlc01vZGVsKGRvbWFpblBtLmNhcHRpb25lZFJhbmdlTWF4KTtcbiAgICByZXR1cm4ge1xuICAgICAgbWF4OiBtYXhWYWx1ZSxcbiAgICAgIG1pbjogbWluVmFsdWVcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0RmlsdGVyVmFsdWVQcmVzTW9kZWwoZHZQTTogRmlsdGVyVmFsdWVQcmVzTW9kZWwpOiBEYXRhVmFsdWUge1xuICAgIC8qdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueSAqL1xuICAgIGxldCB2YWx1ZTogYW55O1xuICAgIHN3aXRjaCAoZHZQTS5kYXRhVHlwZSkge1xuICAgICAgY2FzZSBEYXRhVHlwZS5EVF9CT09MRUFOOiB7XG4gICAgICAgIHZhbHVlID0gQm9vbGVhbihkdlBNLmRhdGFWYWx1ZVN0cik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBEYXRhVHlwZS5EVF9EQVRFOiB7XG4gICAgICAgIHZhbHVlID0gbmV3IERhdGUoZHZQTS5kYXRhVmFsdWVTdHIpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgRGF0YVR5cGUuRFRfREFURVRJTUU6IHtcbiAgICAgICAgdmFsdWUgPSBuZXcgRGF0ZShkdlBNLmRhdGFWYWx1ZVN0cik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBEYXRhVHlwZS5EVF9JTlRFR0VSOiB7XG4gICAgICAgIHZhbHVlID0gTnVtYmVyLnBhcnNlSW50KGR2UE0uZGF0YVZhbHVlU3RyKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIERhdGFUeXBlLkRUX1JFQUw6IHtcbiAgICAgICAgdmFsdWUgPSBOdW1iZXIucGFyc2VGbG9hdChkdlBNLmRhdGFWYWx1ZVN0cik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8gZGVmYXVsdCB0byBzdHJpbmdcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgdmFsdWUgPSBkdlBNLmRhdGFWYWx1ZVN0cjtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAvLyBUT0RPOiBubyBlYXN5IHdheSBvZiBnZXR0aW5nIGJhY2sgYWxpYXNlZCB2YWx1ZSBmcm9tIHBsYXRmb3JtLCB3aWxsIG5lZWQgdG8gaW52ZXN0aWdhdGUgZnVydGhlclxuICAgICAgYWxpYXNlZFZhbHVlOiAnJyxcbiAgICAgIGZvcm1hdHRlZFZhbHVlOiBkdlBNLmRhdGFWYWx1ZURpc3BsYXlTdHJpbmdcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0SW5jbHVkZWROdWxsVmFsdWVzKGluY2x1ZGVOdWxsOiBJbmNsdWRlZFZhbHVlcyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoaW5jbHVkZU51bGwgPT09IEluY2x1ZGVkVmFsdWVzLkluUmFuZ2VPck51bGwgfHxcbiAgICAgIGluY2x1ZGVOdWxsID09PSBJbmNsdWRlZFZhbHVlcy5BbGwgfHxcbiAgICAgIGluY2x1ZGVOdWxsID09PSBJbmNsdWRlZFZhbHVlcy5OdWxsXG4gICAgKTtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWNvcmUvc3JjL21hcHBpbmdzL0ZpbHRlcnNDb252ZXJ0ZXIudHNcbiAqKi8iLCIvKipcbiAqIFNpbXBsZSByZWdpc3RyeSBjbGFzcyB3aGljaCBjcmVhdGVzIGEgbWFwcGluZyBiYXNlZCBvbiB0d28ga2V5cy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgTWFwcGluZ1JlZ2lzdHJ5XG4gKiBAdGVtcGxhdGUgVElucHV0RW51bVR5cGVcbiAqIEB0ZW1wbGF0ZSBUT3V0cHV0RW51bVR5cGVcbiAqIEB0ZW1wbGF0ZSBUTWFwcGluZ1N0b3JhZ2VUeXBlXG4gKi9cbmV4cG9ydCBjbGFzcyBNYXBwaW5nUmVnaXN0cnk8VElucHV0RW51bVR5cGUgZXh0ZW5kcyBzdHJpbmcsIFRPdXRwdXRFbnVtVHlwZSBleHRlbmRzIHN0cmluZywgVE1hcHBpbmdTdG9yYWdlVHlwZT4ge1xuICBwcml2YXRlIF9yZWdpc3RyeTogeyBba2V5OiBzdHJpbmddOiBUTWFwcGluZ1N0b3JhZ2VUeXBlIH07XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX3JlZ2lzdHJ5ID0ge307XG4gIH1cblxuICBwdWJsaWMgaGFzKGlucHV0VHlwZTogVElucHV0RW51bVR5cGUsIG91dHB1dFR5cGU6IFRPdXRwdXRFbnVtVHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGtleSA9IHRoaXMubWFrZUtleShpbnB1dFR5cGUsIG91dHB1dFR5cGUpO1xuICAgIGlmICghdGhpcy5fcmVnaXN0cnkuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fcmVnaXN0cnlba2V5XSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHVibGljIGdldChpbnB1dFR5cGU6IFRJbnB1dEVudW1UeXBlLCBvdXRwdXRUeXBlOiBUT3V0cHV0RW51bVR5cGUpOiBUTWFwcGluZ1N0b3JhZ2VUeXBlIHtcbiAgICBpZiAoIXRoaXMuaGFzKGlucHV0VHlwZSwgb3V0cHV0VHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyByZXF1ZXN0ZWQgbWFwcGluZzogJyArIGlucHV0VHlwZSArICcgdG8gJyArIG91dHB1dFR5cGUpO1xuICAgIH1cblxuICAgIGNvbnN0IGtleSA9IHRoaXMubWFrZUtleShpbnB1dFR5cGUsIG91dHB1dFR5cGUpO1xuICAgIHJldHVybiB0aGlzLl9yZWdpc3RyeVtrZXldO1xuICB9XG5cbiAgcHVibGljIGFkZFJlZ2lzdHJhdGlvbihpbnB1dFR5cGU6IFRJbnB1dEVudW1UeXBlLCBvdXRwdXRUeXBlOiBUT3V0cHV0RW51bVR5cGUsIHN0b3JhZ2VJdGVtOiBUTWFwcGluZ1N0b3JhZ2VUeXBlKTogdm9pZCB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5tYWtlS2V5KGlucHV0VHlwZSwgb3V0cHV0VHlwZSk7XG5cbiAgICAvLyBBZGQgdGhpcyBpdGVtXG4gICAgdGhpcy5fcmVnaXN0cnlba2V5XSA9IHN0b3JhZ2VJdGVtO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbWJpbmVzIHRoZSB0d28ga2V5cyBpbnRvIGEgdW5pcXVlIHN0cmluZ1xuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge1RJbnB1dEVudW1UeXBlfSBpbnB1dFR5cGVcbiAgICogQHBhcmFtIHtUT3V0cHV0RW51bVR5cGV9IG91dHB1dFR5cGVcbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIE1hcHBpbmdSZWdpc3RyeVxuICAgKi9cbiAgcHJpdmF0ZSBtYWtlS2V5KGlucHV0VHlwZTogVElucHV0RW51bVR5cGUsIG91dHB1dFR5cGU6IFRPdXRwdXRFbnVtVHlwZSk6IHN0cmluZyB7XG4gICAgY29uc3Qga2V5T2JqID0geyBpbnB1dDogaW5wdXRUeXBlLCBvdXRwdXQ6IG91dHB1dFR5cGUgfTtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoa2V5T2JqKTtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWNvcmUvc3JjL21hcHBpbmdzL01hcHBpbmdSZWdpc3RyeS50c1xuICoqLyIsImltcG9ydCB7IERhdGFUeXBlLCBEYXRhVmFsdWUsIERvbWFpblJlc3RyaWN0aW9uVHlwZSwgUGFyYW1ldGVySW5mbyB9IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5cbmltcG9ydCB7IFBhcmFtZXRlckN0cmxQcmVzTW9kZWwgfSBmcm9tICcuLi8uLi9nZW4tc3JjL3ByZXNsYXllci9QcmVzTW9kZWxzJztcbmltcG9ydCB7IFByZXNMYXllclRvQXBpRW51bU1hcHBpbmdzIGFzIEVudW1NYXBwaW5nIH0gZnJvbSAnLi9FbnVtTWFwcGluZ3MnO1xuXG4vKipcbiAqIENvbnRhaW5zIGxvZ2ljIGZvciBjb252ZXJ0aW5nIFBhcmFtZXRlciBtb2RlbHMgaW50byB0aGVpciBlcXVpdmFsZW50IEFwaSB2ZXJzaW9uc1xuICovXG5leHBvcnQgY2xhc3MgUGFyYW1ldGVyc0RhdGFDb252ZXJ0ZXIge1xuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRQYXJhbWV0ZXJMaXN0KHBhcmFtZXRlcnM6IEFycmF5PFBhcmFtZXRlckN0cmxQcmVzTW9kZWw+KTogQXJyYXk8UGFyYW1ldGVySW5mbz4ge1xuICAgIHJldHVybiBwYXJhbWV0ZXJzLm1hcChQYXJhbWV0ZXJzRGF0YUNvbnZlcnRlci5jb252ZXJ0UGFyYW1ldGVyKTtcbiAgfVxuXG4gIC8vIENvbnZlcnRzIGEgc2luZ2xlIHBhcmFtZXRlci5cbiAgLy8gUm91Z2ggcG9ydCBvZiBodHRwczovL29wZW5ncm9rL3NvdXJjZS94cmVmL2Rldl9uZXNzaWUvd29ya2dyb3VwL3ZxbHdlYi9zY3JpcHRzaGFycC9zcmMvVUkvQXBpL0FwaVBhcmFtZXRlckhhbmRsZXIuY3MjOTVcbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0UGFyYW1ldGVyKHBhcmFtOiBQYXJhbWV0ZXJDdHJsUHJlc01vZGVsKTogUGFyYW1ldGVySW5mbyB7XG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gUGFyYW1ldGVyc0RhdGFDb252ZXJ0ZXIuY29udmVydEFsaWFzZWREYXRhVmFsdWUocGFyYW0udmFsdWVBbGlhcywgcGFyYW0uZm9ybWF0dGVkVmFsdWUpO1xuICAgIGNvbnN0IGFsbG93YWJsZVZhbHVlc1R5cGUgPSBFbnVtTWFwcGluZy5wYXJhbWV0ZXJUeXBlc0RvbWFpblR5cGUuY29udmVydChwYXJhbS5wYXJhbWV0ZXJEb21haW5UeXBlKTtcblxuICAgIGNvbnN0IHJlc3VsdDogUGFyYW1ldGVySW5mbyA9IHtcbiAgICAgIG5hbWU6IHBhcmFtLmZpZWxkQ2FwdGlvbixcbiAgICAgIGZpZWxkTmFtZTogcGFyYW0ucGFyYW1ldGVyTmFtZSxcbiAgICAgIGRhdGFUeXBlOiBFbnVtTWFwcGluZy5kYXRhVHlwZS5jb252ZXJ0KHBhcmFtLmRhdGFUeXBlKSxcbiAgICAgIGN1cnJlbnRWYWx1ZTogY3VycmVudFZhbHVlLFxuICAgICAgYWxsb3dhYmxlVmFsdWVzVHlwZTogYWxsb3dhYmxlVmFsdWVzVHlwZVxuICAgIH07XG5cbiAgICBpZiAoYWxsb3dhYmxlVmFsdWVzVHlwZSA9PT0gRG9tYWluUmVzdHJpY3Rpb25UeXBlLkxpc3QpIHtcbiAgICAgIGNvbnN0IGFsbG93YWJsZVZhbHVlcyA9IG5ldyBBcnJheTxEYXRhVmFsdWU+KCk7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcmFtLnZhbHVlc0FsaWFzZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgYWR2ID0gcGFyYW0udmFsdWVzQWxpYXNlc1tpXTtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSBwYXJhbS5mb3JtYXR0ZWRWYWx1ZXNbaV07XG4gICAgICAgIGFsbG93YWJsZVZhbHVlcy5wdXNoKFBhcmFtZXRlcnNEYXRhQ29udmVydGVyLmNvbnZlcnRBbGlhc2VkRGF0YVZhbHVlKGFkdiwgZm9ybWF0dGVkVmFsdWUpKTtcbiAgICAgIH1cblxuICAgICAgcmVzdWx0LmFsbG93YWJsZVZhbHVlcyA9IGFsbG93YWJsZVZhbHVlcztcblxuICAgIH0gZWxzZSBpZiAoYWxsb3dhYmxlVmFsdWVzVHlwZSA9PT0gRG9tYWluUmVzdHJpY3Rpb25UeXBlLlJhbmdlKSB7XG4gICAgICByZXN1bHQubWluVmFsdWUgPSBQYXJhbWV0ZXJzRGF0YUNvbnZlcnRlci5tYWtlRGF0YVZhbHVlKHBhcmFtLnZhbHVlTWluLCBwYXJhbS5mb3JtYXR0ZWRNaW4pO1xuICAgICAgcmVzdWx0Lm1heFZhbHVlID0gUGFyYW1ldGVyc0RhdGFDb252ZXJ0ZXIubWFrZURhdGFWYWx1ZShwYXJhbS52YWx1ZU1heCwgcGFyYW0uZm9ybWF0dGVkTWF4KTtcbiAgICAgIHJlc3VsdC5zdGVwU2l6ZSA9IFBhcmFtZXRlcnNEYXRhQ29udmVydGVyLmNvbnZlcnROdW1iZXIocmVzdWx0LmRhdGFUeXBlLCBwYXJhbS52YWx1ZUluYyk7XG4gICAgICByZXN1bHQuZGF0ZVN0ZXBQZXJpb2QgPSBFbnVtTWFwcGluZy5kYXRlU3RlcFBlcmlvZC5jb252ZXJ0KHBhcmFtLmRhdGVQZXJpb2RUeXBlLCBmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vdGhpbmcgdG8gZG8gaW4gdGhlIGNhc2UgdGhhdCBhbGwgdmFsdWVzIGFyZSBhbGxvd2VkXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvbnZlcnROdW1iZXIoZGF0YVR5cGU6IERhdGFUeXBlLCB2YWx1ZTogc3RyaW5nKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGlmIChkYXRhVHlwZSA9PT0gRGF0YVR5cGUuSW50IHx8IGRhdGFUeXBlID09PSBEYXRhVHlwZS5EYXRlIHx8IGRhdGFUeXBlID09PSBEYXRhVHlwZS5EYXRlVGltZSkge1xuICAgICAgICByZXR1cm4gcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgICAgIH0gZWxzZSBpZiAoZGF0YVR5cGUgPT09IERhdGFUeXBlLkZsb2F0KSB7XG4gICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyp0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55ICovXG4gIHByaXZhdGUgc3RhdGljIG1ha2VEYXRhVmFsdWUodmFsdWU6IGFueSwgZm9ybWF0dGVkVmFsdWU6IHN0cmluZywgYWxpYXM/OiBzdHJpbmcpOiBEYXRhVmFsdWUge1xuICAgIGNvbnN0IHJlc3VsdDogRGF0YVZhbHVlID0ge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZm9ybWF0dGVkVmFsdWU6IGZvcm1hdHRlZFZhbHVlLFxuICAgICAgYWxpYXNlZFZhbHVlOiBhbGlhcyB8fCBmb3JtYXR0ZWRWYWx1ZVxuICAgIH07XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyp0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55ICovXG4gIHByaXZhdGUgc3RhdGljIGNvbnZlcnRBbGlhc2VkRGF0YVZhbHVlKGFkdjogYW55W10sIGZvcm1hdHRlZFZhbHVlOiBzdHJpbmcpOiBEYXRhVmFsdWUge1xuICAgIC8vIEFsaWFzZWREYXRhVmFsdWVzIGFyZSBzZXJpYWxpemVkIGluIGtpbmQgb2YgYSBzdHJhbmdlIHdheSBmcm9tIHRoZSBwbGF0Zm9ybSBjb2RlLiBUaGV5IGFyZSBvdXRwdXRcbiAgICAvLyBhcyBhbiBhcnJheSBvZiAyIHZhbHVlcy4gVGhlIGZpcnN0IGlzIHRoZSBhY3R1YWwgdmFsdWUsIHRoZSBzZWNvbmQgaXMgdGhlIGFsaWFzLiBTZWUgQWxpYXNlZERhdGFWYWx1ZVNlcmlhbGl6ZXI6OlRvU2VyaWFsaXplclxuICAgIGlmICghYWR2IHx8ICEoYWR2IGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYWxpYXNlZCBkYXRhIHZhbHVlJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBhZHZbMF07XG4gICAgY29uc3QgYWxpYXMgPSBhZHYubGVuZ3RoIDwgMiA/IHVuZGVmaW5lZCA6IGFkdlsxXSBhcyBzdHJpbmc7XG5cbiAgICByZXR1cm4gUGFyYW1ldGVyc0RhdGFDb252ZXJ0ZXIubWFrZURhdGFWYWx1ZSh2YWx1ZSwgZm9ybWF0dGVkVmFsdWUsIGFsaWFzKTtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWNvcmUvc3JjL21hcHBpbmdzL1BhcmFtZXRlcnNEYXRhQ29udmVydGVyLnRzXG4gKiovIiwiaW1wb3J0IHsgQWRkSW5JbnN0YW5jZVByZXNNb2RlbCB9IGZyb20gJ0B0YWJsZWF1L2FwaS1jb3JlJztcclxuaW1wb3J0ICogYXMgY29udHJhY3QgZnJvbSAnQHRhYmxlYXUvcHJlc2xheWVyLWFwaS1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQge1xyXG4gIEFkZEluQXBpUHJlc0xheWVySW50ZXJvcE9iamVjdCxcclxuICBOb3RpZmljYXRpb24gYXMgUHJlc0xheWVyTm90aWZpY2F0aW9uLFxyXG59IGZyb20gJy4vdHlwZXMvQWRkSW5BcGlQcmVzTGF5ZXJJbnRlcm9wT2JqZWN0JztcclxuXHJcbi8qKlxyXG4gKiBJbXBsZW1lbmF0aW9uIG9mIHRoZSBQcmVzZW50YXRpb25MYXllciBjb250cmFjdCB3aXRoIGEgYml0IG9mIGV4dHJhIGluZm9ybWF0aW9uXHJcbiAqIGFkZGVkIHRvIHdvcmsgd2l0aCBhZGQtaW5zLiBNb3N0IHdvcmsgaXMgZGVsZWdhdGVkIGRvd24gdG8gdGhlIGludGVyb3BPYmplY3Qgd2hpY2hcclxuICogY29tbXVuaWNhdGVzIGRpcmVjdGx5IHdpdGggdGhlIGMrKyBsYXllciB2aWEgUVdlYkNoYW5uZWxcclxuICpcclxuICogQGNsYXNzIEFkZEluQXBpUHJlc0xheWVySW1wbFxyXG4gKiBAaW1wbGVtZW50cyB7Y29udHJhY3QuUHJlc2VudGF0aW9uTGF5ZXJ9XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQWRkSW5BcGlQcmVzTGF5ZXJJbXBsIGltcGxlbWVudHMgY29udHJhY3QuUHJlc2VudGF0aW9uTGF5ZXIge1xyXG4gICAgcHJpdmF0ZSBfbm90aWZpY2F0aW9uSGFuZGxlcnM6IHsgW2V2ZW50aWQ6IHN0cmluZ106IFtjb250cmFjdC5Ob3RpZmljYXRpb25IYW5kbGVyXSB9O1xyXG5cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIF9pbnRlcm9wT2JqZWN0OiBBZGRJbkFwaVByZXNMYXllckludGVyb3BPYmplY3QpIHtcclxuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycyA9IHt9O1xyXG4gICAgICAgIGlmIChfaW50ZXJvcE9iamVjdCAmJiBfaW50ZXJvcE9iamVjdC5Pbk5vdGlmaWNhdGlvbikge1xyXG4gICAgICAgICAgICBfaW50ZXJvcE9iamVjdC5Pbk5vdGlmaWNhdGlvbi5jb25uZWN0KG5vdGlmaWNhdGlvbiA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIGluc3RhbmNlIGluZm8gZm9yIHRoaXMgcGFydGljdWxhciBhZGQtaW4gZnJvbSB0aGUgYysrIGNvZGVcclxuICAgICAqXHJcbiAgICAgKiBAcmVhZG9ubHlcclxuICAgICAqIEB0eXBlIHtBZGRJbkluc3RhbmNlUHJlc01vZGVsfVxyXG4gICAgICogQG1lbWJlcm9mIEFkZEluQXBpUHJlc0xheWVySW1wbFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IEFkZEluSW5zdGFuY2VJbmZvKCk6IEFkZEluSW5zdGFuY2VQcmVzTW9kZWwge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pbnRlcm9wT2JqZWN0LmFkZEluSW5zdGFuY2VJbmZvIGFzIEFkZEluSW5zdGFuY2VQcmVzTW9kZWw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbnZva2VzIGEgY29tbWFuZCB1c2luZyB0aGUgcHJlcy1sYXllciBpbnRlcm9wXHJcbiAgICAgKlxyXG4gICAgICogQHRlbXBsYXRlIFQgLSBUaGUgZXhwZWN0ZWQgcmV0dXJuIHR5cGVcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjb21tYW5kTmFtZXNwYWNlXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29tbWFuZE5hbWVcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbXNcclxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPFQ+fVxyXG4gICAgICogQG1lbWJlcm9mIEFkZEluQXBpUHJlc0xheWVySW1wbFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaW52b2tlQ29tbWFuZDxUPihjb21tYW5kTmFtZXNwYWNlOiBzdHJpbmcsIGNvbW1hbmROYW1lOiBzdHJpbmcsIHBhcmFtczogb2JqZWN0KTogUHJvbWlzZTxUPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGNvbW1hbmROYW1lc3BhY2UgPSBjb21tYW5kTmFtZXNwYWNlIHx8ICd0YWJkb2MnO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faW50ZXJvcE9iamVjdC5FeGVjdXRlQ29tbWFuZDxUPihcclxuICAgICAgICAgICAgICAgICAgICBjb21tYW5kTmFtZXNwYWNlLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmROYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcyxcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2UuU3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1zZyA9ICdFeGVjdXRlQ29tbWFuZCBmYWlsZWQsIHdpdGggcmVzdWx0OicgKyBKU09OLnN0cmluZ2lmeShyZXNwb25zZS5SZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihtc2cpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuUmVzdWx0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiB3aWxsIHJlZ2lzdHJhdGlvbiBhIHNpbmdsZSBpbnN0YW5jZSBvZiBhIG5vdGlmaWNhdGlvbiBoYW5kbGVyIHdpdGggdGhlIE5hdGl2ZSBDKysgb2JqZWN0LFxyXG4gICAgLy8gYW5kIGltcGxlbWVudCBtdWx0aS1kaXNwYXRjaCB0byB0aGUgd2ViIG9iamVjdHMgZnJvbSBoLmVyZVxyXG4gICAgcHVibGljIHJlZ2lzdGVyTm90aWZpY2F0aW9uSGFuZGxlcihldmVudElkOiBzdHJpbmcsIGhhbmRsZXI6IGNvbnRyYWN0Lk5vdGlmaWNhdGlvbkhhbmRsZXIpOiAoKSA9PiB2b2lkIHtcclxuICAgICAgICBpZiAoZXZlbnRJZCBpbiB0aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycykge1xyXG4gICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25IYW5kbGVyc1tldmVudElkXS5wdXNoKGhhbmRsZXIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzW2V2ZW50SWRdID0gW2hhbmRsZXJdO1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faW50ZXJvcE9iamVjdC5SZWdpc3Rlck5vdGlmaWNhdGlvbkhhbmRsZXIoZXZlbnRJZCk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ1JlZ2lzdGVyTm90aWZpY2F0aW9uSGFuZGxlciBmYWlsZWQ6ICcgKyBlcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAoKSA9PiB0aGlzLnJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXIoZXZlbnRJZCwgaGFuZGxlcik7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZW1vdmVOb3RpZmljYXRpb25IYW5kbGVyKGV2ZW50SWQ6IHN0cmluZywgaGFuZGxlcjogY29udHJhY3QuTm90aWZpY2F0aW9uSGFuZGxlcik6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGhhbmRsZXJMaXN0ID0gdGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnNbZXZlbnRJZF07XHJcbiAgICAgICAgaWYgKCFoYW5kbGVyTGlzdCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGZvdW5kSW5kZXggPSBoYW5kbGVyTGlzdC5pbmRleE9mKGhhbmRsZXIpO1xyXG4gICAgICAgIGlmIChmb3VuZEluZGV4ID49IDApIHtcclxuICAgICAgICAgICAgaGFuZGxlckxpc3Quc3BsaWNlKGZvdW5kSW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaGFuZGxlckxpc3QubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9ub3RpZmljYXRpb25IYW5kbGVyc1tldmVudElkXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIGRpc3BhdGNoTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbjogUHJlc0xheWVyTm90aWZpY2F0aW9uKTogdm9pZCB7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ3JlY2VpdmVkIG5vdGlmaWNhdGlvbjogJyArIEpTT04uc3RyaW5naWZ5KG5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgIGxldCBldmVudElkID0gbm90aWZpY2F0aW9uLmV2ZW50SWQ7XHJcbiAgICAgICAgbGV0IHByZXNNb2RlbCA9IG5vdGlmaWNhdGlvbi5wcmVzTW9kZWw7XHJcbiAgICAgICAgaWYgKGV2ZW50SWQgaW4gdGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnMpIHtcclxuICAgICAgICAgICAgbGV0IGhhbmRsZXJzID0gdGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnNbZXZlbnRJZF07XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBoYW5kbGVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgICAgICAgICAgaGFuZGxlcnNbaV0ocHJlc01vZGVsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuLi9zcmMvQWRkSW5BcGlQcmVzTGF5ZXJJbXBsLnRzXG4gKiovIiwiaW1wb3J0IHsgQXBpRXZlbnRIYW5kbGVyIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWNvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEV4ZWN1dGVQYXJhbWV0ZXJzLFxyXG4gIEV4ZWN1dGVSZXNwb25zZSxcclxuICBJbnRlcm5hbEFwaURpc3BhdGNoZXIsXHJcbiAgTm90aWZpY2F0aW9uSGFuZGxlcixcclxuICBWZXJiSWQsXHJcbiAgVmVyc2lvbk51bWJlcixcclxufSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuLyoqXHJcbiAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBJbnRlcm5hbEFwaURpc3BhdGNoZXIgZm9yIGRlc2t0b3AuIFNpbmNlIHRoaXMgd2lsbCBydW4gaW4gdGhlIHNhbWVcclxuICogZnJhbWUgYXMgdGhlIEFwaUV2ZW50SGFuZGxlciwgdGhpcyBjbGFzcyBtb3N0bHkganVzdCBtYXJzaGFsbHMgZG93biB0byB0aGF0IGltcGxlbWVudGF0aW9uXHJcbiAqXHJcbiAqIEBleHBvcnRcclxuICogQGNsYXNzIERlc2t0b3BBcGlEaXNwYXRjaGVyXHJcbiAqIEBpbXBsZW1lbnRzIHtJbnRlcm5hbEFwaURpc3BhdGNoZXJ9XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRGVza3RvcEFwaURpc3BhdGNoZXIgaW1wbGVtZW50cyBJbnRlcm5hbEFwaURpc3BhdGNoZXIge1xyXG4gIHByaXZhdGUgX25vdGlmaWNhdGlvbkhhbmRsZXJzOiBBcnJheTxOb3RpZmljYXRpb25IYW5kbGVyPjtcclxuXHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgX2FwaUV2ZW50SGFuZGxlcjogQXBpRXZlbnRIYW5kbGVyKSB7XHJcbiAgICB0aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycyA9IFtdO1xyXG4gICAgdGhpcy5fYXBpRXZlbnRIYW5kbGVyLnNldEV2ZW50SGFuZGxlcigobm90aWZpY2F0aW9uSWQsIG1vZGVsKSA9PiB7XHJcbiAgICAgIHRoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzLmZvckVhY2goaGFuZGxlciA9PiBoYW5kbGVyKHtcclxuICAgICAgICBub3RpZmljYXRpb25JZDogbm90aWZpY2F0aW9uSWQsXHJcbiAgICAgICAgZGF0YTogbW9kZWxcclxuICAgICAgfSkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0VmVyc2lvbk51bWJlcih2ZXJzaW9uTnVtYmVyOiBWZXJzaW9uTnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9hcGlFdmVudEhhbmRsZXIuc2V0VmVyc2lvbk51bWJlcih2ZXJzaW9uTnVtYmVyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBleGVjdXRlKHZlcmI6IFZlcmJJZCwgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMpOiBQcm9taXNlPEV4ZWN1dGVSZXNwb25zZT4ge1xyXG4gICAgLy8gSnVzdCBwYXNzIHRoaXMgcmlnaHQgdGhyb3VnaCB0byB0aGUgQXBpRXZlbnRIYW5kbGVyXHJcbiAgICByZXR1cm4gdGhpcy5fYXBpRXZlbnRIYW5kbGVyLmV4ZWN1dGUodmVyYiwgcGFyYW1ldGVycyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVnaXN0ZXJOb3RpZmljYXRpb25IYW5kbGVyKGhhbmRsZXI6IE5vdGlmaWNhdGlvbkhhbmRsZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzLnB1c2goaGFuZGxlcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdW5yZWdpc3Rlck5vdGlmaWNhdGlvbkhhbmRsZXIoaGFuZGxlcjogTm90aWZpY2F0aW9uSGFuZGxlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnMgPSB0aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycy5maWx0ZXIoaCA9PiBoICE9PSBoYW5kbGVyKTtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL0Rlc2t0b3BBcGlEaXNwYXRjaGVyLnRzXG4gKiovIiwiaW1wb3J0ICcuL3R5cGVzL1F0VHlwZXMnO1xyXG5cclxuaW1wb3J0IHsgUVdlYkNoYW5uZWwgfSBmcm9tICdxd2ViY2hhbm5lbCc7XHJcblxyXG5pbXBvcnQgeyBBZGRJbkFwaVByZXNMYXllckludGVyb3BPYmplY3QgfSBmcm9tICcuL3R5cGVzL0FkZEluQXBpUHJlc0xheWVySW50ZXJvcE9iamVjdCc7XHJcblxyXG4vKipcclxuICogSW5pdGlhbGl6ZXMgdGhlIFFXZWJDaGFubmVsIGNvbnRyYWN0IGFuZCByZXR1cm5zIHRoZSBwcmVzIGxheWVyIGludGVyb3Agb2JqZWN0XHJcbiAqXHJcbiAqIEByZXR1cm5zIHtQcm9taXNlPEFkZEluQXBpUHJlc0xheWVySW50ZXJvcE9iamVjdD59XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGl6ZVdlYkNoYW5uZWxQcmVzTGF5ZXIoKTogUHJvbWlzZTxBZGRJbkFwaVByZXNMYXllckludGVyb3BPYmplY3Q+IHtcclxuICByZXR1cm4gbmV3IFByb21pc2U8QWRkSW5BcGlQcmVzTGF5ZXJJbnRlcm9wT2JqZWN0PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICB0cnkge1xyXG5cclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXHJcbiAgICAgIG5ldyBRV2ViQ2hhbm5lbChxdC53ZWJDaGFubmVsVHJhbnNwb3J0LCAoY2hhbm5lbCkgPT4ge1xyXG5cclxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcclxuICAgICAgICBjb25zdCBhZGRJblByZXNMYXllciA9IGNoYW5uZWwub2JqZWN0c1snYWRkSW5QcmVzTGF5ZXInXSBhcyBBZGRJbkFwaVByZXNMYXllckludGVyb3BPYmplY3Q7XHJcbiAgICAgICAgcmVzb2x2ZShhZGRJblByZXNMYXllcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICByZWplY3QoZSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL1F0V2ViQ2hhbm5lbEltcGwudHNcbiAqKi8iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuKipcbioqIENvcHlyaWdodCAoQykgMjAxNSBUaGUgUXQgQ29tcGFueSBMdGQuXG4qKiBDb3B5cmlnaHQgKEMpIDIwMTQgS2xhcsOkbHZkYWxlbnMgRGF0YWtvbnN1bHQgQUIsIGEgS0RBQiBHcm91cCBjb21wYW55LCBpbmZvQGtkYWIuY29tLCBhdXRob3IgTWlsaWFuIFdvbGZmIDxtaWxpYW4ud29sZmZAa2RhYi5jb20+XG4qKiBDb250YWN0OiBodHRwOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy9cbioqXG4qKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRXZWJDaGFubmVsIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC5cbioqXG4qKiAkUVRfQkVHSU5fTElDRU5TRTpMR1BMMjEkXG4qKiBDb21tZXJjaWFsIExpY2Vuc2UgVXNhZ2VcbioqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW5cbioqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3aXRoIHRoZVxuKiogU29mdHdhcmUgb3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVkIGluXG4qKiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJtc1xuKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHA6Ly93d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXJcbioqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHA6Ly93d3cucXQuaW8vY29udGFjdC11cy5cbioqXG4qKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2VcbioqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXJcbioqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEgb3IgdmVyc2lvbiAzIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZVxuKiogU29mdHdhcmUgRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuTEdQTHYyMSBhbmRcbioqIExJQ0VOU0UuTEdQTHYzIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZVxuKiogZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvIGVuc3VyZSB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4qKiByZXF1aXJlbWVudHMgd2lsbCBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC5odG1sIGFuZFxuKiogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL29sZC1saWNlbnNlcy9sZ3BsLTIuMS5odG1sLlxuKipcbioqIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIFRoZSBRdCBDb21wYW55IGdpdmVzIHlvdSBjZXJ0YWluIGFkZGl0aW9uYWxcbioqIHJpZ2h0cy4gVGhlc2UgcmlnaHRzIGFyZSBkZXNjcmliZWQgaW4gVGhlIFF0IENvbXBhbnkgTEdQTCBFeGNlcHRpb25cbioqIHZlcnNpb24gMS4xLCBpbmNsdWRlZCBpbiB0aGUgZmlsZSBMR1BMX0VYQ0VQVElPTi50eHQgaW4gdGhpcyBwYWNrYWdlLlxuKipcbioqICRRVF9FTkRfTElDRU5TRSRcbioqXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIFFXZWJDaGFubmVsTWVzc2FnZVR5cGVzID0ge1xuICAgIHNpZ25hbDogMSxcbiAgICBwcm9wZXJ0eVVwZGF0ZTogMixcbiAgICBpbml0OiAzLFxuICAgIGlkbGU6IDQsXG4gICAgZGVidWc6IDUsXG4gICAgaW52b2tlTWV0aG9kOiA2LFxuICAgIGNvbm5lY3RUb1NpZ25hbDogNyxcbiAgICBkaXNjb25uZWN0RnJvbVNpZ25hbDogOCxcbiAgICBzZXRQcm9wZXJ0eTogOSxcbiAgICByZXNwb25zZTogMTAsXG59O1xuXG52YXIgUVdlYkNoYW5uZWwgPSBmdW5jdGlvbih0cmFuc3BvcnQsIGluaXRDYWxsYmFjaylcbntcbiAgICBpZiAodHlwZW9mIHRyYW5zcG9ydCAhPT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgdHJhbnNwb3J0LnNlbmQgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiVGhlIFFXZWJDaGFubmVsIGV4cGVjdHMgYSB0cmFuc3BvcnQgb2JqZWN0IHdpdGggYSBzZW5kIGZ1bmN0aW9uIGFuZCBvbm1lc3NhZ2UgY2FsbGJhY2sgcHJvcGVydHkuXCIgK1xuICAgICAgICAgICAgICAgICAgICAgIFwiIEdpdmVuIGlzOiB0cmFuc3BvcnQ6IFwiICsgdHlwZW9mKHRyYW5zcG9ydCkgKyBcIiwgdHJhbnNwb3J0LnNlbmQ6IFwiICsgdHlwZW9mKHRyYW5zcG9ydC5zZW5kKSk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgY2hhbm5lbCA9IHRoaXM7XG4gICAgdGhpcy50cmFuc3BvcnQgPSB0cmFuc3BvcnQ7XG5cbiAgICB0aGlzLnNlbmQgPSBmdW5jdGlvbihkYXRhKVxuICAgIHtcbiAgICAgICAgaWYgKHR5cGVvZihkYXRhKSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgZGF0YSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGNoYW5uZWwudHJhbnNwb3J0LnNlbmQoZGF0YSk7XG4gICAgfVxuXG4gICAgdGhpcy50cmFuc3BvcnQub25tZXNzYWdlID0gZnVuY3Rpb24obWVzc2FnZSlcbiAgICB7XG4gICAgICAgIHZhciBkYXRhID0gbWVzc2FnZS5kYXRhO1xuICAgICAgICBpZiAodHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIGRhdGEgPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAoZGF0YS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFFXZWJDaGFubmVsTWVzc2FnZVR5cGVzLnNpZ25hbDpcbiAgICAgICAgICAgICAgICBjaGFubmVsLmhhbmRsZVNpZ25hbChkYXRhKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUVdlYkNoYW5uZWxNZXNzYWdlVHlwZXMucmVzcG9uc2U6XG4gICAgICAgICAgICAgICAgY2hhbm5lbC5oYW5kbGVSZXNwb25zZShkYXRhKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUVdlYkNoYW5uZWxNZXNzYWdlVHlwZXMucHJvcGVydHlVcGRhdGU6XG4gICAgICAgICAgICAgICAgY2hhbm5lbC5oYW5kbGVQcm9wZXJ0eVVwZGF0ZShkYXRhKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcImludmFsaWQgbWVzc2FnZSByZWNlaXZlZDpcIiwgbWVzc2FnZS5kYXRhKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZXhlY0NhbGxiYWNrcyA9IHt9O1xuICAgIHRoaXMuZXhlY0lkID0gMDtcbiAgICB0aGlzLmV4ZWMgPSBmdW5jdGlvbihkYXRhLCBjYWxsYmFjaylcbiAgICB7XG4gICAgICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgICAgICAgIC8vIGlmIG5vIGNhbGxiYWNrIGlzIGdpdmVuLCBzZW5kIGRpcmVjdGx5XG4gICAgICAgICAgICBjaGFubmVsLnNlbmQoZGF0YSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5uZWwuZXhlY0lkID09PSBOdW1iZXIuTUFYX1ZBTFVFKSB7XG4gICAgICAgICAgICAvLyB3cmFwXG4gICAgICAgICAgICBjaGFubmVsLmV4ZWNJZCA9IE51bWJlci5NSU5fVkFMVUU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGEuaGFzT3duUHJvcGVydHkoXCJpZFwiKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkNhbm5vdCBleGVjIG1lc3NhZ2Ugd2l0aCBwcm9wZXJ0eSBpZDogXCIgKyBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZGF0YS5pZCA9IGNoYW5uZWwuZXhlY0lkKys7XG4gICAgICAgIGNoYW5uZWwuZXhlY0NhbGxiYWNrc1tkYXRhLmlkXSA9IGNhbGxiYWNrO1xuICAgICAgICBjaGFubmVsLnNlbmQoZGF0YSk7XG4gICAgfTtcblxuICAgIHRoaXMub2JqZWN0cyA9IHt9O1xuXG4gICAgdGhpcy5oYW5kbGVTaWduYWwgPSBmdW5jdGlvbihtZXNzYWdlKVxuICAgIHtcbiAgICAgICAgdmFyIG9iamVjdCA9IGNoYW5uZWwub2JqZWN0c1ttZXNzYWdlLm9iamVjdF07XG4gICAgICAgIGlmIChvYmplY3QpIHtcbiAgICAgICAgICAgIG9iamVjdC5zaWduYWxFbWl0dGVkKG1lc3NhZ2Uuc2lnbmFsLCBtZXNzYWdlLmFyZ3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiVW5oYW5kbGVkIHNpZ25hbDogXCIgKyBtZXNzYWdlLm9iamVjdCArIFwiOjpcIiArIG1lc3NhZ2Uuc2lnbmFsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuaGFuZGxlUmVzcG9uc2UgPSBmdW5jdGlvbihtZXNzYWdlKVxuICAgIHtcbiAgICAgICAgaWYgKCFtZXNzYWdlLmhhc093blByb3BlcnR5KFwiaWRcIikpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJJbnZhbGlkIHJlc3BvbnNlIG1lc3NhZ2UgcmVjZWl2ZWQ6IFwiLCBKU09OLnN0cmluZ2lmeShtZXNzYWdlKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY2hhbm5lbC5leGVjQ2FsbGJhY2tzW21lc3NhZ2UuaWRdKG1lc3NhZ2UuZGF0YSk7XG4gICAgICAgIGRlbGV0ZSBjaGFubmVsLmV4ZWNDYWxsYmFja3NbbWVzc2FnZS5pZF07XG4gICAgfVxuXG4gICAgdGhpcy5oYW5kbGVQcm9wZXJ0eVVwZGF0ZSA9IGZ1bmN0aW9uKG1lc3NhZ2UpXG4gICAge1xuICAgICAgICBmb3IgKHZhciBpIGluIG1lc3NhZ2UuZGF0YSkge1xuICAgICAgICAgICAgdmFyIGRhdGEgPSBtZXNzYWdlLmRhdGFbaV07XG4gICAgICAgICAgICB2YXIgb2JqZWN0ID0gY2hhbm5lbC5vYmplY3RzW2RhdGEub2JqZWN0XTtcbiAgICAgICAgICAgIGlmIChvYmplY3QpIHtcbiAgICAgICAgICAgICAgICBvYmplY3QucHJvcGVydHlVcGRhdGUoZGF0YS5zaWduYWxzLCBkYXRhLnByb3BlcnRpZXMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJVbmhhbmRsZWQgcHJvcGVydHkgdXBkYXRlOiBcIiArIGRhdGEub2JqZWN0ICsgXCI6OlwiICsgZGF0YS5zaWduYWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNoYW5uZWwuZXhlYyh7dHlwZTogUVdlYkNoYW5uZWxNZXNzYWdlVHlwZXMuaWRsZX0pO1xuICAgIH1cblxuICAgIHRoaXMuZGVidWcgPSBmdW5jdGlvbihtZXNzYWdlKVxuICAgIHtcbiAgICAgICAgY2hhbm5lbC5zZW5kKHt0eXBlOiBRV2ViQ2hhbm5lbE1lc3NhZ2VUeXBlcy5kZWJ1ZywgZGF0YTogbWVzc2FnZX0pO1xuICAgIH07XG5cbiAgICBjaGFubmVsLmV4ZWMoe3R5cGU6IFFXZWJDaGFubmVsTWVzc2FnZVR5cGVzLmluaXR9LCBmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgIGZvciAodmFyIG9iamVjdE5hbWUgaW4gZGF0YSkge1xuICAgICAgICAgICAgdmFyIG9iamVjdCA9IG5ldyBRT2JqZWN0KG9iamVjdE5hbWUsIGRhdGFbb2JqZWN0TmFtZV0sIGNoYW5uZWwpO1xuICAgICAgICB9XG4gICAgICAgIC8vIG5vdyB1bndyYXAgcHJvcGVydGllcywgd2hpY2ggbWlnaHQgcmVmZXJlbmNlIG90aGVyIHJlZ2lzdGVyZWQgb2JqZWN0c1xuICAgICAgICBmb3IgKHZhciBvYmplY3ROYW1lIGluIGNoYW5uZWwub2JqZWN0cykge1xuICAgICAgICAgICAgY2hhbm5lbC5vYmplY3RzW29iamVjdE5hbWVdLnVud3JhcFByb3BlcnRpZXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5pdENhbGxiYWNrKSB7XG4gICAgICAgICAgICBpbml0Q2FsbGJhY2soY2hhbm5lbCk7XG4gICAgICAgIH1cbiAgICAgICAgY2hhbm5lbC5leGVjKHt0eXBlOiBRV2ViQ2hhbm5lbE1lc3NhZ2VUeXBlcy5pZGxlfSk7XG4gICAgfSk7XG59O1xuXG5mdW5jdGlvbiBRT2JqZWN0KG5hbWUsIGRhdGEsIHdlYkNoYW5uZWwpXG57XG4gICAgdGhpcy5fX2lkX18gPSBuYW1lO1xuICAgIHdlYkNoYW5uZWwub2JqZWN0c1tuYW1lXSA9IHRoaXM7XG5cbiAgICAvLyBMaXN0IG9mIGNhbGxiYWNrcyB0aGF0IGdldCBpbnZva2VkIHVwb24gc2lnbmFsIGVtaXNzaW9uXG4gICAgdGhpcy5fX29iamVjdFNpZ25hbHNfXyA9IHt9O1xuXG4gICAgLy8gQ2FjaGUgb2YgYWxsIHByb3BlcnRpZXMsIHVwZGF0ZWQgd2hlbiBhIG5vdGlmeSBzaWduYWwgaXMgZW1pdHRlZFxuICAgIHRoaXMuX19wcm9wZXJ0eUNhY2hlX18gPSB7fTtcblxuICAgIHZhciBvYmplY3QgPSB0aGlzO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgdGhpcy51bndyYXBRT2JqZWN0ID0gZnVuY3Rpb24ocmVzcG9uc2UpXG4gICAge1xuICAgICAgICBpZiAocmVzcG9uc2UgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgLy8gc3VwcG9ydCBsaXN0IG9mIG9iamVjdHNcbiAgICAgICAgICAgIHZhciByZXQgPSBuZXcgQXJyYXkocmVzcG9uc2UubGVuZ3RoKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzcG9uc2UubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICByZXRbaV0gPSBvYmplY3QudW53cmFwUU9iamVjdChyZXNwb25zZVtpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmVzcG9uc2VcbiAgICAgICAgICAgIHx8ICFyZXNwb25zZVtcIl9fUU9iamVjdCpfX1wiXVxuICAgICAgICAgICAgfHwgcmVzcG9uc2VbXCJpZFwiXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgb2JqZWN0SWQgPSByZXNwb25zZS5pZDtcbiAgICAgICAgaWYgKHdlYkNoYW5uZWwub2JqZWN0c1tvYmplY3RJZF0pXG4gICAgICAgICAgICByZXR1cm4gd2ViQ2hhbm5lbC5vYmplY3RzW29iamVjdElkXTtcblxuICAgICAgICBpZiAoIXJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJDYW5ub3QgdW53cmFwIHVua25vd24gUU9iamVjdCBcIiArIG9iamVjdElkICsgXCIgd2l0aG91dCBkYXRhLlwiKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBxT2JqZWN0ID0gbmV3IFFPYmplY3QoIG9iamVjdElkLCByZXNwb25zZS5kYXRhLCB3ZWJDaGFubmVsICk7XG4gICAgICAgIHFPYmplY3QuZGVzdHJveWVkLmNvbm5lY3QoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBpZiAod2ViQ2hhbm5lbC5vYmplY3RzW29iamVjdElkXSA9PT0gcU9iamVjdCkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSB3ZWJDaGFubmVsLm9iamVjdHNbb2JqZWN0SWRdO1xuICAgICAgICAgICAgICAgIC8vIHJlc2V0IHRoZSBub3cgZGVsZXRlZCBRT2JqZWN0IHRvIGFuIGVtcHR5IHt9IG9iamVjdFxuICAgICAgICAgICAgICAgIC8vIGp1c3QgYXNzaWduaW5nIHt9IHRob3VnaCB3b3VsZCBub3QgaGF2ZSB0aGUgZGVzaXJlZCBlZmZlY3QsIGJ1dCB0aGVcbiAgICAgICAgICAgICAgICAvLyBiZWxvdyBhbHNvIGVuc3VyZXMgYWxsIGV4dGVybmFsIHJlZmVyZW5jZXMgd2lsbCBzZWUgdGhlIGVtcHR5IG1hcFxuICAgICAgICAgICAgICAgIC8vIE5PVEU6IHRoaXMgZGV0b3VyIGlzIG5lY2Vzc2FyeSB0byB3b3JrYXJvdW5kIFFUQlVHLTQwMDIxXG4gICAgICAgICAgICAgICAgdmFyIHByb3BlcnR5TmFtZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eU5hbWUgaW4gcU9iamVjdCkge1xuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLnB1c2gocHJvcGVydHlOYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaWR4IGluIHByb3BlcnR5TmFtZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHFPYmplY3RbcHJvcGVydHlOYW1lc1tpZHhdXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBoZXJlIHdlIGFyZSBhbHJlYWR5IGluaXRpYWxpemVkLCBhbmQgdGh1cyBtdXN0IGRpcmVjdGx5IHVud3JhcCB0aGUgcHJvcGVydGllc1xuICAgICAgICBxT2JqZWN0LnVud3JhcFByb3BlcnRpZXMoKTtcbiAgICAgICAgcmV0dXJuIHFPYmplY3Q7XG4gICAgfVxuXG4gICAgdGhpcy51bndyYXBQcm9wZXJ0aWVzID0gZnVuY3Rpb24oKVxuICAgIHtcbiAgICAgICAgZm9yICh2YXIgcHJvcGVydHlJZHggaW4gb2JqZWN0Ll9fcHJvcGVydHlDYWNoZV9fKSB7XG4gICAgICAgICAgICBvYmplY3QuX19wcm9wZXJ0eUNhY2hlX19bcHJvcGVydHlJZHhdID0gb2JqZWN0LnVud3JhcFFPYmplY3Qob2JqZWN0Ll9fcHJvcGVydHlDYWNoZV9fW3Byb3BlcnR5SWR4XSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRTaWduYWwoc2lnbmFsRGF0YSwgaXNQcm9wZXJ0eU5vdGlmeVNpZ25hbClcbiAgICB7XG4gICAgICAgIHZhciBzaWduYWxOYW1lID0gc2lnbmFsRGF0YVswXTtcbiAgICAgICAgdmFyIHNpZ25hbEluZGV4ID0gc2lnbmFsRGF0YVsxXTtcbiAgICAgICAgb2JqZWN0W3NpZ25hbE5hbWVdID0ge1xuICAgICAgICAgICAgY29ubmVjdDogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mKGNhbGxiYWNrKSAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJCYWQgY2FsbGJhY2sgZ2l2ZW4gdG8gY29ubmVjdCB0byBzaWduYWwgXCIgKyBzaWduYWxOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG9iamVjdC5fX29iamVjdFNpZ25hbHNfX1tzaWduYWxJbmRleF0gPSBvYmplY3QuX19vYmplY3RTaWduYWxzX19bc2lnbmFsSW5kZXhdIHx8IFtdO1xuICAgICAgICAgICAgICAgIG9iamVjdC5fX29iamVjdFNpZ25hbHNfX1tzaWduYWxJbmRleF0ucHVzaChjYWxsYmFjayk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWlzUHJvcGVydHlOb3RpZnlTaWduYWwgJiYgc2lnbmFsTmFtZSAhPT0gXCJkZXN0cm95ZWRcIikge1xuICAgICAgICAgICAgICAgICAgICAvLyBvbmx5IHJlcXVpcmVkIGZvciBcInB1cmVcIiBzaWduYWxzLCBoYW5kbGVkIHNlcGFyYXRlbHkgZm9yIHByb3BlcnRpZXMgaW4gcHJvcGVydHlVcGRhdGVcbiAgICAgICAgICAgICAgICAgICAgLy8gYWxzbyBub3RlIHRoYXQgd2UgYWx3YXlzIGdldCBub3RpZmllZCBhYm91dCB0aGUgZGVzdHJveWVkIHNpZ25hbFxuICAgICAgICAgICAgICAgICAgICB3ZWJDaGFubmVsLmV4ZWMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogUVdlYkNoYW5uZWxNZXNzYWdlVHlwZXMuY29ubmVjdFRvU2lnbmFsLFxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiBvYmplY3QuX19pZF9fLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFsOiBzaWduYWxJbmRleFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGlzY29ubmVjdDogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mKGNhbGxiYWNrKSAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJCYWQgY2FsbGJhY2sgZ2l2ZW4gdG8gZGlzY29ubmVjdCBmcm9tIHNpZ25hbCBcIiArIHNpZ25hbE5hbWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9iamVjdC5fX29iamVjdFNpZ25hbHNfX1tzaWduYWxJbmRleF0gPSBvYmplY3QuX19vYmplY3RTaWduYWxzX19bc2lnbmFsSW5kZXhdIHx8IFtdO1xuICAgICAgICAgICAgICAgIHZhciBpZHggPSBvYmplY3QuX19vYmplY3RTaWduYWxzX19bc2lnbmFsSW5kZXhdLmluZGV4T2YoY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJDYW5ub3QgZmluZCBjb25uZWN0aW9uIG9mIHNpZ25hbCBcIiArIHNpZ25hbE5hbWUgKyBcIiB0byBcIiArIGNhbGxiYWNrLm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9iamVjdC5fX29iamVjdFNpZ25hbHNfX1tzaWduYWxJbmRleF0uc3BsaWNlKGlkeCwgMSk7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1Byb3BlcnR5Tm90aWZ5U2lnbmFsICYmIG9iamVjdC5fX29iamVjdFNpZ25hbHNfX1tzaWduYWxJbmRleF0ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgcmVxdWlyZWQgZm9yIFwicHVyZVwiIHNpZ25hbHMsIGhhbmRsZWQgc2VwYXJhdGVseSBmb3IgcHJvcGVydGllcyBpbiBwcm9wZXJ0eVVwZGF0ZVxuICAgICAgICAgICAgICAgICAgICB3ZWJDaGFubmVsLmV4ZWMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogUVdlYkNoYW5uZWxNZXNzYWdlVHlwZXMuZGlzY29ubmVjdEZyb21TaWduYWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6IG9iamVjdC5fX2lkX18sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaWduYWw6IHNpZ25hbEluZGV4XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VzIGFsbCBjYWxsYmFja3MgZm9yIHRoZSBnaXZlbiBzaWduYWxuYW1lLiBBbHNvIHdvcmtzIGZvciBwcm9wZXJ0eSBub3RpZnkgY2FsbGJhY2tzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGludm9rZVNpZ25hbENhbGxiYWNrcyhzaWduYWxOYW1lLCBzaWduYWxBcmdzKVxuICAgIHtcbiAgICAgICAgdmFyIGNvbm5lY3Rpb25zID0gb2JqZWN0Ll9fb2JqZWN0U2lnbmFsc19fW3NpZ25hbE5hbWVdO1xuICAgICAgICBpZiAoY29ubmVjdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbm5lY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjay5hcHBseShjYWxsYmFjaywgc2lnbmFsQXJncyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucHJvcGVydHlVcGRhdGUgPSBmdW5jdGlvbihzaWduYWxzLCBwcm9wZXJ0eU1hcClcbiAgICB7XG4gICAgICAgIC8vIHVwZGF0ZSBwcm9wZXJ0eSBjYWNoZVxuICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eUluZGV4IGluIHByb3BlcnR5TWFwKSB7XG4gICAgICAgICAgICB2YXIgcHJvcGVydHlWYWx1ZSA9IHByb3BlcnR5TWFwW3Byb3BlcnR5SW5kZXhdO1xuICAgICAgICAgICAgb2JqZWN0Ll9fcHJvcGVydHlDYWNoZV9fW3Byb3BlcnR5SW5kZXhdID0gcHJvcGVydHlWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAodmFyIHNpZ25hbE5hbWUgaW4gc2lnbmFscykge1xuICAgICAgICAgICAgLy8gSW52b2tlIGFsbCBjYWxsYmFja3MsIGFzIHNpZ25hbEVtaXR0ZWQoKSBkb2VzIG5vdC4gVGhpcyBlbnN1cmVzIHRoZVxuICAgICAgICAgICAgLy8gcHJvcGVydHkgY2FjaGUgaXMgdXBkYXRlZCBiZWZvcmUgdGhlIGNhbGxiYWNrcyBhcmUgaW52b2tlZC5cbiAgICAgICAgICAgIGludm9rZVNpZ25hbENhbGxiYWNrcyhzaWduYWxOYW1lLCBzaWduYWxzW3NpZ25hbE5hbWVdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2lnbmFsRW1pdHRlZCA9IGZ1bmN0aW9uKHNpZ25hbE5hbWUsIHNpZ25hbEFyZ3MpXG4gICAge1xuICAgICAgICBpbnZva2VTaWduYWxDYWxsYmFja3Moc2lnbmFsTmFtZSwgc2lnbmFsQXJncyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkTWV0aG9kKG1ldGhvZERhdGEpXG4gICAge1xuICAgICAgICB2YXIgbWV0aG9kTmFtZSA9IG1ldGhvZERhdGFbMF07XG4gICAgICAgIHZhciBtZXRob2RJZHggPSBtZXRob2REYXRhWzFdO1xuICAgICAgICBvYmplY3RbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgICAgICB2YXIgY2FsbGJhY2s7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYXJndW1lbnRzW2ldID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYXJncy5wdXNoKGFyZ3VtZW50c1tpXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHdlYkNoYW5uZWwuZXhlYyh7XG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFFXZWJDaGFubmVsTWVzc2FnZVR5cGVzLmludm9rZU1ldGhvZCxcbiAgICAgICAgICAgICAgICBcIm9iamVjdFwiOiBvYmplY3QuX19pZF9fLFxuICAgICAgICAgICAgICAgIFwibWV0aG9kXCI6IG1ldGhvZElkeCxcbiAgICAgICAgICAgICAgICBcImFyZ3NcIjogYXJnc1xuICAgICAgICAgICAgfSwgZnVuY3Rpb24ocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gb2JqZWN0LnVud3JhcFFPYmplY3QocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIChjYWxsYmFjaykocmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJpbmRHZXR0ZXJTZXR0ZXIocHJvcGVydHlJbmZvKVxuICAgIHtcbiAgICAgICAgdmFyIHByb3BlcnR5SW5kZXggPSBwcm9wZXJ0eUluZm9bMF07XG4gICAgICAgIHZhciBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eUluZm9bMV07XG4gICAgICAgIHZhciBub3RpZnlTaWduYWxEYXRhID0gcHJvcGVydHlJbmZvWzJdO1xuICAgICAgICAvLyBpbml0aWFsaXplIHByb3BlcnR5IGNhY2hlIHdpdGggY3VycmVudCB2YWx1ZVxuICAgICAgICAvLyBOT1RFOiBpZiB0aGlzIGlzIGFuIG9iamVjdCwgaXQgaXMgbm90IGRpcmVjdGx5IHVud3JhcHBlZCBhcyBpdCBtaWdodFxuICAgICAgICAvLyByZWZlcmVuY2Ugb3RoZXIgUU9iamVjdCB0aGF0IHdlIGRvIG5vdCBrbm93IHlldFxuICAgICAgICBvYmplY3QuX19wcm9wZXJ0eUNhY2hlX19bcHJvcGVydHlJbmRleF0gPSBwcm9wZXJ0eUluZm9bM107XG5cbiAgICAgICAgaWYgKG5vdGlmeVNpZ25hbERhdGEpIHtcbiAgICAgICAgICAgIGlmIChub3RpZnlTaWduYWxEYXRhWzBdID09PSAxKSB7XG4gICAgICAgICAgICAgICAgLy8gc2lnbmFsIG5hbWUgaXMgb3B0aW1pemVkIGF3YXksIHJlY29uc3RydWN0IHRoZSBhY3R1YWwgbmFtZVxuICAgICAgICAgICAgICAgIG5vdGlmeVNpZ25hbERhdGFbMF0gPSBwcm9wZXJ0eU5hbWUgKyBcIkNoYW5nZWRcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFkZFNpZ25hbChub3RpZnlTaWduYWxEYXRhLCB0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIHByb3BlcnR5TmFtZSwge1xuICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIHByb3BlcnR5VmFsdWUgPSBvYmplY3QuX19wcm9wZXJ0eUNhY2hlX19bcHJvcGVydHlJbmRleF07XG4gICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHNob3VsZG4ndCBoYXBwZW5cbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiVW5kZWZpbmVkIHZhbHVlIGluIHByb3BlcnR5IGNhY2hlIGZvciBwcm9wZXJ0eSBcXFwiXCIgKyBwcm9wZXJ0eU5hbWUgKyBcIlxcXCIgaW4gb2JqZWN0IFwiICsgb2JqZWN0Ll9faWRfXyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3BlcnR5VmFsdWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0OiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlByb3BlcnR5IHNldHRlciBmb3IgXCIgKyBwcm9wZXJ0eU5hbWUgKyBcIiBjYWxsZWQgd2l0aCB1bmRlZmluZWQgdmFsdWUhXCIpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9iamVjdC5fX3Byb3BlcnR5Q2FjaGVfX1twcm9wZXJ0eUluZGV4XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIHdlYkNoYW5uZWwuZXhlYyh7XG4gICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBRV2ViQ2hhbm5lbE1lc3NhZ2VUeXBlcy5zZXRQcm9wZXJ0eSxcbiAgICAgICAgICAgICAgICAgICAgXCJvYmplY3RcIjogb2JqZWN0Ll9faWRfXyxcbiAgICAgICAgICAgICAgICAgICAgXCJwcm9wZXJ0eVwiOiBwcm9wZXJ0eUluZGV4LFxuICAgICAgICAgICAgICAgICAgICBcInZhbHVlXCI6IHZhbHVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgZGF0YS5tZXRob2RzLmZvckVhY2goYWRkTWV0aG9kKTtcblxuICAgIGRhdGEucHJvcGVydGllcy5mb3JFYWNoKGJpbmRHZXR0ZXJTZXR0ZXIpO1xuXG4gICAgZGF0YS5zaWduYWxzLmZvckVhY2goZnVuY3Rpb24oc2lnbmFsKSB7IGFkZFNpZ25hbChzaWduYWwsIGZhbHNlKTsgfSk7XG5cbiAgICBmb3IgKHZhciBuYW1lIGluIGRhdGEuZW51bXMpIHtcbiAgICAgICAgb2JqZWN0W25hbWVdID0gZGF0YS5lbnVtc1tuYW1lXTtcbiAgICB9XG59XG5cbi8vcmVxdWlyZWQgZm9yIHVzZSB3aXRoIG5vZGVqc1xuaWYgKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgICAgIFFXZWJDaGFubmVsOiBRV2ViQ2hhbm5lbFxuICAgIH07XG59XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4uL34vcXdlYmNoYW5uZWwvcXdlYmNoYW5uZWwuanNcbiAqKiBtb2R1bGUgaWQgPSA5M1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIl0sInNvdXJjZVJvb3QiOiIifQ==
\ No newline at end of file