TranslatePress – Translate Multilingual sites - Version 1.7.6

Version Description

  • Added a help wizard for the Visual Editor
  • Added Puerto Rico flag
  • Fixed issue with custom links on term archive pages where the term had a translated slug
  • Added a recommended plugins section on the addons tab.
  • Fixed a display issues in Strings interface for Safari
Download this release

Release Info

Developer madalin.ungureanu
Plugin Icon 128x128 TranslatePress – Translate Multilingual sites
Version 1.7.6
Comparing to
See all releases

Code changes from version 1.7.5 to 1.7.6

assets/css/trp-back-end-style.css CHANGED
@@ -186,4 +186,25 @@ table.trp-adst-list-option th{
186
  #trp_advanced_tab_content_table{
187
  margin-top: 25px;
188
  font-size: 15px;
189
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
186
  #trp_advanced_tab_content_table{
187
  margin-top: 25px;
188
  font-size: 15px;
189
+ }
190
+
191
+ /* Add-ons page */
192
+
193
+ .trp-add-ons-plugins-container{
194
+ display: flex;
195
+ justify-content: start;
196
+ }
197
+
198
+ .trp-add-ons-plugins-column{
199
+ padding-right: 40px;
200
+ width: 50%;
201
+ }
202
+
203
+ a.trp-recommended-learn-more{
204
+ margin-right: 10px;
205
+ text-decoration: none;
206
+ }
207
+
208
+ .trp-recommended-buttons{
209
+ margin-bottom: 40px;
210
+ }
assets/css/trp-editor.css CHANGED
@@ -602,6 +602,7 @@ body {
602
  left: 0;
603
  border-right: 2px solid #ddd;
604
  background: #eee;
 
605
  }
606
 
607
  .trp-controls-container {
@@ -610,6 +611,7 @@ body {
610
  top: 46px;
611
  bottom: 0px;
612
  width: inherit;
 
613
  }
614
 
615
  .trp-controls-container.trp-show-editors-navigation {
@@ -879,6 +881,31 @@ a:hover {
879
  transform: translate3d(-50%, calc(-100% - 16px), 0);
880
  }
881
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
882
  /*
883
  View as Dropdown
884
  */
@@ -911,9 +938,10 @@ a:hover {
911
  padding: 3px;
912
  }
913
 
914
- span.select2-container {
 
 
915
  margin-bottom: 10px;
916
- /*width: 100% !important;*/
917
  }
918
 
919
  #trp-lists {
@@ -948,6 +976,83 @@ span.select2-container {
948
  min-width: 85px;
949
  }
950
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
951
  .trp-toggle-languages,
952
  .tablenav-pages-navspan {
953
  -webkit-touch-callout: none;
@@ -970,6 +1075,110 @@ span.select2-container {
970
  display: none;
971
  }
972
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
973
  /*
974
  * Loading animation
975
  */
@@ -1347,6 +1556,7 @@ Translation Input component
1347
 
1348
  select.trp-select-all {
1349
  width: 20px;
 
1350
  padding: 0 13px !important;
1351
  margin: -7px -10px 0px 2px;
1352
  }
602
  left: 0;
603
  border-right: 2px solid #ddd;
604
  background: #eee;
605
+ z-index: 1;
606
  }
607
 
608
  .trp-controls-container {
611
  top: 46px;
612
  bottom: 0px;
613
  width: inherit;
614
+ transition: all 0.3s ease;
615
  }
616
 
617
  .trp-controls-container.trp-show-editors-navigation {
881
  transform: translate3d(-50%, calc(-100% - 16px), 0);
882
  }
883
 
884
+ .trp-close-tooltip {
885
+ cursor: pointer;
886
+ font: 400 20px/40px dashicons;
887
+ display: block;
888
+ width: 25px;
889
+ height: 25px;
890
+ border: none;
891
+ color: #ddd;
892
+ float: right;
893
+ text-decoration: none;
894
+ margin: -12px -6px 0 0;
895
+ }
896
+
897
+ .trp-close-tooltip:after {
898
+ content: "\F335";
899
+ }
900
+
901
+ .trp-close-tooltip:hover {
902
+ font-weight: bold;
903
+ }
904
+
905
+ .trp-tooltip-text {
906
+ margin-top: 7px;
907
+ }
908
+
909
  /*
910
  View as Dropdown
911
  */
938
  padding: 3px;
939
  }
940
 
941
+ #trp-language-switch,
942
+ #trp-string-list,
943
+ #trp-view-as {
944
  margin-bottom: 10px;
 
945
  }
946
 
947
  #trp-lists {
976
  min-width: 85px;
977
  }
978
 
979
+ .trp-button-container {
980
+ position: relative;
981
+ }
982
+
983
+ .trp-button-container:hover .trp-dismissible-tooltip,
984
+ .trp-dismissible-tooltip:hover,
985
+ .trp-button-container:hover .trp-tooltip-triangle {
986
+ opacity: 0.95;
987
+ visibility: visible;
988
+ }
989
+
990
+ .trp-tooltip-triangle {
991
+ z-index: 2;
992
+ position: absolute;
993
+ visibility: hidden;
994
+ opacity: 0;
995
+ left: 50%;
996
+ top: 30px;
997
+ transition: all 0.3s ease;
998
+ width: 0;
999
+ height: 0;
1000
+ border-style: solid;
1001
+ border-width: 0px 6px 6px 6px;
1002
+ border-color: transparent transparent #23282D transparent;
1003
+ }
1004
+
1005
+ .trp-dismissible-tooltip {
1006
+ z-index: 9999999;
1007
+ text-transform: none;
1008
+ font-size: 14px;
1009
+ position: absolute;
1010
+ top: 36px;
1011
+ color: white;
1012
+ background: #23282D;
1013
+ padding: 8px 12px;
1014
+ width: -webkit-max-content;
1015
+ width: -moz-max-content;
1016
+ width: max-content;
1017
+ max-width: 150px;
1018
+ opacity: 0;
1019
+ border-top: 20px transparent;
1020
+ border-radius: 4px;
1021
+ -webkit-transform: translate3d(-50%, 0%, 0);
1022
+ transform: translate3d(-50%, 0%, 0);
1023
+ transition: all 0.3s ease;
1024
+ white-space: normal;
1025
+ line-height: initial;
1026
+ text-align: center;
1027
+ visibility: hidden;
1028
+ }
1029
+
1030
+ .trp-previous-tooltip .trp-dismissible-tooltip {
1031
+ left: 86px;
1032
+ }
1033
+
1034
+ .trp-next-tooltip .trp-dismissible-tooltip {
1035
+ left: -2px;
1036
+ }
1037
+
1038
+ .trp-save-tooltip .trp-dismissible-tooltip {
1039
+ left: 40px;
1040
+ top: 32px;
1041
+ }
1042
+
1043
+ .trp-save-tooltip .trp-tooltip-triangle {
1044
+ top: 26px;
1045
+ }
1046
+
1047
+ .trp-discardall-tooltip .trp-tooltip-triangle {
1048
+ top: 18px;
1049
+ }
1050
+
1051
+ .trp-discardall-tooltip .trp-dismissible-tooltip {
1052
+ left: 4px;
1053
+ top: 24px;
1054
+ }
1055
+
1056
  .trp-toggle-languages,
1057
  .tablenav-pages-navspan {
1058
  -webkit-touch-callout: none;
1075
  display: none;
1076
  }
1077
 
1078
+ .trp-help-toggle {
1079
+ padding: 13px 7px 13px 7px;
1080
+ width: 20px;
1081
+ height: 20px;
1082
+ cursor: pointer;
1083
+ box-shadow: none;
1084
+ -webkit-appearance: none;
1085
+ background: 0 0;
1086
+ color: #555d66;
1087
+ border: none;
1088
+ }
1089
+
1090
+ .trp-help-toggle:before {
1091
+ padding: 4px;
1092
+ }
1093
+
1094
+ .trp-help-toggle.trp-help-toggle-never-opened:before {
1095
+ -webkit-animation: blinker 2s linear infinite;
1096
+ animation: blinker 2s linear infinite;
1097
+ border-radius: 100%;
1098
+ }
1099
+
1100
+ @-webkit-keyframes blinker {
1101
+ 20% {
1102
+ box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
1103
+ padding: 4px;
1104
+ }
1105
+ }
1106
+
1107
+ @keyframes blinker {
1108
+ 20% {
1109
+ box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
1110
+ padding: 4px;
1111
+ }
1112
+ }
1113
+
1114
+ .trp-help-toggle:hover,
1115
+ .trp-help-toggle.trp-help-toggle-open {
1116
+ color: #0073aa;
1117
+ }
1118
+
1119
+ .trp-help-toggle:focus {
1120
+ outline: 0;
1121
+ }
1122
+
1123
+ .trp-help-toggle:focus:before {
1124
+ box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
1125
+ border-radius: 100%;
1126
+ padding: 4px;
1127
+ }
1128
+
1129
+ .trp-help-panel {
1130
+ position: absolute;
1131
+ background: #fff;
1132
+ border-bottom: 1px solid #ddd;
1133
+ height: 173px;
1134
+ width: 100%;
1135
+ }
1136
+
1137
+ .trp-inner-panel {
1138
+ padding: 12px;
1139
+ overflow-y: auto;
1140
+ height: 114px;
1141
+ }
1142
+
1143
+ .trp-help-panel-pagination {
1144
+ display: flex;
1145
+ justify-content: space-between;
1146
+ }
1147
+
1148
+ .trp-controls-container.help-panel-open {
1149
+ top: 221px;
1150
+ }
1151
+
1152
+ .trp-edit-icon-inline {
1153
+ margin-bottom: -8px;
1154
+ }
1155
+
1156
+ .trp-highlight-for-panel {
1157
+ border: 2px solid red !important;
1158
+ }
1159
+
1160
+ a.trp-link-button {
1161
+ cursor: pointer;
1162
+ -webkit-user-select: none;
1163
+ -moz-user-select: none;
1164
+ -ms-user-select: none;
1165
+ user-select: none;
1166
+ color: #0073aa;
1167
+ }
1168
+
1169
+ a.trp-link-button:hover {
1170
+ color: #00a0d2;
1171
+ }
1172
+
1173
+ a.trp-link-button.trp-link-button-disabled {
1174
+ color: initial;
1175
+ }
1176
+
1177
+ .trp-help-panel-pagination {
1178
+ padding: 7px 12px 0 12px;
1179
+ height: 50px;
1180
+ }
1181
+
1182
  /*
1183
  * Loading animation
1184
  */
1556
 
1557
  select.trp-select-all {
1558
  width: 20px;
1559
+ height: 20px;
1560
  padding: 0 13px !important;
1561
  margin: -7px -10px 0px 2px;
1562
  }
assets/images/edit-icon.png ADDED
Binary file
assets/images/flags/es_PR.png ADDED
Binary file
assets/images/pb_logo.jpg ADDED
Binary file
assets/images/pms_logo.jpg ADDED
Binary file
assets/js/trp-back-end-add-ons.js ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Script used in Settings-> Add-ons Page
3
+ *
4
+ * It sends request to install and activate recommended plugins
5
+ */
6
+
7
+ function TRP_Plugins_Installer() {
8
+ var _this = this
9
+
10
+ function ajax_request( pluginSlug, element ) {
11
+ var request = new XMLHttpRequest()
12
+ request.open( 'POST', trp_addons_localized[ 'admin_ajax_url' ], true )
13
+ request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8')
14
+ request.onload = function () {
15
+ if ( this.status >= 200 && this.status < 400 ){
16
+ var data = JSON.parse( this.response )
17
+ element.innerHTML = data
18
+ element.setAttribute('disabled', true )
19
+ location.reload();
20
+ }
21
+ }
22
+
23
+ request.send( encodeURI('security=' + trp_addons_localized[ 'nonce' ] + '&action=trp_install_plugins&plugin_slug=' + pluginSlug))
24
+ }
25
+
26
+ function triggerUpdate( event ) {
27
+ var pluginSlug = event.target.getAttribute( 'data-trp-plugin-slug' )
28
+ var actionPerformed = event.target.getAttribute( 'data-trp-action-performed' )
29
+
30
+ event.target.removeEventListener( 'click', triggerUpdate )
31
+ event.target.innerHTML = actionPerformed
32
+
33
+ ajax_request( pluginSlug, event.target )
34
+
35
+ }
36
+
37
+ function init( selector ) {
38
+ document.querySelectorAll( selector ).forEach( item => {
39
+ item.addEventListener( 'click', triggerUpdate )
40
+ } )
41
+ }
42
+
43
+ return {
44
+ init : init
45
+ }
46
+ }
47
+
48
+ var trp_plugin_installer = new TRP_Plugins_Installer()
49
+ trp_plugin_installer.init( '.trp-install-and-activate' )
assets/js/trp-editor.js CHANGED
@@ -158,6 +158,42 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod
158
 
159
  /***/ }),
160
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
161
  /***/ "./assets/src/js/components/hover-actions.vue":
162
  /*!****************************************************!*\
163
  !*** ./assets/src/js/components/hover-actions.vue ***!
@@ -266,6 +302,42 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod
266
 
267
  /***/ }),
268
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
269
  /***/ "./assets/src/js/components/translation-input.vue":
270
  /*!********************************************************!*\
271
  !*** ./assets/src/js/components/translation-input.vue ***!
@@ -742,6 +814,18 @@ eval("__webpack_require__.r(__webpack_exports__);\n//\n//\n//\n//\n//\n//\n//\n/
742
 
743
  /***/ }),
744
 
 
 
 
 
 
 
 
 
 
 
 
 
745
  /***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/hover-actions.vue?vue&type=script&lang=js&":
746
  /*!*************************************************************************************************************************************************************************!*\
747
  !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./assets/src/js/components/hover-actions.vue?vue&type=script&lang=js& ***!
@@ -762,7 +846,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uti
762
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
763
 
764
  "use strict";
765
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _translation_input_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./translation-input.vue */ \"./assets/src/js/components/translation-input.vue\");\n/* harmony import */ var _translation_memory_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./translation-memory.vue */ \"./assets/src/js/components/translation-memory.vue\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: ['selectedIndexesArray', 'dictionary', 'currentLanguage', 'onScreenLanguage', 'languageNames', 'settings', 'showChangesUnsavedMessage', 'editorStrings', 'flagsPath', 'iframe', 'nonces', 'ajax_url'],\n data: function data() {\n return {\n languages: [],\n completeLanguageNames: Object.assign({\n 'original': 'Original String'\n }, this.languageNames),\n othersButtonPositionOffset: 1,\n showOtherLanguages: false,\n orderedLanguages: [],\n showImageIcon: true\n };\n },\n components: {\n translationInput: _translation_input_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n translationMemory: _translation_memory_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n },\n mounted: function mounted() {\n this.determineLanguageOrder();\n this.addKeyboardShortcutsListener();\n },\n updated: function updated() {\n // if already active do nothing\n if (document.activeElement.classList.contains('trp-translation-input') || document.activeElement.classList.contains('trp-editor-body')) // when clicking translation memory result, don't move cursor\n {\n return;\n } // place the cursor in the first textarea or input for translation\n\n\n var translationSection = document.getElementById('trp-translation-section');\n\n if (translationSection) {\n var focusableSelectors = ['textarea:not([readonly])', 'input[type=\"text\"]:not([readonly])'];\n\n for (var i = 0; i < focusableSelectors.length; i++) {\n var focusable = document.getElementById('trp-translation-section').querySelector(focusableSelectors[i]);\n\n if (focusable) {\n focusable.focus();\n break;\n }\n }\n }\n },\n watch: {\n selectedIndexesArray: function selectedIndexesArray() {\n this.updateLanguages();\n },\n onScreenLanguage: function onScreenLanguage() {\n this.determineLanguageOrder();\n this.updateLanguages();\n }\n },\n computed: {\n othersButtonPosition: function othersButtonPosition() {\n if (this.currentLanguage === this.settings['default-language'] || this.settings['translation-languages'].length <= 2) {\n // don't display it\n return 999;\n } else {\n return this.othersButtonPositionOffset;\n }\n }\n },\n methods: {\n determineLanguageOrder: function determineLanguageOrder() {\n var self = this;\n var filteredLanguages = this.settings['translation-languages'].filter(function (language, index, array) {\n // all languages except default and current or on screen language.\n return self.settings['default-language'] !== language && self.onScreenLanguage !== language;\n });\n this.orderedLanguages = [];\n this.orderedLanguages.push(this.settings['default-language']);\n if (this.onScreenLanguage !== '') this.orderedLanguages.push(this.onScreenLanguage);\n this.orderedLanguages = this.orderedLanguages.concat(filteredLanguages);\n },\n updateLanguages: function updateLanguages() {\n this.languages = [];\n var self = this;\n var defaultLanguage = this.settings['default-language'];\n var translateToDefault = false;\n this.showImageIcon = false;\n this.othersButtonPositionOffset = 1;\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n if (self.dictionary[selectedIndex] && self.dictionary[selectedIndex].translationsArray[defaultLanguage]) translateToDefault = true;\n if (self.dictionary[selectedIndex] && self.dictionary[selectedIndex].attribute === 'src') self.showImageIcon = true;\n });\n\n if (translateToDefault) {\n this.languages.push('original');\n this.othersButtonPositionOffset++;\n }\n\n this.languages = this.languages.concat(this.orderedLanguages);\n },\n discardChanges: function discardChanges(selectedIndex, languageCode) {\n this.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation = this.dictionary[selectedIndex].translationsArray[languageCode].translated;\n this.$emit('discarded-changes');\n },\n hasUnsavedChanges: function hasUnsavedChanges(selectedIndex, languageCode) {\n return this.dictionary[selectedIndex].translationsArray[languageCode].translated !== this.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation;\n },\n discardAll: function discardAll() {\n var self = this;\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n self.settings['translation-languages'].forEach(function (languageCode) {\n if (self.dictionary[selectedIndex].translationsArray[languageCode] && self.dictionary[selectedIndex].translationsArray[languageCode].translated !== self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation) {\n self.discardChanges(selectedIndex, languageCode);\n }\n });\n });\n\n if (this.$parent.mergingString === true) {\n this.$parent.selectedString = null;\n var previouslyHighlighted = this.iframe.getElementsByClassName('trp-create-translation-block');\n\n if (previouslyHighlighted.length > 0) {\n var i;\n\n for (i = 0; i < previouslyHighlighted.length; i++) {\n previouslyHighlighted[i].classList.remove('trp-highlight');\n previouslyHighlighted[i].classList.remove('trp-create-translation-block');\n }\n }\n\n this.$parent.mergingString = false;\n this.$parent.mergeData = [];\n }\n },\n addKeyboardShortcutsListener: function addKeyboardShortcutsListener() {\n document.addEventListener(\"keydown\", function (e) {\n // CTRL + ALT + Z\n if ((window.navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey) && e.altKey && e.keyCode === 90) {\n e.preventDefault();\n window.dispatchEvent(new Event('trp_trigger_discard_all_changes_event'));\n }\n }, false);\n window.addEventListener('trp_trigger_discard_all_changes_event', this.discardAll);\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vYXNzZXRzL3NyYy9qcy9jb21wb25lbnRzL2xhbmd1YWdlLWJveGVzLnZ1ZT80OWJjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE0Q0E7QUFDQTtBQUNBO0FBQ0EsVUFDQSxzQkFEQSxFQUVBLFlBRkEsRUFHQSxpQkFIQSxFQUlBLGtCQUpBLEVBS0EsZUFMQSxFQU1BLFVBTkEsRUFPQSwyQkFQQSxFQVFBLGVBUkEsRUFTQSxXQVRBLEVBVUEsUUFWQSxFQVdBLFFBWEEsRUFZQSxVQVpBLENBREE7QUFlQSxNQWZBLGtCQWVBO0FBQ0E7QUFDQSxtQkFEQTtBQUVBO0FBQUE7QUFBQSw0QkFGQTtBQUdBLG1DQUhBO0FBSUEsK0JBSkE7QUFLQSwwQkFMQTtBQU1BO0FBTkE7QUFRQSxHQXhCQTtBQXlCQTtBQUNBLG9GQURBO0FBRUE7QUFGQSxHQXpCQTtBQTZCQSxTQTdCQSxxQkE2QkE7QUFDQTtBQUNBO0FBQ0EsR0FoQ0E7QUFpQ0EsU0FqQ0EscUJBaUNBO0FBQ0E7QUFDQSw4RUFDQSw0REFEQSxFQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTkEsQ0FPQTs7O0FBQ0E7O0FBQ0E7QUFDQTs7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBcERBO0FBcURBO0FBQ0E7QUFDQTtBQUNBLEtBSEE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQVBBLEdBckRBO0FBOERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUhBLE1BR0E7QUFDQTtBQUNBO0FBQ0E7QUFSQSxHQTlEQTtBQXdFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUhBO0FBSUE7QUFDQTtBQUNBLHdDQUNBO0FBQ0E7QUFDQSxLQVpBO0FBYUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBLGlIQUNBO0FBQ0Esa0dBQ0E7QUFDQSxPQUxBOztBQU9BO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FsQ0E7QUFtQ0E7QUFDQTtBQUNBO0FBQ0EsS0F0Q0E7QUF1Q0E7QUFDQTtBQUNBLEtBekNBO0FBMENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0ZBQ0EsOEpBREEsRUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUxBO0FBTUEsT0FQQTs7QUFTQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBbEVBO0FBbUVBLGdDQW5FQSwwQ0FtRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQU5BLEVBTUEsS0FOQTtBQVFBO0FBQ0E7QUE3RUE7QUF4RUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vYXNzZXRzL3NyYy9qcy9jb21wb25lbnRzL2xhbmd1YWdlLWJveGVzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgPGRpdiBpZD1cInRycC10cmFuc2xhdGlvbi1zZWN0aW9uXCIgY2xhc3M9XCJ0cnAtY29udHJvbHMtc2VjdGlvbi1jb250ZW50XCIgdi1pZj1cInNlbGVjdGVkSW5kZXhlc0FycmF5XCI+XG4gICAgICAgIDxkaXYgdi1zaG93PVwic2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZVwiIGNsYXNzPVwidHJwLWNoYW5nZXMtdW5zYXZlZC1tZXNzYWdlXCI+e3sgZWRpdG9yU3RyaW5ncy51bnNhdmVkX2NoYW5nZXMgfX0gPHNwYW4gY2xhc3M9XCJ0cnAtdW5zYXZlZC1jaGFuZ2VzIHRycC1kaXNjYXJkLWNoYW5nZXMgXCJAY2xpY2s9XCJkaXNjYXJkQWxsXCIgOnRpdGxlPVwiZWRpdG9yU3RyaW5ncy5kaXNjYXJkX2FsbF90aXRsZV9hdHRyXCI+e3sgZWRpdG9yU3RyaW5ncy5kaXNjYXJkX2FsbCB9fTwvc3Bhbj4/PC9kaXY+XG4gICAgICAgIDxkaXYgdi1mb3I9XCIobGFuZ3VhZ2VDb2RlLCBrZXkpIGluIGxhbmd1YWdlc1wiIDppZD1cIid0cnAtbGFuZ3VhZ2UtJyArIGxhbmd1YWdlQ29kZVwiPlxuICAgICAgICAgICAgPGRpdiB2LXNob3c9XCIoIChrZXkgPD0gb3RoZXJzQnV0dG9uUG9zaXRpb24pIHx8IHNob3dPdGhlckxhbmd1YWdlcyApICYmICggc2VsZWN0ZWRJbmRleGVzQXJyYXkgJiYgc2VsZWN0ZWRJbmRleGVzQXJyYXkubGVuZ3RoID4gMCApXCIgIGNsYXNzPVwidHJwLWxhbmd1YWdlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cnAtbGFuZ3VhZ2UtbmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiB2LWlmPVwia2V5ID09IDAgXCI+e3sgZWRpdG9yU3RyaW5ncy5mcm9tIH19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi1lbHNlPnt7IGVkaXRvclN0cmluZ3MudG8gfX0gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB7eyBjb21wbGV0ZUxhbmd1YWdlTmFtZXNbbGFuZ3VhZ2VDb2RlXSB9fVxuICAgICAgICAgICAgICAgICAgICA8aW1nIHYtaWY9XCJsYW5ndWFnZUNvZGUgIT0gJ29yaWdpbmFsJ1wiIGNsYXNzPVwidHJwLWxhbmd1YWdlLWJveC1mbGFnLWltYWdlXCIgOnNyYz1cImZsYWdzUGF0aFtsYW5ndWFnZUNvZGVdICsgJy8nICsgbGFuZ3VhZ2VDb2RlICsgJy5wbmcnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjEyXCIgOmFsdD1cImxhbmd1YWdlQ29kZVwiIDp0aXRsZT1cImNvbXBsZXRlTGFuZ3VhZ2VOYW1lc1tsYW5ndWFnZUNvZGVdXCI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidHJwLXRyYW5zbGF0aW9ucy1mb3ItbGFuZ3VhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidHJwLXRyYW5zbGF0aW9uLWljb24tY29udGFpbmVyXCIgdi1pZj1cInNob3dJbWFnZUljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHJwLXRyYW5zbGF0aW9uLWljb24gZGFzaGljb25zIGRhc2hpY29ucy1mb3JtYXQtaW1hZ2VcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRycC10cmFuc2xhdGlvbnMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLXN0cmluZy1jb250YWluZXJcIiB2LWZvcj1cInNlbGVjdGVkSW5kZXggaW4gc2VsZWN0ZWRJbmRleGVzQXJyYXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdICYmIGRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXVwiIDprZXk9XCJzZWxlY3RlZEluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cmFuc2xhdGlvbi1pbnB1dCA6c3RyaW5nPVwiZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVwiIHYtbW9kZWw9XCJkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0uZWRpdGVkVHJhbnNsYXRpb25cIiA6aGlnaGxpZ2h0VW5zYXZlZENoYW5nZXM9XCJzaG93Q2hhbmdlc1Vuc2F2ZWRNZXNzYWdlICYmIGhhc1Vuc2F2ZWRDaGFuZ2VzKCBzZWxlY3RlZEluZGV4LCBsYW5ndWFnZUNvZGUgKVwiIDplZGl0b3JTdHJpbmdzPVwiZWRpdG9yU3RyaW5nc1wiPjwvdHJhbnNsYXRpb24taW5wdXQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWVsc2UtaWY9XCJkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdXCIgOmtleT1cInNlbGVjdGVkSW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyYW5zbGF0aW9uLWlucHV0IDpyZWFkb25seT1cInRydWVcIiA6c3RyaW5nPVwiZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVwiIDp2YWx1ZT1cImRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0ub3JpZ2luYWxcIiA6ZWRpdG9yU3RyaW5ncz1cImVkaXRvclN0cmluZ3NcIj48L3RyYW5zbGF0aW9uLWlucHV0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cnAtdHJhbnNsYXRpb24taW5wdXQtZm9vdGVyXCIgOmRhdGEtZGljdGlvbmFyeS1lbnRyeT1cIkpTT04uc3RyaW5naWZ5KGRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cnAtYXR0cmlidXRlLW5hbWVcIj57eyAoIGVkaXRvclN0cmluZ3NbIGRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0uYXR0cmlidXRlIF0gJiYgKCAoZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS5hdHRyaWJ1dGUgIT0gJ2NvbnRlbnQnIHx8IGRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0uYXR0cmlidXRlICE9ICcnKSApICkgPyBlZGl0b3JTdHJpbmdzWyBkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLmF0dHJpYnV0ZSBdIDogZWRpdG9yU3RyaW5ncy50ZXh0IH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cImRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0gJiYgZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdXCIgY2xhc3M9XCJ0cnAtZGlzY2FyZC1jaGFuZ2VzIHRycC1kaXNjYXJkLWluZGl2aWR1YWwtY2hhbmdlc1wiIEBjbGljaz1cImRpc2NhcmRDaGFuZ2VzKHNlbGVjdGVkSW5kZXgsbGFuZ3VhZ2VDb2RlKVwiIDpjbGFzcz1cInsndHJwLXVuc2F2ZWQtY2hhbmdlcyc6IGhhc1Vuc2F2ZWRDaGFuZ2VzKCBzZWxlY3RlZEluZGV4LCBsYW5ndWFnZUNvZGUgKSB9XCIgOnRpdGxlPVwiZWRpdG9yU3RyaW5ncy5kaXNjYXJkX2luZGl2aWR1YWxfY2hhbmdlc190aXRsZV9hdHRyaWJ1dGVcIj57eyBlZGl0b3JTdHJpbmdzLmRpc2NhcmQgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLXRyYW5zbGF0aW9uLW1lbW9yeS13cmFwXCIgdi1pZj1cImRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0gJiYgZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdXCIgOmtleT1cIid0cnBfdG13XycgKyBzZWxlY3RlZEluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cmFuc2xhdGlvbi1tZW1vcnkgOnN0cmluZz1cImRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cIiA6ZWRpdG9yU3RyaW5ncz1cImVkaXRvclN0cmluZ3NcIiA6YWpheF91cmw9XCJhamF4X3VybFwiIDpub25jZXM9XCJub25jZXNcIiA6bGFuZ3VhZ2VDb2RlPVwibGFuZ3VhZ2VDb2RlXCI+PC90cmFuc2xhdGlvbi1tZW1vcnk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgICAgIDxkaXYgdi1zaG93PVwia2V5ID09IG90aGVyc0J1dHRvblBvc2l0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cnAtdG9nZ2xlLWxhbmd1YWdlcyBidXR0b25cIiBAY2xpY2s9XCJzaG93T3RoZXJMYW5ndWFnZXMgPSAhc2hvd090aGVyTGFuZ3VhZ2VzXCIgOmNsYXNzPVwieyAndHJwLXNob3ctb3RoZXItbGFuZ3VhZ2VzJzogc2hvd090aGVyTGFuZ3VhZ2VzLCAndHJwLWhpZGUtb3RoZXItbGFuZ3VhZ2VzJzogIXNob3dPdGhlckxhbmd1YWdlcyB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyAoc2hvd090aGVyTGFuZ3VhZ2VzKT8gICcmIzk2NjA7JyA6ICcmIzk2NTQ7J319IHt7IGVkaXRvclN0cmluZ3Mub3RoZXJfbGFuZyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuICAgIGltcG9ydCB0cmFuc2xhdGlvbklucHV0IGZyb20gJy4vdHJhbnNsYXRpb24taW5wdXQudnVlJ1xuICAgIGltcG9ydCB0cmFuc2xhdGlvbk1lbW9yeSBmcm9tICcuL3RyYW5zbGF0aW9uLW1lbW9yeS52dWUnXG4gICAgZXhwb3J0IGRlZmF1bHR7XG4gICAgICAgIHByb3BzOltcbiAgICAgICAgICAgICdzZWxlY3RlZEluZGV4ZXNBcnJheScsXG4gICAgICAgICAgICAnZGljdGlvbmFyeScsXG4gICAgICAgICAgICAnY3VycmVudExhbmd1YWdlJyxcbiAgICAgICAgICAgICdvblNjcmVlbkxhbmd1YWdlJyxcbiAgICAgICAgICAgICdsYW5ndWFnZU5hbWVzJyxcbiAgICAgICAgICAgICdzZXR0aW5ncycsXG4gICAgICAgICAgICAnc2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZScsXG4gICAgICAgICAgICAnZWRpdG9yU3RyaW5ncycsXG4gICAgICAgICAgICAnZmxhZ3NQYXRoJyxcbiAgICAgICAgICAgICdpZnJhbWUnLFxuICAgICAgICAgICAgJ25vbmNlcycsXG4gICAgICAgICAgICAnYWpheF91cmwnXG4gICAgICAgIF0sXG4gICAgICAgIGRhdGEoKXtcbiAgICAgICAgICAgIHJldHVybntcbiAgICAgICAgICAgICAgICBsYW5ndWFnZXMgICAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgICAgIGNvbXBsZXRlTGFuZ3VhZ2VOYW1lcyAgICAgIDogT2JqZWN0LmFzc2lnbiggeyAnb3JpZ2luYWwnOiAnT3JpZ2luYWwgU3RyaW5nJyB9LCB0aGlzLmxhbmd1YWdlTmFtZXMgKSxcbiAgICAgICAgICAgICAgICBvdGhlcnNCdXR0b25Qb3NpdGlvbk9mZnNldCA6IDEsXG4gICAgICAgICAgICAgICAgc2hvd090aGVyTGFuZ3VhZ2VzICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBvcmRlcmVkTGFuZ3VhZ2VzICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgICAgIHNob3dJbWFnZUljb24gICAgICAgICAgICAgIDogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjb21wb25lbnRzOntcbiAgICAgICAgICAgIHRyYW5zbGF0aW9uSW5wdXQsXG4gICAgICAgICAgICB0cmFuc2xhdGlvbk1lbW9yeVxuICAgICAgICB9LFxuICAgICAgICBtb3VudGVkKCl7XG4gICAgICAgICAgICB0aGlzLmRldGVybWluZUxhbmd1YWdlT3JkZXIoKVxuICAgICAgICAgICAgdGhpcy5hZGRLZXlib2FyZFNob3J0Y3V0c0xpc3RlbmVyKClcbiAgICAgICAgfSxcbiAgICAgICAgdXBkYXRlZCgpe1xuICAgICAgICAgICAgLy8gaWYgYWxyZWFkeSBhY3RpdmUgZG8gbm90aGluZ1xuICAgICAgICAgICAgaWYgKCBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyggJ3RycC10cmFuc2xhdGlvbi1pbnB1dCcgKSB8fFxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCAndHJwLWVkaXRvci1ib2R5JyApICkgLy8gd2hlbiBjbGlja2luZyB0cmFuc2xhdGlvbiBtZW1vcnkgcmVzdWx0LCBkb24ndCBtb3ZlIGN1cnNvclxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gcGxhY2UgdGhlIGN1cnNvciBpbiB0aGUgZmlyc3QgdGV4dGFyZWEgb3IgaW5wdXQgZm9yIHRyYW5zbGF0aW9uXG4gICAgICAgICAgICBsZXQgdHJhbnNsYXRpb25TZWN0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoICd0cnAtdHJhbnNsYXRpb24tc2VjdGlvbicgKVxuICAgICAgICAgICAgaWYgKCB0cmFuc2xhdGlvblNlY3Rpb24gKSAge1xuICAgICAgICAgICAgICAgIGxldCBmb2N1c2FibGVTZWxlY3RvcnMgPSBbJ3RleHRhcmVhOm5vdChbcmVhZG9ubHldKScsICdpbnB1dFt0eXBlPVwidGV4dFwiXTpub3QoW3JlYWRvbmx5XSknXVxuICAgICAgICAgICAgICAgIGZvciAoIHZhciBpID0gMDsgaTxmb2N1c2FibGVTZWxlY3RvcnMubGVuZ3RoOyBpKysgKXtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZvY3VzYWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAndHJwLXRyYW5zbGF0aW9uLXNlY3Rpb24nICkucXVlcnlTZWxlY3Rvcihmb2N1c2FibGVTZWxlY3RvcnNbaV0pXG4gICAgICAgICAgICAgICAgICAgIGlmICggZm9jdXNhYmxlICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlLmZvY3VzKClcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3YXRjaDoge1xuICAgICAgICAgICAgc2VsZWN0ZWRJbmRleGVzQXJyYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUxhbmd1YWdlcygpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25TY3JlZW5MYW5ndWFnZTogZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICB0aGlzLmRldGVybWluZUxhbmd1YWdlT3JkZXIoKVxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTGFuZ3VhZ2VzKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY29tcHV0ZWQ6e1xuICAgICAgICAgICAgb3RoZXJzQnV0dG9uUG9zaXRpb246IGZ1bmN0aW9uICgpe1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRMYW5ndWFnZSA9PT0gdGhpcy5zZXR0aW5nc1snZGVmYXVsdC1sYW5ndWFnZSddIHx8IHRoaXMuc2V0dGluZ3NbJ3RyYW5zbGF0aW9uLWxhbmd1YWdlcyddLmxlbmd0aCA8PSAyICkge1xuICAgICAgICAgICAgICAgICAgICAvLyBkb24ndCBkaXNwbGF5IGl0XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiA5OTlcbiAgICAgICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3RoZXJzQnV0dG9uUG9zaXRpb25PZmZzZXRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZHM6e1xuICAgICAgICAgICAgZGV0ZXJtaW5lTGFuZ3VhZ2VPcmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGxldCBzZWxmID0gdGhpc1xuICAgICAgICAgICAgICAgIGxldCBmaWx0ZXJlZExhbmd1YWdlcyA9IHRoaXMuc2V0dGluZ3NbJ3RyYW5zbGF0aW9uLWxhbmd1YWdlcyddLmZpbHRlcihmdW5jdGlvbihsYW5ndWFnZSwgaW5kZXgsIGFycmF5KXtcbiAgICAgICAgICAgICAgICAgICAgLy8gYWxsIGxhbmd1YWdlcyBleGNlcHQgZGVmYXVsdCBhbmQgY3VycmVudCBvciBvbiBzY3JlZW4gbGFuZ3VhZ2UuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoIHNlbGYuc2V0dGluZ3NbJ2RlZmF1bHQtbGFuZ3VhZ2UnXSAhPT0gbGFuZ3VhZ2UgKSAmJiAoIHNlbGYub25TY3JlZW5MYW5ndWFnZSAhPT0gbGFuZ3VhZ2UgKVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMub3JkZXJlZExhbmd1YWdlcyA9IFtdXG4gICAgICAgICAgICAgICAgdGhpcy5vcmRlcmVkTGFuZ3VhZ2VzLnB1c2goIHRoaXMuc2V0dGluZ3NbJ2RlZmF1bHQtbGFuZ3VhZ2UnXSApXG4gICAgICAgICAgICAgICAgaWYgKCB0aGlzLm9uU2NyZWVuTGFuZ3VhZ2UgIT09ICcnIClcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcmRlcmVkTGFuZ3VhZ2VzLnB1c2goIHRoaXMub25TY3JlZW5MYW5ndWFnZSApXG4gICAgICAgICAgICAgICAgdGhpcy5vcmRlcmVkTGFuZ3VhZ2VzID0gdGhpcy5vcmRlcmVkTGFuZ3VhZ2VzLmNvbmNhdCggZmlsdGVyZWRMYW5ndWFnZXMgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVwZGF0ZUxhbmd1YWdlczogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2VzICAgICAgICAgICAgICAgICAgPSBbXVxuICAgICAgICAgICAgICAgIGxldCBzZWxmICAgICAgICAgICAgICAgICAgICAgICAgPSB0aGlzXG4gICAgICAgICAgICAgICAgbGV0IGRlZmF1bHRMYW5ndWFnZSAgICAgICAgICAgICA9IHRoaXMuc2V0dGluZ3NbJ2RlZmF1bHQtbGFuZ3VhZ2UnXVxuICAgICAgICAgICAgICAgIGxldCB0cmFuc2xhdGVUb0RlZmF1bHQgICAgICAgICAgPSBmYWxzZVxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0ltYWdlSWNvbiAgICAgICAgICAgICAgPSBmYWxzZVxuICAgICAgICAgICAgICAgIHRoaXMub3RoZXJzQnV0dG9uUG9zaXRpb25PZmZzZXQgPSAxXG5cbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXhlc0FycmF5LmZvckVhY2goZnVuY3Rpb24gKHNlbGVjdGVkSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYoIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XSAmJiBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbZGVmYXVsdExhbmd1YWdlXSApXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVUb0RlZmF1bHQgPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgIGlmKCBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0gJiYgc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLmF0dHJpYnV0ZSA9PT0gJ3NyYycgKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zaG93SW1hZ2VJY29uID0gdHJ1ZVxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICBpZiAodHJhbnNsYXRlVG9EZWZhdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2VzLnB1c2goJ29yaWdpbmFsJylcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vdGhlcnNCdXR0b25Qb3NpdGlvbk9mZnNldCsrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5sYW5ndWFnZXMgPSB0aGlzLmxhbmd1YWdlcy5jb25jYXQodGhpcy5vcmRlcmVkTGFuZ3VhZ2VzKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRpc2NhcmRDaGFuZ2VzOiBmdW5jdGlvbihzZWxlY3RlZEluZGV4LGxhbmd1YWdlQ29kZSl7XG4gICAgICAgICAgICAgICAgdGhpcy5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0uZWRpdGVkVHJhbnNsYXRpb24gPSB0aGlzLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS50cmFuc2xhdGVkXG4gICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgnZGlzY2FyZGVkLWNoYW5nZXMnKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhhc1Vuc2F2ZWRDaGFuZ2VzOiBmdW5jdGlvbihzZWxlY3RlZEluZGV4LCBsYW5ndWFnZUNvZGUpe1xuICAgICAgICAgICAgICAgIHJldHVybiAodGhpcy5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0udHJhbnNsYXRlZCAhPT0gdGhpcy5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0uZWRpdGVkVHJhbnNsYXRpb24pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGlzY2FyZEFsbDogZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXNcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXhlc0FycmF5LmZvckVhY2goZnVuY3Rpb24oc2VsZWN0ZWRJbmRleCl7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc2V0dGluZ3NbJ3RyYW5zbGF0aW9uLWxhbmd1YWdlcyddLmZvckVhY2goIGZ1bmN0aW9uKCBsYW5ndWFnZUNvZGUgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS50cmFuc2xhdGVkICE9PSBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS5lZGl0ZWRUcmFuc2xhdGlvbikgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kaXNjYXJkQ2hhbmdlcyhzZWxlY3RlZEluZGV4LGxhbmd1YWdlQ29kZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgaWYgKCB0aGlzLiRwYXJlbnQubWVyZ2luZ1N0cmluZyA9PT0gdHJ1ZSApe1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRwYXJlbnQuc2VsZWN0ZWRTdHJpbmcgPSBudWxsXG4gICAgICAgICAgICAgICAgICAgIGxldCBwcmV2aW91c2x5SGlnaGxpZ2h0ZWQgPSB0aGlzLmlmcmFtZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCAndHJwLWNyZWF0ZS10cmFuc2xhdGlvbi1ibG9jaycgKVxuICAgICAgICAgICAgICAgICAgICBpZiggcHJldmlvdXNseUhpZ2hsaWdodGVkLmxlbmd0aCA+IDAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaVxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBwcmV2aW91c2x5SGlnaGxpZ2h0ZWQubGVuZ3RoOyBpKysgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNseUhpZ2hsaWdodGVkW2ldLmNsYXNzTGlzdC5yZW1vdmUoJ3RycC1oaWdobGlnaHQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzbHlIaWdobGlnaHRlZFtpXS5jbGFzc0xpc3QucmVtb3ZlKCd0cnAtY3JlYXRlLXRyYW5zbGF0aW9uLWJsb2NrJylcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLiRwYXJlbnQubWVyZ2luZ1N0cmluZyA9IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHBhcmVudC5tZXJnZURhdGEgPSBbXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZGRLZXlib2FyZFNob3J0Y3V0c0xpc3RlbmVyKCl7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBDVFJMICsgQUxUICsgWlxuICAgICAgICAgICAgICAgICAgICBpZiAoKHdpbmRvdy5uYXZpZ2F0b3IucGxhdGZvcm0ubWF0Y2goXCJNYWNcIikgPyBlLm1ldGFLZXkgOiBlLmN0cmxLZXkpICYmIGUuYWx0S2V5ICYmIGUua2V5Q29kZSA9PT0gOTAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ3RycF90cmlnZ2VyX2Rpc2NhcmRfYWxsX2NoYW5nZXNfZXZlbnQnKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCBmYWxzZSk7XG5cbiAgICAgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggJ3RycF90cmlnZ2VyX2Rpc2NhcmRfYWxsX2NoYW5nZXNfZXZlbnQnLCB0aGlzLmRpc2NhcmRBbGwgKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuPC9zY3JpcHQ+XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/language-boxes.vue?vue&type=script&lang=js&\n");
766
 
767
  /***/ }),
768
 
@@ -774,7 +858,19 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _tra
774
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
775
 
776
  "use strict";
777
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_0__);\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: ['selectedIndexesArray', 'selectedString', 'dictionary', 'settings', 'nonces', 'ajax_url', 'currentLanguage', 'onScreenLanguage', 'iframe', 'currentURL', 'mergingString', 'mergeData', 'editorStrings', 'stringTypes'],\n data: function data() {\n return {\n 'saveButtonText': this.editorStrings.save_translation,\n 'saveStringsRequestsLeft': 0,\n 'disabledSaveButton': false\n };\n },\n mounted: function mounted() {\n this.addKeyboardShortcutsListener();\n },\n watch: {\n saveStringsRequestsLeft: function saveStringsRequestsLeft(newValue, oldValue) {\n if (newValue > 0) {\n this.disabledSaveButton = true;\n this.saveButtonText = this.editorStrings.saving_translation;\n } else {\n this.disabledSaveButton = false;\n this.saveButtonText = this.editorStrings.save_translation;\n this.showTranslationsSaved();\n }\n }\n },\n methods: {\n save: function save() {\n if (this.mergingString) this.createTranslationBlock();else {\n for (var type in this.stringTypes) {\n this.saveStringType(this.stringTypes[type]);\n }\n }\n\n if (this.saveStringsRequestsLeft === 0) {\n // no saving action was triggered\n this.showTranslationsSaved();\n }\n },\n saveStringType: function saveStringType(typeSlug) {\n this.saveStringsRequestsLeft++;\n var self = this;\n var saveData = {};\n var updateIframeData = {};\n var foundStringsToSave = false; // construct an array of the necessary information\n\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n if (typeSlug === self.dictionary[selectedIndex].type) {\n self.settings['translation-languages'].forEach(function (languageCode) {\n saveData[languageCode] = saveData[languageCode] ? saveData[languageCode] : [];\n updateIframeData[languageCode] = updateIframeData[languageCode] ? updateIframeData[languageCode] : [];\n\n if (self.dictionary[selectedIndex].translationsArray[languageCode] && self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation != self.dictionary[selectedIndex].translationsArray[languageCode].translated) {\n self.dictionary[selectedIndex].translationsArray[languageCode].status = self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation === '' ? 0 : 2;\n self.dictionary[selectedIndex].translationsArray[languageCode].translated = self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation;\n saveData[languageCode].push(self.dictionary[selectedIndex].translationsArray[languageCode]);\n saveData[languageCode][saveData[languageCode].length - 1].original = self.dictionary[selectedIndex].original;\n updateIframeData[languageCode].push(self.dictionary[selectedIndex]);\n foundStringsToSave = true;\n }\n });\n }\n }); // send request to save strings in database\n\n if (foundStringsToSave) {\n var data = new FormData();\n data.append('action', 'trp_save_translations_' + typeSlug);\n data.append('security', this.nonces['savetranslationsnonce' + typeSlug]);\n data.append('strings', JSON.stringify(saveData));\n axios__WEBPACK_IMPORTED_MODULE_0___default.a.post(this.ajax_url, data).then(function (response) {\n if (typeSlug === 'gettext') {\n axios__WEBPACK_IMPORTED_MODULE_0___default.a.get(self.currentURL).then(function (reloadedIframeResponse) {\n self.updateIframe(updateIframeData, reloadedIframeResponse.data);\n self.saveStringsRequestsLeft--;\n });\n } else {\n self.updateIframe(updateIframeData);\n self.saveStringsRequestsLeft--;\n }\n\n self.$emit('translations-saved');\n })[\"catch\"](function (error) {\n console.log(error);\n });\n } else {\n self.saveStringsRequestsLeft--;\n }\n },\n updateIframe: function updateIframe(updateIframeData) {\n var reloadedIframeResponse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (typeof this.iframe === 'undefined') {\n return;\n }\n\n var self = this;\n this.settings['translation-languages'].forEach(function (languageCode) {\n if (updateIframeData[languageCode].length > 0) {\n updateIframeData[languageCode].forEach(function (string) {\n if (self.currentLanguage === languageCode) {\n self.setTextInIframe(string, languageCode, reloadedIframeResponse);\n }\n });\n }\n });\n },\n setTextInIframe: function setTextInIframe(string, languageCode, reloadedIframeResponse) {\n var nodes = this.iframe.querySelectorAll(\"[\" + string.selector + \"='\" + string.dbID + \"']\");\n var textToSet = null;\n\n if (reloadedIframeResponse) {\n var translatedNode = document.createRange().createContextualFragment(reloadedIframeResponse).querySelector(\"[\" + string.selector + \"='\" + string.dbID + \"']\");\n\n if (translatedNode) {\n textToSet = typeof string.attribute === 'undefined' || string.attribute === \"\" ? translatedNode.textContent : translatedNode.getAttribute(string.attribute);\n }\n }\n\n if (textToSet === null) {\n textToSet = string.translationsArray[languageCode].translated === '' ? string.original : string.translationsArray[languageCode].translated;\n }\n\n nodes.forEach(function (node) {\n if (typeof string.attribute === 'undefined' || string.attribute === \"\" || string.attribute === 'innertext') {\n var initialValue = node.textContent;\n textToSet = initialValue.replace(initialValue.trim(), textToSet);\n node.innerHTML = textToSet;\n } else {\n var _initialValue = node.getAttribute(string.attribute);\n\n textToSet = _initialValue.replace(_initialValue.trim(), textToSet);\n node.setAttribute(string.attribute, textToSet);\n\n if (string.attribute === 'src') {\n node.setAttribute('srcset', '');\n }\n }\n });\n },\n createTranslationBlock: function createTranslationBlock() {\n this.saveStringsRequestsLeft++;\n var self = this;\n var saveData = {},\n translation = {},\n original;\n var foundStringsToSave = false;\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n self.settings['translation-languages'].forEach(function (languageCode) {\n saveData[languageCode] = saveData[languageCode] ? saveData[languageCode] : [];\n\n if (self.dictionary[selectedIndex] && self.dictionary[selectedIndex].translationsArray[languageCode]) {\n translation = self.dictionary[selectedIndex].translationsArray[languageCode];\n translation.block_type = self.dictionary[selectedIndex].block_type;\n translation.id = self.dictionary[selectedIndex].dbID;\n translation.original = self.dictionary[selectedIndex].original;\n\n if (self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation != self.dictionary[selectedIndex].translationsArray[languageCode].translated) {\n self.dictionary[selectedIndex].translationsArray[languageCode].translated = self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation;\n if (self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation !== '') self.dictionary[selectedIndex].translationsArray[languageCode].status = 2;\n }\n\n saveData[languageCode].push(translation);\n foundStringsToSave = true;\n }\n });\n original = self.dictionary[selectedIndex].original;\n });\n\n if (foundStringsToSave) {\n var data = new FormData();\n data.append('action', 'trp_create_translation_block');\n data.append('security', this.nonces['mergetbnonce']);\n data.append('language', this.currentLanguage);\n data.append('strings', JSON.stringify(saveData));\n data.append('original', original);\n data.append('all_languages', 'true');\n axios__WEBPACK_IMPORTED_MODULE_0___default.a.post(this.ajax_url, data).then(function (response) {\n self.saveStringsRequestsLeft--;\n self.$parent.mergingString = false;\n var item = self.dictionary[self.selectedIndexesArray[0]]; //update dictionary string ids\n\n Object.keys(item.translationsArray).forEach(function (key) {\n Object.keys(response.data[key]).forEach(function (index) {\n if (key === self.onScreenLanguage) {\n self.dictionary[self.selectedIndexesArray[0]].dbID = response.data[key][index].id;\n }\n\n item.translationsArray[key].id = response.data[key][index].id;\n });\n });\n self.$parent.mergeData = []; //get merged string\n\n var mergedString;\n if (typeof item.translationsArray[self.currentLanguage] !== 'undefined' && item.translationsArray[self.currentLanguage].translated) mergedString = item.translationsArray[self.onScreenLanguage].translated;else mergedString = item.original; //replace HTML in iFrame\n\n var translationBlock = self.iframe.querySelector('.trp-create-translation-block');\n translationBlock.innerHTML = mergedString;\n translationBlock.setAttribute('data-trp-translate-id', item.dbID);\n translationBlock.classList.remove('trp-create-translation-block'); //setup event listener for new block\n\n self.$parent.setupEventListener(translationBlock);\n })[\"catch\"](function (error) {\n self.$parent.mergingString = false;\n console.log(error);\n });\n } else {\n this.saveStringsRequestsLeft--;\n }\n },\n showTranslationsSaved: function showTranslationsSaved() {\n var translationSaved = jQuery('#trp-translation-saved');\n translationSaved.css(\"display\", \"inline\");\n translationSaved.delay(3000).fadeOut(400);\n },\n addKeyboardShortcutsListener: function addKeyboardShortcutsListener() {\n document.addEventListener(\"keydown\", function (e) {\n // CTRL + S\n if ((window.navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey) && e.keyCode === 83) {\n e.preventDefault();\n window.dispatchEvent(new Event('trp_trigger_save_translations_event'));\n }\n }, false);\n window.addEventListener('trp_trigger_save_translations_event', this.save);\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vYXNzZXRzL3NyYy9qcy9jb21wb25lbnRzL3NhdmUtdHJhbnNsYXRpb25zLnZ1ZT85ODU1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQU9BO0FBRUE7QUFDQSxVQUNBLHNCQURBLEVBRUEsZ0JBRkEsRUFHQSxZQUhBLEVBSUEsVUFKQSxFQUtBLFFBTEEsRUFNQSxVQU5BLEVBT0EsaUJBUEEsRUFRQSxrQkFSQSxFQVNBLFFBVEEsRUFVQSxZQVZBLEVBV0EsZUFYQSxFQVlBLFdBWkEsRUFhQSxlQWJBLEVBY0EsYUFkQSxDQURBO0FBaUJBLE1BakJBLGtCQWlCQTtBQUNBO0FBQ0EsMkRBREE7QUFFQSxrQ0FGQTtBQUdBO0FBSEE7QUFLQSxHQXZCQTtBQXdCQSxTQXhCQSxxQkF3QkE7QUFDQTtBQUNBLEdBMUJBO0FBMkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUhBLE1BR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBWEEsR0EzQkE7QUF3Q0E7QUFDQSxRQURBLGtCQUNBO0FBQ0EsOEJBQ0EsOEJBREEsS0FFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FiQTtBQWNBLGtCQWRBLDBCQWNBLFFBZEEsRUFjQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBTEEsQ0FPQTs7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQSxXQWZBO0FBZ0JBO0FBQ0EsT0FuQkEsRUFSQSxDQTZCQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsK0VBQ0EsSUFEQSxDQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUhBO0FBSUEsV0FMQSxNQUtBO0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0EsU0FaQSxXQWFBO0FBQ0E7QUFDQSxTQWZBO0FBZ0JBLE9BdEJBLE1Bc0JBO0FBQ0E7QUFDQTtBQUNBLEtBckVBO0FBc0VBLGdCQXRFQSx3QkFzRUEsZ0JBdEVBLEVBc0VBO0FBQUE7O0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FKQTtBQUtBO0FBQ0EsT0FSQTtBQVNBLEtBcEZBO0FBcUZBLG1CQXJGQSwyQkFxRkEsTUFyRkEsRUFxRkEsWUFyRkEsRUFxRkEsc0JBckZBLEVBcUZBO0FBQ0E7QUFDQTs7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FKQSxNQUlBO0FBQ0E7O0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BYkE7QUFjQSxLQWhIQTtBQWlIQSwwQkFqSEEsb0NBaUhBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUVBLDJHQUNBO0FBQ0E7O0FBRUE7QUFHQTtBQUNBO0FBQ0EsU0F2QkE7QUF5QkE7QUFDQSxPQTNCQTs7QUE2QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLCtFQUNBLElBREEsQ0FDQTtBQUNBO0FBQ0E7QUFDQSxtRUFIQSxDQUtBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQSxhQUxBO0FBTUEsV0FQQTtBQVNBLHNDQWZBLENBaUJBOztBQUNBO0FBRUEsOElBQ0Esd0VBREEsS0FHQSw2QkF2QkEsQ0F5QkE7O0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEVBN0JBLENBK0JBOztBQUNBO0FBQ0EsU0FsQ0EsV0FtQ0E7QUFDQTtBQUNBO0FBQ0EsU0F0Q0E7QUF1Q0EsT0FoREEsTUFnREE7QUFDQTtBQUNBO0FBQ0EsS0F2TUE7QUF3TUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQTVNQTtBQTZNQSxnQ0E3TUEsMENBNk1BO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0EsT0FSQSxFQVFBLEtBUkE7QUFVQTtBQUNBO0FBek5BO0FBeENBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL2Fzc2V0cy9zcmMvanMvY29tcG9uZW50cy9zYXZlLXRyYW5zbGF0aW9ucy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxkaXYgaWQ9XCJ0cnAtc2F2ZS1jb250YWluZXJcIj5cbiAgICAgICAgPHNwYW4gaWQ9XCJ0cnAtdHJhbnNsYXRpb24tc2F2ZWRcIiBzdHlsZT1cImRpc3BsYXk6bm9uZVwiPnt7IGVkaXRvclN0cmluZ3Muc2F2ZWQgfX08L3NwYW4+XG4gICAgICAgIDxidXR0b24gaWQ9XCJ0cnAtc2F2ZVwiIDpkaXNhYmxlZD1cImRpc2FibGVkU2F2ZUJ1dHRvblwiIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ1dHRvbi1wcmltYXJ5IHRycC1zYXZlLXN0cmluZ1wiIEBjbGljaz1cInNhdmVcIiA6dGl0bGU9XCJlZGl0b3JTdHJpbmdzLnNhdmVfdGl0bGVfYXR0clwiPnt7IHNhdmVCdXR0b25UZXh0IH19PC9idXR0b24+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuPHNjcmlwdD5cbiAgICBpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnXG5cbiAgICBleHBvcnQgZGVmYXVsdHtcbiAgICAgICAgcHJvcHM6IFtcbiAgICAgICAgICAgICdzZWxlY3RlZEluZGV4ZXNBcnJheScsXG4gICAgICAgICAgICAnc2VsZWN0ZWRTdHJpbmcnLFxuICAgICAgICAgICAgJ2RpY3Rpb25hcnknLFxuICAgICAgICAgICAgJ3NldHRpbmdzJyxcbiAgICAgICAgICAgICdub25jZXMnLFxuICAgICAgICAgICAgJ2FqYXhfdXJsJyxcbiAgICAgICAgICAgICdjdXJyZW50TGFuZ3VhZ2UnLFxuICAgICAgICAgICAgJ29uU2NyZWVuTGFuZ3VhZ2UnLFxuICAgICAgICAgICAgJ2lmcmFtZScsXG4gICAgICAgICAgICAnY3VycmVudFVSTCcsXG4gICAgICAgICAgICAnbWVyZ2luZ1N0cmluZycsXG4gICAgICAgICAgICAnbWVyZ2VEYXRhJyxcbiAgICAgICAgICAgICdlZGl0b3JTdHJpbmdzJyxcbiAgICAgICAgICAgICdzdHJpbmdUeXBlcydcbiAgICAgICAgXSxcbiAgICAgICAgZGF0YSgpe1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAnc2F2ZUJ1dHRvblRleHQnICAgICAgICAgICAgOiB0aGlzLmVkaXRvclN0cmluZ3Muc2F2ZV90cmFuc2xhdGlvbixcbiAgICAgICAgICAgICAgICAnc2F2ZVN0cmluZ3NSZXF1ZXN0c0xlZnQnICAgOiAwLFxuICAgICAgICAgICAgICAgICdkaXNhYmxlZFNhdmVCdXR0b24nICAgICAgICA6IGZhbHNlLFxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb3VudGVkKCl7XG4gICAgICAgICAgICB0aGlzLmFkZEtleWJvYXJkU2hvcnRjdXRzTGlzdGVuZXIoKVxuICAgICAgICB9LFxuICAgICAgICB3YXRjaDp7XG4gICAgICAgICAgICBzYXZlU3RyaW5nc1JlcXVlc3RzTGVmdCA6IGZ1bmN0aW9uKCBuZXdWYWx1ZSwgb2xkVmFsdWUgKXtcbiAgICAgICAgICAgICAgICBpZiAoIG5ld1ZhbHVlID4gMCApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlZFNhdmVCdXR0b24gPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2F2ZUJ1dHRvblRleHQgPSB0aGlzLmVkaXRvclN0cmluZ3Muc2F2aW5nX3RyYW5zbGF0aW9uXG4gICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZWRTYXZlQnV0dG9uID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zYXZlQnV0dG9uVGV4dCA9IHRoaXMuZWRpdG9yU3RyaW5ncy5zYXZlX3RyYW5zbGF0aW9uXG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93VHJhbnNsYXRpb25zU2F2ZWQoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWV0aG9kczp7XG4gICAgICAgICAgICBzYXZlKCl7XG4gICAgICAgICAgICAgICAgaWYgKCB0aGlzLm1lcmdpbmdTdHJpbmcgKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRyYW5zbGF0aW9uQmxvY2soKVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKCBsZXQgdHlwZSBpbiB0aGlzLnN0cmluZ1R5cGVzICl7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNhdmVTdHJpbmdUeXBlKCB0aGlzLnN0cmluZ1R5cGVzW3R5cGVdIClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIHRoaXMuc2F2ZVN0cmluZ3NSZXF1ZXN0c0xlZnQgPT09IDAgKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIG5vIHNhdmluZyBhY3Rpb24gd2FzIHRyaWdnZXJlZFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dUcmFuc2xhdGlvbnNTYXZlZCgpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhdmVTdHJpbmdUeXBlKCB0eXBlU2x1ZyApe1xuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZVN0cmluZ3NSZXF1ZXN0c0xlZnQrK1xuICAgICAgICAgICAgICAgIGxldCBzZWxmID0gdGhpc1xuICAgICAgICAgICAgICAgIGxldCBzYXZlRGF0YSA9IHt9XG4gICAgICAgICAgICAgICAgbGV0IHVwZGF0ZUlmcmFtZURhdGEgID0ge31cbiAgICAgICAgICAgICAgICBsZXQgZm91bmRTdHJpbmdzVG9TYXZlID0gZmFsc2VcblxuICAgICAgICAgICAgICAgIC8vIGNvbnN0cnVjdCBhbiBhcnJheSBvZiB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ZXNBcnJheS5mb3JFYWNoKCBmdW5jdGlvbiggc2VsZWN0ZWRJbmRleCApe1xuICAgICAgICAgICAgICAgICAgICBpZiAoIHR5cGVTbHVnID09PSBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHlwZSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2V0dGluZ3NbJ3RyYW5zbGF0aW9uLWxhbmd1YWdlcyddLmZvckVhY2goIGZ1bmN0aW9uKCBsYW5ndWFnZUNvZGUgICl7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRGF0YVtsYW5ndWFnZUNvZGVdID0gKCBzYXZlRGF0YVtsYW5ndWFnZUNvZGVdICkgPyBzYXZlRGF0YVtsYW5ndWFnZUNvZGVdIDogW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJZnJhbWVEYXRhW2xhbmd1YWdlQ29kZV0gPSAoIHVwZGF0ZUlmcmFtZURhdGFbbGFuZ3VhZ2VDb2RlXSApID8gdXBkYXRlSWZyYW1lRGF0YVtsYW5ndWFnZUNvZGVdIDogW11cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0gJiYgKHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLmVkaXRlZFRyYW5zbGF0aW9uICE9IHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLnRyYW5zbGF0ZWQgKSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0uc3RhdHVzID0gKCBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS5lZGl0ZWRUcmFuc2xhdGlvbiA9PT0gJycgKSA/IDAgOiAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLnRyYW5zbGF0ZWQgPSBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS5lZGl0ZWRUcmFuc2xhdGlvblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVEYXRhW2xhbmd1YWdlQ29kZV0ucHVzaCggc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRGF0YVtsYW5ndWFnZUNvZGVdW3NhdmVEYXRhW2xhbmd1YWdlQ29kZV0ubGVuZ3RoIC0gMSBdLm9yaWdpbmFsID0gc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLm9yaWdpbmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUlmcmFtZURhdGFbbGFuZ3VhZ2VDb2RlXS5wdXNoKCBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0gKVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kU3RyaW5nc1RvU2F2ZSA9IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIC8vIHNlbmQgcmVxdWVzdCB0byBzYXZlIHN0cmluZ3MgaW4gZGF0YWJhc2VcbiAgICAgICAgICAgICAgICBpZiAoIGZvdW5kU3RyaW5nc1RvU2F2ZSApIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBuZXcgRm9ybURhdGEoKVxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoJ2FjdGlvbicsICd0cnBfc2F2ZV90cmFuc2xhdGlvbnNfJyArIHR5cGVTbHVnKVxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoJ3NlY3VyaXR5JywgdGhpcy5ub25jZXNbJ3NhdmV0cmFuc2xhdGlvbnNub25jZScgKyB0eXBlU2x1Z10pXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCgnc3RyaW5ncycsIEpTT04uc3RyaW5naWZ5KHNhdmVEYXRhKSlcblxuICAgICAgICAgICAgICAgICAgICBheGlvcy5wb3N0KHRoaXMuYWpheF91cmwsIGRhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHR5cGVTbHVnID09PSAnZ2V0dGV4dCcgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF4aW9zLmdldChzZWxmLmN1cnJlbnRVUkwpLnRoZW4oIGZ1bmN0aW9uKCByZWxvYWRlZElmcmFtZVJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZUlmcmFtZSh1cGRhdGVJZnJhbWVEYXRhLCByZWxvYWRlZElmcmFtZVJlc3BvbnNlLmRhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNhdmVTdHJpbmdzUmVxdWVzdHNMZWZ0LS1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudXBkYXRlSWZyYW1lKHVwZGF0ZUlmcmFtZURhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2F2ZVN0cmluZ3NSZXF1ZXN0c0xlZnQtLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLiRlbWl0KCd0cmFuc2xhdGlvbnMtc2F2ZWQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcilcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICAgICBzZWxmLnNhdmVTdHJpbmdzUmVxdWVzdHNMZWZ0LS1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdXBkYXRlSWZyYW1lKCB1cGRhdGVJZnJhbWVEYXRhLCByZWxvYWRlZElmcmFtZVJlc3BvbnNlID0gbnVsbCApe1xuICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIHRoaXMuaWZyYW1lID09PSAndW5kZWZpbmVkJyApe1xuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IHNlbGYgPSB0aGlzXG4gICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5nc1sndHJhbnNsYXRpb24tbGFuZ3VhZ2VzJ10uZm9yRWFjaCggZnVuY3Rpb24oIGxhbmd1YWdlQ29kZSAgKXtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCB1cGRhdGVJZnJhbWVEYXRhW2xhbmd1YWdlQ29kZV0ubGVuZ3RoID4gMCApe1xuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSWZyYW1lRGF0YVtsYW5ndWFnZUNvZGVdLmZvckVhY2goZnVuY3Rpb24oIHN0cmluZyApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggc2VsZi5jdXJyZW50TGFuZ3VhZ2UgPT09IGxhbmd1YWdlQ29kZSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXRUZXh0SW5JZnJhbWUoIHN0cmluZywgbGFuZ3VhZ2VDb2RlLCByZWxvYWRlZElmcmFtZVJlc3BvbnNlIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXRUZXh0SW5JZnJhbWUoIHN0cmluZywgbGFuZ3VhZ2VDb2RlLCByZWxvYWRlZElmcmFtZVJlc3BvbnNlICl7XG4gICAgICAgICAgICAgICAgbGV0IG5vZGVzID0gdGhpcy5pZnJhbWUucXVlcnlTZWxlY3RvckFsbCggXCJbXCIgKyBzdHJpbmcuc2VsZWN0b3IgKyBcIj0nXCIgKyBzdHJpbmcuZGJJRCArIFwiJ11cIiApXG4gICAgICAgICAgICAgICAgbGV0IHRleHRUb1NldCA9IG51bGxcbiAgICAgICAgICAgICAgICBpZiAoIHJlbG9hZGVkSWZyYW1lUmVzcG9uc2UgKXtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRyYW5zbGF0ZWROb2RlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQocmVsb2FkZWRJZnJhbWVSZXNwb25zZSkucXVlcnlTZWxlY3RvciggXCJbXCIgKyBzdHJpbmcuc2VsZWN0b3IgKyBcIj0nXCIgKyBzdHJpbmcuZGJJRCArIFwiJ11cIiApXG4gICAgICAgICAgICAgICAgICAgIGlmICggdHJhbnNsYXRlZE5vZGUgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0VG9TZXQgPSAodHlwZW9mIHN0cmluZy5hdHRyaWJ1dGUgPT09ICd1bmRlZmluZWQnIHx8IHN0cmluZy5hdHRyaWJ1dGUgPT09IFwiXCIpID8gdHJhbnNsYXRlZE5vZGUudGV4dENvbnRlbnQgOiB0cmFuc2xhdGVkTm9kZS5nZXRBdHRyaWJ1dGUoc3RyaW5nLmF0dHJpYnV0ZSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIHRleHRUb1NldCA9PT0gbnVsbCApIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dFRvU2V0ID0gKCBzdHJpbmcudHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS50cmFuc2xhdGVkID09PSAnJyApID8gc3RyaW5nLm9yaWdpbmFsIDogc3RyaW5nLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0udHJhbnNsYXRlZFxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24obm9kZSl7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc3RyaW5nLmF0dHJpYnV0ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgc3RyaW5nLmF0dHJpYnV0ZSA9PT0gXCJcIiB8fCBzdHJpbmcuYXR0cmlidXRlID09PSAnaW5uZXJ0ZXh0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluaXRpYWxWYWx1ZSA9IG5vZGUudGV4dENvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0VG9TZXQgPSBpbml0aWFsVmFsdWUucmVwbGFjZShpbml0aWFsVmFsdWUudHJpbSgpLCB0ZXh0VG9TZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5pbm5lckhUTUwgPSB0ZXh0VG9TZXRcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbml0aWFsVmFsdWUgPSBub2RlLmdldEF0dHJpYnV0ZShzdHJpbmcuYXR0cmlidXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFRvU2V0ID0gaW5pdGlhbFZhbHVlLnJlcGxhY2UoaW5pdGlhbFZhbHVlLnRyaW0oKSwgdGV4dFRvU2V0KVxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoc3RyaW5nLmF0dHJpYnV0ZSwgdGV4dFRvU2V0KVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoIHN0cmluZy5hdHRyaWJ1dGUgPT09ICdzcmMnICl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ3NyY3NldCcsICcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjcmVhdGVUcmFuc2xhdGlvbkJsb2NrKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZVN0cmluZ3NSZXF1ZXN0c0xlZnQrK1xuICAgICAgICAgICAgICAgIGxldCBzZWxmID0gdGhpc1xuICAgICAgICAgICAgICAgIGxldCBzYXZlRGF0YSA9IHt9LCB0cmFuc2xhdGlvbiA9IHt9LCBvcmlnaW5hbFxuICAgICAgICAgICAgICAgIGxldCBmb3VuZFN0cmluZ3NUb1NhdmUgPSBmYWxzZVxuXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ZXNBcnJheS5mb3JFYWNoKCBmdW5jdGlvbiggc2VsZWN0ZWRJbmRleCApe1xuICAgICAgICAgICAgICAgICAgICBzZWxmLnNldHRpbmdzWyd0cmFuc2xhdGlvbi1sYW5ndWFnZXMnXS5mb3JFYWNoKCBmdW5jdGlvbiggbGFuZ3VhZ2VDb2RlICApe1xuICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZURhdGFbbGFuZ3VhZ2VDb2RlXSA9ICggc2F2ZURhdGFbbGFuZ3VhZ2VDb2RlXSApID8gc2F2ZURhdGFbbGFuZ3VhZ2VDb2RlXSA6IFtdXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0gJiYgc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0gKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbiA9IHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbi5ibG9ja190eXBlID0gc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLmJsb2NrX3R5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbi5pZCAgICAgICAgID0gc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLmRiSURcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbi5vcmlnaW5hbCAgID0gc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLm9yaWdpbmFsXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0uZWRpdGVkVHJhbnNsYXRpb24gIT0gc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0udHJhbnNsYXRlZCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0udHJhbnNsYXRlZCA9IHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLmVkaXRlZFRyYW5zbGF0aW9uXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLmVkaXRlZFRyYW5zbGF0aW9uICE9PSAnJyApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS5zdGF0dXMgPSAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZURhdGFbbGFuZ3VhZ2VDb2RlXS5wdXNoKCB0cmFuc2xhdGlvbiApXG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kU3RyaW5nc1RvU2F2ZSA9IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbCA9IHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS5vcmlnaW5hbFxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICBpZiggZm91bmRTdHJpbmdzVG9TYXZlICkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IG5ldyBGb3JtRGF0YSgpXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCggJ2FjdGlvbicgICAgICAgLCAndHJwX2NyZWF0ZV90cmFuc2xhdGlvbl9ibG9jaycgKVxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoICdzZWN1cml0eScgICAgICwgdGhpcy5ub25jZXNbJ21lcmdldGJub25jZSddIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKCAnbGFuZ3VhZ2UnICAgICAsIHRoaXMuY3VycmVudExhbmd1YWdlIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKCAnc3RyaW5ncycgICAgICAsIEpTT04uc3RyaW5naWZ5KCBzYXZlRGF0YSApIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKCAnb3JpZ2luYWwnICAgICAsIG9yaWdpbmFsIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKCAnYWxsX2xhbmd1YWdlcycsICd0cnVlJyApXG5cbiAgICAgICAgICAgICAgICAgICAgYXhpb3MucG9zdCh0aGlzLmFqYXhfdXJsLCBkYXRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zYXZlU3RyaW5nc1JlcXVlc3RzTGVmdC0tXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi4kcGFyZW50Lm1lcmdpbmdTdHJpbmcgPSBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpdGVtID0gc2VsZi5kaWN0aW9uYXJ5W3NlbGYuc2VsZWN0ZWRJbmRleGVzQXJyYXlbMF1dXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3VwZGF0ZSBkaWN0aW9uYXJ5IHN0cmluZyBpZHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyggaXRlbS50cmFuc2xhdGlvbnNBcnJheSApLmZvckVhY2goIGZ1bmN0aW9uKGtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyggcmVzcG9uc2UuZGF0YVtrZXldICkuZm9yRWFjaCggZnVuY3Rpb24oaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgga2V5ID09PSBzZWxmLm9uU2NyZWVuTGFuZ3VhZ2UgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpY3Rpb25hcnlbc2VsZi5zZWxlY3RlZEluZGV4ZXNBcnJheVswXV0uZGJJRCA9IHJlc3BvbnNlLmRhdGFba2V5XVtpbmRleF0uaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0udHJhbnNsYXRpb25zQXJyYXlba2V5XS5pZCA9IHJlc3BvbnNlLmRhdGFba2V5XVtpbmRleF0uaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi4kcGFyZW50Lm1lcmdlRGF0YSA9IFtdXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2dldCBtZXJnZWQgc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1lcmdlZFN0cmluZ1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIHR5cGVvZiBpdGVtLnRyYW5zbGF0aW9uc0FycmF5W3NlbGYuY3VycmVudExhbmd1YWdlXSAhPT0gJ3VuZGVmaW5lZCcgJiYgaXRlbS50cmFuc2xhdGlvbnNBcnJheVtzZWxmLmN1cnJlbnRMYW5ndWFnZV0udHJhbnNsYXRlZCApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZFN0cmluZyA9IGl0ZW0udHJhbnNsYXRpb25zQXJyYXlbc2VsZi5vblNjcmVlbkxhbmd1YWdlXS50cmFuc2xhdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRTdHJpbmcgPSBpdGVtLm9yaWdpbmFsXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3JlcGxhY2UgSFRNTCBpbiBpRnJhbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHJhbnNsYXRpb25CbG9jayA9IHNlbGYuaWZyYW1lLnF1ZXJ5U2VsZWN0b3IoICcudHJwLWNyZWF0ZS10cmFuc2xhdGlvbi1ibG9jaycgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbkJsb2NrLmlubmVySFRNTCA9IG1lcmdlZFN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbkJsb2NrLnNldEF0dHJpYnV0ZSggJ2RhdGEtdHJwLXRyYW5zbGF0ZS1pZCcsIGl0ZW0uZGJJRCApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uQmxvY2suY2xhc3NMaXN0LnJlbW92ZSggJ3RycC1jcmVhdGUtdHJhbnNsYXRpb24tYmxvY2snIClcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc2V0dXAgZXZlbnQgbGlzdGVuZXIgZm9yIG5ldyBibG9ja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuJHBhcmVudC5zZXR1cEV2ZW50TGlzdGVuZXIoIHRyYW5zbGF0aW9uQmxvY2sgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLiRwYXJlbnQubWVyZ2luZ1N0cmluZyA9IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zYXZlU3RyaW5nc1JlcXVlc3RzTGVmdC0tXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNob3dUcmFuc2xhdGlvbnNTYXZlZCA6IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgbGV0IHRyYW5zbGF0aW9uU2F2ZWQgPSBqUXVlcnkoJyN0cnAtdHJhbnNsYXRpb24tc2F2ZWQnKVxuICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uU2F2ZWQuY3NzKFwiZGlzcGxheVwiLCBcImlubGluZVwiKVxuICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uU2F2ZWQuZGVsYXkoMzAwMCkuZmFkZU91dCg0MDApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWRkS2V5Ym9hcmRTaG9ydGN1dHNMaXN0ZW5lcigpe1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICAvLyBDVFJMICsgU1xuICAgICAgICAgICAgICAgICAgICBpZiAoKHdpbmRvdy5uYXZpZ2F0b3IucGxhdGZvcm0ubWF0Y2goXCJNYWNcIikgPyBlLm1ldGFLZXkgOiBlLmN0cmxLZXkpICAmJiBlLmtleUNvZGUgPT09IDgzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KCBuZXcgRXZlbnQoICd0cnBfdHJpZ2dlcl9zYXZlX3RyYW5zbGF0aW9uc19ldmVudCcgKSApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICd0cnBfdHJpZ2dlcl9zYXZlX3RyYW5zbGF0aW9uc19ldmVudCcsIHRoaXMuc2F2ZSApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgIH1cbjwvc2NyaXB0PlxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/save-translations.vue?vue&type=script&lang=js&\n");
 
 
 
 
 
 
 
 
 
 
 
 
778
 
779
  /***/ }),
780
 
@@ -810,7 +906,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var axio
810
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
811
 
812
  "use strict";
813
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var select2_dist_js_select2_min_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! select2/dist/js/select2.min.js */ \"./node_modules/select2/dist/js/select2.min.js\");\n/* harmony import */ var select2_dist_js_select2_min_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(select2_dist_js_select2_min_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./assets/src/js/utils.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_language_boxes_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/language-boxes.vue */ \"./assets/src/js/components/language-boxes.vue\");\n/* harmony import */ var _components_save_translations_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/save-translations.vue */ \"./assets/src/js/components/save-translations.vue\");\n/* harmony import */ var _components_hover_actions_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/hover-actions.vue */ \"./assets/src/js/components/hover-actions.vue\");\n/* harmony import */ var _components_extra_content_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/extra-content.vue */ \"./assets/src/js/components/extra-content.vue\");\n/* harmony import */ var _components_editors_navigation_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/editors-navigation.vue */ \"./assets/src/js/components/editors-navigation.vue\");\n/* harmony import */ var he__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! he */ \"./node_modules/he/he.js\");\n/* harmony import */ var he__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(he__WEBPACK_IMPORTED_MODULE_8__);\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n languageBoxes: _components_language_boxes_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n saveTranslations: _components_save_translations_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n hoverActions: _components_hover_actions_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n extraContent: _components_extra_content_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n editorsNavigation: _components_editors_navigation_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n },\n data: function data() {\n return {\n //props\n settings: trp_editor_data.trp_settings,\n languageNames: trp_editor_data.language_names,\n orderedSecondaryLanguages: trp_editor_data.ordered_secondary_languages,\n roles: trp_editor_data.view_as_roles,\n nonces: trp_editor_data.editor_nonces,\n stringGroupOrder: trp_editor_data.string_group_order,\n selectors: trp_editor_data.string_selectors,\n stringTypes: trp_editor_data.string_types,\n dataAttributes: trp_editor_data.data_attributes,\n mergeRules: trp_editor_data.merge_rules,\n editorsNavigation: trp_editor_data.editors_navigation,\n editorStrings: trp_editor_data.trp_localized_strings,\n flagsPath: trp_editor_data.flags_path,\n //data\n currentLanguage: trp_editor_data.current_language,\n onScreenLanguage: trp_editor_data.on_screen_language,\n currentURL: trp_editor_data.url_to_load,\n urlToLoad: trp_editor_data.url_to_load,\n ajaxUrl: trp_editor_data.ajax_url,\n paidVersion: trp_editor_data.paid_version,\n iframe: '',\n dictionary: [],\n selectedString: null,\n selectedIndexesArray: [],\n detectedSelectorAndId: [],\n stringGroups: [],\n mergingString: false,\n mergeData: [],\n showChangesUnsavedMessage: false,\n viewAs: '',\n loading_strings: 0,\n translationNotLoadedYet: false\n };\n },\n created: function created() {\n this.settings['default-language-name'] = this.languageNames[this.settings['default-language']]; //set default value for the View As select\n\n var params = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getUrlParameters(this.currentURL);\n if (Object.keys(params).length > 1 && params['trp-view-as']) this.viewAs = params['trp-view-as'];else this.viewAs = 'current_user';\n },\n mounted: function mounted() {\n this.addKeyboardShortcutsListener();\n var self = this; // initialize select2\n\n jQuery('#trp-language-select, #trp-view-as-select').select2({\n width: '100%'\n }); //init strings dropdown\n\n this.stringsDropdownLoading(); // show overlay when select is opened\n\n jQuery('#trp-language-select, #trp-string-categories').on('select2:open', function () {\n jQuery('#trp_select2_overlay').fadeIn('100');\n }).on('select2:close', function () {\n jQuery('#trp_select2_overlay').hide();\n }).on('select2:opening', function (e) {\n /* when we have unsaved changes prevent the strings dropdown from opening so we do not have a disconnect between the textareas and the dropdown */\n if (self.hasUnsavedChanges()) {\n e.preventDefault();\n }\n }); // resize sidebar and consequently the iframe\n\n var previewContainer = jQuery('#trp-preview');\n var total_width = jQuery(window).width();\n jQuery('#trp-controls').resizable({\n start: function start() {\n previewContainer.toggle();\n },\n stop: function stop() {\n previewContainer.toggle();\n },\n handles: 'e',\n minWidth: 327,\n maxWidth: total_width - 20\n }).bind(\"resize\", this.resizeIframe); // resize iframe when resizing window\n\n jQuery(window).resize(function () {\n self.resizeIframe();\n });\n },\n watch: {\n currentLanguage: function currentLanguage(_currentLanguage) {\n var self = this; //grab the correct URL from the iFrame\n\n var newURL = this.iframe.querySelector('link[hreflang=\"' + _currentLanguage.replace('_', '-') + '\"]').getAttribute('href');\n this.currentURL = newURL;\n this.iframe.location = newURL; //reset vue props\n\n this.selectedString = '';\n this.selectedIndexesArray = []; //set strings dropdown to loading state\n\n jQuery('#trp-string-categories').val('').trigger('change');\n this.stringsDropdownLoading();\n this.onScreenLanguage = _currentLanguage;\n\n if (this.settings['default-language'] == this.currentLanguage && this.settings['translation-languages'].length > 1) {\n this.settings['translation-languages'].some(function (language) {\n if (language != self.settings['default-language']) {\n // return the first language not default\n self.onScreenLanguage = language;\n return true;\n }\n });\n }\n },\n currentURL: function currentURL(newUrl, oldUrl) {\n window.history.replaceState(null, null, this.parentURL(newUrl));\n },\n viewAs: function viewAs(role) {\n if (!this.currentURL || !this.iframe) return;\n var url = this.cleanURL(this.currentURL);\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].updateUrlParameter(url, 'trp-edit-translation', 'preview');\n\n if (role == 'current_user') {\n this.iframe.location = url;\n return;\n } //if nonce not available, an update to the Browse as Other Roles add-on is required\n\n\n if (!this.nonces[role]) {\n alert(this.editorStrings.bor_update_notice);\n return;\n }\n\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].updateUrlParameter(url, 'trp-view-as', role);\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].updateUrlParameter(url, 'trp-view-as-nonce', this.nonces[role]);\n this.iframe.location = url;\n },\n selectedString: function selectedString(selectedStringArrayIndex, oldString) {\n if (this.hasUnsavedChanges() || !selectedStringArrayIndex && selectedStringArrayIndex !== 0) return;\n jQuery('#trp-string-categories').val(selectedStringArrayIndex !== null ? selectedStringArrayIndex : '').trigger('change');\n var selectedString = this.dictionary[selectedStringArrayIndex];\n if (!selectedString) return;\n var currentNodes = this.iframe.querySelectorAll(\"[\" + selectedString.selector + \"='\" + selectedString.dbID + \"']\");\n var selectedIndexesArray = []; //when merging we do not have a valid current node, so we just add the fake id\n\n if (currentNodes.length > 0) {\n var self = this;\n var selectors = self.getAllSelectors();\n var nodes = [];\n currentNodes.forEach(function (currentNode) {\n nodes.push(currentNode);\n\n if (currentNode.tagName != \"A\") {\n // include the anchor's translatable attributes\n var anchorParent = currentNode.closest('a');\n\n if (anchorParent != null) {\n nodes.push(anchorParent);\n }\n }\n\n if (currentNode.tagName == \"A\" && currentNode.children.length > 0) {\n // include all the translatable attributes inside the anchor\n var childrenArray = _toConsumableArray(currentNode.children);\n\n childrenArray.forEach(function (child) {\n nodes.push(child);\n });\n }\n\n nodes.forEach(function (node) {\n selectors.forEach(function (selector) {\n var stringId = node.getAttribute(selector);\n\n if (stringId) {\n var found = false;\n var i;\n\n for (i = 0; i < selectedIndexesArray.length; i++) {\n if (typeof self.dictionary[selectedIndexesArray[i]] !== 'undefined' && self.dictionary[selectedIndexesArray[i]].dbID !== 'undefined' && self.dictionary[selectedIndexesArray[i]].dbID === stringId) {\n found = true;\n break;\n }\n }\n\n if (!found) {\n selectedIndexesArray.push(self.getStringIndex(selector, stringId));\n }\n }\n });\n });\n });\n } else selectedIndexesArray.push(selectedStringArrayIndex);\n\n this.selectedIndexesArray = selectedIndexesArray;\n }\n },\n computed: {\n closeURL: function closeURL() {\n return this.cleanURL(this.currentURL);\n }\n },\n methods: {\n iFrameLoaded: function iFrameLoaded() {\n var self = this;\n var iframeElement = document.querySelector('#trp-preview-iframe');\n this.iframe = iframeElement.contentDocument || iframeElement.contentWindow.document; //sync iFrame URL with parent\n\n if (this.currentURL != this.iframe.URL) this.currentURL = this.iframe.URL; //hide iFrame loader\n\n this.iframeLoader('hide');\n self.detectedSelectorAndId = [];\n self.dictionary = [];\n this.scanIframeForStrings();\n window.addEventListener('trp_iframe_page_updated', this.scanIframeForStrings); //event that is fired when the iFrame is navigated\n\n iframeElement.contentWindow.onbeforeunload = function () {\n self.iframeLoader('show');\n self.selectedString = null;\n self.selectedIndexesArray = [];\n self.translationNotLoadedYet = false;\n self.stringsDropdownLoading();\n };\n },\n scanIframeForStrings: function scanIframeForStrings() {\n this.scanForSelector('data-trp-translate-id', 'regular', this.onScreenLanguage);\n this.scanForSelector('data-trpgettextoriginal', 'gettext', this.currentLanguage);\n this.scanForSelector('data-trp-post-slug', 'postslug', this.currentLanguage);\n },\n scanForSelector: function scanForSelector(baseSelector, typeSlug, languageOfIds) {\n this.loading_strings++;\n var self = this;\n var selectors = this.prepareSelectorStrings(baseSelector);\n\n var nodes = _toConsumableArray(this.iframe.querySelectorAll('[' + selectors.join('],[') + ']'));\n\n var stringIdsArray = [],\n nodeData = [],\n nodeEntries = [];\n nodes.forEach(function (node) {\n nodeEntries = self.getNodeInfo(node, baseSelector);\n nodeEntries.forEach(function (entry) {\n // this check ensures that we don't create duplicates when rescanning after ajax complete\n if (!self.alreadyDetected(entry.selector, entry.dbID)) {\n stringIdsArray.push(entry.dbID);\n nodeData.push(entry);\n }\n });\n self.setupEventListener(node);\n }); //unique ids only\n\n stringIdsArray = _toConsumableArray(new Set(stringIdsArray));\n\n if (stringIdsArray.length > 0) {\n var data = new FormData();\n data.append('action', 'trp_get_translations_' + typeSlug);\n data.append('all_languages', 'true');\n data.append('security', this.nonces['gettranslationsnonce' + typeSlug]);\n data.append('language', languageOfIds);\n data.append('string_ids', JSON.stringify(stringIdsArray));\n axios__WEBPACK_IMPORTED_MODULE_2___default.a.post(this.ajaxUrl, data).then(function (response) {\n self.loading_strings--;\n self.addToDictionary(response.data, nodeData);\n })[\"catch\"](function (error) {\n console.log(error);\n });\n } else {\n self.loading_strings--;\n }\n },\n alreadyDetected: function alreadyDetected(selector, dbId) {\n var combined = selector + '=' + dbId;\n\n if (_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].arrayContainsItem(this.detectedSelectorAndId, combined)) {\n return true;\n } else {\n this.detectedSelectorAndId.push(combined);\n return false;\n }\n },\n setupEventListener: function setupEventListener(node) {\n if (node.tagName == 'A' && !node.hasAttribute('data-trpgettextoriginal')) return false;\n var self = this;\n node.addEventListener('mouseenter', self.$refs.hoverActions.showPencilIcon);\n },\n addToDictionary: function addToDictionary(responseData) {\n var nodeInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var self = this;\n\n if (responseData != null) {\n if (nodeInfo) {\n nodeInfo.forEach(function (infoRow, index) {\n responseData.some(function (responseDataRow) {\n if (infoRow.dbID == responseDataRow.dbID) {\n //bring block_type to the top level object\n if (responseDataRow.type != 'gettext' && typeof responseDataRow.block_type == 'undefined') {\n var firstLanguage = self.orderedSecondaryLanguages[0];\n if (typeof responseDataRow.translationsArray[firstLanguage].block_type != 'undefined') responseDataRow.block_type = responseDataRow.translationsArray[firstLanguage].block_type;\n }\n\n nodeInfo[index] = Object.assign({}, responseDataRow, infoRow);\n return true; // a sort of break\n }\n });\n });\n } else {\n nodeInfo = responseData;\n }\n\n this.stringGroups = this.addToStringGroups(nodeInfo);\n this.dictionary = this.dictionary.concat(nodeInfo);\n this.initStringsDropdown();\n }\n },\n addToStringGroups: function addToStringGroups(strings) {\n // see what node groups are found\n var foundStringGroups = this.stringGroups;\n strings.forEach(function (string) {\n if (foundStringGroups.indexOf(string.group) === -1 && (typeof string.blockType === 'undefined' || string.blockType !== '2')) {\n foundStringGroups.push(string.group);\n }\n }); // put the node groups in the order that we want, according to the prop this.stringGroupOrder\n\n var orderedStringGroups = [];\n\n if (this.editorStrings.seo_update_notice != 'seo_pack_update_not_needed') {\n orderedStringGroups.push(this.editorStrings.seo_update_notice);\n }\n\n this.stringGroupOrder.forEach(function (group) {\n if (foundStringGroups.indexOf(group) !== -1) {\n orderedStringGroups.push(group);\n }\n }); // if there were any other string groups that were not in the prop, add them at the end.\n\n foundStringGroups.forEach(function (group) {\n if (orderedStringGroups.indexOf(group) === -1) {\n orderedStringGroups.push(group);\n }\n });\n return orderedStringGroups;\n },\n getStringIndex: function getStringIndex(selector, dbID) {\n var found = null;\n this.dictionary.some(function (string, index) {\n if (string.dbID == dbID && string.selector == selector) {\n found = index;\n return true;\n }\n });\n return found;\n },\n getNodeInfo: function getNodeInfo(node) {\n var baseSelector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var stringId;\n var nodeData = [];\n var selectors = this.prepareSelectorStrings(baseSelector);\n selectors.forEach(function (selector) {\n stringId = node.getAttribute(selector);\n\n if (stringId) {\n var nodeAttribute = selector.replace(baseSelector, '');\n var nodeGroup = node.getAttribute('data-trp-node-group' + nodeAttribute);\n var nodeDescription = node.getAttribute('data-trp-node-description' + nodeAttribute);\n var entry = {\n dbID: stringId,\n selector: selector,\n attribute: nodeAttribute.substr(1) // substr(1) is used to trim prefixing line - ex. -alt will result in alt (no line)\n\n };\n if (nodeGroup) entry.group = nodeGroup;\n if (nodeDescription) entry.description = nodeDescription;\n nodeData.push(entry);\n }\n });\n return nodeData;\n },\n getAllSelectors: function getAllSelectors() {\n var selectors = [];\n var self = this;\n this.dataAttributes.forEach(function (dataAttribute) {\n selectors = selectors.concat(self.prepareSelectorStrings(dataAttribute));\n });\n return selectors;\n },\n prepareSelectorStrings: function prepareSelectorStrings(baseNameSelector) {\n var parsed_selectors = [];\n this.selectors.forEach(function (selectorSuffix, index) {\n parsed_selectors.push(baseNameSelector + selectorSuffix);\n });\n return parsed_selectors;\n },\n parentURL: function parentURL(url) {\n return url.replace('trp-edit-translation=preview', 'trp-edit-translation=true');\n },\n cleanURL: function cleanURL(url) {\n //make removeUrlParameter recursive and only call it once with all the parameters that\n //need to stripped ?\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeUrlParameter(url, 'lang');\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeUrlParameter(url, 'trp-view-as');\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeUrlParameter(url, 'trp-view-as-nonce');\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeUrlParameter(url, 'trp-edit-translation');\n return url;\n },\n showString: function showString(string, type) {\n if (typeof string.blockType !== 'undefined' && string.blockType === '2') {\n // don't show deprecated translation blocks in the dropdown\n return false;\n }\n\n if (type === this.editorStrings.images && typeof string.attribute != 'undefined' && string.attribute == 'src') return true;\n if (typeof string.attribute !== 'undefined' && (string.attribute == 'href' || string.attribute == 'src')) return false;\n if (string.group === type) return true;\n return false;\n },\n initStringsDropdown: function initStringsDropdown() {\n var self = this;\n\n if (!this.isStringsDropdownOpen()) {\n jQuery('#trp-string-categories').select2('destroy');\n jQuery('#trp-string-categories').select2({\n placeholder: self.editorStrings.select_string,\n templateResult: function templateResult(option) {\n var original = he__WEBPACK_IMPORTED_MODULE_8___default.a.decode(option.text.substring(0, 90)) + (option.text.length <= 90 ? '' : '...');\n var description = option.title ? '(' + option.title + ')' : '';\n return jQuery('<div>' + original + '</div><div class=\"string-selector-description\">' + description + '</div>');\n },\n width: '100%'\n }).prop('disabled', false);\n jQuery('#trp_select2_overlay').hide();\n }\n },\n stringsDropdownLoading: function stringsDropdownLoading() {\n jQuery('#trp-string-categories').select2({\n placeholder: this.editorStrings.strings_loading,\n width: '100%'\n }).prop('disabled', true);\n },\n processOptionName: function processOptionName(name, type) {\n if (type == 'Images') return _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getFilename(name);\n return _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].escapeHtml(name);\n },\n isStringsDropdownOpen: function isStringsDropdownOpen() {\n return jQuery('#trp-string-categories').select2('isOpen');\n },\n hasUnsavedChanges: function hasUnsavedChanges() {\n var unsavedChanges = false;\n var self = this;\n\n if (this.selectedIndexesArray.length > 0) {\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n self.settings['translation-languages'].forEach(function (languageCode) {\n if (self.dictionary[selectedIndex] && self.dictionary[selectedIndex].translationsArray[languageCode] && self.dictionary[selectedIndex].translationsArray[languageCode].translated !== self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation) {\n unsavedChanges = true;\n }\n });\n });\n }\n\n this.showChangesUnsavedMessage = unsavedChanges;\n return unsavedChanges;\n },\n iframeLoader: function iframeLoader(status) {\n var loader = document.getElementById('trp-preview-loader');\n if (status == 'show') loader.style.display = 'flex';else if (status == 'hide') loader.style.display = 'none';\n },\n previousString: function previousString() {\n var currentValue = document.getElementById('trp-string-categories').value;\n var newValue = +currentValue - 1;\n\n while (newValue >= 0 && document.querySelectorAll('#trp-string-categories option[value=\"' + newValue + '\"]').length === 0) {\n newValue--;\n }\n\n if (newValue < 0) return;\n this.selectedString = newValue.toString();\n },\n nextString: function nextString() {\n var currentValue = document.getElementById('trp-string-categories').value,\n newValue = 0;\n if (currentValue != '') newValue = +currentValue + 1;\n\n while (newValue < this.dictionary.length && document.querySelectorAll('#trp-string-categories option[value=\"' + newValue + '\"]').length === 0) {\n newValue++;\n }\n\n if (newValue >= this.dictionary.length) {\n return;\n }\n\n this.selectedString = newValue.toString();\n },\n addKeyboardShortcutsListener: function addKeyboardShortcutsListener() {\n document.addEventListener(\"keydown\", function (e) {\n if ((window.navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey) && e.altKey) {\n // CTRL + ALT + right arrow\n if (e.keyCode === 39) {\n e.preventDefault();\n window.dispatchEvent(new Event('trp_trigger_next_string_event'));\n } else {\n // CTRL + ALT + left arrow\n if (e.keyCode === 37) {\n e.preventDefault();\n window.dispatchEvent(new Event('trp_trigger_previous_string_event'));\n }\n }\n }\n }, false);\n window.addEventListener('trp_trigger_next_string_event', this.nextString);\n window.addEventListener('trp_trigger_previous_string_event', this.previousString);\n },\n resizeIframe: function resizeIframe(event, ui) {\n var total_width = jQuery(window).width();\n var width = jQuery('#trp-controls').width();\n var previewContainer = jQuery('#trp-preview');\n previewContainer.css('right', width);\n previewContainer.css('left', width - 348);\n previewContainer.css('width', total_width - width);\n }\n },\n //add support for v-model in select2\n directives: {\n select2: {\n inserted: function inserted(el) {\n jQuery(el).on('select2:select', function () {\n var event = new Event('change', {\n bubbles: true,\n cancelable: true\n });\n el.dispatchEvent(event);\n });\n jQuery(el).on('select2:unselect', function () {\n var event = new Event('change', {\n bubbles: true,\n cancelable: true\n });\n el.dispatchEvent(event);\n });\n }\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vYXNzZXRzL3NyYy9qcy9lZGl0b3IudnVlP2E3NjUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE4SEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBLHlGQURBO0FBRUEsK0ZBRkE7QUFHQSx1RkFIQTtBQUlBLHVGQUpBO0FBS0E7QUFMQSxHQURBO0FBUUEsTUFSQSxrQkFRQTtBQUNBO0FBQ0E7QUFDQSw0Q0FGQTtBQUdBLG1EQUhBO0FBSUEsNEVBSkE7QUFLQSwwQ0FMQTtBQU1BLDJDQU5BO0FBT0EsMERBUEE7QUFRQSxpREFSQTtBQVNBLCtDQVRBO0FBVUEscURBVkE7QUFXQSw2Q0FYQTtBQVlBLDJEQVpBO0FBYUEsMERBYkE7QUFjQSwyQ0FkQTtBQWVBO0FBQ0EsdURBaEJBO0FBaUJBLDBEQWpCQTtBQWtCQSw2Q0FsQkE7QUFtQkEsNENBbkJBO0FBb0JBLHVDQXBCQTtBQXFCQSwrQ0FyQkE7QUFzQkEsZ0JBdEJBO0FBdUJBLG9CQXZCQTtBQXdCQSwwQkF4QkE7QUF5QkEsOEJBekJBO0FBMEJBLCtCQTFCQTtBQTJCQSxzQkEzQkE7QUE0QkEsMEJBNUJBO0FBNkJBLG1CQTdCQTtBQThCQSxzQ0E5QkE7QUErQkEsZ0JBL0JBO0FBZ0NBLHdCQWhDQTtBQWlDQTtBQWpDQTtBQW1DQSxHQTVDQTtBQTZDQSxTQTdDQSxxQkE2Q0E7QUFDQSxtR0FEQSxDQUdBOztBQUNBO0FBRUEsaUVBQ0Esb0NBREEsS0FHQTtBQUNBLEdBdkRBO0FBd0RBLFNBeERBLHFCQXdEQTtBQUNBO0FBQ0Esb0JBRkEsQ0FHQTs7QUFDQTtBQUFBO0FBQUEsT0FKQSxDQU1BOztBQUNBLGtDQVBBLENBU0E7O0FBQ0E7QUFDQTtBQUNBLEtBRkEsRUFFQSxFQUZBLENBRUEsZUFGQSxFQUVBO0FBQ0E7QUFDQSxLQUpBLEVBSUEsRUFKQSxDQUlBLGlCQUpBLEVBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBVEEsRUFWQSxDQXFCQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUEsT0FEQTtBQUVBO0FBQUE7QUFBQSxPQUZBO0FBR0Esa0JBSEE7QUFJQSxtQkFKQTtBQUtBO0FBTEEsT0FNQSxJQU5BLENBTUEsUUFOQSxFQU1BLGlCQU5BLEVBeEJBLENBZ0NBOztBQUNBO0FBQ0E7QUFDQSxLQUZBO0FBR0EsR0E1RkE7QUE2RkE7QUFDQTtBQUNBLHNCQURBLENBRUE7O0FBQ0E7QUFFQTtBQUNBLG9DQU5BLENBUUE7O0FBQ0E7QUFDQSxxQ0FWQSxDQVlBOztBQUNBO0FBQ0E7QUFFQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBTkE7QUFPQTtBQUNBLEtBM0JBO0FBNEJBO0FBQ0E7QUFDQSxLQTlCQTtBQStCQTtBQUNBLDRDQUNBO0FBRUE7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQVhBLENBYUE7OztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFFQTtBQUNBLEtBdERBO0FBdURBO0FBRUEsbUdBQ0E7QUFFQTtBQUVBO0FBRUEsMkJBQ0E7QUFFQTtBQUNBLG9DQWJBLENBZUE7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQTtBQUNBLGFBRkE7QUFJQTs7QUFFQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBZkE7QUFnQkEsV0FqQkE7QUFrQkEsU0F0Q0E7QUF1Q0EsT0E1Q0EsTUE2Q0E7O0FBRUE7QUFDQTtBQXZIQSxHQTdGQTtBQXNOQTtBQUNBO0FBQ0E7QUFDQTtBQUhBLEdBdE5BO0FBMk5BO0FBQ0EsZ0JBREEsMEJBQ0E7QUFDQTtBQUNBO0FBRUEsMEZBSkEsQ0FNQTs7QUFDQSw4Q0FDQSxrQ0FSQSxDQVVBOztBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUEsb0ZBakJBLENBbUJBOztBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBLE9BUkE7QUFVQSxLQS9CQTtBQWdDQSx3QkFoQ0Esa0NBZ0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FwQ0E7QUFxQ0EsbUJBckNBLDJCQXFDQSxZQXJDQSxFQXFDQSxRQXJDQSxFQXFDQSxhQXJDQSxFQXFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQTs7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FOQTtBQVFBO0FBQ0EsT0FaQSxFQVBBLENBcUJBOztBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsOEVBQ0EsSUFEQSxDQUNBO0FBQ0E7QUFDQTtBQUNBLFNBSkEsV0FLQTtBQUNBO0FBQ0EsU0FQQTtBQVFBLE9BaEJBLE1BZ0JBO0FBQ0E7QUFDQTtBQUVBLEtBaEZBO0FBaUZBLG1CQWpGQSwyQkFpRkEsUUFqRkEsRUFpRkEsSUFqRkEsRUFpRkE7QUFDQTs7QUFDQTtBQUNBO0FBQ0EsT0FGQSxNQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0F6RkE7QUEwRkEsc0JBMUZBLDhCQTBGQSxJQTFGQSxFQTBGQTtBQUNBLGdGQUNBO0FBRUE7QUFFQTtBQUNBLEtBakdBO0FBa0dBLG1CQWxHQSwyQkFrR0EsWUFsR0EsRUFrR0E7QUFBQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQSx5R0FDQTtBQUNBOztBQUVBO0FBQ0EsNEJBVkEsQ0FVQTtBQUNBO0FBQ0EsYUFkQTtBQWVBLFdBaEJBO0FBaUJBLFNBbEJBLE1Ba0JBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBLEtBaklBO0FBa0lBLHFCQWxJQSw2QkFrSUEsT0FsSUEsRUFrSUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUpBLEVBSkEsQ0FVQTs7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUpBLEVBakJBLENBdUJBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FKQTtBQU1BO0FBQ0EsS0FqS0E7QUFrS0Esa0JBbEtBLDBCQWtLQSxRQWxLQSxFQWtLQSxJQWxLQSxFQWtLQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTEE7QUFPQTtBQUNBLEtBN0tBO0FBOEtBLGVBOUtBLHVCQThLQSxJQTlLQSxFQThLQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTs7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0EsMEJBREE7QUFFQSw4QkFGQTtBQUdBLDhDQUhBLENBR0E7O0FBSEE7QUFNQSx5QkFDQTtBQUVBLCtCQUNBO0FBRUE7QUFDQTtBQUVBLE9BekJBO0FBMkJBO0FBQ0EsS0EvTUE7QUFnTkEsbUJBaE5BLDZCQWdOQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0EsT0FGQTtBQUlBO0FBQ0EsS0F6TkE7QUEwTkEsMEJBMU5BLGtDQTBOQSxnQkExTkEsRUEwTkE7QUFDQTtBQUVBO0FBQ0E7QUFDQSxPQUZBO0FBSUE7QUFDQSxLQWxPQTtBQW1PQSxhQW5PQSxxQkFtT0EsR0FuT0EsRUFtT0E7QUFDQTtBQUNBLEtBck9BO0FBc09BLFlBdE9BLG9CQXNPQSxHQXRPQSxFQXNPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0EsS0EvT0E7QUFnUEEsY0FoUEEsc0JBZ1BBLE1BaFBBLEVBZ1BBLElBaFBBLEVBZ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EscUhBQ0E7QUFFQSxnSEFDQTtBQUVBLGlDQUNBO0FBRUE7QUFDQSxLQS9QQTtBQWdRQSx1QkFoUUEsaUNBZ1FBO0FBQ0E7O0FBRUE7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBLFdBTEE7QUFLQTtBQUxBLFdBS0EsSUFMQSxDQUtBLFVBTEEsRUFLQSxLQUxBO0FBT0E7QUFDQTtBQUNBLEtBL1FBO0FBZ1JBLDBCQWhSQSxvQ0FnUkE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBLEtBbFJBO0FBbVJBLHFCQW5SQSw2QkFtUkEsSUFuUkEsRUFtUkEsSUFuUkEsRUFtUkE7QUFDQSw0QkFDQTtBQUVBO0FBQ0EsS0F4UkE7QUF5UkEseUJBelJBLG1DQXlSQTtBQUNBO0FBQ0EsS0EzUkE7QUE0UkEscUJBNVJBLCtCQTRSQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQ0EsOERBREEsSUFFQSw4SkFGQSxFQUVBO0FBQ0E7QUFDQTtBQUNBLFdBTkE7QUFPQSxTQVJBO0FBU0E7O0FBQ0E7QUFFQTtBQUNBLEtBN1NBO0FBOFNBLGdCQTlTQSx3QkE4U0EsTUE5U0EsRUE4U0E7QUFDQTtBQUVBLDRCQUNBLDhCQURBLEtBRUEsc0JBQ0E7QUFDQSxLQXJUQTtBQXNUQSxrQkF0VEEsNEJBc1RBO0FBQ0E7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsd0JBQ0E7QUFFQTtBQUNBLEtBblVBO0FBb1VBLGNBcFVBLHdCQW9VQTtBQUNBO0FBQUE7QUFFQSw4QkFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FuVkE7QUFvVkEsZ0NBcFZBLDBDQW9WQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBSEEsTUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FkQSxFQWNBLEtBZEE7QUFnQkE7QUFDQTtBQUNBLEtBdldBO0FBd1dBLGdCQXhXQSx3QkF3V0EsS0F4V0EsRUF3V0EsRUF4V0EsRUF3V0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWhYQSxHQTNOQTtBQTZrQkE7QUFDQTtBQUNBO0FBQ0EsY0FEQSxvQkFDQSxFQURBLEVBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQSxTQUhBO0FBS0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0EsU0FIQTtBQUlBO0FBWEE7QUFEQTtBQTlrQkEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vYXNzZXRzL3NyYy9qcy9lZGl0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cbiAgICA8ZGl2IGlkPVwidHJwLWVkaXRvclwiIGNsYXNzPVwid3AtY29yZS11aVwiPlxuXG4gICAgICAgIDxkaXYgaWQ9XCJ0cnAtY29udHJvbHNcIj5cblxuICAgICAgICAgICAgPGRpdiBpZD1cInRycC1jbG9zZS1zYXZlXCI+XG4gICAgICAgICAgICAgICAgPGEgaWQ9XCJ0cnAtY29udHJvbHMtY2xvc2VcIiA6aHJlZj1cImNsb3NlVVJMXCIgOnRpdGxlPVwiZWRpdG9yU3RyaW5ncy5jbG9zZVwiPjwvYT5cbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwidHJwLXNhdmUtYW5kLWxvYWRlci1zcGlubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRycC1hamF4LWxvYWRlclwiIHYtc2hvdz1cImxvYWRpbmdfc3RyaW5ncyA+IDBcIiBpZD1cInRycC1zdHJpbmctc2F2ZWQtYWpheC1sb2FkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLXNwaW5uZXJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNhdmUtdHJhbnNsYXRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOnNlbGVjdGVkSW5kZXhlc0FycmF5PVwic2VsZWN0ZWRJbmRleGVzQXJyYXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpkaWN0aW9uYXJ5PVwiZGljdGlvbmFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOnNldHRpbmdzPVwic2V0dGluZ3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpub25jZXM9XCJub25jZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDphamF4X3VybD1cImFqYXhVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjdXJyZW50TGFuZ3VhZ2U9XCJjdXJyZW50TGFuZ3VhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpvblNjcmVlbkxhbmd1YWdlPVwib25TY3JlZW5MYW5ndWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmlmcmFtZT1cImlmcmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmN1cnJlbnRVUkw9XCJjdXJyZW50VVJMXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWVyZ2luZ1N0cmluZz1cIm1lcmdpbmdTdHJpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptZXJnZURhdGE9XCJtZXJnZURhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEB0cmFuc2xhdGlvbnMtc2F2ZWQ9XCJzaG93Q2hhbmdlc1Vuc2F2ZWRNZXNzYWdlID0gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDplZGl0b3JTdHJpbmdzPVwiZWRpdG9yU3RyaW5nc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOnN0cmluZ1R5cGVzPVwic3RyaW5nVHlwZXNcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvc2F2ZS10cmFuc2xhdGlvbnM+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRycC1jb250cm9scy1jb250YWluZXJcIiA6Y2xhc3M9XCJ7J3RycC1zaG93LWVkaXRvcnMtbmF2aWdhdGlvbicgOiBlZGl0b3JzTmF2aWdhdGlvbi5zaG93IH1cIj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cnAtY29udHJvbHMtc2VjdGlvblwiIGlkPVwidHJwLWNvbnRyb2xzLXNlY3Rpb24tZmlyc3RcIj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLWNvbnRyb2xzLXNlY3Rpb24tY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cInRycC1sYW5ndWFnZS1zd2l0Y2hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPVwidHJwLWxhbmd1YWdlLXNlbGVjdFwiIG5hbWU9XCJsYW5nXCIgdi1tb2RlbD1cImN1cnJlbnRMYW5ndWFnZVwiIHYtc2VsZWN0Mj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2LWZvcj1cIihsYW5nLCBsYW5nSW5kZXgpIGluIGxhbmd1YWdlTmFtZXNcIiA6dmFsdWU9XCJsYW5nSW5kZXhcIj57e2xhbmd9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJ0cnAtc3RyaW5nLWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPVwidHJwLXN0cmluZy1jYXRlZ29yaWVzXCIgdi1tb2RlbD1cInNlbGVjdGVkU3RyaW5nXCIgdi1zZWxlY3QyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0Z3JvdXAgdi1mb3I9XCIoZ3JvdXApIGluIHN0cmluZ0dyb3Vwc1wiIDpsYWJlbD1cImdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHYtZm9yPVwiKHN0cmluZywgaW5kZXgpIGluIGRpY3Rpb25hcnlcIiA6dmFsdWU9XCJpbmRleFwiIHYtaWY9XCJzaG93U3RyaW5nKCBzdHJpbmcsIGdyb3VwIClcIiA6dGl0bGU9XCJzdHJpbmcuZGVzY3JpcHRpb25cIiA6ZGF0YS1kYXRhYmFzZS1pZD1cInN0cmluZy5kYklEXCIgOmRhdGEtZ3JvdXA9XCJzdHJpbmcuZ3JvdXBcIj57eyBwcm9jZXNzT3B0aW9uTmFtZSggc3RyaW5nLm9yaWdpbmFsLCBncm91cCApIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0Z3JvdXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cInRycC1uZXh0LXByZXZpb3VzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJ0cnAtcHJldmlvdXNcIiBjbGFzcz1cInRycC1uZXh0LXByZXZpb3VzLWJ1dHRvbnMgYnV0dG9uXCIgdi1vbjpjbGljaz1cInByZXZpb3VzU3RyaW5nKClcIiA6dGl0bGU9XCJlZGl0b3JTdHJpbmdzLnByZXZpb3VzX3RpdGxlX2F0dHJcIj48c3Bhbj4mbGFxdW87PC9zcGFuPiB7eyBlZGl0b3JTdHJpbmdzLnByZXZpb3VzIH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJ0cnAtbmV4dFwiIGNsYXNzPVwidHJwLW5leHQtcHJldmlvdXMtYnV0dG9ucyBidXR0b25cIiB2LW9uOmNsaWNrPVwibmV4dFN0cmluZygpXCIgOnRpdGxlPVwiZWRpdG9yU3RyaW5ncy5uZXh0X3RpdGxlX2F0dHJcIj57eyBlZGl0b3JTdHJpbmdzLm5leHQgfX0gPHNwYW4+JnJhcXVvOzwvc3Bhbj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwidHJwLXZpZXctYXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwidHJwLXZpZXctYXMtZGVzY3JpcHRpb25cIj57eyBlZGl0b3JTdHJpbmdzLnZpZXdfYXMgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPVwidHJwLXZpZXctYXMtc2VsZWN0XCIgdi1tb2RlbD1cInZpZXdBc1wiIHYtc2VsZWN0Mj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2LWZvcj1cIihyb2xlLCByb2xlSW5kZXgpIGluIHJvbGVzXCIgOnZhbHVlPVwicm9sZVwiIDpkaXNhYmxlZD1cIiFyb2xlXCIgOnRpdGxlPVwiIXJvbGUgPyBlZGl0b3JTdHJpbmdzLnZpZXdfYXNfcHJvIDogJydcIj57e3JvbGVJbmRleH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cnAtY29udHJvbHMtc2VjdGlvblwiIHYtc2hvdz1cInNlbGVjdGVkU3RyaW5nICE9PSBudWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYW5ndWFnZS1ib3hlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzZWxlY3RlZEluZGV4ZXNBcnJheT1cInNlbGVjdGVkSW5kZXhlc0FycmF5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGljdGlvbmFyeT1cImRpY3Rpb25hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjdXJyZW50TGFuZ3VhZ2U9XCJjdXJyZW50TGFuZ3VhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpvblNjcmVlbkxhbmd1YWdlPVwib25TY3JlZW5MYW5ndWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmxhbmd1YWdlTmFtZXM9XCJsYW5ndWFnZU5hbWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c2V0dGluZ3M9XCJzZXR0aW5nc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOnNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2U9XCJzaG93Q2hhbmdlc1Vuc2F2ZWRNZXNzYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZGlzY2FyZGVkLWNoYW5nZXM9XCJoYXNVbnNhdmVkQ2hhbmdlcygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZWRpdG9yU3RyaW5ncz1cImVkaXRvclN0cmluZ3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpmbGFnc1BhdGg9XCJmbGFnc1BhdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDppZnJhbWU9XCJpZnJhbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpub25jZXM9XCJub25jZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDphamF4X3VybD1cImFqYXhVcmxcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvbGFuZ3VhZ2UtYm94ZXM+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZXh0cmEtY29udGVudCA6bGFuZ3VhZ2VOYW1lcz1cImxhbmd1YWdlTmFtZXNcIiA6ZWRpdG9yU3RyaW5ncz1cImVkaXRvclN0cmluZ3NcIiA6cGFpZFZlcnNpb249XCJwYWlkVmVyc2lvblwiPjwvZXh0cmEtY29udGVudD5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cnAtY29udHJvbHMtc2VjdGlvblwiIHYtc2hvdz1cInRyYW5zbGF0aW9uTm90TG9hZGVkWWV0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJ0cnAtdHJhbnNsYXRpb24tbm90LXJlYWR5LXNlY3Rpb25cIiBjbGFzcz1cInRycC1jb250cm9scy1zZWN0aW9uLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIHYtaHRtbD1cImVkaXRvclN0cmluZ3MudHJhbnNsYXRpb25fbm90X2xvYWRlZF95ZXRcIj48L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxlZGl0b3JzLW5hdmlnYXRpb24gOmVkaXRvcnNOYXZpZ2F0aW9uPVwiZWRpdG9yc05hdmlnYXRpb25cIiA6c2VsZWN0ZWRUYWI9XCIndmlzdWFsZWRpdG9yJ1wiPjwvZWRpdG9ycy1uYXZpZ2F0aW9uPlxuXG4gICAgICAgICAgICA8ZGl2IGlkPVwidHJwX3NlbGVjdDJfb3ZlcmxheVwiPjwvZGl2PlxuXG4gICAgICAgICAgICA8aG92ZXItYWN0aW9uc1xuICAgICAgICAgICAgICAgIHJlZj1cImhvdmVyQWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgOmRpY3Rpb25hcnk9XCJkaWN0aW9uYXJ5XCJcbiAgICAgICAgICAgICAgICA6c2V0dGluZ3M9XCJzZXR0aW5nc1wiXG4gICAgICAgICAgICAgICAgOmlmcmFtZT1cImlmcmFtZVwiXG4gICAgICAgICAgICAgICAgOmRhdGFBdHRyaWJ1dGVzPVwiZGF0YUF0dHJpYnV0ZXNcIlxuICAgICAgICAgICAgICAgIDptZXJnZVJ1bGVzPVwibWVyZ2VSdWxlc1wiXG4gICAgICAgICAgICAgICAgOm5vbmNlcz1cIm5vbmNlc1wiXG4gICAgICAgICAgICAgICAgOmFqYXhfdXJsPVwiYWpheFVybFwiXG4gICAgICAgICAgICAgICAgOm1lcmdlRGF0YT1cIm1lcmdlRGF0YVwiXG4gICAgICAgICAgICAgICAgOmVkaXRvclN0cmluZ3M9XCJlZGl0b3JTdHJpbmdzXCJcbiAgICAgICAgICAgICAgICA6Y3VycmVudExhbmd1YWdlPVwiY3VycmVudExhbmd1YWdlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvaG92ZXItYWN0aW9ucz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBpZD1cInRycC1wcmV2aWV3XCI+XG4gICAgICAgICAgICA8aWZyYW1lIGlkPVwidHJwLXByZXZpZXctaWZyYW1lXCIgOnNyYz1cInVybFRvTG9hZFwiIHYtb246bG9hZD1cImlGcmFtZUxvYWRlZFwiPjwvaWZyYW1lPlxuXG4gICAgICAgICAgICA8ZGl2IGlkPVwidHJwLXByZXZpZXctbG9hZGVyXCIgY2xhc3M9XCJ0cnAtbG9hZGluZy1zY3JlZW5cIj5cbiAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwidHJwLWxvYWRlclwiIHdpZHRoPVwiNjVweFwiIGhlaWdodD1cIjY1cHhcIiB2aWV3Qm94PVwiMCAwIDY2IDY2XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPVwidHJwLWNpcmNsZVwiIGZpbGw9XCJub25lXCIgc3Ryb2tlLXdpZHRoPVwiNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBjeD1cIjMzXCIgY3k9XCIzM1wiIHI9XCIzMFwiPjwvY2lyY2xlPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgICBpbXBvcnQgJ3NlbGVjdDIvZGlzdC9qcy9zZWxlY3QyLm1pbi5qcydcbiAgICBpbXBvcnQgdXRpbHMgICAgICAgICAgICBmcm9tICcuL3V0aWxzJ1xuICAgIGltcG9ydCBheGlvcyAgICAgICAgICAgIGZyb20gJ2F4aW9zJ1xuICAgIGltcG9ydCBsYW5ndWFnZUJveGVzICAgIGZyb20gJy4vY29tcG9uZW50cy9sYW5ndWFnZS1ib3hlcy52dWUnXG4gICAgaW1wb3J0IHNhdmVUcmFuc2xhdGlvbnMgZnJvbSAnLi9jb21wb25lbnRzL3NhdmUtdHJhbnNsYXRpb25zLnZ1ZSdcbiAgICBpbXBvcnQgaG92ZXJBY3Rpb25zICAgICBmcm9tICcuL2NvbXBvbmVudHMvaG92ZXItYWN0aW9ucy52dWUnXG4gICAgaW1wb3J0IGV4dHJhQ29udGVudCAgICAgZnJvbSAnLi9jb21wb25lbnRzL2V4dHJhLWNvbnRlbnQudnVlJ1xuICAgIGltcG9ydCBlZGl0b3JzTmF2aWdhdGlvbiAgICAgZnJvbSAnLi9jb21wb25lbnRzL2VkaXRvcnMtbmF2aWdhdGlvbi52dWUnXG4gICAgaW1wb3J0IGhlICAgICAgICAgICAgICAgZnJvbSAnaGUnXG5cbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIGNvbXBvbmVudHM6e1xuICAgICAgICAgICAgbGFuZ3VhZ2VCb3hlcyxcbiAgICAgICAgICAgIHNhdmVUcmFuc2xhdGlvbnMsXG4gICAgICAgICAgICBob3ZlckFjdGlvbnMsXG4gICAgICAgICAgICBleHRyYUNvbnRlbnQsXG4gICAgICAgICAgICBlZGl0b3JzTmF2aWdhdGlvblxuICAgICAgICB9LFxuICAgICAgICBkYXRhKCl7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC8vcHJvcHNcbiAgICAgICAgICAgICAgICBzZXR0aW5ncyAgICAgICAgICAgICAgICAgIDogdHJwX2VkaXRvcl9kYXRhLnRycF9zZXR0aW5ncyxcbiAgICAgICAgICAgICAgICBsYW5ndWFnZU5hbWVzICAgICAgICAgICAgIDogdHJwX2VkaXRvcl9kYXRhLmxhbmd1YWdlX25hbWVzLFxuICAgICAgICAgICAgICAgIG9yZGVyZWRTZWNvbmRhcnlMYW5ndWFnZXMgOiB0cnBfZWRpdG9yX2RhdGEub3JkZXJlZF9zZWNvbmRhcnlfbGFuZ3VhZ2VzLFxuICAgICAgICAgICAgICAgIHJvbGVzICAgICAgICAgICAgICAgICAgICAgOiB0cnBfZWRpdG9yX2RhdGEudmlld19hc19yb2xlcyxcbiAgICAgICAgICAgICAgICBub25jZXMgICAgICAgICAgICAgICAgICAgIDogdHJwX2VkaXRvcl9kYXRhLmVkaXRvcl9ub25jZXMsXG4gICAgICAgICAgICAgICAgc3RyaW5nR3JvdXBPcmRlciAgICAgICAgICA6IHRycF9lZGl0b3JfZGF0YS5zdHJpbmdfZ3JvdXBfb3JkZXIsXG4gICAgICAgICAgICAgICAgc2VsZWN0b3JzICAgICAgICAgICAgICAgICA6IHRycF9lZGl0b3JfZGF0YS5zdHJpbmdfc2VsZWN0b3JzLFxuICAgICAgICAgICAgICAgIHN0cmluZ1R5cGVzICAgICAgICAgICAgICAgOiB0cnBfZWRpdG9yX2RhdGEuc3RyaW5nX3R5cGVzLFxuICAgICAgICAgICAgICAgIGRhdGFBdHRyaWJ1dGVzICAgICAgICAgICAgOiB0cnBfZWRpdG9yX2RhdGEuZGF0YV9hdHRyaWJ1dGVzLFxuICAgICAgICAgICAgICAgIG1lcmdlUnVsZXMgICAgICAgICAgICAgICAgOiB0cnBfZWRpdG9yX2RhdGEubWVyZ2VfcnVsZXMsXG4gICAgICAgICAgICAgICAgZWRpdG9yc05hdmlnYXRpb24gICAgICAgICA6IHRycF9lZGl0b3JfZGF0YS5lZGl0b3JzX25hdmlnYXRpb24sXG4gICAgICAgICAgICAgICAgZWRpdG9yU3RyaW5ncyAgICAgICAgICAgICA6IHRycF9lZGl0b3JfZGF0YS50cnBfbG9jYWxpemVkX3N0cmluZ3MsXG4gICAgICAgICAgICAgICAgZmxhZ3NQYXRoICAgICAgICAgICAgICAgICA6IHRycF9lZGl0b3JfZGF0YS5mbGFnc19wYXRoLFxuICAgICAgICAgICAgICAgIC8vZGF0YVxuICAgICAgICAgICAgICAgIGN1cnJlbnRMYW5ndWFnZSAgICAgICAgICAgOiB0cnBfZWRpdG9yX2RhdGEuY3VycmVudF9sYW5ndWFnZSxcbiAgICAgICAgICAgICAgICBvblNjcmVlbkxhbmd1YWdlICAgICAgICAgIDogdHJwX2VkaXRvcl9kYXRhLm9uX3NjcmVlbl9sYW5ndWFnZSxcbiAgICAgICAgICAgICAgICBjdXJyZW50VVJMICAgICAgICAgICAgICAgIDogdHJwX2VkaXRvcl9kYXRhLnVybF90b19sb2FkLFxuICAgICAgICAgICAgICAgIHVybFRvTG9hZCAgICAgICAgICAgICAgICAgOiB0cnBfZWRpdG9yX2RhdGEudXJsX3RvX2xvYWQsXG4gICAgICAgICAgICAgICAgYWpheFVybCAgICAgICAgICAgICAgICAgICA6IHRycF9lZGl0b3JfZGF0YS5hamF4X3VybCxcbiAgICAgICAgICAgICAgICBwYWlkVmVyc2lvbiAgICAgICAgICAgICAgIDogdHJwX2VkaXRvcl9kYXRhLnBhaWRfdmVyc2lvbixcbiAgICAgICAgICAgICAgICBpZnJhbWUgICAgICAgICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICAgICAgZGljdGlvbmFyeSAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkU3RyaW5nICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5kZXhlc0FycmF5ICAgICAgOiBbXSxcbiAgICAgICAgICAgICAgICBkZXRlY3RlZFNlbGVjdG9yQW5kSWQgICAgIDogW10sXG4gICAgICAgICAgICAgICAgc3RyaW5nR3JvdXBzICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgICAgIG1lcmdpbmdTdHJpbmcgICAgICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBtZXJnZURhdGEgICAgICAgICAgICAgICAgIDogW10sXG4gICAgICAgICAgICAgICAgc2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZpZXdBcyAgICAgICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgICAgICBsb2FkaW5nX3N0cmluZ3MgICAgICAgICAgIDogMCxcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbk5vdExvYWRlZFlldCAgIDogZmFsc2UsXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNyZWF0ZWQoKXtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NbJ2RlZmF1bHQtbGFuZ3VhZ2UtbmFtZSddID0gdGhpcy5sYW5ndWFnZU5hbWVzWyB0aGlzLnNldHRpbmdzWydkZWZhdWx0LWxhbmd1YWdlJ10gXVxuXG4gICAgICAgICAgICAvL3NldCBkZWZhdWx0IHZhbHVlIGZvciB0aGUgVmlldyBBcyBzZWxlY3RcbiAgICAgICAgICAgIGxldCBwYXJhbXMgPSB1dGlscy5nZXRVcmxQYXJhbWV0ZXJzKCB0aGlzLmN1cnJlbnRVUkwgKVxuXG4gICAgICAgICAgICBpZiggT2JqZWN0LmtleXMocGFyYW1zKS5sZW5ndGggPiAxICYmIHBhcmFtc1sndHJwLXZpZXctYXMnXSApXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3QXMgPSBwYXJhbXNbJ3RycC12aWV3LWFzJ11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdBcyA9ICdjdXJyZW50X3VzZXInXG4gICAgICAgIH0sXG4gICAgICAgIG1vdW50ZWQoKXtcbiAgICAgICAgICAgIHRoaXMuYWRkS2V5Ym9hcmRTaG9ydGN1dHNMaXN0ZW5lcigpXG4gICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXNcbiAgICAgICAgICAgIC8vIGluaXRpYWxpemUgc2VsZWN0MlxuICAgICAgICAgICAgalF1ZXJ5KCAnI3RycC1sYW5ndWFnZS1zZWxlY3QsICN0cnAtdmlldy1hcy1zZWxlY3QnICkuc2VsZWN0MiggeyB3aWR0aCA6ICcxMDAlJyB9KVxuXG4gICAgICAgICAgICAvL2luaXQgc3RyaW5ncyBkcm9wZG93blxuICAgICAgICAgICAgdGhpcy5zdHJpbmdzRHJvcGRvd25Mb2FkaW5nKClcblxuICAgICAgICAgICAgLy8gc2hvdyBvdmVybGF5IHdoZW4gc2VsZWN0IGlzIG9wZW5lZFxuICAgICAgICAgICAgalF1ZXJ5KCAnI3RycC1sYW5ndWFnZS1zZWxlY3QsICN0cnAtc3RyaW5nLWNhdGVnb3JpZXMnICkub24oICdzZWxlY3QyOm9wZW4nLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBqUXVlcnkoICcjdHJwX3NlbGVjdDJfb3ZlcmxheScgKS5mYWRlSW4oICcxMDAnIClcbiAgICAgICAgICAgIH0pLm9uKCAnc2VsZWN0MjpjbG9zZScsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGpRdWVyeSggJyN0cnBfc2VsZWN0Ml9vdmVybGF5JyApLmhpZGUoKVxuICAgICAgICAgICAgfSkub24oICdzZWxlY3QyOm9wZW5pbmcnLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgLyogd2hlbiB3ZSBoYXZlIHVuc2F2ZWQgY2hhbmdlcyBwcmV2ZW50IHRoZSBzdHJpbmdzIGRyb3Bkb3duIGZyb20gb3BlbmluZyBzbyB3ZSBkbyBub3QgaGF2ZSBhIGRpc2Nvbm5lY3QgYmV0d2VlbiB0aGUgdGV4dGFyZWFzIGFuZCB0aGUgZHJvcGRvd24gKi9cbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5oYXNVbnNhdmVkQ2hhbmdlcygpKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIC8vIHJlc2l6ZSBzaWRlYmFyIGFuZCBjb25zZXF1ZW50bHkgdGhlIGlmcmFtZVxuICAgICAgICAgICAgbGV0IHByZXZpZXdDb250YWluZXIgPSBqUXVlcnkoICcjdHJwLXByZXZpZXcnICk7XG4gICAgICAgICAgICBsZXQgdG90YWxfd2lkdGggPSBqUXVlcnkod2luZG93KS53aWR0aCgpO1xuICAgICAgICAgICAgalF1ZXJ5KCAnI3RycC1jb250cm9scycgKS5yZXNpemFibGUoe1xuICAgICAgICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbiggKSB7IHByZXZpZXdDb250YWluZXIudG9nZ2xlKCk7IH0sXG4gICAgICAgICAgICAgICAgc3RvcDogZnVuY3Rpb24oICkgeyBwcmV2aWV3Q29udGFpbmVyLnRvZ2dsZSgpOyB9LFxuICAgICAgICAgICAgICAgIGhhbmRsZXM6ICdlJyxcbiAgICAgICAgICAgICAgICBtaW5XaWR0aDogMzI3LFxuICAgICAgICAgICAgICAgIG1heFdpZHRoOiB0b3RhbF93aWR0aCAtIDIwXG4gICAgICAgICAgICB9KS5iaW5kKCBcInJlc2l6ZVwiLCB0aGlzLnJlc2l6ZUlmcmFtZSApO1xuXG4gICAgICAgICAgICAvLyByZXNpemUgaWZyYW1lIHdoZW4gcmVzaXppbmcgd2luZG93XG4gICAgICAgICAgICBqUXVlcnkoIHdpbmRvdyApLnJlc2l6ZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5yZXNpemVJZnJhbWUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICB3YXRjaDoge1xuICAgICAgICAgICAgY3VycmVudExhbmd1YWdlOiBmdW5jdGlvbiggY3VycmVudExhbmd1YWdlICkge1xuICAgICAgICAgICAgICAgIGxldCBzZWxmID0gdGhpc1xuICAgICAgICAgICAgICAgIC8vZ3JhYiB0aGUgY29ycmVjdCBVUkwgZnJvbSB0aGUgaUZyYW1lXG4gICAgICAgICAgICAgICAgbGV0IG5ld1VSTCA9IHRoaXMuaWZyYW1lLnF1ZXJ5U2VsZWN0b3IoICdsaW5rW2hyZWZsYW5nPVwiJyArIGN1cnJlbnRMYW5ndWFnZS5yZXBsYWNlKCAnXycsICctJyApICsnXCJdJyApLmdldEF0dHJpYnV0ZSgnaHJlZicpXG5cbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRVUkwgICAgICAgICAgID0gbmV3VVJMXG4gICAgICAgICAgICAgICAgdGhpcy5pZnJhbWUubG9jYXRpb24gICAgICA9IG5ld1VSTFxuXG4gICAgICAgICAgICAgICAgLy9yZXNldCB2dWUgcHJvcHNcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkU3RyaW5nICAgICAgID0gJydcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXhlc0FycmF5ID0gW11cblxuICAgICAgICAgICAgICAgIC8vc2V0IHN0cmluZ3MgZHJvcGRvd24gdG8gbG9hZGluZyBzdGF0ZVxuICAgICAgICAgICAgICAgIGpRdWVyeSgnI3RycC1zdHJpbmctY2F0ZWdvcmllcycpLnZhbCgnJykudHJpZ2dlcignY2hhbmdlJylcbiAgICAgICAgICAgICAgICB0aGlzLnN0cmluZ3NEcm9wZG93bkxvYWRpbmcoKVxuXG4gICAgICAgICAgICAgICAgdGhpcy5vblNjcmVlbkxhbmd1YWdlID0gY3VycmVudExhbmd1YWdlXG4gICAgICAgICAgICAgICAgaWYoIHRoaXMuc2V0dGluZ3NbJ2RlZmF1bHQtbGFuZ3VhZ2UnXSA9PSB0aGlzLmN1cnJlbnRMYW5ndWFnZSAmJiB0aGlzLnNldHRpbmdzWyd0cmFuc2xhdGlvbi1sYW5ndWFnZXMnXS5sZW5ndGggPiAxICl7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NbJ3RyYW5zbGF0aW9uLWxhbmd1YWdlcyddLnNvbWUoZnVuY3Rpb24obGFuZ3VhZ2Upe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBsYW5ndWFnZSAhPSBzZWxmLnNldHRpbmdzWydkZWZhdWx0LWxhbmd1YWdlJ10gKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXR1cm4gdGhlIGZpcnN0IGxhbmd1YWdlIG5vdCBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vblNjcmVlbkxhbmd1YWdlID0gbGFuZ3VhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjdXJyZW50VVJMOiBmdW5jdGlvbiAoIG5ld1VybCwgb2xkVXJsICkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSggbnVsbCwgbnVsbCwgdGhpcy5wYXJlbnRVUkwoIG5ld1VybCApIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2aWV3QXM6IGZ1bmN0aW9uKCByb2xlICkge1xuICAgICAgICAgICAgICAgIGlmKCAhdGhpcy5jdXJyZW50VVJMIHx8ICF0aGlzLmlmcmFtZSApXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuXG4gICAgICAgICAgICAgICAgbGV0IHVybCA9IHRoaXMuY2xlYW5VUkwoIHRoaXMuY3VycmVudFVSTCApXG5cbiAgICAgICAgICAgICAgICB1cmwgPSB1dGlscy51cGRhdGVVcmxQYXJhbWV0ZXIoIHVybCwgJ3RycC1lZGl0LXRyYW5zbGF0aW9uJywgJ3ByZXZpZXcnIClcblxuICAgICAgICAgICAgICAgIGlmKCByb2xlID09ICdjdXJyZW50X3VzZXInICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlmcmFtZS5sb2NhdGlvbiA9IHVybFxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvL2lmIG5vbmNlIG5vdCBhdmFpbGFibGUsIGFuIHVwZGF0ZSB0byB0aGUgQnJvd3NlIGFzIE90aGVyIFJvbGVzIGFkZC1vbiBpcyByZXF1aXJlZFxuICAgICAgICAgICAgICAgIGlmKCAhdGhpcy5ub25jZXNbcm9sZV0gKSB7XG4gICAgICAgICAgICAgICAgICAgIGFsZXJ0KCB0aGlzLmVkaXRvclN0cmluZ3MuYm9yX3VwZGF0ZV9ub3RpY2UgKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB1cmwgPSB1dGlscy51cGRhdGVVcmxQYXJhbWV0ZXIoIHVybCwgJ3RycC12aWV3LWFzJywgcm9sZSApXG4gICAgICAgICAgICAgICAgdXJsID0gdXRpbHMudXBkYXRlVXJsUGFyYW1ldGVyKCB1cmwsICd0cnAtdmlldy1hcy1ub25jZScsIHRoaXMubm9uY2VzW3JvbGVdIClcblxuICAgICAgICAgICAgICAgIHRoaXMuaWZyYW1lLmxvY2F0aW9uID0gdXJsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VsZWN0ZWRTdHJpbmc6IGZ1bmN0aW9uICggc2VsZWN0ZWRTdHJpbmdBcnJheUluZGV4LCBvbGRTdHJpbmcgKXtcblxuICAgICAgICAgICAgICAgIGlmKCB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzKCkgfHwgKCAhc2VsZWN0ZWRTdHJpbmdBcnJheUluZGV4ICYmIHNlbGVjdGVkU3RyaW5nQXJyYXlJbmRleCAhPT0gMCApIClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG5cbiAgICAgICAgICAgICAgICBqUXVlcnkoICcjdHJwLXN0cmluZy1jYXRlZ29yaWVzJyApLnZhbCggc2VsZWN0ZWRTdHJpbmdBcnJheUluZGV4ICE9PSBudWxsID8gc2VsZWN0ZWRTdHJpbmdBcnJheUluZGV4IDogJycgKS50cmlnZ2VyKCAnY2hhbmdlJyApXG5cbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRTdHJpbmcgICAgICAgPSB0aGlzLmRpY3Rpb25hcnlbc2VsZWN0ZWRTdHJpbmdBcnJheUluZGV4XVxuXG4gICAgICAgICAgICAgICAgaWYoICFzZWxlY3RlZFN0cmluZyApXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuXG4gICAgICAgICAgICAgICAgbGV0IGN1cnJlbnROb2RlcyAgICAgICAgICA9IHRoaXMuaWZyYW1lLnF1ZXJ5U2VsZWN0b3JBbGwoIFwiW1wiICsgc2VsZWN0ZWRTdHJpbmcuc2VsZWN0b3IgKyBcIj0nXCIgKyBzZWxlY3RlZFN0cmluZy5kYklEICsgXCInXVwiKVxuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZEluZGV4ZXNBcnJheSA9IFtdXG5cbiAgICAgICAgICAgICAgICAvL3doZW4gbWVyZ2luZyB3ZSBkbyBub3QgaGF2ZSBhIHZhbGlkIGN1cnJlbnQgbm9kZSwgc28gd2UganVzdCBhZGQgdGhlIGZha2UgaWRcbiAgICAgICAgICAgICAgICBpZiggY3VycmVudE5vZGVzLmxlbmd0aCA+IDAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzZWxmID0gdGhpc1xuICAgICAgICAgICAgICAgICAgICBsZXQgc2VsZWN0b3JzID0gc2VsZi5nZXRBbGxTZWxlY3RvcnMoKVxuICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZXMgPSBbXVxuXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnROb2Rlcy5mb3JFYWNoKCBmdW5jdGlvbiAoIGN1cnJlbnROb2RlICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMucHVzaCggY3VycmVudE5vZGUgKVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGN1cnJlbnROb2RlLnRhZ05hbWUgIT0gXCJBXCIgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmNsdWRlIHRoZSBhbmNob3IncyB0cmFuc2xhdGFibGUgYXR0cmlidXRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhbmNob3JQYXJlbnQgID0gY3VycmVudE5vZGUuY2xvc2VzdCgnYScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoICBhbmNob3JQYXJlbnQgIT0gbnVsbCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMucHVzaChhbmNob3JQYXJlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGN1cnJlbnROb2RlLnRhZ05hbWUgPT0gXCJBXCIgJiYgY3VycmVudE5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluY2x1ZGUgYWxsIHRoZSB0cmFuc2xhdGFibGUgYXR0cmlidXRlcyBpbnNpZGUgdGhlIGFuY2hvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGlsZHJlbkFycmF5ID0gWyAuLi5jdXJyZW50Tm9kZS5jaGlsZHJlbiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuQXJyYXkuZm9yRWFjaCggZnVuY3Rpb24gKCBjaGlsZCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMucHVzaChjaGlsZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzLmZvckVhY2goIGZ1bmN0aW9uKCBub2RlICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9ycy5mb3JFYWNoKGZ1bmN0aW9uIChzZWxlY3Rvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3RyaW5nSWQgPSBub2RlLmdldEF0dHJpYnV0ZShzZWxlY3RvcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmluZ0lkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZm91bmQgPSBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciggaSA9IDA7IGkgPCBzZWxlY3RlZEluZGV4ZXNBcnJheS5sZW5ndGg7IGkrKyApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4ZXNBcnJheVtpXV0gIT09ICd1bmRlZmluZWQnICYmIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4ZXNBcnJheVtpXV0uZGJJRCAhPT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhlc0FycmF5W2ldXS5kYklEID09PSBzdHJpbmdJZCApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhIGZvdW5kICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5kZXhlc0FycmF5LnB1c2goc2VsZi5nZXRTdHJpbmdJbmRleChzZWxlY3Rvciwgc3RyaW5nSWQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5kZXhlc0FycmF5LnB1c2goIHNlbGVjdGVkU3RyaW5nQXJyYXlJbmRleCApXG5cbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXhlc0FycmF5ID0gc2VsZWN0ZWRJbmRleGVzQXJyYXlcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXB1dGVkOiB7XG4gICAgICAgICAgICBjbG9zZVVSTDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW5VUkwoIHRoaXMuY3VycmVudFVSTCApXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZHM6IHtcbiAgICAgICAgICAgIGlGcmFtZUxvYWRlZCgpe1xuICAgICAgICAgICAgICAgIGxldCBzZWxmID0gdGhpc1xuICAgICAgICAgICAgICAgIGxldCBpZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3RycC1wcmV2aWV3LWlmcmFtZScpXG5cbiAgICAgICAgICAgICAgICB0aGlzLmlmcmFtZSA9IGlmcmFtZUVsZW1lbnQuY29udGVudERvY3VtZW50IHx8IGlmcmFtZUVsZW1lbnQuY29udGVudFdpbmRvdy5kb2N1bWVudFxuXG4gICAgICAgICAgICAgICAgLy9zeW5jIGlGcmFtZSBVUkwgd2l0aCBwYXJlbnRcbiAgICAgICAgICAgICAgICBpZiAoIHRoaXMuY3VycmVudFVSTCAhPSB0aGlzLmlmcmFtZS5VUkwgKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRVUkwgPSB0aGlzLmlmcmFtZS5VUkxcblxuICAgICAgICAgICAgICAgIC8vaGlkZSBpRnJhbWUgbG9hZGVyXG4gICAgICAgICAgICAgICAgdGhpcy5pZnJhbWVMb2FkZXIoICdoaWRlJyApXG5cbiAgICAgICAgICAgICAgICBzZWxmLmRldGVjdGVkU2VsZWN0b3JBbmRJZCA9IFtdXG4gICAgICAgICAgICAgICAgc2VsZi5kaWN0aW9uYXJ5ICAgICAgICAgICAgPSBbXVxuICAgICAgICAgICAgICAgIHRoaXMuc2NhbklmcmFtZUZvclN0cmluZ3MoKVxuXG4gICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICd0cnBfaWZyYW1lX3BhZ2VfdXBkYXRlZCcsIHRoaXMuc2NhbklmcmFtZUZvclN0cmluZ3MgKVxuXG4gICAgICAgICAgICAgICAgLy9ldmVudCB0aGF0IGlzIGZpcmVkIHdoZW4gdGhlIGlGcmFtZSBpcyBuYXZpZ2F0ZWRcbiAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50LmNvbnRlbnRXaW5kb3cub25iZWZvcmV1bmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5pZnJhbWVMb2FkZXIoICdzaG93JyApXG5cbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RlZFN0cmluZyA9IG51bGxcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RlZEluZGV4ZXNBcnJheSA9IFtdXG4gICAgICAgICAgICAgICAgICAgIHNlbGYudHJhbnNsYXRpb25Ob3RMb2FkZWRZZXQgPSBmYWxzZVxuXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc3RyaW5nc0Ryb3Bkb3duTG9hZGluZygpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2NhbklmcmFtZUZvclN0cmluZ3MoKXtcbiAgICAgICAgICAgICAgICB0aGlzLnNjYW5Gb3JTZWxlY3RvciggJ2RhdGEtdHJwLXRyYW5zbGF0ZS1pZCcsICdyZWd1bGFyJywgdGhpcy5vblNjcmVlbkxhbmd1YWdlIClcbiAgICAgICAgICAgICAgICB0aGlzLnNjYW5Gb3JTZWxlY3RvciggJ2RhdGEtdHJwZ2V0dGV4dG9yaWdpbmFsJywgJ2dldHRleHQnLCB0aGlzLmN1cnJlbnRMYW5ndWFnZSApXG4gICAgICAgICAgICAgICAgdGhpcy5zY2FuRm9yU2VsZWN0b3IoICdkYXRhLXRycC1wb3N0LXNsdWcnLCAncG9zdHNsdWcnLCB0aGlzLmN1cnJlbnRMYW5ndWFnZSApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2NhbkZvclNlbGVjdG9yKCBiYXNlU2VsZWN0b3IsIHR5cGVTbHVnLCBsYW5ndWFnZU9mSWRzICl7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nX3N0cmluZ3MrK1xuICAgICAgICAgICAgICAgIGxldCBzZWxmICAgICAgICAgICA9IHRoaXNcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0b3JzICAgICAgPSB0aGlzLnByZXBhcmVTZWxlY3RvclN0cmluZ3MoIGJhc2VTZWxlY3RvciApXG4gICAgICAgICAgICAgICAgbGV0IG5vZGVzICAgICAgICAgID0gWy4uLnRoaXMuaWZyYW1lLnF1ZXJ5U2VsZWN0b3JBbGwoICdbJyArIHNlbGVjdG9ycy5qb2luKCddLFsnKSArICddJyApXVxuICAgICAgICAgICAgICAgIGxldCBzdHJpbmdJZHNBcnJheSA9IFtdLCBub2RlRGF0YSA9IFtdLCBub2RlRW50cmllcyA9IFtdXG5cbiAgICAgICAgICAgICAgICBub2Rlcy5mb3JFYWNoKCBmdW5jdGlvbiAoIG5vZGUgKXtcbiAgICAgICAgICAgICAgICAgICAgbm9kZUVudHJpZXMgPSBzZWxmLmdldE5vZGVJbmZvKCBub2RlLCBiYXNlU2VsZWN0b3IgKVxuXG4gICAgICAgICAgICAgICAgICAgIG5vZGVFbnRyaWVzLmZvckVhY2goIGZ1bmN0aW9uKCBlbnRyeSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgY2hlY2sgZW5zdXJlcyB0aGF0IHdlIGRvbid0IGNyZWF0ZSBkdXBsaWNhdGVzIHdoZW4gcmVzY2FubmluZyBhZnRlciBhamF4IGNvbXBsZXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFzZWxmLmFscmVhZHlEZXRlY3RlZCggZW50cnkuc2VsZWN0b3IsIGVudHJ5LmRiSUQgKSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdJZHNBcnJheS5wdXNoKGVudHJ5LmRiSUQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZURhdGEucHVzaChlbnRyeSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgICAgICBzZWxmLnNldHVwRXZlbnRMaXN0ZW5lciggbm9kZSApXG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIC8vdW5pcXVlIGlkcyBvbmx5XG4gICAgICAgICAgICAgICAgc3RyaW5nSWRzQXJyYXkgPSBbLi4ubmV3IFNldChzdHJpbmdJZHNBcnJheSldXG4gICAgICAgICAgICAgICAgaWYgKCBzdHJpbmdJZHNBcnJheS5sZW5ndGggPiAwICkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IG5ldyBGb3JtRGF0YSgpXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKCdhY3Rpb24nICAgICAgICwgJ3RycF9nZXRfdHJhbnNsYXRpb25zXycgKyB0eXBlU2x1ZylcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoJ2FsbF9sYW5ndWFnZXMnLCAndHJ1ZScpXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKCdzZWN1cml0eScgICAgICwgdGhpcy5ub25jZXNbJ2dldHRyYW5zbGF0aW9uc25vbmNlJyArIHR5cGVTbHVnXSlcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoJ2xhbmd1YWdlJyAgICAgLCBsYW5ndWFnZU9mSWRzKVxuICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCgnc3RyaW5nX2lkcycgICAsIEpTT04uc3RyaW5naWZ5KHN0cmluZ0lkc0FycmF5KSlcblxuICAgICAgICAgICAgICAgICAgICBheGlvcy5wb3N0KHRoaXMuYWpheFVybCwgZGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9hZGluZ19zdHJpbmdzLS1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFkZFRvRGljdGlvbmFyeShyZXNwb25zZS5kYXRhLCBub2RlRGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYubG9hZGluZ19zdHJpbmdzLS1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhbHJlYWR5RGV0ZWN0ZWQoIHNlbGVjdG9yLCBkYklkICl7XG4gICAgICAgICAgICAgICAgbGV0IGNvbWJpbmVkID0gc2VsZWN0b3IgKyAnPScgKyBkYklkXG4gICAgICAgICAgICAgICAgaWYgKCB1dGlscy5hcnJheUNvbnRhaW5zSXRlbSggdGhpcy5kZXRlY3RlZFNlbGVjdG9yQW5kSWQsIGNvbWJpbmVkICkgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICAgICAgfWVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRldGVjdGVkU2VsZWN0b3JBbmRJZC5wdXNoKGNvbWJpbmVkKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0dXBFdmVudExpc3RlbmVyKCBub2RlICl7XG4gICAgICAgICAgICAgICAgaWYgKCBub2RlLnRhZ05hbWUgPT0gJ0EnICYmICFub2RlLmhhc0F0dHJpYnV0ZSggJ2RhdGEtdHJwZ2V0dGV4dG9yaWdpbmFsJyApIClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG5cbiAgICAgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXNcblxuICAgICAgICAgICAgICAgIG5vZGUuYWRkRXZlbnRMaXN0ZW5lciggJ21vdXNlZW50ZXInLCBzZWxmLiRyZWZzLmhvdmVyQWN0aW9ucy5zaG93UGVuY2lsSWNvbiApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWRkVG9EaWN0aW9uYXJ5KCByZXNwb25zZURhdGEsIG5vZGVJbmZvID0gbnVsbCApe1xuICAgICAgICAgICAgICAgIGxldCBzZWxmID0gdGhpc1xuXG4gICAgICAgICAgICAgICAgaWYgKCByZXNwb25zZURhdGEgIT0gbnVsbCApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCBub2RlSW5mbyApe1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUluZm8uZm9yRWFjaChmdW5jdGlvbiAoIGluZm9Sb3csIGluZGV4ICl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VEYXRhLnNvbWUoIGZ1bmN0aW9uICggcmVzcG9uc2VEYXRhUm93ICkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggaW5mb1Jvdy5kYklEID09IHJlc3BvbnNlRGF0YVJvdy5kYklEICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9icmluZyBibG9ja190eXBlIHRvIHRoZSB0b3AgbGV2ZWwgb2JqZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJlc3BvbnNlRGF0YVJvdy50eXBlICE9ICdnZXR0ZXh0JyAmJiB0eXBlb2YgcmVzcG9uc2VEYXRhUm93LmJsb2NrX3R5cGUgPT0gJ3VuZGVmaW5lZCcgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpcnN0TGFuZ3VhZ2UgPSBzZWxmLm9yZGVyZWRTZWNvbmRhcnlMYW5ndWFnZXNbMF1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIHJlc3BvbnNlRGF0YVJvdy50cmFuc2xhdGlvbnNBcnJheVtmaXJzdExhbmd1YWdlXS5ibG9ja190eXBlICE9ICd1bmRlZmluZWQnIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VEYXRhUm93LmJsb2NrX3R5cGUgPSByZXNwb25zZURhdGFSb3cudHJhbnNsYXRpb25zQXJyYXlbZmlyc3RMYW5ndWFnZV0uYmxvY2tfdHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5mb1tpbmRleF0gPSBPYmplY3QuYXNzaWduKCB7fSwgcmVzcG9uc2VEYXRhUm93LCBpbmZvUm93IClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlIC8vIGEgc29ydCBvZiBicmVha1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUluZm8gPSByZXNwb25zZURhdGFcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RyaW5nR3JvdXBzID0gdGhpcy5hZGRUb1N0cmluZ0dyb3Vwcyggbm9kZUluZm8gKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpY3Rpb25hcnkgPSB0aGlzLmRpY3Rpb25hcnkuY29uY2F0KCBub2RlSW5mbyApXG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0U3RyaW5nc0Ryb3Bkb3duKClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWRkVG9TdHJpbmdHcm91cHMoIHN0cmluZ3MgKXtcblxuICAgICAgICAgICAgICAgIC8vIHNlZSB3aGF0IG5vZGUgZ3JvdXBzIGFyZSBmb3VuZFxuICAgICAgICAgICAgICAgIGxldCBmb3VuZFN0cmluZ0dyb3VwcyA9IHRoaXMuc3RyaW5nR3JvdXBzO1xuICAgICAgICAgICAgICAgIHN0cmluZ3MuZm9yRWFjaCggZnVuY3Rpb24gKCBzdHJpbmcgKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICggZm91bmRTdHJpbmdHcm91cHMuaW5kZXhPZiggc3RyaW5nLmdyb3VwICkgPT09IC0xICYmICggKCB0eXBlb2Ygc3RyaW5nLmJsb2NrVHlwZSA9PT0gJ3VuZGVmaW5lZCcgKSB8fCBzdHJpbmcuYmxvY2tUeXBlICE9PSAnMicgKSApe1xuICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRTdHJpbmdHcm91cHMucHVzaCggc3RyaW5nLmdyb3VwIClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICAvLyBwdXQgdGhlIG5vZGUgZ3JvdXBzIGluIHRoZSBvcmRlciB0aGF0IHdlIHdhbnQsIGFjY29yZGluZyB0byB0aGUgcHJvcCB0aGlzLnN0cmluZ0dyb3VwT3JkZXJcbiAgICAgICAgICAgICAgICBsZXQgb3JkZXJlZFN0cmluZ0dyb3VwcyA9IFtdO1xuXG4gICAgICAgICAgICAgICAgaWYgKCB0aGlzLmVkaXRvclN0cmluZ3Muc2VvX3VwZGF0ZV9ub3RpY2UgIT0gJ3Nlb19wYWNrX3VwZGF0ZV9ub3RfbmVlZGVkJyApe1xuICAgICAgICAgICAgICAgICAgICBvcmRlcmVkU3RyaW5nR3JvdXBzLnB1c2goIHRoaXMuZWRpdG9yU3RyaW5ncy5zZW9fdXBkYXRlX25vdGljZSApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuc3RyaW5nR3JvdXBPcmRlci5mb3JFYWNoKCBmdW5jdGlvbiggZ3JvdXAgKXtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCBmb3VuZFN0cmluZ0dyb3Vwcy5pbmRleE9mKCBncm91cCApICE9PSAtMSApe1xuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXJlZFN0cmluZ0dyb3Vwcy5wdXNoKCBncm91cCApXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgLy8gaWYgdGhlcmUgd2VyZSBhbnkgb3RoZXIgc3RyaW5nIGdyb3VwcyB0aGF0IHdlcmUgbm90IGluIHRoZSBwcm9wLCBhZGQgdGhlbSBhdCB0aGUgZW5kLlxuICAgICAgICAgICAgICAgIGZvdW5kU3RyaW5nR3JvdXBzLmZvckVhY2goIGZ1bmN0aW9uIChncm91cCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIG9yZGVyZWRTdHJpbmdHcm91cHMuaW5kZXhPZiggZ3JvdXAgKSA9PT0gLTEgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyZWRTdHJpbmdHcm91cHMucHVzaChncm91cCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9yZGVyZWRTdHJpbmdHcm91cHM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0U3RyaW5nSW5kZXgoIHNlbGVjdG9yLCBkYklEICl7XG4gICAgICAgICAgICAgICAgbGV0IGZvdW5kID0gbnVsbFxuXG4gICAgICAgICAgICAgICAgdGhpcy5kaWN0aW9uYXJ5LnNvbWUoZnVuY3Rpb24gKCBzdHJpbmcsIGluZGV4ICkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIHN0cmluZy5kYklEID09IGRiSUQgJiYgc3RyaW5nLnNlbGVjdG9yID09IHNlbGVjdG9yICl7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIHJldHVybiBmb3VuZFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldE5vZGVJbmZvKCBub2RlLCBiYXNlU2VsZWN0b3IgPSAnJyApe1xuICAgICAgICAgICAgICAgIGxldCBzdHJpbmdJZFxuICAgICAgICAgICAgICAgIGxldCBub2RlRGF0YSAgPSBbXVxuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RvcnMgPSB0aGlzLnByZXBhcmVTZWxlY3RvclN0cmluZ3MoIGJhc2VTZWxlY3RvciApXG5cbiAgICAgICAgICAgICAgICBzZWxlY3RvcnMuZm9yRWFjaCggZnVuY3Rpb24gKCBzZWxlY3RvciApIHtcblxuICAgICAgICAgICAgICAgICAgICBzdHJpbmdJZCA9IG5vZGUuZ2V0QXR0cmlidXRlKCBzZWxlY3RvciApXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCBzdHJpbmdJZCApIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGVBdHRyaWJ1dGUgICA9IHNlbGVjdG9yLnJlcGxhY2UoIGJhc2VTZWxlY3RvciwgJycgKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGVHcm91cCAgICAgICA9IG5vZGUuZ2V0QXR0cmlidXRlKCAnZGF0YS10cnAtbm9kZS1ncm91cCcgKyBub2RlQXR0cmlidXRlIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlRGVzY3JpcHRpb24gPSBub2RlLmdldEF0dHJpYnV0ZSggJ2RhdGEtdHJwLW5vZGUtZGVzY3JpcHRpb24nICsgbm9kZUF0dHJpYnV0ZSApXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlbnRyeSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYklEICAgICAgOiBzdHJpbmdJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvciAgOiBzZWxlY3RvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgOiBub2RlQXR0cmlidXRlLnN1YnN0cigxKSwgLy8gc3Vic3RyKDEpIGlzIHVzZWQgdG8gdHJpbSBwcmVmaXhpbmcgbGluZSAtIGV4LiAtYWx0IHdpbGwgcmVzdWx0IGluIGFsdCAobm8gbGluZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBub2RlR3JvdXAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5Lmdyb3VwID0gbm9kZUdyb3VwXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbm9kZURlc2NyaXB0aW9uIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5kZXNjcmlwdGlvbiA9IG5vZGVEZXNjcmlwdGlvblxuXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlRGF0YS5wdXNoKCBlbnRyeSApXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZURhdGFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRBbGxTZWxlY3RvcnMoKXtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0b3JzID0gW11cbiAgICAgICAgICAgICAgICBsZXQgc2VsZiAgICAgID0gdGhpc1xuXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhQXR0cmlidXRlcy5mb3JFYWNoKCBmdW5jdGlvbiAoIGRhdGFBdHRyaWJ1dGUgKXtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzID0gc2VsZWN0b3JzLmNvbmNhdCggc2VsZi5wcmVwYXJlU2VsZWN0b3JTdHJpbmdzKCBkYXRhQXR0cmlidXRlICkgKVxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0b3JzXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJlcGFyZVNlbGVjdG9yU3RyaW5ncyggYmFzZU5hbWVTZWxlY3RvciApe1xuICAgICAgICAgICAgICAgIGxldCBwYXJzZWRfc2VsZWN0b3JzID0gW11cblxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0b3JzLmZvckVhY2goIGZ1bmN0aW9uICggc2VsZWN0b3JTdWZmaXgsIGluZGV4ICl7XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZF9zZWxlY3RvcnMucHVzaCggYmFzZU5hbWVTZWxlY3RvciArIHNlbGVjdG9yU3VmZml4ICApXG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZWRfc2VsZWN0b3JzXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFyZW50VVJMKCB1cmwgKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gdXJsLnJlcGxhY2UoICd0cnAtZWRpdC10cmFuc2xhdGlvbj1wcmV2aWV3JywgJ3RycC1lZGl0LXRyYW5zbGF0aW9uPXRydWUnIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjbGVhblVSTCggdXJsICl7XG4gICAgICAgICAgICAgICAgLy9tYWtlIHJlbW92ZVVybFBhcmFtZXRlciByZWN1cnNpdmUgYW5kIG9ubHkgY2FsbCBpdCBvbmNlIHdpdGggYWxsIHRoZSBwYXJhbWV0ZXJzIHRoYXRcbiAgICAgICAgICAgICAgICAvL25lZWQgdG8gc3RyaXBwZWQgP1xuICAgICAgICAgICAgICAgIHVybCA9IHV0aWxzLnJlbW92ZVVybFBhcmFtZXRlciggdXJsLCAnbGFuZycgKVxuICAgICAgICAgICAgICAgIHVybCA9IHV0aWxzLnJlbW92ZVVybFBhcmFtZXRlciggdXJsLCAndHJwLXZpZXctYXMnIClcbiAgICAgICAgICAgICAgICB1cmwgPSB1dGlscy5yZW1vdmVVcmxQYXJhbWV0ZXIoIHVybCwgJ3RycC12aWV3LWFzLW5vbmNlJyApXG4gICAgICAgICAgICAgICAgdXJsID0gdXRpbHMucmVtb3ZlVXJsUGFyYW1ldGVyKCB1cmwsICd0cnAtZWRpdC10cmFuc2xhdGlvbicgKVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNob3dTdHJpbmcoIHN0cmluZywgdHlwZSApe1xuICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIHN0cmluZy5ibG9ja1R5cGUgIT09ICd1bmRlZmluZWQnICYmIHN0cmluZy5ibG9ja1R5cGUgPT09ICcyJyApe1xuICAgICAgICAgICAgICAgICAgICAvLyBkb24ndCBzaG93IGRlcHJlY2F0ZWQgdHJhbnNsYXRpb24gYmxvY2tzIGluIHRoZSBkcm9wZG93blxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCB0eXBlID09PSB0aGlzLmVkaXRvclN0cmluZ3MuaW1hZ2VzICYmIHR5cGVvZiBzdHJpbmcuYXR0cmlidXRlICE9ICd1bmRlZmluZWQnICYmIHN0cmluZy5hdHRyaWJ1dGUgPT0gJ3NyYycgKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuXG4gICAgICAgICAgICAgICAgaWYgKCB0eXBlb2Ygc3RyaW5nLmF0dHJpYnV0ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgKCBzdHJpbmcuYXR0cmlidXRlID09ICdocmVmJyB8fCBzdHJpbmcuYXR0cmlidXRlID09ICdzcmMnICkgKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2VcblxuICAgICAgICAgICAgICAgIGlmICggc3RyaW5nLmdyb3VwID09PSB0eXBlIClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcblxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluaXRTdHJpbmdzRHJvcGRvd24oKXtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXNcblxuICAgICAgICAgICAgICAgIGlmICggIXRoaXMuaXNTdHJpbmdzRHJvcGRvd25PcGVuKCkgKSB7XG4gICAgICAgICAgICAgICAgICAgIGpRdWVyeSggJyN0cnAtc3RyaW5nLWNhdGVnb3JpZXMnICkuc2VsZWN0MiggJ2Rlc3Ryb3knIClcblxuICAgICAgICAgICAgICAgICAgICBqUXVlcnkoICcjdHJwLXN0cmluZy1jYXRlZ29yaWVzJyApLnNlbGVjdDIoIHsgcGxhY2Vob2xkZXIgOiBzZWxmLmVkaXRvclN0cmluZ3Muc2VsZWN0X3N0cmluZywgdGVtcGxhdGVSZXN1bHQ6IGZ1bmN0aW9uKG9wdGlvbil7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3JpZ2luYWwgICAgPSBoZS5kZWNvZGUoIG9wdGlvbi50ZXh0LnN1YnN0cmluZygwLCA5MCkgKSArICggKCBvcHRpb24udGV4dC5sZW5ndGggPD0gOTApID8gJycgOiAnLi4uJyApXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGVzY3JpcHRpb24gPSAoIG9wdGlvbi50aXRsZSApID8gICcoJyArIG9wdGlvbi50aXRsZSArICcpJyA6ICcnXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkoICc8ZGl2PicgKyBvcmlnaW5hbCArICc8L2Rpdj48ZGl2IGNsYXNzPVwic3RyaW5nLXNlbGVjdG9yLWRlc2NyaXB0aW9uXCI+JyArIGRlc2NyaXB0aW9uICsgJzwvZGl2PicgKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgd2lkdGggOiAnMTAwJScgfSApLnByb3AoICdkaXNhYmxlZCcsIGZhbHNlIClcblxuICAgICAgICAgICAgICAgICAgICBqUXVlcnkoICcjdHJwX3NlbGVjdDJfb3ZlcmxheScgKS5oaWRlKClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3RyaW5nc0Ryb3Bkb3duTG9hZGluZygpe1xuICAgICAgICAgICAgICAgIGpRdWVyeSggJyN0cnAtc3RyaW5nLWNhdGVnb3JpZXMnICkuc2VsZWN0MiggeyBwbGFjZWhvbGRlciA6IHRoaXMuZWRpdG9yU3RyaW5ncy5zdHJpbmdzX2xvYWRpbmcsIHdpZHRoIDogJzEwMCUnIH0gKS5wcm9wKCAnZGlzYWJsZWQnLCB0cnVlIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcm9jZXNzT3B0aW9uTmFtZSggbmFtZSwgdHlwZSApe1xuICAgICAgICAgICAgICAgIGlmICggdHlwZSA9PSAnSW1hZ2VzJyApXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1dGlscy5nZXRGaWxlbmFtZSggbmFtZSApXG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdXRpbHMuZXNjYXBlSHRtbCggbmFtZSApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNTdHJpbmdzRHJvcGRvd25PcGVuKCl7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeSggJyN0cnAtc3RyaW5nLWNhdGVnb3JpZXMnICkuc2VsZWN0MiggJ2lzT3BlbicgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhhc1Vuc2F2ZWRDaGFuZ2VzKCl7XG4gICAgICAgICAgICAgICAgbGV0IHVuc2F2ZWRDaGFuZ2VzID0gZmFsc2VcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXNcbiAgICAgICAgICAgICAgICBpZiAoIHRoaXMuc2VsZWN0ZWRJbmRleGVzQXJyYXkubGVuZ3RoID4gMCApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ZXNBcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChzZWxlY3RlZEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNldHRpbmdzWyd0cmFuc2xhdGlvbi1sYW5ndWFnZXMnXS5mb3JFYWNoKGZ1bmN0aW9uIChsYW5ndWFnZUNvZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS50cmFuc2xhdGVkICE9PSBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS5lZGl0ZWRUcmFuc2xhdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zYXZlZENoYW5nZXMgPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93Q2hhbmdlc1Vuc2F2ZWRNZXNzYWdlID0gdW5zYXZlZENoYW5nZXNcblxuICAgICAgICAgICAgICAgIHJldHVybiB1bnNhdmVkQ2hhbmdlc1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlmcmFtZUxvYWRlciggc3RhdHVzICkge1xuICAgICAgICAgICAgICAgIGxldCBsb2FkZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggJ3RycC1wcmV2aWV3LWxvYWRlcicgKVxuXG4gICAgICAgICAgICAgICAgaWYoIHN0YXR1cyA9PSAnc2hvdycgKVxuICAgICAgICAgICAgICAgICAgICBsb2FkZXIuc3R5bGUuZGlzcGxheSA9ICdmbGV4J1xuICAgICAgICAgICAgICAgIGVsc2UgaWYoIHN0YXR1cyA9PSAnaGlkZScgKVxuICAgICAgICAgICAgICAgICAgICBsb2FkZXIuc3R5bGUuZGlzcGxheSA9ICdub25lJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHByZXZpb3VzU3RyaW5nKCl7XG4gICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRWYWx1ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0cnAtc3RyaW5nLWNhdGVnb3JpZXMnKS52YWx1ZVxuXG4gICAgICAgICAgICAgICAgbGV0IG5ld1ZhbHVlID0gK2N1cnJlbnRWYWx1ZSAtIDFcblxuICAgICAgICAgICAgICAgIHdoaWxlKCBuZXdWYWx1ZSA+PSAwICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyN0cnAtc3RyaW5nLWNhdGVnb3JpZXMgb3B0aW9uW3ZhbHVlPVwiJyArIG5ld1ZhbHVlICsgJ1wiXScpLmxlbmd0aCA9PT0gMCApe1xuICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZS0tO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmKCBuZXdWYWx1ZSA8IDAgKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cblxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRTdHJpbmcgPSBuZXdWYWx1ZS50b1N0cmluZygpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dFN0cmluZygpe1xuICAgICAgICAgICAgICAgIGxldCBjdXJyZW50VmFsdWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHJwLXN0cmluZy1jYXRlZ29yaWVzJykudmFsdWUsIG5ld1ZhbHVlID0gMFxuXG4gICAgICAgICAgICAgICAgaWYoIGN1cnJlbnRWYWx1ZSAhPSAnJyApXG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gK2N1cnJlbnRWYWx1ZSArIDFcblxuICAgICAgICAgICAgICAgIHdoaWxlKCBuZXdWYWx1ZSA8IHRoaXMuZGljdGlvbmFyeS5sZW5ndGggJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI3RycC1zdHJpbmctY2F0ZWdvcmllcyBvcHRpb25bdmFsdWU9XCInICsgbmV3VmFsdWUgKyAnXCJdJykubGVuZ3RoID09PSAwICl7XG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlKys7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCBuZXdWYWx1ZSA+PSB0aGlzLmRpY3Rpb25hcnkubGVuZ3RoICl7XG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRTdHJpbmcgPSBuZXdWYWx1ZS50b1N0cmluZygpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWRkS2V5Ym9hcmRTaG9ydGN1dHNMaXN0ZW5lcigpe1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCh3aW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtLm1hdGNoKFwiTWFjXCIpID8gZS5tZXRhS2V5IDogZS5jdHJsS2V5KSAmJiBlLmFsdEtleSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENUUkwgKyBBTFQgKyByaWdodCBhcnJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYoIGUua2V5Q29kZSA9PT0gMzkgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoIG5ldyBFdmVudCggJ3RycF90cmlnZ2VyX25leHRfc3RyaW5nX2V2ZW50JyApICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDVFJMICsgQUxUICsgbGVmdCBhcnJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBlLmtleUNvZGUgPT09IDM3ICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KCBuZXcgRXZlbnQoICd0cnBfdHJpZ2dlcl9wcmV2aW91c19zdHJpbmdfZXZlbnQnICkgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCBmYWxzZSk7XG5cbiAgICAgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggJ3RycF90cmlnZ2VyX25leHRfc3RyaW5nX2V2ZW50JywgdGhpcy5uZXh0U3RyaW5nIClcbiAgICAgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggJ3RycF90cmlnZ2VyX3ByZXZpb3VzX3N0cmluZ19ldmVudCcsIHRoaXMucHJldmlvdXNTdHJpbmcgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc2l6ZUlmcmFtZSAoZXZlbnQsIHVpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRvdGFsX3dpZHRoID0galF1ZXJ5KHdpbmRvdykud2lkdGgoKTtcbiAgICAgICAgICAgICAgICBsZXQgd2lkdGggPSBqUXVlcnkoICcjdHJwLWNvbnRyb2xzJyApLndpZHRoKCk7XG5cbiAgICAgICAgICAgICAgICBsZXQgcHJldmlld0NvbnRhaW5lciA9IGpRdWVyeSggJyN0cnAtcHJldmlldycgKTtcbiAgICAgICAgICAgICAgICBwcmV2aWV3Q29udGFpbmVyLmNzcygncmlnaHQnLCB3aWR0aCApO1xuICAgICAgICAgICAgICAgIHByZXZpZXdDb250YWluZXIuY3NzKCdsZWZ0JywgKCB3aWR0aCAtIDM0OCApICk7XG4gICAgICAgICAgICAgICAgcHJldmlld0NvbnRhaW5lci5jc3MoJ3dpZHRoJywgKHRvdGFsX3dpZHRoIC0gd2lkdGgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgLy9hZGQgc3VwcG9ydCBmb3Igdi1tb2RlbCBpbiBzZWxlY3QyXG4gICAgICAgIGRpcmVjdGl2ZXM6IHtcbiAgICAgICAgICAgIHNlbGVjdDI6IHtcbiAgICAgICAgICAgICAgICBpbnNlcnRlZChlbCkge1xuICAgICAgICAgICAgICAgICAgICBqUXVlcnkoZWwpLm9uKCdzZWxlY3QyOnNlbGVjdCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsLmRpc3BhdGNoRXZlbnQoZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KGVsKS5vbignc2VsZWN0Mjp1bnNlbGVjdCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsLmRpc3BhdGNoRXZlbnQoZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbjwvc2NyaXB0PlxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/editor.vue?vue&type=script&lang=js&\n");
814
 
815
  /***/ }),
816
 
@@ -915,6 +1011,18 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
915
 
916
  /***/ }),
917
 
 
 
 
 
 
 
 
 
 
 
 
 
918
  /***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/hover-actions.vue?vue&type=template&id=b0793be0&":
919
  /*!*****************************************************************************************************************************************************************************************************************!*\
920
  !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./assets/src/js/components/hover-actions.vue?vue&type=template&id=b0793be0& ***!
@@ -935,7 +1043,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
935
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
936
 
937
  "use strict";
938
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _vm.selectedIndexesArray\n ? _c(\n \"div\",\n {\n staticClass: \"trp-controls-section-content\",\n attrs: { id: \"trp-translation-section\" }\n },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showChangesUnsavedMessage,\n expression: \"showChangesUnsavedMessage\"\n }\n ],\n staticClass: \"trp-changes-unsaved-message\"\n },\n [\n _vm._v(_vm._s(_vm.editorStrings.unsaved_changes) + \" \"),\n _c(\n \"span\",\n {\n staticClass: \"trp-unsaved-changes trp-discard-changes \",\n attrs: { title: _vm.editorStrings.discard_all_title_attr },\n on: { click: _vm.discardAll }\n },\n [_vm._v(_vm._s(_vm.editorStrings.discard_all))]\n ),\n _vm._v(\"?\")\n ]\n ),\n _vm._v(\" \"),\n _vm._l(_vm.languages, function(languageCode, key) {\n return _c(\n \"div\",\n { attrs: { id: \"trp-language-\" + languageCode } },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value:\n (key <= _vm.othersButtonPosition ||\n _vm.showOtherLanguages) &&\n (_vm.selectedIndexesArray &&\n _vm.selectedIndexesArray.length > 0),\n expression:\n \"( (key <= othersButtonPosition) || showOtherLanguages ) && ( selectedIndexesArray && selectedIndexesArray.length > 0 )\"\n }\n ],\n staticClass: \"trp-language-container\"\n },\n [\n _c(\"div\", { staticClass: \"trp-language-name\" }, [\n key == 0\n ? _c(\"span\", [\n _vm._v(_vm._s(_vm.editorStrings.from) + \" \")\n ])\n : _c(\"span\", [\n _vm._v(_vm._s(_vm.editorStrings.to) + \" \")\n ]),\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.completeLanguageNames[languageCode]) +\n \"\\n \"\n ),\n languageCode != \"original\"\n ? _c(\"img\", {\n staticClass: \"trp-language-box-flag-image\",\n attrs: {\n src:\n _vm.flagsPath[languageCode] +\n \"/\" +\n languageCode +\n \".png\",\n width: \"18\",\n height: \"12\",\n alt: languageCode,\n title: _vm.completeLanguageNames[languageCode]\n }\n })\n : _vm._e()\n ]),\n _vm._v(\" \"),\n _c(\n \"table\",\n { staticClass: \"trp-translations-for-language\" },\n [\n _vm.showImageIcon\n ? _c(\n \"td\",\n { staticClass: \"trp-translation-icon-container\" },\n [\n _c(\"span\", {\n staticClass:\n \"trp-translation-icon dashicons dashicons-format-image\"\n })\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"td\",\n { staticClass: \"trp-translations-container\" },\n _vm._l(_vm.selectedIndexesArray, function(\n selectedIndex\n ) {\n return _c(\n \"div\",\n { staticClass: \"trp-string-container\" },\n [\n _vm.dictionary[selectedIndex] &&\n _vm.dictionary[selectedIndex].translationsArray[\n languageCode\n ]\n ? _c(\n \"div\",\n { key: selectedIndex },\n [\n _c(\"translation-input\", {\n attrs: {\n string:\n _vm.dictionary[selectedIndex],\n highlightUnsavedChanges:\n _vm.showChangesUnsavedMessage &&\n _vm.hasUnsavedChanges(\n selectedIndex,\n languageCode\n ),\n editorStrings: _vm.editorStrings\n },\n model: {\n value:\n _vm.dictionary[selectedIndex]\n .translationsArray[languageCode]\n .editedTranslation,\n callback: function($$v) {\n _vm.$set(\n _vm.dictionary[selectedIndex]\n .translationsArray[\n languageCode\n ],\n \"editedTranslation\",\n $$v\n )\n },\n expression:\n \"dictionary[selectedIndex].translationsArray[languageCode].editedTranslation\"\n }\n })\n ],\n 1\n )\n : _vm.dictionary[selectedIndex]\n ? _c(\n \"div\",\n { key: selectedIndex },\n [\n _c(\"translation-input\", {\n attrs: {\n readonly: true,\n string:\n _vm.dictionary[selectedIndex],\n value:\n _vm.dictionary[selectedIndex]\n .original,\n editorStrings: _vm.editorStrings\n }\n })\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"trp-translation-input-footer\",\n attrs: {\n \"data-dictionary-entry\": JSON.stringify(\n _vm.dictionary[selectedIndex]\n )\n }\n },\n [\n _c(\n \"div\",\n { staticClass: \"trp-attribute-name\" },\n [\n _vm._v(\n _vm._s(\n _vm.editorStrings[\n _vm.dictionary[selectedIndex]\n .attribute\n ] &&\n (_vm.dictionary[selectedIndex]\n .attribute != \"content\" ||\n _vm.dictionary[selectedIndex]\n .attribute != \"\")\n ? _vm.editorStrings[\n _vm.dictionary[selectedIndex]\n .attribute\n ]\n : _vm.editorStrings.text\n )\n )\n ]\n ),\n _vm._v(\" \"),\n _vm.dictionary[selectedIndex] &&\n _vm.dictionary[selectedIndex]\n .translationsArray[languageCode]\n ? _c(\n \"div\",\n {\n staticClass:\n \"trp-discard-changes trp-discard-individual-changes\",\n class: {\n \"trp-unsaved-changes\": _vm.hasUnsavedChanges(\n selectedIndex,\n languageCode\n )\n },\n attrs: {\n title:\n _vm.editorStrings\n .discard_individual_changes_title_attribute\n },\n on: {\n click: function($event) {\n _vm.discardChanges(\n selectedIndex,\n languageCode\n )\n }\n }\n },\n [\n _vm._v(\n _vm._s(_vm.editorStrings.discard)\n )\n ]\n )\n : _vm._e()\n ]\n ),\n _vm._v(\" \"),\n _vm.dictionary[selectedIndex] &&\n _vm.dictionary[selectedIndex].translationsArray[\n languageCode\n ]\n ? _c(\n \"div\",\n {\n key: \"trp_tmw_\" + selectedIndex,\n staticClass:\n \"trp-translation-memory-wrap\"\n },\n [\n _c(\"translation-memory\", {\n attrs: {\n string:\n _vm.dictionary[selectedIndex],\n editorStrings: _vm.editorStrings,\n ajax_url: _vm.ajax_url,\n nonces: _vm.nonces,\n languageCode: languageCode\n }\n })\n ],\n 1\n )\n : _vm._e()\n ]\n )\n }),\n 0\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: key == _vm.othersButtonPosition,\n expression: \"key == othersButtonPosition\"\n }\n ]\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"trp-toggle-languages button\",\n class: {\n \"trp-show-other-languages\":\n _vm.showOtherLanguages,\n \"trp-hide-other-languages\": !_vm.showOtherLanguages\n },\n on: {\n click: function($event) {\n _vm.showOtherLanguages = !_vm.showOtherLanguages\n }\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n _vm._s(_vm.showOtherLanguages ? \"▼\" : \"▶\") +\n \" \" +\n _vm._s(_vm.editorStrings.other_lang)\n )\n ])\n ]\n )\n ]\n )\n ]\n )\n ]\n )\n })\n ],\n 2\n )\n : _vm._e()\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvbGFuZ3VhZ2UtYm94ZXMudnVlP2IxNGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsa0RBQWtEO0FBQzVFLHVCQUF1QjtBQUN2QixpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxTQUFTLHFDQUFxQyxFQUFFO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBLCtCQUErQixtQ0FBbUM7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLCtDQUErQztBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixnREFBZ0Q7QUFDL0U7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDRDQUE0QztBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLHNDQUFzQztBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxxQkFBcUI7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxxQkFBcUI7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxvQ0FBb0M7QUFDM0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvbGFuZ3VhZ2UtYm94ZXMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNmODBjZjEwJi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX3ZtLnNlbGVjdGVkSW5kZXhlc0FycmF5XG4gICAgPyBfYyhcbiAgICAgICAgXCJkaXZcIixcbiAgICAgICAge1xuICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1jb250cm9scy1zZWN0aW9uLWNvbnRlbnRcIixcbiAgICAgICAgICBhdHRyczogeyBpZDogXCJ0cnAtdHJhbnNsYXRpb24tc2VjdGlvblwiIH1cbiAgICAgICAgfSxcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uc2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwic2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtY2hhbmdlcy11bnNhdmVkLW1lc3NhZ2VcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0uZWRpdG9yU3RyaW5ncy51bnNhdmVkX2NoYW5nZXMpICsgXCIgXCIpLFxuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtdW5zYXZlZC1jaGFuZ2VzIHRycC1kaXNjYXJkLWNoYW5nZXMgXCIsXG4gICAgICAgICAgICAgICAgICBhdHRyczogeyB0aXRsZTogX3ZtLmVkaXRvclN0cmluZ3MuZGlzY2FyZF9hbGxfdGl0bGVfYXR0ciB9LFxuICAgICAgICAgICAgICAgICAgb246IHsgY2xpY2s6IF92bS5kaXNjYXJkQWxsIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKF92bS5lZGl0b3JTdHJpbmdzLmRpc2NhcmRfYWxsKSldXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF92bS5fdihcIj9cIilcbiAgICAgICAgICAgIF1cbiAgICAgICAgICApLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX3ZtLl9sKF92bS5sYW5ndWFnZXMsIGZ1bmN0aW9uKGxhbmd1YWdlQ29kZSwga2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gX2MoXG4gICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgIHsgYXR0cnM6IHsgaWQ6IFwidHJwLWxhbmd1YWdlLVwiICsgbGFuZ3VhZ2VDb2RlIH0gfSxcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5IDw9IF92bS5vdGhlcnNCdXR0b25Qb3NpdGlvbiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zaG93T3RoZXJMYW5ndWFnZXMpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChfdm0uc2VsZWN0ZWRJbmRleGVzQXJyYXkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uc2VsZWN0ZWRJbmRleGVzQXJyYXkubGVuZ3RoID4gMCksXG4gICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIiggKGtleSA8PSBvdGhlcnNCdXR0b25Qb3NpdGlvbikgfHwgc2hvd090aGVyTGFuZ3VhZ2VzICkgJiYgKCBzZWxlY3RlZEluZGV4ZXNBcnJheSAmJiBzZWxlY3RlZEluZGV4ZXNBcnJheS5sZW5ndGggPiAwIClcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLWxhbmd1YWdlLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInRycC1sYW5ndWFnZS1uYW1lXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgIGtleSA9PSAwXG4gICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFwic3BhblwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0uZWRpdG9yU3RyaW5ncy5mcm9tKSArIFwiIFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBfYyhcInNwYW5cIiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLmVkaXRvclN0cmluZ3MudG8pICsgXCIgXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgICAgIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKF92bS5jb21wbGV0ZUxhbmd1YWdlTmFtZXNbbGFuZ3VhZ2VDb2RlXSkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlICE9IFwib3JpZ2luYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcImltZ1wiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLWxhbmd1YWdlLWJveC1mbGFnLWltYWdlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmZsYWdzUGF0aFtsYW5ndWFnZUNvZGVdICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIvXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZUNvZGUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIi5wbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjE4XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiMTJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogbGFuZ3VhZ2VDb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF92bS5jb21wbGV0ZUxhbmd1YWdlTmFtZXNbbGFuZ3VhZ2VDb2RlXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgIFwidGFibGVcIixcbiAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInRycC10cmFuc2xhdGlvbnMtZm9yLWxhbmd1YWdlXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uc2hvd0ltYWdlSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0ZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ0cnAtdHJhbnNsYXRpb24taWNvbi1jb250YWluZXJcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInNwYW5cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cnAtdHJhbnNsYXRpb24taWNvbiBkYXNoaWNvbnMgZGFzaGljb25zLWZvcm1hdC1pbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcInRkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwidHJwLXRyYW5zbGF0aW9ucy1jb250YWluZXJcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX2woX3ZtLnNlbGVjdGVkSW5kZXhlc0FycmF5LCBmdW5jdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInRycC1zdHJpbmctY29udGFpbmVyXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGtleTogc2VsZWN0ZWRJbmRleCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJ0cmFuc2xhdGlvbi1pbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodFVuc2F2ZWRDaGFuZ2VzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zaG93Q2hhbmdlc1Vuc2F2ZWRNZXNzYWdlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmhhc1Vuc2F2ZWRDaGFuZ2VzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlQ29kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvclN0cmluZ3M6IF92bS5lZGl0b3JTdHJpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZWRpdGVkVHJhbnNsYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uJHNldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50cmFuc2xhdGlvbnNBcnJheVtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlZGl0ZWRUcmFuc2xhdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCR2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLmVkaXRlZFRyYW5zbGF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsga2V5OiBzZWxlY3RlZEluZGV4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInRyYW5zbGF0aW9uLWlucHV0XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAub3JpZ2luYWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvclN0cmluZ3M6IF92bS5lZGl0b3JTdHJpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLXRyYW5zbGF0aW9uLWlucHV0LWZvb3RlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkYXRhLWRpY3Rpb25hcnktZW50cnlcIjogSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwidHJwLWF0dHJpYnV0ZS1uYW1lXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmVkaXRvclN0cmluZ3NbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyaWJ1dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHJpYnV0ZSAhPSBcImNvbnRlbnRcIiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHJpYnV0ZSAhPSBcIlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gX3ZtLmVkaXRvclN0cmluZ3NbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHJpYnV0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLmVkaXRvclN0cmluZ3MudGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJwLWRpc2NhcmQtY2hhbmdlcyB0cnAtZGlzY2FyZC1pbmRpdmlkdWFsLWNoYW5nZXNcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRycC11bnNhdmVkLWNoYW5nZXNcIjogX3ZtLmhhc1Vuc2F2ZWRDaGFuZ2VzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlQ29kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5lZGl0b3JTdHJpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5kaXNjYXJkX2luZGl2aWR1YWxfY2hhbmdlc190aXRsZV9hdHRyaWJ1dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGlzY2FyZENoYW5nZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlQ29kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhfdm0uZWRpdG9yU3RyaW5ncy5kaXNjYXJkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZUNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwidHJwX3Rtd19cIiArIHNlbGVjdGVkSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRycC10cmFuc2xhdGlvbi1tZW1vcnktd3JhcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInRyYW5zbGF0aW9uLW1lbW9yeVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvclN0cmluZ3M6IF92bS5lZGl0b3JTdHJpbmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhamF4X3VybDogX3ZtLmFqYXhfdXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25jZXM6IF92bS5ub25jZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlQ29kZTogbGFuZ3VhZ2VDb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGtleSA9PSBfdm0ub3RoZXJzQnV0dG9uUG9zaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJrZXkgPT0gb3RoZXJzQnV0dG9uUG9zaXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC10b2dnbGUtbGFuZ3VhZ2VzIGJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRycC1zaG93LW90aGVyLWxhbmd1YWdlc1wiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uc2hvd090aGVyTGFuZ3VhZ2VzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cnAtaGlkZS1vdGhlci1sYW5ndWFnZXNcIjogIV92bS5zaG93T3RoZXJMYW5ndWFnZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zaG93T3RoZXJMYW5ndWFnZXMgPSAhX3ZtLnNob3dPdGhlckxhbmd1YWdlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwic3BhblwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhfdm0uc2hvd090aGVyTGFuZ3VhZ2VzID8gXCLilrxcIiA6IFwi4pa2XCIpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKF92bS5lZGl0b3JTdHJpbmdzLm90aGVyX2xhbmcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICAgIF0sXG4gICAgICAgIDJcbiAgICAgIClcbiAgICA6IF92bS5fZSgpXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/language-boxes.vue?vue&type=template&id=3f80cf10&\n");
939
 
940
  /***/ }),
941
 
@@ -947,7 +1055,19 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
947
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
948
 
949
  "use strict";
950
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"trp-save-container\" } }, [\n _c(\n \"span\",\n {\n staticStyle: { display: \"none\" },\n attrs: { id: \"trp-translation-saved\" }\n },\n [_vm._v(_vm._s(_vm.editorStrings.saved))]\n ),\n _vm._v(\" \"),\n _c(\n \"button\",\n {\n staticClass: \"button-primary trp-save-string\",\n attrs: {\n id: \"trp-save\",\n disabled: _vm.disabledSaveButton,\n type: \"submit\",\n title: _vm.editorStrings.save_title_attr\n },\n on: { click: _vm.save }\n },\n [_vm._v(_vm._s(_vm.saveButtonText))]\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvc2F2ZS10cmFuc2xhdGlvbnMudnVlPzUxZTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsU0FBUywyQkFBMkIsRUFBRTtBQUMxRDtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isa0JBQWtCO0FBQ3hDLGdCQUFnQjtBQUNoQixPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULGFBQWE7QUFDYixPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL2Fzc2V0cy9zcmMvanMvY29tcG9uZW50cy9zYXZlLXRyYW5zbGF0aW9ucy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWVjNmVjNTQmLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IGlkOiBcInRycC1zYXZlLWNvbnRhaW5lclwiIH0gfSwgW1xuICAgIF9jKFxuICAgICAgXCJzcGFuXCIsXG4gICAgICB7XG4gICAgICAgIHN0YXRpY1N0eWxlOiB7IGRpc3BsYXk6IFwibm9uZVwiIH0sXG4gICAgICAgIGF0dHJzOiB7IGlkOiBcInRycC10cmFuc2xhdGlvbi1zYXZlZFwiIH1cbiAgICAgIH0sXG4gICAgICBbX3ZtLl92KF92bS5fcyhfdm0uZWRpdG9yU3RyaW5ncy5zYXZlZCkpXVxuICAgICksXG4gICAgX3ZtLl92KFwiIFwiKSxcbiAgICBfYyhcbiAgICAgIFwiYnV0dG9uXCIsXG4gICAgICB7XG4gICAgICAgIHN0YXRpY0NsYXNzOiBcImJ1dHRvbi1wcmltYXJ5IHRycC1zYXZlLXN0cmluZ1wiLFxuICAgICAgICBhdHRyczoge1xuICAgICAgICAgIGlkOiBcInRycC1zYXZlXCIsXG4gICAgICAgICAgZGlzYWJsZWQ6IF92bS5kaXNhYmxlZFNhdmVCdXR0b24sXG4gICAgICAgICAgdHlwZTogXCJzdWJtaXRcIixcbiAgICAgICAgICB0aXRsZTogX3ZtLmVkaXRvclN0cmluZ3Muc2F2ZV90aXRsZV9hdHRyXG4gICAgICAgIH0sXG4gICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uc2F2ZSB9XG4gICAgICB9LFxuICAgICAgW192bS5fdihfdm0uX3MoX3ZtLnNhdmVCdXR0b25UZXh0KSldXG4gICAgKVxuICBdKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/save-translations.vue?vue&type=template&id=1ec6ec54&\n");
 
 
 
 
 
 
 
 
 
 
 
 
951
 
952
  /***/ }),
953
 
@@ -983,7 +1103,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
983
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
984
 
985
  "use strict";
986
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"wp-core-ui\", attrs: { id: \"trp-editor\" } }, [\n _c(\n \"div\",\n { attrs: { id: \"trp-controls\" } },\n [\n _c(\"div\", { attrs: { id: \"trp-close-save\" } }, [\n _c(\"a\", {\n attrs: {\n id: \"trp-controls-close\",\n href: _vm.closeURL,\n title: _vm.editorStrings.close\n }\n }),\n _vm._v(\" \"),\n _c(\n \"div\",\n { attrs: { id: \"trp-save-and-loader-spinner\" } },\n [\n _c(\n \"span\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.loading_strings > 0,\n expression: \"loading_strings > 0\"\n }\n ],\n staticClass: \"trp-ajax-loader\",\n attrs: { id: \"trp-string-saved-ajax-loader\" }\n },\n [_c(\"div\", { staticClass: \"trp-spinner\" })]\n ),\n _vm._v(\" \"),\n _c(\"save-translations\", {\n attrs: {\n selectedIndexesArray: _vm.selectedIndexesArray,\n dictionary: _vm.dictionary,\n settings: _vm.settings,\n nonces: _vm.nonces,\n ajax_url: _vm.ajaxUrl,\n currentLanguage: _vm.currentLanguage,\n onScreenLanguage: _vm.onScreenLanguage,\n iframe: _vm.iframe,\n currentURL: _vm.currentURL,\n mergingString: _vm.mergingString,\n mergeData: _vm.mergeData,\n editorStrings: _vm.editorStrings,\n stringTypes: _vm.stringTypes\n },\n on: {\n \"translations-saved\": function($event) {\n _vm.showChangesUnsavedMessage = false\n }\n }\n })\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"trp-controls-container\",\n class: { \"trp-show-editors-navigation\": _vm.editorsNavigation.show }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"trp-controls-section\",\n attrs: { id: \"trp-controls-section-first\" }\n },\n [\n _c(\"div\", { staticClass: \"trp-controls-section-content\" }, [\n _c(\"div\", { attrs: { id: \"trp-language-switch\" } }, [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.currentLanguage,\n expression: \"currentLanguage\"\n },\n { name: \"select2\", rawName: \"v-select2\" }\n ],\n attrs: { id: \"trp-language-select\", name: \"lang\" },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val = \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.currentLanguage = $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n }\n }\n },\n _vm._l(_vm.languageNames, function(lang, langIndex) {\n return _c(\n \"option\",\n { domProps: { value: langIndex } },\n [_vm._v(_vm._s(lang))]\n )\n }),\n 0\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"trp-string-list\" } }, [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.selectedString,\n expression: \"selectedString\"\n },\n { name: \"select2\", rawName: \"v-select2\" }\n ],\n attrs: { id: \"trp-string-categories\" },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val = \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.selectedString = $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n }\n }\n },\n _vm._l(_vm.stringGroups, function(group) {\n return _c(\n \"optgroup\",\n { attrs: { label: group } },\n _vm._l(_vm.dictionary, function(string, index) {\n return _vm.showString(string, group)\n ? _c(\n \"option\",\n {\n attrs: {\n title: string.description,\n \"data-database-id\": string.dbID,\n \"data-group\": string.group\n },\n domProps: { value: index }\n },\n [\n _vm._v(\n _vm._s(\n _vm.processOptionName(\n string.original,\n group\n )\n )\n )\n ]\n )\n : _vm._e()\n }),\n 0\n )\n }),\n 0\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"trp-next-previous\" } }, [\n _c(\n \"button\",\n {\n staticClass: \"trp-next-previous-buttons button\",\n attrs: {\n type: \"button\",\n id: \"trp-previous\",\n title: _vm.editorStrings.previous_title_attr\n },\n on: {\n click: function($event) {\n _vm.previousString()\n }\n }\n },\n [\n _c(\"span\", [_vm._v(\"«\")]),\n _vm._v(\" \" + _vm._s(_vm.editorStrings.previous))\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"button\",\n {\n staticClass: \"trp-next-previous-buttons button\",\n attrs: {\n type: \"button\",\n id: \"trp-next\",\n title: _vm.editorStrings.next_title_attr\n },\n on: {\n click: function($event) {\n _vm.nextString()\n }\n }\n },\n [\n _vm._v(_vm._s(_vm.editorStrings.next) + \" \"),\n _c(\"span\", [_vm._v(\"»\")])\n ]\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"trp-view-as\" } }, [\n _c(\"div\", { attrs: { id: \"trp-view-as-description\" } }, [\n _vm._v(_vm._s(_vm.editorStrings.view_as))\n ]),\n _vm._v(\" \"),\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.viewAs,\n expression: \"viewAs\"\n },\n { name: \"select2\", rawName: \"v-select2\" }\n ],\n attrs: { id: \"trp-view-as-select\" },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val = \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.viewAs = $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n }\n }\n },\n _vm._l(_vm.roles, function(role, roleIndex) {\n return _c(\n \"option\",\n {\n attrs: {\n disabled: !role,\n title: !role ? _vm.editorStrings.view_as_pro : \"\"\n },\n domProps: { value: role }\n },\n [_vm._v(_vm._s(roleIndex))]\n )\n }),\n 0\n )\n ])\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.selectedString !== null,\n expression: \"selectedString !== null\"\n }\n ],\n staticClass: \"trp-controls-section\"\n },\n [\n _c(\"language-boxes\", {\n attrs: {\n selectedIndexesArray: _vm.selectedIndexesArray,\n dictionary: _vm.dictionary,\n currentLanguage: _vm.currentLanguage,\n onScreenLanguage: _vm.onScreenLanguage,\n languageNames: _vm.languageNames,\n settings: _vm.settings,\n showChangesUnsavedMessage: _vm.showChangesUnsavedMessage,\n editorStrings: _vm.editorStrings,\n flagsPath: _vm.flagsPath,\n iframe: _vm.iframe,\n nonces: _vm.nonces,\n ajax_url: _vm.ajaxUrl\n },\n on: {\n \"discarded-changes\": function($event) {\n _vm.hasUnsavedChanges()\n }\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"extra-content\", {\n attrs: {\n languageNames: _vm.languageNames,\n editorStrings: _vm.editorStrings,\n paidVersion: _vm.paidVersion\n }\n }),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.translationNotLoadedYet,\n expression: \"translationNotLoadedYet\"\n }\n ],\n staticClass: \"trp-controls-section\"\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"trp-controls-section-content\",\n attrs: { id: \"trp-translation-not-ready-section\" }\n },\n [\n _c(\"p\", {\n domProps: {\n innerHTML: _vm._s(\n _vm.editorStrings.translation_not_loaded_yet\n )\n }\n })\n ]\n )\n ]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"editors-navigation\", {\n attrs: {\n editorsNavigation: _vm.editorsNavigation,\n selectedTab: \"visualeditor\"\n }\n }),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"trp_select2_overlay\" } }),\n _vm._v(\" \"),\n _c(\"hover-actions\", {\n ref: \"hoverActions\",\n attrs: {\n dictionary: _vm.dictionary,\n settings: _vm.settings,\n iframe: _vm.iframe,\n dataAttributes: _vm.dataAttributes,\n mergeRules: _vm.mergeRules,\n nonces: _vm.nonces,\n ajax_url: _vm.ajaxUrl,\n mergeData: _vm.mergeData,\n editorStrings: _vm.editorStrings,\n currentLanguage: _vm.currentLanguage\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"trp-preview\" } }, [\n _c(\"iframe\", {\n attrs: { id: \"trp-preview-iframe\", src: _vm.urlToLoad },\n on: { load: _vm.iFrameLoaded }\n }),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"trp-loading-screen\",\n attrs: { id: \"trp-preview-loader\" }\n },\n [\n _c(\n \"svg\",\n {\n staticClass: \"trp-loader\",\n attrs: {\n width: \"65px\",\n height: \"65px\",\n viewBox: \"0 0 66 66\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }\n },\n [\n _c(\"circle\", {\n staticClass: \"trp-circle\",\n attrs: {\n fill: \"none\",\n \"stroke-width\": \"6\",\n \"stroke-linecap\": \"round\",\n cx: \"33\",\n cy: \"33\",\n r: \"30\"\n }\n })\n ]\n )\n ]\n )\n ])\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL2VkaXRvci52dWU/NTEwNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixvQ0FBb0MsbUJBQW1CLEVBQUU7QUFDN0U7QUFDQTtBQUNBLE9BQU8sU0FBUyxxQkFBcUIsRUFBRTtBQUN2QztBQUNBLG1CQUFtQixTQUFTLHVCQUF1QixFQUFFO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxhQUFhLFNBQVMsb0NBQW9DLEVBQUU7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUIsaUJBQWlCO0FBQ2pCLDRCQUE0Qiw2QkFBNkI7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQixXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QixlQUFlO0FBQ2Y7QUFDQSwyQkFBMkIsOENBQThDO0FBQ3pFLDZCQUE2QixTQUFTLDRCQUE0QixFQUFFO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQiwyQkFBMkI7QUFDM0I7QUFDQSxnQ0FBZ0MsMENBQTBDO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLFlBQVksbUJBQW1CLEVBQUU7QUFDNUQ7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixTQUFTLHdCQUF3QixFQUFFO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQiwyQkFBMkI7QUFDM0I7QUFDQSxnQ0FBZ0MsOEJBQThCO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLFNBQVMsZUFBZSxFQUFFO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQywrQ0FBK0M7QUFDL0MsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLFNBQVMsMEJBQTBCLEVBQUU7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixTQUFTLG9CQUFvQixFQUFFO0FBQzVELCtCQUErQixTQUFTLGdDQUFnQyxFQUFFO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQiwyQkFBMkI7QUFDM0I7QUFDQSxnQ0FBZ0MsMkJBQTJCO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0IsdUNBQXVDO0FBQ3ZDLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7QUFDNUIsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsbUJBQW1CLFNBQVMsNEJBQTRCLEVBQUU7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxTQUFTLG9CQUFvQixFQUFFO0FBQzlDO0FBQ0EsZ0JBQWdCLCtDQUErQztBQUMvRCxhQUFhO0FBQ2IsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEIsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vYXNzZXRzL3NyYy9qcy9lZGl0b3IudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWIwNDZlOGVjJi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ3cC1jb3JlLXVpXCIsIGF0dHJzOiB7IGlkOiBcInRycC1lZGl0b3JcIiB9IH0sIFtcbiAgICBfYyhcbiAgICAgIFwiZGl2XCIsXG4gICAgICB7IGF0dHJzOiB7IGlkOiBcInRycC1jb250cm9sc1wiIH0gfSxcbiAgICAgIFtcbiAgICAgICAgX2MoXCJkaXZcIiwgeyBhdHRyczogeyBpZDogXCJ0cnAtY2xvc2Utc2F2ZVwiIH0gfSwgW1xuICAgICAgICAgIF9jKFwiYVwiLCB7XG4gICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICBpZDogXCJ0cnAtY29udHJvbHMtY2xvc2VcIixcbiAgICAgICAgICAgICAgaHJlZjogX3ZtLmNsb3NlVVJMLFxuICAgICAgICAgICAgICB0aXRsZTogX3ZtLmVkaXRvclN0cmluZ3MuY2xvc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHsgYXR0cnM6IHsgaWQ6IFwidHJwLXNhdmUtYW5kLWxvYWRlci1zcGlubmVyXCIgfSB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ubG9hZGluZ19zdHJpbmdzID4gMCxcbiAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImxvYWRpbmdfc3RyaW5ncyA+IDBcIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLWFqYXgtbG9hZGVyXCIsXG4gICAgICAgICAgICAgICAgICBhdHRyczogeyBpZDogXCJ0cnAtc3RyaW5nLXNhdmVkLWFqYXgtbG9hZGVyXCIgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW19jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidHJwLXNwaW5uZXJcIiB9KV1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgX2MoXCJzYXZlLXRyYW5zbGF0aW9uc1wiLCB7XG4gICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5kZXhlc0FycmF5OiBfdm0uc2VsZWN0ZWRJbmRleGVzQXJyYXksXG4gICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5OiBfdm0uZGljdGlvbmFyeSxcbiAgICAgICAgICAgICAgICAgIHNldHRpbmdzOiBfdm0uc2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgICBub25jZXM6IF92bS5ub25jZXMsXG4gICAgICAgICAgICAgICAgICBhamF4X3VybDogX3ZtLmFqYXhVcmwsXG4gICAgICAgICAgICAgICAgICBjdXJyZW50TGFuZ3VhZ2U6IF92bS5jdXJyZW50TGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgICBvblNjcmVlbkxhbmd1YWdlOiBfdm0ub25TY3JlZW5MYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgIGlmcmFtZTogX3ZtLmlmcmFtZSxcbiAgICAgICAgICAgICAgICAgIGN1cnJlbnRVUkw6IF92bS5jdXJyZW50VVJMLFxuICAgICAgICAgICAgICAgICAgbWVyZ2luZ1N0cmluZzogX3ZtLm1lcmdpbmdTdHJpbmcsXG4gICAgICAgICAgICAgICAgICBtZXJnZURhdGE6IF92bS5tZXJnZURhdGEsXG4gICAgICAgICAgICAgICAgICBlZGl0b3JTdHJpbmdzOiBfdm0uZWRpdG9yU3RyaW5ncyxcbiAgICAgICAgICAgICAgICAgIHN0cmluZ1R5cGVzOiBfdm0uc3RyaW5nVHlwZXNcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICBcInRyYW5zbGF0aW9ucy1zYXZlZFwiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLnNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2UgPSBmYWxzZVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKVxuICAgICAgICBdKSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXG4gICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtY29udHJvbHMtY29udGFpbmVyXCIsXG4gICAgICAgICAgICBjbGFzczogeyBcInRycC1zaG93LWVkaXRvcnMtbmF2aWdhdGlvblwiOiBfdm0uZWRpdG9yc05hdmlnYXRpb24uc2hvdyB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1jb250cm9scy1zZWN0aW9uXCIsXG4gICAgICAgICAgICAgICAgYXR0cnM6IHsgaWQ6IFwidHJwLWNvbnRyb2xzLXNlY3Rpb24tZmlyc3RcIiB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInRycC1jb250cm9scy1zZWN0aW9uLWNvbnRlbnRcIiB9LCBbXG4gICAgICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IGlkOiBcInRycC1sYW5ndWFnZS1zd2l0Y2hcIiB9IH0sIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgXCJzZWxlY3RcIixcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LW1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5jdXJyZW50TGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJjdXJyZW50TGFuZ3VhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6IFwic2VsZWN0MlwiLCByYXdOYW1lOiBcInYtc2VsZWN0MlwiIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBpZDogXCJ0cnAtbGFuZ3VhZ2Utc2VsZWN0XCIsIG5hbWU6IFwibGFuZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2U6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkJHNlbGVjdGVkVmFsID0gQXJyYXkucHJvdG90eXBlLmZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhbGwoJGV2ZW50LnRhcmdldC5vcHRpb25zLCBmdW5jdGlvbihvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvLnNlbGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChmdW5jdGlvbihvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSBcIl92YWx1ZVwiIGluIG8gPyBvLl92YWx1ZSA6IG8udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uY3VycmVudExhbmd1YWdlID0gJGV2ZW50LnRhcmdldC5tdWx0aXBsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAkJHNlbGVjdGVkVmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICQkc2VsZWN0ZWRWYWxbMF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl9sKF92bS5sYW5ndWFnZU5hbWVzLCBmdW5jdGlvbihsYW5nLCBsYW5nSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvcHRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBkb21Qcm9wczogeyB2YWx1ZTogbGFuZ0luZGV4IH0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW192bS5fdihfdm0uX3MobGFuZykpXVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBhdHRyczogeyBpZDogXCJ0cnAtc3RyaW5nLWxpc3RcIiB9IH0sIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgXCJzZWxlY3RcIixcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LW1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5zZWxlY3RlZFN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInNlbGVjdGVkU3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiBcInNlbGVjdDJcIiwgcmF3TmFtZTogXCJ2LXNlbGVjdDJcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgaWQ6IFwidHJwLXN0cmluZy1jYXRlZ29yaWVzXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZTogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyICQkc2VsZWN0ZWRWYWwgPSBBcnJheS5wcm90b3R5cGUuZmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2FsbCgkZXZlbnQudGFyZ2V0Lm9wdGlvbnMsIGZ1bmN0aW9uKG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8uc2VsZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uKG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbCA9IFwiX3ZhbHVlXCIgaW4gbyA/IG8uX3ZhbHVlIDogby52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zZWxlY3RlZFN0cmluZyA9ICRldmVudC50YXJnZXQubXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJCRzZWxlY3RlZFZhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkJHNlbGVjdGVkVmFsWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIF92bS5fbChfdm0uc3RyaW5nR3JvdXBzLCBmdW5jdGlvbihncm91cCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIm9wdGdyb3VwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgbGFiZWw6IGdyb3VwIH0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9sKF92bS5kaWN0aW9uYXJ5LCBmdW5jdGlvbihzdHJpbmcsIGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5zaG93U3RyaW5nKHN0cmluZywgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3B0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHN0cmluZy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkYXRhLWRhdGFiYXNlLWlkXCI6IHN0cmluZy5kYklELFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRhdGEtZ3JvdXBcIjogc3RyaW5nLmdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tUHJvcHM6IHsgdmFsdWU6IGluZGV4IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5wcm9jZXNzT3B0aW9uTmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZy5vcmlnaW5hbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IGlkOiBcInRycC1uZXh0LXByZXZpb3VzXCIgfSB9LCBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgIFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLW5leHQtcHJldmlvdXMtYnV0dG9ucyBidXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcInRycC1wcmV2aW91c1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogX3ZtLmVkaXRvclN0cmluZ3MucHJldmlvdXNfdGl0bGVfYXR0clxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0ucHJldmlvdXNTdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfYyhcInNwYW5cIiwgW192bS5fdihcIsKrXCIpXSksXG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIgKyBfdm0uX3MoX3ZtLmVkaXRvclN0cmluZ3MucHJldmlvdXMpKVxuICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtbmV4dC1wcmV2aW91cy1idXR0b25zIGJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IFwidHJwLW5leHRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF92bS5lZGl0b3JTdHJpbmdzLm5leHRfdGl0bGVfYXR0clxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0ubmV4dFN0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLmVkaXRvclN0cmluZ3MubmV4dCkgKyBcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBfYyhcInNwYW5cIiwgW192bS5fdihcIsK7XCIpXSlcbiAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgYXR0cnM6IHsgaWQ6IFwidHJwLXZpZXctYXNcIiB9IH0sIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBhdHRyczogeyBpZDogXCJ0cnAtdmlldy1hcy1kZXNjcmlwdGlvblwiIH0gfSwgW1xuICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLmVkaXRvclN0cmluZ3Mudmlld19hcykpXG4gICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICBcInNlbGVjdFwiLFxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwibW9kZWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnZpZXdBcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInZpZXdBc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZTogXCJzZWxlY3QyXCIsIHJhd05hbWU6IFwidi1zZWxlY3QyXCIgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IGlkOiBcInRycC12aWV3LWFzLXNlbGVjdFwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2U6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkJHNlbGVjdGVkVmFsID0gQXJyYXkucHJvdG90eXBlLmZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhbGwoJGV2ZW50LnRhcmdldC5vcHRpb25zLCBmdW5jdGlvbihvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvLnNlbGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChmdW5jdGlvbihvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSBcIl92YWx1ZVwiIGluIG8gPyBvLl92YWx1ZSA6IG8udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0udmlld0FzID0gJGV2ZW50LnRhcmdldC5tdWx0aXBsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAkJHNlbGVjdGVkVmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICQkc2VsZWN0ZWRWYWxbMF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl9sKF92bS5yb2xlcywgZnVuY3Rpb24ocm9sZSwgcm9sZUluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwib3B0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICFyb2xlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICFyb2xlID8gX3ZtLmVkaXRvclN0cmluZ3Mudmlld19hc19wcm8gOiBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21Qcm9wczogeyB2YWx1ZTogcm9sZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKHJvbGVJbmRleCkpXVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5zZWxlY3RlZFN0cmluZyAhPT0gbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJzZWxlY3RlZFN0cmluZyAhPT0gbnVsbFwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtY29udHJvbHMtc2VjdGlvblwiXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBfYyhcImxhbmd1YWdlLWJveGVzXCIsIHtcbiAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5kZXhlc0FycmF5OiBfdm0uc2VsZWN0ZWRJbmRleGVzQXJyYXksXG4gICAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnk6IF92bS5kaWN0aW9uYXJ5LFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50TGFuZ3VhZ2U6IF92bS5jdXJyZW50TGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgICAgIG9uU2NyZWVuTGFuZ3VhZ2U6IF92bS5vblNjcmVlbkxhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZU5hbWVzOiBfdm0ubGFuZ3VhZ2VOYW1lcyxcbiAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3M6IF92bS5zZXR0aW5ncyxcbiAgICAgICAgICAgICAgICAgICAgc2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZTogX3ZtLnNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIGVkaXRvclN0cmluZ3M6IF92bS5lZGl0b3JTdHJpbmdzLFxuICAgICAgICAgICAgICAgICAgICBmbGFnc1BhdGg6IF92bS5mbGFnc1BhdGgsXG4gICAgICAgICAgICAgICAgICAgIGlmcmFtZTogX3ZtLmlmcmFtZSxcbiAgICAgICAgICAgICAgICAgICAgbm9uY2VzOiBfdm0ubm9uY2VzLFxuICAgICAgICAgICAgICAgICAgICBhamF4X3VybDogX3ZtLmFqYXhVcmxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICBcImRpc2NhcmRlZC1jaGFuZ2VzXCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgIF92bS5oYXNVbnNhdmVkQ2hhbmdlcygpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAxXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgIF9jKFwiZXh0cmEtY29udGVudFwiLCB7XG4gICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VOYW1lczogX3ZtLmxhbmd1YWdlTmFtZXMsXG4gICAgICAgICAgICAgICAgZWRpdG9yU3RyaW5nczogX3ZtLmVkaXRvclN0cmluZ3MsXG4gICAgICAgICAgICAgICAgcGFpZFZlcnNpb246IF92bS5wYWlkVmVyc2lvblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0udHJhbnNsYXRpb25Ob3RMb2FkZWRZZXQsXG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwidHJhbnNsYXRpb25Ob3RMb2FkZWRZZXRcIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLWNvbnRyb2xzLXNlY3Rpb25cIlxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtY29udHJvbHMtc2VjdGlvbi1jb250ZW50XCIsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IGlkOiBcInRycC10cmFuc2xhdGlvbi1ub3QtcmVhZHktc2VjdGlvblwiIH1cbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFwicFwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgZG9tUHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlubmVySFRNTDogX3ZtLl9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZWRpdG9yU3RyaW5ncy50cmFuc2xhdGlvbl9ub3RfbG9hZGVkX3lldFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgICBdLFxuICAgICAgICAgIDFcbiAgICAgICAgKSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXCJlZGl0b3JzLW5hdmlnYXRpb25cIiwge1xuICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICBlZGl0b3JzTmF2aWdhdGlvbjogX3ZtLmVkaXRvcnNOYXZpZ2F0aW9uLFxuICAgICAgICAgICAgc2VsZWN0ZWRUYWI6IFwidmlzdWFsZWRpdG9yXCJcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IGlkOiBcInRycF9zZWxlY3QyX292ZXJsYXlcIiB9IH0pLFxuICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICBfYyhcImhvdmVyLWFjdGlvbnNcIiwge1xuICAgICAgICAgIHJlZjogXCJob3ZlckFjdGlvbnNcIixcbiAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgZGljdGlvbmFyeTogX3ZtLmRpY3Rpb25hcnksXG4gICAgICAgICAgICBzZXR0aW5nczogX3ZtLnNldHRpbmdzLFxuICAgICAgICAgICAgaWZyYW1lOiBfdm0uaWZyYW1lLFxuICAgICAgICAgICAgZGF0YUF0dHJpYnV0ZXM6IF92bS5kYXRhQXR0cmlidXRlcyxcbiAgICAgICAgICAgIG1lcmdlUnVsZXM6IF92bS5tZXJnZVJ1bGVzLFxuICAgICAgICAgICAgbm9uY2VzOiBfdm0ubm9uY2VzLFxuICAgICAgICAgICAgYWpheF91cmw6IF92bS5hamF4VXJsLFxuICAgICAgICAgICAgbWVyZ2VEYXRhOiBfdm0ubWVyZ2VEYXRhLFxuICAgICAgICAgICAgZWRpdG9yU3RyaW5nczogX3ZtLmVkaXRvclN0cmluZ3MsXG4gICAgICAgICAgICBjdXJyZW50TGFuZ3VhZ2U6IF92bS5jdXJyZW50TGFuZ3VhZ2VcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICBdLFxuICAgICAgMVxuICAgICksXG4gICAgX3ZtLl92KFwiIFwiKSxcbiAgICBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IGlkOiBcInRycC1wcmV2aWV3XCIgfSB9LCBbXG4gICAgICBfYyhcImlmcmFtZVwiLCB7XG4gICAgICAgIGF0dHJzOiB7IGlkOiBcInRycC1wcmV2aWV3LWlmcmFtZVwiLCBzcmM6IF92bS51cmxUb0xvYWQgfSxcbiAgICAgICAgb246IHsgbG9hZDogX3ZtLmlGcmFtZUxvYWRlZCB9XG4gICAgICB9KSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcbiAgICAgICAgXCJkaXZcIixcbiAgICAgICAge1xuICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1sb2FkaW5nLXNjcmVlblwiLFxuICAgICAgICAgIGF0dHJzOiB7IGlkOiBcInRycC1wcmV2aWV3LWxvYWRlclwiIH1cbiAgICAgICAgfSxcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJzdmdcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLWxvYWRlclwiLFxuICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgIHdpZHRoOiBcIjY1cHhcIixcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiNjVweFwiLFxuICAgICAgICAgICAgICAgIHZpZXdCb3g6IFwiMCAwIDY2IDY2XCIsXG4gICAgICAgICAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcImNpcmNsZVwiLCB7XG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLWNpcmNsZVwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgICAgICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiNlwiLFxuICAgICAgICAgICAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgICAgICAgICAgICBjeDogXCIzM1wiLFxuICAgICAgICAgICAgICAgICAgY3k6IFwiMzNcIixcbiAgICAgICAgICAgICAgICAgIHI6IFwiMzBcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICApXG4gICAgICAgIF1cbiAgICAgIClcbiAgICBdKVxuICBdKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/editor.vue?vue&type=template&id=b046e8ec&\n");
987
 
988
  /***/ }),
989
 
158
 
159
  /***/ }),
160
 
161
+ /***/ "./assets/src/js/components/help-panel.vue":
162
+ /*!*************************************************!*\
163
+ !*** ./assets/src/js/components/help-panel.vue ***!
164
+ \*************************************************/
165
+ /*! exports provided: default */
166
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
167
+
168
+ "use strict";
169
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _help_panel_vue_vue_type_template_id_d8fd02f8___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./help-panel.vue?vue&type=template&id=d8fd02f8& */ \"./assets/src/js/components/help-panel.vue?vue&type=template&id=d8fd02f8&\");\n/* harmony import */ var _help_panel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./help-panel.vue?vue&type=script&lang=js& */ \"./assets/src/js/components/help-panel.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _help_panel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _help_panel_vue_vue_type_template_id_d8fd02f8___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _help_panel_vue_vue_type_template_id_d8fd02f8___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"assets/src/js/components/help-panel.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvaGVscC1wYW5lbC52dWU/NWY0ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5RjtBQUMzQjtBQUNMOzs7QUFHekQ7QUFDZ0c7QUFDaEcsZ0JBQWdCLDJHQUFVO0FBQzFCLEVBQUUsZ0ZBQU07QUFDUixFQUFFLHFGQUFNO0FBQ1IsRUFBRSw4RkFBZTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLElBQUksS0FBVSxFQUFFLFlBaUJmO0FBQ0Q7QUFDZSxnRiIsImZpbGUiOiIuL2Fzc2V0cy9zcmMvanMvY29tcG9uZW50cy9oZWxwLXBhbmVsLnZ1ZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vaGVscC1wYW5lbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZDhmZDAyZjgmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vaGVscC1wYW5lbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL2hlbHAtcGFuZWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvaG9tZS9tYWRhbGluL1Byb2plY3RzL3RyYW5zbGF0ZXByZXNzL3dwLWNvbnRlbnQvcGx1Z2lucy90cmFuc2xhdGVwcmVzcy9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIW1vZHVsZS5ob3QuZGF0YSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnZDhmZDAyZjgnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnZDhmZDAyZjgnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL2hlbHAtcGFuZWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWQ4ZmQwMmY4JlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJ2Q4ZmQwMmY4Jywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJhc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvaGVscC1wYW5lbC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./assets/src/js/components/help-panel.vue\n");
170
+
171
+ /***/ }),
172
+
173
+ /***/ "./assets/src/js/components/help-panel.vue?vue&type=script&lang=js&":
174
+ /*!**************************************************************************!*\
175
+ !*** ./assets/src/js/components/help-panel.vue?vue&type=script&lang=js& ***!
176
+ \**************************************************************************/
177
+ /*! exports provided: default */
178
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
179
+
180
+ "use strict";
181
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_help_panel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/babel-loader/lib??ref--4-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./help-panel.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/help-panel.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_help_panel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvaGVscC1wYW5lbC52dWU/NDQ4ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUEsd0NBQWdNLENBQWdCLHNQQUFHLEVBQUMiLCJmaWxlIjoiLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvaGVscC1wYW5lbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/cmVmLS00LTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9oZWxwLXBhbmVsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/cmVmLS00LTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9oZWxwLXBhbmVsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./assets/src/js/components/help-panel.vue?vue&type=script&lang=js&\n");
182
+
183
+ /***/ }),
184
+
185
+ /***/ "./assets/src/js/components/help-panel.vue?vue&type=template&id=d8fd02f8&":
186
+ /*!********************************************************************************!*\
187
+ !*** ./assets/src/js/components/help-panel.vue?vue&type=template&id=d8fd02f8& ***!
188
+ \********************************************************************************/
189
+ /*! exports provided: render, staticRenderFns */
190
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
191
+
192
+ "use strict";
193
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_help_panel_vue_vue_type_template_id_d8fd02f8___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib??vue-loader-options!./help-panel.vue?vue&type=template&id=d8fd02f8& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/help-panel.vue?vue&type=template&id=d8fd02f8&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_help_panel_vue_vue_type_template_id_d8fd02f8___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_help_panel_vue_vue_type_template_id_d8fd02f8___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvaGVscC1wYW5lbC52dWU/MmEyZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEiLCJmaWxlIjoiLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvaGVscC1wYW5lbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZDhmZDAyZjgmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2hlbHAtcGFuZWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWQ4ZmQwMmY4JlwiIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./assets/src/js/components/help-panel.vue?vue&type=template&id=d8fd02f8&\n");
194
+
195
+ /***/ }),
196
+
197
  /***/ "./assets/src/js/components/hover-actions.vue":
198
  /*!****************************************************!*\
199
  !*** ./assets/src/js/components/hover-actions.vue ***!
302
 
303
  /***/ }),
304
 
305
+ /***/ "./assets/src/js/components/tooltip.vue":
306
+ /*!**********************************************!*\
307
+ !*** ./assets/src/js/components/tooltip.vue ***!
308
+ \**********************************************/
309
+ /*! exports provided: default */
310
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
311
+
312
+ "use strict";
313
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _tooltip_vue_vue_type_template_id_f7e5e3b2___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tooltip.vue?vue&type=template&id=f7e5e3b2& */ \"./assets/src/js/components/tooltip.vue?vue&type=template&id=f7e5e3b2&\");\n/* harmony import */ var _tooltip_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tooltip.vue?vue&type=script&lang=js& */ \"./assets/src/js/components/tooltip.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _tooltip_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _tooltip_vue_vue_type_template_id_f7e5e3b2___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _tooltip_vue_vue_type_template_id_f7e5e3b2___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"assets/src/js/components/tooltip.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvdG9vbHRpcC52dWU/YzJlZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFzRjtBQUMzQjtBQUNMOzs7QUFHdEQ7QUFDZ0c7QUFDaEcsZ0JBQWdCLDJHQUFVO0FBQzFCLEVBQUUsNkVBQU07QUFDUixFQUFFLGtGQUFNO0FBQ1IsRUFBRSwyRkFBZTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLElBQUksS0FBVSxFQUFFLFlBaUJmO0FBQ0Q7QUFDZSxnRiIsImZpbGUiOiIuL2Fzc2V0cy9zcmMvanMvY29tcG9uZW50cy90b29sdGlwLnZ1ZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vdG9vbHRpcC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZjdlNWUzYjImXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vdG9vbHRpcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL3Rvb2x0aXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvaG9tZS9tYWRhbGluL1Byb2plY3RzL3RyYW5zbGF0ZXByZXNzL3dwLWNvbnRlbnQvcGx1Z2lucy90cmFuc2xhdGVwcmVzcy9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIW1vZHVsZS5ob3QuZGF0YSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnZjdlNWUzYjInLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnZjdlNWUzYjInLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL3Rvb2x0aXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWY3ZTVlM2IyJlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJ2Y3ZTVlM2IyJywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJhc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvdG9vbHRpcC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./assets/src/js/components/tooltip.vue\n");
314
+
315
+ /***/ }),
316
+
317
+ /***/ "./assets/src/js/components/tooltip.vue?vue&type=script&lang=js&":
318
+ /*!***********************************************************************!*\
319
+ !*** ./assets/src/js/components/tooltip.vue?vue&type=script&lang=js& ***!
320
+ \***********************************************************************/
321
+ /*! exports provided: default */
322
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
323
+
324
+ "use strict";
325
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tooltip_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/babel-loader/lib??ref--4-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./tooltip.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/tooltip.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tooltip_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvdG9vbHRpcC52dWU/Nzc3NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUEsd0NBQTZMLENBQWdCLG1QQUFHLEVBQUMiLCJmaWxlIjoiLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvdG9vbHRpcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/cmVmLS00LTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi90b29sdGlwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/cmVmLS00LTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi90b29sdGlwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./assets/src/js/components/tooltip.vue?vue&type=script&lang=js&\n");
326
+
327
+ /***/ }),
328
+
329
+ /***/ "./assets/src/js/components/tooltip.vue?vue&type=template&id=f7e5e3b2&":
330
+ /*!*****************************************************************************!*\
331
+ !*** ./assets/src/js/components/tooltip.vue?vue&type=template&id=f7e5e3b2& ***!
332
+ \*****************************************************************************/
333
+ /*! exports provided: render, staticRenderFns */
334
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
335
+
336
+ "use strict";
337
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_tooltip_vue_vue_type_template_id_f7e5e3b2___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib??vue-loader-options!./tooltip.vue?vue&type=template&id=f7e5e3b2& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/tooltip.vue?vue&type=template&id=f7e5e3b2&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_tooltip_vue_vue_type_template_id_f7e5e3b2___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_tooltip_vue_vue_type_template_id_f7e5e3b2___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvdG9vbHRpcC52dWU/NDZhNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEiLCJmaWxlIjoiLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvdG9vbHRpcC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZjdlNWUzYjImLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3Rvb2x0aXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWY3ZTVlM2IyJlwiIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./assets/src/js/components/tooltip.vue?vue&type=template&id=f7e5e3b2&\n");
338
+
339
+ /***/ }),
340
+
341
  /***/ "./assets/src/js/components/translation-input.vue":
342
  /*!********************************************************!*\
343
  !*** ./assets/src/js/components/translation-input.vue ***!
814
 
815
  /***/ }),
816
 
817
+ /***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/help-panel.vue?vue&type=script&lang=js&":
818
+ /*!**********************************************************************************************************************************************************************!*\
819
+ !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./assets/src/js/components/help-panel.vue?vue&type=script&lang=js& ***!
820
+ \**********************************************************************************************************************************************************************/
821
+ /*! exports provided: default */
822
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
823
+
824
+ "use strict";
825
+ eval("__webpack_require__.r(__webpack_exports__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: ['helpPanelContent', 'editorStrings', 'helpPanelOpen'],\n data: function data() {\n return {\n page: 0\n };\n },\n watch: {\n page: function page() {\n window.dispatchEvent(new Event('trp_help_panel_changed'));\n window.dispatchEvent(new Event(this.helpPanelContent[this.page].event));\n },\n helpPanelOpen: function helpPanelOpen() {\n if (this.helpPanelOpen) {\n window.dispatchEvent(new Event(this.helpPanelContent[this.page].event));\n } else {\n window.dispatchEvent(new Event('trp_help_panel_changed'));\n }\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vYXNzZXRzL3NyYy9qcy9jb21wb25lbnRzL2hlbHAtcGFuZWwudnVlPzdiNTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QkE7QUFDQSxVQUNBLGtCQURBLEVBRUEsZUFGQSxFQUdBLGVBSEEsQ0FEQTtBQU1BLE1BTkEsa0JBTUE7QUFDQTtBQUNBO0FBREE7QUFHQSxHQVZBO0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUpBO0FBS0E7QUFDQTtBQUNBO0FBQ0EsT0FGQSxNQUVBO0FBQ0E7QUFDQTtBQUNBO0FBWEE7QUFYQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvaGVscC1wYW5lbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJ0cnAtaGVscC1wYW5lbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLWlubmVyLXBhbmVsXCI+XG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJ0cnAtaGVscC1wYW5lbC10aXRsZVwiPlxuICAgICAgICAgICAgICAgIHt7aGVscFBhbmVsQ29udGVudFtwYWdlXS50aXRsZX19XG4gICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRycC1oZWxwLXBhbmVsLWNvbnRlbnRcIiB2LWh0bWw9XCJoZWxwUGFuZWxDb250ZW50W3BhZ2VdLmNvbnRlbnRcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0cnAtaGVscC1wYW5lbC1wYWdpbmF0aW9uXCI+XG4gICAgICAgICAgICA8c3Bhbj57e3BhZ2UgKyAxfX0ve3toZWxwUGFuZWxDb250ZW50Lmxlbmd0aH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwidHJwLWxpbmstYnV0dG9uXCIgOmNsYXNzPVwieyd0cnAtbGluay1idXR0b24tZGlzYWJsZWQnOiAoIHBhZ2UgPD0gMCApIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJwYWdlID0gKHBhZ2UgPD0gMCApID8gMCA6IHBhZ2UgLSAxXCI+e3tlZGl0b3JTdHJpbmdzLnByZXZpb3VzfX08L2E+XG4gICAgICAgICAgICAgICAgICAgIHxcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJ0cnAtbGluay1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJ7J3RycC1saW5rLWJ1dHRvbi1kaXNhYmxlZCc6ICggcGFnZSA+PSBoZWxwUGFuZWxDb250ZW50Lmxlbmd0aCAtIDEgKSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwicGFnZSA9IChwYWdlID49IGhlbHBQYW5lbENvbnRlbnQubGVuZ3RoIC0gMSkgPyBwYWdlIDogcGFnZSArIDFcIj57e2VkaXRvclN0cmluZ3MubmV4dH19PC9hPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuICAgIGV4cG9ydCBkZWZhdWx0IHtcbiAgICAgICAgcHJvcHMgOiBbXG4gICAgICAgICAgICAnaGVscFBhbmVsQ29udGVudCcsXG4gICAgICAgICAgICAnZWRpdG9yU3RyaW5ncycsXG4gICAgICAgICAgICAnaGVscFBhbmVsT3BlbidcbiAgICAgICAgXSxcbiAgICAgICAgZGF0YSgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcGFnZSA6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2F0Y2ggOiB7XG4gICAgICAgICAgICBwYWdlIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgndHJwX2hlbHBfcGFuZWxfY2hhbmdlZCcpKTtcbiAgICAgICAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQodGhpcy5oZWxwUGFuZWxDb250ZW50W3RoaXMucGFnZV0uZXZlbnQpKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoZWxwUGFuZWxPcGVuIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmKCB0aGlzLmhlbHBQYW5lbE9wZW4gKXtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoIG5ldyBFdmVudCggdGhpcy5oZWxwUGFuZWxDb250ZW50WyB0aGlzLnBhZ2UgXS5ldmVudCApICk7XG4gICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgndHJwX2hlbHBfcGFuZWxfY2hhbmdlZCcpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG48L3NjcmlwdD4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/help-panel.vue?vue&type=script&lang=js&\n");
826
+
827
+ /***/ }),
828
+
829
  /***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/hover-actions.vue?vue&type=script&lang=js&":
830
  /*!*************************************************************************************************************************************************************************!*\
831
  !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./assets/src/js/components/hover-actions.vue?vue&type=script&lang=js& ***!
846
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
847
 
848
  "use strict";
849
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _translation_input_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./translation-input.vue */ \"./assets/src/js/components/translation-input.vue\");\n/* harmony import */ var _translation_memory_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./translation-memory.vue */ \"./assets/src/js/components/translation-memory.vue\");\n/* harmony import */ var _tooltip__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tooltip */ \"./assets/src/js/components/tooltip.vue\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: ['selectedIndexesArray', 'dictionary', 'currentLanguage', 'onScreenLanguage', 'languageNames', 'settings', 'showChangesUnsavedMessage', 'editorStrings', 'flagsPath', 'iframe', 'nonces', 'ajax_url', 'userMeta'],\n data: function data() {\n return {\n languages: [],\n completeLanguageNames: Object.assign({\n 'original': 'Original String'\n }, this.languageNames),\n othersButtonPositionOffset: 1,\n showOtherLanguages: false,\n orderedLanguages: [],\n showImageIcon: true\n };\n },\n components: {\n Tooltip: _tooltip__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n translationInput: _translation_input_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n translationMemory: _translation_memory_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n },\n mounted: function mounted() {\n this.determineLanguageOrder();\n this.addKeyboardShortcutsListener();\n },\n updated: function updated() {\n // if already active do nothing\n if (document.activeElement.classList.contains('trp-translation-input') || document.activeElement.classList.contains('trp-editor-body')) // when clicking translation memory result, don't move cursor\n {\n return;\n } // place the cursor in the first textarea or input for translation\n\n\n var translationSection = document.getElementById('trp-translation-section');\n\n if (translationSection) {\n var focusableSelectors = ['textarea:not([readonly])', 'input[type=\"text\"]:not([readonly])'];\n\n for (var i = 0; i < focusableSelectors.length; i++) {\n var focusable = document.getElementById('trp-translation-section').querySelector(focusableSelectors[i]);\n\n if (focusable) {\n focusable.focus();\n break;\n }\n }\n }\n },\n watch: {\n selectedIndexesArray: function selectedIndexesArray() {\n this.updateLanguages();\n },\n onScreenLanguage: function onScreenLanguage() {\n this.determineLanguageOrder();\n this.updateLanguages();\n }\n },\n computed: {\n othersButtonPosition: function othersButtonPosition() {\n if (this.currentLanguage === this.settings['default-language'] || this.settings['translation-languages'].length <= 2) {\n // don't display it\n return 999;\n } else {\n return this.othersButtonPositionOffset;\n }\n }\n },\n methods: {\n determineLanguageOrder: function determineLanguageOrder() {\n var self = this;\n var filteredLanguages = this.settings['translation-languages'].filter(function (language, index, array) {\n // all languages except default and current or on screen language.\n return self.settings['default-language'] !== language && self.onScreenLanguage !== language;\n });\n this.orderedLanguages = [];\n this.orderedLanguages.push(this.settings['default-language']);\n if (this.onScreenLanguage !== '') this.orderedLanguages.push(this.onScreenLanguage);\n this.orderedLanguages = this.orderedLanguages.concat(filteredLanguages);\n },\n updateLanguages: function updateLanguages() {\n this.languages = [];\n var self = this;\n var defaultLanguage = this.settings['default-language'];\n var translateToDefault = false;\n this.showImageIcon = false;\n this.othersButtonPositionOffset = 1;\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n if (self.dictionary[selectedIndex] && self.dictionary[selectedIndex].translationsArray[defaultLanguage]) translateToDefault = true;\n if (self.dictionary[selectedIndex] && self.dictionary[selectedIndex].attribute === 'src') self.showImageIcon = true;\n });\n\n if (translateToDefault) {\n this.languages.push('original');\n this.othersButtonPositionOffset++;\n }\n\n this.languages = this.languages.concat(this.orderedLanguages);\n },\n discardChanges: function discardChanges(selectedIndex, languageCode) {\n this.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation = this.dictionary[selectedIndex].translationsArray[languageCode].translated;\n this.$emit('discarded-changes');\n },\n hasUnsavedChanges: function hasUnsavedChanges(selectedIndex, languageCode) {\n return this.dictionary[selectedIndex].translationsArray[languageCode].translated !== this.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation;\n },\n discardAll: function discardAll() {\n var self = this;\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n self.settings['translation-languages'].forEach(function (languageCode) {\n if (self.dictionary[selectedIndex].translationsArray[languageCode] && self.dictionary[selectedIndex].translationsArray[languageCode].translated !== self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation) {\n self.discardChanges(selectedIndex, languageCode);\n }\n });\n });\n\n if (this.$parent.mergingString === true) {\n this.$parent.selectedString = null;\n var previouslyHighlighted = this.iframe.getElementsByClassName('trp-create-translation-block');\n\n if (previouslyHighlighted.length > 0) {\n var i;\n\n for (i = 0; i < previouslyHighlighted.length; i++) {\n previouslyHighlighted[i].classList.remove('trp-highlight');\n previouslyHighlighted[i].classList.remove('trp-create-translation-block');\n }\n }\n\n this.$parent.mergingString = false;\n this.$parent.mergeData = [];\n }\n },\n addKeyboardShortcutsListener: function addKeyboardShortcutsListener() {\n document.addEventListener(\"keydown\", function (e) {\n // CTRL + ALT + Z\n if ((window.navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey) && e.altKey && e.keyCode === 90) {\n e.preventDefault();\n window.dispatchEvent(new Event('trp_trigger_discard_all_changes_event'));\n }\n }, false);\n window.addEventListener('trp_trigger_discard_all_changes_event', this.discardAll);\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vYXNzZXRzL3NyYy9qcy9jb21wb25lbnRzL2xhbmd1YWdlLWJveGVzLnZ1ZT80OWJjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1EQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQ0Esc0JBREEsRUFFQSxZQUZBLEVBR0EsaUJBSEEsRUFJQSxrQkFKQSxFQUtBLGVBTEEsRUFNQSxVQU5BLEVBT0EsMkJBUEEsRUFRQSxlQVJBLEVBU0EsV0FUQSxFQVVBLFFBVkEsRUFXQSxRQVhBLEVBWUEsVUFaQSxFQWFBLFVBYkEsQ0FEQTtBQWdCQSxNQWhCQSxrQkFnQkE7QUFDQTtBQUNBLG1CQURBO0FBRUE7QUFBQTtBQUFBLDRCQUZBO0FBR0EsbUNBSEE7QUFJQSwrQkFKQTtBQUtBLDBCQUxBO0FBTUE7QUFOQTtBQVFBLEdBekJBO0FBMEJBO0FBQ0EsNkRBREE7QUFFQSxvRkFGQTtBQUdBO0FBSEEsR0ExQkE7QUErQkEsU0EvQkEscUJBK0JBO0FBQ0E7QUFDQTtBQUNBLEdBbENBO0FBbUNBLFNBbkNBLHFCQW1DQTtBQUNBO0FBQ0EsOEVBQ0EsNERBREEsRUFDQTtBQUNBO0FBQ0E7QUFDQSxPQU5BLENBT0E7OztBQUNBOztBQUNBO0FBQ0E7O0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQXREQTtBQXVEQTtBQUNBO0FBQ0E7QUFDQSxLQUhBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFQQSxHQXZEQTtBQWdFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FIQSxNQUdBO0FBQ0E7QUFDQTtBQUNBO0FBUkEsR0FoRUE7QUEwRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FIQTtBQUlBO0FBQ0E7QUFDQSx3Q0FDQTtBQUNBO0FBQ0EsS0FaQTtBQWFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQSxpSEFDQTtBQUNBLGtHQUNBO0FBQ0EsT0FMQTs7QUFPQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBbENBO0FBbUNBO0FBQ0E7QUFDQTtBQUNBLEtBdENBO0FBdUNBO0FBQ0E7QUFDQSxLQXpDQTtBQTBDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdGQUNBLDhKQURBLEVBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FMQTtBQU1BLE9BUEE7O0FBU0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQWxFQTtBQW1FQSxnQ0FuRUEsMENBbUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FOQSxFQU1BLEtBTkE7QUFRQTtBQUNBO0FBN0VBO0FBMUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL2Fzc2V0cy9zcmMvanMvY29tcG9uZW50cy9sYW5ndWFnZS1ib3hlcy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxkaXYgaWQ9XCJ0cnAtdHJhbnNsYXRpb24tc2VjdGlvblwiIGNsYXNzPVwidHJwLWNvbnRyb2xzLXNlY3Rpb24tY29udGVudFwiIHYtaWY9XCJzZWxlY3RlZEluZGV4ZXNBcnJheVwiPlxuICAgICAgICA8ZGl2IHYtc2hvdz1cInNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2VcIiBjbGFzcz1cInRycC1jaGFuZ2VzLXVuc2F2ZWQtbWVzc2FnZVwiPlxuICAgICAgICAgICAge3sgZWRpdG9yU3RyaW5ncy51bnNhdmVkX2NoYW5nZXMgfX1cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHJwLWJ1dHRvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRycC11bnNhdmVkLWNoYW5nZXMgdHJwLWRpc2NhcmQtY2hhbmdlcyBcIkBjbGljaz1cImRpc2NhcmRBbGxcIiA+e3sgZWRpdG9yU3RyaW5ncy5kaXNjYXJkX2FsbCB9fT88L3NwYW4+XG4gICAgICAgICAgICAgICAgPHRvb2x0aXAgOnRleHQ9XCJlZGl0b3JTdHJpbmdzLmRpc2NhcmRfYWxsX3RpdGxlX2F0dHJcIiBjbGFzcz1cInRycC1kaXNjYXJkYWxsLXRvb2x0aXBcIiA6ZWRpdG9yU3RyaW5ncz1cImVkaXRvclN0cmluZ3NcIiA6dXNlck1ldGFIYW5kbGU9XCInZGlzbWlzc1Rvb2x0aXBEaXNtaXNzQWxsJ1wiIDp1c2VyTWV0YT1cInVzZXJNZXRhXCI+PC90b29sdGlwPlxuICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IHYtZm9yPVwiKGxhbmd1YWdlQ29kZSwga2V5KSBpbiBsYW5ndWFnZXNcIiA6aWQ9XCIndHJwLWxhbmd1YWdlLScgKyBsYW5ndWFnZUNvZGVcIj5cbiAgICAgICAgICAgIDxkaXYgdi1zaG93PVwiKCAoa2V5IDw9IG90aGVyc0J1dHRvblBvc2l0aW9uKSB8fCBzaG93T3RoZXJMYW5ndWFnZXMgKSAmJiAoIHNlbGVjdGVkSW5kZXhlc0FycmF5ICYmIHNlbGVjdGVkSW5kZXhlc0FycmF5Lmxlbmd0aCA+IDAgKVwiICBjbGFzcz1cInRycC1sYW5ndWFnZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLWxhbmd1YWdlLW5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi1pZj1cImtleSA9PSAwIFwiPnt7IGVkaXRvclN0cmluZ3MuZnJvbSB9fSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtZWxzZT57eyBlZGl0b3JTdHJpbmdzLnRvIH19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAge3sgY29tcGxldGVMYW5ndWFnZU5hbWVzW2xhbmd1YWdlQ29kZV0gfX1cbiAgICAgICAgICAgICAgICAgICAgPGltZyB2LWlmPVwibGFuZ3VhZ2VDb2RlICE9ICdvcmlnaW5hbCdcIiBjbGFzcz1cInRycC1sYW5ndWFnZS1ib3gtZmxhZy1pbWFnZVwiIDpzcmM9XCJmbGFnc1BhdGhbbGFuZ3VhZ2VDb2RlXSArICcvJyArIGxhbmd1YWdlQ29kZSArICcucG5nJ1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxMlwiIDphbHQ9XCJsYW5ndWFnZUNvZGVcIiA6dGl0bGU9XCJjb21wbGV0ZUxhbmd1YWdlTmFtZXNbbGFuZ3VhZ2VDb2RlXVwiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRycC10cmFuc2xhdGlvbnMtZm9yLWxhbmd1YWdlXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRycC10cmFuc2xhdGlvbi1pY29uLWNvbnRhaW5lclwiIHYtaWY9XCJzaG93SW1hZ2VJY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRycC10cmFuc2xhdGlvbi1pY29uIGRhc2hpY29ucyBkYXNoaWNvbnMtZm9ybWF0LWltYWdlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0cnAtdHJhbnNsYXRpb25zLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRycC1zdHJpbmctY29udGFpbmVyXCIgdi1mb3I9XCJzZWxlY3RlZEluZGV4IGluIHNlbGVjdGVkSW5kZXhlc0FycmF5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwiZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XSAmJiBkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV1cIiA6a2V5PVwic2VsZWN0ZWRJbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHJhbnNsYXRpb24taW5wdXQgOnN0cmluZz1cImRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cIiB2LW1vZGVsPVwiZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLmVkaXRlZFRyYW5zbGF0aW9uXCIgOmhpZ2hsaWdodFVuc2F2ZWRDaGFuZ2VzPVwic2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZSAmJiBoYXNVbnNhdmVkQ2hhbmdlcyggc2VsZWN0ZWRJbmRleCwgbGFuZ3VhZ2VDb2RlIClcIiA6ZWRpdG9yU3RyaW5ncz1cImVkaXRvclN0cmluZ3NcIj48L3RyYW5zbGF0aW9uLWlucHV0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdi1lbHNlLWlmPVwiZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVwiIDprZXk9XCJzZWxlY3RlZEluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cmFuc2xhdGlvbi1pbnB1dCA6cmVhZG9ubHk9XCJ0cnVlXCIgOnN0cmluZz1cImRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cIiA6dmFsdWU9XCJkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLm9yaWdpbmFsXCIgOmVkaXRvclN0cmluZ3M9XCJlZGl0b3JTdHJpbmdzXCI+PC90cmFuc2xhdGlvbi1pbnB1dD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLXRyYW5zbGF0aW9uLWlucHV0LWZvb3RlclwiIDpkYXRhLWRpY3Rpb25hcnktZW50cnk9XCJKU09OLnN0cmluZ2lmeShkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLWF0dHJpYnV0ZS1uYW1lXCI+e3sgKCBlZGl0b3JTdHJpbmdzWyBkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLmF0dHJpYnV0ZSBdICYmICggKGRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0uYXR0cmlidXRlICE9ICdjb250ZW50JyB8fCBkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLmF0dHJpYnV0ZSAhPSAnJykgKSApID8gZWRpdG9yU3RyaW5nc1sgZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS5hdHRyaWJ1dGUgXSA6IGVkaXRvclN0cmluZ3MudGV4dCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdICYmIGRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXVwiIGNsYXNzPVwidHJwLWRpc2NhcmQtY2hhbmdlcyB0cnAtZGlzY2FyZC1pbmRpdmlkdWFsLWNoYW5nZXNcIiBAY2xpY2s9XCJkaXNjYXJkQ2hhbmdlcyhzZWxlY3RlZEluZGV4LGxhbmd1YWdlQ29kZSlcIiA6Y2xhc3M9XCJ7J3RycC11bnNhdmVkLWNoYW5nZXMnOiBoYXNVbnNhdmVkQ2hhbmdlcyggc2VsZWN0ZWRJbmRleCwgbGFuZ3VhZ2VDb2RlICkgfVwiIDp0aXRsZT1cImVkaXRvclN0cmluZ3MuZGlzY2FyZF9pbmRpdmlkdWFsX2NoYW5nZXNfdGl0bGVfYXR0cmlidXRlXCI+e3sgZWRpdG9yU3RyaW5ncy5kaXNjYXJkIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRycC10cmFuc2xhdGlvbi1tZW1vcnktd3JhcFwiIHYtaWY9XCJkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdICYmIGRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXVwiIDprZXk9XCIndHJwX3Rtd18nICsgc2VsZWN0ZWRJbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHJhbnNsYXRpb24tbWVtb3J5IDpzdHJpbmc9XCJkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdXCIgOmVkaXRvclN0cmluZ3M9XCJlZGl0b3JTdHJpbmdzXCIgOmFqYXhfdXJsPVwiYWpheF91cmxcIiA6bm9uY2VzPVwibm9uY2VzXCIgOmxhbmd1YWdlQ29kZT1cImxhbmd1YWdlQ29kZVwiPjwvdHJhbnNsYXRpb24tbWVtb3J5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgICAgICA8ZGl2IHYtc2hvdz1cImtleSA9PSBvdGhlcnNCdXR0b25Qb3NpdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLXRvZ2dsZS1sYW5ndWFnZXMgYnV0dG9uXCIgQGNsaWNrPVwic2hvd090aGVyTGFuZ3VhZ2VzID0gIXNob3dPdGhlckxhbmd1YWdlc1wiIDpjbGFzcz1cInsgJ3RycC1zaG93LW90aGVyLWxhbmd1YWdlcyc6IHNob3dPdGhlckxhbmd1YWdlcywgJ3RycC1oaWRlLW90aGVyLWxhbmd1YWdlcyc6ICFzaG93T3RoZXJMYW5ndWFnZXMgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgKHNob3dPdGhlckxhbmd1YWdlcyk/ICAnJiM5NjYwOycgOiAnJiM5NjU0Oyd9fSB7eyBlZGl0b3JTdHJpbmdzLm90aGVyX2xhbmcgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgICBpbXBvcnQgdHJhbnNsYXRpb25JbnB1dCAgZnJvbSAnLi90cmFuc2xhdGlvbi1pbnB1dC52dWUnXG4gICAgaW1wb3J0IHRyYW5zbGF0aW9uTWVtb3J5IGZyb20gJy4vdHJhbnNsYXRpb24tbWVtb3J5LnZ1ZSdcbiAgICBpbXBvcnQgVG9vbHRpcCAgICAgICAgICAgZnJvbSBcIi4vdG9vbHRpcFwiXG4gICAgZXhwb3J0IGRlZmF1bHR7XG4gICAgICAgIHByb3BzOltcbiAgICAgICAgICAgICdzZWxlY3RlZEluZGV4ZXNBcnJheScsXG4gICAgICAgICAgICAnZGljdGlvbmFyeScsXG4gICAgICAgICAgICAnY3VycmVudExhbmd1YWdlJyxcbiAgICAgICAgICAgICdvblNjcmVlbkxhbmd1YWdlJyxcbiAgICAgICAgICAgICdsYW5ndWFnZU5hbWVzJyxcbiAgICAgICAgICAgICdzZXR0aW5ncycsXG4gICAgICAgICAgICAnc2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZScsXG4gICAgICAgICAgICAnZWRpdG9yU3RyaW5ncycsXG4gICAgICAgICAgICAnZmxhZ3NQYXRoJyxcbiAgICAgICAgICAgICdpZnJhbWUnLFxuICAgICAgICAgICAgJ25vbmNlcycsXG4gICAgICAgICAgICAnYWpheF91cmwnLFxuICAgICAgICAgICAgJ3VzZXJNZXRhJ1xuICAgICAgICBdLFxuICAgICAgICBkYXRhKCl7XG4gICAgICAgICAgICByZXR1cm57XG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VzICAgICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgICAgICAgICBjb21wbGV0ZUxhbmd1YWdlTmFtZXMgICAgICA6IE9iamVjdC5hc3NpZ24oIHsgJ29yaWdpbmFsJzogJ09yaWdpbmFsIFN0cmluZycgfSwgdGhpcy5sYW5ndWFnZU5hbWVzICksXG4gICAgICAgICAgICAgICAgb3RoZXJzQnV0dG9uUG9zaXRpb25PZmZzZXQgOiAxLFxuICAgICAgICAgICAgICAgIHNob3dPdGhlckxhbmd1YWdlcyAgICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgICAgICAgb3JkZXJlZExhbmd1YWdlcyAgICAgICAgICAgOiBbXSxcbiAgICAgICAgICAgICAgICBzaG93SW1hZ2VJY29uICAgICAgICAgICAgICA6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY29tcG9uZW50czp7XG4gICAgICAgICAgICBUb29sdGlwLFxuICAgICAgICAgICAgdHJhbnNsYXRpb25JbnB1dCxcbiAgICAgICAgICAgIHRyYW5zbGF0aW9uTWVtb3J5XG4gICAgICAgIH0sXG4gICAgICAgIG1vdW50ZWQoKXtcbiAgICAgICAgICAgIHRoaXMuZGV0ZXJtaW5lTGFuZ3VhZ2VPcmRlcigpXG4gICAgICAgICAgICB0aGlzLmFkZEtleWJvYXJkU2hvcnRjdXRzTGlzdGVuZXIoKVxuICAgICAgICB9LFxuICAgICAgICB1cGRhdGVkKCl7XG4gICAgICAgICAgICAvLyBpZiBhbHJlYWR5IGFjdGl2ZSBkbyBub3RoaW5nXG4gICAgICAgICAgICBpZiAoIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCAndHJwLXRyYW5zbGF0aW9uLWlucHV0JyApIHx8XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoICd0cnAtZWRpdG9yLWJvZHknICkgKSAvLyB3aGVuIGNsaWNraW5nIHRyYW5zbGF0aW9uIG1lbW9yeSByZXN1bHQsIGRvbid0IG1vdmUgY3Vyc29yXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBwbGFjZSB0aGUgY3Vyc29yIGluIHRoZSBmaXJzdCB0ZXh0YXJlYSBvciBpbnB1dCBmb3IgdHJhbnNsYXRpb25cbiAgICAgICAgICAgIGxldCB0cmFuc2xhdGlvblNlY3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggJ3RycC10cmFuc2xhdGlvbi1zZWN0aW9uJyApXG4gICAgICAgICAgICBpZiAoIHRyYW5zbGF0aW9uU2VjdGlvbiApICB7XG4gICAgICAgICAgICAgICAgbGV0IGZvY3VzYWJsZVNlbGVjdG9ycyA9IFsndGV4dGFyZWE6bm90KFtyZWFkb25seV0pJywgJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdOm5vdChbcmVhZG9ubHldKSddXG4gICAgICAgICAgICAgICAgZm9yICggdmFyIGkgPSAwOyBpPGZvY3VzYWJsZVNlbGVjdG9ycy5sZW5ndGg7IGkrKyApe1xuICAgICAgICAgICAgICAgICAgICBsZXQgZm9jdXNhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoICd0cnAtdHJhbnNsYXRpb24tc2VjdGlvbicgKS5xdWVyeVNlbGVjdG9yKGZvY3VzYWJsZVNlbGVjdG9yc1tpXSlcbiAgICAgICAgICAgICAgICAgICAgaWYgKCBmb2N1c2FibGUgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGUuZm9jdXMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdhdGNoOiB7XG4gICAgICAgICAgICBzZWxlY3RlZEluZGV4ZXNBcnJheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTGFuZ3VhZ2VzKClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvblNjcmVlbkxhbmd1YWdlOiBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIHRoaXMuZGV0ZXJtaW5lTGFuZ3VhZ2VPcmRlcigpXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVMYW5ndWFnZXMoKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjb21wdXRlZDp7XG4gICAgICAgICAgICBvdGhlcnNCdXR0b25Qb3NpdGlvbjogZnVuY3Rpb24gKCl7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudExhbmd1YWdlID09PSB0aGlzLnNldHRpbmdzWydkZWZhdWx0LWxhbmd1YWdlJ10gfHwgdGhpcy5zZXR0aW5nc1sndHJhbnNsYXRpb24tbGFuZ3VhZ2VzJ10ubGVuZ3RoIDw9IDIgKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGRvbid0IGRpc3BsYXkgaXRcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDk5OVxuICAgICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vdGhlcnNCdXR0b25Qb3NpdGlvbk9mZnNldFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWV0aG9kczp7XG4gICAgICAgICAgICBkZXRlcm1pbmVMYW5ndWFnZU9yZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGYgPSB0aGlzXG4gICAgICAgICAgICAgICAgbGV0IGZpbHRlcmVkTGFuZ3VhZ2VzID0gdGhpcy5zZXR0aW5nc1sndHJhbnNsYXRpb24tbGFuZ3VhZ2VzJ10uZmlsdGVyKGZ1bmN0aW9uKGxhbmd1YWdlLCBpbmRleCwgYXJyYXkpe1xuICAgICAgICAgICAgICAgICAgICAvLyBhbGwgbGFuZ3VhZ2VzIGV4Y2VwdCBkZWZhdWx0IGFuZCBjdXJyZW50IG9yIG9uIHNjcmVlbiBsYW5ndWFnZS5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICggc2VsZi5zZXR0aW5nc1snZGVmYXVsdC1sYW5ndWFnZSddICE9PSBsYW5ndWFnZSApICYmICggc2VsZi5vblNjcmVlbkxhbmd1YWdlICE9PSBsYW5ndWFnZSApXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmRlcmVkTGFuZ3VhZ2VzID0gW11cbiAgICAgICAgICAgICAgICB0aGlzLm9yZGVyZWRMYW5ndWFnZXMucHVzaCggdGhpcy5zZXR0aW5nc1snZGVmYXVsdC1sYW5ndWFnZSddIClcbiAgICAgICAgICAgICAgICBpZiAoIHRoaXMub25TY3JlZW5MYW5ndWFnZSAhPT0gJycgKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9yZGVyZWRMYW5ndWFnZXMucHVzaCggdGhpcy5vblNjcmVlbkxhbmd1YWdlIClcbiAgICAgICAgICAgICAgICB0aGlzLm9yZGVyZWRMYW5ndWFnZXMgPSB0aGlzLm9yZGVyZWRMYW5ndWFnZXMuY29uY2F0KCBmaWx0ZXJlZExhbmd1YWdlcyApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdXBkYXRlTGFuZ3VhZ2VzOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYW5ndWFnZXMgICAgICAgICAgICAgICAgICA9IFtdXG4gICAgICAgICAgICAgICAgbGV0IHNlbGYgICAgICAgICAgICAgICAgICAgICAgICA9IHRoaXNcbiAgICAgICAgICAgICAgICBsZXQgZGVmYXVsdExhbmd1YWdlICAgICAgICAgICAgID0gdGhpcy5zZXR0aW5nc1snZGVmYXVsdC1sYW5ndWFnZSddXG4gICAgICAgICAgICAgICAgbGV0IHRyYW5zbGF0ZVRvRGVmYXVsdCAgICAgICAgICA9IGZhbHNlXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93SW1hZ2VJY29uICAgICAgICAgICAgICA9IGZhbHNlXG4gICAgICAgICAgICAgICAgdGhpcy5vdGhlcnNCdXR0b25Qb3NpdGlvbk9mZnNldCA9IDFcblxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleGVzQXJyYXkuZm9yRWFjaChmdW5jdGlvbiAoc2VsZWN0ZWRJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBpZiggc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdICYmIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtkZWZhdWx0TGFuZ3VhZ2VdIClcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVRvRGVmYXVsdCA9IHRydWVcbiAgICAgICAgICAgICAgICAgICAgaWYoIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XSAmJiBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0uYXR0cmlidXRlID09PSAnc3JjJyApXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNob3dJbWFnZUljb24gPSB0cnVlXG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIGlmICh0cmFuc2xhdGVUb0RlZmF1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYW5ndWFnZXMucHVzaCgnb3JpZ2luYWwnKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm90aGVyc0J1dHRvblBvc2l0aW9uT2Zmc2V0KytcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmxhbmd1YWdlcyA9IHRoaXMubGFuZ3VhZ2VzLmNvbmNhdCh0aGlzLm9yZGVyZWRMYW5ndWFnZXMpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGlzY2FyZENoYW5nZXM6IGZ1bmN0aW9uKHNlbGVjdGVkSW5kZXgsbGFuZ3VhZ2VDb2RlKXtcbiAgICAgICAgICAgICAgICB0aGlzLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS5lZGl0ZWRUcmFuc2xhdGlvbiA9IHRoaXMuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLnRyYW5zbGF0ZWRcbiAgICAgICAgICAgICAgICB0aGlzLiRlbWl0KCdkaXNjYXJkZWQtY2hhbmdlcycpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGFzVW5zYXZlZENoYW5nZXM6IGZ1bmN0aW9uKHNlbGVjdGVkSW5kZXgsIGxhbmd1YWdlQ29kZSl7XG4gICAgICAgICAgICAgICAgcmV0dXJuICh0aGlzLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS50cmFuc2xhdGVkICE9PSB0aGlzLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS5lZGl0ZWRUcmFuc2xhdGlvbilcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkaXNjYXJkQWxsOiBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIGxldCBzZWxmID0gdGhpc1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleGVzQXJyYXkuZm9yRWFjaChmdW5jdGlvbihzZWxlY3RlZEluZGV4KXtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXR0aW5nc1sndHJhbnNsYXRpb24tbGFuZ3VhZ2VzJ10uZm9yRWFjaCggZnVuY3Rpb24oIGxhbmd1YWdlQ29kZSAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLnRyYW5zbGF0ZWQgIT09IHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLmVkaXRlZFRyYW5zbGF0aW9uKSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpc2NhcmRDaGFuZ2VzKHNlbGVjdGVkSW5kZXgsbGFuZ3VhZ2VDb2RlKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICBpZiAoIHRoaXMuJHBhcmVudC5tZXJnaW5nU3RyaW5nID09PSB0cnVlICl7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHBhcmVudC5zZWxlY3RlZFN0cmluZyA9IG51bGxcbiAgICAgICAgICAgICAgICAgICAgbGV0IHByZXZpb3VzbHlIaWdobGlnaHRlZCA9IHRoaXMuaWZyYW1lLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoICd0cnAtY3JlYXRlLXRyYW5zbGF0aW9uLWJsb2NrJyApXG4gICAgICAgICAgICAgICAgICAgIGlmKCBwcmV2aW91c2x5SGlnaGxpZ2h0ZWQubGVuZ3RoID4gMCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IHByZXZpb3VzbHlIaWdobGlnaHRlZC5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c2x5SGlnaGxpZ2h0ZWRbaV0uY2xhc3NMaXN0LnJlbW92ZSgndHJwLWhpZ2hsaWdodCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNseUhpZ2hsaWdodGVkW2ldLmNsYXNzTGlzdC5yZW1vdmUoJ3RycC1jcmVhdGUtdHJhbnNsYXRpb24tYmxvY2snKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHBhcmVudC5tZXJnaW5nU3RyaW5nID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kcGFyZW50Lm1lcmdlRGF0YSA9IFtdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFkZEtleWJvYXJkU2hvcnRjdXRzTGlzdGVuZXIoKXtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIENUUkwgKyBBTFQgKyBaXG4gICAgICAgICAgICAgICAgICAgIGlmICgod2luZG93Lm5hdmlnYXRvci5wbGF0Zm9ybS5tYXRjaChcIk1hY1wiKSA/IGUubWV0YUtleSA6IGUuY3RybEtleSkgJiYgZS5hbHRLZXkgJiYgZS5rZXlDb2RlID09PSA5MCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgndHJwX3RyaWdnZXJfZGlzY2FyZF9hbGxfY2hhbmdlc19ldmVudCcpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIGZhbHNlKTtcblxuICAgICAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCAndHJwX3RyaWdnZXJfZGlzY2FyZF9hbGxfY2hhbmdlc19ldmVudCcsIHRoaXMuZGlzY2FyZEFsbCApXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG48L3NjcmlwdD5cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/language-boxes.vue?vue&type=script&lang=js&\n");
850
 
851
  /***/ }),
852
 
858
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
859
 
860
  "use strict";
861
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _tooltip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tooltip */ \"./assets/src/js/components/tooltip.vue\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n Tooltip: _tooltip__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n },\n props: ['selectedIndexesArray', 'selectedString', 'dictionary', 'settings', 'nonces', 'ajax_url', 'currentLanguage', 'onScreenLanguage', 'iframe', 'currentURL', 'mergingString', 'mergeData', 'editorStrings', 'stringTypes', 'userMeta'],\n data: function data() {\n return {\n 'saveButtonText': this.editorStrings.save_translation,\n 'saveStringsRequestsLeft': 0,\n 'disabledSaveButton': false,\n 'highlightButton': false\n };\n },\n mounted: function mounted() {\n this.addKeyboardShortcutsListener();\n var self = this;\n window.addEventListener('trp_save_translation_help_panel', function () {\n self.highlightButton = true;\n });\n window.addEventListener('trp_help_panel_changed', function () {\n self.highlightButton = false;\n });\n },\n watch: {\n saveStringsRequestsLeft: function saveStringsRequestsLeft(newValue, oldValue) {\n if (newValue > 0) {\n this.disabledSaveButton = true;\n this.saveButtonText = this.editorStrings.saving_translation;\n } else {\n this.disabledSaveButton = false;\n this.saveButtonText = this.editorStrings.save_translation;\n this.showTranslationsSaved();\n }\n }\n },\n methods: {\n save: function save() {\n if (this.mergingString) this.createTranslationBlock();else {\n for (var type in this.stringTypes) {\n this.saveStringType(this.stringTypes[type]);\n }\n }\n\n if (this.saveStringsRequestsLeft === 0) {\n // no saving action was triggered\n this.showTranslationsSaved();\n }\n },\n saveStringType: function saveStringType(typeSlug) {\n this.saveStringsRequestsLeft++;\n var self = this;\n var saveData = {};\n var updateIframeData = {};\n var foundStringsToSave = false; // construct an array of the necessary information\n\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n if (typeSlug === self.dictionary[selectedIndex].type) {\n self.settings['translation-languages'].forEach(function (languageCode) {\n saveData[languageCode] = saveData[languageCode] ? saveData[languageCode] : [];\n updateIframeData[languageCode] = updateIframeData[languageCode] ? updateIframeData[languageCode] : [];\n\n if (self.dictionary[selectedIndex].translationsArray[languageCode] && self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation != self.dictionary[selectedIndex].translationsArray[languageCode].translated) {\n self.dictionary[selectedIndex].translationsArray[languageCode].status = self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation === '' ? 0 : 2;\n self.dictionary[selectedIndex].translationsArray[languageCode].translated = self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation;\n saveData[languageCode].push(self.dictionary[selectedIndex].translationsArray[languageCode]);\n saveData[languageCode][saveData[languageCode].length - 1].original = self.dictionary[selectedIndex].original;\n updateIframeData[languageCode].push(self.dictionary[selectedIndex]);\n foundStringsToSave = true;\n }\n });\n }\n }); // send request to save strings in database\n\n if (foundStringsToSave) {\n var data = new FormData();\n data.append('action', 'trp_save_translations_' + typeSlug);\n data.append('security', this.nonces['savetranslationsnonce' + typeSlug]);\n data.append('strings', JSON.stringify(saveData));\n axios__WEBPACK_IMPORTED_MODULE_0___default.a.post(this.ajax_url, data).then(function (response) {\n if (typeSlug === 'gettext') {\n axios__WEBPACK_IMPORTED_MODULE_0___default.a.get(self.currentURL).then(function (reloadedIframeResponse) {\n self.updateIframe(updateIframeData, reloadedIframeResponse.data);\n self.saveStringsRequestsLeft--;\n });\n } else {\n self.updateIframe(updateIframeData);\n self.saveStringsRequestsLeft--;\n }\n\n self.$emit('translations-saved');\n })[\"catch\"](function (error) {\n console.log(error);\n });\n } else {\n self.saveStringsRequestsLeft--;\n }\n },\n updateIframe: function updateIframe(updateIframeData) {\n var reloadedIframeResponse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (typeof this.iframe === 'undefined') {\n return;\n }\n\n var self = this;\n this.settings['translation-languages'].forEach(function (languageCode) {\n if (updateIframeData[languageCode].length > 0) {\n updateIframeData[languageCode].forEach(function (string) {\n if (self.currentLanguage === languageCode) {\n self.setTextInIframe(string, languageCode, reloadedIframeResponse);\n }\n });\n }\n });\n },\n setTextInIframe: function setTextInIframe(string, languageCode, reloadedIframeResponse) {\n var nodes = this.iframe.querySelectorAll(\"[\" + string.selector + \"='\" + string.dbID + \"']\");\n var textToSet = null;\n\n if (reloadedIframeResponse) {\n var translatedNode = document.createRange().createContextualFragment(reloadedIframeResponse).querySelector(\"[\" + string.selector + \"='\" + string.dbID + \"']\");\n\n if (translatedNode) {\n textToSet = typeof string.attribute === 'undefined' || string.attribute === \"\" ? translatedNode.textContent : translatedNode.getAttribute(string.attribute);\n }\n }\n\n if (textToSet === null) {\n textToSet = string.translationsArray[languageCode].translated === '' ? string.original : string.translationsArray[languageCode].translated;\n }\n\n nodes.forEach(function (node) {\n if (typeof string.attribute === 'undefined' || string.attribute === \"\" || string.attribute === 'innertext') {\n var initialValue = node.textContent;\n textToSet = initialValue.replace(initialValue.trim(), textToSet);\n node.innerHTML = textToSet;\n } else {\n var _initialValue = node.getAttribute(string.attribute);\n\n textToSet = _initialValue.replace(_initialValue.trim(), textToSet);\n node.setAttribute(string.attribute, textToSet);\n\n if (string.attribute === 'src') {\n node.setAttribute('srcset', '');\n }\n }\n });\n },\n createTranslationBlock: function createTranslationBlock() {\n this.saveStringsRequestsLeft++;\n var self = this;\n var saveData = {},\n translation = {},\n original;\n var foundStringsToSave = false;\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n self.settings['translation-languages'].forEach(function (languageCode) {\n saveData[languageCode] = saveData[languageCode] ? saveData[languageCode] : [];\n\n if (self.dictionary[selectedIndex] && self.dictionary[selectedIndex].translationsArray[languageCode]) {\n translation = self.dictionary[selectedIndex].translationsArray[languageCode];\n translation.block_type = self.dictionary[selectedIndex].block_type;\n translation.id = self.dictionary[selectedIndex].dbID;\n translation.original = self.dictionary[selectedIndex].original;\n\n if (self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation != self.dictionary[selectedIndex].translationsArray[languageCode].translated) {\n self.dictionary[selectedIndex].translationsArray[languageCode].translated = self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation;\n if (self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation !== '') self.dictionary[selectedIndex].translationsArray[languageCode].status = 2;\n }\n\n saveData[languageCode].push(translation);\n foundStringsToSave = true;\n }\n });\n original = self.dictionary[selectedIndex].original;\n });\n\n if (foundStringsToSave) {\n var data = new FormData();\n data.append('action', 'trp_create_translation_block');\n data.append('security', this.nonces['mergetbnonce']);\n data.append('language', this.currentLanguage);\n data.append('strings', JSON.stringify(saveData));\n data.append('original', original);\n data.append('all_languages', 'true');\n axios__WEBPACK_IMPORTED_MODULE_0___default.a.post(this.ajax_url, data).then(function (response) {\n self.saveStringsRequestsLeft--;\n self.$parent.mergingString = false;\n var item = self.dictionary[self.selectedIndexesArray[0]]; //update dictionary string ids\n\n Object.keys(item.translationsArray).forEach(function (key) {\n Object.keys(response.data[key]).forEach(function (index) {\n if (key === self.onScreenLanguage) {\n self.dictionary[self.selectedIndexesArray[0]].dbID = response.data[key][index].id;\n }\n\n item.translationsArray[key].id = response.data[key][index].id;\n });\n });\n self.$parent.mergeData = []; //get merged string\n\n var mergedString;\n if (typeof item.translationsArray[self.currentLanguage] !== 'undefined' && item.translationsArray[self.currentLanguage].translated) mergedString = item.translationsArray[self.onScreenLanguage].translated;else mergedString = item.original; //replace HTML in iFrame\n\n var translationBlock = self.iframe.querySelector('.trp-create-translation-block');\n translationBlock.innerHTML = mergedString;\n translationBlock.setAttribute('data-trp-translate-id', item.dbID);\n translationBlock.classList.remove('trp-create-translation-block'); //setup event listener for new block\n\n self.$parent.setupEventListener(translationBlock);\n })[\"catch\"](function (error) {\n self.$parent.mergingString = false;\n console.log(error);\n });\n } else {\n this.saveStringsRequestsLeft--;\n }\n },\n showTranslationsSaved: function showTranslationsSaved() {\n var translationSaved = jQuery('#trp-translation-saved');\n translationSaved.css(\"display\", \"inline\");\n translationSaved.delay(3000).fadeOut(400);\n },\n addKeyboardShortcutsListener: function addKeyboardShortcutsListener() {\n document.addEventListener(\"keydown\", function (e) {\n // CTRL + S\n if ((window.navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey) && e.keyCode === 83) {\n e.preventDefault();\n window.dispatchEvent(new Event('trp_trigger_save_translations_event'));\n }\n }, false);\n window.addEventListener('trp_trigger_save_translations_event', this.save);\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vYXNzZXRzL3NyYy9qcy9jb21wb25lbnRzL3NhdmUtdHJhbnNsYXRpb25zLnZ1ZT85ODU1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBV0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBLEdBREE7QUFFQSxVQUNBLHNCQURBLEVBRUEsZ0JBRkEsRUFHQSxZQUhBLEVBSUEsVUFKQSxFQUtBLFFBTEEsRUFNQSxVQU5BLEVBT0EsaUJBUEEsRUFRQSxrQkFSQSxFQVNBLFFBVEEsRUFVQSxZQVZBLEVBV0EsZUFYQSxFQVlBLFdBWkEsRUFhQSxlQWJBLEVBY0EsYUFkQSxFQWVBLFVBZkEsQ0FGQTtBQW1CQSxNQW5CQSxrQkFtQkE7QUFDQTtBQUNBLDJEQURBO0FBRUEsa0NBRkE7QUFHQSxpQ0FIQTtBQUlBO0FBSkE7QUFNQSxHQTFCQTtBQTJCQSxTQTNCQSxxQkEyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBRkE7QUFHQTtBQUNBO0FBQ0EsS0FGQTtBQUdBLEdBcENBO0FBcUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUhBLE1BR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBWEEsR0FyQ0E7QUFrREE7QUFDQSxRQURBLGtCQUNBO0FBQ0EsOEJBQ0EsOEJBREEsS0FFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FiQTtBQWNBLGtCQWRBLDBCQWNBLFFBZEEsRUFjQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBTEEsQ0FPQTs7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQSxXQWZBO0FBZ0JBO0FBQ0EsT0FuQkEsRUFSQSxDQTZCQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsK0VBQ0EsSUFEQSxDQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUhBO0FBSUEsV0FMQSxNQUtBO0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0EsU0FaQSxXQWFBO0FBQ0E7QUFDQSxTQWZBO0FBZ0JBLE9BdEJBLE1Bc0JBO0FBQ0E7QUFDQTtBQUNBLEtBckVBO0FBc0VBLGdCQXRFQSx3QkFzRUEsZ0JBdEVBLEVBc0VBO0FBQUE7O0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FKQTtBQUtBO0FBQ0EsT0FSQTtBQVNBLEtBcEZBO0FBcUZBLG1CQXJGQSwyQkFxRkEsTUFyRkEsRUFxRkEsWUFyRkEsRUFxRkEsc0JBckZBLEVBcUZBO0FBQ0E7QUFDQTs7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FKQSxNQUlBO0FBQ0E7O0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BYkE7QUFjQSxLQWhIQTtBQWlIQSwwQkFqSEEsb0NBaUhBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUVBLDJHQUNBO0FBQ0E7O0FBRUE7QUFHQTtBQUNBO0FBQ0EsU0F2QkE7QUF5QkE7QUFDQSxPQTNCQTs7QUE2QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLCtFQUNBLElBREEsQ0FDQTtBQUNBO0FBQ0E7QUFDQSxtRUFIQSxDQUtBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQSxhQUxBO0FBTUEsV0FQQTtBQVNBLHNDQWZBLENBaUJBOztBQUNBO0FBRUEsOElBQ0Esd0VBREEsS0FHQSw2QkF2QkEsQ0F5QkE7O0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEVBN0JBLENBK0JBOztBQUNBO0FBQ0EsU0FsQ0EsV0FtQ0E7QUFDQTtBQUNBO0FBQ0EsU0F0Q0E7QUF1Q0EsT0FoREEsTUFnREE7QUFDQTtBQUNBO0FBQ0EsS0F2TUE7QUF3TUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQTVNQTtBQTZNQSxnQ0E3TUEsMENBNk1BO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0EsT0FSQSxFQVFBLEtBUkE7QUFVQTtBQUNBO0FBek5BO0FBbERBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL2Fzc2V0cy9zcmMvanMvY29tcG9uZW50cy9zYXZlLXRyYW5zbGF0aW9ucy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxkaXYgaWQ9XCJ0cnAtc2F2ZS1jb250YWluZXJcIj5cbiAgICAgICAgPHNwYW4gaWQ9XCJ0cnAtdHJhbnNsYXRpb24tc2F2ZWRcIiBzdHlsZT1cImRpc3BsYXk6bm9uZVwiPnt7IGVkaXRvclN0cmluZ3Muc2F2ZWQgfX08L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidHJwLWJ1dHRvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxidXR0b24gaWQ9XCJ0cnAtc2F2ZVwiIDpkaXNhYmxlZD1cImRpc2FibGVkU2F2ZUJ1dHRvblwiIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ1dHRvbi1wcmltYXJ5IHRycC1zYXZlLXN0cmluZ1wiXG4gICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cInsndHJwLWhpZ2hsaWdodC1mb3ItcGFuZWwnIDogaGlnaGxpZ2h0QnV0dG9ufVwiIEBjbGljaz1cInNhdmVcIj57eyBzYXZlQnV0dG9uVGV4dCB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgPHRvb2x0aXAgOnRleHQ9XCJlZGl0b3JTdHJpbmdzLnNhdmVfdGl0bGVfYXR0clwiIGNsYXNzPVwidHJwLXNhdmUtdG9vbHRpcFwiIDplZGl0b3JTdHJpbmdzPVwiZWRpdG9yU3RyaW5nc1wiIDp1c2VyTWV0YUhhbmRsZT1cIidkaXNtaXNzVG9vbHRpcFNhdmUnXCIgOnVzZXJNZXRhPVwidXNlck1ldGFcIj48L3Rvb2x0aXA+XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0PlxuICAgIGltcG9ydCBheGlvcyAgIGZyb20gJ2F4aW9zJ1xuICAgIGltcG9ydCBUb29sdGlwIGZyb20gXCIuL3Rvb2x0aXBcIlxuXG4gICAgZXhwb3J0IGRlZmF1bHR7XG4gICAgICAgIGNvbXBvbmVudHMgOiB7IFRvb2x0aXAgfSxcbiAgICAgICAgcHJvcHM6IFtcbiAgICAgICAgICAgICdzZWxlY3RlZEluZGV4ZXNBcnJheScsXG4gICAgICAgICAgICAnc2VsZWN0ZWRTdHJpbmcnLFxuICAgICAgICAgICAgJ2RpY3Rpb25hcnknLFxuICAgICAgICAgICAgJ3NldHRpbmdzJyxcbiAgICAgICAgICAgICdub25jZXMnLFxuICAgICAgICAgICAgJ2FqYXhfdXJsJyxcbiAgICAgICAgICAgICdjdXJyZW50TGFuZ3VhZ2UnLFxuICAgICAgICAgICAgJ29uU2NyZWVuTGFuZ3VhZ2UnLFxuICAgICAgICAgICAgJ2lmcmFtZScsXG4gICAgICAgICAgICAnY3VycmVudFVSTCcsXG4gICAgICAgICAgICAnbWVyZ2luZ1N0cmluZycsXG4gICAgICAgICAgICAnbWVyZ2VEYXRhJyxcbiAgICAgICAgICAgICdlZGl0b3JTdHJpbmdzJyxcbiAgICAgICAgICAgICdzdHJpbmdUeXBlcycsXG4gICAgICAgICAgICAndXNlck1ldGEnXG4gICAgICAgIF0sXG4gICAgICAgIGRhdGEoKXtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgJ3NhdmVCdXR0b25UZXh0JyAgICAgICAgICAgIDogdGhpcy5lZGl0b3JTdHJpbmdzLnNhdmVfdHJhbnNsYXRpb24sXG4gICAgICAgICAgICAgICAgJ3NhdmVTdHJpbmdzUmVxdWVzdHNMZWZ0JyAgIDogMCxcbiAgICAgICAgICAgICAgICAnZGlzYWJsZWRTYXZlQnV0dG9uJyAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAnaGlnaGxpZ2h0QnV0dG9uJyAgICAgICAgICAgOiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb3VudGVkKCl7XG4gICAgICAgICAgICB0aGlzLmFkZEtleWJvYXJkU2hvcnRjdXRzTGlzdGVuZXIoKVxuICAgICAgICAgICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICd0cnBfc2F2ZV90cmFuc2xhdGlvbl9oZWxwX3BhbmVsJywgZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBzZWxmLmhpZ2hsaWdodEJ1dHRvbiA9IHRydWVcbiAgICAgICAgICAgIH0gKVxuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICd0cnBfaGVscF9wYW5lbF9jaGFuZ2VkJywgZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBzZWxmLmhpZ2hsaWdodEJ1dHRvbiA9IGZhbHNlXG4gICAgICAgICAgICB9IClcbiAgICAgICAgfSxcbiAgICAgICAgd2F0Y2g6e1xuICAgICAgICAgICAgc2F2ZVN0cmluZ3NSZXF1ZXN0c0xlZnQgOiBmdW5jdGlvbiggbmV3VmFsdWUsIG9sZFZhbHVlICl7XG4gICAgICAgICAgICAgICAgaWYgKCBuZXdWYWx1ZSA+IDAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZWRTYXZlQnV0dG9uID0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNhdmVCdXR0b25UZXh0ID0gdGhpcy5lZGl0b3JTdHJpbmdzLnNhdmluZ190cmFuc2xhdGlvblxuICAgICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVkU2F2ZUJ1dHRvbiA9IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2F2ZUJ1dHRvblRleHQgPSB0aGlzLmVkaXRvclN0cmluZ3Muc2F2ZV90cmFuc2xhdGlvblxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1RyYW5zbGF0aW9uc1NhdmVkKClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZHM6e1xuICAgICAgICAgICAgc2F2ZSgpe1xuICAgICAgICAgICAgICAgIGlmICggdGhpcy5tZXJnaW5nU3RyaW5nIClcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUcmFuc2xhdGlvbkJsb2NrKClcbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICggbGV0IHR5cGUgaW4gdGhpcy5zdHJpbmdUeXBlcyApe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zYXZlU3RyaW5nVHlwZSggdGhpcy5zdHJpbmdUeXBlc1t0eXBlXSApXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCB0aGlzLnNhdmVTdHJpbmdzUmVxdWVzdHNMZWZ0ID09PSAwICkge1xuICAgICAgICAgICAgICAgICAgICAvLyBubyBzYXZpbmcgYWN0aW9uIHdhcyB0cmlnZ2VyZWRcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93VHJhbnNsYXRpb25zU2F2ZWQoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYXZlU3RyaW5nVHlwZSggdHlwZVNsdWcgKXtcbiAgICAgICAgICAgICAgICB0aGlzLnNhdmVTdHJpbmdzUmVxdWVzdHNMZWZ0KytcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXNcbiAgICAgICAgICAgICAgICBsZXQgc2F2ZURhdGEgPSB7fVxuICAgICAgICAgICAgICAgIGxldCB1cGRhdGVJZnJhbWVEYXRhICA9IHt9XG4gICAgICAgICAgICAgICAgbGV0IGZvdW5kU3RyaW5nc1RvU2F2ZSA9IGZhbHNlXG5cbiAgICAgICAgICAgICAgICAvLyBjb25zdHJ1Y3QgYW4gYXJyYXkgb2YgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvblxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleGVzQXJyYXkuZm9yRWFjaCggZnVuY3Rpb24oIHNlbGVjdGVkSW5kZXggKXtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlU2x1ZyA9PT0gc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnR5cGUgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNldHRpbmdzWyd0cmFuc2xhdGlvbi1sYW5ndWFnZXMnXS5mb3JFYWNoKCBmdW5jdGlvbiggbGFuZ3VhZ2VDb2RlICApe1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZURhdGFbbGFuZ3VhZ2VDb2RlXSA9ICggc2F2ZURhdGFbbGFuZ3VhZ2VDb2RlXSApID8gc2F2ZURhdGFbbGFuZ3VhZ2VDb2RlXSA6IFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSWZyYW1lRGF0YVtsYW5ndWFnZUNvZGVdID0gKCB1cGRhdGVJZnJhbWVEYXRhW2xhbmd1YWdlQ29kZV0gKSA/IHVwZGF0ZUlmcmFtZURhdGFbbGFuZ3VhZ2VDb2RlXSA6IFtdXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdICYmIChzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS5lZGl0ZWRUcmFuc2xhdGlvbiAhPSBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS50cmFuc2xhdGVkICkgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLnN0YXR1cyA9ICggc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0uZWRpdGVkVHJhbnNsYXRpb24gPT09ICcnICkgPyAwIDogMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS50cmFuc2xhdGVkID0gc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0uZWRpdGVkVHJhbnNsYXRpb25cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRGF0YVtsYW5ndWFnZUNvZGVdLnB1c2goIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZURhdGFbbGFuZ3VhZ2VDb2RlXVtzYXZlRGF0YVtsYW5ndWFnZUNvZGVdLmxlbmd0aCAtIDEgXS5vcmlnaW5hbCA9IHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS5vcmlnaW5hbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJZnJhbWVEYXRhW2xhbmd1YWdlQ29kZV0ucHVzaCggc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdIClcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZFN0cmluZ3NUb1NhdmUgPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICAvLyBzZW5kIHJlcXVlc3QgdG8gc2F2ZSBzdHJpbmdzIGluIGRhdGFiYXNlXG4gICAgICAgICAgICAgICAgaWYgKCBmb3VuZFN0cmluZ3NUb1NhdmUgKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0gbmV3IEZvcm1EYXRhKClcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKCdhY3Rpb24nLCAndHJwX3NhdmVfdHJhbnNsYXRpb25zXycgKyB0eXBlU2x1ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKCdzZWN1cml0eScsIHRoaXMubm9uY2VzWydzYXZldHJhbnNsYXRpb25zbm9uY2UnICsgdHlwZVNsdWddKVxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoJ3N0cmluZ3MnLCBKU09OLnN0cmluZ2lmeShzYXZlRGF0YSkpXG5cbiAgICAgICAgICAgICAgICAgICAgYXhpb3MucG9zdCh0aGlzLmFqYXhfdXJsLCBkYXRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlU2x1ZyA9PT0gJ2dldHRleHQnICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheGlvcy5nZXQoc2VsZi5jdXJyZW50VVJMKS50aGVuKCBmdW5jdGlvbiggcmVsb2FkZWRJZnJhbWVSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi51cGRhdGVJZnJhbWUodXBkYXRlSWZyYW1lRGF0YSwgcmVsb2FkZWRJZnJhbWVSZXNwb25zZS5kYXRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zYXZlU3RyaW5nc1JlcXVlc3RzTGVmdC0tXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZUlmcmFtZSh1cGRhdGVJZnJhbWVEYXRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNhdmVTdHJpbmdzUmVxdWVzdHNMZWZ0LS1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi4kZW1pdCgndHJhbnNsYXRpb25zLXNhdmVkJylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zYXZlU3RyaW5nc1JlcXVlc3RzTGVmdC0tXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVwZGF0ZUlmcmFtZSggdXBkYXRlSWZyYW1lRGF0YSwgcmVsb2FkZWRJZnJhbWVSZXNwb25zZSA9IG51bGwgKXtcbiAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiB0aGlzLmlmcmFtZSA9PT0gJ3VuZGVmaW5lZCcgKXtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBzZWxmID0gdGhpc1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NbJ3RyYW5zbGF0aW9uLWxhbmd1YWdlcyddLmZvckVhY2goIGZ1bmN0aW9uKCBsYW5ndWFnZUNvZGUgICl7XG4gICAgICAgICAgICAgICAgICAgIGlmICggdXBkYXRlSWZyYW1lRGF0YVtsYW5ndWFnZUNvZGVdLmxlbmd0aCA+IDAgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUlmcmFtZURhdGFbbGFuZ3VhZ2VDb2RlXS5mb3JFYWNoKGZ1bmN0aW9uKCBzdHJpbmcgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHNlbGYuY3VycmVudExhbmd1YWdlID09PSBsYW5ndWFnZUNvZGUgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2V0VGV4dEluSWZyYW1lKCBzdHJpbmcsIGxhbmd1YWdlQ29kZSwgcmVsb2FkZWRJZnJhbWVSZXNwb25zZSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0VGV4dEluSWZyYW1lKCBzdHJpbmcsIGxhbmd1YWdlQ29kZSwgcmVsb2FkZWRJZnJhbWVSZXNwb25zZSApe1xuICAgICAgICAgICAgICAgIGxldCBub2RlcyA9IHRoaXMuaWZyYW1lLnF1ZXJ5U2VsZWN0b3JBbGwoIFwiW1wiICsgc3RyaW5nLnNlbGVjdG9yICsgXCI9J1wiICsgc3RyaW5nLmRiSUQgKyBcIiddXCIgKVxuICAgICAgICAgICAgICAgIGxldCB0ZXh0VG9TZXQgPSBudWxsXG4gICAgICAgICAgICAgICAgaWYgKCByZWxvYWRlZElmcmFtZVJlc3BvbnNlICl7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0cmFuc2xhdGVkTm9kZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCkuY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KHJlbG9hZGVkSWZyYW1lUmVzcG9uc2UpLnF1ZXJ5U2VsZWN0b3IoIFwiW1wiICsgc3RyaW5nLnNlbGVjdG9yICsgXCI9J1wiICsgc3RyaW5nLmRiSUQgKyBcIiddXCIgKVxuICAgICAgICAgICAgICAgICAgICBpZiAoIHRyYW5zbGF0ZWROb2RlICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFRvU2V0ID0gKHR5cGVvZiBzdHJpbmcuYXR0cmlidXRlID09PSAndW5kZWZpbmVkJyB8fCBzdHJpbmcuYXR0cmlidXRlID09PSBcIlwiKSA/IHRyYW5zbGF0ZWROb2RlLnRleHRDb250ZW50IDogdHJhbnNsYXRlZE5vZGUuZ2V0QXR0cmlidXRlKHN0cmluZy5hdHRyaWJ1dGUpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCB0ZXh0VG9TZXQgPT09IG51bGwgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRleHRUb1NldCA9ICggc3RyaW5nLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0udHJhbnNsYXRlZCA9PT0gJycgKSA/IHN0cmluZy5vcmlnaW5hbCA6IHN0cmluZy50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLnRyYW5zbGF0ZWRcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKG5vZGUpe1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHN0cmluZy5hdHRyaWJ1dGUgPT09ICd1bmRlZmluZWQnIHx8IHN0cmluZy5hdHRyaWJ1dGUgPT09IFwiXCIgfHwgc3RyaW5nLmF0dHJpYnV0ZSA9PT0gJ2lubmVydGV4dCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbml0aWFsVmFsdWUgPSBub2RlLnRleHRDb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFRvU2V0ID0gaW5pdGlhbFZhbHVlLnJlcGxhY2UoaW5pdGlhbFZhbHVlLnRyaW0oKSwgdGV4dFRvU2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuaW5uZXJIVE1MID0gdGV4dFRvU2V0XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5pdGlhbFZhbHVlID0gbm9kZS5nZXRBdHRyaWJ1dGUoc3RyaW5nLmF0dHJpYnV0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRUb1NldCA9IGluaXRpYWxWYWx1ZS5yZXBsYWNlKGluaXRpYWxWYWx1ZS50cmltKCksIHRleHRUb1NldClcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKHN0cmluZy5hdHRyaWJ1dGUsIHRleHRUb1NldClcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBzdHJpbmcuYXR0cmlidXRlID09PSAnc3JjJyApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCdzcmNzZXQnLCAnJylcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY3JlYXRlVHJhbnNsYXRpb25CbG9jaygpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNhdmVTdHJpbmdzUmVxdWVzdHNMZWZ0KytcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXNcbiAgICAgICAgICAgICAgICBsZXQgc2F2ZURhdGEgPSB7fSwgdHJhbnNsYXRpb24gPSB7fSwgb3JpZ2luYWxcbiAgICAgICAgICAgICAgICBsZXQgZm91bmRTdHJpbmdzVG9TYXZlID0gZmFsc2VcblxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleGVzQXJyYXkuZm9yRWFjaCggZnVuY3Rpb24oIHNlbGVjdGVkSW5kZXggKXtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXR0aW5nc1sndHJhbnNsYXRpb24tbGFuZ3VhZ2VzJ10uZm9yRWFjaCggZnVuY3Rpb24oIGxhbmd1YWdlQ29kZSAgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVEYXRhW2xhbmd1YWdlQ29kZV0gPSAoIHNhdmVEYXRhW2xhbmd1YWdlQ29kZV0gKSA/IHNhdmVEYXRhW2xhbmd1YWdlQ29kZV0gOiBbXVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiggc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdICYmIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdICkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb24gPSBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb24uYmxvY2tfdHlwZSA9IHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS5ibG9ja190eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb24uaWQgICAgICAgICA9IHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS5kYklEXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb24ub3JpZ2luYWwgICA9IHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS5vcmlnaW5hbFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLmVkaXRlZFRyYW5zbGF0aW9uICE9IHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLnRyYW5zbGF0ZWQgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLnRyYW5zbGF0ZWQgPSBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS5lZGl0ZWRUcmFuc2xhdGlvblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS5lZGl0ZWRUcmFuc2xhdGlvbiAhPT0gJycgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0uc3RhdHVzID0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVEYXRhW2xhbmd1YWdlQ29kZV0ucHVzaCggdHJhbnNsYXRpb24gKVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZFN0cmluZ3NUb1NhdmUgPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWwgPSBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0ub3JpZ2luYWxcbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgaWYoIGZvdW5kU3RyaW5nc1RvU2F2ZSApIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBuZXcgRm9ybURhdGEoKVxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoICdhY3Rpb24nICAgICAgICwgJ3RycF9jcmVhdGVfdHJhbnNsYXRpb25fYmxvY2snIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKCAnc2VjdXJpdHknICAgICAsIHRoaXMubm9uY2VzWydtZXJnZXRibm9uY2UnXSApXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCggJ2xhbmd1YWdlJyAgICAgLCB0aGlzLmN1cnJlbnRMYW5ndWFnZSApXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCggJ3N0cmluZ3MnICAgICAgLCBKU09OLnN0cmluZ2lmeSggc2F2ZURhdGEgKSApXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCggJ29yaWdpbmFsJyAgICAgLCBvcmlnaW5hbCApXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCggJ2FsbF9sYW5ndWFnZXMnLCAndHJ1ZScgKVxuXG4gICAgICAgICAgICAgICAgICAgIGF4aW9zLnBvc3QodGhpcy5hamF4X3VybCwgZGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2F2ZVN0cmluZ3NSZXF1ZXN0c0xlZnQtLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuJHBhcmVudC5tZXJnaW5nU3RyaW5nID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbSA9IHNlbGYuZGljdGlvbmFyeVtzZWxmLnNlbGVjdGVkSW5kZXhlc0FycmF5WzBdXVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy91cGRhdGUgZGljdGlvbmFyeSBzdHJpbmcgaWRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoIGl0ZW0udHJhbnNsYXRpb25zQXJyYXkgKS5mb3JFYWNoKCBmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoIHJlc3BvbnNlLmRhdGFba2V5XSApLmZvckVhY2goIGZ1bmN0aW9uKGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGtleSA9PT0gc2VsZi5vblNjcmVlbkxhbmd1YWdlICl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kaWN0aW9uYXJ5W3NlbGYuc2VsZWN0ZWRJbmRleGVzQXJyYXlbMF1dLmRiSUQgPSByZXNwb25zZS5kYXRhW2tleV1baW5kZXhdLmlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnRyYW5zbGF0aW9uc0FycmF5W2tleV0uaWQgPSByZXNwb25zZS5kYXRhW2tleV1baW5kZXhdLmlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuJHBhcmVudC5tZXJnZURhdGEgPSBbXVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9nZXQgbWVyZ2VkIHN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtZXJnZWRTdHJpbmdcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCB0eXBlb2YgaXRlbS50cmFuc2xhdGlvbnNBcnJheVtzZWxmLmN1cnJlbnRMYW5ndWFnZV0gIT09ICd1bmRlZmluZWQnICYmIGl0ZW0udHJhbnNsYXRpb25zQXJyYXlbc2VsZi5jdXJyZW50TGFuZ3VhZ2VdLnRyYW5zbGF0ZWQgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRTdHJpbmcgPSBpdGVtLnRyYW5zbGF0aW9uc0FycmF5W3NlbGYub25TY3JlZW5MYW5ndWFnZV0udHJhbnNsYXRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkU3RyaW5nID0gaXRlbS5vcmlnaW5hbFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9yZXBsYWNlIEhUTUwgaW4gaUZyYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRyYW5zbGF0aW9uQmxvY2sgPSBzZWxmLmlmcmFtZS5xdWVyeVNlbGVjdG9yKCAnLnRycC1jcmVhdGUtdHJhbnNsYXRpb24tYmxvY2snIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25CbG9jay5pbm5lckhUTUwgPSBtZXJnZWRTdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25CbG9jay5zZXRBdHRyaWJ1dGUoICdkYXRhLXRycC10cmFuc2xhdGUtaWQnLCBpdGVtLmRiSUQgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbkJsb2NrLmNsYXNzTGlzdC5yZW1vdmUoICd0cnAtY3JlYXRlLXRyYW5zbGF0aW9uLWJsb2NrJyApXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3NldHVwIGV2ZW50IGxpc3RlbmVyIGZvciBuZXcgYmxvY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLiRwYXJlbnQuc2V0dXBFdmVudExpc3RlbmVyKCB0cmFuc2xhdGlvbkJsb2NrIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi4kcGFyZW50Lm1lcmdpbmdTdHJpbmcgPSBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2F2ZVN0cmluZ3NSZXF1ZXN0c0xlZnQtLVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzaG93VHJhbnNsYXRpb25zU2F2ZWQgOiBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIGxldCB0cmFuc2xhdGlvblNhdmVkID0galF1ZXJ5KCcjdHJwLXRyYW5zbGF0aW9uLXNhdmVkJylcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGlvblNhdmVkLmNzcyhcImRpc3BsYXlcIiwgXCJpbmxpbmVcIilcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGlvblNhdmVkLmRlbGF5KDMwMDApLmZhZGVPdXQoNDAwKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFkZEtleWJvYXJkU2hvcnRjdXRzTGlzdGVuZXIoKXtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBmdW5jdGlvbihlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ1RSTCArIFNcbiAgICAgICAgICAgICAgICAgICAgaWYgKCh3aW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtLm1hdGNoKFwiTWFjXCIpID8gZS5tZXRhS2V5IDogZS5jdHJsS2V5KSAgJiYgZS5rZXlDb2RlID09PSA4Mykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudCggbmV3IEV2ZW50KCAndHJwX3RyaWdnZXJfc2F2ZV90cmFuc2xhdGlvbnNfZXZlbnQnICkgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIGZhbHNlKTtcblxuICAgICAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCAndHJwX3RyaWdnZXJfc2F2ZV90cmFuc2xhdGlvbnNfZXZlbnQnLCB0aGlzLnNhdmUgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICB9XG48L3NjcmlwdD5cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/save-translations.vue?vue&type=script&lang=js&\n");
862
+
863
+ /***/ }),
864
+
865
+ /***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/tooltip.vue?vue&type=script&lang=js&":
866
+ /*!*******************************************************************************************************************************************************************!*\
867
+ !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./assets/src/js/components/tooltip.vue?vue&type=script&lang=js& ***!
868
+ \*******************************************************************************************************************************************************************/
869
+ /*! exports provided: default */
870
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
871
+
872
+ "use strict";
873
+ eval("__webpack_require__.r(__webpack_exports__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: ['text', 'editorStrings', 'userMetaHandle', 'userMeta'],\n methods: {\n dismiss: function dismiss() {\n var self = this;\n document.dispatchEvent(new CustomEvent('trp_update_user_meta', {\n 'detail': {\n 'userMetaKey': self.userMetaHandle,\n 'userMetaValue': true\n }\n }));\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vYXNzZXRzL3NyYy9qcy9jb21wb25lbnRzL3Rvb2x0aXAudnVlPzlhNzIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFXQTtBQUNBLFVBQ0EsTUFEQSxFQUVBLGVBRkEsRUFHQSxnQkFIQSxFQUlBLFVBSkEsQ0FEQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FEQTtBQUVBO0FBRkE7QUFEQTtBQU1BO0FBVEE7QUFQQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvdG9vbHRpcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJ0cnAtdG9vbHRpcC1jb250YWluZXJcIiBzdHlsZT1cInZpc2liaWxpdHk6aGlkZGVuO1wiIHYtaWY9XCIhdGhpcy51c2VyTWV0YVt0aGlzLnVzZXJNZXRhSGFuZGxlXVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLXRvb2x0aXAtdHJpYW5nbGVcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRycC1kaXNtaXNzaWJsZS10b29sdGlwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLWNsb3NlLXRvb2x0aXBcIiBAY2xpY2s9XCJkaXNtaXNzXCIgOnRpdGxlPVwiZWRpdG9yU3RyaW5ncy5kaXNtaXNzX3Rvb2x0aXBfdGl0bGVfYXR0cmlidXRlXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLXRvb2x0aXAtdGV4dFwiPnt7dGV4dH19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIHByb3BzIDogW1xuICAgICAgICAgICAgJ3RleHQnLFxuICAgICAgICAgICAgJ2VkaXRvclN0cmluZ3MnLFxuICAgICAgICAgICAgJ3VzZXJNZXRhSGFuZGxlJyxcbiAgICAgICAgICAgICd1c2VyTWV0YSdcbiAgICAgICAgXSxcbiAgICAgICAgbWV0aG9kcyA6IHtcbiAgICAgICAgICAgIGRpc21pc3MgOiBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIGxldCBzZWxmID0gdGhpc1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoIG5ldyBDdXN0b21FdmVudCggJ3RycF91cGRhdGVfdXNlcl9tZXRhJywge1xuICAgICAgICAgICAgICAgICAgICAnZGV0YWlsJyA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICd1c2VyTWV0YUtleScgOiBzZWxmLnVzZXJNZXRhSGFuZGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXJNZXRhVmFsdWUnIDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gKSApXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG48L3NjcmlwdD4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/tooltip.vue?vue&type=script&lang=js&\n");
874
 
875
  /***/ }),
876
 
906
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
907
 
908
  "use strict";
909
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var select2_dist_js_select2_min_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! select2/dist/js/select2.min.js */ \"./node_modules/select2/dist/js/select2.min.js\");\n/* harmony import */ var select2_dist_js_select2_min_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(select2_dist_js_select2_min_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./assets/src/js/utils.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_language_boxes_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/language-boxes.vue */ \"./assets/src/js/components/language-boxes.vue\");\n/* harmony import */ var _components_save_translations_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/save-translations.vue */ \"./assets/src/js/components/save-translations.vue\");\n/* harmony import */ var _components_hover_actions_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/hover-actions.vue */ \"./assets/src/js/components/hover-actions.vue\");\n/* harmony import */ var _components_extra_content_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/extra-content.vue */ \"./assets/src/js/components/extra-content.vue\");\n/* harmony import */ var _components_editors_navigation_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/editors-navigation.vue */ \"./assets/src/js/components/editors-navigation.vue\");\n/* harmony import */ var he__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! he */ \"./node_modules/he/he.js\");\n/* harmony import */ var he__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(he__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _components_tooltip__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/tooltip */ \"./assets/src/js/components/tooltip.vue\");\n/* harmony import */ var _components_help_panel__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./components/help-panel */ \"./assets/src/js/components/help-panel.vue\");\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n HelpPanel: _components_help_panel__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n Tooltip: _components_tooltip__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n languageBoxes: _components_language_boxes_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n saveTranslations: _components_save_translations_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n hoverActions: _components_hover_actions_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n extraContent: _components_extra_content_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n editorsNavigation: _components_editors_navigation_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n },\n data: function data() {\n return {\n //props\n settings: trp_editor_data.trp_settings,\n languageNames: trp_editor_data.language_names,\n orderedSecondaryLanguages: trp_editor_data.ordered_secondary_languages,\n roles: trp_editor_data.view_as_roles,\n nonces: trp_editor_data.editor_nonces,\n stringGroupOrder: trp_editor_data.string_group_order,\n selectors: trp_editor_data.string_selectors,\n stringTypes: trp_editor_data.string_types,\n dataAttributes: trp_editor_data.data_attributes,\n mergeRules: trp_editor_data.merge_rules,\n editorsNavigation: trp_editor_data.editors_navigation,\n editorStrings: trp_editor_data.trp_localized_strings,\n flagsPath: trp_editor_data.flags_path,\n helpPanelContent: trp_editor_data.help_panel_content,\n //data\n currentLanguage: trp_editor_data.current_language,\n onScreenLanguage: trp_editor_data.on_screen_language,\n currentURL: trp_editor_data.url_to_load,\n urlToLoad: trp_editor_data.url_to_load,\n ajaxUrl: trp_editor_data.ajax_url,\n paidVersion: trp_editor_data.paid_version,\n userMeta: trp_editor_data.user_meta,\n iframe: '',\n dictionary: [],\n selectedString: null,\n selectedIndexesArray: [],\n detectedSelectorAndId: [],\n stringGroups: [],\n mergingString: false,\n mergeData: [],\n showChangesUnsavedMessage: false,\n viewAs: '',\n loading_strings: 0,\n translationNotLoadedYet: false,\n helpPanelOpen: false,\n highlightLanguageSwitcher: false,\n highlightStringList: false\n };\n },\n created: function created() {\n this.settings['default-language-name'] = this.languageNames[this.settings['default-language']]; //set default value for the View As select\n\n var params = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getUrlParameters(this.currentURL);\n if (Object.keys(params).length > 1 && params['trp-view-as']) this.viewAs = params['trp-view-as'];else this.viewAs = 'current_user';\n },\n mounted: function mounted() {\n this.addKeyboardShortcutsListener();\n this.addHelpPanelListeners();\n var self = this; // initialize select2\n\n jQuery('#trp-language-select, #trp-view-as-select').select2({\n width: '100%'\n }); //init strings dropdown\n\n this.stringsDropdownLoading(); // show overlay when select is opened\n\n jQuery('#trp-language-select, #trp-string-categories').on('select2:open', function () {\n jQuery('#trp_select2_overlay').fadeIn('100');\n }).on('select2:close', function () {\n jQuery('#trp_select2_overlay').hide();\n }).on('select2:opening', function (e) {\n /* when we have unsaved changes prevent the strings dropdown from opening so we do not have a disconnect between the textareas and the dropdown */\n if (self.hasUnsavedChanges()) {\n e.preventDefault();\n }\n }); // resize sidebar and consequently the iframe\n\n var previewContainer = jQuery('#trp-preview');\n var total_width = jQuery(window).width();\n jQuery('#trp-controls').resizable({\n start: function start() {\n previewContainer.toggle();\n },\n stop: function stop() {\n previewContainer.toggle();\n },\n handles: 'e',\n minWidth: 327,\n maxWidth: total_width - 20\n }).bind(\"resize\", this.resizeIframe); // resize iframe when resizing window\n\n jQuery(window).resize(function () {\n self.resizeIframe();\n });\n },\n watch: {\n currentLanguage: function currentLanguage(_currentLanguage) {\n var self = this; //grab the correct URL from the iFrame\n\n var newURL = this.iframe.querySelector('link[hreflang=\"' + _currentLanguage.replace('_', '-') + '\"]').getAttribute('href');\n this.currentURL = newURL;\n this.iframe.location = newURL; //reset vue props\n\n this.selectedString = '';\n this.selectedIndexesArray = []; //set strings dropdown to loading state\n\n jQuery('#trp-string-categories').val('').trigger('change');\n this.stringsDropdownLoading();\n this.onScreenLanguage = _currentLanguage;\n\n if (this.settings['default-language'] == this.currentLanguage && this.settings['translation-languages'].length > 1) {\n this.settings['translation-languages'].some(function (language) {\n if (language != self.settings['default-language']) {\n // return the first language not default\n self.onScreenLanguage = language;\n return true;\n }\n });\n }\n },\n currentURL: function currentURL(newUrl, oldUrl) {\n window.history.replaceState(null, null, this.parentURL(newUrl));\n },\n viewAs: function viewAs(role) {\n if (!this.currentURL || !this.iframe) return;\n var url = this.cleanURL(this.currentURL);\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].updateUrlParameter(url, 'trp-edit-translation', 'preview');\n\n if (role == 'current_user') {\n this.iframe.location = url;\n return;\n } //if nonce not available, an update to the Browse as Other Roles add-on is required\n\n\n if (!this.nonces[role]) {\n alert(this.editorStrings.bor_update_notice);\n return;\n }\n\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].updateUrlParameter(url, 'trp-view-as', role);\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].updateUrlParameter(url, 'trp-view-as-nonce', this.nonces[role]);\n this.iframe.location = url;\n },\n selectedString: function selectedString(selectedStringArrayIndex, oldString) {\n if (this.hasUnsavedChanges() || !selectedStringArrayIndex && selectedStringArrayIndex !== 0) return;\n jQuery('#trp-string-categories').val(selectedStringArrayIndex !== null ? selectedStringArrayIndex : '').trigger('change');\n var selectedString = this.dictionary[selectedStringArrayIndex];\n if (!selectedString) return;\n var currentNodes = this.iframe.querySelectorAll(\"[\" + selectedString.selector + \"='\" + selectedString.dbID + \"']\");\n var selectedIndexesArray = []; //when merging we do not have a valid current node, so we just add the fake id\n\n if (currentNodes.length > 0) {\n var self = this;\n var selectors = self.getAllSelectors();\n var nodes = [];\n currentNodes.forEach(function (currentNode) {\n nodes.push(currentNode);\n\n if (currentNode.tagName != \"A\") {\n // include the anchor's translatable attributes\n var anchorParent = currentNode.closest('a');\n\n if (anchorParent != null) {\n nodes.push(anchorParent);\n }\n }\n\n if (currentNode.tagName == \"A\" && currentNode.children.length > 0) {\n // include all the translatable attributes inside the anchor\n var childrenArray = _toConsumableArray(currentNode.children);\n\n childrenArray.forEach(function (child) {\n nodes.push(child);\n });\n }\n\n nodes.forEach(function (node) {\n selectors.forEach(function (selector) {\n var stringId = node.getAttribute(selector);\n\n if (stringId) {\n var found = false;\n var i;\n\n for (i = 0; i < selectedIndexesArray.length; i++) {\n if (typeof self.dictionary[selectedIndexesArray[i]] !== 'undefined' && self.dictionary[selectedIndexesArray[i]].dbID !== 'undefined' && self.dictionary[selectedIndexesArray[i]].dbID === stringId) {\n found = true;\n break;\n }\n }\n\n if (!found) {\n selectedIndexesArray.push(self.getStringIndex(selector, stringId));\n }\n }\n });\n });\n });\n } else selectedIndexesArray.push(selectedStringArrayIndex);\n\n this.selectedIndexesArray = selectedIndexesArray;\n },\n helpPanelOpen: function helpPanelOpen() {\n if (this.userMeta.helpPanelOpened !== true) {\n document.dispatchEvent(new CustomEvent('trp_update_user_meta', {\n 'detail': {\n 'userMetaKey': 'helpPanelOpened',\n 'userMetaValue': true\n }\n }));\n }\n }\n },\n computed: {\n closeURL: function closeURL() {\n return this.cleanURL(this.currentURL);\n }\n },\n methods: {\n iFrameLoaded: function iFrameLoaded() {\n var self = this;\n var iframeElement = document.querySelector('#trp-preview-iframe');\n this.iframe = iframeElement.contentDocument || iframeElement.contentWindow.document; //sync iFrame URL with parent\n\n if (this.currentURL != this.iframe.URL) this.currentURL = this.iframe.URL; //hide iFrame loader\n\n this.iframeLoader('hide');\n self.detectedSelectorAndId = [];\n self.dictionary = [];\n this.scanIframeForStrings();\n window.addEventListener('trp_iframe_page_updated', this.scanIframeForStrings); //event that is fired when the iFrame is navigated\n\n iframeElement.contentWindow.onbeforeunload = function () {\n self.iframeLoader('show');\n self.selectedString = null;\n self.selectedIndexesArray = [];\n self.translationNotLoadedYet = false;\n self.stringsDropdownLoading();\n };\n },\n scanIframeForStrings: function scanIframeForStrings() {\n this.scanForSelector('data-trp-translate-id', 'regular', this.onScreenLanguage);\n this.scanForSelector('data-trpgettextoriginal', 'gettext', this.currentLanguage);\n this.scanForSelector('data-trp-post-slug', 'postslug', this.currentLanguage);\n },\n scanForSelector: function scanForSelector(baseSelector, typeSlug, languageOfIds) {\n this.loading_strings++;\n var self = this;\n var selectors = this.prepareSelectorStrings(baseSelector);\n\n var nodes = _toConsumableArray(this.iframe.querySelectorAll('[' + selectors.join('],[') + ']'));\n\n var stringIdsArray = [],\n nodeData = [],\n nodeEntries = [];\n nodes.forEach(function (node) {\n nodeEntries = self.getNodeInfo(node, baseSelector);\n nodeEntries.forEach(function (entry) {\n // this check ensures that we don't create duplicates when rescanning after ajax complete\n if (!self.alreadyDetected(entry.selector, entry.dbID)) {\n stringIdsArray.push(entry.dbID);\n nodeData.push(entry);\n }\n });\n self.setupEventListener(node);\n }); //unique ids only\n\n stringIdsArray = _toConsumableArray(new Set(stringIdsArray));\n\n if (stringIdsArray.length > 0) {\n var data = new FormData();\n data.append('action', 'trp_get_translations_' + typeSlug);\n data.append('all_languages', 'true');\n data.append('security', this.nonces['gettranslationsnonce' + typeSlug]);\n data.append('language', languageOfIds);\n data.append('string_ids', JSON.stringify(stringIdsArray));\n axios__WEBPACK_IMPORTED_MODULE_2___default.a.post(this.ajaxUrl, data).then(function (response) {\n self.loading_strings--;\n self.addToDictionary(response.data, nodeData);\n })[\"catch\"](function (error) {\n console.log(error);\n });\n } else {\n self.loading_strings--;\n }\n },\n alreadyDetected: function alreadyDetected(selector, dbId) {\n var combined = selector + '=' + dbId;\n\n if (_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].arrayContainsItem(this.detectedSelectorAndId, combined)) {\n return true;\n } else {\n this.detectedSelectorAndId.push(combined);\n return false;\n }\n },\n setupEventListener: function setupEventListener(node) {\n if (node.tagName == 'A' && !node.hasAttribute('data-trpgettextoriginal')) return false;\n var self = this;\n node.addEventListener('mouseenter', self.$refs.hoverActions.showPencilIcon);\n },\n addToDictionary: function addToDictionary(responseData) {\n var nodeInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var self = this;\n\n if (responseData != null) {\n if (nodeInfo) {\n nodeInfo.forEach(function (infoRow, index) {\n responseData.some(function (responseDataRow) {\n if (infoRow.dbID == responseDataRow.dbID) {\n //bring block_type to the top level object\n if (responseDataRow.type != 'gettext' && typeof responseDataRow.block_type == 'undefined') {\n var firstLanguage = self.orderedSecondaryLanguages[0];\n if (typeof responseDataRow.translationsArray[firstLanguage].block_type != 'undefined') responseDataRow.block_type = responseDataRow.translationsArray[firstLanguage].block_type;\n }\n\n nodeInfo[index] = Object.assign({}, responseDataRow, infoRow);\n return true; // a sort of break\n }\n });\n });\n } else {\n nodeInfo = responseData;\n }\n\n this.stringGroups = this.addToStringGroups(nodeInfo);\n this.dictionary = this.dictionary.concat(nodeInfo);\n this.initStringsDropdown();\n }\n },\n addToStringGroups: function addToStringGroups(strings) {\n // see what node groups are found\n var foundStringGroups = this.stringGroups;\n strings.forEach(function (string) {\n if (foundStringGroups.indexOf(string.group) === -1 && (typeof string.blockType === 'undefined' || string.blockType !== '2')) {\n foundStringGroups.push(string.group);\n }\n }); // put the node groups in the order that we want, according to the prop this.stringGroupOrder\n\n var orderedStringGroups = [];\n\n if (this.editorStrings.seo_update_notice != 'seo_pack_update_not_needed') {\n orderedStringGroups.push(this.editorStrings.seo_update_notice);\n }\n\n this.stringGroupOrder.forEach(function (group) {\n if (foundStringGroups.indexOf(group) !== -1) {\n orderedStringGroups.push(group);\n }\n }); // if there were any other string groups that were not in the prop, add them at the end.\n\n foundStringGroups.forEach(function (group) {\n if (orderedStringGroups.indexOf(group) === -1) {\n orderedStringGroups.push(group);\n }\n });\n return orderedStringGroups;\n },\n getStringIndex: function getStringIndex(selector, dbID) {\n var found = null;\n this.dictionary.some(function (string, index) {\n if (string.dbID == dbID && string.selector == selector) {\n found = index;\n return true;\n }\n });\n return found;\n },\n getNodeInfo: function getNodeInfo(node) {\n var baseSelector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var stringId;\n var nodeData = [];\n var selectors = this.prepareSelectorStrings(baseSelector);\n selectors.forEach(function (selector) {\n stringId = node.getAttribute(selector);\n\n if (stringId) {\n var nodeAttribute = selector.replace(baseSelector, '');\n var nodeGroup = node.getAttribute('data-trp-node-group' + nodeAttribute);\n var nodeDescription = node.getAttribute('data-trp-node-description' + nodeAttribute);\n var entry = {\n dbID: stringId,\n selector: selector,\n attribute: nodeAttribute.substr(1) // substr(1) is used to trim prefixing line - ex. -alt will result in alt (no line)\n\n };\n if (nodeGroup) entry.group = nodeGroup;\n if (nodeDescription) entry.description = nodeDescription;\n nodeData.push(entry);\n }\n });\n return nodeData;\n },\n getAllSelectors: function getAllSelectors() {\n var selectors = [];\n var self = this;\n this.dataAttributes.forEach(function (dataAttribute) {\n selectors = selectors.concat(self.prepareSelectorStrings(dataAttribute));\n });\n return selectors;\n },\n prepareSelectorStrings: function prepareSelectorStrings(baseNameSelector) {\n var parsed_selectors = [];\n this.selectors.forEach(function (selectorSuffix, index) {\n parsed_selectors.push(baseNameSelector + selectorSuffix);\n });\n return parsed_selectors;\n },\n parentURL: function parentURL(url) {\n return url.replace('trp-edit-translation=preview', 'trp-edit-translation=true');\n },\n cleanURL: function cleanURL(url) {\n //make removeUrlParameter recursive and only call it once with all the parameters that\n //need to stripped ?\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeUrlParameter(url, 'lang');\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeUrlParameter(url, 'trp-view-as');\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeUrlParameter(url, 'trp-view-as-nonce');\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeUrlParameter(url, 'trp-edit-translation');\n return url;\n },\n showString: function showString(string, type) {\n if (typeof string.blockType !== 'undefined' && string.blockType === '2') {\n // don't show deprecated translation blocks in the dropdown\n return false;\n }\n\n if (type === this.editorStrings.images && typeof string.attribute != 'undefined' && string.attribute == 'src') return true;\n if (typeof string.attribute !== 'undefined' && (string.attribute == 'href' || string.attribute == 'src')) return false;\n if (string.group === type) return true;\n return false;\n },\n initStringsDropdown: function initStringsDropdown() {\n var self = this;\n\n if (!this.isStringsDropdownOpen()) {\n jQuery('#trp-string-categories').select2('destroy');\n jQuery('#trp-string-categories').select2({\n placeholder: self.editorStrings.select_string,\n templateResult: function templateResult(option) {\n var original = he__WEBPACK_IMPORTED_MODULE_8___default.a.decode(option.text.substring(0, 90)) + (option.text.length <= 90 ? '' : '...');\n var description = option.title ? '(' + option.title + ')' : '';\n return jQuery('<div>' + original + '</div><div class=\"string-selector-description\">' + description + '</div>');\n },\n width: '100%'\n }).prop('disabled', false);\n jQuery('#trp_select2_overlay').hide();\n }\n },\n stringsDropdownLoading: function stringsDropdownLoading() {\n jQuery('#trp-string-categories').select2({\n placeholder: this.editorStrings.strings_loading,\n width: '100%'\n }).prop('disabled', true);\n },\n processOptionName: function processOptionName(name, type) {\n if (type == 'Images') return _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getFilename(name);\n return _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].escapeHtml(name);\n },\n isStringsDropdownOpen: function isStringsDropdownOpen() {\n return jQuery('#trp-string-categories').select2('isOpen');\n },\n hasUnsavedChanges: function hasUnsavedChanges() {\n var unsavedChanges = false;\n var self = this;\n\n if (this.selectedIndexesArray.length > 0) {\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n self.settings['translation-languages'].forEach(function (languageCode) {\n if (self.dictionary[selectedIndex] && self.dictionary[selectedIndex].translationsArray[languageCode] && self.dictionary[selectedIndex].translationsArray[languageCode].translated !== self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation) {\n unsavedChanges = true;\n }\n });\n });\n }\n\n this.showChangesUnsavedMessage = unsavedChanges;\n return unsavedChanges;\n },\n iframeLoader: function iframeLoader(status) {\n var loader = document.getElementById('trp-preview-loader');\n if (status == 'show') loader.style.display = 'flex';else if (status == 'hide') loader.style.display = 'none';\n },\n previousString: function previousString() {\n var currentValue = document.getElementById('trp-string-categories').value;\n var newValue = +currentValue - 1;\n\n while (newValue >= 0 && document.querySelectorAll('#trp-string-categories option[value=\"' + newValue + '\"]').length === 0) {\n newValue--;\n }\n\n if (newValue < 0) return;\n this.selectedString = newValue.toString();\n },\n nextString: function nextString() {\n var currentValue = document.getElementById('trp-string-categories').value,\n newValue = 0;\n if (currentValue != '') newValue = +currentValue + 1;\n\n while (newValue < this.dictionary.length && document.querySelectorAll('#trp-string-categories option[value=\"' + newValue + '\"]').length === 0) {\n newValue++;\n }\n\n if (newValue >= this.dictionary.length) {\n return;\n }\n\n this.selectedString = newValue.toString();\n },\n addKeyboardShortcutsListener: function addKeyboardShortcutsListener() {\n document.addEventListener(\"keydown\", function (e) {\n if ((window.navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey) && e.altKey) {\n // CTRL + ALT + right arrow\n if (e.keyCode === 39) {\n e.preventDefault();\n window.dispatchEvent(new Event('trp_trigger_next_string_event'));\n } else {\n // CTRL + ALT + left arrow\n if (e.keyCode === 37) {\n e.preventDefault();\n window.dispatchEvent(new Event('trp_trigger_previous_string_event'));\n }\n }\n }\n }, false);\n window.addEventListener('trp_trigger_next_string_event', this.nextString);\n window.addEventListener('trp_trigger_previous_string_event', this.previousString);\n },\n addHelpPanelListeners: function addHelpPanelListeners() {\n var self = this;\n window.addEventListener('trp_switch_language_help_panel', function () {\n self.highlightLanguageSwitcher = true;\n });\n window.addEventListener('trp_search_string_help_panel', function () {\n self.highlightStringList = true;\n });\n window.addEventListener('trp_help_panel_changed', function () {\n self.highlightLanguageSwitcher = false;\n self.highlightStringList = false;\n });\n document.addEventListener('trp_update_user_meta', this.updateUserMeta);\n },\n resizeIframe: function resizeIframe(event, ui) {\n var total_width = jQuery(window).width();\n var width = jQuery('#trp-controls').width();\n var previewContainer = jQuery('#trp-preview');\n previewContainer.css('right', width);\n previewContainer.css('left', width - 348);\n previewContainer.css('width', total_width - width);\n },\n updateUserMeta: function updateUserMeta(data) {\n var key = data.detail.userMetaKey;\n var value = data.detail.userMetaValue;\n this.userMeta[key] = value;\n var formData = new FormData();\n formData.append('action', 'trp_save_editor_user_meta');\n formData.append('security', this.nonces['trp_editor_user_meta']);\n formData.append('user_meta', JSON.stringify(_defineProperty({}, key, value)));\n axios__WEBPACK_IMPORTED_MODULE_2___default.a.post(this.ajaxUrl, formData)[\"catch\"](function (error) {\n console.log(error);\n });\n }\n },\n //add support for v-model in select2\n directives: {\n select2: {\n inserted: function inserted(el) {\n jQuery(el).on('select2:select', function () {\n var event = new Event('change', {\n bubbles: true,\n cancelable: true\n });\n el.dispatchEvent(event);\n });\n jQuery(el).on('select2:unselect', function () {\n var event = new Event('change', {\n bubbles: true,\n cancelable: true\n });\n el.dispatchEvent(event);\n });\n }\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vYXNzZXRzL3NyYy9qcy9lZGl0b3IudnVlP2E3NjUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTJJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBLDhFQURBO0FBRUEsd0VBRkE7QUFHQSx5RkFIQTtBQUlBLCtGQUpBO0FBS0EsdUZBTEE7QUFNQSx1RkFOQTtBQU9BO0FBUEEsR0FEQTtBQVVBLE1BVkEsa0JBVUE7QUFDQTtBQUNBO0FBQ0EsNENBRkE7QUFHQSxtREFIQTtBQUlBLDRFQUpBO0FBS0EsMENBTEE7QUFNQSwyQ0FOQTtBQU9BLDBEQVBBO0FBUUEsaURBUkE7QUFTQSwrQ0FUQTtBQVVBLHFEQVZBO0FBV0EsNkNBWEE7QUFZQSwyREFaQTtBQWFBLDBEQWJBO0FBY0EsMkNBZEE7QUFlQSwwREFmQTtBQWdCQTtBQUNBLHVEQWpCQTtBQWtCQSwwREFsQkE7QUFtQkEsNkNBbkJBO0FBb0JBLDRDQXBCQTtBQXFCQSx1Q0FyQkE7QUFzQkEsK0NBdEJBO0FBdUJBLHlDQXZCQTtBQXdCQSxnQkF4QkE7QUF5QkEsb0JBekJBO0FBMEJBLDBCQTFCQTtBQTJCQSw4QkEzQkE7QUE0QkEsK0JBNUJBO0FBNkJBLHNCQTdCQTtBQThCQSwwQkE5QkE7QUErQkEsbUJBL0JBO0FBZ0NBLHNDQWhDQTtBQWlDQSxnQkFqQ0E7QUFrQ0Esd0JBbENBO0FBbUNBLG9DQW5DQTtBQW9DQSwwQkFwQ0E7QUFxQ0Esc0NBckNBO0FBc0NBO0FBdENBO0FBd0NBLEdBbkRBO0FBb0RBLFNBcERBLHFCQW9EQTtBQUNBLG1HQURBLENBR0E7O0FBQ0E7QUFFQSxpRUFDQSxvQ0FEQSxLQUdBO0FBQ0EsR0E5REE7QUErREEsU0EvREEscUJBK0RBO0FBQ0E7QUFDQTtBQUNBLG9CQUhBLENBSUE7O0FBQ0E7QUFBQTtBQUFBLE9BTEEsQ0FPQTs7QUFDQSxrQ0FSQSxDQVVBOztBQUNBO0FBQ0E7QUFDQSxLQUZBLEVBRUEsRUFGQSxDQUVBLGVBRkEsRUFFQTtBQUNBO0FBQ0EsS0FKQSxFQUlBLEVBSkEsQ0FJQSxpQkFKQSxFQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQVRBLEVBWEEsQ0FzQkE7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBLE9BREE7QUFFQTtBQUFBO0FBQUEsT0FGQTtBQUdBLGtCQUhBO0FBSUEsbUJBSkE7QUFLQTtBQUxBLE9BTUEsSUFOQSxDQU1BLFFBTkEsRUFNQSxpQkFOQSxFQXpCQSxDQWlDQTs7QUFDQTtBQUNBO0FBQ0EsS0FGQTtBQUdBLEdBcEdBO0FBcUdBO0FBQ0E7QUFDQSxzQkFEQSxDQUVBOztBQUNBO0FBRUE7QUFDQSxvQ0FOQSxDQVFBOztBQUNBO0FBQ0EscUNBVkEsQ0FZQTs7QUFDQTtBQUNBO0FBRUE7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQU5BO0FBT0E7QUFDQSxLQTNCQTtBQTRCQTtBQUNBO0FBQ0EsS0E5QkE7QUErQkE7QUFDQSw0Q0FDQTtBQUVBO0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FYQSxDQWFBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBRUE7QUFDQSxLQXREQTtBQXVEQTtBQUVBLG1HQUNBO0FBRUE7QUFFQTtBQUVBLDJCQUNBO0FBRUE7QUFDQSxvQ0FiQSxDQWVBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQSxhQUZBO0FBSUE7O0FBRUE7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQWZBO0FBZ0JBLFdBakJBO0FBa0JBLFNBdENBO0FBdUNBLE9BNUNBLE1BNkNBOztBQUVBO0FBQ0EsS0F2SEE7QUF3SEE7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FEQTtBQUVBO0FBRkE7QUFEQTtBQU1BO0FBQ0E7QUFqSUEsR0FyR0E7QUF3T0E7QUFDQTtBQUNBO0FBQ0E7QUFIQSxHQXhPQTtBQTZPQTtBQUNBLGdCQURBLDBCQUNBO0FBQ0E7QUFDQTtBQUVBLDBGQUpBLENBTUE7O0FBQ0EsOENBQ0Esa0NBUkEsQ0FVQTs7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBLG9GQWpCQSxDQW1CQTs7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQSxPQVJBO0FBVUEsS0EvQkE7QUFnQ0Esd0JBaENBLGtDQWdDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBcENBO0FBcUNBLG1CQXJDQSwyQkFxQ0EsWUFyQ0EsRUFxQ0EsUUFyQ0EsRUFxQ0EsYUFyQ0EsRUFxQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7O0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBTkE7QUFRQTtBQUNBLE9BWkEsRUFQQSxDQXFCQTs7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLDhFQUNBLElBREEsQ0FDQTtBQUNBO0FBQ0E7QUFDQSxTQUpBLFdBS0E7QUFDQTtBQUNBLFNBUEE7QUFRQSxPQWhCQSxNQWdCQTtBQUNBO0FBQ0E7QUFFQSxLQWhGQTtBQWlGQSxtQkFqRkEsMkJBaUZBLFFBakZBLEVBaUZBLElBakZBLEVBaUZBO0FBQ0E7O0FBQ0E7QUFDQTtBQUNBLE9BRkEsTUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBekZBO0FBMEZBLHNCQTFGQSw4QkEwRkEsSUExRkEsRUEwRkE7QUFDQSxnRkFDQTtBQUVBO0FBRUE7QUFDQSxLQWpHQTtBQWtHQSxtQkFsR0EsMkJBa0dBLFlBbEdBLEVBa0dBO0FBQUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUEseUdBQ0E7QUFDQTs7QUFFQTtBQUNBLDRCQVZBLENBVUE7QUFDQTtBQUNBLGFBZEE7QUFlQSxXQWhCQTtBQWlCQSxTQWxCQSxNQWtCQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQSxLQWpJQTtBQWtJQSxxQkFsSUEsNkJBa0lBLE9BbElBLEVBa0lBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FKQSxFQUpBLENBVUE7O0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FKQSxFQWpCQSxDQXVCQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BSkE7QUFNQTtBQUNBLEtBaktBO0FBa0tBLGtCQWxLQSwwQkFrS0EsUUFsS0EsRUFrS0EsSUFsS0EsRUFrS0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUxBO0FBT0E7QUFDQSxLQTdLQTtBQThLQSxlQTlLQSx1QkE4S0EsSUE5S0EsRUE4S0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7O0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBLDBCQURBO0FBRUEsOEJBRkE7QUFHQSw4Q0FIQSxDQUdBOztBQUhBO0FBTUEseUJBQ0E7QUFFQSwrQkFDQTtBQUVBO0FBQ0E7QUFFQSxPQXpCQTtBQTJCQTtBQUNBLEtBL01BO0FBZ05BLG1CQWhOQSw2QkFnTkE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBLE9BRkE7QUFJQTtBQUNBLEtBek5BO0FBME5BLDBCQTFOQSxrQ0EwTkEsZ0JBMU5BLEVBME5BO0FBQ0E7QUFFQTtBQUNBO0FBQ0EsT0FGQTtBQUlBO0FBQ0EsS0FsT0E7QUFtT0EsYUFuT0EscUJBbU9BLEdBbk9BLEVBbU9BO0FBQ0E7QUFDQSxLQXJPQTtBQXNPQSxZQXRPQSxvQkFzT0EsR0F0T0EsRUFzT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBLEtBL09BO0FBZ1BBLGNBaFBBLHNCQWdQQSxNQWhQQSxFQWdQQSxJQWhQQSxFQWdQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBLHFIQUNBO0FBRUEsZ0hBQ0E7QUFFQSxpQ0FDQTtBQUVBO0FBQ0EsS0EvUEE7QUFnUUEsdUJBaFFBLGlDQWdRQTtBQUNBOztBQUVBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQSxXQUxBO0FBS0E7QUFMQSxXQUtBLElBTEEsQ0FLQSxVQUxBLEVBS0EsS0FMQTtBQU9BO0FBQ0E7QUFDQSxLQS9RQTtBQWdSQSwwQkFoUkEsb0NBZ1JBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQSxLQWxSQTtBQW1SQSxxQkFuUkEsNkJBbVJBLElBblJBLEVBbVJBLElBblJBLEVBbVJBO0FBQ0EsNEJBQ0E7QUFFQTtBQUNBLEtBeFJBO0FBeVJBLHlCQXpSQSxtQ0F5UkE7QUFDQTtBQUNBLEtBM1JBO0FBNFJBLHFCQTVSQSwrQkE0UkE7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUNBLDhEQURBLElBRUEsOEpBRkEsRUFFQTtBQUNBO0FBQ0E7QUFDQSxXQU5BO0FBT0EsU0FSQTtBQVNBOztBQUNBO0FBRUE7QUFDQSxLQTdTQTtBQThTQSxnQkE5U0Esd0JBOFNBLE1BOVNBLEVBOFNBO0FBQ0E7QUFFQSw0QkFDQSw4QkFEQSxLQUVBLHNCQUNBO0FBQ0EsS0FyVEE7QUFzVEEsa0JBdFRBLDRCQXNUQTtBQUNBO0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHdCQUNBO0FBRUE7QUFDQSxLQW5VQTtBQW9VQSxjQXBVQSx3QkFvVUE7QUFDQTtBQUFBO0FBRUEsOEJBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBblZBO0FBb1ZBLGdDQXBWQSwwQ0FvVkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUhBLE1BR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BZEEsRUFjQSxLQWRBO0FBZ0JBO0FBQ0E7QUFDQSxLQXZXQTtBQXdXQSx5QkF4V0EsbUNBd1dBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FGQTtBQUdBO0FBQ0E7QUFDQSxPQUZBO0FBR0E7QUFDQTtBQUNBO0FBQ0EsT0FIQTtBQUtBO0FBQ0EsS0F0WEE7QUF1WEEsZ0JBdlhBLHdCQXVYQSxLQXZYQSxFQXVYQSxFQXZYQSxFQXVYQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBL1hBO0FBZ1lBLGtCQWhZQSwwQkFnWUEsSUFoWUEsRUFnWUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlGQUNBO0FBQ0E7QUFDQSxPQUhBO0FBSUE7QUE3WUEsR0E3T0E7QUE0bkJBO0FBQ0E7QUFDQTtBQUNBLGNBREEsb0JBQ0EsRUFEQSxFQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0EsU0FIQTtBQUtBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBLFNBSEE7QUFJQTtBQVhBO0FBREE7QUE3bkJBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL2Fzc2V0cy9zcmMvanMvZWRpdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgPGRpdiBpZD1cInRycC1lZGl0b3JcIiBjbGFzcz1cIndwLWNvcmUtdWlcIj5cblxuICAgICAgICA8ZGl2IGlkPVwidHJwLWNvbnRyb2xzXCI+XG5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJ0cnAtY2xvc2Utc2F2ZVwiPlxuICAgICAgICAgICAgICAgIDxhIGlkPVwidHJwLWNvbnRyb2xzLWNsb3NlXCIgOmhyZWY9XCJjbG9zZVVSTFwiIDp0aXRsZT1cImVkaXRvclN0cmluZ3MuY2xvc2VcIj48L2E+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ0cnAtaGVscC10b2dnbGUgZGFzaGljb25zIGRhc2hpY29ucy1lZGl0b3ItaGVscFwiIDpjbGFzcz1cInsndHJwLWhlbHAtdG9nZ2xlLW9wZW4nIDogaGVscFBhbmVsT3BlbiwgJ3RycC1oZWxwLXRvZ2dsZS1uZXZlci1vcGVuZWQnIDogIXVzZXJNZXRhLmhlbHBQYW5lbE9wZW5lZCB9XCIgQGNsaWNrPVwiaGVscFBhbmVsT3BlbiA9ICFoZWxwUGFuZWxPcGVuXCIgYXJpYS1leHBhbmRlZD1cInRydWVcIiA6dGl0bGU9XCJlZGl0b3JTdHJpbmdzLnF1aWNrX2ludHJvX3RpdGxlX2F0dHJpYnV0ZVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJ0cnAtc2F2ZS1hbmQtbG9hZGVyLXNwaW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHJwLWFqYXgtbG9hZGVyXCIgdi1zaG93PVwibG9hZGluZ19zdHJpbmdzID4gMFwiIGlkPVwidHJwLXN0cmluZy1zYXZlZC1hamF4LWxvYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cnAtc3Bpbm5lclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c2F2ZS10cmFuc2xhdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c2VsZWN0ZWRJbmRleGVzQXJyYXk9XCJzZWxlY3RlZEluZGV4ZXNBcnJheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmRpY3Rpb25hcnk9XCJkaWN0aW9uYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c2V0dGluZ3M9XCJzZXR0aW5nc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOm5vbmNlcz1cIm5vbmNlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmFqYXhfdXJsPVwiYWpheFVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmN1cnJlbnRMYW5ndWFnZT1cImN1cnJlbnRMYW5ndWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOm9uU2NyZWVuTGFuZ3VhZ2U9XCJvblNjcmVlbkxhbmd1YWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aWZyYW1lPVwiaWZyYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y3VycmVudFVSTD1cImN1cnJlbnRVUkxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptZXJnaW5nU3RyaW5nPVwibWVyZ2luZ1N0cmluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOm1lcmdlRGF0YT1cIm1lcmdlRGF0YVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQHRyYW5zbGF0aW9ucy1zYXZlZD1cInNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2UgPSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmVkaXRvclN0cmluZ3M9XCJlZGl0b3JTdHJpbmdzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c3RyaW5nVHlwZXM9XCJzdHJpbmdUeXBlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOnVzZXJNZXRhPVwidXNlck1ldGFcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvc2F2ZS10cmFuc2xhdGlvbnM+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGhlbHAtcGFuZWwgOmhlbHBQYW5lbENvbnRlbnQ9XCJoZWxwUGFuZWxDb250ZW50XCIgOmVkaXRvclN0cmluZ3M9XCJlZGl0b3JTdHJpbmdzXCIgOmhlbHBQYW5lbE9wZW49XCJoZWxwUGFuZWxPcGVuXCI+PC9oZWxwLXBhbmVsPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLWNvbnRyb2xzLWNvbnRhaW5lclwiIDpjbGFzcz1cInsndHJwLXNob3ctZWRpdG9ycy1uYXZpZ2F0aW9uJyA6IGVkaXRvcnNOYXZpZ2F0aW9uLnNob3csICdoZWxwLXBhbmVsLW9wZW4nOmhlbHBQYW5lbE9wZW4gfVwiPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRycC1jb250cm9scy1zZWN0aW9uXCIgaWQ9XCJ0cnAtY29udHJvbHMtc2VjdGlvbi1maXJzdFwiPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cnAtY29udHJvbHMtc2VjdGlvbi1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwidHJwLWxhbmd1YWdlLXN3aXRjaFwiIDpjbGFzcz1cInsndHJwLWhpZ2hsaWdodC1mb3ItcGFuZWwnOiBoaWdobGlnaHRMYW5ndWFnZVN3aXRjaGVyfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9XCJ0cnAtbGFuZ3VhZ2Utc2VsZWN0XCIgbmFtZT1cImxhbmdcIiB2LW1vZGVsPVwiY3VycmVudExhbmd1YWdlXCIgdi1zZWxlY3QyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHYtZm9yPVwiKGxhbmcsIGxhbmdJbmRleCkgaW4gbGFuZ3VhZ2VOYW1lc1wiIDp2YWx1ZT1cImxhbmdJbmRleFwiPnt7bGFuZ319PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cInRycC1zdHJpbmctbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgOmNsYXNzPVwieyd0cnAtaGlnaGxpZ2h0LWZvci1wYW5lbCc6IGhpZ2hsaWdodFN0cmluZ0xpc3R9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9XCJ0cnAtc3RyaW5nLWNhdGVnb3JpZXNcIiB2LW1vZGVsPVwic2VsZWN0ZWRTdHJpbmdcIiB2LXNlbGVjdDI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0Z3JvdXAgdi1mb3I9XCIoZ3JvdXApIGluIHN0cmluZ0dyb3Vwc1wiIDpsYWJlbD1cImdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2LWZvcj1cIihzdHJpbmcsIGluZGV4KSBpbiBkaWN0aW9uYXJ5XCIgOnZhbHVlPVwiaW5kZXhcIiB2LWlmPVwic2hvd1N0cmluZyggc3RyaW5nLCBncm91cCApXCIgOnRpdGxlPVwic3RyaW5nLmRlc2NyaXB0aW9uXCIgOmRhdGEtZGF0YWJhc2UtaWQ9XCJzdHJpbmcuZGJJRFwiIDpkYXRhLWdyb3VwPVwic3RyaW5nLmdyb3VwXCI+e3sgcHJvY2Vzc09wdGlvbk5hbWUoIHN0cmluZy5vcmlnaW5hbCwgZ3JvdXAgKSB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRncm91cD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cInRycC1uZXh0LXByZXZpb3VzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRycC1idXR0b24tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlkPVwidHJwLXByZXZpb3VzXCIgY2xhc3M9XCJ0cnAtbmV4dC1wcmV2aW91cy1idXR0b25zIGJ1dHRvblwiIHYtb246Y2xpY2s9XCJwcmV2aW91c1N0cmluZygpXCI+PHNwYW4+JmxhcXVvOzwvc3Bhbj4ge3sgZWRpdG9yU3RyaW5ncy5wcmV2aW91cyB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dG9vbHRpcCA6dGV4dD1cImVkaXRvclN0cmluZ3MucHJldmlvdXNfdGl0bGVfYXR0clwiIGNsYXNzPVwidHJwLXByZXZpb3VzLXRvb2x0aXBcIiA6ZWRpdG9yU3RyaW5ncz1cImVkaXRvclN0cmluZ3NcIiA6dXNlck1ldGFIYW5kbGU9XCInZGlzbWlzc1Rvb2x0aXBQcmV2aW91cydcIiA6dXNlck1ldGE9XCJ1c2VyTWV0YVwiPjwvdG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLWJ1dHRvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJ0cnAtbmV4dFwiIGNsYXNzPVwidHJwLW5leHQtcHJldmlvdXMtYnV0dG9ucyBidXR0b25cIiB2LW9uOmNsaWNrPVwibmV4dFN0cmluZygpXCI+e3sgZWRpdG9yU3RyaW5ncy5uZXh0IH19IDxzcGFuPiZyYXF1bzs8L3NwYW4+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0b29sdGlwIDp0ZXh0PVwiZWRpdG9yU3RyaW5ncy5uZXh0X3RpdGxlX2F0dHJcIiBjbGFzcz1cInRycC1uZXh0LXRvb2x0aXBcIiA6ZWRpdG9yU3RyaW5ncz1cImVkaXRvclN0cmluZ3NcIiA6dXNlck1ldGFIYW5kbGU9XCInZGlzbWlzc1Rvb2x0aXBOZXh0J1wiIDp1c2VyTWV0YT1cInVzZXJNZXRhXCI+PC90b29sdGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJ0cnAtdmlldy1hc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJ0cnAtdmlldy1hcy1kZXNjcmlwdGlvblwiPnt7IGVkaXRvclN0cmluZ3Mudmlld19hcyB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9XCJ0cnAtdmlldy1hcy1zZWxlY3RcIiB2LW1vZGVsPVwidmlld0FzXCIgdi1zZWxlY3QyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHYtZm9yPVwiKHJvbGUsIHJvbGVJbmRleCkgaW4gcm9sZXNcIiA6dmFsdWU9XCJyb2xlXCIgOmRpc2FibGVkPVwiIXJvbGVcIiA6dGl0bGU9XCIhcm9sZSA/IGVkaXRvclN0cmluZ3Mudmlld19hc19wcm8gOiAnJ1wiPnt7cm9sZUluZGV4fX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRycC1jb250cm9scy1zZWN0aW9uXCIgdi1zaG93PVwic2VsZWN0ZWRTdHJpbmcgIT09IG51bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhbmd1YWdlLWJveGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOnNlbGVjdGVkSW5kZXhlc0FycmF5PVwic2VsZWN0ZWRJbmRleGVzQXJyYXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpkaWN0aW9uYXJ5PVwiZGljdGlvbmFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmN1cnJlbnRMYW5ndWFnZT1cImN1cnJlbnRMYW5ndWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOm9uU2NyZWVuTGFuZ3VhZ2U9XCJvblNjcmVlbkxhbmd1YWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bGFuZ3VhZ2VOYW1lcz1cImxhbmd1YWdlTmFtZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzZXR0aW5ncz1cInNldHRpbmdzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZT1cInNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBkaXNjYXJkZWQtY2hhbmdlcz1cImhhc1Vuc2F2ZWRDaGFuZ2VzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDplZGl0b3JTdHJpbmdzPVwiZWRpdG9yU3RyaW5nc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmZsYWdzUGF0aD1cImZsYWdzUGF0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmlmcmFtZT1cImlmcmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOm5vbmNlcz1cIm5vbmNlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmFqYXhfdXJsPVwiYWpheFVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOnVzZXJNZXRhPVwidXNlck1ldGFcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvbGFuZ3VhZ2UtYm94ZXM+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZXh0cmEtY29udGVudCA6bGFuZ3VhZ2VOYW1lcz1cImxhbmd1YWdlTmFtZXNcIiA6ZWRpdG9yU3RyaW5ncz1cImVkaXRvclN0cmluZ3NcIiA6cGFpZFZlcnNpb249XCJwYWlkVmVyc2lvblwiPjwvZXh0cmEtY29udGVudD5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cnAtY29udHJvbHMtc2VjdGlvblwiIHYtc2hvdz1cInRyYW5zbGF0aW9uTm90TG9hZGVkWWV0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJ0cnAtdHJhbnNsYXRpb24tbm90LXJlYWR5LXNlY3Rpb25cIiBjbGFzcz1cInRycC1jb250cm9scy1zZWN0aW9uLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIHYtaHRtbD1cImVkaXRvclN0cmluZ3MudHJhbnNsYXRpb25fbm90X2xvYWRlZF95ZXRcIj48L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxlZGl0b3JzLW5hdmlnYXRpb24gOmVkaXRvcnNOYXZpZ2F0aW9uPVwiZWRpdG9yc05hdmlnYXRpb25cIiA6c2VsZWN0ZWRUYWI9XCIndmlzdWFsZWRpdG9yJ1wiPjwvZWRpdG9ycy1uYXZpZ2F0aW9uPlxuXG4gICAgICAgICAgICA8ZGl2IGlkPVwidHJwX3NlbGVjdDJfb3ZlcmxheVwiPjwvZGl2PlxuXG4gICAgICAgICAgICA8aG92ZXItYWN0aW9uc1xuICAgICAgICAgICAgICAgIHJlZj1cImhvdmVyQWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgOmRpY3Rpb25hcnk9XCJkaWN0aW9uYXJ5XCJcbiAgICAgICAgICAgICAgICA6c2V0dGluZ3M9XCJzZXR0aW5nc1wiXG4gICAgICAgICAgICAgICAgOmlmcmFtZT1cImlmcmFtZVwiXG4gICAgICAgICAgICAgICAgOmRhdGFBdHRyaWJ1dGVzPVwiZGF0YUF0dHJpYnV0ZXNcIlxuICAgICAgICAgICAgICAgIDptZXJnZVJ1bGVzPVwibWVyZ2VSdWxlc1wiXG4gICAgICAgICAgICAgICAgOm5vbmNlcz1cIm5vbmNlc1wiXG4gICAgICAgICAgICAgICAgOmFqYXhfdXJsPVwiYWpheFVybFwiXG4gICAgICAgICAgICAgICAgOm1lcmdlRGF0YT1cIm1lcmdlRGF0YVwiXG4gICAgICAgICAgICAgICAgOmVkaXRvclN0cmluZ3M9XCJlZGl0b3JTdHJpbmdzXCJcbiAgICAgICAgICAgICAgICA6Y3VycmVudExhbmd1YWdlPVwiY3VycmVudExhbmd1YWdlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvaG92ZXItYWN0aW9ucz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBpZD1cInRycC1wcmV2aWV3XCI+XG4gICAgICAgICAgICA8aWZyYW1lIGlkPVwidHJwLXByZXZpZXctaWZyYW1lXCIgOnNyYz1cInVybFRvTG9hZFwiIHYtb246bG9hZD1cImlGcmFtZUxvYWRlZFwiPjwvaWZyYW1lPlxuXG4gICAgICAgICAgICA8ZGl2IGlkPVwidHJwLXByZXZpZXctbG9hZGVyXCIgY2xhc3M9XCJ0cnAtbG9hZGluZy1zY3JlZW5cIj5cbiAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwidHJwLWxvYWRlclwiIHdpZHRoPVwiNjVweFwiIGhlaWdodD1cIjY1cHhcIiB2aWV3Qm94PVwiMCAwIDY2IDY2XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPVwidHJwLWNpcmNsZVwiIGZpbGw9XCJub25lXCIgc3Ryb2tlLXdpZHRoPVwiNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBjeD1cIjMzXCIgY3k9XCIzM1wiIHI9XCIzMFwiPjwvY2lyY2xlPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgICBpbXBvcnQgJ3NlbGVjdDIvZGlzdC9qcy9zZWxlY3QyLm1pbi5qcydcbiAgICBpbXBvcnQgdXRpbHMgICAgICAgICAgICAgZnJvbSAnLi91dGlscydcbiAgICBpbXBvcnQgYXhpb3MgICAgICAgICAgICAgZnJvbSAnYXhpb3MnXG4gICAgaW1wb3J0IGxhbmd1YWdlQm94ZXMgICAgIGZyb20gJy4vY29tcG9uZW50cy9sYW5ndWFnZS1ib3hlcy52dWUnXG4gICAgaW1wb3J0IHNhdmVUcmFuc2xhdGlvbnMgIGZyb20gJy4vY29tcG9uZW50cy9zYXZlLXRyYW5zbGF0aW9ucy52dWUnXG4gICAgaW1wb3J0IGhvdmVyQWN0aW9ucyAgICAgIGZyb20gJy4vY29tcG9uZW50cy9ob3Zlci1hY3Rpb25zLnZ1ZSdcbiAgICBpbXBvcnQgZXh0cmFDb250ZW50ICAgICAgZnJvbSAnLi9jb21wb25lbnRzL2V4dHJhLWNvbnRlbnQudnVlJ1xuICAgIGltcG9ydCBlZGl0b3JzTmF2aWdhdGlvbiBmcm9tICcuL2NvbXBvbmVudHMvZWRpdG9ycy1uYXZpZ2F0aW9uLnZ1ZSdcbiAgICBpbXBvcnQgaGUgICAgICAgICAgICAgICAgZnJvbSAnaGUnXG4gICAgaW1wb3J0IFRvb2x0aXAgICAgICAgICAgIGZyb20gXCIuL2NvbXBvbmVudHMvdG9vbHRpcFwiXG4gICAgaW1wb3J0IEhlbHBQYW5lbCAgICAgICAgIGZyb20gXCIuL2NvbXBvbmVudHMvaGVscC1wYW5lbFwiXG5cbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIGNvbXBvbmVudHM6e1xuICAgICAgICAgICAgSGVscFBhbmVsLFxuICAgICAgICAgICAgVG9vbHRpcCxcbiAgICAgICAgICAgIGxhbmd1YWdlQm94ZXMsXG4gICAgICAgICAgICBzYXZlVHJhbnNsYXRpb25zLFxuICAgICAgICAgICAgaG92ZXJBY3Rpb25zLFxuICAgICAgICAgICAgZXh0cmFDb250ZW50LFxuICAgICAgICAgICAgZWRpdG9yc05hdmlnYXRpb25cbiAgICAgICAgfSxcbiAgICAgICAgZGF0YSgpe1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAvL3Byb3BzXG4gICAgICAgICAgICAgICAgc2V0dGluZ3MgICAgICAgICAgICAgICAgICA6IHRycF9lZGl0b3JfZGF0YS50cnBfc2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VOYW1lcyAgICAgICAgICAgICA6IHRycF9lZGl0b3JfZGF0YS5sYW5ndWFnZV9uYW1lcyxcbiAgICAgICAgICAgICAgICBvcmRlcmVkU2Vjb25kYXJ5TGFuZ3VhZ2VzIDogdHJwX2VkaXRvcl9kYXRhLm9yZGVyZWRfc2Vjb25kYXJ5X2xhbmd1YWdlcyxcbiAgICAgICAgICAgICAgICByb2xlcyAgICAgICAgICAgICAgICAgICAgIDogdHJwX2VkaXRvcl9kYXRhLnZpZXdfYXNfcm9sZXMsXG4gICAgICAgICAgICAgICAgbm9uY2VzICAgICAgICAgICAgICAgICAgICA6IHRycF9lZGl0b3JfZGF0YS5lZGl0b3Jfbm9uY2VzLFxuICAgICAgICAgICAgICAgIHN0cmluZ0dyb3VwT3JkZXIgICAgICAgICAgOiB0cnBfZWRpdG9yX2RhdGEuc3RyaW5nX2dyb3VwX29yZGVyLFxuICAgICAgICAgICAgICAgIHNlbGVjdG9ycyAgICAgICAgICAgICAgICAgOiB0cnBfZWRpdG9yX2RhdGEuc3RyaW5nX3NlbGVjdG9ycyxcbiAgICAgICAgICAgICAgICBzdHJpbmdUeXBlcyAgICAgICAgICAgICAgIDogdHJwX2VkaXRvcl9kYXRhLnN0cmluZ190eXBlcyxcbiAgICAgICAgICAgICAgICBkYXRhQXR0cmlidXRlcyAgICAgICAgICAgIDogdHJwX2VkaXRvcl9kYXRhLmRhdGFfYXR0cmlidXRlcyxcbiAgICAgICAgICAgICAgICBtZXJnZVJ1bGVzICAgICAgICAgICAgICAgIDogdHJwX2VkaXRvcl9kYXRhLm1lcmdlX3J1bGVzLFxuICAgICAgICAgICAgICAgIGVkaXRvcnNOYXZpZ2F0aW9uICAgICAgICAgOiB0cnBfZWRpdG9yX2RhdGEuZWRpdG9yc19uYXZpZ2F0aW9uLFxuICAgICAgICAgICAgICAgIGVkaXRvclN0cmluZ3MgICAgICAgICAgICAgOiB0cnBfZWRpdG9yX2RhdGEudHJwX2xvY2FsaXplZF9zdHJpbmdzLFxuICAgICAgICAgICAgICAgIGZsYWdzUGF0aCAgICAgICAgICAgICAgICAgOiB0cnBfZWRpdG9yX2RhdGEuZmxhZ3NfcGF0aCxcbiAgICAgICAgICAgICAgICBoZWxwUGFuZWxDb250ZW50ICAgICAgICAgIDogdHJwX2VkaXRvcl9kYXRhLmhlbHBfcGFuZWxfY29udGVudCxcbiAgICAgICAgICAgICAgICAvL2RhdGFcbiAgICAgICAgICAgICAgICBjdXJyZW50TGFuZ3VhZ2UgICAgICAgICAgIDogdHJwX2VkaXRvcl9kYXRhLmN1cnJlbnRfbGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgb25TY3JlZW5MYW5ndWFnZSAgICAgICAgICA6IHRycF9lZGl0b3JfZGF0YS5vbl9zY3JlZW5fbGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgY3VycmVudFVSTCAgICAgICAgICAgICAgICA6IHRycF9lZGl0b3JfZGF0YS51cmxfdG9fbG9hZCxcbiAgICAgICAgICAgICAgICB1cmxUb0xvYWQgICAgICAgICAgICAgICAgIDogdHJwX2VkaXRvcl9kYXRhLnVybF90b19sb2FkLFxuICAgICAgICAgICAgICAgIGFqYXhVcmwgICAgICAgICAgICAgICAgICAgOiB0cnBfZWRpdG9yX2RhdGEuYWpheF91cmwsXG4gICAgICAgICAgICAgICAgcGFpZFZlcnNpb24gICAgICAgICAgICAgICA6IHRycF9lZGl0b3JfZGF0YS5wYWlkX3ZlcnNpb24sXG4gICAgICAgICAgICAgICAgdXNlck1ldGEgICAgICAgICAgICAgICAgICA6IHRycF9lZGl0b3JfZGF0YS51c2VyX21ldGEsXG4gICAgICAgICAgICAgICAgaWZyYW1lICAgICAgICAgICAgICAgICAgICA6ICcnLFxuICAgICAgICAgICAgICAgIGRpY3Rpb25hcnkgICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFN0cmluZyAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEluZGV4ZXNBcnJheSAgICAgIDogW10sXG4gICAgICAgICAgICAgICAgZGV0ZWN0ZWRTZWxlY3RvckFuZElkICAgICA6IFtdLFxuICAgICAgICAgICAgICAgIHN0cmluZ0dyb3VwcyAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgICAgICAgICBtZXJnaW5nU3RyaW5nICAgICAgICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgICAgICAgbWVyZ2VEYXRhICAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgICAgIHNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2UgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB2aWV3QXMgICAgICAgICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICAgICAgbG9hZGluZ19zdHJpbmdzICAgICAgICAgICA6IDAsXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRpb25Ob3RMb2FkZWRZZXQgICA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGhlbHBQYW5lbE9wZW4gICAgICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBoaWdobGlnaHRMYW5ndWFnZVN3aXRjaGVyIDogZmFsc2UsXG4gICAgICAgICAgICAgICAgaGlnaGxpZ2h0U3RyaW5nTGlzdCAgICAgICA6IGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNyZWF0ZWQoKXtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NbJ2RlZmF1bHQtbGFuZ3VhZ2UtbmFtZSddID0gdGhpcy5sYW5ndWFnZU5hbWVzWyB0aGlzLnNldHRpbmdzWydkZWZhdWx0LWxhbmd1YWdlJ10gXVxuXG4gICAgICAgICAgICAvL3NldCBkZWZhdWx0IHZhbHVlIGZvciB0aGUgVmlldyBBcyBzZWxlY3RcbiAgICAgICAgICAgIGxldCBwYXJhbXMgPSB1dGlscy5nZXRVcmxQYXJhbWV0ZXJzKCB0aGlzLmN1cnJlbnRVUkwgKVxuXG4gICAgICAgICAgICBpZiggT2JqZWN0LmtleXMocGFyYW1zKS5sZW5ndGggPiAxICYmIHBhcmFtc1sndHJwLXZpZXctYXMnXSApXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3QXMgPSBwYXJhbXNbJ3RycC12aWV3LWFzJ11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdBcyA9ICdjdXJyZW50X3VzZXInXG4gICAgICAgIH0sXG4gICAgICAgIG1vdW50ZWQoKXtcbiAgICAgICAgICAgIHRoaXMuYWRkS2V5Ym9hcmRTaG9ydGN1dHNMaXN0ZW5lcigpXG4gICAgICAgICAgICB0aGlzLmFkZEhlbHBQYW5lbExpc3RlbmVycygpXG4gICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXNcbiAgICAgICAgICAgIC8vIGluaXRpYWxpemUgc2VsZWN0MlxuICAgICAgICAgICAgalF1ZXJ5KCAnI3RycC1sYW5ndWFnZS1zZWxlY3QsICN0cnAtdmlldy1hcy1zZWxlY3QnICkuc2VsZWN0MiggeyB3aWR0aCA6ICcxMDAlJyB9KVxuXG4gICAgICAgICAgICAvL2luaXQgc3RyaW5ncyBkcm9wZG93blxuICAgICAgICAgICAgdGhpcy5zdHJpbmdzRHJvcGRvd25Mb2FkaW5nKClcblxuICAgICAgICAgICAgLy8gc2hvdyBvdmVybGF5IHdoZW4gc2VsZWN0IGlzIG9wZW5lZFxuICAgICAgICAgICAgalF1ZXJ5KCAnI3RycC1sYW5ndWFnZS1zZWxlY3QsICN0cnAtc3RyaW5nLWNhdGVnb3JpZXMnICkub24oICdzZWxlY3QyOm9wZW4nLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBqUXVlcnkoICcjdHJwX3NlbGVjdDJfb3ZlcmxheScgKS5mYWRlSW4oICcxMDAnIClcbiAgICAgICAgICAgIH0pLm9uKCAnc2VsZWN0MjpjbG9zZScsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGpRdWVyeSggJyN0cnBfc2VsZWN0Ml9vdmVybGF5JyApLmhpZGUoKVxuICAgICAgICAgICAgfSkub24oICdzZWxlY3QyOm9wZW5pbmcnLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgLyogd2hlbiB3ZSBoYXZlIHVuc2F2ZWQgY2hhbmdlcyBwcmV2ZW50IHRoZSBzdHJpbmdzIGRyb3Bkb3duIGZyb20gb3BlbmluZyBzbyB3ZSBkbyBub3QgaGF2ZSBhIGRpc2Nvbm5lY3QgYmV0d2VlbiB0aGUgdGV4dGFyZWFzIGFuZCB0aGUgZHJvcGRvd24gKi9cbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5oYXNVbnNhdmVkQ2hhbmdlcygpKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIC8vIHJlc2l6ZSBzaWRlYmFyIGFuZCBjb25zZXF1ZW50bHkgdGhlIGlmcmFtZVxuICAgICAgICAgICAgbGV0IHByZXZpZXdDb250YWluZXIgPSBqUXVlcnkoICcjdHJwLXByZXZpZXcnICk7XG4gICAgICAgICAgICBsZXQgdG90YWxfd2lkdGggPSBqUXVlcnkod2luZG93KS53aWR0aCgpO1xuICAgICAgICAgICAgalF1ZXJ5KCAnI3RycC1jb250cm9scycgKS5yZXNpemFibGUoe1xuICAgICAgICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbiggKSB7IHByZXZpZXdDb250YWluZXIudG9nZ2xlKCk7IH0sXG4gICAgICAgICAgICAgICAgc3RvcDogZnVuY3Rpb24oICkgeyBwcmV2aWV3Q29udGFpbmVyLnRvZ2dsZSgpOyB9LFxuICAgICAgICAgICAgICAgIGhhbmRsZXM6ICdlJyxcbiAgICAgICAgICAgICAgICBtaW5XaWR0aDogMzI3LFxuICAgICAgICAgICAgICAgIG1heFdpZHRoOiB0b3RhbF93aWR0aCAtIDIwXG4gICAgICAgICAgICB9KS5iaW5kKCBcInJlc2l6ZVwiLCB0aGlzLnJlc2l6ZUlmcmFtZSApO1xuXG4gICAgICAgICAgICAvLyByZXNpemUgaWZyYW1lIHdoZW4gcmVzaXppbmcgd2luZG93XG4gICAgICAgICAgICBqUXVlcnkoIHdpbmRvdyApLnJlc2l6ZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5yZXNpemVJZnJhbWUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICB3YXRjaDoge1xuICAgICAgICAgICAgY3VycmVudExhbmd1YWdlOiBmdW5jdGlvbiggY3VycmVudExhbmd1YWdlICkge1xuICAgICAgICAgICAgICAgIGxldCBzZWxmID0gdGhpc1xuICAgICAgICAgICAgICAgIC8vZ3JhYiB0aGUgY29ycmVjdCBVUkwgZnJvbSB0aGUgaUZyYW1lXG4gICAgICAgICAgICAgICAgbGV0IG5ld1VSTCA9IHRoaXMuaWZyYW1lLnF1ZXJ5U2VsZWN0b3IoICdsaW5rW2hyZWZsYW5nPVwiJyArIGN1cnJlbnRMYW5ndWFnZS5yZXBsYWNlKCAnXycsICctJyApICsnXCJdJyApLmdldEF0dHJpYnV0ZSgnaHJlZicpXG5cbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRVUkwgICAgICAgICAgID0gbmV3VVJMXG4gICAgICAgICAgICAgICAgdGhpcy5pZnJhbWUubG9jYXRpb24gICAgICA9IG5ld1VSTFxuXG4gICAgICAgICAgICAgICAgLy9yZXNldCB2dWUgcHJvcHNcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkU3RyaW5nICAgICAgID0gJydcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXhlc0FycmF5ID0gW11cblxuICAgICAgICAgICAgICAgIC8vc2V0IHN0cmluZ3MgZHJvcGRvd24gdG8gbG9hZGluZyBzdGF0ZVxuICAgICAgICAgICAgICAgIGpRdWVyeSgnI3RycC1zdHJpbmctY2F0ZWdvcmllcycpLnZhbCgnJykudHJpZ2dlcignY2hhbmdlJylcbiAgICAgICAgICAgICAgICB0aGlzLnN0cmluZ3NEcm9wZG93bkxvYWRpbmcoKVxuXG4gICAgICAgICAgICAgICAgdGhpcy5vblNjcmVlbkxhbmd1YWdlID0gY3VycmVudExhbmd1YWdlXG4gICAgICAgICAgICAgICAgaWYoIHRoaXMuc2V0dGluZ3NbJ2RlZmF1bHQtbGFuZ3VhZ2UnXSA9PSB0aGlzLmN1cnJlbnRMYW5ndWFnZSAmJiB0aGlzLnNldHRpbmdzWyd0cmFuc2xhdGlvbi1sYW5ndWFnZXMnXS5sZW5ndGggPiAxICl7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NbJ3RyYW5zbGF0aW9uLWxhbmd1YWdlcyddLnNvbWUoZnVuY3Rpb24obGFuZ3VhZ2Upe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBsYW5ndWFnZSAhPSBzZWxmLnNldHRpbmdzWydkZWZhdWx0LWxhbmd1YWdlJ10gKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXR1cm4gdGhlIGZpcnN0IGxhbmd1YWdlIG5vdCBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vblNjcmVlbkxhbmd1YWdlID0gbGFuZ3VhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjdXJyZW50VVJMOiBmdW5jdGlvbiAoIG5ld1VybCwgb2xkVXJsICkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSggbnVsbCwgbnVsbCwgdGhpcy5wYXJlbnRVUkwoIG5ld1VybCApIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2aWV3QXM6IGZ1bmN0aW9uKCByb2xlICkge1xuICAgICAgICAgICAgICAgIGlmKCAhdGhpcy5jdXJyZW50VVJMIHx8ICF0aGlzLmlmcmFtZSApXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuXG4gICAgICAgICAgICAgICAgbGV0IHVybCA9IHRoaXMuY2xlYW5VUkwoIHRoaXMuY3VycmVudFVSTCApXG5cbiAgICAgICAgICAgICAgICB1cmwgPSB1dGlscy51cGRhdGVVcmxQYXJhbWV0ZXIoIHVybCwgJ3RycC1lZGl0LXRyYW5zbGF0aW9uJywgJ3ByZXZpZXcnIClcblxuICAgICAgICAgICAgICAgIGlmKCByb2xlID09ICdjdXJyZW50X3VzZXInICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlmcmFtZS5sb2NhdGlvbiA9IHVybFxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvL2lmIG5vbmNlIG5vdCBhdmFpbGFibGUsIGFuIHVwZGF0ZSB0byB0aGUgQnJvd3NlIGFzIE90aGVyIFJvbGVzIGFkZC1vbiBpcyByZXF1aXJlZFxuICAgICAgICAgICAgICAgIGlmKCAhdGhpcy5ub25jZXNbcm9sZV0gKSB7XG4gICAgICAgICAgICAgICAgICAgIGFsZXJ0KCB0aGlzLmVkaXRvclN0cmluZ3MuYm9yX3VwZGF0ZV9ub3RpY2UgKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB1cmwgPSB1dGlscy51cGRhdGVVcmxQYXJhbWV0ZXIoIHVybCwgJ3RycC12aWV3LWFzJywgcm9sZSApXG4gICAgICAgICAgICAgICAgdXJsID0gdXRpbHMudXBkYXRlVXJsUGFyYW1ldGVyKCB1cmwsICd0cnAtdmlldy1hcy1ub25jZScsIHRoaXMubm9uY2VzW3JvbGVdIClcblxuICAgICAgICAgICAgICAgIHRoaXMuaWZyYW1lLmxvY2F0aW9uID0gdXJsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VsZWN0ZWRTdHJpbmc6IGZ1bmN0aW9uICggc2VsZWN0ZWRTdHJpbmdBcnJheUluZGV4LCBvbGRTdHJpbmcgKXtcblxuICAgICAgICAgICAgICAgIGlmKCB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzKCkgfHwgKCAhc2VsZWN0ZWRTdHJpbmdBcnJheUluZGV4ICYmIHNlbGVjdGVkU3RyaW5nQXJyYXlJbmRleCAhPT0gMCApIClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG5cbiAgICAgICAgICAgICAgICBqUXVlcnkoICcjdHJwLXN0cmluZy1jYXRlZ29yaWVzJyApLnZhbCggc2VsZWN0ZWRTdHJpbmdBcnJheUluZGV4ICE9PSBudWxsID8gc2VsZWN0ZWRTdHJpbmdBcnJheUluZGV4IDogJycgKS50cmlnZ2VyKCAnY2hhbmdlJyApXG5cbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRTdHJpbmcgICAgICAgPSB0aGlzLmRpY3Rpb25hcnlbc2VsZWN0ZWRTdHJpbmdBcnJheUluZGV4XVxuXG4gICAgICAgICAgICAgICAgaWYoICFzZWxlY3RlZFN0cmluZyApXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuXG4gICAgICAgICAgICAgICAgbGV0IGN1cnJlbnROb2RlcyAgICAgICAgICA9IHRoaXMuaWZyYW1lLnF1ZXJ5U2VsZWN0b3JBbGwoIFwiW1wiICsgc2VsZWN0ZWRTdHJpbmcuc2VsZWN0b3IgKyBcIj0nXCIgKyBzZWxlY3RlZFN0cmluZy5kYklEICsgXCInXVwiKVxuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZEluZGV4ZXNBcnJheSA9IFtdXG5cbiAgICAgICAgICAgICAgICAvL3doZW4gbWVyZ2luZyB3ZSBkbyBub3QgaGF2ZSBhIHZhbGlkIGN1cnJlbnQgbm9kZSwgc28gd2UganVzdCBhZGQgdGhlIGZha2UgaWRcbiAgICAgICAgICAgICAgICBpZiggY3VycmVudE5vZGVzLmxlbmd0aCA+IDAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzZWxmID0gdGhpc1xuICAgICAgICAgICAgICAgICAgICBsZXQgc2VsZWN0b3JzID0gc2VsZi5nZXRBbGxTZWxlY3RvcnMoKVxuICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZXMgPSBbXVxuXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnROb2Rlcy5mb3JFYWNoKCBmdW5jdGlvbiAoIGN1cnJlbnROb2RlICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMucHVzaCggY3VycmVudE5vZGUgKVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGN1cnJlbnROb2RlLnRhZ05hbWUgIT0gXCJBXCIgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmNsdWRlIHRoZSBhbmNob3IncyB0cmFuc2xhdGFibGUgYXR0cmlidXRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhbmNob3JQYXJlbnQgID0gY3VycmVudE5vZGUuY2xvc2VzdCgnYScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoICBhbmNob3JQYXJlbnQgIT0gbnVsbCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMucHVzaChhbmNob3JQYXJlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGN1cnJlbnROb2RlLnRhZ05hbWUgPT0gXCJBXCIgJiYgY3VycmVudE5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluY2x1ZGUgYWxsIHRoZSB0cmFuc2xhdGFibGUgYXR0cmlidXRlcyBpbnNpZGUgdGhlIGFuY2hvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGlsZHJlbkFycmF5ID0gWyAuLi5jdXJyZW50Tm9kZS5jaGlsZHJlbiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuQXJyYXkuZm9yRWFjaCggZnVuY3Rpb24gKCBjaGlsZCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMucHVzaChjaGlsZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzLmZvckVhY2goIGZ1bmN0aW9uKCBub2RlICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9ycy5mb3JFYWNoKGZ1bmN0aW9uIChzZWxlY3Rvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3RyaW5nSWQgPSBub2RlLmdldEF0dHJpYnV0ZShzZWxlY3RvcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmluZ0lkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZm91bmQgPSBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciggaSA9IDA7IGkgPCBzZWxlY3RlZEluZGV4ZXNBcnJheS5sZW5ndGg7IGkrKyApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4ZXNBcnJheVtpXV0gIT09ICd1bmRlZmluZWQnICYmIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4ZXNBcnJheVtpXV0uZGJJRCAhPT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhlc0FycmF5W2ldXS5kYklEID09PSBzdHJpbmdJZCApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhIGZvdW5kICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5kZXhlc0FycmF5LnB1c2goc2VsZi5nZXRTdHJpbmdJbmRleChzZWxlY3Rvciwgc3RyaW5nSWQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5kZXhlc0FycmF5LnB1c2goIHNlbGVjdGVkU3RyaW5nQXJyYXlJbmRleCApXG5cbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXhlc0FycmF5ID0gc2VsZWN0ZWRJbmRleGVzQXJyYXlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoZWxwUGFuZWxPcGVuIDogZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBpZiAoIHRoaXMudXNlck1ldGEuaGVscFBhbmVsT3BlbmVkICE9PSB0cnVlICl7XG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoIG5ldyBDdXN0b21FdmVudCggJ3RycF91cGRhdGVfdXNlcl9tZXRhJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2RldGFpbCcgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXJNZXRhS2V5JyA6ICdoZWxwUGFuZWxPcGVuZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1c2VyTWV0YVZhbHVlJyA6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gKSApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjb21wdXRlZDoge1xuICAgICAgICAgICAgY2xvc2VVUkw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuVVJMKCB0aGlzLmN1cnJlbnRVUkwgKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXRob2RzOiB7XG4gICAgICAgICAgICBpRnJhbWVMb2FkZWQoKXtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXNcbiAgICAgICAgICAgICAgICBsZXQgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN0cnAtcHJldmlldy1pZnJhbWUnKVxuXG4gICAgICAgICAgICAgICAgdGhpcy5pZnJhbWUgPSBpZnJhbWVFbGVtZW50LmNvbnRlbnREb2N1bWVudCB8fCBpZnJhbWVFbGVtZW50LmNvbnRlbnRXaW5kb3cuZG9jdW1lbnRcblxuICAgICAgICAgICAgICAgIC8vc3luYyBpRnJhbWUgVVJMIHdpdGggcGFyZW50XG4gICAgICAgICAgICAgICAgaWYgKCB0aGlzLmN1cnJlbnRVUkwgIT0gdGhpcy5pZnJhbWUuVVJMIClcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VVJMID0gdGhpcy5pZnJhbWUuVVJMXG5cbiAgICAgICAgICAgICAgICAvL2hpZGUgaUZyYW1lIGxvYWRlclxuICAgICAgICAgICAgICAgIHRoaXMuaWZyYW1lTG9hZGVyKCAnaGlkZScgKVxuXG4gICAgICAgICAgICAgICAgc2VsZi5kZXRlY3RlZFNlbGVjdG9yQW5kSWQgPSBbXVxuICAgICAgICAgICAgICAgIHNlbGYuZGljdGlvbmFyeSAgICAgICAgICAgID0gW11cbiAgICAgICAgICAgICAgICB0aGlzLnNjYW5JZnJhbWVGb3JTdHJpbmdzKClcblxuICAgICAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCAndHJwX2lmcmFtZV9wYWdlX3VwZGF0ZWQnLCB0aGlzLnNjYW5JZnJhbWVGb3JTdHJpbmdzIClcblxuICAgICAgICAgICAgICAgIC8vZXZlbnQgdGhhdCBpcyBmaXJlZCB3aGVuIHRoZSBpRnJhbWUgaXMgbmF2aWdhdGVkXG4gICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5jb250ZW50V2luZG93Lm9uYmVmb3JldW5sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuaWZyYW1lTG9hZGVyKCAnc2hvdycgKVxuXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWRTdHJpbmcgPSBudWxsXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWRJbmRleGVzQXJyYXkgPSBbXVxuICAgICAgICAgICAgICAgICAgICBzZWxmLnRyYW5zbGF0aW9uTm90TG9hZGVkWWV0ID0gZmFsc2VcblxuICAgICAgICAgICAgICAgICAgICBzZWxmLnN0cmluZ3NEcm9wZG93bkxvYWRpbmcoKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNjYW5JZnJhbWVGb3JTdHJpbmdzKCl7XG4gICAgICAgICAgICAgICAgdGhpcy5zY2FuRm9yU2VsZWN0b3IoICdkYXRhLXRycC10cmFuc2xhdGUtaWQnLCAncmVndWxhcicsIHRoaXMub25TY3JlZW5MYW5ndWFnZSApXG4gICAgICAgICAgICAgICAgdGhpcy5zY2FuRm9yU2VsZWN0b3IoICdkYXRhLXRycGdldHRleHRvcmlnaW5hbCcsICdnZXR0ZXh0JywgdGhpcy5jdXJyZW50TGFuZ3VhZ2UgKVxuICAgICAgICAgICAgICAgIHRoaXMuc2NhbkZvclNlbGVjdG9yKCAnZGF0YS10cnAtcG9zdC1zbHVnJywgJ3Bvc3RzbHVnJywgdGhpcy5jdXJyZW50TGFuZ3VhZ2UgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNjYW5Gb3JTZWxlY3RvciggYmFzZVNlbGVjdG9yLCB0eXBlU2x1ZywgbGFuZ3VhZ2VPZklkcyApe1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ19zdHJpbmdzKytcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiAgICAgICAgICAgPSB0aGlzXG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdG9ycyAgICAgID0gdGhpcy5wcmVwYXJlU2VsZWN0b3JTdHJpbmdzKCBiYXNlU2VsZWN0b3IgKVxuICAgICAgICAgICAgICAgIGxldCBub2RlcyAgICAgICAgICA9IFsuLi50aGlzLmlmcmFtZS5xdWVyeVNlbGVjdG9yQWxsKCAnWycgKyBzZWxlY3RvcnMuam9pbignXSxbJykgKyAnXScgKV1cbiAgICAgICAgICAgICAgICBsZXQgc3RyaW5nSWRzQXJyYXkgPSBbXSwgbm9kZURhdGEgPSBbXSwgbm9kZUVudHJpZXMgPSBbXVxuXG4gICAgICAgICAgICAgICAgbm9kZXMuZm9yRWFjaCggZnVuY3Rpb24gKCBub2RlICl7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVFbnRyaWVzID0gc2VsZi5nZXROb2RlSW5mbyggbm9kZSwgYmFzZVNlbGVjdG9yIClcblxuICAgICAgICAgICAgICAgICAgICBub2RlRW50cmllcy5mb3JFYWNoKCBmdW5jdGlvbiggZW50cnkgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGNoZWNrIGVuc3VyZXMgdGhhdCB3ZSBkb24ndCBjcmVhdGUgZHVwbGljYXRlcyB3aGVuIHJlc2Nhbm5pbmcgYWZ0ZXIgYWpheCBjb21wbGV0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhc2VsZi5hbHJlYWR5RGV0ZWN0ZWQoIGVudHJ5LnNlbGVjdG9yLCBlbnRyeS5kYklEICkgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nSWRzQXJyYXkucHVzaChlbnRyeS5kYklEKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVEYXRhLnB1c2goZW50cnkpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXR1cEV2ZW50TGlzdGVuZXIoIG5vZGUgKVxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICAvL3VuaXF1ZSBpZHMgb25seVxuICAgICAgICAgICAgICAgIHN0cmluZ0lkc0FycmF5ID0gWy4uLm5ldyBTZXQoc3RyaW5nSWRzQXJyYXkpXVxuICAgICAgICAgICAgICAgIGlmICggc3RyaW5nSWRzQXJyYXkubGVuZ3RoID4gMCApIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBuZXcgRm9ybURhdGEoKVxuICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCgnYWN0aW9uJyAgICAgICAsICd0cnBfZ2V0X3RyYW5zbGF0aW9uc18nICsgdHlwZVNsdWcpXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKCdhbGxfbGFuZ3VhZ2VzJywgJ3RydWUnKVxuICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCgnc2VjdXJpdHknICAgICAsIHRoaXMubm9uY2VzWydnZXR0cmFuc2xhdGlvbnNub25jZScgKyB0eXBlU2x1Z10pXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKCdsYW5ndWFnZScgICAgICwgbGFuZ3VhZ2VPZklkcylcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoJ3N0cmluZ19pZHMnICAgLCBKU09OLnN0cmluZ2lmeShzdHJpbmdJZHNBcnJheSkpXG5cbiAgICAgICAgICAgICAgICAgICAgYXhpb3MucG9zdCh0aGlzLmFqYXhVcmwsIGRhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvYWRpbmdfc3RyaW5ncy0tXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hZGRUb0RpY3Rpb25hcnkocmVzcG9uc2UuZGF0YSwgbm9kZURhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmxvYWRpbmdfc3RyaW5ncy0tXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWxyZWFkeURldGVjdGVkKCBzZWxlY3RvciwgZGJJZCApe1xuICAgICAgICAgICAgICAgIGxldCBjb21iaW5lZCA9IHNlbGVjdG9yICsgJz0nICsgZGJJZFxuICAgICAgICAgICAgICAgIGlmICggdXRpbHMuYXJyYXlDb250YWluc0l0ZW0oIHRoaXMuZGV0ZWN0ZWRTZWxlY3RvckFuZElkLCBjb21iaW5lZCApICkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgICAgIH1lbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXRlY3RlZFNlbGVjdG9yQW5kSWQucHVzaChjb21iaW5lZClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldHVwRXZlbnRMaXN0ZW5lciggbm9kZSApe1xuICAgICAgICAgICAgICAgIGlmICggbm9kZS50YWdOYW1lID09ICdBJyAmJiAhbm9kZS5oYXNBdHRyaWJ1dGUoICdkYXRhLXRycGdldHRleHRvcmlnaW5hbCcgKSApXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZVxuXG4gICAgICAgICAgICAgICAgbGV0IHNlbGYgPSB0aGlzXG5cbiAgICAgICAgICAgICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoICdtb3VzZWVudGVyJywgc2VsZi4kcmVmcy5ob3ZlckFjdGlvbnMuc2hvd1BlbmNpbEljb24gKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFkZFRvRGljdGlvbmFyeSggcmVzcG9uc2VEYXRhLCBub2RlSW5mbyA9IG51bGwgKXtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXNcblxuICAgICAgICAgICAgICAgIGlmICggcmVzcG9uc2VEYXRhICE9IG51bGwgKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICggbm9kZUluZm8gKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmZvLmZvckVhY2goZnVuY3Rpb24gKCBpbmZvUm93LCBpbmRleCApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlRGF0YS5zb21lKCBmdW5jdGlvbiAoIHJlc3BvbnNlRGF0YVJvdyApIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGluZm9Sb3cuZGJJRCA9PSByZXNwb25zZURhdGFSb3cuZGJJRCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vYnJpbmcgYmxvY2tfdHlwZSB0byB0aGUgdG9wIGxldmVsIG9iamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCByZXNwb25zZURhdGFSb3cudHlwZSAhPSAnZ2V0dGV4dCcgJiYgdHlwZW9mIHJlc3BvbnNlRGF0YVJvdy5ibG9ja190eXBlID09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaXJzdExhbmd1YWdlID0gc2VsZi5vcmRlcmVkU2Vjb25kYXJ5TGFuZ3VhZ2VzWzBdXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiByZXNwb25zZURhdGFSb3cudHJhbnNsYXRpb25zQXJyYXlbZmlyc3RMYW5ndWFnZV0uYmxvY2tfdHlwZSAhPSAndW5kZWZpbmVkJyApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlRGF0YVJvdy5ibG9ja190eXBlID0gcmVzcG9uc2VEYXRhUm93LnRyYW5zbGF0aW9uc0FycmF5W2ZpcnN0TGFuZ3VhZ2VdLmJsb2NrX3R5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUluZm9baW5kZXhdID0gT2JqZWN0LmFzc2lnbigge30sIHJlc3BvbnNlRGF0YVJvdywgaW5mb1JvdyApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZSAvLyBhIHNvcnQgb2YgYnJlYWtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmZvID0gcmVzcG9uc2VEYXRhXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0cmluZ0dyb3VwcyA9IHRoaXMuYWRkVG9TdHJpbmdHcm91cHMoIG5vZGVJbmZvIClcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWN0aW9uYXJ5ID0gdGhpcy5kaWN0aW9uYXJ5LmNvbmNhdCggbm9kZUluZm8gKVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdFN0cmluZ3NEcm9wZG93bigpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFkZFRvU3RyaW5nR3JvdXBzKCBzdHJpbmdzICl7XG5cbiAgICAgICAgICAgICAgICAvLyBzZWUgd2hhdCBub2RlIGdyb3VwcyBhcmUgZm91bmRcbiAgICAgICAgICAgICAgICBsZXQgZm91bmRTdHJpbmdHcm91cHMgPSB0aGlzLnN0cmluZ0dyb3VwcztcbiAgICAgICAgICAgICAgICBzdHJpbmdzLmZvckVhY2goIGZ1bmN0aW9uICggc3RyaW5nICkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIGZvdW5kU3RyaW5nR3JvdXBzLmluZGV4T2YoIHN0cmluZy5ncm91cCApID09PSAtMSAmJiAoICggdHlwZW9mIHN0cmluZy5ibG9ja1R5cGUgPT09ICd1bmRlZmluZWQnICkgfHwgc3RyaW5nLmJsb2NrVHlwZSAhPT0gJzInICkgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kU3RyaW5nR3JvdXBzLnB1c2goIHN0cmluZy5ncm91cCApXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgLy8gcHV0IHRoZSBub2RlIGdyb3VwcyBpbiB0aGUgb3JkZXIgdGhhdCB3ZSB3YW50LCBhY2NvcmRpbmcgdG8gdGhlIHByb3AgdGhpcy5zdHJpbmdHcm91cE9yZGVyXG4gICAgICAgICAgICAgICAgbGV0IG9yZGVyZWRTdHJpbmdHcm91cHMgPSBbXTtcblxuICAgICAgICAgICAgICAgIGlmICggdGhpcy5lZGl0b3JTdHJpbmdzLnNlb191cGRhdGVfbm90aWNlICE9ICdzZW9fcGFja191cGRhdGVfbm90X25lZWRlZCcgKXtcbiAgICAgICAgICAgICAgICAgICAgb3JkZXJlZFN0cmluZ0dyb3Vwcy5wdXNoKCB0aGlzLmVkaXRvclN0cmluZ3Muc2VvX3VwZGF0ZV9ub3RpY2UgKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnN0cmluZ0dyb3VwT3JkZXIuZm9yRWFjaCggZnVuY3Rpb24oIGdyb3VwICl7XG4gICAgICAgICAgICAgICAgICAgIGlmICggZm91bmRTdHJpbmdHcm91cHMuaW5kZXhPZiggZ3JvdXAgKSAhPT0gLTEgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyZWRTdHJpbmdHcm91cHMucHVzaCggZ3JvdXAgKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIHdlcmUgYW55IG90aGVyIHN0cmluZyBncm91cHMgdGhhdCB3ZXJlIG5vdCBpbiB0aGUgcHJvcCwgYWRkIHRoZW0gYXQgdGhlIGVuZC5cbiAgICAgICAgICAgICAgICBmb3VuZFN0cmluZ0dyb3Vwcy5mb3JFYWNoKCBmdW5jdGlvbiAoZ3JvdXApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCBvcmRlcmVkU3RyaW5nR3JvdXBzLmluZGV4T2YoIGdyb3VwICkgPT09IC0xICl7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcmVkU3RyaW5nR3JvdXBzLnB1c2goZ3JvdXApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIHJldHVybiBvcmRlcmVkU3RyaW5nR3JvdXBzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldFN0cmluZ0luZGV4KCBzZWxlY3RvciwgZGJJRCApe1xuICAgICAgICAgICAgICAgIGxldCBmb3VuZCA9IG51bGxcblxuICAgICAgICAgICAgICAgIHRoaXMuZGljdGlvbmFyeS5zb21lKGZ1bmN0aW9uICggc3RyaW5nLCBpbmRleCApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCBzdHJpbmcuZGJJRCA9PSBkYklEICYmIHN0cmluZy5zZWxlY3RvciA9PSBzZWxlY3RvciApe1xuICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZm91bmRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXROb2RlSW5mbyggbm9kZSwgYmFzZVNlbGVjdG9yID0gJycgKXtcbiAgICAgICAgICAgICAgICBsZXQgc3RyaW5nSWRcbiAgICAgICAgICAgICAgICBsZXQgbm9kZURhdGEgID0gW11cbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0b3JzID0gdGhpcy5wcmVwYXJlU2VsZWN0b3JTdHJpbmdzKCBiYXNlU2VsZWN0b3IgKVxuXG4gICAgICAgICAgICAgICAgc2VsZWN0b3JzLmZvckVhY2goIGZ1bmN0aW9uICggc2VsZWN0b3IgKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgc3RyaW5nSWQgPSBub2RlLmdldEF0dHJpYnV0ZSggc2VsZWN0b3IgKVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICggc3RyaW5nSWQgKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlQXR0cmlidXRlICAgPSBzZWxlY3Rvci5yZXBsYWNlKCBiYXNlU2VsZWN0b3IsICcnIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlR3JvdXAgICAgICAgPSBub2RlLmdldEF0dHJpYnV0ZSggJ2RhdGEtdHJwLW5vZGUtZ3JvdXAnICsgbm9kZUF0dHJpYnV0ZSApXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZURlc2NyaXB0aW9uID0gbm9kZS5nZXRBdHRyaWJ1dGUoICdkYXRhLXRycC1ub2RlLWRlc2NyaXB0aW9uJyArIG5vZGVBdHRyaWJ1dGUgKVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZW50cnkgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGJJRCAgICAgIDogc3RyaW5nSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IgIDogc2VsZWN0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIDogbm9kZUF0dHJpYnV0ZS5zdWJzdHIoMSksIC8vIHN1YnN0cigxKSBpcyB1c2VkIHRvIHRyaW0gcHJlZml4aW5nIGxpbmUgLSBleC4gLWFsdCB3aWxsIHJlc3VsdCBpbiBhbHQgKG5vIGxpbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbm9kZUdyb3VwIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5ncm91cCA9IG5vZGVHcm91cFxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG5vZGVEZXNjcmlwdGlvbiApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkuZGVzY3JpcHRpb24gPSBub2RlRGVzY3JpcHRpb25cblxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZURhdGEucHVzaCggZW50cnkgKVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVEYXRhXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0QWxsU2VsZWN0b3JzKCl7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdG9ycyA9IFtdXG4gICAgICAgICAgICAgICAgbGV0IHNlbGYgICAgICA9IHRoaXNcblxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YUF0dHJpYnV0ZXMuZm9yRWFjaCggZnVuY3Rpb24gKCBkYXRhQXR0cmlidXRlICl7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdG9ycyA9IHNlbGVjdG9ycy5jb25jYXQoIHNlbGYucHJlcGFyZVNlbGVjdG9yU3RyaW5ncyggZGF0YUF0dHJpYnV0ZSApIClcbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdG9yc1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHByZXBhcmVTZWxlY3RvclN0cmluZ3MoIGJhc2VOYW1lU2VsZWN0b3IgKXtcbiAgICAgICAgICAgICAgICBsZXQgcGFyc2VkX3NlbGVjdG9ycyA9IFtdXG5cbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdG9ycy5mb3JFYWNoKCBmdW5jdGlvbiAoIHNlbGVjdG9yU3VmZml4LCBpbmRleCApe1xuICAgICAgICAgICAgICAgICAgICBwYXJzZWRfc2VsZWN0b3JzLnB1c2goIGJhc2VOYW1lU2VsZWN0b3IgKyBzZWxlY3RvclN1ZmZpeCAgKVxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VkX3NlbGVjdG9yc1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhcmVudFVSTCggdXJsICl7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVybC5yZXBsYWNlKCAndHJwLWVkaXQtdHJhbnNsYXRpb249cHJldmlldycsICd0cnAtZWRpdC10cmFuc2xhdGlvbj10cnVlJyApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2xlYW5VUkwoIHVybCApe1xuICAgICAgICAgICAgICAgIC8vbWFrZSByZW1vdmVVcmxQYXJhbWV0ZXIgcmVjdXJzaXZlIGFuZCBvbmx5IGNhbGwgaXQgb25jZSB3aXRoIGFsbCB0aGUgcGFyYW1ldGVycyB0aGF0XG4gICAgICAgICAgICAgICAgLy9uZWVkIHRvIHN0cmlwcGVkID9cbiAgICAgICAgICAgICAgICB1cmwgPSB1dGlscy5yZW1vdmVVcmxQYXJhbWV0ZXIoIHVybCwgJ2xhbmcnIClcbiAgICAgICAgICAgICAgICB1cmwgPSB1dGlscy5yZW1vdmVVcmxQYXJhbWV0ZXIoIHVybCwgJ3RycC12aWV3LWFzJyApXG4gICAgICAgICAgICAgICAgdXJsID0gdXRpbHMucmVtb3ZlVXJsUGFyYW1ldGVyKCB1cmwsICd0cnAtdmlldy1hcy1ub25jZScgKVxuICAgICAgICAgICAgICAgIHVybCA9IHV0aWxzLnJlbW92ZVVybFBhcmFtZXRlciggdXJsLCAndHJwLWVkaXQtdHJhbnNsYXRpb24nIClcblxuICAgICAgICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzaG93U3RyaW5nKCBzdHJpbmcsIHR5cGUgKXtcbiAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBzdHJpbmcuYmxvY2tUeXBlICE9PSAndW5kZWZpbmVkJyAmJiBzdHJpbmcuYmxvY2tUeXBlID09PSAnMicgKXtcbiAgICAgICAgICAgICAgICAgICAgLy8gZG9uJ3Qgc2hvdyBkZXByZWNhdGVkIHRyYW5zbGF0aW9uIGJsb2NrcyBpbiB0aGUgZHJvcGRvd25cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICggdHlwZSA9PT0gdGhpcy5lZGl0b3JTdHJpbmdzLmltYWdlcyAmJiB0eXBlb2Ygc3RyaW5nLmF0dHJpYnV0ZSAhPSAndW5kZWZpbmVkJyAmJiBzdHJpbmcuYXR0cmlidXRlID09ICdzcmMnIClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcblxuICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIHN0cmluZy5hdHRyaWJ1dGUgIT09ICd1bmRlZmluZWQnICYmICggc3RyaW5nLmF0dHJpYnV0ZSA9PSAnaHJlZicgfHwgc3RyaW5nLmF0dHJpYnV0ZSA9PSAnc3JjJyApIClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG5cbiAgICAgICAgICAgICAgICBpZiAoIHN0cmluZy5ncm91cCA9PT0gdHlwZSApXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlXG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbml0U3RyaW5nc0Ryb3Bkb3duKCl7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGYgPSB0aGlzXG5cbiAgICAgICAgICAgICAgICBpZiAoICF0aGlzLmlzU3RyaW5nc0Ryb3Bkb3duT3BlbigpICkge1xuICAgICAgICAgICAgICAgICAgICBqUXVlcnkoICcjdHJwLXN0cmluZy1jYXRlZ29yaWVzJyApLnNlbGVjdDIoICdkZXN0cm95JyApXG5cbiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCAnI3RycC1zdHJpbmctY2F0ZWdvcmllcycgKS5zZWxlY3QyKCB7IHBsYWNlaG9sZGVyIDogc2VsZi5lZGl0b3JTdHJpbmdzLnNlbGVjdF9zdHJpbmcsIHRlbXBsYXRlUmVzdWx0OiBmdW5jdGlvbihvcHRpb24pe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9yaWdpbmFsICAgID0gaGUuZGVjb2RlKCBvcHRpb24udGV4dC5zdWJzdHJpbmcoMCwgOTApICkgKyAoICggb3B0aW9uLnRleHQubGVuZ3RoIDw9IDkwKSA/ICcnIDogJy4uLicgKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRlc2NyaXB0aW9uID0gKCBvcHRpb24udGl0bGUgKSA/ICAnKCcgKyBvcHRpb24udGl0bGUgKyAnKScgOiAnJ1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5KCAnPGRpdj4nICsgb3JpZ2luYWwgKyAnPC9kaXY+PGRpdiBjbGFzcz1cInN0cmluZy1zZWxlY3Rvci1kZXNjcmlwdGlvblwiPicgKyBkZXNjcmlwdGlvbiArICc8L2Rpdj4nICk7XG4gICAgICAgICAgICAgICAgICAgIH0sIHdpZHRoIDogJzEwMCUnIH0gKS5wcm9wKCAnZGlzYWJsZWQnLCBmYWxzZSApXG5cbiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCAnI3RycF9zZWxlY3QyX292ZXJsYXknICkuaGlkZSgpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN0cmluZ3NEcm9wZG93bkxvYWRpbmcoKXtcbiAgICAgICAgICAgICAgICBqUXVlcnkoICcjdHJwLXN0cmluZy1jYXRlZ29yaWVzJyApLnNlbGVjdDIoIHsgcGxhY2Vob2xkZXIgOiB0aGlzLmVkaXRvclN0cmluZ3Muc3RyaW5nc19sb2FkaW5nLCB3aWR0aCA6ICcxMDAlJyB9ICkucHJvcCggJ2Rpc2FibGVkJywgdHJ1ZSApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJvY2Vzc09wdGlvbk5hbWUoIG5hbWUsIHR5cGUgKXtcbiAgICAgICAgICAgICAgICBpZiAoIHR5cGUgPT0gJ0ltYWdlcycgKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXRpbHMuZ2V0RmlsZW5hbWUoIG5hbWUgKVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHV0aWxzLmVzY2FwZUh0bWwoIG5hbWUgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzU3RyaW5nc0Ryb3Bkb3duT3Blbigpe1xuICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkoICcjdHJwLXN0cmluZy1jYXRlZ29yaWVzJyApLnNlbGVjdDIoICdpc09wZW4nIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoYXNVbnNhdmVkQ2hhbmdlcygpe1xuICAgICAgICAgICAgICAgIGxldCB1bnNhdmVkQ2hhbmdlcyA9IGZhbHNlXG4gICAgICAgICAgICAgICAgbGV0IHNlbGYgPSB0aGlzXG4gICAgICAgICAgICAgICAgaWYgKCB0aGlzLnNlbGVjdGVkSW5kZXhlc0FycmF5Lmxlbmd0aCA+IDAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleGVzQXJyYXkuZm9yRWFjaChmdW5jdGlvbiAoc2VsZWN0ZWRJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXR0aW5nc1sndHJhbnNsYXRpb24tbGFuZ3VhZ2VzJ10uZm9yRWFjaChmdW5jdGlvbiAobGFuZ3VhZ2VDb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0udHJhbnNsYXRlZCAhPT0gc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0uZWRpdGVkVHJhbnNsYXRpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2F2ZWRDaGFuZ2VzID0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZSA9IHVuc2F2ZWRDaGFuZ2VzXG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdW5zYXZlZENoYW5nZXNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpZnJhbWVMb2FkZXIoIHN0YXR1cyApIHtcbiAgICAgICAgICAgICAgICBsZXQgbG9hZGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoICd0cnAtcHJldmlldy1sb2FkZXInIClcblxuICAgICAgICAgICAgICAgIGlmKCBzdGF0dXMgPT0gJ3Nob3cnIClcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnN0eWxlLmRpc3BsYXkgPSAnZmxleCdcbiAgICAgICAgICAgICAgICBlbHNlIGlmKCBzdGF0dXMgPT0gJ2hpZGUnIClcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcmV2aW91c1N0cmluZygpe1xuICAgICAgICAgICAgICAgIGxldCBjdXJyZW50VmFsdWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHJwLXN0cmluZy1jYXRlZ29yaWVzJykudmFsdWVcblxuICAgICAgICAgICAgICAgIGxldCBuZXdWYWx1ZSA9ICtjdXJyZW50VmFsdWUgLSAxXG5cbiAgICAgICAgICAgICAgICB3aGlsZSggbmV3VmFsdWUgPj0gMCAmJiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjdHJwLXN0cmluZy1jYXRlZ29yaWVzIG9wdGlvblt2YWx1ZT1cIicgKyBuZXdWYWx1ZSArICdcIl0nKS5sZW5ndGggPT09IDAgKXtcbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWUtLTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiggbmV3VmFsdWUgPCAwIClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG5cbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkU3RyaW5nID0gbmV3VmFsdWUudG9TdHJpbmcoKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHRTdHJpbmcoKXtcbiAgICAgICAgICAgICAgICBsZXQgY3VycmVudFZhbHVlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RycC1zdHJpbmctY2F0ZWdvcmllcycpLnZhbHVlLCBuZXdWYWx1ZSA9IDBcblxuICAgICAgICAgICAgICAgIGlmKCBjdXJyZW50VmFsdWUgIT0gJycgKVxuICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9ICtjdXJyZW50VmFsdWUgKyAxXG5cbiAgICAgICAgICAgICAgICB3aGlsZSggbmV3VmFsdWUgPCB0aGlzLmRpY3Rpb25hcnkubGVuZ3RoICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyN0cnAtc3RyaW5nLWNhdGVnb3JpZXMgb3B0aW9uW3ZhbHVlPVwiJyArIG5ld1ZhbHVlICsgJ1wiXScpLmxlbmd0aCA9PT0gMCApe1xuICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZSsrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICggbmV3VmFsdWUgPj0gdGhpcy5kaWN0aW9uYXJ5Lmxlbmd0aCApe1xuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkU3RyaW5nID0gbmV3VmFsdWUudG9TdHJpbmcoKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFkZEtleWJvYXJkU2hvcnRjdXRzTGlzdGVuZXIoKXtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgod2luZG93Lm5hdmlnYXRvci5wbGF0Zm9ybS5tYXRjaChcIk1hY1wiKSA/IGUubWV0YUtleSA6IGUuY3RybEtleSkgJiYgZS5hbHRLZXkgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDVFJMICsgQUxUICsgcmlnaHQgYXJyb3dcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBlLmtleUNvZGUgPT09IDM5ICl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KCBuZXcgRXZlbnQoICd0cnBfdHJpZ2dlcl9uZXh0X3N0cmluZ19ldmVudCcgKSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ1RSTCArIEFMVCArIGxlZnQgYXJyb3dcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggZS5rZXlDb2RlID09PSAzNyApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudCggbmV3IEV2ZW50KCAndHJwX3RyaWdnZXJfcHJldmlvdXNfc3RyaW5nX2V2ZW50JyApICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICd0cnBfdHJpZ2dlcl9uZXh0X3N0cmluZ19ldmVudCcsIHRoaXMubmV4dFN0cmluZyApXG4gICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICd0cnBfdHJpZ2dlcl9wcmV2aW91c19zdHJpbmdfZXZlbnQnLCB0aGlzLnByZXZpb3VzU3RyaW5nIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZGRIZWxwUGFuZWxMaXN0ZW5lcnMoKXtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXNcbiAgICAgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggJ3RycF9zd2l0Y2hfbGFuZ3VhZ2VfaGVscF9wYW5lbCcsIGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuaGlnaGxpZ2h0TGFuZ3VhZ2VTd2l0Y2hlciA9IHRydWVcbiAgICAgICAgICAgICAgICB9IClcbiAgICAgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggJ3RycF9zZWFyY2hfc3RyaW5nX2hlbHBfcGFuZWwnLCBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmhpZ2hsaWdodFN0cmluZ0xpc3QgPSB0cnVlXG4gICAgICAgICAgICAgICAgfSApXG4gICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICd0cnBfaGVscF9wYW5lbF9jaGFuZ2VkJywgZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5oaWdobGlnaHRMYW5ndWFnZVN3aXRjaGVyID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5oaWdobGlnaHRTdHJpbmdMaXN0ID0gZmFsc2VcbiAgICAgICAgICAgICAgICB9IClcblxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoICd0cnBfdXBkYXRlX3VzZXJfbWV0YScsICB0aGlzLnVwZGF0ZVVzZXJNZXRhIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNpemVJZnJhbWUgKGV2ZW50LCB1aSkge1xuICAgICAgICAgICAgICAgIGxldCB0b3RhbF93aWR0aCA9IGpRdWVyeSh3aW5kb3cpLndpZHRoKCk7XG4gICAgICAgICAgICAgICAgbGV0IHdpZHRoID0galF1ZXJ5KCAnI3RycC1jb250cm9scycgKS53aWR0aCgpO1xuXG4gICAgICAgICAgICAgICAgbGV0IHByZXZpZXdDb250YWluZXIgPSBqUXVlcnkoICcjdHJwLXByZXZpZXcnICk7XG4gICAgICAgICAgICAgICAgcHJldmlld0NvbnRhaW5lci5jc3MoJ3JpZ2h0Jywgd2lkdGggKTtcbiAgICAgICAgICAgICAgICBwcmV2aWV3Q29udGFpbmVyLmNzcygnbGVmdCcsICggd2lkdGggLSAzNDggKSApO1xuICAgICAgICAgICAgICAgIHByZXZpZXdDb250YWluZXIuY3NzKCd3aWR0aCcsICh0b3RhbF93aWR0aCAtIHdpZHRoKSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdXBkYXRlVXNlck1ldGEoIGRhdGEgKXtcbiAgICAgICAgICAgICAgICBsZXQga2V5ID0gZGF0YS5kZXRhaWwudXNlck1ldGFLZXlcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBkYXRhLmRldGFpbC51c2VyTWV0YVZhbHVlXG4gICAgICAgICAgICAgICAgdGhpcy51c2VyTWV0YVtrZXldID0gdmFsdWVcblxuICAgICAgICAgICAgICAgIGxldCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpXG4gICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCAnYWN0aW9uJywgJ3RycF9zYXZlX2VkaXRvcl91c2VyX21ldGEnIClcbiAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoICdzZWN1cml0eScsIHRoaXMubm9uY2VzWyAndHJwX2VkaXRvcl91c2VyX21ldGEnIF0gKVxuICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCggJ3VzZXJfbWV0YScsIEpTT04uc3RyaW5naWZ5KHtba2V5XSA6IHZhbHVlIH0gKSApXG4gICAgICAgICAgICAgICAgYXhpb3MucG9zdCh0aGlzLmFqYXhVcmwsIGZvcm1EYXRhKVxuICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAvL2FkZCBzdXBwb3J0IGZvciB2LW1vZGVsIGluIHNlbGVjdDJcbiAgICAgICAgZGlyZWN0aXZlczoge1xuICAgICAgICAgICAgc2VsZWN0Mjoge1xuICAgICAgICAgICAgICAgIGluc2VydGVkKGVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGpRdWVyeShlbCkub24oJ3NlbGVjdDI6c2VsZWN0JywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgRXZlbnQoJ2NoYW5nZScsIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgZWwuZGlzcGF0Y2hFdmVudChldmVudClcbiAgICAgICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgICAgICBqUXVlcnkoZWwpLm9uKCdzZWxlY3QyOnVuc2VsZWN0JywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgRXZlbnQoJ2NoYW5nZScsIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgZWwuZGlzcGF0Y2hFdmVudChldmVudClcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuPC9zY3JpcHQ+XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/editor.vue?vue&type=script&lang=js&\n");
910
 
911
  /***/ }),
912
 
1011
 
1012
  /***/ }),
1013
 
1014
+ /***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/help-panel.vue?vue&type=template&id=d8fd02f8&":
1015
+ /*!**************************************************************************************************************************************************************************************************************!*\
1016
+ !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./assets/src/js/components/help-panel.vue?vue&type=template&id=d8fd02f8& ***!
1017
+ \**************************************************************************************************************************************************************************************************************/
1018
+ /*! exports provided: render, staticRenderFns */
1019
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
1020
+
1021
+ "use strict";
1022
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"trp-help-panel\" }, [\n _c(\"div\", { staticClass: \"trp-inner-panel\" }, [\n _c(\"h3\", { staticClass: \"trp-help-panel-title\" }, [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.helpPanelContent[_vm.page].title) +\n \"\\n \"\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", {\n staticClass: \"trp-help-panel-content\",\n domProps: { innerHTML: _vm._s(_vm.helpPanelContent[_vm.page].content) }\n })\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"trp-help-panel-pagination\" }, [\n _c(\"span\", [\n _vm._v(_vm._s(_vm.page + 1) + \"/\" + _vm._s(_vm.helpPanelContent.length))\n ]),\n _vm._v(\" \"),\n _c(\"span\", [\n _c(\n \"a\",\n {\n staticClass: \"trp-link-button\",\n class: { \"trp-link-button-disabled\": _vm.page <= 0 },\n on: {\n click: function($event) {\n _vm.page = _vm.page <= 0 ? 0 : _vm.page - 1\n }\n }\n },\n [_vm._v(_vm._s(_vm.editorStrings.previous))]\n ),\n _vm._v(\"\\n |\\n \"),\n _c(\n \"a\",\n {\n staticClass: \"trp-link-button\",\n class: {\n \"trp-link-button-disabled\":\n _vm.page >= _vm.helpPanelContent.length - 1\n },\n on: {\n click: function($event) {\n _vm.page =\n _vm.page >= _vm.helpPanelContent.length - 1\n ? _vm.page\n : _vm.page + 1\n }\n }\n },\n [_vm._v(_vm._s(_vm.editorStrings.next))]\n )\n ])\n ])\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvaGVscC1wYW5lbC52dWU/MDA1OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixnQ0FBZ0M7QUFDcEQsZUFBZSxpQ0FBaUM7QUFDaEQsZ0JBQWdCLHNDQUFzQztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkIsT0FBTztBQUNQO0FBQ0E7QUFDQSxlQUFlLDJDQUEyQztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsNENBQTRDO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL2Fzc2V0cy9zcmMvanMvY29tcG9uZW50cy9oZWxwLXBhbmVsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kOGZkMDJmOCYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidHJwLWhlbHAtcGFuZWxcIiB9LCBbXG4gICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ0cnAtaW5uZXItcGFuZWxcIiB9LCBbXG4gICAgICBfYyhcImgzXCIsIHsgc3RhdGljQ2xhc3M6IFwidHJwLWhlbHAtcGFuZWwtdGl0bGVcIiB9LCBbXG4gICAgICAgIF92bS5fdihcbiAgICAgICAgICBcIlxcbiAgICAgICAgICAgIFwiICtcbiAgICAgICAgICAgIF92bS5fcyhfdm0uaGVscFBhbmVsQ29udGVudFtfdm0ucGFnZV0udGl0bGUpICtcbiAgICAgICAgICAgIFwiXFxuICAgICAgICBcIlxuICAgICAgICApXG4gICAgICBdKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcImRpdlwiLCB7XG4gICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1oZWxwLXBhbmVsLWNvbnRlbnRcIixcbiAgICAgICAgZG9tUHJvcHM6IHsgaW5uZXJIVE1MOiBfdm0uX3MoX3ZtLmhlbHBQYW5lbENvbnRlbnRbX3ZtLnBhZ2VdLmNvbnRlbnQpIH1cbiAgICAgIH0pXG4gICAgXSksXG4gICAgX3ZtLl92KFwiIFwiKSxcbiAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInRycC1oZWxwLXBhbmVsLXBhZ2luYXRpb25cIiB9LCBbXG4gICAgICBfYyhcInNwYW5cIiwgW1xuICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS5wYWdlICsgMSkgKyBcIi9cIiArIF92bS5fcyhfdm0uaGVscFBhbmVsQ29udGVudC5sZW5ndGgpKVxuICAgICAgXSksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX2MoXCJzcGFuXCIsIFtcbiAgICAgICAgX2MoXG4gICAgICAgICAgXCJhXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLWxpbmstYnV0dG9uXCIsXG4gICAgICAgICAgICBjbGFzczogeyBcInRycC1saW5rLWJ1dHRvbi1kaXNhYmxlZFwiOiBfdm0ucGFnZSA8PSAwIH0sXG4gICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgX3ZtLnBhZ2UgPSBfdm0ucGFnZSA8PSAwID8gMCA6IF92bS5wYWdlIC0gMVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0uZWRpdG9yU3RyaW5ncy5wcmV2aW91cykpXVxuICAgICAgICApLFxuICAgICAgICBfdm0uX3YoXCJcXG4gICAgICAgICAgICAgICAgfFxcbiAgICAgICAgICAgICAgICBcIiksXG4gICAgICAgIF9jKFxuICAgICAgICAgIFwiYVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1saW5rLWJ1dHRvblwiLFxuICAgICAgICAgICAgY2xhc3M6IHtcbiAgICAgICAgICAgICAgXCJ0cnAtbGluay1idXR0b24tZGlzYWJsZWRcIjpcbiAgICAgICAgICAgICAgICBfdm0ucGFnZSA+PSBfdm0uaGVscFBhbmVsQ29udGVudC5sZW5ndGggLSAxXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgIF92bS5wYWdlID1cbiAgICAgICAgICAgICAgICAgIF92bS5wYWdlID49IF92bS5oZWxwUGFuZWxDb250ZW50Lmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICAgICAgPyBfdm0ucGFnZVxuICAgICAgICAgICAgICAgICAgICA6IF92bS5wYWdlICsgMVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0uZWRpdG9yU3RyaW5ncy5uZXh0KSldXG4gICAgICAgIClcbiAgICAgIF0pXG4gICAgXSlcbiAgXSlcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/help-panel.vue?vue&type=template&id=d8fd02f8&\n");
1023
+
1024
+ /***/ }),
1025
+
1026
  /***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/hover-actions.vue?vue&type=template&id=b0793be0&":
1027
  /*!*****************************************************************************************************************************************************************************************************************!*\
1028
  !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./assets/src/js/components/hover-actions.vue?vue&type=template&id=b0793be0& ***!
1043
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
1044
 
1045
  "use strict";
1046
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _vm.selectedIndexesArray\n ? _c(\n \"div\",\n {\n staticClass: \"trp-controls-section-content\",\n attrs: { id: \"trp-translation-section\" }\n },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showChangesUnsavedMessage,\n expression: \"showChangesUnsavedMessage\"\n }\n ],\n staticClass: \"trp-changes-unsaved-message\"\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.editorStrings.unsaved_changes) +\n \"\\n \"\n ),\n _c(\n \"span\",\n { staticClass: \"trp-button-container\" },\n [\n _c(\n \"span\",\n {\n staticClass: \"trp-unsaved-changes trp-discard-changes \",\n on: { click: _vm.discardAll }\n },\n [_vm._v(_vm._s(_vm.editorStrings.discard_all) + \"?\")]\n ),\n _vm._v(\" \"),\n _c(\"tooltip\", {\n staticClass: \"trp-discardall-tooltip\",\n attrs: {\n text: _vm.editorStrings.discard_all_title_attr,\n editorStrings: _vm.editorStrings,\n userMetaHandle: \"dismissTooltipDismissAll\",\n userMeta: _vm.userMeta\n }\n })\n ],\n 1\n )\n ]\n ),\n _vm._v(\" \"),\n _vm._l(_vm.languages, function(languageCode, key) {\n return _c(\n \"div\",\n { attrs: { id: \"trp-language-\" + languageCode } },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value:\n (key <= _vm.othersButtonPosition ||\n _vm.showOtherLanguages) &&\n (_vm.selectedIndexesArray &&\n _vm.selectedIndexesArray.length > 0),\n expression:\n \"( (key <= othersButtonPosition) || showOtherLanguages ) && ( selectedIndexesArray && selectedIndexesArray.length > 0 )\"\n }\n ],\n staticClass: \"trp-language-container\"\n },\n [\n _c(\"div\", { staticClass: \"trp-language-name\" }, [\n key == 0\n ? _c(\"span\", [\n _vm._v(_vm._s(_vm.editorStrings.from) + \" \")\n ])\n : _c(\"span\", [\n _vm._v(_vm._s(_vm.editorStrings.to) + \" \")\n ]),\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.completeLanguageNames[languageCode]) +\n \"\\n \"\n ),\n languageCode != \"original\"\n ? _c(\"img\", {\n staticClass: \"trp-language-box-flag-image\",\n attrs: {\n src:\n _vm.flagsPath[languageCode] +\n \"/\" +\n languageCode +\n \".png\",\n width: \"18\",\n height: \"12\",\n alt: languageCode,\n title: _vm.completeLanguageNames[languageCode]\n }\n })\n : _vm._e()\n ]),\n _vm._v(\" \"),\n _c(\n \"table\",\n { staticClass: \"trp-translations-for-language\" },\n [\n _vm.showImageIcon\n ? _c(\n \"td\",\n { staticClass: \"trp-translation-icon-container\" },\n [\n _c(\"span\", {\n staticClass:\n \"trp-translation-icon dashicons dashicons-format-image\"\n })\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"td\",\n { staticClass: \"trp-translations-container\" },\n _vm._l(_vm.selectedIndexesArray, function(\n selectedIndex\n ) {\n return _c(\n \"div\",\n { staticClass: \"trp-string-container\" },\n [\n _vm.dictionary[selectedIndex] &&\n _vm.dictionary[selectedIndex].translationsArray[\n languageCode\n ]\n ? _c(\n \"div\",\n { key: selectedIndex },\n [\n _c(\"translation-input\", {\n attrs: {\n string:\n _vm.dictionary[selectedIndex],\n highlightUnsavedChanges:\n _vm.showChangesUnsavedMessage &&\n _vm.hasUnsavedChanges(\n selectedIndex,\n languageCode\n ),\n editorStrings: _vm.editorStrings\n },\n model: {\n value:\n _vm.dictionary[selectedIndex]\n .translationsArray[languageCode]\n .editedTranslation,\n callback: function($$v) {\n _vm.$set(\n _vm.dictionary[selectedIndex]\n .translationsArray[\n languageCode\n ],\n \"editedTranslation\",\n $$v\n )\n },\n expression:\n \"dictionary[selectedIndex].translationsArray[languageCode].editedTranslation\"\n }\n })\n ],\n 1\n )\n : _vm.dictionary[selectedIndex]\n ? _c(\n \"div\",\n { key: selectedIndex },\n [\n _c(\"translation-input\", {\n attrs: {\n readonly: true,\n string:\n _vm.dictionary[selectedIndex],\n value:\n _vm.dictionary[selectedIndex]\n .original,\n editorStrings: _vm.editorStrings\n }\n })\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"trp-translation-input-footer\",\n attrs: {\n \"data-dictionary-entry\": JSON.stringify(\n _vm.dictionary[selectedIndex]\n )\n }\n },\n [\n _c(\n \"div\",\n { staticClass: \"trp-attribute-name\" },\n [\n _vm._v(\n _vm._s(\n _vm.editorStrings[\n _vm.dictionary[selectedIndex]\n .attribute\n ] &&\n (_vm.dictionary[selectedIndex]\n .attribute != \"content\" ||\n _vm.dictionary[selectedIndex]\n .attribute != \"\")\n ? _vm.editorStrings[\n _vm.dictionary[selectedIndex]\n .attribute\n ]\n : _vm.editorStrings.text\n )\n )\n ]\n ),\n _vm._v(\" \"),\n _vm.dictionary[selectedIndex] &&\n _vm.dictionary[selectedIndex]\n .translationsArray[languageCode]\n ? _c(\n \"div\",\n {\n staticClass:\n \"trp-discard-changes trp-discard-individual-changes\",\n class: {\n \"trp-unsaved-changes\": _vm.hasUnsavedChanges(\n selectedIndex,\n languageCode\n )\n },\n attrs: {\n title:\n _vm.editorStrings\n .discard_individual_changes_title_attribute\n },\n on: {\n click: function($event) {\n _vm.discardChanges(\n selectedIndex,\n languageCode\n )\n }\n }\n },\n [\n _vm._v(\n _vm._s(_vm.editorStrings.discard)\n )\n ]\n )\n : _vm._e()\n ]\n ),\n _vm._v(\" \"),\n _vm.dictionary[selectedIndex] &&\n _vm.dictionary[selectedIndex].translationsArray[\n languageCode\n ]\n ? _c(\n \"div\",\n {\n key: \"trp_tmw_\" + selectedIndex,\n staticClass:\n \"trp-translation-memory-wrap\"\n },\n [\n _c(\"translation-memory\", {\n attrs: {\n string:\n _vm.dictionary[selectedIndex],\n editorStrings: _vm.editorStrings,\n ajax_url: _vm.ajax_url,\n nonces: _vm.nonces,\n languageCode: languageCode\n }\n })\n ],\n 1\n )\n : _vm._e()\n ]\n )\n }),\n 0\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: key == _vm.othersButtonPosition,\n expression: \"key == othersButtonPosition\"\n }\n ]\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"trp-toggle-languages button\",\n class: {\n \"trp-show-other-languages\":\n _vm.showOtherLanguages,\n \"trp-hide-other-languages\": !_vm.showOtherLanguages\n },\n on: {\n click: function($event) {\n _vm.showOtherLanguages = !_vm.showOtherLanguages\n }\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n _vm._s(_vm.showOtherLanguages ? \"▼\" : \"▶\") +\n \" \" +\n _vm._s(_vm.editorStrings.other_lang)\n )\n ])\n ]\n )\n ]\n )\n ]\n )\n ]\n )\n })\n ],\n 2\n )\n : _vm._e()\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvbGFuZ3VhZ2UtYm94ZXMudnVlP2IxNGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNDQUFzQztBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsU0FBUyxxQ0FBcUMsRUFBRTtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQSwrQkFBK0IsbUNBQW1DO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QiwrQ0FBK0M7QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsZ0RBQWdEO0FBQy9FO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQiw0Q0FBNEM7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixzQ0FBc0M7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMscUJBQXFCO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMscUJBQXFCO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQztBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsb0NBQW9DO0FBQzNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vYXNzZXRzL3NyYy9qcy9jb21wb25lbnRzL2xhbmd1YWdlLWJveGVzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zZjgwY2YxMCYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF92bS5zZWxlY3RlZEluZGV4ZXNBcnJheVxuICAgID8gX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtY29udHJvbHMtc2VjdGlvbi1jb250ZW50XCIsXG4gICAgICAgICAgYXR0cnM6IHsgaWQ6IFwidHJwLXRyYW5zbGF0aW9uLXNlY3Rpb25cIiB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLWNoYW5nZXMtdW5zYXZlZC1tZXNzYWdlXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgXCIgK1xuICAgICAgICAgICAgICAgICAgX3ZtLl9zKF92bS5lZGl0b3JTdHJpbmdzLnVuc2F2ZWRfY2hhbmdlcykgK1xuICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgIFwiXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwidHJwLWJ1dHRvbi1jb250YWluZXJcIiB9LFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC11bnNhdmVkLWNoYW5nZXMgdHJwLWRpc2NhcmQtY2hhbmdlcyBcIixcbiAgICAgICAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLmRpc2NhcmRBbGwgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0uZWRpdG9yU3RyaW5ncy5kaXNjYXJkX2FsbCkgKyBcIj9cIildXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgIF9jKFwidG9vbHRpcFwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1kaXNjYXJkYWxsLXRvb2x0aXBcIixcbiAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBfdm0uZWRpdG9yU3RyaW5ncy5kaXNjYXJkX2FsbF90aXRsZV9hdHRyLFxuICAgICAgICAgICAgICAgICAgICAgIGVkaXRvclN0cmluZ3M6IF92bS5lZGl0b3JTdHJpbmdzLFxuICAgICAgICAgICAgICAgICAgICAgIHVzZXJNZXRhSGFuZGxlOiBcImRpc21pc3NUb29sdGlwRGlzbWlzc0FsbFwiLFxuICAgICAgICAgICAgICAgICAgICAgIHVzZXJNZXRhOiBfdm0udXNlck1ldGFcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXVxuICAgICAgICAgICksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfdm0uX2woX3ZtLmxhbmd1YWdlcywgZnVuY3Rpb24obGFuZ3VhZ2VDb2RlLCBrZXkpIHtcbiAgICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgeyBhdHRyczogeyBpZDogXCJ0cnAtbGFuZ3VhZ2UtXCIgKyBsYW5ndWFnZUNvZGUgfSB9LFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChrZXkgPD0gX3ZtLm90aGVyc0J1dHRvblBvc2l0aW9uIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnNob3dPdGhlckxhbmd1YWdlcykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKF92bS5zZWxlY3RlZEluZGV4ZXNBcnJheSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zZWxlY3RlZEluZGV4ZXNBcnJheS5sZW5ndGggPiAwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiKCAoa2V5IDw9IG90aGVyc0J1dHRvblBvc2l0aW9uKSB8fCBzaG93T3RoZXJMYW5ndWFnZXMgKSAmJiAoIHNlbGVjdGVkSW5kZXhlc0FycmF5ICYmIHNlbGVjdGVkSW5kZXhlc0FycmF5Lmxlbmd0aCA+IDAgKVwiXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtbGFuZ3VhZ2UtY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidHJwLWxhbmd1YWdlLW5hbWVcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAga2V5ID09IDBcbiAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXCJzcGFuXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS5lZGl0b3JTdHJpbmdzLmZyb20pICsgXCIgXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IF9jKFwic3BhblwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0uZWRpdG9yU3RyaW5ncy50bykgKyBcIiBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgICAgICAgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoX3ZtLmNvbXBsZXRlTGFuZ3VhZ2VOYW1lc1tsYW5ndWFnZUNvZGVdKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZUNvZGUgIT0gXCJvcmlnaW5hbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFwiaW1nXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtbGFuZ3VhZ2UtYm94LWZsYWctaW1hZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZmxhZ3NQYXRoW2xhbmd1YWdlQ29kZV0gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIi9cIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlQ29kZSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiLnBuZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMThcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCIxMlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0OiBsYW5ndWFnZUNvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogX3ZtLmNvbXBsZXRlTGFuZ3VhZ2VOYW1lc1tsYW5ndWFnZUNvZGVdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgXCJ0YWJsZVwiLFxuICAgICAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwidHJwLXRyYW5zbGF0aW9ucy1mb3ItbGFuZ3VhZ2VcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zaG93SW1hZ2VJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInRycC10cmFuc2xhdGlvbi1pY29uLWNvbnRhaW5lclwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwic3BhblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRycC10cmFuc2xhdGlvbi1pY29uIGRhc2hpY29ucyBkYXNoaWNvbnMtZm9ybWF0LWltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwidGRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ0cnAtdHJhbnNsYXRpb25zLWNvbnRhaW5lclwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fbChfdm0uc2VsZWN0ZWRJbmRleGVzQXJyYXksIGZ1bmN0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwidHJwLXN0cmluZy1jb250YWluZXJcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZUNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsga2V5OiBzZWxlY3RlZEluZGV4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInRyYW5zbGF0aW9uLWlucHV0XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0VW5zYXZlZENoYW5nZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2UgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uaGFzVW5zYXZlZENoYW5nZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yU3RyaW5nczogX3ZtLmVkaXRvclN0cmluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5lZGl0ZWRUcmFuc2xhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS4kc2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRyYW5zbGF0aW9uc0FycmF5W1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZUNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVkaXRlZFRyYW5zbGF0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJHZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0uZWRpdGVkVHJhbnNsYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBrZXk6IHNlbGVjdGVkSW5kZXggfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidHJhbnNsYXRpb24taW5wdXRcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHk6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vcmlnaW5hbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yU3RyaW5nczogX3ZtLmVkaXRvclN0cmluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtdHJhbnNsYXRpb24taW5wdXQtZm9vdGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRhdGEtZGljdGlvbmFyeS1lbnRyeVwiOiBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ0cnAtYXR0cmlidXRlLW5hbWVcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZWRpdG9yU3RyaW5nc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHJpYnV0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF92bS5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cmlidXRlICE9IFwiY29udGVudFwiIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cmlidXRlICE9IFwiXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfdm0uZWRpdG9yU3RyaW5nc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cmlidXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uZWRpdG9yU3RyaW5ncy50ZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cnAtZGlzY2FyZC1jaGFuZ2VzIHRycC1kaXNjYXJkLWluZGl2aWR1YWwtY2hhbmdlc1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJwLXVuc2F2ZWQtY2hhbmdlc1wiOiBfdm0uaGFzVW5zYXZlZENoYW5nZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmVkaXRvclN0cmluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRpc2NhcmRfaW5kaXZpZHVhbF9jaGFuZ2VzX3RpdGxlX2F0dHJpYnV0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5kaXNjYXJkQ2hhbmdlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKF92bS5lZGl0b3JTdHJpbmdzLmRpc2NhcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlQ29kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJ0cnBfdG13X1wiICsgc2VsZWN0ZWRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJwLXRyYW5zbGF0aW9uLW1lbW9yeS13cmFwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidHJhbnNsYXRpb24tbWVtb3J5XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yU3RyaW5nczogX3ZtLmVkaXRvclN0cmluZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFqYXhfdXJsOiBfdm0uYWpheF91cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbmNlczogX3ZtLm5vbmNlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlOiBsYW5ndWFnZUNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToga2V5ID09IF92bS5vdGhlcnNCdXR0b25Qb3NpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImtleSA9PSBvdGhlcnNCdXR0b25Qb3NpdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLXRvZ2dsZS1sYW5ndWFnZXMgYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJwLXNob3ctb3RoZXItbGFuZ3VhZ2VzXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zaG93T3RoZXJMYW5ndWFnZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRycC1oaWRlLW90aGVyLWxhbmd1YWdlc1wiOiAhX3ZtLnNob3dPdGhlckxhbmd1YWdlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnNob3dPdGhlckxhbmd1YWdlcyA9ICFfdm0uc2hvd090aGVyTGFuZ3VhZ2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJzcGFuXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKF92bS5zaG93T3RoZXJMYW5ndWFnZXMgPyBcIuKWvFwiIDogXCLilrZcIikgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoX3ZtLmVkaXRvclN0cmluZ3Mub3RoZXJfbGFuZylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgICAgXSxcbiAgICAgICAgMlxuICAgICAgKVxuICAgIDogX3ZtLl9lKClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/language-boxes.vue?vue&type=template&id=3f80cf10&\n");
1047
 
1048
  /***/ }),
1049
 
1055
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
1056
 
1057
  "use strict";
1058
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"trp-save-container\" } }, [\n _c(\n \"span\",\n {\n staticStyle: { display: \"none\" },\n attrs: { id: \"trp-translation-saved\" }\n },\n [_vm._v(_vm._s(_vm.editorStrings.saved))]\n ),\n _vm._v(\" \"),\n _c(\n \"span\",\n { staticClass: \"trp-button-container\" },\n [\n _c(\n \"button\",\n {\n staticClass: \"button-primary trp-save-string\",\n class: { \"trp-highlight-for-panel\": _vm.highlightButton },\n attrs: {\n id: \"trp-save\",\n disabled: _vm.disabledSaveButton,\n type: \"submit\"\n },\n on: { click: _vm.save }\n },\n [_vm._v(_vm._s(_vm.saveButtonText))]\n ),\n _vm._v(\" \"),\n _c(\"tooltip\", {\n staticClass: \"trp-save-tooltip\",\n attrs: {\n text: _vm.editorStrings.save_title_attr,\n editorStrings: _vm.editorStrings,\n userMetaHandle: \"dismissTooltipSave\",\n userMeta: _vm.userMeta\n }\n })\n ],\n 1\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvc2F2ZS10cmFuc2xhdGlvbnMudnVlPzUxZTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsU0FBUywyQkFBMkIsRUFBRTtBQUMxRDtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isa0JBQWtCO0FBQ3hDLGdCQUFnQjtBQUNoQixPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sc0NBQXNDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsaURBQWlEO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLGlCQUFpQjtBQUNqQixXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvc2F2ZS10cmFuc2xhdGlvbnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFlYzZlYzU0Ji5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXCJkaXZcIiwgeyBhdHRyczogeyBpZDogXCJ0cnAtc2F2ZS1jb250YWluZXJcIiB9IH0sIFtcbiAgICBfYyhcbiAgICAgIFwic3BhblwiLFxuICAgICAge1xuICAgICAgICBzdGF0aWNTdHlsZTogeyBkaXNwbGF5OiBcIm5vbmVcIiB9LFxuICAgICAgICBhdHRyczogeyBpZDogXCJ0cnAtdHJhbnNsYXRpb24tc2F2ZWRcIiB9XG4gICAgICB9LFxuICAgICAgW192bS5fdihfdm0uX3MoX3ZtLmVkaXRvclN0cmluZ3Muc2F2ZWQpKV1cbiAgICApLFxuICAgIF92bS5fdihcIiBcIiksXG4gICAgX2MoXG4gICAgICBcInNwYW5cIixcbiAgICAgIHsgc3RhdGljQ2xhc3M6IFwidHJwLWJ1dHRvbi1jb250YWluZXJcIiB9LFxuICAgICAgW1xuICAgICAgICBfYyhcbiAgICAgICAgICBcImJ1dHRvblwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImJ1dHRvbi1wcmltYXJ5IHRycC1zYXZlLXN0cmluZ1wiLFxuICAgICAgICAgICAgY2xhc3M6IHsgXCJ0cnAtaGlnaGxpZ2h0LWZvci1wYW5lbFwiOiBfdm0uaGlnaGxpZ2h0QnV0dG9uIH0sXG4gICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICBpZDogXCJ0cnAtc2F2ZVwiLFxuICAgICAgICAgICAgICBkaXNhYmxlZDogX3ZtLmRpc2FibGVkU2F2ZUJ1dHRvbixcbiAgICAgICAgICAgICAgdHlwZTogXCJzdWJtaXRcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uc2F2ZSB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0uc2F2ZUJ1dHRvblRleHQpKV1cbiAgICAgICAgKSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXCJ0b29sdGlwXCIsIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtc2F2ZS10b29sdGlwXCIsXG4gICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgIHRleHQ6IF92bS5lZGl0b3JTdHJpbmdzLnNhdmVfdGl0bGVfYXR0cixcbiAgICAgICAgICAgIGVkaXRvclN0cmluZ3M6IF92bS5lZGl0b3JTdHJpbmdzLFxuICAgICAgICAgICAgdXNlck1ldGFIYW5kbGU6IFwiZGlzbWlzc1Rvb2x0aXBTYXZlXCIsXG4gICAgICAgICAgICB1c2VyTWV0YTogX3ZtLnVzZXJNZXRhXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgXSxcbiAgICAgIDFcbiAgICApXG4gIF0pXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/save-translations.vue?vue&type=template&id=1ec6ec54&\n");
1059
+
1060
+ /***/ }),
1061
+
1062
+ /***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/tooltip.vue?vue&type=template&id=f7e5e3b2&":
1063
+ /*!***********************************************************************************************************************************************************************************************************!*\
1064
+ !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./assets/src/js/components/tooltip.vue?vue&type=template&id=f7e5e3b2& ***!
1065
+ \***********************************************************************************************************************************************************************************************************/
1066
+ /*! exports provided: render, staticRenderFns */
1067
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
1068
+
1069
+ "use strict";
1070
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return !this.userMeta[this.userMetaHandle]\n ? _c(\n \"div\",\n {\n staticClass: \"trp-tooltip-container\",\n staticStyle: { visibility: \"hidden\" }\n },\n [\n _c(\"div\", { staticClass: \"trp-tooltip-triangle\" }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"trp-dismissible-tooltip\" }, [\n _c(\"div\", {\n staticClass: \"trp-close-tooltip\",\n attrs: {\n title: _vm.editorStrings.dismiss_tooltip_title_attribute\n },\n on: { click: _vm.dismiss }\n }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"trp-tooltip-text\" }, [\n _vm._v(_vm._s(_vm.text))\n ])\n ])\n ]\n )\n : _vm._e()\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvdG9vbHRpcC52dWU/ZDQ3YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEIsU0FBUztBQUNUO0FBQ0EscUJBQXFCLHNDQUFzQztBQUMzRDtBQUNBLHFCQUFxQix5Q0FBeUM7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsbUJBQW1CO0FBQ25CLGFBQWE7QUFDYjtBQUNBLHVCQUF1QixrQ0FBa0M7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL2Fzc2V0cy9zcmMvanMvY29tcG9uZW50cy90b29sdGlwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1mN2U1ZTNiMiYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuICF0aGlzLnVzZXJNZXRhW3RoaXMudXNlck1ldGFIYW5kbGVdXG4gICAgPyBfYyhcbiAgICAgICAgXCJkaXZcIixcbiAgICAgICAge1xuICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC10b29sdGlwLWNvbnRhaW5lclwiLFxuICAgICAgICAgIHN0YXRpY1N0eWxlOiB7IHZpc2liaWxpdHk6IFwiaGlkZGVuXCIgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ0cnAtdG9vbHRpcC10cmlhbmdsZVwiIH0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ0cnAtZGlzbWlzc2libGUtdG9vbHRpcFwiIH0sIFtcbiAgICAgICAgICAgIF9jKFwiZGl2XCIsIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLWNsb3NlLXRvb2x0aXBcIixcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogX3ZtLmVkaXRvclN0cmluZ3MuZGlzbWlzc190b29sdGlwX3RpdGxlX2F0dHJpYnV0ZVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLmRpc21pc3MgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ0cnAtdG9vbHRpcC10ZXh0XCIgfSwgW1xuICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS50ZXh0KSlcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgXSlcbiAgICAgICAgXVxuICAgICAgKVxuICAgIDogX3ZtLl9lKClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/tooltip.vue?vue&type=template&id=f7e5e3b2&\n");
1071
 
1072
  /***/ }),
1073
 
1103
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
1104
 
1105
  "use strict";
1106
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"wp-core-ui\", attrs: { id: \"trp-editor\" } }, [\n _c(\n \"div\",\n { attrs: { id: \"trp-controls\" } },\n [\n _c(\"div\", { attrs: { id: \"trp-close-save\" } }, [\n _c(\"a\", {\n attrs: {\n id: \"trp-controls-close\",\n href: _vm.closeURL,\n title: _vm.editorStrings.close\n }\n }),\n _vm._v(\" \"),\n _c(\"button\", {\n staticClass: \"trp-help-toggle dashicons dashicons-editor-help\",\n class: {\n \"trp-help-toggle-open\": _vm.helpPanelOpen,\n \"trp-help-toggle-never-opened\": !_vm.userMeta.helpPanelOpened\n },\n attrs: {\n type: \"button\",\n \"aria-expanded\": \"true\",\n title: _vm.editorStrings.quick_intro_title_attribute\n },\n on: {\n click: function($event) {\n _vm.helpPanelOpen = !_vm.helpPanelOpen\n }\n }\n }),\n _vm._v(\" \"),\n _c(\n \"div\",\n { attrs: { id: \"trp-save-and-loader-spinner\" } },\n [\n _c(\n \"span\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.loading_strings > 0,\n expression: \"loading_strings > 0\"\n }\n ],\n staticClass: \"trp-ajax-loader\",\n attrs: { id: \"trp-string-saved-ajax-loader\" }\n },\n [_c(\"div\", { staticClass: \"trp-spinner\" })]\n ),\n _vm._v(\" \"),\n _c(\"save-translations\", {\n attrs: {\n selectedIndexesArray: _vm.selectedIndexesArray,\n dictionary: _vm.dictionary,\n settings: _vm.settings,\n nonces: _vm.nonces,\n ajax_url: _vm.ajaxUrl,\n currentLanguage: _vm.currentLanguage,\n onScreenLanguage: _vm.onScreenLanguage,\n iframe: _vm.iframe,\n currentURL: _vm.currentURL,\n mergingString: _vm.mergingString,\n mergeData: _vm.mergeData,\n editorStrings: _vm.editorStrings,\n stringTypes: _vm.stringTypes,\n userMeta: _vm.userMeta\n },\n on: {\n \"translations-saved\": function($event) {\n _vm.showChangesUnsavedMessage = false\n }\n }\n })\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"help-panel\", {\n attrs: {\n helpPanelContent: _vm.helpPanelContent,\n editorStrings: _vm.editorStrings,\n helpPanelOpen: _vm.helpPanelOpen\n }\n }),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"trp-controls-container\",\n class: {\n \"trp-show-editors-navigation\": _vm.editorsNavigation.show,\n \"help-panel-open\": _vm.helpPanelOpen\n }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"trp-controls-section\",\n attrs: { id: \"trp-controls-section-first\" }\n },\n [\n _c(\"div\", { staticClass: \"trp-controls-section-content\" }, [\n _c(\n \"div\",\n {\n class: {\n \"trp-highlight-for-panel\": _vm.highlightLanguageSwitcher\n },\n attrs: { id: \"trp-language-switch\" }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.currentLanguage,\n expression: \"currentLanguage\"\n },\n { name: \"select2\", rawName: \"v-select2\" }\n ],\n attrs: { id: \"trp-language-select\", name: \"lang\" },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val = \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.currentLanguage = $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n }\n }\n },\n _vm._l(_vm.languageNames, function(lang, langIndex) {\n return _c(\n \"option\",\n { domProps: { value: langIndex } },\n [_vm._v(_vm._s(lang))]\n )\n }),\n 0\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"trp-string-list\" } }, [\n _c(\n \"div\",\n {\n class: {\n \"trp-highlight-for-panel\": _vm.highlightStringList\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.selectedString,\n expression: \"selectedString\"\n },\n { name: \"select2\", rawName: \"v-select2\" }\n ],\n attrs: { id: \"trp-string-categories\" },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val = \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.selectedString = $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n }\n }\n },\n _vm._l(_vm.stringGroups, function(group) {\n return _c(\n \"optgroup\",\n { attrs: { label: group } },\n _vm._l(_vm.dictionary, function(string, index) {\n return _vm.showString(string, group)\n ? _c(\n \"option\",\n {\n attrs: {\n title: string.description,\n \"data-database-id\": string.dbID,\n \"data-group\": string.group\n },\n domProps: { value: index }\n },\n [\n _vm._v(\n _vm._s(\n _vm.processOptionName(\n string.original,\n group\n )\n )\n )\n ]\n )\n : _vm._e()\n }),\n 0\n )\n }),\n 0\n )\n ]\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"trp-next-previous\" } }, [\n _c(\n \"div\",\n { staticClass: \"trp-button-container\" },\n [\n _c(\n \"button\",\n {\n staticClass: \"trp-next-previous-buttons button\",\n attrs: { type: \"button\", id: \"trp-previous\" },\n on: {\n click: function($event) {\n _vm.previousString()\n }\n }\n },\n [\n _c(\"span\", [_vm._v(\"«\")]),\n _vm._v(\" \" + _vm._s(_vm.editorStrings.previous))\n ]\n ),\n _vm._v(\" \"),\n _c(\"tooltip\", {\n staticClass: \"trp-previous-tooltip\",\n attrs: {\n text: _vm.editorStrings.previous_title_attr,\n editorStrings: _vm.editorStrings,\n userMetaHandle: \"dismissTooltipPrevious\",\n userMeta: _vm.userMeta\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"trp-button-container\" },\n [\n _c(\n \"button\",\n {\n staticClass: \"trp-next-previous-buttons button\",\n attrs: { type: \"button\", id: \"trp-next\" },\n on: {\n click: function($event) {\n _vm.nextString()\n }\n }\n },\n [\n _vm._v(_vm._s(_vm.editorStrings.next) + \" \"),\n _c(\"span\", [_vm._v(\"»\")])\n ]\n ),\n _vm._v(\" \"),\n _c(\"tooltip\", {\n staticClass: \"trp-next-tooltip\",\n attrs: {\n text: _vm.editorStrings.next_title_attr,\n editorStrings: _vm.editorStrings,\n userMetaHandle: \"dismissTooltipNext\",\n userMeta: _vm.userMeta\n }\n })\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"trp-view-as\" } }, [\n _c(\"div\", { attrs: { id: \"trp-view-as-description\" } }, [\n _vm._v(_vm._s(_vm.editorStrings.view_as))\n ]),\n _vm._v(\" \"),\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.viewAs,\n expression: \"viewAs\"\n },\n { name: \"select2\", rawName: \"v-select2\" }\n ],\n attrs: { id: \"trp-view-as-select\" },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val = \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.viewAs = $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n }\n }\n },\n _vm._l(_vm.roles, function(role, roleIndex) {\n return _c(\n \"option\",\n {\n attrs: {\n disabled: !role,\n title: !role ? _vm.editorStrings.view_as_pro : \"\"\n },\n domProps: { value: role }\n },\n [_vm._v(_vm._s(roleIndex))]\n )\n }),\n 0\n )\n ])\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.selectedString !== null,\n expression: \"selectedString !== null\"\n }\n ],\n staticClass: \"trp-controls-section\"\n },\n [\n _c(\"language-boxes\", {\n attrs: {\n selectedIndexesArray: _vm.selectedIndexesArray,\n dictionary: _vm.dictionary,\n currentLanguage: _vm.currentLanguage,\n onScreenLanguage: _vm.onScreenLanguage,\n languageNames: _vm.languageNames,\n settings: _vm.settings,\n showChangesUnsavedMessage: _vm.showChangesUnsavedMessage,\n editorStrings: _vm.editorStrings,\n flagsPath: _vm.flagsPath,\n iframe: _vm.iframe,\n nonces: _vm.nonces,\n ajax_url: _vm.ajaxUrl,\n userMeta: _vm.userMeta\n },\n on: {\n \"discarded-changes\": function($event) {\n _vm.hasUnsavedChanges()\n }\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"extra-content\", {\n attrs: {\n languageNames: _vm.languageNames,\n editorStrings: _vm.editorStrings,\n paidVersion: _vm.paidVersion\n }\n }),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.translationNotLoadedYet,\n expression: \"translationNotLoadedYet\"\n }\n ],\n staticClass: \"trp-controls-section\"\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"trp-controls-section-content\",\n attrs: { id: \"trp-translation-not-ready-section\" }\n },\n [\n _c(\"p\", {\n domProps: {\n innerHTML: _vm._s(\n _vm.editorStrings.translation_not_loaded_yet\n )\n }\n })\n ]\n )\n ]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"editors-navigation\", {\n attrs: {\n editorsNavigation: _vm.editorsNavigation,\n selectedTab: \"visualeditor\"\n }\n }),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"trp_select2_overlay\" } }),\n _vm._v(\" \"),\n _c(\"hover-actions\", {\n ref: \"hoverActions\",\n attrs: {\n dictionary: _vm.dictionary,\n settings: _vm.settings,\n iframe: _vm.iframe,\n dataAttributes: _vm.dataAttributes,\n mergeRules: _vm.mergeRules,\n nonces: _vm.nonces,\n ajax_url: _vm.ajaxUrl,\n mergeData: _vm.mergeData,\n editorStrings: _vm.editorStrings,\n currentLanguage: _vm.currentLanguage\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"trp-preview\" } }, [\n _c(\"iframe\", {\n attrs: { id: \"trp-preview-iframe\", src: _vm.urlToLoad },\n on: { load: _vm.iFrameLoaded }\n }),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"trp-loading-screen\",\n attrs: { id: \"trp-preview-loader\" }\n },\n [\n _c(\n \"svg\",\n {\n staticClass: \"trp-loader\",\n attrs: {\n width: \"65px\",\n height: \"65px\",\n viewBox: \"0 0 66 66\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }\n },\n [\n _c(\"circle\", {\n staticClass: \"trp-circle\",\n attrs: {\n fill: \"none\",\n \"stroke-width\": \"6\",\n \"stroke-linecap\": \"round\",\n cx: \"33\",\n cy: \"33\",\n r: \"30\"\n }\n })\n ]\n )\n ]\n )\n ])\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL2VkaXRvci52dWU/NTEwNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixvQ0FBb0MsbUJBQW1CLEVBQUU7QUFDN0U7QUFDQTtBQUNBLE9BQU8sU0FBUyxxQkFBcUIsRUFBRTtBQUN2QztBQUNBLG1CQUFtQixTQUFTLHVCQUF1QixFQUFFO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxhQUFhLFNBQVMsb0NBQW9DLEVBQUU7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUIsaUJBQWlCO0FBQ2pCLDRCQUE0Qiw2QkFBNkI7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QixlQUFlO0FBQ2Y7QUFDQSwyQkFBMkIsOENBQThDO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkIsOEJBQThCO0FBQzlCLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3Qiw2QkFBNkI7QUFDN0I7QUFDQSxrQ0FBa0MsMENBQTBDO0FBQzVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLFlBQVksbUJBQW1CLEVBQUU7QUFDOUQ7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLFNBQVMsd0JBQXdCLEVBQUU7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CLCtCQUErQjtBQUMvQjtBQUNBLG9DQUFvQyw4QkFBOEI7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQztBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsU0FBUyxlQUFlLEVBQUU7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDLG1EQUFtRDtBQUNuRCx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLFNBQVMsMEJBQTBCLEVBQUU7QUFDbEU7QUFDQTtBQUNBLHVCQUF1QixzQ0FBc0M7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxxQ0FBcUM7QUFDekU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixzQ0FBc0M7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxpQ0FBaUM7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsU0FBUyxvQkFBb0IsRUFBRTtBQUM1RCwrQkFBK0IsU0FBUyxnQ0FBZ0MsRUFBRTtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0IsMkJBQTJCO0FBQzNCO0FBQ0EsZ0NBQWdDLDJCQUEyQjtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCLHVDQUF1QztBQUN2QywyQkFBMkI7QUFDM0I7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7QUFDNUIsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsbUJBQW1CLFNBQVMsNEJBQTRCLEVBQUU7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxTQUFTLG9CQUFvQixFQUFFO0FBQzlDO0FBQ0EsZ0JBQWdCLCtDQUErQztBQUMvRCxhQUFhO0FBQ2IsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEIsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vYXNzZXRzL3NyYy9qcy9lZGl0b3IudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWIwNDZlOGVjJi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ3cC1jb3JlLXVpXCIsIGF0dHJzOiB7IGlkOiBcInRycC1lZGl0b3JcIiB9IH0sIFtcbiAgICBfYyhcbiAgICAgIFwiZGl2XCIsXG4gICAgICB7IGF0dHJzOiB7IGlkOiBcInRycC1jb250cm9sc1wiIH0gfSxcbiAgICAgIFtcbiAgICAgICAgX2MoXCJkaXZcIiwgeyBhdHRyczogeyBpZDogXCJ0cnAtY2xvc2Utc2F2ZVwiIH0gfSwgW1xuICAgICAgICAgIF9jKFwiYVwiLCB7XG4gICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICBpZDogXCJ0cnAtY29udHJvbHMtY2xvc2VcIixcbiAgICAgICAgICAgICAgaHJlZjogX3ZtLmNsb3NlVVJMLFxuICAgICAgICAgICAgICB0aXRsZTogX3ZtLmVkaXRvclN0cmluZ3MuY2xvc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFwiYnV0dG9uXCIsIHtcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1oZWxwLXRvZ2dsZSBkYXNoaWNvbnMgZGFzaGljb25zLWVkaXRvci1oZWxwXCIsXG4gICAgICAgICAgICBjbGFzczoge1xuICAgICAgICAgICAgICBcInRycC1oZWxwLXRvZ2dsZS1vcGVuXCI6IF92bS5oZWxwUGFuZWxPcGVuLFxuICAgICAgICAgICAgICBcInRycC1oZWxwLXRvZ2dsZS1uZXZlci1vcGVuZWRcIjogIV92bS51c2VyTWV0YS5oZWxwUGFuZWxPcGVuZWRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICBcImFyaWEtZXhwYW5kZWRcIjogXCJ0cnVlXCIsXG4gICAgICAgICAgICAgIHRpdGxlOiBfdm0uZWRpdG9yU3RyaW5ncy5xdWlja19pbnRyb190aXRsZV9hdHRyaWJ1dGVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgX3ZtLmhlbHBQYW5lbE9wZW4gPSAhX3ZtLmhlbHBQYW5lbE9wZW5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgeyBhdHRyczogeyBpZDogXCJ0cnAtc2F2ZS1hbmQtbG9hZGVyLXNwaW5uZXJcIiB9IH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5sb2FkaW5nX3N0cmluZ3MgPiAwLFxuICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwibG9hZGluZ19zdHJpbmdzID4gMFwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtYWpheC1sb2FkZXJcIixcbiAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IGlkOiBcInRycC1zdHJpbmctc2F2ZWQtYWpheC1sb2FkZXJcIiB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ0cnAtc3Bpbm5lclwiIH0pXVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICBfYyhcInNhdmUtdHJhbnNsYXRpb25zXCIsIHtcbiAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJbmRleGVzQXJyYXk6IF92bS5zZWxlY3RlZEluZGV4ZXNBcnJheSxcbiAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnk6IF92bS5kaWN0aW9uYXJ5LFxuICAgICAgICAgICAgICAgICAgc2V0dGluZ3M6IF92bS5zZXR0aW5ncyxcbiAgICAgICAgICAgICAgICAgIG5vbmNlczogX3ZtLm5vbmNlcyxcbiAgICAgICAgICAgICAgICAgIGFqYXhfdXJsOiBfdm0uYWpheFVybCxcbiAgICAgICAgICAgICAgICAgIGN1cnJlbnRMYW5ndWFnZTogX3ZtLmN1cnJlbnRMYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgIG9uU2NyZWVuTGFuZ3VhZ2U6IF92bS5vblNjcmVlbkxhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgaWZyYW1lOiBfdm0uaWZyYW1lLFxuICAgICAgICAgICAgICAgICAgY3VycmVudFVSTDogX3ZtLmN1cnJlbnRVUkwsXG4gICAgICAgICAgICAgICAgICBtZXJnaW5nU3RyaW5nOiBfdm0ubWVyZ2luZ1N0cmluZyxcbiAgICAgICAgICAgICAgICAgIG1lcmdlRGF0YTogX3ZtLm1lcmdlRGF0YSxcbiAgICAgICAgICAgICAgICAgIGVkaXRvclN0cmluZ3M6IF92bS5lZGl0b3JTdHJpbmdzLFxuICAgICAgICAgICAgICAgICAgc3RyaW5nVHlwZXM6IF92bS5zdHJpbmdUeXBlcyxcbiAgICAgICAgICAgICAgICAgIHVzZXJNZXRhOiBfdm0udXNlck1ldGFcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICBcInRyYW5zbGF0aW9ucy1zYXZlZFwiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLnNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2UgPSBmYWxzZVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKVxuICAgICAgICBdKSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXCJoZWxwLXBhbmVsXCIsIHtcbiAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgaGVscFBhbmVsQ29udGVudDogX3ZtLmhlbHBQYW5lbENvbnRlbnQsXG4gICAgICAgICAgICBlZGl0b3JTdHJpbmdzOiBfdm0uZWRpdG9yU3RyaW5ncyxcbiAgICAgICAgICAgIGhlbHBQYW5lbE9wZW46IF92bS5oZWxwUGFuZWxPcGVuXG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXG4gICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtY29udHJvbHMtY29udGFpbmVyXCIsXG4gICAgICAgICAgICBjbGFzczoge1xuICAgICAgICAgICAgICBcInRycC1zaG93LWVkaXRvcnMtbmF2aWdhdGlvblwiOiBfdm0uZWRpdG9yc05hdmlnYXRpb24uc2hvdyxcbiAgICAgICAgICAgICAgXCJoZWxwLXBhbmVsLW9wZW5cIjogX3ZtLmhlbHBQYW5lbE9wZW5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLWNvbnRyb2xzLXNlY3Rpb25cIixcbiAgICAgICAgICAgICAgICBhdHRyczogeyBpZDogXCJ0cnAtY29udHJvbHMtc2VjdGlvbi1maXJzdFwiIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidHJwLWNvbnRyb2xzLXNlY3Rpb24tY29udGVudFwiIH0sIFtcbiAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJwLWhpZ2hsaWdodC1mb3ItcGFuZWxcIjogX3ZtLmhpZ2hsaWdodExhbmd1YWdlU3dpdGNoZXJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IGlkOiBcInRycC1sYW5ndWFnZS1zd2l0Y2hcIiB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic2VsZWN0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uY3VycmVudExhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJjdXJyZW50TGFuZ3VhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiBcInNlbGVjdDJcIiwgcmF3TmFtZTogXCJ2LXNlbGVjdDJcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IGlkOiBcInRycC1sYW5ndWFnZS1zZWxlY3RcIiwgbmFtZTogXCJsYW5nXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2U6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyICQkc2VsZWN0ZWRWYWwgPSBBcnJheS5wcm90b3R5cGUuZmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jYWxsKCRldmVudC50YXJnZXQub3B0aW9ucywgZnVuY3Rpb24obykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvLnNlbGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24obykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSBcIl92YWx1ZVwiIGluIG8gPyBvLl92YWx1ZSA6IG8udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uY3VycmVudExhbmd1YWdlID0gJGV2ZW50LnRhcmdldC5tdWx0aXBsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICQkc2VsZWN0ZWRWYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkJHNlbGVjdGVkVmFsWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9sKF92bS5sYW5ndWFnZU5hbWVzLCBmdW5jdGlvbihsYW5nLCBsYW5nSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3B0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBkb21Qcm9wczogeyB2YWx1ZTogbGFuZ0luZGV4IH0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhsYW5nKSldXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IGlkOiBcInRycC1zdHJpbmctbGlzdFwiIH0gfSwgW1xuICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJwLWhpZ2hsaWdodC1mb3ItcGFuZWxcIjogX3ZtLmhpZ2hsaWdodFN0cmluZ0xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcInNlbGVjdFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnNlbGVjdGVkU3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInNlbGVjdGVkU3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6IFwic2VsZWN0MlwiLCByYXdOYW1lOiBcInYtc2VsZWN0MlwiIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IGlkOiBcInRycC1zdHJpbmctY2F0ZWdvcmllc1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZTogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkJHNlbGVjdGVkVmFsID0gQXJyYXkucHJvdG90eXBlLmZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jYWxsKCRldmVudC50YXJnZXQub3B0aW9ucywgZnVuY3Rpb24obykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8uc2VsZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24obykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbCA9IFwiX3ZhbHVlXCIgaW4gbyA/IG8uX3ZhbHVlIDogby52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zZWxlY3RlZFN0cmluZyA9ICRldmVudC50YXJnZXQubXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICQkc2VsZWN0ZWRWYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICQkc2VsZWN0ZWRWYWxbMF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fbChfdm0uc3RyaW5nR3JvdXBzLCBmdW5jdGlvbihncm91cCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3B0Z3JvdXBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgbGFiZWw6IGdyb3VwIH0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fbChfdm0uZGljdGlvbmFyeSwgZnVuY3Rpb24oc3RyaW5nLCBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLnNob3dTdHJpbmcoc3RyaW5nLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm9wdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzdHJpbmcuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRhdGEtZGF0YWJhc2UtaWRcIjogc3RyaW5nLmRiSUQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRhdGEtZ3JvdXBcIjogc3RyaW5nLmdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21Qcm9wczogeyB2YWx1ZTogaW5kZXggfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0ucHJvY2Vzc09wdGlvbk5hbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nLm9yaWdpbmFsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IGlkOiBcInRycC1uZXh0LXByZXZpb3VzXCIgfSB9LCBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ0cnAtYnV0dG9uLWNvbnRhaW5lclwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtbmV4dC1wcmV2aW91cy1idXR0b25zIGJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHR5cGU6IFwiYnV0dG9uXCIsIGlkOiBcInRycC1wcmV2aW91c1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnByZXZpb3VzU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInNwYW5cIiwgW192bS5fdihcIsKrXCIpXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiICsgX3ZtLl9zKF92bS5lZGl0b3JTdHJpbmdzLnByZXZpb3VzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBfYyhcInRvb2x0aXBcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtcHJldmlvdXMtdG9vbHRpcFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IF92bS5lZGl0b3JTdHJpbmdzLnByZXZpb3VzX3RpdGxlX2F0dHIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yU3RyaW5nczogX3ZtLmVkaXRvclN0cmluZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlck1ldGFIYW5kbGU6IFwiZGlzbWlzc1Rvb2x0aXBQcmV2aW91c1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJNZXRhOiBfdm0udXNlck1ldGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInRycC1idXR0b24tY29udGFpbmVyXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1uZXh0LXByZXZpb3VzLWJ1dHRvbnMgYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgdHlwZTogXCJidXR0b25cIiwgaWQ6IFwidHJwLW5leHRcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5uZXh0U3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS5lZGl0b3JTdHJpbmdzLm5leHQpICsgXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwic3BhblwiLCBbX3ZtLl92KFwiwrtcIildKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidG9vbHRpcFwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1uZXh0LXRvb2x0aXBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBfdm0uZWRpdG9yU3RyaW5ncy5uZXh0X3RpdGxlX2F0dHIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yU3RyaW5nczogX3ZtLmVkaXRvclN0cmluZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlck1ldGFIYW5kbGU6IFwiZGlzbWlzc1Rvb2x0aXBOZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlck1ldGE6IF92bS51c2VyTWV0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IGlkOiBcInRycC12aWV3LWFzXCIgfSB9LCBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgYXR0cnM6IHsgaWQ6IFwidHJwLXZpZXctYXMtZGVzY3JpcHRpb25cIiB9IH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS5lZGl0b3JTdHJpbmdzLnZpZXdfYXMpKVxuICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgXCJzZWxlY3RcIixcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LW1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS52aWV3QXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJ2aWV3QXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6IFwic2VsZWN0MlwiLCByYXdOYW1lOiBcInYtc2VsZWN0MlwiIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBpZDogXCJ0cnAtdmlldy1hcy1zZWxlY3RcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgJCRzZWxlY3RlZFZhbCA9IEFycmF5LnByb3RvdHlwZS5maWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jYWxsKCRldmVudC50YXJnZXQub3B0aW9ucywgZnVuY3Rpb24obykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gby5zZWxlY3RlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24obykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsID0gXCJfdmFsdWVcIiBpbiBvID8gby5fdmFsdWUgOiBvLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnZpZXdBcyA9ICRldmVudC50YXJnZXQubXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJCRzZWxlY3RlZFZhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkJHNlbGVjdGVkVmFsWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIF92bS5fbChfdm0ucm9sZXMsIGZ1bmN0aW9uKHJvbGUsIHJvbGVJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIm9wdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiAhcm9sZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAhcm9sZSA/IF92bS5lZGl0b3JTdHJpbmdzLnZpZXdfYXNfcHJvIDogXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tUHJvcHM6IHsgdmFsdWU6IHJvbGUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhyb2xlSW5kZXgpKV1cbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uc2VsZWN0ZWRTdHJpbmcgIT09IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwic2VsZWN0ZWRTdHJpbmcgIT09IG51bGxcIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLWNvbnRyb2xzLXNlY3Rpb25cIlxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgX2MoXCJsYW5ndWFnZS1ib3hlc1wiLCB7XG4gICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEluZGV4ZXNBcnJheTogX3ZtLnNlbGVjdGVkSW5kZXhlc0FycmF5LFxuICAgICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5OiBfdm0uZGljdGlvbmFyeSxcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudExhbmd1YWdlOiBfdm0uY3VycmVudExhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgICBvblNjcmVlbkxhbmd1YWdlOiBfdm0ub25TY3JlZW5MYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VOYW1lczogX3ZtLmxhbmd1YWdlTmFtZXMsXG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmdzOiBfdm0uc2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgICAgIHNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2U6IF92bS5zaG93Q2hhbmdlc1Vuc2F2ZWRNZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICBlZGl0b3JTdHJpbmdzOiBfdm0uZWRpdG9yU3RyaW5ncyxcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3NQYXRoOiBfdm0uZmxhZ3NQYXRoLFxuICAgICAgICAgICAgICAgICAgICBpZnJhbWU6IF92bS5pZnJhbWUsXG4gICAgICAgICAgICAgICAgICAgIG5vbmNlczogX3ZtLm5vbmNlcyxcbiAgICAgICAgICAgICAgICAgICAgYWpheF91cmw6IF92bS5hamF4VXJsLFxuICAgICAgICAgICAgICAgICAgICB1c2VyTWV0YTogX3ZtLnVzZXJNZXRhXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgXCJkaXNjYXJkZWQtY2hhbmdlc1wiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uaGFzVW5zYXZlZENoYW5nZXMoKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICBfYyhcImV4dHJhLWNvbnRlbnRcIiwge1xuICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgIGxhbmd1YWdlTmFtZXM6IF92bS5sYW5ndWFnZU5hbWVzLFxuICAgICAgICAgICAgICAgIGVkaXRvclN0cmluZ3M6IF92bS5lZGl0b3JTdHJpbmdzLFxuICAgICAgICAgICAgICAgIHBhaWRWZXJzaW9uOiBfdm0ucGFpZFZlcnNpb25cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnRyYW5zbGF0aW9uTm90TG9hZGVkWWV0LFxuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInRyYW5zbGF0aW9uTm90TG9hZGVkWWV0XCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1jb250cm9scy1zZWN0aW9uXCJcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLWNvbnRyb2xzLXNlY3Rpb24tY29udGVudFwiLFxuICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBpZDogXCJ0cnAtdHJhbnNsYXRpb24tbm90LXJlYWR5LXNlY3Rpb25cIiB9XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBfYyhcInBcIiwge1xuICAgICAgICAgICAgICAgICAgICAgIGRvbVByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbm5lckhUTUw6IF92bS5fcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmVkaXRvclN0cmluZ3MudHJhbnNsYXRpb25fbm90X2xvYWRlZF95ZXRcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApXG4gICAgICAgICAgXSxcbiAgICAgICAgICAxXG4gICAgICAgICksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwiZWRpdG9ycy1uYXZpZ2F0aW9uXCIsIHtcbiAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgZWRpdG9yc05hdmlnYXRpb246IF92bS5lZGl0b3JzTmF2aWdhdGlvbixcbiAgICAgICAgICAgIHNlbGVjdGVkVGFiOiBcInZpc3VhbGVkaXRvclwiXG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXCJkaXZcIiwgeyBhdHRyczogeyBpZDogXCJ0cnBfc2VsZWN0Ml9vdmVybGF5XCIgfSB9KSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXCJob3Zlci1hY3Rpb25zXCIsIHtcbiAgICAgICAgICByZWY6IFwiaG92ZXJBY3Rpb25zXCIsXG4gICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgIGRpY3Rpb25hcnk6IF92bS5kaWN0aW9uYXJ5LFxuICAgICAgICAgICAgc2V0dGluZ3M6IF92bS5zZXR0aW5ncyxcbiAgICAgICAgICAgIGlmcmFtZTogX3ZtLmlmcmFtZSxcbiAgICAgICAgICAgIGRhdGFBdHRyaWJ1dGVzOiBfdm0uZGF0YUF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBtZXJnZVJ1bGVzOiBfdm0ubWVyZ2VSdWxlcyxcbiAgICAgICAgICAgIG5vbmNlczogX3ZtLm5vbmNlcyxcbiAgICAgICAgICAgIGFqYXhfdXJsOiBfdm0uYWpheFVybCxcbiAgICAgICAgICAgIG1lcmdlRGF0YTogX3ZtLm1lcmdlRGF0YSxcbiAgICAgICAgICAgIGVkaXRvclN0cmluZ3M6IF92bS5lZGl0b3JTdHJpbmdzLFxuICAgICAgICAgICAgY3VycmVudExhbmd1YWdlOiBfdm0uY3VycmVudExhbmd1YWdlXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgXSxcbiAgICAgIDFcbiAgICApLFxuICAgIF92bS5fdihcIiBcIiksXG4gICAgX2MoXCJkaXZcIiwgeyBhdHRyczogeyBpZDogXCJ0cnAtcHJldmlld1wiIH0gfSwgW1xuICAgICAgX2MoXCJpZnJhbWVcIiwge1xuICAgICAgICBhdHRyczogeyBpZDogXCJ0cnAtcHJldmlldy1pZnJhbWVcIiwgc3JjOiBfdm0udXJsVG9Mb2FkIH0sXG4gICAgICAgIG9uOiB7IGxvYWQ6IF92bS5pRnJhbWVMb2FkZWQgfVxuICAgICAgfSksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtbG9hZGluZy1zY3JlZW5cIixcbiAgICAgICAgICBhdHRyczogeyBpZDogXCJ0cnAtcHJldmlldy1sb2FkZXJcIiB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwic3ZnXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1sb2FkZXJcIixcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogXCI2NXB4XCIsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBcIjY1cHhcIixcbiAgICAgICAgICAgICAgICB2aWV3Qm94OiBcIjAgMCA2NiA2NlwiLFxuICAgICAgICAgICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXCJjaXJjbGVcIiwge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1jaXJjbGVcIixcbiAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgICAgICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjZcIixcbiAgICAgICAgICAgICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICAgICAgICAgICAgY3g6IFwiMzNcIixcbiAgICAgICAgICAgICAgICAgIGN5OiBcIjMzXCIsXG4gICAgICAgICAgICAgICAgICByOiBcIjMwXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBdXG4gICAgICAgICAgKVxuICAgICAgICBdXG4gICAgICApXG4gICAgXSlcbiAgXSlcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/editor.vue?vue&type=template&id=b046e8ec&\n");
1107
 
1108
  /***/ }),
1109
 
assets/js/trp-string-translation-editor.js CHANGED
@@ -482,6 +482,42 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod
482
 
483
  /***/ }),
484
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
485
  /***/ "./assets/src/js/components/translation-input.vue":
486
  /*!********************************************************!*\
487
  !*** ./assets/src/js/components/translation-input.vue ***!
@@ -967,7 +1003,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uti
967
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
968
 
969
  "use strict";
970
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _translation_input_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./translation-input.vue */ \"./assets/src/js/components/translation-input.vue\");\n/* harmony import */ var _translation_memory_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./translation-memory.vue */ \"./assets/src/js/components/translation-memory.vue\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: ['selectedIndexesArray', 'dictionary', 'currentLanguage', 'onScreenLanguage', 'languageNames', 'settings', 'showChangesUnsavedMessage', 'editorStrings', 'flagsPath', 'iframe', 'nonces', 'ajax_url'],\n data: function data() {\n return {\n languages: [],\n completeLanguageNames: Object.assign({\n 'original': 'Original String'\n }, this.languageNames),\n othersButtonPositionOffset: 1,\n showOtherLanguages: false,\n orderedLanguages: [],\n showImageIcon: true\n };\n },\n components: {\n translationInput: _translation_input_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n translationMemory: _translation_memory_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n },\n mounted: function mounted() {\n this.determineLanguageOrder();\n this.addKeyboardShortcutsListener();\n },\n updated: function updated() {\n // if already active do nothing\n if (document.activeElement.classList.contains('trp-translation-input') || document.activeElement.classList.contains('trp-editor-body')) // when clicking translation memory result, don't move cursor\n {\n return;\n } // place the cursor in the first textarea or input for translation\n\n\n var translationSection = document.getElementById('trp-translation-section');\n\n if (translationSection) {\n var focusableSelectors = ['textarea:not([readonly])', 'input[type=\"text\"]:not([readonly])'];\n\n for (var i = 0; i < focusableSelectors.length; i++) {\n var focusable = document.getElementById('trp-translation-section').querySelector(focusableSelectors[i]);\n\n if (focusable) {\n focusable.focus();\n break;\n }\n }\n }\n },\n watch: {\n selectedIndexesArray: function selectedIndexesArray() {\n this.updateLanguages();\n },\n onScreenLanguage: function onScreenLanguage() {\n this.determineLanguageOrder();\n this.updateLanguages();\n }\n },\n computed: {\n othersButtonPosition: function othersButtonPosition() {\n if (this.currentLanguage === this.settings['default-language'] || this.settings['translation-languages'].length <= 2) {\n // don't display it\n return 999;\n } else {\n return this.othersButtonPositionOffset;\n }\n }\n },\n methods: {\n determineLanguageOrder: function determineLanguageOrder() {\n var self = this;\n var filteredLanguages = this.settings['translation-languages'].filter(function (language, index, array) {\n // all languages except default and current or on screen language.\n return self.settings['default-language'] !== language && self.onScreenLanguage !== language;\n });\n this.orderedLanguages = [];\n this.orderedLanguages.push(this.settings['default-language']);\n if (this.onScreenLanguage !== '') this.orderedLanguages.push(this.onScreenLanguage);\n this.orderedLanguages = this.orderedLanguages.concat(filteredLanguages);\n },\n updateLanguages: function updateLanguages() {\n this.languages = [];\n var self = this;\n var defaultLanguage = this.settings['default-language'];\n var translateToDefault = false;\n this.showImageIcon = false;\n this.othersButtonPositionOffset = 1;\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n if (self.dictionary[selectedIndex] && self.dictionary[selectedIndex].translationsArray[defaultLanguage]) translateToDefault = true;\n if (self.dictionary[selectedIndex] && self.dictionary[selectedIndex].attribute === 'src') self.showImageIcon = true;\n });\n\n if (translateToDefault) {\n this.languages.push('original');\n this.othersButtonPositionOffset++;\n }\n\n this.languages = this.languages.concat(this.orderedLanguages);\n },\n discardChanges: function discardChanges(selectedIndex, languageCode) {\n this.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation = this.dictionary[selectedIndex].translationsArray[languageCode].translated;\n this.$emit('discarded-changes');\n },\n hasUnsavedChanges: function hasUnsavedChanges(selectedIndex, languageCode) {\n return this.dictionary[selectedIndex].translationsArray[languageCode].translated !== this.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation;\n },\n discardAll: function discardAll() {\n var self = this;\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n self.settings['translation-languages'].forEach(function (languageCode) {\n if (self.dictionary[selectedIndex].translationsArray[languageCode] && self.dictionary[selectedIndex].translationsArray[languageCode].translated !== self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation) {\n self.discardChanges(selectedIndex, languageCode);\n }\n });\n });\n\n if (this.$parent.mergingString === true) {\n this.$parent.selectedString = null;\n var previouslyHighlighted = this.iframe.getElementsByClassName('trp-create-translation-block');\n\n if (previouslyHighlighted.length > 0) {\n var i;\n\n for (i = 0; i < previouslyHighlighted.length; i++) {\n previouslyHighlighted[i].classList.remove('trp-highlight');\n previouslyHighlighted[i].classList.remove('trp-create-translation-block');\n }\n }\n\n this.$parent.mergingString = false;\n this.$parent.mergeData = [];\n }\n },\n addKeyboardShortcutsListener: function addKeyboardShortcutsListener() {\n document.addEventListener(\"keydown\", function (e) {\n // CTRL + ALT + Z\n if ((window.navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey) && e.altKey && e.keyCode === 90) {\n e.preventDefault();\n window.dispatchEvent(new Event('trp_trigger_discard_all_changes_event'));\n }\n }, false);\n window.addEventListener('trp_trigger_discard_all_changes_event', this.discardAll);\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vYXNzZXRzL3NyYy9qcy9jb21wb25lbnRzL2xhbmd1YWdlLWJveGVzLnZ1ZT80OWJjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE0Q0E7QUFDQTtBQUNBO0FBQ0EsVUFDQSxzQkFEQSxFQUVBLFlBRkEsRUFHQSxpQkFIQSxFQUlBLGtCQUpBLEVBS0EsZUFMQSxFQU1BLFVBTkEsRUFPQSwyQkFQQSxFQVFBLGVBUkEsRUFTQSxXQVRBLEVBVUEsUUFWQSxFQVdBLFFBWEEsRUFZQSxVQVpBLENBREE7QUFlQSxNQWZBLGtCQWVBO0FBQ0E7QUFDQSxtQkFEQTtBQUVBO0FBQUE7QUFBQSw0QkFGQTtBQUdBLG1DQUhBO0FBSUEsK0JBSkE7QUFLQSwwQkFMQTtBQU1BO0FBTkE7QUFRQSxHQXhCQTtBQXlCQTtBQUNBLG9GQURBO0FBRUE7QUFGQSxHQXpCQTtBQTZCQSxTQTdCQSxxQkE2QkE7QUFDQTtBQUNBO0FBQ0EsR0FoQ0E7QUFpQ0EsU0FqQ0EscUJBaUNBO0FBQ0E7QUFDQSw4RUFDQSw0REFEQSxFQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTkEsQ0FPQTs7O0FBQ0E7O0FBQ0E7QUFDQTs7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBcERBO0FBcURBO0FBQ0E7QUFDQTtBQUNBLEtBSEE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQVBBLEdBckRBO0FBOERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUhBLE1BR0E7QUFDQTtBQUNBO0FBQ0E7QUFSQSxHQTlEQTtBQXdFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUhBO0FBSUE7QUFDQTtBQUNBLHdDQUNBO0FBQ0E7QUFDQSxLQVpBO0FBYUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBLGlIQUNBO0FBQ0Esa0dBQ0E7QUFDQSxPQUxBOztBQU9BO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FsQ0E7QUFtQ0E7QUFDQTtBQUNBO0FBQ0EsS0F0Q0E7QUF1Q0E7QUFDQTtBQUNBLEtBekNBO0FBMENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0ZBQ0EsOEpBREEsRUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUxBO0FBTUEsT0FQQTs7QUFTQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBbEVBO0FBbUVBLGdDQW5FQSwwQ0FtRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQU5BLEVBTUEsS0FOQTtBQVFBO0FBQ0E7QUE3RUE7QUF4RUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vYXNzZXRzL3NyYy9qcy9jb21wb25lbnRzL2xhbmd1YWdlLWJveGVzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgPGRpdiBpZD1cInRycC10cmFuc2xhdGlvbi1zZWN0aW9uXCIgY2xhc3M9XCJ0cnAtY29udHJvbHMtc2VjdGlvbi1jb250ZW50XCIgdi1pZj1cInNlbGVjdGVkSW5kZXhlc0FycmF5XCI+XG4gICAgICAgIDxkaXYgdi1zaG93PVwic2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZVwiIGNsYXNzPVwidHJwLWNoYW5nZXMtdW5zYXZlZC1tZXNzYWdlXCI+e3sgZWRpdG9yU3RyaW5ncy51bnNhdmVkX2NoYW5nZXMgfX0gPHNwYW4gY2xhc3M9XCJ0cnAtdW5zYXZlZC1jaGFuZ2VzIHRycC1kaXNjYXJkLWNoYW5nZXMgXCJAY2xpY2s9XCJkaXNjYXJkQWxsXCIgOnRpdGxlPVwiZWRpdG9yU3RyaW5ncy5kaXNjYXJkX2FsbF90aXRsZV9hdHRyXCI+e3sgZWRpdG9yU3RyaW5ncy5kaXNjYXJkX2FsbCB9fTwvc3Bhbj4/PC9kaXY+XG4gICAgICAgIDxkaXYgdi1mb3I9XCIobGFuZ3VhZ2VDb2RlLCBrZXkpIGluIGxhbmd1YWdlc1wiIDppZD1cIid0cnAtbGFuZ3VhZ2UtJyArIGxhbmd1YWdlQ29kZVwiPlxuICAgICAgICAgICAgPGRpdiB2LXNob3c9XCIoIChrZXkgPD0gb3RoZXJzQnV0dG9uUG9zaXRpb24pIHx8IHNob3dPdGhlckxhbmd1YWdlcyApICYmICggc2VsZWN0ZWRJbmRleGVzQXJyYXkgJiYgc2VsZWN0ZWRJbmRleGVzQXJyYXkubGVuZ3RoID4gMCApXCIgIGNsYXNzPVwidHJwLWxhbmd1YWdlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cnAtbGFuZ3VhZ2UtbmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiB2LWlmPVwia2V5ID09IDAgXCI+e3sgZWRpdG9yU3RyaW5ncy5mcm9tIH19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi1lbHNlPnt7IGVkaXRvclN0cmluZ3MudG8gfX0gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB7eyBjb21wbGV0ZUxhbmd1YWdlTmFtZXNbbGFuZ3VhZ2VDb2RlXSB9fVxuICAgICAgICAgICAgICAgICAgICA8aW1nIHYtaWY9XCJsYW5ndWFnZUNvZGUgIT0gJ29yaWdpbmFsJ1wiIGNsYXNzPVwidHJwLWxhbmd1YWdlLWJveC1mbGFnLWltYWdlXCIgOnNyYz1cImZsYWdzUGF0aFtsYW5ndWFnZUNvZGVdICsgJy8nICsgbGFuZ3VhZ2VDb2RlICsgJy5wbmcnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjEyXCIgOmFsdD1cImxhbmd1YWdlQ29kZVwiIDp0aXRsZT1cImNvbXBsZXRlTGFuZ3VhZ2VOYW1lc1tsYW5ndWFnZUNvZGVdXCI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidHJwLXRyYW5zbGF0aW9ucy1mb3ItbGFuZ3VhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidHJwLXRyYW5zbGF0aW9uLWljb24tY29udGFpbmVyXCIgdi1pZj1cInNob3dJbWFnZUljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHJwLXRyYW5zbGF0aW9uLWljb24gZGFzaGljb25zIGRhc2hpY29ucy1mb3JtYXQtaW1hZ2VcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRycC10cmFuc2xhdGlvbnMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLXN0cmluZy1jb250YWluZXJcIiB2LWZvcj1cInNlbGVjdGVkSW5kZXggaW4gc2VsZWN0ZWRJbmRleGVzQXJyYXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdICYmIGRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXVwiIDprZXk9XCJzZWxlY3RlZEluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cmFuc2xhdGlvbi1pbnB1dCA6c3RyaW5nPVwiZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVwiIHYtbW9kZWw9XCJkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0uZWRpdGVkVHJhbnNsYXRpb25cIiA6aGlnaGxpZ2h0VW5zYXZlZENoYW5nZXM9XCJzaG93Q2hhbmdlc1Vuc2F2ZWRNZXNzYWdlICYmIGhhc1Vuc2F2ZWRDaGFuZ2VzKCBzZWxlY3RlZEluZGV4LCBsYW5ndWFnZUNvZGUgKVwiIDplZGl0b3JTdHJpbmdzPVwiZWRpdG9yU3RyaW5nc1wiPjwvdHJhbnNsYXRpb24taW5wdXQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWVsc2UtaWY9XCJkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdXCIgOmtleT1cInNlbGVjdGVkSW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyYW5zbGF0aW9uLWlucHV0IDpyZWFkb25seT1cInRydWVcIiA6c3RyaW5nPVwiZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVwiIDp2YWx1ZT1cImRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0ub3JpZ2luYWxcIiA6ZWRpdG9yU3RyaW5ncz1cImVkaXRvclN0cmluZ3NcIj48L3RyYW5zbGF0aW9uLWlucHV0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cnAtdHJhbnNsYXRpb24taW5wdXQtZm9vdGVyXCIgOmRhdGEtZGljdGlvbmFyeS1lbnRyeT1cIkpTT04uc3RyaW5naWZ5KGRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cnAtYXR0cmlidXRlLW5hbWVcIj57eyAoIGVkaXRvclN0cmluZ3NbIGRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0uYXR0cmlidXRlIF0gJiYgKCAoZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS5hdHRyaWJ1dGUgIT0gJ2NvbnRlbnQnIHx8IGRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0uYXR0cmlidXRlICE9ICcnKSApICkgPyBlZGl0b3JTdHJpbmdzWyBkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLmF0dHJpYnV0ZSBdIDogZWRpdG9yU3RyaW5ncy50ZXh0IH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cImRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0gJiYgZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdXCIgY2xhc3M9XCJ0cnAtZGlzY2FyZC1jaGFuZ2VzIHRycC1kaXNjYXJkLWluZGl2aWR1YWwtY2hhbmdlc1wiIEBjbGljaz1cImRpc2NhcmRDaGFuZ2VzKHNlbGVjdGVkSW5kZXgsbGFuZ3VhZ2VDb2RlKVwiIDpjbGFzcz1cInsndHJwLXVuc2F2ZWQtY2hhbmdlcyc6IGhhc1Vuc2F2ZWRDaGFuZ2VzKCBzZWxlY3RlZEluZGV4LCBsYW5ndWFnZUNvZGUgKSB9XCIgOnRpdGxlPVwiZWRpdG9yU3RyaW5ncy5kaXNjYXJkX2luZGl2aWR1YWxfY2hhbmdlc190aXRsZV9hdHRyaWJ1dGVcIj57eyBlZGl0b3JTdHJpbmdzLmRpc2NhcmQgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLXRyYW5zbGF0aW9uLW1lbW9yeS13cmFwXCIgdi1pZj1cImRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0gJiYgZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdXCIgOmtleT1cIid0cnBfdG13XycgKyBzZWxlY3RlZEluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cmFuc2xhdGlvbi1tZW1vcnkgOnN0cmluZz1cImRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cIiA6ZWRpdG9yU3RyaW5ncz1cImVkaXRvclN0cmluZ3NcIiA6YWpheF91cmw9XCJhamF4X3VybFwiIDpub25jZXM9XCJub25jZXNcIiA6bGFuZ3VhZ2VDb2RlPVwibGFuZ3VhZ2VDb2RlXCI+PC90cmFuc2xhdGlvbi1tZW1vcnk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgICAgIDxkaXYgdi1zaG93PVwia2V5ID09IG90aGVyc0J1dHRvblBvc2l0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cnAtdG9nZ2xlLWxhbmd1YWdlcyBidXR0b25cIiBAY2xpY2s9XCJzaG93T3RoZXJMYW5ndWFnZXMgPSAhc2hvd090aGVyTGFuZ3VhZ2VzXCIgOmNsYXNzPVwieyAndHJwLXNob3ctb3RoZXItbGFuZ3VhZ2VzJzogc2hvd090aGVyTGFuZ3VhZ2VzLCAndHJwLWhpZGUtb3RoZXItbGFuZ3VhZ2VzJzogIXNob3dPdGhlckxhbmd1YWdlcyB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyAoc2hvd090aGVyTGFuZ3VhZ2VzKT8gICcmIzk2NjA7JyA6ICcmIzk2NTQ7J319IHt7IGVkaXRvclN0cmluZ3Mub3RoZXJfbGFuZyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuICAgIGltcG9ydCB0cmFuc2xhdGlvbklucHV0IGZyb20gJy4vdHJhbnNsYXRpb24taW5wdXQudnVlJ1xuICAgIGltcG9ydCB0cmFuc2xhdGlvbk1lbW9yeSBmcm9tICcuL3RyYW5zbGF0aW9uLW1lbW9yeS52dWUnXG4gICAgZXhwb3J0IGRlZmF1bHR7XG4gICAgICAgIHByb3BzOltcbiAgICAgICAgICAgICdzZWxlY3RlZEluZGV4ZXNBcnJheScsXG4gICAgICAgICAgICAnZGljdGlvbmFyeScsXG4gICAgICAgICAgICAnY3VycmVudExhbmd1YWdlJyxcbiAgICAgICAgICAgICdvblNjcmVlbkxhbmd1YWdlJyxcbiAgICAgICAgICAgICdsYW5ndWFnZU5hbWVzJyxcbiAgICAgICAgICAgICdzZXR0aW5ncycsXG4gICAgICAgICAgICAnc2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZScsXG4gICAgICAgICAgICAnZWRpdG9yU3RyaW5ncycsXG4gICAgICAgICAgICAnZmxhZ3NQYXRoJyxcbiAgICAgICAgICAgICdpZnJhbWUnLFxuICAgICAgICAgICAgJ25vbmNlcycsXG4gICAgICAgICAgICAnYWpheF91cmwnXG4gICAgICAgIF0sXG4gICAgICAgIGRhdGEoKXtcbiAgICAgICAgICAgIHJldHVybntcbiAgICAgICAgICAgICAgICBsYW5ndWFnZXMgICAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgICAgIGNvbXBsZXRlTGFuZ3VhZ2VOYW1lcyAgICAgIDogT2JqZWN0LmFzc2lnbiggeyAnb3JpZ2luYWwnOiAnT3JpZ2luYWwgU3RyaW5nJyB9LCB0aGlzLmxhbmd1YWdlTmFtZXMgKSxcbiAgICAgICAgICAgICAgICBvdGhlcnNCdXR0b25Qb3NpdGlvbk9mZnNldCA6IDEsXG4gICAgICAgICAgICAgICAgc2hvd090aGVyTGFuZ3VhZ2VzICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBvcmRlcmVkTGFuZ3VhZ2VzICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgICAgIHNob3dJbWFnZUljb24gICAgICAgICAgICAgIDogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjb21wb25lbnRzOntcbiAgICAgICAgICAgIHRyYW5zbGF0aW9uSW5wdXQsXG4gICAgICAgICAgICB0cmFuc2xhdGlvbk1lbW9yeVxuICAgICAgICB9LFxuICAgICAgICBtb3VudGVkKCl7XG4gICAgICAgICAgICB0aGlzLmRldGVybWluZUxhbmd1YWdlT3JkZXIoKVxuICAgICAgICAgICAgdGhpcy5hZGRLZXlib2FyZFNob3J0Y3V0c0xpc3RlbmVyKClcbiAgICAgICAgfSxcbiAgICAgICAgdXBkYXRlZCgpe1xuICAgICAgICAgICAgLy8gaWYgYWxyZWFkeSBhY3RpdmUgZG8gbm90aGluZ1xuICAgICAgICAgICAgaWYgKCBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyggJ3RycC10cmFuc2xhdGlvbi1pbnB1dCcgKSB8fFxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCAndHJwLWVkaXRvci1ib2R5JyApICkgLy8gd2hlbiBjbGlja2luZyB0cmFuc2xhdGlvbiBtZW1vcnkgcmVzdWx0LCBkb24ndCBtb3ZlIGN1cnNvclxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gcGxhY2UgdGhlIGN1cnNvciBpbiB0aGUgZmlyc3QgdGV4dGFyZWEgb3IgaW5wdXQgZm9yIHRyYW5zbGF0aW9uXG4gICAgICAgICAgICBsZXQgdHJhbnNsYXRpb25TZWN0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoICd0cnAtdHJhbnNsYXRpb24tc2VjdGlvbicgKVxuICAgICAgICAgICAgaWYgKCB0cmFuc2xhdGlvblNlY3Rpb24gKSAge1xuICAgICAgICAgICAgICAgIGxldCBmb2N1c2FibGVTZWxlY3RvcnMgPSBbJ3RleHRhcmVhOm5vdChbcmVhZG9ubHldKScsICdpbnB1dFt0eXBlPVwidGV4dFwiXTpub3QoW3JlYWRvbmx5XSknXVxuICAgICAgICAgICAgICAgIGZvciAoIHZhciBpID0gMDsgaTxmb2N1c2FibGVTZWxlY3RvcnMubGVuZ3RoOyBpKysgKXtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZvY3VzYWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAndHJwLXRyYW5zbGF0aW9uLXNlY3Rpb24nICkucXVlcnlTZWxlY3Rvcihmb2N1c2FibGVTZWxlY3RvcnNbaV0pXG4gICAgICAgICAgICAgICAgICAgIGlmICggZm9jdXNhYmxlICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlLmZvY3VzKClcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3YXRjaDoge1xuICAgICAgICAgICAgc2VsZWN0ZWRJbmRleGVzQXJyYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUxhbmd1YWdlcygpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25TY3JlZW5MYW5ndWFnZTogZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICB0aGlzLmRldGVybWluZUxhbmd1YWdlT3JkZXIoKVxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTGFuZ3VhZ2VzKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY29tcHV0ZWQ6e1xuICAgICAgICAgICAgb3RoZXJzQnV0dG9uUG9zaXRpb246IGZ1bmN0aW9uICgpe1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRMYW5ndWFnZSA9PT0gdGhpcy5zZXR0aW5nc1snZGVmYXVsdC1sYW5ndWFnZSddIHx8IHRoaXMuc2V0dGluZ3NbJ3RyYW5zbGF0aW9uLWxhbmd1YWdlcyddLmxlbmd0aCA8PSAyICkge1xuICAgICAgICAgICAgICAgICAgICAvLyBkb24ndCBkaXNwbGF5IGl0XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiA5OTlcbiAgICAgICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3RoZXJzQnV0dG9uUG9zaXRpb25PZmZzZXRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZHM6e1xuICAgICAgICAgICAgZGV0ZXJtaW5lTGFuZ3VhZ2VPcmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGxldCBzZWxmID0gdGhpc1xuICAgICAgICAgICAgICAgIGxldCBmaWx0ZXJlZExhbmd1YWdlcyA9IHRoaXMuc2V0dGluZ3NbJ3RyYW5zbGF0aW9uLWxhbmd1YWdlcyddLmZpbHRlcihmdW5jdGlvbihsYW5ndWFnZSwgaW5kZXgsIGFycmF5KXtcbiAgICAgICAgICAgICAgICAgICAgLy8gYWxsIGxhbmd1YWdlcyBleGNlcHQgZGVmYXVsdCBhbmQgY3VycmVudCBvciBvbiBzY3JlZW4gbGFuZ3VhZ2UuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoIHNlbGYuc2V0dGluZ3NbJ2RlZmF1bHQtbGFuZ3VhZ2UnXSAhPT0gbGFuZ3VhZ2UgKSAmJiAoIHNlbGYub25TY3JlZW5MYW5ndWFnZSAhPT0gbGFuZ3VhZ2UgKVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMub3JkZXJlZExhbmd1YWdlcyA9IFtdXG4gICAgICAgICAgICAgICAgdGhpcy5vcmRlcmVkTGFuZ3VhZ2VzLnB1c2goIHRoaXMuc2V0dGluZ3NbJ2RlZmF1bHQtbGFuZ3VhZ2UnXSApXG4gICAgICAgICAgICAgICAgaWYgKCB0aGlzLm9uU2NyZWVuTGFuZ3VhZ2UgIT09ICcnIClcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcmRlcmVkTGFuZ3VhZ2VzLnB1c2goIHRoaXMub25TY3JlZW5MYW5ndWFnZSApXG4gICAgICAgICAgICAgICAgdGhpcy5vcmRlcmVkTGFuZ3VhZ2VzID0gdGhpcy5vcmRlcmVkTGFuZ3VhZ2VzLmNvbmNhdCggZmlsdGVyZWRMYW5ndWFnZXMgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVwZGF0ZUxhbmd1YWdlczogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2VzICAgICAgICAgICAgICAgICAgPSBbXVxuICAgICAgICAgICAgICAgIGxldCBzZWxmICAgICAgICAgICAgICAgICAgICAgICAgPSB0aGlzXG4gICAgICAgICAgICAgICAgbGV0IGRlZmF1bHRMYW5ndWFnZSAgICAgICAgICAgICA9IHRoaXMuc2V0dGluZ3NbJ2RlZmF1bHQtbGFuZ3VhZ2UnXVxuICAgICAgICAgICAgICAgIGxldCB0cmFuc2xhdGVUb0RlZmF1bHQgICAgICAgICAgPSBmYWxzZVxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0ltYWdlSWNvbiAgICAgICAgICAgICAgPSBmYWxzZVxuICAgICAgICAgICAgICAgIHRoaXMub3RoZXJzQnV0dG9uUG9zaXRpb25PZmZzZXQgPSAxXG5cbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXhlc0FycmF5LmZvckVhY2goZnVuY3Rpb24gKHNlbGVjdGVkSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYoIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XSAmJiBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbZGVmYXVsdExhbmd1YWdlXSApXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVUb0RlZmF1bHQgPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgIGlmKCBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0gJiYgc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLmF0dHJpYnV0ZSA9PT0gJ3NyYycgKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zaG93SW1hZ2VJY29uID0gdHJ1ZVxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICBpZiAodHJhbnNsYXRlVG9EZWZhdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2VzLnB1c2goJ29yaWdpbmFsJylcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vdGhlcnNCdXR0b25Qb3NpdGlvbk9mZnNldCsrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5sYW5ndWFnZXMgPSB0aGlzLmxhbmd1YWdlcy5jb25jYXQodGhpcy5vcmRlcmVkTGFuZ3VhZ2VzKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRpc2NhcmRDaGFuZ2VzOiBmdW5jdGlvbihzZWxlY3RlZEluZGV4LGxhbmd1YWdlQ29kZSl7XG4gICAgICAgICAgICAgICAgdGhpcy5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0uZWRpdGVkVHJhbnNsYXRpb24gPSB0aGlzLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS50cmFuc2xhdGVkXG4gICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgnZGlzY2FyZGVkLWNoYW5nZXMnKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhhc1Vuc2F2ZWRDaGFuZ2VzOiBmdW5jdGlvbihzZWxlY3RlZEluZGV4LCBsYW5ndWFnZUNvZGUpe1xuICAgICAgICAgICAgICAgIHJldHVybiAodGhpcy5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0udHJhbnNsYXRlZCAhPT0gdGhpcy5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0uZWRpdGVkVHJhbnNsYXRpb24pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGlzY2FyZEFsbDogZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXNcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXhlc0FycmF5LmZvckVhY2goZnVuY3Rpb24oc2VsZWN0ZWRJbmRleCl7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc2V0dGluZ3NbJ3RyYW5zbGF0aW9uLWxhbmd1YWdlcyddLmZvckVhY2goIGZ1bmN0aW9uKCBsYW5ndWFnZUNvZGUgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS50cmFuc2xhdGVkICE9PSBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS5lZGl0ZWRUcmFuc2xhdGlvbikgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kaXNjYXJkQ2hhbmdlcyhzZWxlY3RlZEluZGV4LGxhbmd1YWdlQ29kZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgaWYgKCB0aGlzLiRwYXJlbnQubWVyZ2luZ1N0cmluZyA9PT0gdHJ1ZSApe1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRwYXJlbnQuc2VsZWN0ZWRTdHJpbmcgPSBudWxsXG4gICAgICAgICAgICAgICAgICAgIGxldCBwcmV2aW91c2x5SGlnaGxpZ2h0ZWQgPSB0aGlzLmlmcmFtZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCAndHJwLWNyZWF0ZS10cmFuc2xhdGlvbi1ibG9jaycgKVxuICAgICAgICAgICAgICAgICAgICBpZiggcHJldmlvdXNseUhpZ2hsaWdodGVkLmxlbmd0aCA+IDAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaVxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBwcmV2aW91c2x5SGlnaGxpZ2h0ZWQubGVuZ3RoOyBpKysgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNseUhpZ2hsaWdodGVkW2ldLmNsYXNzTGlzdC5yZW1vdmUoJ3RycC1oaWdobGlnaHQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzbHlIaWdobGlnaHRlZFtpXS5jbGFzc0xpc3QucmVtb3ZlKCd0cnAtY3JlYXRlLXRyYW5zbGF0aW9uLWJsb2NrJylcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLiRwYXJlbnQubWVyZ2luZ1N0cmluZyA9IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHBhcmVudC5tZXJnZURhdGEgPSBbXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZGRLZXlib2FyZFNob3J0Y3V0c0xpc3RlbmVyKCl7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBDVFJMICsgQUxUICsgWlxuICAgICAgICAgICAgICAgICAgICBpZiAoKHdpbmRvdy5uYXZpZ2F0b3IucGxhdGZvcm0ubWF0Y2goXCJNYWNcIikgPyBlLm1ldGFLZXkgOiBlLmN0cmxLZXkpICYmIGUuYWx0S2V5ICYmIGUua2V5Q29kZSA9PT0gOTAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ3RycF90cmlnZ2VyX2Rpc2NhcmRfYWxsX2NoYW5nZXNfZXZlbnQnKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCBmYWxzZSk7XG5cbiAgICAgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggJ3RycF90cmlnZ2VyX2Rpc2NhcmRfYWxsX2NoYW5nZXNfZXZlbnQnLCB0aGlzLmRpc2NhcmRBbGwgKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuPC9zY3JpcHQ+XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/language-boxes.vue?vue&type=script&lang=js&\n");
971
 
972
  /***/ }),
973
 
@@ -979,7 +1015,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _tra
979
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
980
 
981
  "use strict";
982
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_0__);\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: ['selectedIndexesArray', 'selectedString', 'dictionary', 'settings', 'nonces', 'ajax_url', 'currentLanguage', 'onScreenLanguage', 'iframe', 'currentURL', 'mergingString', 'mergeData', 'editorStrings', 'stringTypes'],\n data: function data() {\n return {\n 'saveButtonText': this.editorStrings.save_translation,\n 'saveStringsRequestsLeft': 0,\n 'disabledSaveButton': false\n };\n },\n mounted: function mounted() {\n this.addKeyboardShortcutsListener();\n },\n watch: {\n saveStringsRequestsLeft: function saveStringsRequestsLeft(newValue, oldValue) {\n if (newValue > 0) {\n this.disabledSaveButton = true;\n this.saveButtonText = this.editorStrings.saving_translation;\n } else {\n this.disabledSaveButton = false;\n this.saveButtonText = this.editorStrings.save_translation;\n this.showTranslationsSaved();\n }\n }\n },\n methods: {\n save: function save() {\n if (this.mergingString) this.createTranslationBlock();else {\n for (var type in this.stringTypes) {\n this.saveStringType(this.stringTypes[type]);\n }\n }\n\n if (this.saveStringsRequestsLeft === 0) {\n // no saving action was triggered\n this.showTranslationsSaved();\n }\n },\n saveStringType: function saveStringType(typeSlug) {\n this.saveStringsRequestsLeft++;\n var self = this;\n var saveData = {};\n var updateIframeData = {};\n var foundStringsToSave = false; // construct an array of the necessary information\n\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n if (typeSlug === self.dictionary[selectedIndex].type) {\n self.settings['translation-languages'].forEach(function (languageCode) {\n saveData[languageCode] = saveData[languageCode] ? saveData[languageCode] : [];\n updateIframeData[languageCode] = updateIframeData[languageCode] ? updateIframeData[languageCode] : [];\n\n if (self.dictionary[selectedIndex].translationsArray[languageCode] && self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation != self.dictionary[selectedIndex].translationsArray[languageCode].translated) {\n self.dictionary[selectedIndex].translationsArray[languageCode].status = self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation === '' ? 0 : 2;\n self.dictionary[selectedIndex].translationsArray[languageCode].translated = self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation;\n saveData[languageCode].push(self.dictionary[selectedIndex].translationsArray[languageCode]);\n saveData[languageCode][saveData[languageCode].length - 1].original = self.dictionary[selectedIndex].original;\n updateIframeData[languageCode].push(self.dictionary[selectedIndex]);\n foundStringsToSave = true;\n }\n });\n }\n }); // send request to save strings in database\n\n if (foundStringsToSave) {\n var data = new FormData();\n data.append('action', 'trp_save_translations_' + typeSlug);\n data.append('security', this.nonces['savetranslationsnonce' + typeSlug]);\n data.append('strings', JSON.stringify(saveData));\n axios__WEBPACK_IMPORTED_MODULE_0___default.a.post(this.ajax_url, data).then(function (response) {\n if (typeSlug === 'gettext') {\n axios__WEBPACK_IMPORTED_MODULE_0___default.a.get(self.currentURL).then(function (reloadedIframeResponse) {\n self.updateIframe(updateIframeData, reloadedIframeResponse.data);\n self.saveStringsRequestsLeft--;\n });\n } else {\n self.updateIframe(updateIframeData);\n self.saveStringsRequestsLeft--;\n }\n\n self.$emit('translations-saved');\n })[\"catch\"](function (error) {\n console.log(error);\n });\n } else {\n self.saveStringsRequestsLeft--;\n }\n },\n updateIframe: function updateIframe(updateIframeData) {\n var reloadedIframeResponse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (typeof this.iframe === 'undefined') {\n return;\n }\n\n var self = this;\n this.settings['translation-languages'].forEach(function (languageCode) {\n if (updateIframeData[languageCode].length > 0) {\n updateIframeData[languageCode].forEach(function (string) {\n if (self.currentLanguage === languageCode) {\n self.setTextInIframe(string, languageCode, reloadedIframeResponse);\n }\n });\n }\n });\n },\n setTextInIframe: function setTextInIframe(string, languageCode, reloadedIframeResponse) {\n var nodes = this.iframe.querySelectorAll(\"[\" + string.selector + \"='\" + string.dbID + \"']\");\n var textToSet = null;\n\n if (reloadedIframeResponse) {\n var translatedNode = document.createRange().createContextualFragment(reloadedIframeResponse).querySelector(\"[\" + string.selector + \"='\" + string.dbID + \"']\");\n\n if (translatedNode) {\n textToSet = typeof string.attribute === 'undefined' || string.attribute === \"\" ? translatedNode.textContent : translatedNode.getAttribute(string.attribute);\n }\n }\n\n if (textToSet === null) {\n textToSet = string.translationsArray[languageCode].translated === '' ? string.original : string.translationsArray[languageCode].translated;\n }\n\n nodes.forEach(function (node) {\n if (typeof string.attribute === 'undefined' || string.attribute === \"\" || string.attribute === 'innertext') {\n var initialValue = node.textContent;\n textToSet = initialValue.replace(initialValue.trim(), textToSet);\n node.innerHTML = textToSet;\n } else {\n var _initialValue = node.getAttribute(string.attribute);\n\n textToSet = _initialValue.replace(_initialValue.trim(), textToSet);\n node.setAttribute(string.attribute, textToSet);\n\n if (string.attribute === 'src') {\n node.setAttribute('srcset', '');\n }\n }\n });\n },\n createTranslationBlock: function createTranslationBlock() {\n this.saveStringsRequestsLeft++;\n var self = this;\n var saveData = {},\n translation = {},\n original;\n var foundStringsToSave = false;\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n self.settings['translation-languages'].forEach(function (languageCode) {\n saveData[languageCode] = saveData[languageCode] ? saveData[languageCode] : [];\n\n if (self.dictionary[selectedIndex] && self.dictionary[selectedIndex].translationsArray[languageCode]) {\n translation = self.dictionary[selectedIndex].translationsArray[languageCode];\n translation.block_type = self.dictionary[selectedIndex].block_type;\n translation.id = self.dictionary[selectedIndex].dbID;\n translation.original = self.dictionary[selectedIndex].original;\n\n if (self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation != self.dictionary[selectedIndex].translationsArray[languageCode].translated) {\n self.dictionary[selectedIndex].translationsArray[languageCode].translated = self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation;\n if (self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation !== '') self.dictionary[selectedIndex].translationsArray[languageCode].status = 2;\n }\n\n saveData[languageCode].push(translation);\n foundStringsToSave = true;\n }\n });\n original = self.dictionary[selectedIndex].original;\n });\n\n if (foundStringsToSave) {\n var data = new FormData();\n data.append('action', 'trp_create_translation_block');\n data.append('security', this.nonces['mergetbnonce']);\n data.append('language', this.currentLanguage);\n data.append('strings', JSON.stringify(saveData));\n data.append('original', original);\n data.append('all_languages', 'true');\n axios__WEBPACK_IMPORTED_MODULE_0___default.a.post(this.ajax_url, data).then(function (response) {\n self.saveStringsRequestsLeft--;\n self.$parent.mergingString = false;\n var item = self.dictionary[self.selectedIndexesArray[0]]; //update dictionary string ids\n\n Object.keys(item.translationsArray).forEach(function (key) {\n Object.keys(response.data[key]).forEach(function (index) {\n if (key === self.onScreenLanguage) {\n self.dictionary[self.selectedIndexesArray[0]].dbID = response.data[key][index].id;\n }\n\n item.translationsArray[key].id = response.data[key][index].id;\n });\n });\n self.$parent.mergeData = []; //get merged string\n\n var mergedString;\n if (typeof item.translationsArray[self.currentLanguage] !== 'undefined' && item.translationsArray[self.currentLanguage].translated) mergedString = item.translationsArray[self.onScreenLanguage].translated;else mergedString = item.original; //replace HTML in iFrame\n\n var translationBlock = self.iframe.querySelector('.trp-create-translation-block');\n translationBlock.innerHTML = mergedString;\n translationBlock.setAttribute('data-trp-translate-id', item.dbID);\n translationBlock.classList.remove('trp-create-translation-block'); //setup event listener for new block\n\n self.$parent.setupEventListener(translationBlock);\n })[\"catch\"](function (error) {\n self.$parent.mergingString = false;\n console.log(error);\n });\n } else {\n this.saveStringsRequestsLeft--;\n }\n },\n showTranslationsSaved: function showTranslationsSaved() {\n var translationSaved = jQuery('#trp-translation-saved');\n translationSaved.css(\"display\", \"inline\");\n translationSaved.delay(3000).fadeOut(400);\n },\n addKeyboardShortcutsListener: function addKeyboardShortcutsListener() {\n document.addEventListener(\"keydown\", function (e) {\n // CTRL + S\n if ((window.navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey) && e.keyCode === 83) {\n e.preventDefault();\n window.dispatchEvent(new Event('trp_trigger_save_translations_event'));\n }\n }, false);\n window.addEventListener('trp_trigger_save_translations_event', this.save);\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vYXNzZXRzL3NyYy9qcy9jb21wb25lbnRzL3NhdmUtdHJhbnNsYXRpb25zLnZ1ZT85ODU1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQU9BO0FBRUE7QUFDQSxVQUNBLHNCQURBLEVBRUEsZ0JBRkEsRUFHQSxZQUhBLEVBSUEsVUFKQSxFQUtBLFFBTEEsRUFNQSxVQU5BLEVBT0EsaUJBUEEsRUFRQSxrQkFSQSxFQVNBLFFBVEEsRUFVQSxZQVZBLEVBV0EsZUFYQSxFQVlBLFdBWkEsRUFhQSxlQWJBLEVBY0EsYUFkQSxDQURBO0FBaUJBLE1BakJBLGtCQWlCQTtBQUNBO0FBQ0EsMkRBREE7QUFFQSxrQ0FGQTtBQUdBO0FBSEE7QUFLQSxHQXZCQTtBQXdCQSxTQXhCQSxxQkF3QkE7QUFDQTtBQUNBLEdBMUJBO0FBMkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUhBLE1BR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBWEEsR0EzQkE7QUF3Q0E7QUFDQSxRQURBLGtCQUNBO0FBQ0EsOEJBQ0EsOEJBREEsS0FFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FiQTtBQWNBLGtCQWRBLDBCQWNBLFFBZEEsRUFjQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBTEEsQ0FPQTs7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQSxXQWZBO0FBZ0JBO0FBQ0EsT0FuQkEsRUFSQSxDQTZCQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsK0VBQ0EsSUFEQSxDQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUhBO0FBSUEsV0FMQSxNQUtBO0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0EsU0FaQSxXQWFBO0FBQ0E7QUFDQSxTQWZBO0FBZ0JBLE9BdEJBLE1Bc0JBO0FBQ0E7QUFDQTtBQUNBLEtBckVBO0FBc0VBLGdCQXRFQSx3QkFzRUEsZ0JBdEVBLEVBc0VBO0FBQUE7O0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FKQTtBQUtBO0FBQ0EsT0FSQTtBQVNBLEtBcEZBO0FBcUZBLG1CQXJGQSwyQkFxRkEsTUFyRkEsRUFxRkEsWUFyRkEsRUFxRkEsc0JBckZBLEVBcUZBO0FBQ0E7QUFDQTs7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FKQSxNQUlBO0FBQ0E7O0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BYkE7QUFjQSxLQWhIQTtBQWlIQSwwQkFqSEEsb0NBaUhBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUVBLDJHQUNBO0FBQ0E7O0FBRUE7QUFHQTtBQUNBO0FBQ0EsU0F2QkE7QUF5QkE7QUFDQSxPQTNCQTs7QUE2QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLCtFQUNBLElBREEsQ0FDQTtBQUNBO0FBQ0E7QUFDQSxtRUFIQSxDQUtBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQSxhQUxBO0FBTUEsV0FQQTtBQVNBLHNDQWZBLENBaUJBOztBQUNBO0FBRUEsOElBQ0Esd0VBREEsS0FHQSw2QkF2QkEsQ0F5QkE7O0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEVBN0JBLENBK0JBOztBQUNBO0FBQ0EsU0FsQ0EsV0FtQ0E7QUFDQTtBQUNBO0FBQ0EsU0F0Q0E7QUF1Q0EsT0FoREEsTUFnREE7QUFDQTtBQUNBO0FBQ0EsS0F2TUE7QUF3TUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQTVNQTtBQTZNQSxnQ0E3TUEsMENBNk1BO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0EsT0FSQSxFQVFBLEtBUkE7QUFVQTtBQUNBO0FBek5BO0FBeENBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL2Fzc2V0cy9zcmMvanMvY29tcG9uZW50cy9zYXZlLXRyYW5zbGF0aW9ucy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxkaXYgaWQ9XCJ0cnAtc2F2ZS1jb250YWluZXJcIj5cbiAgICAgICAgPHNwYW4gaWQ9XCJ0cnAtdHJhbnNsYXRpb24tc2F2ZWRcIiBzdHlsZT1cImRpc3BsYXk6bm9uZVwiPnt7IGVkaXRvclN0cmluZ3Muc2F2ZWQgfX08L3NwYW4+XG4gICAgICAgIDxidXR0b24gaWQ9XCJ0cnAtc2F2ZVwiIDpkaXNhYmxlZD1cImRpc2FibGVkU2F2ZUJ1dHRvblwiIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ1dHRvbi1wcmltYXJ5IHRycC1zYXZlLXN0cmluZ1wiIEBjbGljaz1cInNhdmVcIiA6dGl0bGU9XCJlZGl0b3JTdHJpbmdzLnNhdmVfdGl0bGVfYXR0clwiPnt7IHNhdmVCdXR0b25UZXh0IH19PC9idXR0b24+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuPHNjcmlwdD5cbiAgICBpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnXG5cbiAgICBleHBvcnQgZGVmYXVsdHtcbiAgICAgICAgcHJvcHM6IFtcbiAgICAgICAgICAgICdzZWxlY3RlZEluZGV4ZXNBcnJheScsXG4gICAgICAgICAgICAnc2VsZWN0ZWRTdHJpbmcnLFxuICAgICAgICAgICAgJ2RpY3Rpb25hcnknLFxuICAgICAgICAgICAgJ3NldHRpbmdzJyxcbiAgICAgICAgICAgICdub25jZXMnLFxuICAgICAgICAgICAgJ2FqYXhfdXJsJyxcbiAgICAgICAgICAgICdjdXJyZW50TGFuZ3VhZ2UnLFxuICAgICAgICAgICAgJ29uU2NyZWVuTGFuZ3VhZ2UnLFxuICAgICAgICAgICAgJ2lmcmFtZScsXG4gICAgICAgICAgICAnY3VycmVudFVSTCcsXG4gICAgICAgICAgICAnbWVyZ2luZ1N0cmluZycsXG4gICAgICAgICAgICAnbWVyZ2VEYXRhJyxcbiAgICAgICAgICAgICdlZGl0b3JTdHJpbmdzJyxcbiAgICAgICAgICAgICdzdHJpbmdUeXBlcydcbiAgICAgICAgXSxcbiAgICAgICAgZGF0YSgpe1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAnc2F2ZUJ1dHRvblRleHQnICAgICAgICAgICAgOiB0aGlzLmVkaXRvclN0cmluZ3Muc2F2ZV90cmFuc2xhdGlvbixcbiAgICAgICAgICAgICAgICAnc2F2ZVN0cmluZ3NSZXF1ZXN0c0xlZnQnICAgOiAwLFxuICAgICAgICAgICAgICAgICdkaXNhYmxlZFNhdmVCdXR0b24nICAgICAgICA6IGZhbHNlLFxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb3VudGVkKCl7XG4gICAgICAgICAgICB0aGlzLmFkZEtleWJvYXJkU2hvcnRjdXRzTGlzdGVuZXIoKVxuICAgICAgICB9LFxuICAgICAgICB3YXRjaDp7XG4gICAgICAgICAgICBzYXZlU3RyaW5nc1JlcXVlc3RzTGVmdCA6IGZ1bmN0aW9uKCBuZXdWYWx1ZSwgb2xkVmFsdWUgKXtcbiAgICAgICAgICAgICAgICBpZiAoIG5ld1ZhbHVlID4gMCApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlZFNhdmVCdXR0b24gPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2F2ZUJ1dHRvblRleHQgPSB0aGlzLmVkaXRvclN0cmluZ3Muc2F2aW5nX3RyYW5zbGF0aW9uXG4gICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZWRTYXZlQnV0dG9uID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zYXZlQnV0dG9uVGV4dCA9IHRoaXMuZWRpdG9yU3RyaW5ncy5zYXZlX3RyYW5zbGF0aW9uXG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93VHJhbnNsYXRpb25zU2F2ZWQoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWV0aG9kczp7XG4gICAgICAgICAgICBzYXZlKCl7XG4gICAgICAgICAgICAgICAgaWYgKCB0aGlzLm1lcmdpbmdTdHJpbmcgKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRyYW5zbGF0aW9uQmxvY2soKVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKCBsZXQgdHlwZSBpbiB0aGlzLnN0cmluZ1R5cGVzICl7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNhdmVTdHJpbmdUeXBlKCB0aGlzLnN0cmluZ1R5cGVzW3R5cGVdIClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIHRoaXMuc2F2ZVN0cmluZ3NSZXF1ZXN0c0xlZnQgPT09IDAgKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIG5vIHNhdmluZyBhY3Rpb24gd2FzIHRyaWdnZXJlZFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dUcmFuc2xhdGlvbnNTYXZlZCgpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhdmVTdHJpbmdUeXBlKCB0eXBlU2x1ZyApe1xuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZVN0cmluZ3NSZXF1ZXN0c0xlZnQrK1xuICAgICAgICAgICAgICAgIGxldCBzZWxmID0gdGhpc1xuICAgICAgICAgICAgICAgIGxldCBzYXZlRGF0YSA9IHt9XG4gICAgICAgICAgICAgICAgbGV0IHVwZGF0ZUlmcmFtZURhdGEgID0ge31cbiAgICAgICAgICAgICAgICBsZXQgZm91bmRTdHJpbmdzVG9TYXZlID0gZmFsc2VcblxuICAgICAgICAgICAgICAgIC8vIGNvbnN0cnVjdCBhbiBhcnJheSBvZiB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ZXNBcnJheS5mb3JFYWNoKCBmdW5jdGlvbiggc2VsZWN0ZWRJbmRleCApe1xuICAgICAgICAgICAgICAgICAgICBpZiAoIHR5cGVTbHVnID09PSBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHlwZSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2V0dGluZ3NbJ3RyYW5zbGF0aW9uLWxhbmd1YWdlcyddLmZvckVhY2goIGZ1bmN0aW9uKCBsYW5ndWFnZUNvZGUgICl7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRGF0YVtsYW5ndWFnZUNvZGVdID0gKCBzYXZlRGF0YVtsYW5ndWFnZUNvZGVdICkgPyBzYXZlRGF0YVtsYW5ndWFnZUNvZGVdIDogW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJZnJhbWVEYXRhW2xhbmd1YWdlQ29kZV0gPSAoIHVwZGF0ZUlmcmFtZURhdGFbbGFuZ3VhZ2VDb2RlXSApID8gdXBkYXRlSWZyYW1lRGF0YVtsYW5ndWFnZUNvZGVdIDogW11cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0gJiYgKHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLmVkaXRlZFRyYW5zbGF0aW9uICE9IHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLnRyYW5zbGF0ZWQgKSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0uc3RhdHVzID0gKCBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS5lZGl0ZWRUcmFuc2xhdGlvbiA9PT0gJycgKSA/IDAgOiAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLnRyYW5zbGF0ZWQgPSBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS5lZGl0ZWRUcmFuc2xhdGlvblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVEYXRhW2xhbmd1YWdlQ29kZV0ucHVzaCggc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRGF0YVtsYW5ndWFnZUNvZGVdW3NhdmVEYXRhW2xhbmd1YWdlQ29kZV0ubGVuZ3RoIC0gMSBdLm9yaWdpbmFsID0gc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLm9yaWdpbmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUlmcmFtZURhdGFbbGFuZ3VhZ2VDb2RlXS5wdXNoKCBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0gKVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kU3RyaW5nc1RvU2F2ZSA9IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIC8vIHNlbmQgcmVxdWVzdCB0byBzYXZlIHN0cmluZ3MgaW4gZGF0YWJhc2VcbiAgICAgICAgICAgICAgICBpZiAoIGZvdW5kU3RyaW5nc1RvU2F2ZSApIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBuZXcgRm9ybURhdGEoKVxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoJ2FjdGlvbicsICd0cnBfc2F2ZV90cmFuc2xhdGlvbnNfJyArIHR5cGVTbHVnKVxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoJ3NlY3VyaXR5JywgdGhpcy5ub25jZXNbJ3NhdmV0cmFuc2xhdGlvbnNub25jZScgKyB0eXBlU2x1Z10pXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCgnc3RyaW5ncycsIEpTT04uc3RyaW5naWZ5KHNhdmVEYXRhKSlcblxuICAgICAgICAgICAgICAgICAgICBheGlvcy5wb3N0KHRoaXMuYWpheF91cmwsIGRhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHR5cGVTbHVnID09PSAnZ2V0dGV4dCcgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF4aW9zLmdldChzZWxmLmN1cnJlbnRVUkwpLnRoZW4oIGZ1bmN0aW9uKCByZWxvYWRlZElmcmFtZVJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZUlmcmFtZSh1cGRhdGVJZnJhbWVEYXRhLCByZWxvYWRlZElmcmFtZVJlc3BvbnNlLmRhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNhdmVTdHJpbmdzUmVxdWVzdHNMZWZ0LS1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudXBkYXRlSWZyYW1lKHVwZGF0ZUlmcmFtZURhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2F2ZVN0cmluZ3NSZXF1ZXN0c0xlZnQtLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLiRlbWl0KCd0cmFuc2xhdGlvbnMtc2F2ZWQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcilcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICAgICBzZWxmLnNhdmVTdHJpbmdzUmVxdWVzdHNMZWZ0LS1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdXBkYXRlSWZyYW1lKCB1cGRhdGVJZnJhbWVEYXRhLCByZWxvYWRlZElmcmFtZVJlc3BvbnNlID0gbnVsbCApe1xuICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIHRoaXMuaWZyYW1lID09PSAndW5kZWZpbmVkJyApe1xuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IHNlbGYgPSB0aGlzXG4gICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5nc1sndHJhbnNsYXRpb24tbGFuZ3VhZ2VzJ10uZm9yRWFjaCggZnVuY3Rpb24oIGxhbmd1YWdlQ29kZSAgKXtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCB1cGRhdGVJZnJhbWVEYXRhW2xhbmd1YWdlQ29kZV0ubGVuZ3RoID4gMCApe1xuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSWZyYW1lRGF0YVtsYW5ndWFnZUNvZGVdLmZvckVhY2goZnVuY3Rpb24oIHN0cmluZyApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggc2VsZi5jdXJyZW50TGFuZ3VhZ2UgPT09IGxhbmd1YWdlQ29kZSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXRUZXh0SW5JZnJhbWUoIHN0cmluZywgbGFuZ3VhZ2VDb2RlLCByZWxvYWRlZElmcmFtZVJlc3BvbnNlIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXRUZXh0SW5JZnJhbWUoIHN0cmluZywgbGFuZ3VhZ2VDb2RlLCByZWxvYWRlZElmcmFtZVJlc3BvbnNlICl7XG4gICAgICAgICAgICAgICAgbGV0IG5vZGVzID0gdGhpcy5pZnJhbWUucXVlcnlTZWxlY3RvckFsbCggXCJbXCIgKyBzdHJpbmcuc2VsZWN0b3IgKyBcIj0nXCIgKyBzdHJpbmcuZGJJRCArIFwiJ11cIiApXG4gICAgICAgICAgICAgICAgbGV0IHRleHRUb1NldCA9IG51bGxcbiAgICAgICAgICAgICAgICBpZiAoIHJlbG9hZGVkSWZyYW1lUmVzcG9uc2UgKXtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRyYW5zbGF0ZWROb2RlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQocmVsb2FkZWRJZnJhbWVSZXNwb25zZSkucXVlcnlTZWxlY3RvciggXCJbXCIgKyBzdHJpbmcuc2VsZWN0b3IgKyBcIj0nXCIgKyBzdHJpbmcuZGJJRCArIFwiJ11cIiApXG4gICAgICAgICAgICAgICAgICAgIGlmICggdHJhbnNsYXRlZE5vZGUgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0VG9TZXQgPSAodHlwZW9mIHN0cmluZy5hdHRyaWJ1dGUgPT09ICd1bmRlZmluZWQnIHx8IHN0cmluZy5hdHRyaWJ1dGUgPT09IFwiXCIpID8gdHJhbnNsYXRlZE5vZGUudGV4dENvbnRlbnQgOiB0cmFuc2xhdGVkTm9kZS5nZXRBdHRyaWJ1dGUoc3RyaW5nLmF0dHJpYnV0ZSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIHRleHRUb1NldCA9PT0gbnVsbCApIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dFRvU2V0ID0gKCBzdHJpbmcudHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS50cmFuc2xhdGVkID09PSAnJyApID8gc3RyaW5nLm9yaWdpbmFsIDogc3RyaW5nLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0udHJhbnNsYXRlZFxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24obm9kZSl7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc3RyaW5nLmF0dHJpYnV0ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgc3RyaW5nLmF0dHJpYnV0ZSA9PT0gXCJcIiB8fCBzdHJpbmcuYXR0cmlidXRlID09PSAnaW5uZXJ0ZXh0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluaXRpYWxWYWx1ZSA9IG5vZGUudGV4dENvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0VG9TZXQgPSBpbml0aWFsVmFsdWUucmVwbGFjZShpbml0aWFsVmFsdWUudHJpbSgpLCB0ZXh0VG9TZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5pbm5lckhUTUwgPSB0ZXh0VG9TZXRcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbml0aWFsVmFsdWUgPSBub2RlLmdldEF0dHJpYnV0ZShzdHJpbmcuYXR0cmlidXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFRvU2V0ID0gaW5pdGlhbFZhbHVlLnJlcGxhY2UoaW5pdGlhbFZhbHVlLnRyaW0oKSwgdGV4dFRvU2V0KVxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoc3RyaW5nLmF0dHJpYnV0ZSwgdGV4dFRvU2V0KVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoIHN0cmluZy5hdHRyaWJ1dGUgPT09ICdzcmMnICl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ3NyY3NldCcsICcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjcmVhdGVUcmFuc2xhdGlvbkJsb2NrKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZVN0cmluZ3NSZXF1ZXN0c0xlZnQrK1xuICAgICAgICAgICAgICAgIGxldCBzZWxmID0gdGhpc1xuICAgICAgICAgICAgICAgIGxldCBzYXZlRGF0YSA9IHt9LCB0cmFuc2xhdGlvbiA9IHt9LCBvcmlnaW5hbFxuICAgICAgICAgICAgICAgIGxldCBmb3VuZFN0cmluZ3NUb1NhdmUgPSBmYWxzZVxuXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ZXNBcnJheS5mb3JFYWNoKCBmdW5jdGlvbiggc2VsZWN0ZWRJbmRleCApe1xuICAgICAgICAgICAgICAgICAgICBzZWxmLnNldHRpbmdzWyd0cmFuc2xhdGlvbi1sYW5ndWFnZXMnXS5mb3JFYWNoKCBmdW5jdGlvbiggbGFuZ3VhZ2VDb2RlICApe1xuICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZURhdGFbbGFuZ3VhZ2VDb2RlXSA9ICggc2F2ZURhdGFbbGFuZ3VhZ2VDb2RlXSApID8gc2F2ZURhdGFbbGFuZ3VhZ2VDb2RlXSA6IFtdXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0gJiYgc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0gKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbiA9IHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbi5ibG9ja190eXBlID0gc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLmJsb2NrX3R5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbi5pZCAgICAgICAgID0gc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLmRiSURcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbi5vcmlnaW5hbCAgID0gc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLm9yaWdpbmFsXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0uZWRpdGVkVHJhbnNsYXRpb24gIT0gc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0udHJhbnNsYXRlZCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0udHJhbnNsYXRlZCA9IHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLmVkaXRlZFRyYW5zbGF0aW9uXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLmVkaXRlZFRyYW5zbGF0aW9uICE9PSAnJyApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS5zdGF0dXMgPSAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZURhdGFbbGFuZ3VhZ2VDb2RlXS5wdXNoKCB0cmFuc2xhdGlvbiApXG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kU3RyaW5nc1RvU2F2ZSA9IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbCA9IHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS5vcmlnaW5hbFxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICBpZiggZm91bmRTdHJpbmdzVG9TYXZlICkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IG5ldyBGb3JtRGF0YSgpXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCggJ2FjdGlvbicgICAgICAgLCAndHJwX2NyZWF0ZV90cmFuc2xhdGlvbl9ibG9jaycgKVxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoICdzZWN1cml0eScgICAgICwgdGhpcy5ub25jZXNbJ21lcmdldGJub25jZSddIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKCAnbGFuZ3VhZ2UnICAgICAsIHRoaXMuY3VycmVudExhbmd1YWdlIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKCAnc3RyaW5ncycgICAgICAsIEpTT04uc3RyaW5naWZ5KCBzYXZlRGF0YSApIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKCAnb3JpZ2luYWwnICAgICAsIG9yaWdpbmFsIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKCAnYWxsX2xhbmd1YWdlcycsICd0cnVlJyApXG5cbiAgICAgICAgICAgICAgICAgICAgYXhpb3MucG9zdCh0aGlzLmFqYXhfdXJsLCBkYXRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zYXZlU3RyaW5nc1JlcXVlc3RzTGVmdC0tXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi4kcGFyZW50Lm1lcmdpbmdTdHJpbmcgPSBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpdGVtID0gc2VsZi5kaWN0aW9uYXJ5W3NlbGYuc2VsZWN0ZWRJbmRleGVzQXJyYXlbMF1dXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3VwZGF0ZSBkaWN0aW9uYXJ5IHN0cmluZyBpZHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyggaXRlbS50cmFuc2xhdGlvbnNBcnJheSApLmZvckVhY2goIGZ1bmN0aW9uKGtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyggcmVzcG9uc2UuZGF0YVtrZXldICkuZm9yRWFjaCggZnVuY3Rpb24oaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgga2V5ID09PSBzZWxmLm9uU2NyZWVuTGFuZ3VhZ2UgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpY3Rpb25hcnlbc2VsZi5zZWxlY3RlZEluZGV4ZXNBcnJheVswXV0uZGJJRCA9IHJlc3BvbnNlLmRhdGFba2V5XVtpbmRleF0uaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0udHJhbnNsYXRpb25zQXJyYXlba2V5XS5pZCA9IHJlc3BvbnNlLmRhdGFba2V5XVtpbmRleF0uaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi4kcGFyZW50Lm1lcmdlRGF0YSA9IFtdXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2dldCBtZXJnZWQgc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1lcmdlZFN0cmluZ1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIHR5cGVvZiBpdGVtLnRyYW5zbGF0aW9uc0FycmF5W3NlbGYuY3VycmVudExhbmd1YWdlXSAhPT0gJ3VuZGVmaW5lZCcgJiYgaXRlbS50cmFuc2xhdGlvbnNBcnJheVtzZWxmLmN1cnJlbnRMYW5ndWFnZV0udHJhbnNsYXRlZCApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZFN0cmluZyA9IGl0ZW0udHJhbnNsYXRpb25zQXJyYXlbc2VsZi5vblNjcmVlbkxhbmd1YWdlXS50cmFuc2xhdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRTdHJpbmcgPSBpdGVtLm9yaWdpbmFsXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3JlcGxhY2UgSFRNTCBpbiBpRnJhbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHJhbnNsYXRpb25CbG9jayA9IHNlbGYuaWZyYW1lLnF1ZXJ5U2VsZWN0b3IoICcudHJwLWNyZWF0ZS10cmFuc2xhdGlvbi1ibG9jaycgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbkJsb2NrLmlubmVySFRNTCA9IG1lcmdlZFN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbkJsb2NrLnNldEF0dHJpYnV0ZSggJ2RhdGEtdHJwLXRyYW5zbGF0ZS1pZCcsIGl0ZW0uZGJJRCApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uQmxvY2suY2xhc3NMaXN0LnJlbW92ZSggJ3RycC1jcmVhdGUtdHJhbnNsYXRpb24tYmxvY2snIClcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc2V0dXAgZXZlbnQgbGlzdGVuZXIgZm9yIG5ldyBibG9ja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuJHBhcmVudC5zZXR1cEV2ZW50TGlzdGVuZXIoIHRyYW5zbGF0aW9uQmxvY2sgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLiRwYXJlbnQubWVyZ2luZ1N0cmluZyA9IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zYXZlU3RyaW5nc1JlcXVlc3RzTGVmdC0tXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNob3dUcmFuc2xhdGlvbnNTYXZlZCA6IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgbGV0IHRyYW5zbGF0aW9uU2F2ZWQgPSBqUXVlcnkoJyN0cnAtdHJhbnNsYXRpb24tc2F2ZWQnKVxuICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uU2F2ZWQuY3NzKFwiZGlzcGxheVwiLCBcImlubGluZVwiKVxuICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uU2F2ZWQuZGVsYXkoMzAwMCkuZmFkZU91dCg0MDApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWRkS2V5Ym9hcmRTaG9ydGN1dHNMaXN0ZW5lcigpe1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICAvLyBDVFJMICsgU1xuICAgICAgICAgICAgICAgICAgICBpZiAoKHdpbmRvdy5uYXZpZ2F0b3IucGxhdGZvcm0ubWF0Y2goXCJNYWNcIikgPyBlLm1ldGFLZXkgOiBlLmN0cmxLZXkpICAmJiBlLmtleUNvZGUgPT09IDgzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KCBuZXcgRXZlbnQoICd0cnBfdHJpZ2dlcl9zYXZlX3RyYW5zbGF0aW9uc19ldmVudCcgKSApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICd0cnBfdHJpZ2dlcl9zYXZlX3RyYW5zbGF0aW9uc19ldmVudCcsIHRoaXMuc2F2ZSApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgIH1cbjwvc2NyaXB0PlxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/save-translations.vue?vue&type=script&lang=js&\n");
983
 
984
  /***/ }),
985
 
@@ -1055,6 +1091,18 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var axio
1055
 
1056
  /***/ }),
1057
 
 
 
 
 
 
 
 
 
 
 
 
 
1058
  /***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/translation-input.vue?vue&type=script&lang=js&":
1059
  /*!*****************************************************************************************************************************************************************************!*\
1060
  !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./assets/src/js/components/translation-input.vue?vue&type=script&lang=js& ***!
@@ -1087,7 +1135,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var axio
1087
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
1088
 
1089
  "use strict";
1090
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var select2_dist_js_select2_min_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! select2/dist/js/select2.min.js */ \"./node_modules/select2/dist/js/select2.min.js\");\n/* harmony import */ var select2_dist_js_select2_min_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(select2_dist_js_select2_min_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./assets/src/js/utils.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_language_boxes_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/language-boxes.vue */ \"./assets/src/js/components/language-boxes.vue\");\n/* harmony import */ var _components_save_translations_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/save-translations.vue */ \"./assets/src/js/components/save-translations.vue\");\n/* harmony import */ var _components_hover_actions_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/hover-actions.vue */ \"./assets/src/js/components/hover-actions.vue\");\n/* harmony import */ var _components_extra_content_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/extra-content.vue */ \"./assets/src/js/components/extra-content.vue\");\n/* harmony import */ var _components_editors_navigation_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/editors-navigation.vue */ \"./assets/src/js/components/editors-navigation.vue\");\n/* harmony import */ var he__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! he */ \"./node_modules/he/he.js\");\n/* harmony import */ var he__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(he__WEBPACK_IMPORTED_MODULE_8__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n languageBoxes: _components_language_boxes_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n saveTranslations: _components_save_translations_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n hoverActions: _components_hover_actions_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n extraContent: _components_extra_content_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n editorsNavigation: _components_editors_navigation_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n },\n data: function data() {\n return {\n //trp_editor_data\n settings: trp_editor_data.trp_settings,\n languageNames: trp_editor_data.language_names,\n orderedSecondaryLanguages: trp_editor_data.ordered_secondary_languages,\n nonces: trp_editor_data.editor_nonces,\n editorsNavigation: trp_editor_data.editors_navigation,\n editorStrings: trp_editor_data.trp_localized_strings,\n stringTypes: trp_editor_data.string_types,\n flagsPath: trp_editor_data.flags_path,\n currentLanguage: trp_editor_data.current_language,\n onScreenLanguage: trp_editor_data.on_screen_language,\n ajaxUrl: trp_editor_data.ajax_url,\n currentURL: trp_editor_data.url_to_load,\n paidVersion: trp_editor_data.paid_version,\n //trp_string_translation_data\n stringTypesConfig: trp_string_translation_data.string_types_config,\n stEditorStrings: trp_string_translation_data.st_editor_strings,\n dictionary: {},\n selectedString: null,\n selectedIndexesArray: [],\n detectedSelectorAndId: [],\n stringGroups: [],\n showChangesUnsavedMessage: false,\n loading_strings: 0,\n translationNotLoadedYet: false,\n totalItems: null\n };\n },\n created: function created() {\n this.settings['default-language-name'] = this.languageNames[this.settings['default-language']];\n this.currentLanguage = this.settings['default-language'];\n document.addEventListener('trp_trigger_perform_action_event', this.editString);\n },\n mounted: function mounted() {\n this.getStrings(this.$route.query);\n this.addKeyboardShortcutsListener();\n var self = this; // resize sidebar and consequently the iframe\n\n var previewContainer = jQuery('#trp-preview');\n var total_width = jQuery(window).width();\n jQuery('#trp-controls').resizable({\n start: function start() {\n previewContainer.toggle();\n },\n stop: function stop() {\n previewContainer.toggle();\n },\n handles: 'e',\n minWidth: 327,\n maxWidth: total_width - 20\n }).bind(\"resize\", this.resizeIframe); // resize iframe when resizing window\n\n jQuery(window).resize(function () {\n self.resizeIframe();\n });\n },\n watch: {\n $route: function $route(to, from) {\n this.getStrings(to.query);\n },\n selectedString: function selectedString(newString, oldString) {\n if (!this.hasUnsavedChanges()) {\n if (this.selectedString === null) {\n this.selectedIndexesArray = [];\n } else {\n this.selectedIndexesArray = [this.selectedString];\n }\n }\n },\n dictionary: function dictionary() {\n if (!this.hasUnsavedChanges()) {\n this.selectedString = null;\n this.selectedIndexesArray = [];\n }\n }\n },\n computed: {\n closeURL: function closeURL() {\n return this.cleanURL(this.currentURL);\n }\n },\n methods: {\n getStrings: function getStrings(query) {\n if (!this.$route.matched[0].props[\"default\"].translationTab) {\n return;\n }\n\n var self = this;\n var currentTab = this.$route.matched[0].props[\"default\"].currentTab;\n var translationType = this.$route.matched[0].props[\"default\"].translationType;\n var data = new FormData();\n data.append('action', 'trp_string_translation_get_strings_' + translationType);\n data.append('query', JSON.stringify(query));\n data.append('security', currentTab['nonces']['get_strings']);\n window.dispatchEvent(new Event('trp_trigger_show_loading_table_event'));\n axios__WEBPACK_IMPORTED_MODULE_2___default.a.post(this.ajaxUrl, data).then(function (response) {\n window.dispatchEvent(new Event('trp_trigger_hide_loading_table_event'));\n\n if (response != null) {\n self.onScreenLanguage = query.language && _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].arrayContainsItem(self.settings['translation-languages'], query.language) && query.language !== 'trp-default' ? query.language : '';\n self.currentLanguage = query.language && _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].arrayContainsItem(self.settings['translation-languages'], query.language) && query.language !== 'trp-default' ? query.language : self.settings['default-language'];\n\n if (response.data.dictionary) {\n var newDictionary = response.data.dictionary;\n\n if (self.hasUnsavedChanges()) {\n // copy the unsaved string from the current dictionary to the new dictionary to allow user to discard or save changes\n var newSelectedIndexesArray = [];\n self.selectedIndexesArray.forEach(function (item) {\n self.dictionary[item].unsavedChanges = 'yes';\n newSelectedIndexesArray.push(newDictionary.push(self.dictionary[item]) - 1);\n });\n self.selectedIndexesArray = newSelectedIndexesArray;\n self.selectedString = null;\n }\n\n self.dictionary = newDictionary;\n }\n\n if (response.data.totalItems) {\n self.totalItems = response.data.totalItems;\n }\n }\n })[\"catch\"](function (error) {\n window.dispatchEvent(new Event('trp_trigger_hide_loading_table_event'));\n self.dictionary = {};\n console.log(error);\n var reload = confirm(self.stEditorStrings.request_error);\n\n if (reload === false) {\n return;\n } else {\n window.location.reload();\n }\n });\n },\n editString: function editString(data) {\n if (data.detail.action === 'edit') {\n this.selectedString = data.detail.stringIndex;\n }\n },\n cleanURL: function cleanURL(url) {\n //make removeUrlParameter recursive and only call it once with all the parameters that\n //need to stripped ?\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeUrlParameter(url, 'lang');\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeUrlParameter(url, 'trp-view-as');\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeUrlParameter(url, 'trp-view-as-nonce');\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeUrlParameter(url, 'trp-edit-translation');\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeUrlParameter(url, 'trp-string-translation');\n return url;\n },\n hasUnsavedChanges: function hasUnsavedChanges() {\n var unsavedChanges = false;\n var self = this;\n\n if (this.selectedIndexesArray.length > 0) {\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n self.settings['translation-languages'].forEach(function (languageCode) {\n if (self.dictionary[selectedIndex] && self.dictionary[selectedIndex].translationsArray[languageCode] && self.dictionary[selectedIndex].translationsArray[languageCode].translated !== self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation) {\n unsavedChanges = true;\n }\n });\n });\n }\n\n if (unsavedChanges === false) {\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n if (self.dictionary.hasOwnProperty(selectedIndex) && self.dictionary[selectedIndex].unsavedChanges && self.dictionary[selectedIndex].unsavedChanges === 'yes') {\n self.dictionary[selectedIndex].unsavedChanges = 'no';\n }\n });\n }\n\n this.showChangesUnsavedMessage = unsavedChanges;\n return unsavedChanges;\n },\n iframeLoader: function iframeLoader(status) {\n var loader = document.getElementById('trp-preview-loader');\n if (status == 'show') loader.style.display = 'flex';else if (status == 'hide') loader.style.display = 'none';\n },\n previousString: function previousString() {\n if (this.dictionary.length === 0 || this.hasUnsavedChanges()) return;\n var currentValue = parseInt(this.selectedString),\n newValue = this.selectedString;\n\n if (this.selectedString === null) {\n newValue = 0;\n } else if (0 < currentValue) {\n newValue = currentValue - 1;\n }\n\n this.selectedString = newValue.toString();\n },\n nextString: function nextString() {\n if (this.dictionary.length === 0 || this.hasUnsavedChanges()) return;\n var currentValue = parseInt(this.selectedString),\n newValue = this.selectedString;\n\n if (this.selectedString === null) {\n newValue = 0;\n } else if (this.dictionary.length > currentValue + 1) {\n newValue = currentValue + 1;\n }\n\n this.selectedString = newValue.toString();\n },\n addKeyboardShortcutsListener: function addKeyboardShortcutsListener() {\n document.addEventListener(\"keydown\", function (e) {\n if ((window.navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey) && e.altKey) {\n // CTRL + ALT + right arrow\n if (e.keyCode === 39) {\n e.preventDefault();\n window.dispatchEvent(new Event('trp_trigger_next_string_event'));\n } else {\n // CTRL + ALT + left arrow\n if (e.keyCode === 37) {\n e.preventDefault();\n window.dispatchEvent(new Event('trp_trigger_previous_string_event'));\n }\n }\n }\n }, false);\n window.addEventListener('trp_trigger_next_string_event', this.nextString);\n window.addEventListener('trp_trigger_previous_string_event', this.previousString);\n },\n resizeIframe: function resizeIframe(event, ui) {\n var width = jQuery('#trp-controls').width();\n var previewContainer = jQuery('#trp-preview');\n previewContainer.css('left', width - 348);\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vYXNzZXRzL3NyYy9qcy9zdHJpbmctdHJhbnNsYXRpb24udnVlPzU2YmQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTZHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0EseUZBREE7QUFFQSwrRkFGQTtBQUdBLHVGQUhBO0FBSUEsdUZBSkE7QUFLQTtBQUxBLEdBREE7QUFRQSxNQVJBLGtCQVFBO0FBQ0E7QUFDQTtBQUNBLDRDQUZBO0FBR0EsbURBSEE7QUFJQSw0RUFKQTtBQUtBLDJDQUxBO0FBTUEsMkRBTkE7QUFPQSwwREFQQTtBQVFBLCtDQVJBO0FBU0EsMkNBVEE7QUFVQSx1REFWQTtBQVdBLDBEQVhBO0FBWUEsdUNBWkE7QUFhQSw2Q0FiQTtBQWNBLCtDQWRBO0FBZ0JBO0FBQ0Esd0VBakJBO0FBa0JBLG9FQWxCQTtBQW9CQSxvQkFwQkE7QUFxQkEsMEJBckJBO0FBc0JBLDhCQXRCQTtBQXVCQSwrQkF2QkE7QUF3QkEsc0JBeEJBO0FBeUJBLHNDQXpCQTtBQTBCQSx3QkExQkE7QUEyQkEsb0NBM0JBO0FBNEJBO0FBNUJBO0FBK0JBLEdBeENBO0FBeUNBLFNBekNBLHFCQXlDQTtBQUNBO0FBRUE7QUFFQTtBQUNBLEdBL0NBO0FBZ0RBLFNBaERBLHFCQWdEQTtBQUNBO0FBRUE7QUFDQSxvQkFKQSxDQU1BOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUhBO0FBSUE7QUFDQTtBQUNBLE9BTkE7QUFPQSxrQkFQQTtBQVFBLG1CQVJBO0FBU0E7QUFUQSxPQVVBLElBVkEsQ0FVQSxRQVZBLEVBVUEsaUJBVkEsRUFUQSxDQXFCQTs7QUFDQTtBQUNBO0FBQ0EsS0FGQTtBQUdBLEdBekVBO0FBMEVBO0FBQ0EsVUFEQSxrQkFDQSxFQURBLEVBQ0EsSUFEQSxFQUNBO0FBQ0E7QUFDQSxLQUhBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUZBLE1BRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQVpBO0FBYUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBbEJBLEdBMUVBO0FBOEZBO0FBQ0E7QUFDQTtBQUNBO0FBSEEsR0E5RkE7QUFtR0E7QUFDQSxjQURBLHNCQUNBLEtBREEsRUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUEsNEVBQ0EsSUFEQSxDQUNBO0FBQ0E7O0FBQ0E7QUFDQSxtTkFDQSxjQURBLEdBQ0EsRUFEQTtBQUVBLGtOQUNBLGNBREEsR0FDQSxpQ0FEQTs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBSEE7QUFJQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BN0JBLFdBOEJBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7O0FBQ0E7QUFDQTtBQUNBLFNBRkEsTUFFQTtBQUNBO0FBQ0E7QUFFQSxPQTFDQTtBQTJDQSxLQTVEQTtBQTZEQSxjQTdEQSxzQkE2REEsSUE3REEsRUE2REE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQWpFQTtBQWtFQSxZQWxFQSxvQkFrRUEsR0FsRUEsRUFrRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0EsS0E1RUE7QUE2RUEscUJBN0VBLCtCQTZFQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQ0EsOERBREEsSUFFQSw4SkFGQSxFQUVBO0FBQ0E7QUFDQTtBQUNBLFdBTkE7QUFPQSxTQVJBO0FBU0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBSkE7QUFLQTs7QUFFQTtBQUNBO0FBQ0EsS0F0R0E7QUF1R0EsZ0JBdkdBLHdCQXVHQSxNQXZHQSxFQXVHQTtBQUNBO0FBRUEsNEJBQ0EsOEJBREEsS0FFQSxzQkFDQTtBQUNBLEtBOUdBO0FBK0dBLGtCQS9HQSw0QkErR0E7QUFDQSxvRUFDQTtBQUVBO0FBQUE7O0FBRUE7QUFDQTtBQUNBLE9BRkEsTUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQTVIQTtBQTZIQSxjQTdIQSx3QkE2SEE7QUFDQSxvRUFDQTtBQUVBO0FBQUE7O0FBRUE7QUFDQTtBQUNBLE9BRkEsTUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFFQSxLQTNJQTtBQTRJQSxnQ0E1SUEsMENBNElBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FIQSxNQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQWRBLEVBY0EsS0FkQTtBQWdCQTtBQUNBO0FBQ0EsS0EvSkE7QUFnS0EsZ0JBaEtBLHdCQWdLQSxLQWhLQSxFQWdLQSxFQWhLQSxFQWdLQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBcktBO0FBbkdBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL2Fzc2V0cy9zcmMvanMvc3RyaW5nLXRyYW5zbGF0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgPGRpdiBpZD1cInRycC1lZGl0b3JcIiBjbGFzcz1cIndwLWNvcmUtdWlcIj5cblxuICAgICAgICA8ZGl2IGlkPVwidHJwLWNvbnRyb2xzXCI+XG5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJ0cnAtY2xvc2Utc2F2ZVwiPlxuICAgICAgICAgICAgICAgIDxhIGlkPVwidHJwLWNvbnRyb2xzLWNsb3NlXCIgOmhyZWY9XCJjbG9zZVVSTFwiIDp0aXRsZT1cImVkaXRvclN0cmluZ3MuY2xvc2VcIj48L2E+XG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cInRycC1zYXZlLWFuZC1sb2FkZXItc3Bpbm5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0cnAtYWpheC1sb2FkZXJcIiB2LXNob3c9XCJsb2FkaW5nX3N0cmluZ3MgPiAwXCIgaWQ9XCJ0cnAtc3RyaW5nLXNhdmVkLWFqYXgtbG9hZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRycC1zcGlubmVyXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzYXZlLXRyYW5zbGF0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzZWxlY3RlZEluZGV4ZXNBcnJheT1cInNlbGVjdGVkSW5kZXhlc0FycmF5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGljdGlvbmFyeT1cImRpY3Rpb25hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzZXR0aW5ncz1cInNldHRpbmdzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bm9uY2VzPVwibm9uY2VzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6YWpheF91cmw9XCJhamF4VXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y3VycmVudExhbmd1YWdlPVwiY3VycmVudExhbmd1YWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6b25TY3JlZW5MYW5ndWFnZT1cIm9uU2NyZWVuTGFuZ3VhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjdXJyZW50VVJMPVwiY3VycmVudFVSTFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQHRyYW5zbGF0aW9ucy1zYXZlZD1cInNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2UgPSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmVkaXRvclN0cmluZ3M9XCJlZGl0b3JTdHJpbmdzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c3RyaW5nVHlwZXM9XCJzdHJpbmdUeXBlc1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9zYXZlLXRyYW5zbGF0aW9ucz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLWNvbnRyb2xzLWNvbnRhaW5lclwiIDpjbGFzcz1cInsndHJwLXNob3ctZWRpdG9ycy1uYXZpZ2F0aW9uJyA6IGVkaXRvcnNOYXZpZ2F0aW9uLnNob3cgfVwiPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRycC1jb250cm9scy1zZWN0aW9uXCIgaWQ9XCJ0cnAtY29udHJvbHMtc2VjdGlvbi1maXJzdFwiPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cnAtY29udHJvbHMtc2VjdGlvbi1jb250ZW50XCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJ0cnAtbmV4dC1wcmV2aW91c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlkPVwidHJwLXByZXZpb3VzXCIgY2xhc3M9XCJ0cnAtbmV4dC1wcmV2aW91cy1idXR0b25zIGJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LW9uOmNsaWNrPVwicHJldmlvdXNTdHJpbmcoKVwiIDp0aXRsZT1cImVkaXRvclN0cmluZ3MucHJldmlvdXNfdGl0bGVfYXR0clwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4mbGFxdW87PC9zcGFuPiB7eyBlZGl0b3JTdHJpbmdzLnByZXZpb3VzIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJ0cnAtbmV4dFwiIGNsYXNzPVwidHJwLW5leHQtcHJldmlvdXMtYnV0dG9ucyBidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1vbjpjbGljaz1cIm5leHRTdHJpbmcoKVwiIDp0aXRsZT1cImVkaXRvclN0cmluZ3MubmV4dF90aXRsZV9hdHRyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGVkaXRvclN0cmluZ3MubmV4dCB9fSA8c3Bhbj4mcmFxdW87PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cnAtY29udHJvbHMtc2VjdGlvblwiIHYtc2hvdz1cInNlbGVjdGVkSW5kZXhlc0FycmF5Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhbmd1YWdlLWJveGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOnNlbGVjdGVkSW5kZXhlc0FycmF5PVwic2VsZWN0ZWRJbmRleGVzQXJyYXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpkaWN0aW9uYXJ5PVwiZGljdGlvbmFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmN1cnJlbnRMYW5ndWFnZT1cImN1cnJlbnRMYW5ndWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOm9uU2NyZWVuTGFuZ3VhZ2U9XCJvblNjcmVlbkxhbmd1YWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bGFuZ3VhZ2VOYW1lcz1cImxhbmd1YWdlTmFtZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzZXR0aW5ncz1cInNldHRpbmdzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZT1cInNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBkaXNjYXJkZWQtY2hhbmdlcz1cImhhc1Vuc2F2ZWRDaGFuZ2VzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDplZGl0b3JTdHJpbmdzPVwiZWRpdG9yU3RyaW5nc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmZsYWdzUGF0aD1cImZsYWdzUGF0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOm5vbmNlcz1cIm5vbmNlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmFqYXhfdXJsPVwiYWpheFVybFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9sYW5ndWFnZS1ib3hlcz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxleHRyYS1jb250ZW50IDpsYW5ndWFnZU5hbWVzPVwibGFuZ3VhZ2VOYW1lc1wiIDplZGl0b3JTdHJpbmdzPVwiZWRpdG9yU3RyaW5nc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnBhaWRWZXJzaW9uPVwicGFpZFZlcnNpb25cIj48L2V4dHJhLWNvbnRlbnQ+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLWNvbnRyb2xzLXNlY3Rpb25cIiB2LXNob3c9XCJ0cmFuc2xhdGlvbk5vdExvYWRlZFlldFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwidHJwLXRyYW5zbGF0aW9uLW5vdC1yZWFkeS1zZWN0aW9uXCIgY2xhc3M9XCJ0cnAtY29udHJvbHMtc2VjdGlvbi1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCB2LWh0bWw9XCJlZGl0b3JTdHJpbmdzLnRyYW5zbGF0aW9uX25vdF9sb2FkZWRfeWV0XCI+PC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZWRpdG9ycy1uYXZpZ2F0aW9uIDplZGl0b3JzTmF2aWdhdGlvbj1cImVkaXRvcnNOYXZpZ2F0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnNlbGVjdGVkVGFiPVwiJ3N0cmluZ3RyYW5zbGF0aW9uJ1wiPjwvZWRpdG9ycy1uYXZpZ2F0aW9uPlxuXG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgaWQ9XCJ0cnAtcHJldmlld1wiIGNsYXNzPVwidHJwLXN0cmluZy10cmFuc2xhdGlvbi1jb250YWluZXJcIiBAY2xpY2s9XCJoYXNVbnNhdmVkQ2hhbmdlcygpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLXN0cmluZy10cmFuc2xhdGlvbi1pbm5lci1jb250YWluZXJcIiA6Y2xhc3M9XCJ7J3RycC1zY3JlZW4tb3ZlcmxheScgOiBzaG93Q2hhbmdlc1Vuc2F2ZWRNZXNzYWdlIH1cIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJuYXYtdGFiLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHJvdXRlci1saW5rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1mb3I9XCIodGFiLCB0YWJfc2x1ZykgaW4gc3RyaW5nVHlwZXNDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtYmluZDprZXk9XCIndHJwLXRhYi1rZXktJyArIHRhYl9zbHVnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dG89XCIodGFiWydjYXRlZ29yeV9iYXNlZCddICkgID8gJy8nKyB0YWJfc2x1ZyArICcvJzogJy8nKyB0YWJfc2x1ZyArICcvJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmlkPVwiJ3RycC10YWItJyArIHRhYl9zbHVnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi10YWJcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e3RhYlsndGFiX25hbWUnXX19XG4gICAgICAgICAgICAgICAgICAgIDwvcm91dGVyLWxpbms+XG48IS0tICAgICAgICAgICAgICAgICAgICA8cm91dGVyLWxpbmsgdG89XCIvaW1wb3J0LWV4cG9ydFwiIGNsYXNzPVwibmF2LXRhYlwiPi0tPlxuPCEtLSAgICAgICAgICAgICAgICAgICAgICAgIHt7c3RFZGl0b3JTdHJpbmdzLmltcG9ydGV4cG9ydH19LS0+XG48IS0tICAgICAgICAgICAgICAgICAgICA8L3JvdXRlci1saW5rPi0tPlxuICAgICAgICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgICAgICAgPHJvdXRlci12aWV3XG4gICAgICAgICAgICAgICAgICAgICAgICA6ZGljdGlvbmFyeT1cImRpY3Rpb25hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOnRvdGFsSXRlbXM9XCJ0b3RhbEl0ZW1zXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9yb3V0ZXItdmlldz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gICAgaW1wb3J0ICdzZWxlY3QyL2Rpc3QvanMvc2VsZWN0Mi5taW4uanMnXG4gICAgaW1wb3J0IHV0aWxzICAgICAgICAgICAgIGZyb20gJy4vdXRpbHMnXG4gICAgaW1wb3J0IGF4aW9zICAgICAgICAgICAgIGZyb20gJ2F4aW9zJ1xuICAgIGltcG9ydCBsYW5ndWFnZUJveGVzICAgICBmcm9tICcuL2NvbXBvbmVudHMvbGFuZ3VhZ2UtYm94ZXMudnVlJ1xuICAgIGltcG9ydCBzYXZlVHJhbnNsYXRpb25zICBmcm9tICcuL2NvbXBvbmVudHMvc2F2ZS10cmFuc2xhdGlvbnMudnVlJ1xuICAgIGltcG9ydCBob3ZlckFjdGlvbnMgICAgICBmcm9tICcuL2NvbXBvbmVudHMvaG92ZXItYWN0aW9ucy52dWUnXG4gICAgaW1wb3J0IGV4dHJhQ29udGVudCAgICAgIGZyb20gJy4vY29tcG9uZW50cy9leHRyYS1jb250ZW50LnZ1ZSdcbiAgICBpbXBvcnQgZWRpdG9yc05hdmlnYXRpb24gZnJvbSAnLi9jb21wb25lbnRzL2VkaXRvcnMtbmF2aWdhdGlvbi52dWUnXG4gICAgaW1wb3J0IGhlICAgICAgICAgICAgICAgIGZyb20gJ2hlJ1xuXG4gICAgZXhwb3J0IGRlZmF1bHQge1xuICAgICAgICBjb21wb25lbnRzIDoge1xuICAgICAgICAgICAgbGFuZ3VhZ2VCb3hlcyxcbiAgICAgICAgICAgIHNhdmVUcmFuc2xhdGlvbnMsXG4gICAgICAgICAgICBob3ZlckFjdGlvbnMsXG4gICAgICAgICAgICBleHRyYUNvbnRlbnQsXG4gICAgICAgICAgICBlZGl0b3JzTmF2aWdhdGlvblxuICAgICAgICB9LFxuICAgICAgICBkYXRhKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAvL3RycF9lZGl0b3JfZGF0YVxuICAgICAgICAgICAgICAgIHNldHRpbmdzICAgICAgICAgICAgICAgICAgOiB0cnBfZWRpdG9yX2RhdGEudHJwX3NldHRpbmdzLFxuICAgICAgICAgICAgICAgIGxhbmd1YWdlTmFtZXMgICAgICAgICAgICAgOiB0cnBfZWRpdG9yX2RhdGEubGFuZ3VhZ2VfbmFtZXMsXG4gICAgICAgICAgICAgICAgb3JkZXJlZFNlY29uZGFyeUxhbmd1YWdlcyA6IHRycF9lZGl0b3JfZGF0YS5vcmRlcmVkX3NlY29uZGFyeV9sYW5ndWFnZXMsXG4gICAgICAgICAgICAgICAgbm9uY2VzICAgICAgICAgICAgICAgICAgICA6IHRycF9lZGl0b3JfZGF0YS5lZGl0b3Jfbm9uY2VzLFxuICAgICAgICAgICAgICAgIGVkaXRvcnNOYXZpZ2F0aW9uICAgICAgICAgOiB0cnBfZWRpdG9yX2RhdGEuZWRpdG9yc19uYXZpZ2F0aW9uLFxuICAgICAgICAgICAgICAgIGVkaXRvclN0cmluZ3MgICAgICAgICAgICAgOiB0cnBfZWRpdG9yX2RhdGEudHJwX2xvY2FsaXplZF9zdHJpbmdzLFxuICAgICAgICAgICAgICAgIHN0cmluZ1R5cGVzICAgICAgICAgICAgICAgOiB0cnBfZWRpdG9yX2RhdGEuc3RyaW5nX3R5cGVzLFxuICAgICAgICAgICAgICAgIGZsYWdzUGF0aCAgICAgICAgICAgICAgICAgOiB0cnBfZWRpdG9yX2RhdGEuZmxhZ3NfcGF0aCxcbiAgICAgICAgICAgICAgICBjdXJyZW50TGFuZ3VhZ2UgICAgICAgICAgIDogdHJwX2VkaXRvcl9kYXRhLmN1cnJlbnRfbGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgb25TY3JlZW5MYW5ndWFnZSAgICAgICAgICA6IHRycF9lZGl0b3JfZGF0YS5vbl9zY3JlZW5fbGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgYWpheFVybCAgICAgICAgICAgICAgICAgICA6IHRycF9lZGl0b3JfZGF0YS5hamF4X3VybCxcbiAgICAgICAgICAgICAgICBjdXJyZW50VVJMICAgICAgICAgICAgICAgIDogdHJwX2VkaXRvcl9kYXRhLnVybF90b19sb2FkLFxuICAgICAgICAgICAgICAgIHBhaWRWZXJzaW9uICAgICAgICAgICAgICAgOiB0cnBfZWRpdG9yX2RhdGEucGFpZF92ZXJzaW9uLFxuXG4gICAgICAgICAgICAgICAgLy90cnBfc3RyaW5nX3RyYW5zbGF0aW9uX2RhdGFcbiAgICAgICAgICAgICAgICBzdHJpbmdUeXBlc0NvbmZpZyA6IHRycF9zdHJpbmdfdHJhbnNsYXRpb25fZGF0YS5zdHJpbmdfdHlwZXNfY29uZmlnLFxuICAgICAgICAgICAgICAgIHN0RWRpdG9yU3RyaW5ncyAgIDogdHJwX3N0cmluZ190cmFuc2xhdGlvbl9kYXRhLnN0X2VkaXRvcl9zdHJpbmdzLFxuXG4gICAgICAgICAgICAgICAgZGljdGlvbmFyeSAgICAgICAgICAgICAgICA6IHt9LFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkU3RyaW5nICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5kZXhlc0FycmF5ICAgICAgOiBbXSxcbiAgICAgICAgICAgICAgICBkZXRlY3RlZFNlbGVjdG9yQW5kSWQgICAgIDogW10sXG4gICAgICAgICAgICAgICAgc3RyaW5nR3JvdXBzICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgICAgIHNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2UgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBsb2FkaW5nX3N0cmluZ3MgICAgICAgICAgIDogMCxcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbk5vdExvYWRlZFlldCAgIDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdG90YWxJdGVtcyAgICAgICAgICAgICAgICA6IG51bGxcblxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjcmVhdGVkKCkge1xuICAgICAgICAgICAgdGhpcy5zZXR0aW5nc1sgJ2RlZmF1bHQtbGFuZ3VhZ2UtbmFtZScgXSA9IHRoaXMubGFuZ3VhZ2VOYW1lc1sgdGhpcy5zZXR0aW5nc1sgJ2RlZmF1bHQtbGFuZ3VhZ2UnIF0gXVxuXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRMYW5ndWFnZSA9IHRoaXMuc2V0dGluZ3NbICdkZWZhdWx0LWxhbmd1YWdlJyBdXG5cbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoICd0cnBfdHJpZ2dlcl9wZXJmb3JtX2FjdGlvbl9ldmVudCcsIHRoaXMuZWRpdFN0cmluZyApXG4gICAgICAgIH0sXG4gICAgICAgIG1vdW50ZWQoKSB7XG4gICAgICAgICAgICB0aGlzLmdldFN0cmluZ3MoIHRoaXMuJHJvdXRlLnF1ZXJ5IClcblxuICAgICAgICAgICAgdGhpcy5hZGRLZXlib2FyZFNob3J0Y3V0c0xpc3RlbmVyKClcbiAgICAgICAgICAgIGxldCBzZWxmID0gdGhpc1xuXG4gICAgICAgICAgICAvLyByZXNpemUgc2lkZWJhciBhbmQgY29uc2VxdWVudGx5IHRoZSBpZnJhbWVcbiAgICAgICAgICAgIGxldCBwcmV2aWV3Q29udGFpbmVyID0galF1ZXJ5KCAnI3RycC1wcmV2aWV3JyApXG4gICAgICAgICAgICBsZXQgdG90YWxfd2lkdGggICAgICA9IGpRdWVyeSggd2luZG93ICkud2lkdGgoKVxuICAgICAgICAgICAgalF1ZXJ5KCAnI3RycC1jb250cm9scycgKS5yZXNpemFibGUoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgICAgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aWV3Q29udGFpbmVyLnRvZ2dsZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3AgICAgIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlld0NvbnRhaW5lci50b2dnbGUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVzICA6ICdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluV2lkdGggOiAzMjcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFdpZHRoIDogdG90YWxfd2lkdGggLSAyMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKS5iaW5kKCBcInJlc2l6ZVwiLCB0aGlzLnJlc2l6ZUlmcmFtZSApXG5cbiAgICAgICAgICAgIC8vIHJlc2l6ZSBpZnJhbWUgd2hlbiByZXNpemluZyB3aW5kb3dcbiAgICAgICAgICAgIGpRdWVyeSggd2luZG93ICkucmVzaXplKCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5yZXNpemVJZnJhbWUoKVxuICAgICAgICAgICAgfSApXG4gICAgICAgIH0sXG4gICAgICAgIHdhdGNoICAgICAgOiB7XG4gICAgICAgICAgICAkcm91dGUoIHRvLCBmcm9tICkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3RyaW5ncyggdG8ucXVlcnkgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlbGVjdGVkU3RyaW5nIDogZnVuY3Rpb24gKCBuZXdTdHJpbmcsIG9sZFN0cmluZyApIHtcbiAgICAgICAgICAgICAgICBpZiAoICF0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzKCkgKXtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCB0aGlzLnNlbGVjdGVkU3RyaW5nID09PSBudWxsICl7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXhlc0FycmF5ID0gWyBdXG4gICAgICAgICAgICAgICAgICAgIH1lbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleGVzQXJyYXkgPSBbIHRoaXMuc2VsZWN0ZWRTdHJpbmcgXVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRpY3Rpb25hcnkgOiBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIGlmICggIXRoaXMuaGFzVW5zYXZlZENoYW5nZXMoKSApe1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkU3RyaW5nID0gbnVsbFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXhlc0FycmF5ID0gWyBdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjb21wdXRlZCAgIDoge1xuICAgICAgICAgICAgY2xvc2VVUkwgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW5VUkwoIHRoaXMuY3VycmVudFVSTCApXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZHMgICAgOiB7XG4gICAgICAgICAgICBnZXRTdHJpbmdzKCBxdWVyeSApIHtcbiAgICAgICAgICAgICAgICBpZiAoICF0aGlzLiRyb3V0ZS5tYXRjaGVkWyAwIF0ucHJvcHMuZGVmYXVsdC50cmFuc2xhdGlvblRhYiApe1xuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgc2VsZiAgICAgICAgICAgID0gdGhpc1xuICAgICAgICAgICAgICAgIGxldCBjdXJyZW50VGFiICAgICAgPSB0aGlzLiRyb3V0ZS5tYXRjaGVkWyAwIF0ucHJvcHMuZGVmYXVsdC5jdXJyZW50VGFiXG4gICAgICAgICAgICAgICAgbGV0IHRyYW5zbGF0aW9uVHlwZSA9IHRoaXMuJHJvdXRlLm1hdGNoZWRbIDAgXS5wcm9wcy5kZWZhdWx0LnRyYW5zbGF0aW9uVHlwZVxuXG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBuZXcgRm9ybURhdGEoKVxuICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKCAnYWN0aW9uJywgJ3RycF9zdHJpbmdfdHJhbnNsYXRpb25fZ2V0X3N0cmluZ3NfJyArIHRyYW5zbGF0aW9uVHlwZSApXG4gICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoICdxdWVyeScsIEpTT04uc3RyaW5naWZ5KCBxdWVyeSApIClcbiAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCggJ3NlY3VyaXR5JywgY3VycmVudFRhYlsgJ25vbmNlcycgXVsgJ2dldF9zdHJpbmdzJyBdIClcblxuICAgICAgICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KCBuZXcgRXZlbnQoICd0cnBfdHJpZ2dlcl9zaG93X2xvYWRpbmdfdGFibGVfZXZlbnQnICkgKVxuXG4gICAgICAgICAgICAgICAgYXhpb3MucG9zdCggdGhpcy5hamF4VXJsLCBkYXRhIClcbiAgICAgICAgICAgICAgICAgICAgIC50aGVuKCBmdW5jdGlvbiAoIHJlc3BvbnNlICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KCBuZXcgRXZlbnQoICd0cnBfdHJpZ2dlcl9oaWRlX2xvYWRpbmdfdGFibGVfZXZlbnQnICkgKVxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggcmVzcG9uc2UgIT0gbnVsbCApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm9uU2NyZWVuTGFuZ3VhZ2UgPSAocXVlcnkubGFuZ3VhZ2UgJiYgdXRpbHMuYXJyYXlDb250YWluc0l0ZW0oIHNlbGYuc2V0dGluZ3NbICd0cmFuc2xhdGlvbi1sYW5ndWFnZXMnIF0sIHF1ZXJ5Lmxhbmd1YWdlICkgJiYgcXVlcnkubGFuZ3VhZ2UgIT09ICd0cnAtZGVmYXVsdCcpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5Lmxhbmd1YWdlIDogJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50TGFuZ3VhZ2UgID0gKHF1ZXJ5Lmxhbmd1YWdlICYmIHV0aWxzLmFycmF5Q29udGFpbnNJdGVtKCBzZWxmLnNldHRpbmdzWyAndHJhbnNsYXRpb24tbGFuZ3VhZ2VzJyBdLCBxdWVyeS5sYW5ndWFnZSApICYmIHF1ZXJ5Lmxhbmd1YWdlICE9PSAndHJwLWRlZmF1bHQnKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeS5sYW5ndWFnZSA6IHNlbGYuc2V0dGluZ3NbICdkZWZhdWx0LWxhbmd1YWdlJyBdXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCByZXNwb25zZS5kYXRhLmRpY3Rpb25hcnkgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdEaWN0aW9uYXJ5ID0gcmVzcG9uc2UuZGF0YS5kaWN0aW9uYXJ5XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggc2VsZi5oYXNVbnNhdmVkQ2hhbmdlcygpICl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29weSB0aGUgdW5zYXZlZCBzdHJpbmcgZnJvbSB0aGUgY3VycmVudCBkaWN0aW9uYXJ5IHRvIHRoZSBuZXcgZGljdGlvbmFyeSB0byBhbGxvdyB1c2VyIHRvIGRpc2NhcmQgb3Igc2F2ZSBjaGFuZ2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld1NlbGVjdGVkSW5kZXhlc0FycmF5ID0gW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbGVjdGVkSW5kZXhlc0FycmF5LmZvckVhY2goIGZ1bmN0aW9uKCBpdGVtICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpY3Rpb25hcnlbIGl0ZW0gXS51bnNhdmVkQ2hhbmdlcyA9ICd5ZXMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkSW5kZXhlc0FycmF5LnB1c2goIG5ld0RpY3Rpb25hcnkucHVzaCggc2VsZi5kaWN0aW9uYXJ5W2l0ZW1dICkgLSAxIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWRJbmRleGVzQXJyYXkgPSBuZXdTZWxlY3RlZEluZGV4ZXNBcnJheVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWRTdHJpbmcgPSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGljdGlvbmFyeSA9IG5ld0RpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJlc3BvbnNlLmRhdGEudG90YWxJdGVtcyApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50b3RhbEl0ZW1zID0gcmVzcG9uc2UuZGF0YS50b3RhbEl0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICB9IClcbiAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCggZnVuY3Rpb24gKCBlcnJvciApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudCggbmV3IEV2ZW50KCAndHJwX3RyaWdnZXJfaGlkZV9sb2FkaW5nX3RhYmxlX2V2ZW50JyApIClcbiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpY3Rpb25hcnkgPSB7fVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIGVycm9yIClcbiAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVsb2FkID0gY29uZmlybSggc2VsZi5zdEVkaXRvclN0cmluZ3MucmVxdWVzdF9lcnJvciApXG4gICAgICAgICAgICAgICAgICAgICAgICAgaWYoIHJlbG9hZCA9PT0gZmFsc2UgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgIH0gKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVkaXRTdHJpbmcoIGRhdGEgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBkYXRhLmRldGFpbC5hY3Rpb24gPT09ICdlZGl0JyApe1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkU3RyaW5nID0gZGF0YS5kZXRhaWwuc3RyaW5nSW5kZXhcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2xlYW5VUkwoIHVybCApIHtcbiAgICAgICAgICAgICAgICAvL21ha2UgcmVtb3ZlVXJsUGFyYW1ldGVyIHJlY3Vyc2l2ZSBhbmQgb25seSBjYWxsIGl0IG9uY2Ugd2l0aCBhbGwgdGhlIHBhcmFtZXRlcnMgdGhhdFxuICAgICAgICAgICAgICAgIC8vbmVlZCB0byBzdHJpcHBlZCA/XG4gICAgICAgICAgICAgICAgdXJsID0gdXRpbHMucmVtb3ZlVXJsUGFyYW1ldGVyKCB1cmwsICdsYW5nJyApXG4gICAgICAgICAgICAgICAgdXJsID0gdXRpbHMucmVtb3ZlVXJsUGFyYW1ldGVyKCB1cmwsICd0cnAtdmlldy1hcycgKVxuICAgICAgICAgICAgICAgIHVybCA9IHV0aWxzLnJlbW92ZVVybFBhcmFtZXRlciggdXJsLCAndHJwLXZpZXctYXMtbm9uY2UnIClcbiAgICAgICAgICAgICAgICB1cmwgPSB1dGlscy5yZW1vdmVVcmxQYXJhbWV0ZXIoIHVybCwgJ3RycC1lZGl0LXRyYW5zbGF0aW9uJyApXG4gICAgICAgICAgICAgICAgdXJsID0gdXRpbHMucmVtb3ZlVXJsUGFyYW1ldGVyKCB1cmwsICd0cnAtc3RyaW5nLXRyYW5zbGF0aW9uJyApXG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdXJsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGFzVW5zYXZlZENoYW5nZXMoKSB7XG4gICAgICAgICAgICAgICAgbGV0IHVuc2F2ZWRDaGFuZ2VzID0gZmFsc2VcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiAgICAgICAgICAgPSB0aGlzXG4gICAgICAgICAgICAgICAgaWYgKCB0aGlzLnNlbGVjdGVkSW5kZXhlc0FycmF5Lmxlbmd0aCA+IDAgKXtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ZXNBcnJheS5mb3JFYWNoKCBmdW5jdGlvbiAoIHNlbGVjdGVkSW5kZXggKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNldHRpbmdzWyAndHJhbnNsYXRpb24tbGFuZ3VhZ2VzJyBdLmZvckVhY2goIGZ1bmN0aW9uICggbGFuZ3VhZ2VDb2RlICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggc2VsZi5kaWN0aW9uYXJ5WyBzZWxlY3RlZEluZGV4IF0gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kaWN0aW9uYXJ5WyBzZWxlY3RlZEluZGV4IF0udHJhbnNsYXRpb25zQXJyYXlbIGxhbmd1YWdlQ29kZSBdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLmRpY3Rpb25hcnlbIHNlbGVjdGVkSW5kZXggXS50cmFuc2xhdGlvbnNBcnJheVsgbGFuZ3VhZ2VDb2RlIF0udHJhbnNsYXRlZCAhPT0gc2VsZi5kaWN0aW9uYXJ5WyBzZWxlY3RlZEluZGV4IF0udHJhbnNsYXRpb25zQXJyYXlbIGxhbmd1YWdlQ29kZSBdLmVkaXRlZFRyYW5zbGF0aW9uKSApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNhdmVkQ2hhbmdlcyA9IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IClcbiAgICAgICAgICAgICAgICAgICAgfSApXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCB1bnNhdmVkQ2hhbmdlcyA9PT0gZmFsc2UgKXtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ZXNBcnJheS5mb3JFYWNoKCBmdW5jdGlvbiAoIHNlbGVjdGVkSW5kZXggKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHNlbGYuZGljdGlvbmFyeS5oYXNPd25Qcm9wZXJ0eShzZWxlY3RlZEluZGV4KSAmJiBzZWxmLmRpY3Rpb25hcnlbIHNlbGVjdGVkSW5kZXggXS51bnNhdmVkQ2hhbmdlcyAmJiBzZWxmLmRpY3Rpb25hcnlbIHNlbGVjdGVkSW5kZXggXS51bnNhdmVkQ2hhbmdlcyA9PT0gJ3llcycpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGljdGlvbmFyeVsgc2VsZWN0ZWRJbmRleCBdLnVuc2F2ZWRDaGFuZ2VzID0gJ25vJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZSA9IHVuc2F2ZWRDaGFuZ2VzXG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuc2F2ZWRDaGFuZ2VzXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaWZyYW1lTG9hZGVyKCBzdGF0dXMgKSB7XG4gICAgICAgICAgICAgICAgbGV0IGxvYWRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAndHJwLXByZXZpZXctbG9hZGVyJyApXG5cbiAgICAgICAgICAgICAgICBpZiAoIHN0YXR1cyA9PSAnc2hvdycgKVxuICAgICAgICAgICAgICAgICAgICBsb2FkZXIuc3R5bGUuZGlzcGxheSA9ICdmbGV4J1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCBzdGF0dXMgPT0gJ2hpZGUnIClcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcmV2aW91c1N0cmluZygpIHtcbiAgICAgICAgICAgICAgICBpZiAoIHRoaXMuZGljdGlvbmFyeS5sZW5ndGggPT09IDAgfHwgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcygpIClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG5cbiAgICAgICAgICAgICAgICBsZXQgY3VycmVudFZhbHVlID0gcGFyc2VJbnQoIHRoaXMuc2VsZWN0ZWRTdHJpbmcgKSwgbmV3VmFsdWUgPSB0aGlzLnNlbGVjdGVkU3RyaW5nXG5cbiAgICAgICAgICAgICAgICBpZiggdGhpcy5zZWxlY3RlZFN0cmluZyA9PT0gbnVsbCl7XG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gMFxuICAgICAgICAgICAgICAgIH1lbHNlIGlmICggMCA8IGN1cnJlbnRWYWx1ZSApe1xuICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IGN1cnJlbnRWYWx1ZSAtIDFcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkU3RyaW5nID0gbmV3VmFsdWUudG9TdHJpbmcoKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHRTdHJpbmcoKSB7XG4gICAgICAgICAgICAgICAgaWYgKCB0aGlzLmRpY3Rpb25hcnkubGVuZ3RoID09PSAwIHx8IHRoaXMuaGFzVW5zYXZlZENoYW5nZXMoKSApXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuXG4gICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRWYWx1ZSA9IHBhcnNlSW50KCB0aGlzLnNlbGVjdGVkU3RyaW5nICksIG5ld1ZhbHVlID0gdGhpcy5zZWxlY3RlZFN0cmluZ1xuXG4gICAgICAgICAgICAgICAgaWYoIHRoaXMuc2VsZWN0ZWRTdHJpbmcgPT09IG51bGwpe1xuICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IDBcbiAgICAgICAgICAgICAgICB9ZWxzZSBpZiAoIHRoaXMuZGljdGlvbmFyeS5sZW5ndGggPiAoY3VycmVudFZhbHVlICsgMSkgKXtcbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBjdXJyZW50VmFsdWUgKyAxXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFN0cmluZyA9IG5ld1ZhbHVlLnRvU3RyaW5nKClcblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFkZEtleWJvYXJkU2hvcnRjdXRzTGlzdGVuZXIoKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggXCJrZXlkb3duXCIsIGZ1bmN0aW9uICggZSApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCAod2luZG93Lm5hdmlnYXRvci5wbGF0Zm9ybS5tYXRjaCggXCJNYWNcIiApID8gZS5tZXRhS2V5IDogZS5jdHJsS2V5KSAmJiBlLmFsdEtleSApe1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ1RSTCArIEFMVCArIHJpZ2h0IGFycm93XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGUua2V5Q29kZSA9PT0gMzkgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudCggbmV3IEV2ZW50KCAndHJwX3RyaWdnZXJfbmV4dF9zdHJpbmdfZXZlbnQnICkgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDVFJMICsgQUxUICsgbGVmdCBhcnJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZS5rZXlDb2RlID09PSAzNyApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoIG5ldyBFdmVudCggJ3RycF90cmlnZ2VyX3ByZXZpb3VzX3N0cmluZ19ldmVudCcgKSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgZmFsc2UgKVxuXG4gICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICd0cnBfdHJpZ2dlcl9uZXh0X3N0cmluZ19ldmVudCcsIHRoaXMubmV4dFN0cmluZyApXG4gICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICd0cnBfdHJpZ2dlcl9wcmV2aW91c19zdHJpbmdfZXZlbnQnLCB0aGlzLnByZXZpb3VzU3RyaW5nIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNpemVJZnJhbWUoIGV2ZW50LCB1aSApIHtcbiAgICAgICAgICAgICAgICBsZXQgd2lkdGggICAgICAgPSBqUXVlcnkoICcjdHJwLWNvbnRyb2xzJyApLndpZHRoKClcblxuICAgICAgICAgICAgICAgIGxldCBwcmV2aWV3Q29udGFpbmVyID0galF1ZXJ5KCAnI3RycC1wcmV2aWV3JyApXG4gICAgICAgICAgICAgICAgcHJldmlld0NvbnRhaW5lci5jc3MoICdsZWZ0JywgKHdpZHRoIC0gMzQ4KSApXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG48L3NjcmlwdD5cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/string-translation.vue?vue&type=script&lang=js&\n");
1091
 
1092
  /***/ }),
1093
 
@@ -1212,7 +1260,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
1212
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
1213
 
1214
  "use strict";
1215
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _vm.selectedIndexesArray\n ? _c(\n \"div\",\n {\n staticClass: \"trp-controls-section-content\",\n attrs: { id: \"trp-translation-section\" }\n },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showChangesUnsavedMessage,\n expression: \"showChangesUnsavedMessage\"\n }\n ],\n staticClass: \"trp-changes-unsaved-message\"\n },\n [\n _vm._v(_vm._s(_vm.editorStrings.unsaved_changes) + \" \"),\n _c(\n \"span\",\n {\n staticClass: \"trp-unsaved-changes trp-discard-changes \",\n attrs: { title: _vm.editorStrings.discard_all_title_attr },\n on: { click: _vm.discardAll }\n },\n [_vm._v(_vm._s(_vm.editorStrings.discard_all))]\n ),\n _vm._v(\"?\")\n ]\n ),\n _vm._v(\" \"),\n _vm._l(_vm.languages, function(languageCode, key) {\n return _c(\n \"div\",\n { attrs: { id: \"trp-language-\" + languageCode } },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value:\n (key <= _vm.othersButtonPosition ||\n _vm.showOtherLanguages) &&\n (_vm.selectedIndexesArray &&\n _vm.selectedIndexesArray.length > 0),\n expression:\n \"( (key <= othersButtonPosition) || showOtherLanguages ) && ( selectedIndexesArray && selectedIndexesArray.length > 0 )\"\n }\n ],\n staticClass: \"trp-language-container\"\n },\n [\n _c(\"div\", { staticClass: \"trp-language-name\" }, [\n key == 0\n ? _c(\"span\", [\n _vm._v(_vm._s(_vm.editorStrings.from) + \" \")\n ])\n : _c(\"span\", [\n _vm._v(_vm._s(_vm.editorStrings.to) + \" \")\n ]),\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.completeLanguageNames[languageCode]) +\n \"\\n \"\n ),\n languageCode != \"original\"\n ? _c(\"img\", {\n staticClass: \"trp-language-box-flag-image\",\n attrs: {\n src:\n _vm.flagsPath[languageCode] +\n \"/\" +\n languageCode +\n \".png\",\n width: \"18\",\n height: \"12\",\n alt: languageCode,\n title: _vm.completeLanguageNames[languageCode]\n }\n })\n : _vm._e()\n ]),\n _vm._v(\" \"),\n _c(\n \"table\",\n { staticClass: \"trp-translations-for-language\" },\n [\n _vm.showImageIcon\n ? _c(\n \"td\",\n { staticClass: \"trp-translation-icon-container\" },\n [\n _c(\"span\", {\n staticClass:\n \"trp-translation-icon dashicons dashicons-format-image\"\n })\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"td\",\n { staticClass: \"trp-translations-container\" },\n _vm._l(_vm.selectedIndexesArray, function(\n selectedIndex\n ) {\n return _c(\n \"div\",\n { staticClass: \"trp-string-container\" },\n [\n _vm.dictionary[selectedIndex] &&\n _vm.dictionary[selectedIndex].translationsArray[\n languageCode\n ]\n ? _c(\n \"div\",\n { key: selectedIndex },\n [\n _c(\"translation-input\", {\n attrs: {\n string:\n _vm.dictionary[selectedIndex],\n highlightUnsavedChanges:\n _vm.showChangesUnsavedMessage &&\n _vm.hasUnsavedChanges(\n selectedIndex,\n languageCode\n ),\n editorStrings: _vm.editorStrings\n },\n model: {\n value:\n _vm.dictionary[selectedIndex]\n .translationsArray[languageCode]\n .editedTranslation,\n callback: function($$v) {\n _vm.$set(\n _vm.dictionary[selectedIndex]\n .translationsArray[\n languageCode\n ],\n \"editedTranslation\",\n $$v\n )\n },\n expression:\n \"dictionary[selectedIndex].translationsArray[languageCode].editedTranslation\"\n }\n })\n ],\n 1\n )\n : _vm.dictionary[selectedIndex]\n ? _c(\n \"div\",\n { key: selectedIndex },\n [\n _c(\"translation-input\", {\n attrs: {\n readonly: true,\n string:\n _vm.dictionary[selectedIndex],\n value:\n _vm.dictionary[selectedIndex]\n .original,\n editorStrings: _vm.editorStrings\n }\n })\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"trp-translation-input-footer\",\n attrs: {\n \"data-dictionary-entry\": JSON.stringify(\n _vm.dictionary[selectedIndex]\n )\n }\n },\n [\n _c(\n \"div\",\n { staticClass: \"trp-attribute-name\" },\n [\n _vm._v(\n _vm._s(\n _vm.editorStrings[\n _vm.dictionary[selectedIndex]\n .attribute\n ] &&\n (_vm.dictionary[selectedIndex]\n .attribute != \"content\" ||\n _vm.dictionary[selectedIndex]\n .attribute != \"\")\n ? _vm.editorStrings[\n _vm.dictionary[selectedIndex]\n .attribute\n ]\n : _vm.editorStrings.text\n )\n )\n ]\n ),\n _vm._v(\" \"),\n _vm.dictionary[selectedIndex] &&\n _vm.dictionary[selectedIndex]\n .translationsArray[languageCode]\n ? _c(\n \"div\",\n {\n staticClass:\n \"trp-discard-changes trp-discard-individual-changes\",\n class: {\n \"trp-unsaved-changes\": _vm.hasUnsavedChanges(\n selectedIndex,\n languageCode\n )\n },\n attrs: {\n title:\n _vm.editorStrings\n .discard_individual_changes_title_attribute\n },\n on: {\n click: function($event) {\n _vm.discardChanges(\n selectedIndex,\n languageCode\n )\n }\n }\n },\n [\n _vm._v(\n _vm._s(_vm.editorStrings.discard)\n )\n ]\n )\n : _vm._e()\n ]\n ),\n _vm._v(\" \"),\n _vm.dictionary[selectedIndex] &&\n _vm.dictionary[selectedIndex].translationsArray[\n languageCode\n ]\n ? _c(\n \"div\",\n {\n key: \"trp_tmw_\" + selectedIndex,\n staticClass:\n \"trp-translation-memory-wrap\"\n },\n [\n _c(\"translation-memory\", {\n attrs: {\n string:\n _vm.dictionary[selectedIndex],\n editorStrings: _vm.editorStrings,\n ajax_url: _vm.ajax_url,\n nonces: _vm.nonces,\n languageCode: languageCode\n }\n })\n ],\n 1\n )\n : _vm._e()\n ]\n )\n }),\n 0\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: key == _vm.othersButtonPosition,\n expression: \"key == othersButtonPosition\"\n }\n ]\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"trp-toggle-languages button\",\n class: {\n \"trp-show-other-languages\":\n _vm.showOtherLanguages,\n \"trp-hide-other-languages\": !_vm.showOtherLanguages\n },\n on: {\n click: function($event) {\n _vm.showOtherLanguages = !_vm.showOtherLanguages\n }\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n _vm._s(_vm.showOtherLanguages ? \"▼\" : \"▶\") +\n \" \" +\n _vm._s(_vm.editorStrings.other_lang)\n )\n ])\n ]\n )\n ]\n )\n ]\n )\n ]\n )\n })\n ],\n 2\n )\n : _vm._e()\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvbGFuZ3VhZ2UtYm94ZXMudnVlP2IxNGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsa0RBQWtEO0FBQzVFLHVCQUF1QjtBQUN2QixpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxTQUFTLHFDQUFxQyxFQUFFO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBLCtCQUErQixtQ0FBbUM7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLCtDQUErQztBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixnREFBZ0Q7QUFDL0U7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDRDQUE0QztBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLHNDQUFzQztBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxxQkFBcUI7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxxQkFBcUI7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxvQ0FBb0M7QUFDM0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvbGFuZ3VhZ2UtYm94ZXMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNmODBjZjEwJi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX3ZtLnNlbGVjdGVkSW5kZXhlc0FycmF5XG4gICAgPyBfYyhcbiAgICAgICAgXCJkaXZcIixcbiAgICAgICAge1xuICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1jb250cm9scy1zZWN0aW9uLWNvbnRlbnRcIixcbiAgICAgICAgICBhdHRyczogeyBpZDogXCJ0cnAtdHJhbnNsYXRpb24tc2VjdGlvblwiIH1cbiAgICAgICAgfSxcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uc2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwic2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtY2hhbmdlcy11bnNhdmVkLW1lc3NhZ2VcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0uZWRpdG9yU3RyaW5ncy51bnNhdmVkX2NoYW5nZXMpICsgXCIgXCIpLFxuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtdW5zYXZlZC1jaGFuZ2VzIHRycC1kaXNjYXJkLWNoYW5nZXMgXCIsXG4gICAgICAgICAgICAgICAgICBhdHRyczogeyB0aXRsZTogX3ZtLmVkaXRvclN0cmluZ3MuZGlzY2FyZF9hbGxfdGl0bGVfYXR0ciB9LFxuICAgICAgICAgICAgICAgICAgb246IHsgY2xpY2s6IF92bS5kaXNjYXJkQWxsIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKF92bS5lZGl0b3JTdHJpbmdzLmRpc2NhcmRfYWxsKSldXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF92bS5fdihcIj9cIilcbiAgICAgICAgICAgIF1cbiAgICAgICAgICApLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX3ZtLl9sKF92bS5sYW5ndWFnZXMsIGZ1bmN0aW9uKGxhbmd1YWdlQ29kZSwga2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gX2MoXG4gICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgIHsgYXR0cnM6IHsgaWQ6IFwidHJwLWxhbmd1YWdlLVwiICsgbGFuZ3VhZ2VDb2RlIH0gfSxcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5IDw9IF92bS5vdGhlcnNCdXR0b25Qb3NpdGlvbiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zaG93T3RoZXJMYW5ndWFnZXMpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChfdm0uc2VsZWN0ZWRJbmRleGVzQXJyYXkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uc2VsZWN0ZWRJbmRleGVzQXJyYXkubGVuZ3RoID4gMCksXG4gICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIiggKGtleSA8PSBvdGhlcnNCdXR0b25Qb3NpdGlvbikgfHwgc2hvd090aGVyTGFuZ3VhZ2VzICkgJiYgKCBzZWxlY3RlZEluZGV4ZXNBcnJheSAmJiBzZWxlY3RlZEluZGV4ZXNBcnJheS5sZW5ndGggPiAwIClcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLWxhbmd1YWdlLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInRycC1sYW5ndWFnZS1uYW1lXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgIGtleSA9PSAwXG4gICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFwic3BhblwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0uZWRpdG9yU3RyaW5ncy5mcm9tKSArIFwiIFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBfYyhcInNwYW5cIiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLmVkaXRvclN0cmluZ3MudG8pICsgXCIgXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgICAgIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKF92bS5jb21wbGV0ZUxhbmd1YWdlTmFtZXNbbGFuZ3VhZ2VDb2RlXSkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlICE9IFwib3JpZ2luYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcImltZ1wiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLWxhbmd1YWdlLWJveC1mbGFnLWltYWdlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmZsYWdzUGF0aFtsYW5ndWFnZUNvZGVdICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIvXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZUNvZGUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIi5wbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjE4XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiMTJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogbGFuZ3VhZ2VDb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF92bS5jb21wbGV0ZUxhbmd1YWdlTmFtZXNbbGFuZ3VhZ2VDb2RlXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgIFwidGFibGVcIixcbiAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInRycC10cmFuc2xhdGlvbnMtZm9yLWxhbmd1YWdlXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uc2hvd0ltYWdlSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0ZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ0cnAtdHJhbnNsYXRpb24taWNvbi1jb250YWluZXJcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInNwYW5cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cnAtdHJhbnNsYXRpb24taWNvbiBkYXNoaWNvbnMgZGFzaGljb25zLWZvcm1hdC1pbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcInRkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwidHJwLXRyYW5zbGF0aW9ucy1jb250YWluZXJcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX2woX3ZtLnNlbGVjdGVkSW5kZXhlc0FycmF5LCBmdW5jdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInRycC1zdHJpbmctY29udGFpbmVyXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGtleTogc2VsZWN0ZWRJbmRleCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJ0cmFuc2xhdGlvbi1pbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodFVuc2F2ZWRDaGFuZ2VzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zaG93Q2hhbmdlc1Vuc2F2ZWRNZXNzYWdlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmhhc1Vuc2F2ZWRDaGFuZ2VzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlQ29kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvclN0cmluZ3M6IF92bS5lZGl0b3JTdHJpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZWRpdGVkVHJhbnNsYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uJHNldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50cmFuc2xhdGlvbnNBcnJheVtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlZGl0ZWRUcmFuc2xhdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCR2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLmVkaXRlZFRyYW5zbGF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsga2V5OiBzZWxlY3RlZEluZGV4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInRyYW5zbGF0aW9uLWlucHV0XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAub3JpZ2luYWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvclN0cmluZ3M6IF92bS5lZGl0b3JTdHJpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLXRyYW5zbGF0aW9uLWlucHV0LWZvb3RlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkYXRhLWRpY3Rpb25hcnktZW50cnlcIjogSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwidHJwLWF0dHJpYnV0ZS1uYW1lXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmVkaXRvclN0cmluZ3NbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyaWJ1dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHJpYnV0ZSAhPSBcImNvbnRlbnRcIiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHJpYnV0ZSAhPSBcIlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gX3ZtLmVkaXRvclN0cmluZ3NbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHJpYnV0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLmVkaXRvclN0cmluZ3MudGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJwLWRpc2NhcmQtY2hhbmdlcyB0cnAtZGlzY2FyZC1pbmRpdmlkdWFsLWNoYW5nZXNcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRycC11bnNhdmVkLWNoYW5nZXNcIjogX3ZtLmhhc1Vuc2F2ZWRDaGFuZ2VzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlQ29kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5lZGl0b3JTdHJpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5kaXNjYXJkX2luZGl2aWR1YWxfY2hhbmdlc190aXRsZV9hdHRyaWJ1dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGlzY2FyZENoYW5nZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlQ29kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhfdm0uZWRpdG9yU3RyaW5ncy5kaXNjYXJkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZUNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwidHJwX3Rtd19cIiArIHNlbGVjdGVkSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRycC10cmFuc2xhdGlvbi1tZW1vcnktd3JhcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInRyYW5zbGF0aW9uLW1lbW9yeVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvclN0cmluZ3M6IF92bS5lZGl0b3JTdHJpbmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhamF4X3VybDogX3ZtLmFqYXhfdXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25jZXM6IF92bS5ub25jZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlQ29kZTogbGFuZ3VhZ2VDb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGtleSA9PSBfdm0ub3RoZXJzQnV0dG9uUG9zaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJrZXkgPT0gb3RoZXJzQnV0dG9uUG9zaXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC10b2dnbGUtbGFuZ3VhZ2VzIGJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRycC1zaG93LW90aGVyLWxhbmd1YWdlc1wiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uc2hvd090aGVyTGFuZ3VhZ2VzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cnAtaGlkZS1vdGhlci1sYW5ndWFnZXNcIjogIV92bS5zaG93T3RoZXJMYW5ndWFnZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zaG93T3RoZXJMYW5ndWFnZXMgPSAhX3ZtLnNob3dPdGhlckxhbmd1YWdlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwic3BhblwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhfdm0uc2hvd090aGVyTGFuZ3VhZ2VzID8gXCLilrxcIiA6IFwi4pa2XCIpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKF92bS5lZGl0b3JTdHJpbmdzLm90aGVyX2xhbmcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICAgIF0sXG4gICAgICAgIDJcbiAgICAgIClcbiAgICA6IF92bS5fZSgpXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/language-boxes.vue?vue&type=template&id=3f80cf10&\n");
1216
 
1217
  /***/ }),
1218
 
@@ -1224,7 +1272,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
1224
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
1225
 
1226
  "use strict";
1227
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"trp-save-container\" } }, [\n _c(\n \"span\",\n {\n staticStyle: { display: \"none\" },\n attrs: { id: \"trp-translation-saved\" }\n },\n [_vm._v(_vm._s(_vm.editorStrings.saved))]\n ),\n _vm._v(\" \"),\n _c(\n \"button\",\n {\n staticClass: \"button-primary trp-save-string\",\n attrs: {\n id: \"trp-save\",\n disabled: _vm.disabledSaveButton,\n type: \"submit\",\n title: _vm.editorStrings.save_title_attr\n },\n on: { click: _vm.save }\n },\n [_vm._v(_vm._s(_vm.saveButtonText))]\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvc2F2ZS10cmFuc2xhdGlvbnMudnVlPzUxZTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsU0FBUywyQkFBMkIsRUFBRTtBQUMxRDtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isa0JBQWtCO0FBQ3hDLGdCQUFnQjtBQUNoQixPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULGFBQWE7QUFDYixPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL2Fzc2V0cy9zcmMvanMvY29tcG9uZW50cy9zYXZlLXRyYW5zbGF0aW9ucy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWVjNmVjNTQmLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IGlkOiBcInRycC1zYXZlLWNvbnRhaW5lclwiIH0gfSwgW1xuICAgIF9jKFxuICAgICAgXCJzcGFuXCIsXG4gICAgICB7XG4gICAgICAgIHN0YXRpY1N0eWxlOiB7IGRpc3BsYXk6IFwibm9uZVwiIH0sXG4gICAgICAgIGF0dHJzOiB7IGlkOiBcInRycC10cmFuc2xhdGlvbi1zYXZlZFwiIH1cbiAgICAgIH0sXG4gICAgICBbX3ZtLl92KF92bS5fcyhfdm0uZWRpdG9yU3RyaW5ncy5zYXZlZCkpXVxuICAgICksXG4gICAgX3ZtLl92KFwiIFwiKSxcbiAgICBfYyhcbiAgICAgIFwiYnV0dG9uXCIsXG4gICAgICB7XG4gICAgICAgIHN0YXRpY0NsYXNzOiBcImJ1dHRvbi1wcmltYXJ5IHRycC1zYXZlLXN0cmluZ1wiLFxuICAgICAgICBhdHRyczoge1xuICAgICAgICAgIGlkOiBcInRycC1zYXZlXCIsXG4gICAgICAgICAgZGlzYWJsZWQ6IF92bS5kaXNhYmxlZFNhdmVCdXR0b24sXG4gICAgICAgICAgdHlwZTogXCJzdWJtaXRcIixcbiAgICAgICAgICB0aXRsZTogX3ZtLmVkaXRvclN0cmluZ3Muc2F2ZV90aXRsZV9hdHRyXG4gICAgICAgIH0sXG4gICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uc2F2ZSB9XG4gICAgICB9LFxuICAgICAgW192bS5fdihfdm0uX3MoX3ZtLnNhdmVCdXR0b25UZXh0KSldXG4gICAgKVxuICBdKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/save-translations.vue?vue&type=template&id=1ec6ec54&\n");
1228
 
1229
  /***/ }),
1230
 
@@ -1300,6 +1348,18 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
1300
 
1301
  /***/ }),
1302
 
 
 
 
 
 
 
 
 
 
 
 
 
1303
  /***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/translation-input.vue?vue&type=template&id=3871315c&":
1304
  /*!*********************************************************************************************************************************************************************************************************************!*\
1305
  !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./assets/src/js/components/translation-input.vue?vue&type=template&id=3871315c& ***!
@@ -1332,7 +1392,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
1332
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
1333
 
1334
  "use strict";
1335
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"wp-core-ui\", attrs: { id: \"trp-editor\" } }, [\n _c(\n \"div\",\n { attrs: { id: \"trp-controls\" } },\n [\n _c(\"div\", { attrs: { id: \"trp-close-save\" } }, [\n _c(\"a\", {\n attrs: {\n id: \"trp-controls-close\",\n href: _vm.closeURL,\n title: _vm.editorStrings.close\n }\n }),\n _vm._v(\" \"),\n _c(\n \"div\",\n { attrs: { id: \"trp-save-and-loader-spinner\" } },\n [\n _c(\n \"span\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.loading_strings > 0,\n expression: \"loading_strings > 0\"\n }\n ],\n staticClass: \"trp-ajax-loader\",\n attrs: { id: \"trp-string-saved-ajax-loader\" }\n },\n [_c(\"div\", { staticClass: \"trp-spinner\" })]\n ),\n _vm._v(\" \"),\n _c(\"save-translations\", {\n attrs: {\n selectedIndexesArray: _vm.selectedIndexesArray,\n dictionary: _vm.dictionary,\n settings: _vm.settings,\n nonces: _vm.nonces,\n ajax_url: _vm.ajaxUrl,\n currentLanguage: _vm.currentLanguage,\n onScreenLanguage: _vm.onScreenLanguage,\n currentURL: _vm.currentURL,\n editorStrings: _vm.editorStrings,\n stringTypes: _vm.stringTypes\n },\n on: {\n \"translations-saved\": function($event) {\n _vm.showChangesUnsavedMessage = false\n }\n }\n })\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"trp-controls-container\",\n class: { \"trp-show-editors-navigation\": _vm.editorsNavigation.show }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"trp-controls-section\",\n attrs: { id: \"trp-controls-section-first\" }\n },\n [\n _c(\"div\", { staticClass: \"trp-controls-section-content\" }, [\n _c(\"div\", { attrs: { id: \"trp-next-previous\" } }, [\n _c(\n \"button\",\n {\n staticClass: \"trp-next-previous-buttons button\",\n attrs: {\n type: \"button\",\n id: \"trp-previous\",\n title: _vm.editorStrings.previous_title_attr\n },\n on: {\n click: function($event) {\n _vm.previousString()\n }\n }\n },\n [\n _c(\"span\", [_vm._v(\"«\")]),\n _vm._v(\n \" \" +\n _vm._s(_vm.editorStrings.previous) +\n \"\\n \"\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"button\",\n {\n staticClass: \"trp-next-previous-buttons button\",\n attrs: {\n type: \"button\",\n id: \"trp-next\",\n title: _vm.editorStrings.next_title_attr\n },\n on: {\n click: function($event) {\n _vm.nextString()\n }\n }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.editorStrings.next) +\n \" \"\n ),\n _c(\"span\", [_vm._v(\"»\")])\n ]\n )\n ])\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.selectedIndexesArray.length > 0,\n expression: \"selectedIndexesArray.length > 0\"\n }\n ],\n staticClass: \"trp-controls-section\"\n },\n [\n _c(\"language-boxes\", {\n attrs: {\n selectedIndexesArray: _vm.selectedIndexesArray,\n dictionary: _vm.dictionary,\n currentLanguage: _vm.currentLanguage,\n onScreenLanguage: _vm.onScreenLanguage,\n languageNames: _vm.languageNames,\n settings: _vm.settings,\n showChangesUnsavedMessage: _vm.showChangesUnsavedMessage,\n editorStrings: _vm.editorStrings,\n flagsPath: _vm.flagsPath,\n nonces: _vm.nonces,\n ajax_url: _vm.ajaxUrl\n },\n on: {\n \"discarded-changes\": function($event) {\n _vm.hasUnsavedChanges()\n }\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"extra-content\", {\n attrs: {\n languageNames: _vm.languageNames,\n editorStrings: _vm.editorStrings,\n paidVersion: _vm.paidVersion\n }\n }),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.translationNotLoadedYet,\n expression: \"translationNotLoadedYet\"\n }\n ],\n staticClass: \"trp-controls-section\"\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"trp-controls-section-content\",\n attrs: { id: \"trp-translation-not-ready-section\" }\n },\n [\n _c(\"p\", {\n domProps: {\n innerHTML: _vm._s(\n _vm.editorStrings.translation_not_loaded_yet\n )\n }\n })\n ]\n )\n ]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"editors-navigation\", {\n attrs: {\n editorsNavigation: _vm.editorsNavigation,\n selectedTab: \"stringtranslation\"\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"trp-string-translation-container\",\n attrs: { id: \"trp-preview\" },\n on: {\n click: function($event) {\n _vm.hasUnsavedChanges()\n }\n }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"trp-string-translation-inner-container\",\n class: { \"trp-screen-overlay\": _vm.showChangesUnsavedMessage }\n },\n [\n _c(\n \"h2\",\n { staticClass: \"nav-tab-wrapper\" },\n _vm._l(_vm.stringTypesConfig, function(tab, tab_slug) {\n return _c(\n \"router-link\",\n {\n key: \"trp-tab-key-\" + tab_slug,\n staticClass: \"nav-tab\",\n attrs: {\n to: tab[\"category_based\"]\n ? \"/\" + tab_slug + \"/\"\n : \"/\" + tab_slug + \"/\",\n id: \"trp-tab-\" + tab_slug\n }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(tab[\"tab_name\"]) +\n \"\\n \"\n )\n ]\n )\n }),\n 1\n ),\n _vm._v(\" \"),\n _c(\"router-view\", {\n attrs: { dictionary: _vm.dictionary, totalItems: _vm.totalItems }\n })\n ],\n 1\n )\n ]\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL3N0cmluZy10cmFuc2xhdGlvbi52dWU/YjIyMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixvQ0FBb0MsbUJBQW1CLEVBQUU7QUFDN0U7QUFDQTtBQUNBLE9BQU8sU0FBUyxxQkFBcUIsRUFBRTtBQUN2QztBQUNBLG1CQUFtQixTQUFTLHVCQUF1QixFQUFFO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxhQUFhLFNBQVMsb0NBQW9DLEVBQUU7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUIsaUJBQWlCO0FBQ2pCLDRCQUE0Qiw2QkFBNkI7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQixXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QixlQUFlO0FBQ2Y7QUFDQSwyQkFBMkIsOENBQThDO0FBQ3pFLDZCQUE2QixTQUFTLDBCQUEwQixFQUFFO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEIsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaUNBQWlDO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vYXNzZXRzL3NyYy9qcy9zdHJpbmctdHJhbnNsYXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWE1MTE0Y2RjJi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ3cC1jb3JlLXVpXCIsIGF0dHJzOiB7IGlkOiBcInRycC1lZGl0b3JcIiB9IH0sIFtcbiAgICBfYyhcbiAgICAgIFwiZGl2XCIsXG4gICAgICB7IGF0dHJzOiB7IGlkOiBcInRycC1jb250cm9sc1wiIH0gfSxcbiAgICAgIFtcbiAgICAgICAgX2MoXCJkaXZcIiwgeyBhdHRyczogeyBpZDogXCJ0cnAtY2xvc2Utc2F2ZVwiIH0gfSwgW1xuICAgICAgICAgIF9jKFwiYVwiLCB7XG4gICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICBpZDogXCJ0cnAtY29udHJvbHMtY2xvc2VcIixcbiAgICAgICAgICAgICAgaHJlZjogX3ZtLmNsb3NlVVJMLFxuICAgICAgICAgICAgICB0aXRsZTogX3ZtLmVkaXRvclN0cmluZ3MuY2xvc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHsgYXR0cnM6IHsgaWQ6IFwidHJwLXNhdmUtYW5kLWxvYWRlci1zcGlubmVyXCIgfSB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ubG9hZGluZ19zdHJpbmdzID4gMCxcbiAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImxvYWRpbmdfc3RyaW5ncyA+IDBcIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLWFqYXgtbG9hZGVyXCIsXG4gICAgICAgICAgICAgICAgICBhdHRyczogeyBpZDogXCJ0cnAtc3RyaW5nLXNhdmVkLWFqYXgtbG9hZGVyXCIgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW19jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidHJwLXNwaW5uZXJcIiB9KV1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgX2MoXCJzYXZlLXRyYW5zbGF0aW9uc1wiLCB7XG4gICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5kZXhlc0FycmF5OiBfdm0uc2VsZWN0ZWRJbmRleGVzQXJyYXksXG4gICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5OiBfdm0uZGljdGlvbmFyeSxcbiAgICAgICAgICAgICAgICAgIHNldHRpbmdzOiBfdm0uc2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgICBub25jZXM6IF92bS5ub25jZXMsXG4gICAgICAgICAgICAgICAgICBhamF4X3VybDogX3ZtLmFqYXhVcmwsXG4gICAgICAgICAgICAgICAgICBjdXJyZW50TGFuZ3VhZ2U6IF92bS5jdXJyZW50TGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgICBvblNjcmVlbkxhbmd1YWdlOiBfdm0ub25TY3JlZW5MYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgIGN1cnJlbnRVUkw6IF92bS5jdXJyZW50VVJMLFxuICAgICAgICAgICAgICAgICAgZWRpdG9yU3RyaW5nczogX3ZtLmVkaXRvclN0cmluZ3MsXG4gICAgICAgICAgICAgICAgICBzdHJpbmdUeXBlczogX3ZtLnN0cmluZ1R5cGVzXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgXCJ0cmFuc2xhdGlvbnMtc2F2ZWRcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIF92bS5zaG93Q2hhbmdlc1Vuc2F2ZWRNZXNzYWdlID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMVxuICAgICAgICAgIClcbiAgICAgICAgXSksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFxuICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLWNvbnRyb2xzLWNvbnRhaW5lclwiLFxuICAgICAgICAgICAgY2xhc3M6IHsgXCJ0cnAtc2hvdy1lZGl0b3JzLW5hdmlnYXRpb25cIjogX3ZtLmVkaXRvcnNOYXZpZ2F0aW9uLnNob3cgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtY29udHJvbHMtc2VjdGlvblwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7IGlkOiBcInRycC1jb250cm9scy1zZWN0aW9uLWZpcnN0XCIgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ0cnAtY29udHJvbHMtc2VjdGlvbi1jb250ZW50XCIgfSwgW1xuICAgICAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBhdHRyczogeyBpZDogXCJ0cnAtbmV4dC1wcmV2aW91c1wiIH0gfSwgW1xuICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1uZXh0LXByZXZpb3VzLWJ1dHRvbnMgYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogXCJ0cnAtcHJldmlvdXNcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF92bS5lZGl0b3JTdHJpbmdzLnByZXZpb3VzX3RpdGxlX2F0dHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnByZXZpb3VzU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJzcGFuXCIsIFtfdm0uX3YoXCLCq1wiKV0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIiBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKF92bS5lZGl0b3JTdHJpbmdzLnByZXZpb3VzKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgIFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLW5leHQtcHJldmlvdXMtYnV0dG9ucyBidXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcInRycC1uZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBfdm0uZWRpdG9yU3RyaW5ncy5uZXh0X3RpdGxlX2F0dHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLm5leHRTdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKF92bS5lZGl0b3JTdHJpbmdzLm5leHQpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwic3BhblwiLCBbX3ZtLl92KFwiwrtcIildKVxuICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5zZWxlY3RlZEluZGV4ZXNBcnJheS5sZW5ndGggPiAwLFxuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInNlbGVjdGVkSW5kZXhlc0FycmF5Lmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLWNvbnRyb2xzLXNlY3Rpb25cIlxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgX2MoXCJsYW5ndWFnZS1ib3hlc1wiLCB7XG4gICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEluZGV4ZXNBcnJheTogX3ZtLnNlbGVjdGVkSW5kZXhlc0FycmF5LFxuICAgICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5OiBfdm0uZGljdGlvbmFyeSxcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudExhbmd1YWdlOiBfdm0uY3VycmVudExhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgICBvblNjcmVlbkxhbmd1YWdlOiBfdm0ub25TY3JlZW5MYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VOYW1lczogX3ZtLmxhbmd1YWdlTmFtZXMsXG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmdzOiBfdm0uc2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgICAgIHNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2U6IF92bS5zaG93Q2hhbmdlc1Vuc2F2ZWRNZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICBlZGl0b3JTdHJpbmdzOiBfdm0uZWRpdG9yU3RyaW5ncyxcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3NQYXRoOiBfdm0uZmxhZ3NQYXRoLFxuICAgICAgICAgICAgICAgICAgICBub25jZXM6IF92bS5ub25jZXMsXG4gICAgICAgICAgICAgICAgICAgIGFqYXhfdXJsOiBfdm0uYWpheFVybFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiZGlzY2FyZGVkLWNoYW5nZXNcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLmhhc1Vuc2F2ZWRDaGFuZ2VzKClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgX2MoXCJleHRyYS1jb250ZW50XCIsIHtcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICBsYW5ndWFnZU5hbWVzOiBfdm0ubGFuZ3VhZ2VOYW1lcyxcbiAgICAgICAgICAgICAgICBlZGl0b3JTdHJpbmdzOiBfdm0uZWRpdG9yU3RyaW5ncyxcbiAgICAgICAgICAgICAgICBwYWlkVmVyc2lvbjogX3ZtLnBhaWRWZXJzaW9uXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS50cmFuc2xhdGlvbk5vdExvYWRlZFlldCxcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJ0cmFuc2xhdGlvbk5vdExvYWRlZFlldFwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtY29udHJvbHMtc2VjdGlvblwiXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1jb250cm9scy1zZWN0aW9uLWNvbnRlbnRcIixcbiAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgaWQ6IFwidHJwLXRyYW5zbGF0aW9uLW5vdC1yZWFkeS1zZWN0aW9uXCIgfVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJwXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICBkb21Qcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJIVE1MOiBfdm0uX3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5lZGl0b3JTdHJpbmdzLnRyYW5zbGF0aW9uX25vdF9sb2FkZWRfeWV0XG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKVxuICAgICAgICAgIF0sXG4gICAgICAgICAgMVxuICAgICAgICApLFxuICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICBfYyhcImVkaXRvcnMtbmF2aWdhdGlvblwiLCB7XG4gICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgIGVkaXRvcnNOYXZpZ2F0aW9uOiBfdm0uZWRpdG9yc05hdmlnYXRpb24sXG4gICAgICAgICAgICBzZWxlY3RlZFRhYjogXCJzdHJpbmd0cmFuc2xhdGlvblwiXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgXSxcbiAgICAgIDFcbiAgICApLFxuICAgIF92bS5fdihcIiBcIiksXG4gICAgX2MoXG4gICAgICBcImRpdlwiLFxuICAgICAge1xuICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtc3RyaW5nLXRyYW5zbGF0aW9uLWNvbnRhaW5lclwiLFxuICAgICAgICBhdHRyczogeyBpZDogXCJ0cnAtcHJldmlld1wiIH0sXG4gICAgICAgIG9uOiB7XG4gICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgX3ZtLmhhc1Vuc2F2ZWRDaGFuZ2VzKClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbXG4gICAgICAgIF9jKFxuICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLXN0cmluZy10cmFuc2xhdGlvbi1pbm5lci1jb250YWluZXJcIixcbiAgICAgICAgICAgIGNsYXNzOiB7IFwidHJwLXNjcmVlbi1vdmVybGF5XCI6IF92bS5zaG93Q2hhbmdlc1Vuc2F2ZWRNZXNzYWdlIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICBcImgyXCIsXG4gICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwibmF2LXRhYi13cmFwcGVyXCIgfSxcbiAgICAgICAgICAgICAgX3ZtLl9sKF92bS5zdHJpbmdUeXBlc0NvbmZpZywgZnVuY3Rpb24odGFiLCB0YWJfc2x1Zykge1xuICAgICAgICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgICAgICAgIFwicm91dGVyLWxpbmtcIixcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcInRycC10YWIta2V5LVwiICsgdGFiX3NsdWcsXG4gICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm5hdi10YWJcIixcbiAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICB0bzogdGFiW1wiY2F0ZWdvcnlfYmFzZWRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCIvXCIgKyB0YWJfc2x1ZyArIFwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiL1wiICsgdGFiX3NsdWcgKyBcIi9cIixcbiAgICAgICAgICAgICAgICAgICAgICBpZDogXCJ0cnAtdGFiLVwiICsgdGFiX3NsdWdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKHRhYltcInRhYl9uYW1lXCJdKSArXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgX2MoXCJyb3V0ZXItdmlld1wiLCB7XG4gICAgICAgICAgICAgIGF0dHJzOiB7IGRpY3Rpb25hcnk6IF92bS5kaWN0aW9uYXJ5LCB0b3RhbEl0ZW1zOiBfdm0udG90YWxJdGVtcyB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF0sXG4gICAgICAgICAgMVxuICAgICAgICApXG4gICAgICBdXG4gICAgKVxuICBdKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/string-translation.vue?vue&type=template&id=a5114cdc&\n");
1336
 
1337
  /***/ }),
1338
 
482
 
483
  /***/ }),
484
 
485
+ /***/ "./assets/src/js/components/tooltip.vue":
486
+ /*!**********************************************!*\
487
+ !*** ./assets/src/js/components/tooltip.vue ***!
488
+ \**********************************************/
489
+ /*! exports provided: default */
490
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
491
+
492
+ "use strict";
493
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _tooltip_vue_vue_type_template_id_f7e5e3b2___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tooltip.vue?vue&type=template&id=f7e5e3b2& */ \"./assets/src/js/components/tooltip.vue?vue&type=template&id=f7e5e3b2&\");\n/* harmony import */ var _tooltip_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tooltip.vue?vue&type=script&lang=js& */ \"./assets/src/js/components/tooltip.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _tooltip_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _tooltip_vue_vue_type_template_id_f7e5e3b2___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _tooltip_vue_vue_type_template_id_f7e5e3b2___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"assets/src/js/components/tooltip.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvdG9vbHRpcC52dWU/YzJlZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFzRjtBQUMzQjtBQUNMOzs7QUFHdEQ7QUFDZ0c7QUFDaEcsZ0JBQWdCLDJHQUFVO0FBQzFCLEVBQUUsNkVBQU07QUFDUixFQUFFLGtGQUFNO0FBQ1IsRUFBRSwyRkFBZTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLElBQUksS0FBVSxFQUFFLFlBaUJmO0FBQ0Q7QUFDZSxnRiIsImZpbGUiOiIuL2Fzc2V0cy9zcmMvanMvY29tcG9uZW50cy90b29sdGlwLnZ1ZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vdG9vbHRpcC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZjdlNWUzYjImXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vdG9vbHRpcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL3Rvb2x0aXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvaG9tZS9tYWRhbGluL1Byb2plY3RzL3RyYW5zbGF0ZXByZXNzL3dwLWNvbnRlbnQvcGx1Z2lucy90cmFuc2xhdGVwcmVzcy9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIW1vZHVsZS5ob3QuZGF0YSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnZjdlNWUzYjInLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnZjdlNWUzYjInLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL3Rvb2x0aXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWY3ZTVlM2IyJlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJ2Y3ZTVlM2IyJywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJhc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvdG9vbHRpcC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./assets/src/js/components/tooltip.vue\n");
494
+
495
+ /***/ }),
496
+
497
+ /***/ "./assets/src/js/components/tooltip.vue?vue&type=script&lang=js&":
498
+ /*!***********************************************************************!*\
499
+ !*** ./assets/src/js/components/tooltip.vue?vue&type=script&lang=js& ***!
500
+ \***********************************************************************/
501
+ /*! exports provided: default */
502
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
503
+
504
+ "use strict";
505
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tooltip_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/babel-loader/lib??ref--4-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./tooltip.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/tooltip.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tooltip_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvdG9vbHRpcC52dWU/Nzc3NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUEsd0NBQTZMLENBQWdCLG1QQUFHLEVBQUMiLCJmaWxlIjoiLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvdG9vbHRpcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/cmVmLS00LTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi90b29sdGlwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/cmVmLS00LTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi90b29sdGlwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./assets/src/js/components/tooltip.vue?vue&type=script&lang=js&\n");
506
+
507
+ /***/ }),
508
+
509
+ /***/ "./assets/src/js/components/tooltip.vue?vue&type=template&id=f7e5e3b2&":
510
+ /*!*****************************************************************************!*\
511
+ !*** ./assets/src/js/components/tooltip.vue?vue&type=template&id=f7e5e3b2& ***!
512
+ \*****************************************************************************/
513
+ /*! exports provided: render, staticRenderFns */
514
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
515
+
516
+ "use strict";
517
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_tooltip_vue_vue_type_template_id_f7e5e3b2___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib??vue-loader-options!./tooltip.vue?vue&type=template&id=f7e5e3b2& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/tooltip.vue?vue&type=template&id=f7e5e3b2&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_tooltip_vue_vue_type_template_id_f7e5e3b2___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_tooltip_vue_vue_type_template_id_f7e5e3b2___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvdG9vbHRpcC52dWU/NDZhNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEiLCJmaWxlIjoiLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvdG9vbHRpcC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZjdlNWUzYjImLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3Rvb2x0aXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWY3ZTVlM2IyJlwiIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./assets/src/js/components/tooltip.vue?vue&type=template&id=f7e5e3b2&\n");
518
+
519
+ /***/ }),
520
+
521
  /***/ "./assets/src/js/components/translation-input.vue":
522
  /*!********************************************************!*\
523
  !*** ./assets/src/js/components/translation-input.vue ***!
1003
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
1004
 
1005
  "use strict";
1006
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _translation_input_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./translation-input.vue */ \"./assets/src/js/components/translation-input.vue\");\n/* harmony import */ var _translation_memory_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./translation-memory.vue */ \"./assets/src/js/components/translation-memory.vue\");\n/* harmony import */ var _tooltip__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tooltip */ \"./assets/src/js/components/tooltip.vue\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: ['selectedIndexesArray', 'dictionary', 'currentLanguage', 'onScreenLanguage', 'languageNames', 'settings', 'showChangesUnsavedMessage', 'editorStrings', 'flagsPath', 'iframe', 'nonces', 'ajax_url', 'userMeta'],\n data: function data() {\n return {\n languages: [],\n completeLanguageNames: Object.assign({\n 'original': 'Original String'\n }, this.languageNames),\n othersButtonPositionOffset: 1,\n showOtherLanguages: false,\n orderedLanguages: [],\n showImageIcon: true\n };\n },\n components: {\n Tooltip: _tooltip__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n translationInput: _translation_input_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n translationMemory: _translation_memory_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n },\n mounted: function mounted() {\n this.determineLanguageOrder();\n this.addKeyboardShortcutsListener();\n },\n updated: function updated() {\n // if already active do nothing\n if (document.activeElement.classList.contains('trp-translation-input') || document.activeElement.classList.contains('trp-editor-body')) // when clicking translation memory result, don't move cursor\n {\n return;\n } // place the cursor in the first textarea or input for translation\n\n\n var translationSection = document.getElementById('trp-translation-section');\n\n if (translationSection) {\n var focusableSelectors = ['textarea:not([readonly])', 'input[type=\"text\"]:not([readonly])'];\n\n for (var i = 0; i < focusableSelectors.length; i++) {\n var focusable = document.getElementById('trp-translation-section').querySelector(focusableSelectors[i]);\n\n if (focusable) {\n focusable.focus();\n break;\n }\n }\n }\n },\n watch: {\n selectedIndexesArray: function selectedIndexesArray() {\n this.updateLanguages();\n },\n onScreenLanguage: function onScreenLanguage() {\n this.determineLanguageOrder();\n this.updateLanguages();\n }\n },\n computed: {\n othersButtonPosition: function othersButtonPosition() {\n if (this.currentLanguage === this.settings['default-language'] || this.settings['translation-languages'].length <= 2) {\n // don't display it\n return 999;\n } else {\n return this.othersButtonPositionOffset;\n }\n }\n },\n methods: {\n determineLanguageOrder: function determineLanguageOrder() {\n var self = this;\n var filteredLanguages = this.settings['translation-languages'].filter(function (language, index, array) {\n // all languages except default and current or on screen language.\n return self.settings['default-language'] !== language && self.onScreenLanguage !== language;\n });\n this.orderedLanguages = [];\n this.orderedLanguages.push(this.settings['default-language']);\n if (this.onScreenLanguage !== '') this.orderedLanguages.push(this.onScreenLanguage);\n this.orderedLanguages = this.orderedLanguages.concat(filteredLanguages);\n },\n updateLanguages: function updateLanguages() {\n this.languages = [];\n var self = this;\n var defaultLanguage = this.settings['default-language'];\n var translateToDefault = false;\n this.showImageIcon = false;\n this.othersButtonPositionOffset = 1;\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n if (self.dictionary[selectedIndex] && self.dictionary[selectedIndex].translationsArray[defaultLanguage]) translateToDefault = true;\n if (self.dictionary[selectedIndex] && self.dictionary[selectedIndex].attribute === 'src') self.showImageIcon = true;\n });\n\n if (translateToDefault) {\n this.languages.push('original');\n this.othersButtonPositionOffset++;\n }\n\n this.languages = this.languages.concat(this.orderedLanguages);\n },\n discardChanges: function discardChanges(selectedIndex, languageCode) {\n this.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation = this.dictionary[selectedIndex].translationsArray[languageCode].translated;\n this.$emit('discarded-changes');\n },\n hasUnsavedChanges: function hasUnsavedChanges(selectedIndex, languageCode) {\n return this.dictionary[selectedIndex].translationsArray[languageCode].translated !== this.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation;\n },\n discardAll: function discardAll() {\n var self = this;\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n self.settings['translation-languages'].forEach(function (languageCode) {\n if (self.dictionary[selectedIndex].translationsArray[languageCode] && self.dictionary[selectedIndex].translationsArray[languageCode].translated !== self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation) {\n self.discardChanges(selectedIndex, languageCode);\n }\n });\n });\n\n if (this.$parent.mergingString === true) {\n this.$parent.selectedString = null;\n var previouslyHighlighted = this.iframe.getElementsByClassName('trp-create-translation-block');\n\n if (previouslyHighlighted.length > 0) {\n var i;\n\n for (i = 0; i < previouslyHighlighted.length; i++) {\n previouslyHighlighted[i].classList.remove('trp-highlight');\n previouslyHighlighted[i].classList.remove('trp-create-translation-block');\n }\n }\n\n this.$parent.mergingString = false;\n this.$parent.mergeData = [];\n }\n },\n addKeyboardShortcutsListener: function addKeyboardShortcutsListener() {\n document.addEventListener(\"keydown\", function (e) {\n // CTRL + ALT + Z\n if ((window.navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey) && e.altKey && e.keyCode === 90) {\n e.preventDefault();\n window.dispatchEvent(new Event('trp_trigger_discard_all_changes_event'));\n }\n }, false);\n window.addEventListener('trp_trigger_discard_all_changes_event', this.discardAll);\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vYXNzZXRzL3NyYy9qcy9jb21wb25lbnRzL2xhbmd1YWdlLWJveGVzLnZ1ZT80OWJjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1EQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQ0Esc0JBREEsRUFFQSxZQUZBLEVBR0EsaUJBSEEsRUFJQSxrQkFKQSxFQUtBLGVBTEEsRUFNQSxVQU5BLEVBT0EsMkJBUEEsRUFRQSxlQVJBLEVBU0EsV0FUQSxFQVVBLFFBVkEsRUFXQSxRQVhBLEVBWUEsVUFaQSxFQWFBLFVBYkEsQ0FEQTtBQWdCQSxNQWhCQSxrQkFnQkE7QUFDQTtBQUNBLG1CQURBO0FBRUE7QUFBQTtBQUFBLDRCQUZBO0FBR0EsbUNBSEE7QUFJQSwrQkFKQTtBQUtBLDBCQUxBO0FBTUE7QUFOQTtBQVFBLEdBekJBO0FBMEJBO0FBQ0EsNkRBREE7QUFFQSxvRkFGQTtBQUdBO0FBSEEsR0ExQkE7QUErQkEsU0EvQkEscUJBK0JBO0FBQ0E7QUFDQTtBQUNBLEdBbENBO0FBbUNBLFNBbkNBLHFCQW1DQTtBQUNBO0FBQ0EsOEVBQ0EsNERBREEsRUFDQTtBQUNBO0FBQ0E7QUFDQSxPQU5BLENBT0E7OztBQUNBOztBQUNBO0FBQ0E7O0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQXREQTtBQXVEQTtBQUNBO0FBQ0E7QUFDQSxLQUhBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFQQSxHQXZEQTtBQWdFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FIQSxNQUdBO0FBQ0E7QUFDQTtBQUNBO0FBUkEsR0FoRUE7QUEwRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FIQTtBQUlBO0FBQ0E7QUFDQSx3Q0FDQTtBQUNBO0FBQ0EsS0FaQTtBQWFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQSxpSEFDQTtBQUNBLGtHQUNBO0FBQ0EsT0FMQTs7QUFPQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBbENBO0FBbUNBO0FBQ0E7QUFDQTtBQUNBLEtBdENBO0FBdUNBO0FBQ0E7QUFDQSxLQXpDQTtBQTBDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdGQUNBLDhKQURBLEVBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FMQTtBQU1BLE9BUEE7O0FBU0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQWxFQTtBQW1FQSxnQ0FuRUEsMENBbUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FOQSxFQU1BLEtBTkE7QUFRQTtBQUNBO0FBN0VBO0FBMUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL2Fzc2V0cy9zcmMvanMvY29tcG9uZW50cy9sYW5ndWFnZS1ib3hlcy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxkaXYgaWQ9XCJ0cnAtdHJhbnNsYXRpb24tc2VjdGlvblwiIGNsYXNzPVwidHJwLWNvbnRyb2xzLXNlY3Rpb24tY29udGVudFwiIHYtaWY9XCJzZWxlY3RlZEluZGV4ZXNBcnJheVwiPlxuICAgICAgICA8ZGl2IHYtc2hvdz1cInNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2VcIiBjbGFzcz1cInRycC1jaGFuZ2VzLXVuc2F2ZWQtbWVzc2FnZVwiPlxuICAgICAgICAgICAge3sgZWRpdG9yU3RyaW5ncy51bnNhdmVkX2NoYW5nZXMgfX1cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHJwLWJ1dHRvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRycC11bnNhdmVkLWNoYW5nZXMgdHJwLWRpc2NhcmQtY2hhbmdlcyBcIkBjbGljaz1cImRpc2NhcmRBbGxcIiA+e3sgZWRpdG9yU3RyaW5ncy5kaXNjYXJkX2FsbCB9fT88L3NwYW4+XG4gICAgICAgICAgICAgICAgPHRvb2x0aXAgOnRleHQ9XCJlZGl0b3JTdHJpbmdzLmRpc2NhcmRfYWxsX3RpdGxlX2F0dHJcIiBjbGFzcz1cInRycC1kaXNjYXJkYWxsLXRvb2x0aXBcIiA6ZWRpdG9yU3RyaW5ncz1cImVkaXRvclN0cmluZ3NcIiA6dXNlck1ldGFIYW5kbGU9XCInZGlzbWlzc1Rvb2x0aXBEaXNtaXNzQWxsJ1wiIDp1c2VyTWV0YT1cInVzZXJNZXRhXCI+PC90b29sdGlwPlxuICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IHYtZm9yPVwiKGxhbmd1YWdlQ29kZSwga2V5KSBpbiBsYW5ndWFnZXNcIiA6aWQ9XCIndHJwLWxhbmd1YWdlLScgKyBsYW5ndWFnZUNvZGVcIj5cbiAgICAgICAgICAgIDxkaXYgdi1zaG93PVwiKCAoa2V5IDw9IG90aGVyc0J1dHRvblBvc2l0aW9uKSB8fCBzaG93T3RoZXJMYW5ndWFnZXMgKSAmJiAoIHNlbGVjdGVkSW5kZXhlc0FycmF5ICYmIHNlbGVjdGVkSW5kZXhlc0FycmF5Lmxlbmd0aCA+IDAgKVwiICBjbGFzcz1cInRycC1sYW5ndWFnZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLWxhbmd1YWdlLW5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi1pZj1cImtleSA9PSAwIFwiPnt7IGVkaXRvclN0cmluZ3MuZnJvbSB9fSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtZWxzZT57eyBlZGl0b3JTdHJpbmdzLnRvIH19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAge3sgY29tcGxldGVMYW5ndWFnZU5hbWVzW2xhbmd1YWdlQ29kZV0gfX1cbiAgICAgICAgICAgICAgICAgICAgPGltZyB2LWlmPVwibGFuZ3VhZ2VDb2RlICE9ICdvcmlnaW5hbCdcIiBjbGFzcz1cInRycC1sYW5ndWFnZS1ib3gtZmxhZy1pbWFnZVwiIDpzcmM9XCJmbGFnc1BhdGhbbGFuZ3VhZ2VDb2RlXSArICcvJyArIGxhbmd1YWdlQ29kZSArICcucG5nJ1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxMlwiIDphbHQ9XCJsYW5ndWFnZUNvZGVcIiA6dGl0bGU9XCJjb21wbGV0ZUxhbmd1YWdlTmFtZXNbbGFuZ3VhZ2VDb2RlXVwiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRycC10cmFuc2xhdGlvbnMtZm9yLWxhbmd1YWdlXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRycC10cmFuc2xhdGlvbi1pY29uLWNvbnRhaW5lclwiIHYtaWY9XCJzaG93SW1hZ2VJY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRycC10cmFuc2xhdGlvbi1pY29uIGRhc2hpY29ucyBkYXNoaWNvbnMtZm9ybWF0LWltYWdlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0cnAtdHJhbnNsYXRpb25zLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRycC1zdHJpbmctY29udGFpbmVyXCIgdi1mb3I9XCJzZWxlY3RlZEluZGV4IGluIHNlbGVjdGVkSW5kZXhlc0FycmF5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwiZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XSAmJiBkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV1cIiA6a2V5PVwic2VsZWN0ZWRJbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHJhbnNsYXRpb24taW5wdXQgOnN0cmluZz1cImRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cIiB2LW1vZGVsPVwiZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLmVkaXRlZFRyYW5zbGF0aW9uXCIgOmhpZ2hsaWdodFVuc2F2ZWRDaGFuZ2VzPVwic2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZSAmJiBoYXNVbnNhdmVkQ2hhbmdlcyggc2VsZWN0ZWRJbmRleCwgbGFuZ3VhZ2VDb2RlIClcIiA6ZWRpdG9yU3RyaW5ncz1cImVkaXRvclN0cmluZ3NcIj48L3RyYW5zbGF0aW9uLWlucHV0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdi1lbHNlLWlmPVwiZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVwiIDprZXk9XCJzZWxlY3RlZEluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cmFuc2xhdGlvbi1pbnB1dCA6cmVhZG9ubHk9XCJ0cnVlXCIgOnN0cmluZz1cImRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cIiA6dmFsdWU9XCJkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLm9yaWdpbmFsXCIgOmVkaXRvclN0cmluZ3M9XCJlZGl0b3JTdHJpbmdzXCI+PC90cmFuc2xhdGlvbi1pbnB1dD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLXRyYW5zbGF0aW9uLWlucHV0LWZvb3RlclwiIDpkYXRhLWRpY3Rpb25hcnktZW50cnk9XCJKU09OLnN0cmluZ2lmeShkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLWF0dHJpYnV0ZS1uYW1lXCI+e3sgKCBlZGl0b3JTdHJpbmdzWyBkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLmF0dHJpYnV0ZSBdICYmICggKGRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0uYXR0cmlidXRlICE9ICdjb250ZW50JyB8fCBkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLmF0dHJpYnV0ZSAhPSAnJykgKSApID8gZWRpdG9yU3RyaW5nc1sgZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS5hdHRyaWJ1dGUgXSA6IGVkaXRvclN0cmluZ3MudGV4dCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdICYmIGRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXVwiIGNsYXNzPVwidHJwLWRpc2NhcmQtY2hhbmdlcyB0cnAtZGlzY2FyZC1pbmRpdmlkdWFsLWNoYW5nZXNcIiBAY2xpY2s9XCJkaXNjYXJkQ2hhbmdlcyhzZWxlY3RlZEluZGV4LGxhbmd1YWdlQ29kZSlcIiA6Y2xhc3M9XCJ7J3RycC11bnNhdmVkLWNoYW5nZXMnOiBoYXNVbnNhdmVkQ2hhbmdlcyggc2VsZWN0ZWRJbmRleCwgbGFuZ3VhZ2VDb2RlICkgfVwiIDp0aXRsZT1cImVkaXRvclN0cmluZ3MuZGlzY2FyZF9pbmRpdmlkdWFsX2NoYW5nZXNfdGl0bGVfYXR0cmlidXRlXCI+e3sgZWRpdG9yU3RyaW5ncy5kaXNjYXJkIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRycC10cmFuc2xhdGlvbi1tZW1vcnktd3JhcFwiIHYtaWY9XCJkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdICYmIGRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXVwiIDprZXk9XCIndHJwX3Rtd18nICsgc2VsZWN0ZWRJbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHJhbnNsYXRpb24tbWVtb3J5IDpzdHJpbmc9XCJkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdXCIgOmVkaXRvclN0cmluZ3M9XCJlZGl0b3JTdHJpbmdzXCIgOmFqYXhfdXJsPVwiYWpheF91cmxcIiA6bm9uY2VzPVwibm9uY2VzXCIgOmxhbmd1YWdlQ29kZT1cImxhbmd1YWdlQ29kZVwiPjwvdHJhbnNsYXRpb24tbWVtb3J5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgICAgICA8ZGl2IHYtc2hvdz1cImtleSA9PSBvdGhlcnNCdXR0b25Qb3NpdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLXRvZ2dsZS1sYW5ndWFnZXMgYnV0dG9uXCIgQGNsaWNrPVwic2hvd090aGVyTGFuZ3VhZ2VzID0gIXNob3dPdGhlckxhbmd1YWdlc1wiIDpjbGFzcz1cInsgJ3RycC1zaG93LW90aGVyLWxhbmd1YWdlcyc6IHNob3dPdGhlckxhbmd1YWdlcywgJ3RycC1oaWRlLW90aGVyLWxhbmd1YWdlcyc6ICFzaG93T3RoZXJMYW5ndWFnZXMgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgKHNob3dPdGhlckxhbmd1YWdlcyk/ICAnJiM5NjYwOycgOiAnJiM5NjU0Oyd9fSB7eyBlZGl0b3JTdHJpbmdzLm90aGVyX2xhbmcgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgICBpbXBvcnQgdHJhbnNsYXRpb25JbnB1dCAgZnJvbSAnLi90cmFuc2xhdGlvbi1pbnB1dC52dWUnXG4gICAgaW1wb3J0IHRyYW5zbGF0aW9uTWVtb3J5IGZyb20gJy4vdHJhbnNsYXRpb24tbWVtb3J5LnZ1ZSdcbiAgICBpbXBvcnQgVG9vbHRpcCAgICAgICAgICAgZnJvbSBcIi4vdG9vbHRpcFwiXG4gICAgZXhwb3J0IGRlZmF1bHR7XG4gICAgICAgIHByb3BzOltcbiAgICAgICAgICAgICdzZWxlY3RlZEluZGV4ZXNBcnJheScsXG4gICAgICAgICAgICAnZGljdGlvbmFyeScsXG4gICAgICAgICAgICAnY3VycmVudExhbmd1YWdlJyxcbiAgICAgICAgICAgICdvblNjcmVlbkxhbmd1YWdlJyxcbiAgICAgICAgICAgICdsYW5ndWFnZU5hbWVzJyxcbiAgICAgICAgICAgICdzZXR0aW5ncycsXG4gICAgICAgICAgICAnc2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZScsXG4gICAgICAgICAgICAnZWRpdG9yU3RyaW5ncycsXG4gICAgICAgICAgICAnZmxhZ3NQYXRoJyxcbiAgICAgICAgICAgICdpZnJhbWUnLFxuICAgICAgICAgICAgJ25vbmNlcycsXG4gICAgICAgICAgICAnYWpheF91cmwnLFxuICAgICAgICAgICAgJ3VzZXJNZXRhJ1xuICAgICAgICBdLFxuICAgICAgICBkYXRhKCl7XG4gICAgICAgICAgICByZXR1cm57XG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VzICAgICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgICAgICAgICBjb21wbGV0ZUxhbmd1YWdlTmFtZXMgICAgICA6IE9iamVjdC5hc3NpZ24oIHsgJ29yaWdpbmFsJzogJ09yaWdpbmFsIFN0cmluZycgfSwgdGhpcy5sYW5ndWFnZU5hbWVzICksXG4gICAgICAgICAgICAgICAgb3RoZXJzQnV0dG9uUG9zaXRpb25PZmZzZXQgOiAxLFxuICAgICAgICAgICAgICAgIHNob3dPdGhlckxhbmd1YWdlcyAgICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgICAgICAgb3JkZXJlZExhbmd1YWdlcyAgICAgICAgICAgOiBbXSxcbiAgICAgICAgICAgICAgICBzaG93SW1hZ2VJY29uICAgICAgICAgICAgICA6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY29tcG9uZW50czp7XG4gICAgICAgICAgICBUb29sdGlwLFxuICAgICAgICAgICAgdHJhbnNsYXRpb25JbnB1dCxcbiAgICAgICAgICAgIHRyYW5zbGF0aW9uTWVtb3J5XG4gICAgICAgIH0sXG4gICAgICAgIG1vdW50ZWQoKXtcbiAgICAgICAgICAgIHRoaXMuZGV0ZXJtaW5lTGFuZ3VhZ2VPcmRlcigpXG4gICAgICAgICAgICB0aGlzLmFkZEtleWJvYXJkU2hvcnRjdXRzTGlzdGVuZXIoKVxuICAgICAgICB9LFxuICAgICAgICB1cGRhdGVkKCl7XG4gICAgICAgICAgICAvLyBpZiBhbHJlYWR5IGFjdGl2ZSBkbyBub3RoaW5nXG4gICAgICAgICAgICBpZiAoIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCAndHJwLXRyYW5zbGF0aW9uLWlucHV0JyApIHx8XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoICd0cnAtZWRpdG9yLWJvZHknICkgKSAvLyB3aGVuIGNsaWNraW5nIHRyYW5zbGF0aW9uIG1lbW9yeSByZXN1bHQsIGRvbid0IG1vdmUgY3Vyc29yXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBwbGFjZSB0aGUgY3Vyc29yIGluIHRoZSBmaXJzdCB0ZXh0YXJlYSBvciBpbnB1dCBmb3IgdHJhbnNsYXRpb25cbiAgICAgICAgICAgIGxldCB0cmFuc2xhdGlvblNlY3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggJ3RycC10cmFuc2xhdGlvbi1zZWN0aW9uJyApXG4gICAgICAgICAgICBpZiAoIHRyYW5zbGF0aW9uU2VjdGlvbiApICB7XG4gICAgICAgICAgICAgICAgbGV0IGZvY3VzYWJsZVNlbGVjdG9ycyA9IFsndGV4dGFyZWE6bm90KFtyZWFkb25seV0pJywgJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdOm5vdChbcmVhZG9ubHldKSddXG4gICAgICAgICAgICAgICAgZm9yICggdmFyIGkgPSAwOyBpPGZvY3VzYWJsZVNlbGVjdG9ycy5sZW5ndGg7IGkrKyApe1xuICAgICAgICAgICAgICAgICAgICBsZXQgZm9jdXNhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoICd0cnAtdHJhbnNsYXRpb24tc2VjdGlvbicgKS5xdWVyeVNlbGVjdG9yKGZvY3VzYWJsZVNlbGVjdG9yc1tpXSlcbiAgICAgICAgICAgICAgICAgICAgaWYgKCBmb2N1c2FibGUgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGUuZm9jdXMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdhdGNoOiB7XG4gICAgICAgICAgICBzZWxlY3RlZEluZGV4ZXNBcnJheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTGFuZ3VhZ2VzKClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvblNjcmVlbkxhbmd1YWdlOiBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIHRoaXMuZGV0ZXJtaW5lTGFuZ3VhZ2VPcmRlcigpXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVMYW5ndWFnZXMoKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjb21wdXRlZDp7XG4gICAgICAgICAgICBvdGhlcnNCdXR0b25Qb3NpdGlvbjogZnVuY3Rpb24gKCl7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudExhbmd1YWdlID09PSB0aGlzLnNldHRpbmdzWydkZWZhdWx0LWxhbmd1YWdlJ10gfHwgdGhpcy5zZXR0aW5nc1sndHJhbnNsYXRpb24tbGFuZ3VhZ2VzJ10ubGVuZ3RoIDw9IDIgKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGRvbid0IGRpc3BsYXkgaXRcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDk5OVxuICAgICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vdGhlcnNCdXR0b25Qb3NpdGlvbk9mZnNldFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWV0aG9kczp7XG4gICAgICAgICAgICBkZXRlcm1pbmVMYW5ndWFnZU9yZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGYgPSB0aGlzXG4gICAgICAgICAgICAgICAgbGV0IGZpbHRlcmVkTGFuZ3VhZ2VzID0gdGhpcy5zZXR0aW5nc1sndHJhbnNsYXRpb24tbGFuZ3VhZ2VzJ10uZmlsdGVyKGZ1bmN0aW9uKGxhbmd1YWdlLCBpbmRleCwgYXJyYXkpe1xuICAgICAgICAgICAgICAgICAgICAvLyBhbGwgbGFuZ3VhZ2VzIGV4Y2VwdCBkZWZhdWx0IGFuZCBjdXJyZW50IG9yIG9uIHNjcmVlbiBsYW5ndWFnZS5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICggc2VsZi5zZXR0aW5nc1snZGVmYXVsdC1sYW5ndWFnZSddICE9PSBsYW5ndWFnZSApICYmICggc2VsZi5vblNjcmVlbkxhbmd1YWdlICE9PSBsYW5ndWFnZSApXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmRlcmVkTGFuZ3VhZ2VzID0gW11cbiAgICAgICAgICAgICAgICB0aGlzLm9yZGVyZWRMYW5ndWFnZXMucHVzaCggdGhpcy5zZXR0aW5nc1snZGVmYXVsdC1sYW5ndWFnZSddIClcbiAgICAgICAgICAgICAgICBpZiAoIHRoaXMub25TY3JlZW5MYW5ndWFnZSAhPT0gJycgKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9yZGVyZWRMYW5ndWFnZXMucHVzaCggdGhpcy5vblNjcmVlbkxhbmd1YWdlIClcbiAgICAgICAgICAgICAgICB0aGlzLm9yZGVyZWRMYW5ndWFnZXMgPSB0aGlzLm9yZGVyZWRMYW5ndWFnZXMuY29uY2F0KCBmaWx0ZXJlZExhbmd1YWdlcyApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdXBkYXRlTGFuZ3VhZ2VzOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYW5ndWFnZXMgICAgICAgICAgICAgICAgICA9IFtdXG4gICAgICAgICAgICAgICAgbGV0IHNlbGYgICAgICAgICAgICAgICAgICAgICAgICA9IHRoaXNcbiAgICAgICAgICAgICAgICBsZXQgZGVmYXVsdExhbmd1YWdlICAgICAgICAgICAgID0gdGhpcy5zZXR0aW5nc1snZGVmYXVsdC1sYW5ndWFnZSddXG4gICAgICAgICAgICAgICAgbGV0IHRyYW5zbGF0ZVRvRGVmYXVsdCAgICAgICAgICA9IGZhbHNlXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93SW1hZ2VJY29uICAgICAgICAgICAgICA9IGZhbHNlXG4gICAgICAgICAgICAgICAgdGhpcy5vdGhlcnNCdXR0b25Qb3NpdGlvbk9mZnNldCA9IDFcblxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleGVzQXJyYXkuZm9yRWFjaChmdW5jdGlvbiAoc2VsZWN0ZWRJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBpZiggc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdICYmIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtkZWZhdWx0TGFuZ3VhZ2VdIClcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVRvRGVmYXVsdCA9IHRydWVcbiAgICAgICAgICAgICAgICAgICAgaWYoIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XSAmJiBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0uYXR0cmlidXRlID09PSAnc3JjJyApXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNob3dJbWFnZUljb24gPSB0cnVlXG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIGlmICh0cmFuc2xhdGVUb0RlZmF1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYW5ndWFnZXMucHVzaCgnb3JpZ2luYWwnKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm90aGVyc0J1dHRvblBvc2l0aW9uT2Zmc2V0KytcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmxhbmd1YWdlcyA9IHRoaXMubGFuZ3VhZ2VzLmNvbmNhdCh0aGlzLm9yZGVyZWRMYW5ndWFnZXMpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGlzY2FyZENoYW5nZXM6IGZ1bmN0aW9uKHNlbGVjdGVkSW5kZXgsbGFuZ3VhZ2VDb2RlKXtcbiAgICAgICAgICAgICAgICB0aGlzLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS5lZGl0ZWRUcmFuc2xhdGlvbiA9IHRoaXMuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLnRyYW5zbGF0ZWRcbiAgICAgICAgICAgICAgICB0aGlzLiRlbWl0KCdkaXNjYXJkZWQtY2hhbmdlcycpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGFzVW5zYXZlZENoYW5nZXM6IGZ1bmN0aW9uKHNlbGVjdGVkSW5kZXgsIGxhbmd1YWdlQ29kZSl7XG4gICAgICAgICAgICAgICAgcmV0dXJuICh0aGlzLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS50cmFuc2xhdGVkICE9PSB0aGlzLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS5lZGl0ZWRUcmFuc2xhdGlvbilcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkaXNjYXJkQWxsOiBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIGxldCBzZWxmID0gdGhpc1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleGVzQXJyYXkuZm9yRWFjaChmdW5jdGlvbihzZWxlY3RlZEluZGV4KXtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXR0aW5nc1sndHJhbnNsYXRpb24tbGFuZ3VhZ2VzJ10uZm9yRWFjaCggZnVuY3Rpb24oIGxhbmd1YWdlQ29kZSAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLnRyYW5zbGF0ZWQgIT09IHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLmVkaXRlZFRyYW5zbGF0aW9uKSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpc2NhcmRDaGFuZ2VzKHNlbGVjdGVkSW5kZXgsbGFuZ3VhZ2VDb2RlKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICBpZiAoIHRoaXMuJHBhcmVudC5tZXJnaW5nU3RyaW5nID09PSB0cnVlICl7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHBhcmVudC5zZWxlY3RlZFN0cmluZyA9IG51bGxcbiAgICAgICAgICAgICAgICAgICAgbGV0IHByZXZpb3VzbHlIaWdobGlnaHRlZCA9IHRoaXMuaWZyYW1lLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoICd0cnAtY3JlYXRlLXRyYW5zbGF0aW9uLWJsb2NrJyApXG4gICAgICAgICAgICAgICAgICAgIGlmKCBwcmV2aW91c2x5SGlnaGxpZ2h0ZWQubGVuZ3RoID4gMCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IHByZXZpb3VzbHlIaWdobGlnaHRlZC5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c2x5SGlnaGxpZ2h0ZWRbaV0uY2xhc3NMaXN0LnJlbW92ZSgndHJwLWhpZ2hsaWdodCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNseUhpZ2hsaWdodGVkW2ldLmNsYXNzTGlzdC5yZW1vdmUoJ3RycC1jcmVhdGUtdHJhbnNsYXRpb24tYmxvY2snKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHBhcmVudC5tZXJnaW5nU3RyaW5nID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kcGFyZW50Lm1lcmdlRGF0YSA9IFtdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFkZEtleWJvYXJkU2hvcnRjdXRzTGlzdGVuZXIoKXtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIENUUkwgKyBBTFQgKyBaXG4gICAgICAgICAgICAgICAgICAgIGlmICgod2luZG93Lm5hdmlnYXRvci5wbGF0Zm9ybS5tYXRjaChcIk1hY1wiKSA/IGUubWV0YUtleSA6IGUuY3RybEtleSkgJiYgZS5hbHRLZXkgJiYgZS5rZXlDb2RlID09PSA5MCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgndHJwX3RyaWdnZXJfZGlzY2FyZF9hbGxfY2hhbmdlc19ldmVudCcpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIGZhbHNlKTtcblxuICAgICAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCAndHJwX3RyaWdnZXJfZGlzY2FyZF9hbGxfY2hhbmdlc19ldmVudCcsIHRoaXMuZGlzY2FyZEFsbCApXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG48L3NjcmlwdD5cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/language-boxes.vue?vue&type=script&lang=js&\n");
1007
 
1008
  /***/ }),
1009
 
1015
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
1016
 
1017
  "use strict";
1018
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _tooltip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tooltip */ \"./assets/src/js/components/tooltip.vue\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n Tooltip: _tooltip__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n },\n props: ['selectedIndexesArray', 'selectedString', 'dictionary', 'settings', 'nonces', 'ajax_url', 'currentLanguage', 'onScreenLanguage', 'iframe', 'currentURL', 'mergingString', 'mergeData', 'editorStrings', 'stringTypes', 'userMeta'],\n data: function data() {\n return {\n 'saveButtonText': this.editorStrings.save_translation,\n 'saveStringsRequestsLeft': 0,\n 'disabledSaveButton': false,\n 'highlightButton': false\n };\n },\n mounted: function mounted() {\n this.addKeyboardShortcutsListener();\n var self = this;\n window.addEventListener('trp_save_translation_help_panel', function () {\n self.highlightButton = true;\n });\n window.addEventListener('trp_help_panel_changed', function () {\n self.highlightButton = false;\n });\n },\n watch: {\n saveStringsRequestsLeft: function saveStringsRequestsLeft(newValue, oldValue) {\n if (newValue > 0) {\n this.disabledSaveButton = true;\n this.saveButtonText = this.editorStrings.saving_translation;\n } else {\n this.disabledSaveButton = false;\n this.saveButtonText = this.editorStrings.save_translation;\n this.showTranslationsSaved();\n }\n }\n },\n methods: {\n save: function save() {\n if (this.mergingString) this.createTranslationBlock();else {\n for (var type in this.stringTypes) {\n this.saveStringType(this.stringTypes[type]);\n }\n }\n\n if (this.saveStringsRequestsLeft === 0) {\n // no saving action was triggered\n this.showTranslationsSaved();\n }\n },\n saveStringType: function saveStringType(typeSlug) {\n this.saveStringsRequestsLeft++;\n var self = this;\n var saveData = {};\n var updateIframeData = {};\n var foundStringsToSave = false; // construct an array of the necessary information\n\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n if (typeSlug === self.dictionary[selectedIndex].type) {\n self.settings['translation-languages'].forEach(function (languageCode) {\n saveData[languageCode] = saveData[languageCode] ? saveData[languageCode] : [];\n updateIframeData[languageCode] = updateIframeData[languageCode] ? updateIframeData[languageCode] : [];\n\n if (self.dictionary[selectedIndex].translationsArray[languageCode] && self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation != self.dictionary[selectedIndex].translationsArray[languageCode].translated) {\n self.dictionary[selectedIndex].translationsArray[languageCode].status = self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation === '' ? 0 : 2;\n self.dictionary[selectedIndex].translationsArray[languageCode].translated = self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation;\n saveData[languageCode].push(self.dictionary[selectedIndex].translationsArray[languageCode]);\n saveData[languageCode][saveData[languageCode].length - 1].original = self.dictionary[selectedIndex].original;\n updateIframeData[languageCode].push(self.dictionary[selectedIndex]);\n foundStringsToSave = true;\n }\n });\n }\n }); // send request to save strings in database\n\n if (foundStringsToSave) {\n var data = new FormData();\n data.append('action', 'trp_save_translations_' + typeSlug);\n data.append('security', this.nonces['savetranslationsnonce' + typeSlug]);\n data.append('strings', JSON.stringify(saveData));\n axios__WEBPACK_IMPORTED_MODULE_0___default.a.post(this.ajax_url, data).then(function (response) {\n if (typeSlug === 'gettext') {\n axios__WEBPACK_IMPORTED_MODULE_0___default.a.get(self.currentURL).then(function (reloadedIframeResponse) {\n self.updateIframe(updateIframeData, reloadedIframeResponse.data);\n self.saveStringsRequestsLeft--;\n });\n } else {\n self.updateIframe(updateIframeData);\n self.saveStringsRequestsLeft--;\n }\n\n self.$emit('translations-saved');\n })[\"catch\"](function (error) {\n console.log(error);\n });\n } else {\n self.saveStringsRequestsLeft--;\n }\n },\n updateIframe: function updateIframe(updateIframeData) {\n var reloadedIframeResponse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (typeof this.iframe === 'undefined') {\n return;\n }\n\n var self = this;\n this.settings['translation-languages'].forEach(function (languageCode) {\n if (updateIframeData[languageCode].length > 0) {\n updateIframeData[languageCode].forEach(function (string) {\n if (self.currentLanguage === languageCode) {\n self.setTextInIframe(string, languageCode, reloadedIframeResponse);\n }\n });\n }\n });\n },\n setTextInIframe: function setTextInIframe(string, languageCode, reloadedIframeResponse) {\n var nodes = this.iframe.querySelectorAll(\"[\" + string.selector + \"='\" + string.dbID + \"']\");\n var textToSet = null;\n\n if (reloadedIframeResponse) {\n var translatedNode = document.createRange().createContextualFragment(reloadedIframeResponse).querySelector(\"[\" + string.selector + \"='\" + string.dbID + \"']\");\n\n if (translatedNode) {\n textToSet = typeof string.attribute === 'undefined' || string.attribute === \"\" ? translatedNode.textContent : translatedNode.getAttribute(string.attribute);\n }\n }\n\n if (textToSet === null) {\n textToSet = string.translationsArray[languageCode].translated === '' ? string.original : string.translationsArray[languageCode].translated;\n }\n\n nodes.forEach(function (node) {\n if (typeof string.attribute === 'undefined' || string.attribute === \"\" || string.attribute === 'innertext') {\n var initialValue = node.textContent;\n textToSet = initialValue.replace(initialValue.trim(), textToSet);\n node.innerHTML = textToSet;\n } else {\n var _initialValue = node.getAttribute(string.attribute);\n\n textToSet = _initialValue.replace(_initialValue.trim(), textToSet);\n node.setAttribute(string.attribute, textToSet);\n\n if (string.attribute === 'src') {\n node.setAttribute('srcset', '');\n }\n }\n });\n },\n createTranslationBlock: function createTranslationBlock() {\n this.saveStringsRequestsLeft++;\n var self = this;\n var saveData = {},\n translation = {},\n original;\n var foundStringsToSave = false;\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n self.settings['translation-languages'].forEach(function (languageCode) {\n saveData[languageCode] = saveData[languageCode] ? saveData[languageCode] : [];\n\n if (self.dictionary[selectedIndex] && self.dictionary[selectedIndex].translationsArray[languageCode]) {\n translation = self.dictionary[selectedIndex].translationsArray[languageCode];\n translation.block_type = self.dictionary[selectedIndex].block_type;\n translation.id = self.dictionary[selectedIndex].dbID;\n translation.original = self.dictionary[selectedIndex].original;\n\n if (self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation != self.dictionary[selectedIndex].translationsArray[languageCode].translated) {\n self.dictionary[selectedIndex].translationsArray[languageCode].translated = self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation;\n if (self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation !== '') self.dictionary[selectedIndex].translationsArray[languageCode].status = 2;\n }\n\n saveData[languageCode].push(translation);\n foundStringsToSave = true;\n }\n });\n original = self.dictionary[selectedIndex].original;\n });\n\n if (foundStringsToSave) {\n var data = new FormData();\n data.append('action', 'trp_create_translation_block');\n data.append('security', this.nonces['mergetbnonce']);\n data.append('language', this.currentLanguage);\n data.append('strings', JSON.stringify(saveData));\n data.append('original', original);\n data.append('all_languages', 'true');\n axios__WEBPACK_IMPORTED_MODULE_0___default.a.post(this.ajax_url, data).then(function (response) {\n self.saveStringsRequestsLeft--;\n self.$parent.mergingString = false;\n var item = self.dictionary[self.selectedIndexesArray[0]]; //update dictionary string ids\n\n Object.keys(item.translationsArray).forEach(function (key) {\n Object.keys(response.data[key]).forEach(function (index) {\n if (key === self.onScreenLanguage) {\n self.dictionary[self.selectedIndexesArray[0]].dbID = response.data[key][index].id;\n }\n\n item.translationsArray[key].id = response.data[key][index].id;\n });\n });\n self.$parent.mergeData = []; //get merged string\n\n var mergedString;\n if (typeof item.translationsArray[self.currentLanguage] !== 'undefined' && item.translationsArray[self.currentLanguage].translated) mergedString = item.translationsArray[self.onScreenLanguage].translated;else mergedString = item.original; //replace HTML in iFrame\n\n var translationBlock = self.iframe.querySelector('.trp-create-translation-block');\n translationBlock.innerHTML = mergedString;\n translationBlock.setAttribute('data-trp-translate-id', item.dbID);\n translationBlock.classList.remove('trp-create-translation-block'); //setup event listener for new block\n\n self.$parent.setupEventListener(translationBlock);\n })[\"catch\"](function (error) {\n self.$parent.mergingString = false;\n console.log(error);\n });\n } else {\n this.saveStringsRequestsLeft--;\n }\n },\n showTranslationsSaved: function showTranslationsSaved() {\n var translationSaved = jQuery('#trp-translation-saved');\n translationSaved.css(\"display\", \"inline\");\n translationSaved.delay(3000).fadeOut(400);\n },\n addKeyboardShortcutsListener: function addKeyboardShortcutsListener() {\n document.addEventListener(\"keydown\", function (e) {\n // CTRL + S\n if ((window.navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey) && e.keyCode === 83) {\n e.preventDefault();\n window.dispatchEvent(new Event('trp_trigger_save_translations_event'));\n }\n }, false);\n window.addEventListener('trp_trigger_save_translations_event', this.save);\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vYXNzZXRzL3NyYy9qcy9jb21wb25lbnRzL3NhdmUtdHJhbnNsYXRpb25zLnZ1ZT85ODU1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBV0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBLEdBREE7QUFFQSxVQUNBLHNCQURBLEVBRUEsZ0JBRkEsRUFHQSxZQUhBLEVBSUEsVUFKQSxFQUtBLFFBTEEsRUFNQSxVQU5BLEVBT0EsaUJBUEEsRUFRQSxrQkFSQSxFQVNBLFFBVEEsRUFVQSxZQVZBLEVBV0EsZUFYQSxFQVlBLFdBWkEsRUFhQSxlQWJBLEVBY0EsYUFkQSxFQWVBLFVBZkEsQ0FGQTtBQW1CQSxNQW5CQSxrQkFtQkE7QUFDQTtBQUNBLDJEQURBO0FBRUEsa0NBRkE7QUFHQSxpQ0FIQTtBQUlBO0FBSkE7QUFNQSxHQTFCQTtBQTJCQSxTQTNCQSxxQkEyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBRkE7QUFHQTtBQUNBO0FBQ0EsS0FGQTtBQUdBLEdBcENBO0FBcUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUhBLE1BR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBWEEsR0FyQ0E7QUFrREE7QUFDQSxRQURBLGtCQUNBO0FBQ0EsOEJBQ0EsOEJBREEsS0FFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FiQTtBQWNBLGtCQWRBLDBCQWNBLFFBZEEsRUFjQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBTEEsQ0FPQTs7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQSxXQWZBO0FBZ0JBO0FBQ0EsT0FuQkEsRUFSQSxDQTZCQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsK0VBQ0EsSUFEQSxDQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUhBO0FBSUEsV0FMQSxNQUtBO0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0EsU0FaQSxXQWFBO0FBQ0E7QUFDQSxTQWZBO0FBZ0JBLE9BdEJBLE1Bc0JBO0FBQ0E7QUFDQTtBQUNBLEtBckVBO0FBc0VBLGdCQXRFQSx3QkFzRUEsZ0JBdEVBLEVBc0VBO0FBQUE7O0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FKQTtBQUtBO0FBQ0EsT0FSQTtBQVNBLEtBcEZBO0FBcUZBLG1CQXJGQSwyQkFxRkEsTUFyRkEsRUFxRkEsWUFyRkEsRUFxRkEsc0JBckZBLEVBcUZBO0FBQ0E7QUFDQTs7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FKQSxNQUlBO0FBQ0E7O0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BYkE7QUFjQSxLQWhIQTtBQWlIQSwwQkFqSEEsb0NBaUhBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUVBLDJHQUNBO0FBQ0E7O0FBRUE7QUFHQTtBQUNBO0FBQ0EsU0F2QkE7QUF5QkE7QUFDQSxPQTNCQTs7QUE2QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLCtFQUNBLElBREEsQ0FDQTtBQUNBO0FBQ0E7QUFDQSxtRUFIQSxDQUtBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQSxhQUxBO0FBTUEsV0FQQTtBQVNBLHNDQWZBLENBaUJBOztBQUNBO0FBRUEsOElBQ0Esd0VBREEsS0FHQSw2QkF2QkEsQ0F5QkE7O0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEVBN0JBLENBK0JBOztBQUNBO0FBQ0EsU0FsQ0EsV0FtQ0E7QUFDQTtBQUNBO0FBQ0EsU0F0Q0E7QUF1Q0EsT0FoREEsTUFnREE7QUFDQTtBQUNBO0FBQ0EsS0F2TUE7QUF3TUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQTVNQTtBQTZNQSxnQ0E3TUEsMENBNk1BO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0EsT0FSQSxFQVFBLEtBUkE7QUFVQTtBQUNBO0FBek5BO0FBbERBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL2Fzc2V0cy9zcmMvanMvY29tcG9uZW50cy9zYXZlLXRyYW5zbGF0aW9ucy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxkaXYgaWQ9XCJ0cnAtc2F2ZS1jb250YWluZXJcIj5cbiAgICAgICAgPHNwYW4gaWQ9XCJ0cnAtdHJhbnNsYXRpb24tc2F2ZWRcIiBzdHlsZT1cImRpc3BsYXk6bm9uZVwiPnt7IGVkaXRvclN0cmluZ3Muc2F2ZWQgfX08L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidHJwLWJ1dHRvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxidXR0b24gaWQ9XCJ0cnAtc2F2ZVwiIDpkaXNhYmxlZD1cImRpc2FibGVkU2F2ZUJ1dHRvblwiIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ1dHRvbi1wcmltYXJ5IHRycC1zYXZlLXN0cmluZ1wiXG4gICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cInsndHJwLWhpZ2hsaWdodC1mb3ItcGFuZWwnIDogaGlnaGxpZ2h0QnV0dG9ufVwiIEBjbGljaz1cInNhdmVcIj57eyBzYXZlQnV0dG9uVGV4dCB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgPHRvb2x0aXAgOnRleHQ9XCJlZGl0b3JTdHJpbmdzLnNhdmVfdGl0bGVfYXR0clwiIGNsYXNzPVwidHJwLXNhdmUtdG9vbHRpcFwiIDplZGl0b3JTdHJpbmdzPVwiZWRpdG9yU3RyaW5nc1wiIDp1c2VyTWV0YUhhbmRsZT1cIidkaXNtaXNzVG9vbHRpcFNhdmUnXCIgOnVzZXJNZXRhPVwidXNlck1ldGFcIj48L3Rvb2x0aXA+XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0PlxuICAgIGltcG9ydCBheGlvcyAgIGZyb20gJ2F4aW9zJ1xuICAgIGltcG9ydCBUb29sdGlwIGZyb20gXCIuL3Rvb2x0aXBcIlxuXG4gICAgZXhwb3J0IGRlZmF1bHR7XG4gICAgICAgIGNvbXBvbmVudHMgOiB7IFRvb2x0aXAgfSxcbiAgICAgICAgcHJvcHM6IFtcbiAgICAgICAgICAgICdzZWxlY3RlZEluZGV4ZXNBcnJheScsXG4gICAgICAgICAgICAnc2VsZWN0ZWRTdHJpbmcnLFxuICAgICAgICAgICAgJ2RpY3Rpb25hcnknLFxuICAgICAgICAgICAgJ3NldHRpbmdzJyxcbiAgICAgICAgICAgICdub25jZXMnLFxuICAgICAgICAgICAgJ2FqYXhfdXJsJyxcbiAgICAgICAgICAgICdjdXJyZW50TGFuZ3VhZ2UnLFxuICAgICAgICAgICAgJ29uU2NyZWVuTGFuZ3VhZ2UnLFxuICAgICAgICAgICAgJ2lmcmFtZScsXG4gICAgICAgICAgICAnY3VycmVudFVSTCcsXG4gICAgICAgICAgICAnbWVyZ2luZ1N0cmluZycsXG4gICAgICAgICAgICAnbWVyZ2VEYXRhJyxcbiAgICAgICAgICAgICdlZGl0b3JTdHJpbmdzJyxcbiAgICAgICAgICAgICdzdHJpbmdUeXBlcycsXG4gICAgICAgICAgICAndXNlck1ldGEnXG4gICAgICAgIF0sXG4gICAgICAgIGRhdGEoKXtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgJ3NhdmVCdXR0b25UZXh0JyAgICAgICAgICAgIDogdGhpcy5lZGl0b3JTdHJpbmdzLnNhdmVfdHJhbnNsYXRpb24sXG4gICAgICAgICAgICAgICAgJ3NhdmVTdHJpbmdzUmVxdWVzdHNMZWZ0JyAgIDogMCxcbiAgICAgICAgICAgICAgICAnZGlzYWJsZWRTYXZlQnV0dG9uJyAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAnaGlnaGxpZ2h0QnV0dG9uJyAgICAgICAgICAgOiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb3VudGVkKCl7XG4gICAgICAgICAgICB0aGlzLmFkZEtleWJvYXJkU2hvcnRjdXRzTGlzdGVuZXIoKVxuICAgICAgICAgICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICd0cnBfc2F2ZV90cmFuc2xhdGlvbl9oZWxwX3BhbmVsJywgZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBzZWxmLmhpZ2hsaWdodEJ1dHRvbiA9IHRydWVcbiAgICAgICAgICAgIH0gKVxuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICd0cnBfaGVscF9wYW5lbF9jaGFuZ2VkJywgZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBzZWxmLmhpZ2hsaWdodEJ1dHRvbiA9IGZhbHNlXG4gICAgICAgICAgICB9IClcbiAgICAgICAgfSxcbiAgICAgICAgd2F0Y2g6e1xuICAgICAgICAgICAgc2F2ZVN0cmluZ3NSZXF1ZXN0c0xlZnQgOiBmdW5jdGlvbiggbmV3VmFsdWUsIG9sZFZhbHVlICl7XG4gICAgICAgICAgICAgICAgaWYgKCBuZXdWYWx1ZSA+IDAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZWRTYXZlQnV0dG9uID0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNhdmVCdXR0b25UZXh0ID0gdGhpcy5lZGl0b3JTdHJpbmdzLnNhdmluZ190cmFuc2xhdGlvblxuICAgICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVkU2F2ZUJ1dHRvbiA9IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2F2ZUJ1dHRvblRleHQgPSB0aGlzLmVkaXRvclN0cmluZ3Muc2F2ZV90cmFuc2xhdGlvblxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1RyYW5zbGF0aW9uc1NhdmVkKClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZHM6e1xuICAgICAgICAgICAgc2F2ZSgpe1xuICAgICAgICAgICAgICAgIGlmICggdGhpcy5tZXJnaW5nU3RyaW5nIClcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUcmFuc2xhdGlvbkJsb2NrKClcbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICggbGV0IHR5cGUgaW4gdGhpcy5zdHJpbmdUeXBlcyApe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zYXZlU3RyaW5nVHlwZSggdGhpcy5zdHJpbmdUeXBlc1t0eXBlXSApXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCB0aGlzLnNhdmVTdHJpbmdzUmVxdWVzdHNMZWZ0ID09PSAwICkge1xuICAgICAgICAgICAgICAgICAgICAvLyBubyBzYXZpbmcgYWN0aW9uIHdhcyB0cmlnZ2VyZWRcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93VHJhbnNsYXRpb25zU2F2ZWQoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYXZlU3RyaW5nVHlwZSggdHlwZVNsdWcgKXtcbiAgICAgICAgICAgICAgICB0aGlzLnNhdmVTdHJpbmdzUmVxdWVzdHNMZWZ0KytcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXNcbiAgICAgICAgICAgICAgICBsZXQgc2F2ZURhdGEgPSB7fVxuICAgICAgICAgICAgICAgIGxldCB1cGRhdGVJZnJhbWVEYXRhICA9IHt9XG4gICAgICAgICAgICAgICAgbGV0IGZvdW5kU3RyaW5nc1RvU2F2ZSA9IGZhbHNlXG5cbiAgICAgICAgICAgICAgICAvLyBjb25zdHJ1Y3QgYW4gYXJyYXkgb2YgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvblxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleGVzQXJyYXkuZm9yRWFjaCggZnVuY3Rpb24oIHNlbGVjdGVkSW5kZXggKXtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlU2x1ZyA9PT0gc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnR5cGUgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNldHRpbmdzWyd0cmFuc2xhdGlvbi1sYW5ndWFnZXMnXS5mb3JFYWNoKCBmdW5jdGlvbiggbGFuZ3VhZ2VDb2RlICApe1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZURhdGFbbGFuZ3VhZ2VDb2RlXSA9ICggc2F2ZURhdGFbbGFuZ3VhZ2VDb2RlXSApID8gc2F2ZURhdGFbbGFuZ3VhZ2VDb2RlXSA6IFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSWZyYW1lRGF0YVtsYW5ndWFnZUNvZGVdID0gKCB1cGRhdGVJZnJhbWVEYXRhW2xhbmd1YWdlQ29kZV0gKSA/IHVwZGF0ZUlmcmFtZURhdGFbbGFuZ3VhZ2VDb2RlXSA6IFtdXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdICYmIChzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS5lZGl0ZWRUcmFuc2xhdGlvbiAhPSBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS50cmFuc2xhdGVkICkgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLnN0YXR1cyA9ICggc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0uZWRpdGVkVHJhbnNsYXRpb24gPT09ICcnICkgPyAwIDogMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS50cmFuc2xhdGVkID0gc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0uZWRpdGVkVHJhbnNsYXRpb25cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRGF0YVtsYW5ndWFnZUNvZGVdLnB1c2goIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZURhdGFbbGFuZ3VhZ2VDb2RlXVtzYXZlRGF0YVtsYW5ndWFnZUNvZGVdLmxlbmd0aCAtIDEgXS5vcmlnaW5hbCA9IHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS5vcmlnaW5hbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJZnJhbWVEYXRhW2xhbmd1YWdlQ29kZV0ucHVzaCggc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdIClcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZFN0cmluZ3NUb1NhdmUgPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICAvLyBzZW5kIHJlcXVlc3QgdG8gc2F2ZSBzdHJpbmdzIGluIGRhdGFiYXNlXG4gICAgICAgICAgICAgICAgaWYgKCBmb3VuZFN0cmluZ3NUb1NhdmUgKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0gbmV3IEZvcm1EYXRhKClcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKCdhY3Rpb24nLCAndHJwX3NhdmVfdHJhbnNsYXRpb25zXycgKyB0eXBlU2x1ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKCdzZWN1cml0eScsIHRoaXMubm9uY2VzWydzYXZldHJhbnNsYXRpb25zbm9uY2UnICsgdHlwZVNsdWddKVxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoJ3N0cmluZ3MnLCBKU09OLnN0cmluZ2lmeShzYXZlRGF0YSkpXG5cbiAgICAgICAgICAgICAgICAgICAgYXhpb3MucG9zdCh0aGlzLmFqYXhfdXJsLCBkYXRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlU2x1ZyA9PT0gJ2dldHRleHQnICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheGlvcy5nZXQoc2VsZi5jdXJyZW50VVJMKS50aGVuKCBmdW5jdGlvbiggcmVsb2FkZWRJZnJhbWVSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi51cGRhdGVJZnJhbWUodXBkYXRlSWZyYW1lRGF0YSwgcmVsb2FkZWRJZnJhbWVSZXNwb25zZS5kYXRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zYXZlU3RyaW5nc1JlcXVlc3RzTGVmdC0tXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZUlmcmFtZSh1cGRhdGVJZnJhbWVEYXRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNhdmVTdHJpbmdzUmVxdWVzdHNMZWZ0LS1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi4kZW1pdCgndHJhbnNsYXRpb25zLXNhdmVkJylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zYXZlU3RyaW5nc1JlcXVlc3RzTGVmdC0tXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVwZGF0ZUlmcmFtZSggdXBkYXRlSWZyYW1lRGF0YSwgcmVsb2FkZWRJZnJhbWVSZXNwb25zZSA9IG51bGwgKXtcbiAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiB0aGlzLmlmcmFtZSA9PT0gJ3VuZGVmaW5lZCcgKXtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBzZWxmID0gdGhpc1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NbJ3RyYW5zbGF0aW9uLWxhbmd1YWdlcyddLmZvckVhY2goIGZ1bmN0aW9uKCBsYW5ndWFnZUNvZGUgICl7XG4gICAgICAgICAgICAgICAgICAgIGlmICggdXBkYXRlSWZyYW1lRGF0YVtsYW5ndWFnZUNvZGVdLmxlbmd0aCA+IDAgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUlmcmFtZURhdGFbbGFuZ3VhZ2VDb2RlXS5mb3JFYWNoKGZ1bmN0aW9uKCBzdHJpbmcgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHNlbGYuY3VycmVudExhbmd1YWdlID09PSBsYW5ndWFnZUNvZGUgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2V0VGV4dEluSWZyYW1lKCBzdHJpbmcsIGxhbmd1YWdlQ29kZSwgcmVsb2FkZWRJZnJhbWVSZXNwb25zZSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0VGV4dEluSWZyYW1lKCBzdHJpbmcsIGxhbmd1YWdlQ29kZSwgcmVsb2FkZWRJZnJhbWVSZXNwb25zZSApe1xuICAgICAgICAgICAgICAgIGxldCBub2RlcyA9IHRoaXMuaWZyYW1lLnF1ZXJ5U2VsZWN0b3JBbGwoIFwiW1wiICsgc3RyaW5nLnNlbGVjdG9yICsgXCI9J1wiICsgc3RyaW5nLmRiSUQgKyBcIiddXCIgKVxuICAgICAgICAgICAgICAgIGxldCB0ZXh0VG9TZXQgPSBudWxsXG4gICAgICAgICAgICAgICAgaWYgKCByZWxvYWRlZElmcmFtZVJlc3BvbnNlICl7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0cmFuc2xhdGVkTm9kZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCkuY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KHJlbG9hZGVkSWZyYW1lUmVzcG9uc2UpLnF1ZXJ5U2VsZWN0b3IoIFwiW1wiICsgc3RyaW5nLnNlbGVjdG9yICsgXCI9J1wiICsgc3RyaW5nLmRiSUQgKyBcIiddXCIgKVxuICAgICAgICAgICAgICAgICAgICBpZiAoIHRyYW5zbGF0ZWROb2RlICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFRvU2V0ID0gKHR5cGVvZiBzdHJpbmcuYXR0cmlidXRlID09PSAndW5kZWZpbmVkJyB8fCBzdHJpbmcuYXR0cmlidXRlID09PSBcIlwiKSA/IHRyYW5zbGF0ZWROb2RlLnRleHRDb250ZW50IDogdHJhbnNsYXRlZE5vZGUuZ2V0QXR0cmlidXRlKHN0cmluZy5hdHRyaWJ1dGUpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCB0ZXh0VG9TZXQgPT09IG51bGwgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRleHRUb1NldCA9ICggc3RyaW5nLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0udHJhbnNsYXRlZCA9PT0gJycgKSA/IHN0cmluZy5vcmlnaW5hbCA6IHN0cmluZy50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLnRyYW5zbGF0ZWRcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKG5vZGUpe1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHN0cmluZy5hdHRyaWJ1dGUgPT09ICd1bmRlZmluZWQnIHx8IHN0cmluZy5hdHRyaWJ1dGUgPT09IFwiXCIgfHwgc3RyaW5nLmF0dHJpYnV0ZSA9PT0gJ2lubmVydGV4dCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbml0aWFsVmFsdWUgPSBub2RlLnRleHRDb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFRvU2V0ID0gaW5pdGlhbFZhbHVlLnJlcGxhY2UoaW5pdGlhbFZhbHVlLnRyaW0oKSwgdGV4dFRvU2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuaW5uZXJIVE1MID0gdGV4dFRvU2V0XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5pdGlhbFZhbHVlID0gbm9kZS5nZXRBdHRyaWJ1dGUoc3RyaW5nLmF0dHJpYnV0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRUb1NldCA9IGluaXRpYWxWYWx1ZS5yZXBsYWNlKGluaXRpYWxWYWx1ZS50cmltKCksIHRleHRUb1NldClcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKHN0cmluZy5hdHRyaWJ1dGUsIHRleHRUb1NldClcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBzdHJpbmcuYXR0cmlidXRlID09PSAnc3JjJyApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCdzcmNzZXQnLCAnJylcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY3JlYXRlVHJhbnNsYXRpb25CbG9jaygpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNhdmVTdHJpbmdzUmVxdWVzdHNMZWZ0KytcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXNcbiAgICAgICAgICAgICAgICBsZXQgc2F2ZURhdGEgPSB7fSwgdHJhbnNsYXRpb24gPSB7fSwgb3JpZ2luYWxcbiAgICAgICAgICAgICAgICBsZXQgZm91bmRTdHJpbmdzVG9TYXZlID0gZmFsc2VcblxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleGVzQXJyYXkuZm9yRWFjaCggZnVuY3Rpb24oIHNlbGVjdGVkSW5kZXggKXtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXR0aW5nc1sndHJhbnNsYXRpb24tbGFuZ3VhZ2VzJ10uZm9yRWFjaCggZnVuY3Rpb24oIGxhbmd1YWdlQ29kZSAgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVEYXRhW2xhbmd1YWdlQ29kZV0gPSAoIHNhdmVEYXRhW2xhbmd1YWdlQ29kZV0gKSA/IHNhdmVEYXRhW2xhbmd1YWdlQ29kZV0gOiBbXVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiggc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdICYmIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdICkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb24gPSBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb24uYmxvY2tfdHlwZSA9IHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS5ibG9ja190eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb24uaWQgICAgICAgICA9IHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS5kYklEXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb24ub3JpZ2luYWwgICA9IHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS5vcmlnaW5hbFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLmVkaXRlZFRyYW5zbGF0aW9uICE9IHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLnRyYW5zbGF0ZWQgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLnRyYW5zbGF0ZWQgPSBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS5lZGl0ZWRUcmFuc2xhdGlvblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS5lZGl0ZWRUcmFuc2xhdGlvbiAhPT0gJycgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0uc3RhdHVzID0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVEYXRhW2xhbmd1YWdlQ29kZV0ucHVzaCggdHJhbnNsYXRpb24gKVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZFN0cmluZ3NUb1NhdmUgPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWwgPSBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0ub3JpZ2luYWxcbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgaWYoIGZvdW5kU3RyaW5nc1RvU2F2ZSApIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBuZXcgRm9ybURhdGEoKVxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoICdhY3Rpb24nICAgICAgICwgJ3RycF9jcmVhdGVfdHJhbnNsYXRpb25fYmxvY2snIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKCAnc2VjdXJpdHknICAgICAsIHRoaXMubm9uY2VzWydtZXJnZXRibm9uY2UnXSApXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCggJ2xhbmd1YWdlJyAgICAgLCB0aGlzLmN1cnJlbnRMYW5ndWFnZSApXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCggJ3N0cmluZ3MnICAgICAgLCBKU09OLnN0cmluZ2lmeSggc2F2ZURhdGEgKSApXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCggJ29yaWdpbmFsJyAgICAgLCBvcmlnaW5hbCApXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCggJ2FsbF9sYW5ndWFnZXMnLCAndHJ1ZScgKVxuXG4gICAgICAgICAgICAgICAgICAgIGF4aW9zLnBvc3QodGhpcy5hamF4X3VybCwgZGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2F2ZVN0cmluZ3NSZXF1ZXN0c0xlZnQtLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuJHBhcmVudC5tZXJnaW5nU3RyaW5nID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbSA9IHNlbGYuZGljdGlvbmFyeVtzZWxmLnNlbGVjdGVkSW5kZXhlc0FycmF5WzBdXVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy91cGRhdGUgZGljdGlvbmFyeSBzdHJpbmcgaWRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoIGl0ZW0udHJhbnNsYXRpb25zQXJyYXkgKS5mb3JFYWNoKCBmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoIHJlc3BvbnNlLmRhdGFba2V5XSApLmZvckVhY2goIGZ1bmN0aW9uKGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGtleSA9PT0gc2VsZi5vblNjcmVlbkxhbmd1YWdlICl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kaWN0aW9uYXJ5W3NlbGYuc2VsZWN0ZWRJbmRleGVzQXJyYXlbMF1dLmRiSUQgPSByZXNwb25zZS5kYXRhW2tleV1baW5kZXhdLmlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnRyYW5zbGF0aW9uc0FycmF5W2tleV0uaWQgPSByZXNwb25zZS5kYXRhW2tleV1baW5kZXhdLmlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuJHBhcmVudC5tZXJnZURhdGEgPSBbXVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9nZXQgbWVyZ2VkIHN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtZXJnZWRTdHJpbmdcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCB0eXBlb2YgaXRlbS50cmFuc2xhdGlvbnNBcnJheVtzZWxmLmN1cnJlbnRMYW5ndWFnZV0gIT09ICd1bmRlZmluZWQnICYmIGl0ZW0udHJhbnNsYXRpb25zQXJyYXlbc2VsZi5jdXJyZW50TGFuZ3VhZ2VdLnRyYW5zbGF0ZWQgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRTdHJpbmcgPSBpdGVtLnRyYW5zbGF0aW9uc0FycmF5W3NlbGYub25TY3JlZW5MYW5ndWFnZV0udHJhbnNsYXRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkU3RyaW5nID0gaXRlbS5vcmlnaW5hbFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9yZXBsYWNlIEhUTUwgaW4gaUZyYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRyYW5zbGF0aW9uQmxvY2sgPSBzZWxmLmlmcmFtZS5xdWVyeVNlbGVjdG9yKCAnLnRycC1jcmVhdGUtdHJhbnNsYXRpb24tYmxvY2snIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25CbG9jay5pbm5lckhUTUwgPSBtZXJnZWRTdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25CbG9jay5zZXRBdHRyaWJ1dGUoICdkYXRhLXRycC10cmFuc2xhdGUtaWQnLCBpdGVtLmRiSUQgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbkJsb2NrLmNsYXNzTGlzdC5yZW1vdmUoICd0cnAtY3JlYXRlLXRyYW5zbGF0aW9uLWJsb2NrJyApXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3NldHVwIGV2ZW50IGxpc3RlbmVyIGZvciBuZXcgYmxvY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLiRwYXJlbnQuc2V0dXBFdmVudExpc3RlbmVyKCB0cmFuc2xhdGlvbkJsb2NrIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi4kcGFyZW50Lm1lcmdpbmdTdHJpbmcgPSBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2F2ZVN0cmluZ3NSZXF1ZXN0c0xlZnQtLVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzaG93VHJhbnNsYXRpb25zU2F2ZWQgOiBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIGxldCB0cmFuc2xhdGlvblNhdmVkID0galF1ZXJ5KCcjdHJwLXRyYW5zbGF0aW9uLXNhdmVkJylcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGlvblNhdmVkLmNzcyhcImRpc3BsYXlcIiwgXCJpbmxpbmVcIilcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGlvblNhdmVkLmRlbGF5KDMwMDApLmZhZGVPdXQoNDAwKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFkZEtleWJvYXJkU2hvcnRjdXRzTGlzdGVuZXIoKXtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBmdW5jdGlvbihlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ1RSTCArIFNcbiAgICAgICAgICAgICAgICAgICAgaWYgKCh3aW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtLm1hdGNoKFwiTWFjXCIpID8gZS5tZXRhS2V5IDogZS5jdHJsS2V5KSAgJiYgZS5rZXlDb2RlID09PSA4Mykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudCggbmV3IEV2ZW50KCAndHJwX3RyaWdnZXJfc2F2ZV90cmFuc2xhdGlvbnNfZXZlbnQnICkgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIGZhbHNlKTtcblxuICAgICAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCAndHJwX3RyaWdnZXJfc2F2ZV90cmFuc2xhdGlvbnNfZXZlbnQnLCB0aGlzLnNhdmUgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICB9XG48L3NjcmlwdD5cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/save-translations.vue?vue&type=script&lang=js&\n");
1019
 
1020
  /***/ }),
1021
 
1091
 
1092
  /***/ }),
1093
 
1094
+ /***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/tooltip.vue?vue&type=script&lang=js&":
1095
+ /*!*******************************************************************************************************************************************************************!*\
1096
+ !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./assets/src/js/components/tooltip.vue?vue&type=script&lang=js& ***!
1097
+ \*******************************************************************************************************************************************************************/
1098
+ /*! exports provided: default */
1099
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
1100
+
1101
+ "use strict";
1102
+ eval("__webpack_require__.r(__webpack_exports__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: ['text', 'editorStrings', 'userMetaHandle', 'userMeta'],\n methods: {\n dismiss: function dismiss() {\n var self = this;\n document.dispatchEvent(new CustomEvent('trp_update_user_meta', {\n 'detail': {\n 'userMetaKey': self.userMetaHandle,\n 'userMetaValue': true\n }\n }));\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vYXNzZXRzL3NyYy9qcy9jb21wb25lbnRzL3Rvb2x0aXAudnVlPzlhNzIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFXQTtBQUNBLFVBQ0EsTUFEQSxFQUVBLGVBRkEsRUFHQSxnQkFIQSxFQUlBLFVBSkEsQ0FEQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FEQTtBQUVBO0FBRkE7QUFEQTtBQU1BO0FBVEE7QUFQQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvdG9vbHRpcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJ0cnAtdG9vbHRpcC1jb250YWluZXJcIiBzdHlsZT1cInZpc2liaWxpdHk6aGlkZGVuO1wiIHYtaWY9XCIhdGhpcy51c2VyTWV0YVt0aGlzLnVzZXJNZXRhSGFuZGxlXVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLXRvb2x0aXAtdHJpYW5nbGVcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRycC1kaXNtaXNzaWJsZS10b29sdGlwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLWNsb3NlLXRvb2x0aXBcIiBAY2xpY2s9XCJkaXNtaXNzXCIgOnRpdGxlPVwiZWRpdG9yU3RyaW5ncy5kaXNtaXNzX3Rvb2x0aXBfdGl0bGVfYXR0cmlidXRlXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLXRvb2x0aXAtdGV4dFwiPnt7dGV4dH19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIHByb3BzIDogW1xuICAgICAgICAgICAgJ3RleHQnLFxuICAgICAgICAgICAgJ2VkaXRvclN0cmluZ3MnLFxuICAgICAgICAgICAgJ3VzZXJNZXRhSGFuZGxlJyxcbiAgICAgICAgICAgICd1c2VyTWV0YSdcbiAgICAgICAgXSxcbiAgICAgICAgbWV0aG9kcyA6IHtcbiAgICAgICAgICAgIGRpc21pc3MgOiBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIGxldCBzZWxmID0gdGhpc1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoIG5ldyBDdXN0b21FdmVudCggJ3RycF91cGRhdGVfdXNlcl9tZXRhJywge1xuICAgICAgICAgICAgICAgICAgICAnZGV0YWlsJyA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICd1c2VyTWV0YUtleScgOiBzZWxmLnVzZXJNZXRhSGFuZGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXJNZXRhVmFsdWUnIDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gKSApXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG48L3NjcmlwdD4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/tooltip.vue?vue&type=script&lang=js&\n");
1103
+
1104
+ /***/ }),
1105
+
1106
  /***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/translation-input.vue?vue&type=script&lang=js&":
1107
  /*!*****************************************************************************************************************************************************************************!*\
1108
  !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./assets/src/js/components/translation-input.vue?vue&type=script&lang=js& ***!
1135
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
1136
 
1137
  "use strict";
1138
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var select2_dist_js_select2_min_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! select2/dist/js/select2.min.js */ \"./node_modules/select2/dist/js/select2.min.js\");\n/* harmony import */ var select2_dist_js_select2_min_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(select2_dist_js_select2_min_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./assets/src/js/utils.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_language_boxes_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/language-boxes.vue */ \"./assets/src/js/components/language-boxes.vue\");\n/* harmony import */ var _components_save_translations_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/save-translations.vue */ \"./assets/src/js/components/save-translations.vue\");\n/* harmony import */ var _components_hover_actions_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/hover-actions.vue */ \"./assets/src/js/components/hover-actions.vue\");\n/* harmony import */ var _components_extra_content_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/extra-content.vue */ \"./assets/src/js/components/extra-content.vue\");\n/* harmony import */ var _components_editors_navigation_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/editors-navigation.vue */ \"./assets/src/js/components/editors-navigation.vue\");\n/* harmony import */ var he__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! he */ \"./node_modules/he/he.js\");\n/* harmony import */ var he__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(he__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _components_tooltip__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/tooltip */ \"./assets/src/js/components/tooltip.vue\");\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n Tooltip: _components_tooltip__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n languageBoxes: _components_language_boxes_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n saveTranslations: _components_save_translations_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n hoverActions: _components_hover_actions_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n extraContent: _components_extra_content_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n editorsNavigation: _components_editors_navigation_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n },\n data: function data() {\n return {\n //trp_editor_data\n settings: trp_editor_data.trp_settings,\n languageNames: trp_editor_data.language_names,\n orderedSecondaryLanguages: trp_editor_data.ordered_secondary_languages,\n nonces: trp_editor_data.editor_nonces,\n editorsNavigation: trp_editor_data.editors_navigation,\n editorStrings: trp_editor_data.trp_localized_strings,\n stringTypes: trp_editor_data.string_types,\n flagsPath: trp_editor_data.flags_path,\n currentLanguage: trp_editor_data.current_language,\n onScreenLanguage: trp_editor_data.on_screen_language,\n ajaxUrl: trp_editor_data.ajax_url,\n currentURL: trp_editor_data.url_to_load,\n paidVersion: trp_editor_data.paid_version,\n userMeta: trp_editor_data.user_meta,\n //trp_string_translation_data\n stringTypesConfig: trp_string_translation_data.string_types_config,\n stEditorStrings: trp_string_translation_data.st_editor_strings,\n dictionary: {},\n selectedString: null,\n selectedIndexesArray: [],\n detectedSelectorAndId: [],\n stringGroups: [],\n showChangesUnsavedMessage: false,\n loading_strings: 0,\n translationNotLoadedYet: false,\n totalItems: null\n };\n },\n created: function created() {\n this.settings['default-language-name'] = this.languageNames[this.settings['default-language']];\n this.currentLanguage = this.settings['default-language'];\n document.addEventListener('trp_trigger_perform_action_event', this.editString);\n },\n mounted: function mounted() {\n this.getStrings(this.$route.query);\n this.addKeyboardShortcutsListener();\n document.addEventListener('trp_update_user_meta', this.updateUserMeta);\n var self = this; // resize sidebar and consequently the iframe\n\n var previewContainer = jQuery('#trp-preview');\n var total_width = jQuery(window).width();\n jQuery('#trp-controls').resizable({\n start: function start() {\n previewContainer.toggle();\n },\n stop: function stop() {\n previewContainer.toggle();\n },\n handles: 'e',\n minWidth: 327,\n maxWidth: total_width - 20\n }).bind(\"resize\", this.resizeIframe); // resize iframe when resizing window\n\n jQuery(window).resize(function () {\n self.resizeIframe();\n });\n },\n watch: {\n $route: function $route(to, from) {\n this.getStrings(to.query);\n },\n selectedString: function selectedString(newString, oldString) {\n if (!this.hasUnsavedChanges()) {\n if (this.selectedString === null) {\n this.selectedIndexesArray = [];\n } else {\n this.selectedIndexesArray = [this.selectedString];\n }\n }\n },\n dictionary: function dictionary() {\n if (!this.hasUnsavedChanges()) {\n this.selectedString = null;\n this.selectedIndexesArray = [];\n }\n }\n },\n computed: {\n closeURL: function closeURL() {\n return this.cleanURL(this.currentURL);\n }\n },\n methods: {\n getStrings: function getStrings(query) {\n if (!this.$route.matched[0].props[\"default\"].translationTab) {\n return;\n }\n\n var self = this;\n var currentTab = this.$route.matched[0].props[\"default\"].currentTab;\n var translationType = this.$route.matched[0].props[\"default\"].translationType;\n var data = new FormData();\n data.append('action', 'trp_string_translation_get_strings_' + translationType);\n data.append('query', JSON.stringify(query));\n data.append('security', currentTab['nonces']['get_strings']);\n window.dispatchEvent(new Event('trp_trigger_show_loading_table_event'));\n axios__WEBPACK_IMPORTED_MODULE_2___default.a.post(this.ajaxUrl, data).then(function (response) {\n window.dispatchEvent(new Event('trp_trigger_hide_loading_table_event'));\n\n if (response != null) {\n self.onScreenLanguage = query.language && _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].arrayContainsItem(self.settings['translation-languages'], query.language) && query.language !== 'trp-default' ? query.language : '';\n self.currentLanguage = query.language && _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].arrayContainsItem(self.settings['translation-languages'], query.language) && query.language !== 'trp-default' ? query.language : self.settings['default-language'];\n\n if (response.data.dictionary) {\n var newDictionary = response.data.dictionary;\n\n if (self.hasUnsavedChanges()) {\n // copy the unsaved string from the current dictionary to the new dictionary to allow user to discard or save changes\n var newSelectedIndexesArray = [];\n self.selectedIndexesArray.forEach(function (item) {\n self.dictionary[item].unsavedChanges = 'yes';\n newSelectedIndexesArray.push(newDictionary.push(self.dictionary[item]) - 1);\n });\n self.selectedIndexesArray = newSelectedIndexesArray;\n self.selectedString = null;\n }\n\n self.dictionary = newDictionary;\n }\n\n if (response.data.totalItems) {\n self.totalItems = response.data.totalItems;\n }\n }\n })[\"catch\"](function (error) {\n window.dispatchEvent(new Event('trp_trigger_hide_loading_table_event'));\n self.dictionary = {};\n console.log(error);\n var reload = confirm(self.stEditorStrings.request_error);\n\n if (reload === false) {\n return;\n } else {\n window.location.reload();\n }\n });\n },\n editString: function editString(data) {\n if (data.detail.action === 'edit') {\n this.selectedString = data.detail.stringIndex;\n }\n },\n cleanURL: function cleanURL(url) {\n //make removeUrlParameter recursive and only call it once with all the parameters that\n //need to stripped ?\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeUrlParameter(url, 'lang');\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeUrlParameter(url, 'trp-view-as');\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeUrlParameter(url, 'trp-view-as-nonce');\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeUrlParameter(url, 'trp-edit-translation');\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeUrlParameter(url, 'trp-string-translation');\n return url;\n },\n hasUnsavedChanges: function hasUnsavedChanges() {\n var unsavedChanges = false;\n var self = this;\n\n if (this.selectedIndexesArray.length > 0) {\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n self.settings['translation-languages'].forEach(function (languageCode) {\n if (self.dictionary[selectedIndex] && self.dictionary[selectedIndex].translationsArray[languageCode] && self.dictionary[selectedIndex].translationsArray[languageCode].translated !== self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation) {\n unsavedChanges = true;\n }\n });\n });\n }\n\n if (unsavedChanges === false) {\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n if (self.dictionary.hasOwnProperty(selectedIndex) && self.dictionary[selectedIndex].unsavedChanges && self.dictionary[selectedIndex].unsavedChanges === 'yes') {\n self.dictionary[selectedIndex].unsavedChanges = 'no';\n }\n });\n }\n\n this.showChangesUnsavedMessage = unsavedChanges;\n return unsavedChanges;\n },\n iframeLoader: function iframeLoader(status) {\n var loader = document.getElementById('trp-preview-loader');\n if (status == 'show') loader.style.display = 'flex';else if (status == 'hide') loader.style.display = 'none';\n },\n previousString: function previousString() {\n if (this.dictionary.length === 0 || this.hasUnsavedChanges()) return;\n var currentValue = parseInt(this.selectedString),\n newValue = this.selectedString;\n\n if (this.selectedString === null) {\n newValue = 0;\n } else if (0 < currentValue) {\n newValue = currentValue - 1;\n }\n\n this.selectedString = newValue.toString();\n },\n nextString: function nextString() {\n if (this.dictionary.length === 0 || this.hasUnsavedChanges()) return;\n var currentValue = parseInt(this.selectedString),\n newValue = this.selectedString;\n\n if (this.selectedString === null) {\n newValue = 0;\n } else if (this.dictionary.length > currentValue + 1) {\n newValue = currentValue + 1;\n }\n\n this.selectedString = newValue.toString();\n },\n addKeyboardShortcutsListener: function addKeyboardShortcutsListener() {\n document.addEventListener(\"keydown\", function (e) {\n if ((window.navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey) && e.altKey) {\n // CTRL + ALT + right arrow\n if (e.keyCode === 39) {\n e.preventDefault();\n window.dispatchEvent(new Event('trp_trigger_next_string_event'));\n } else {\n // CTRL + ALT + left arrow\n if (e.keyCode === 37) {\n e.preventDefault();\n window.dispatchEvent(new Event('trp_trigger_previous_string_event'));\n }\n }\n }\n }, false);\n window.addEventListener('trp_trigger_next_string_event', this.nextString);\n window.addEventListener('trp_trigger_previous_string_event', this.previousString);\n },\n updateUserMeta: function updateUserMeta(data) {\n var key = data.detail.userMetaKey;\n var value = data.detail.userMetaValue;\n this.userMeta[key] = value;\n var formData = new FormData();\n formData.append('action', 'trp_save_editor_user_meta');\n formData.append('security', this.nonces['trp_editor_user_meta']);\n formData.append('user_meta', JSON.stringify(_defineProperty({}, key, value)));\n axios__WEBPACK_IMPORTED_MODULE_2___default.a.post(this.ajaxUrl, formData)[\"catch\"](function (error) {\n console.log(error);\n });\n },\n resizeIframe: function resizeIframe(event, ui) {\n var width = jQuery('#trp-controls').width();\n var previewContainer = jQuery('#trp-preview');\n previewContainer.css('left', width - 348);\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vYXNzZXRzL3NyYy9qcy9zdHJpbmctdHJhbnNsYXRpb24udnVlPzU2YmQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0dBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBLHdFQURBO0FBRUEseUZBRkE7QUFHQSwrRkFIQTtBQUlBLHVGQUpBO0FBS0EsdUZBTEE7QUFNQTtBQU5BLEdBREE7QUFTQSxNQVRBLGtCQVNBO0FBQ0E7QUFDQTtBQUNBLDRDQUZBO0FBR0EsbURBSEE7QUFJQSw0RUFKQTtBQUtBLDJDQUxBO0FBTUEsMkRBTkE7QUFPQSwwREFQQTtBQVFBLCtDQVJBO0FBU0EsMkNBVEE7QUFVQSx1REFWQTtBQVdBLDBEQVhBO0FBWUEsdUNBWkE7QUFhQSw2Q0FiQTtBQWNBLCtDQWRBO0FBZUEseUNBZkE7QUFpQkE7QUFDQSx3RUFsQkE7QUFtQkEsb0VBbkJBO0FBcUJBLG9CQXJCQTtBQXNCQSwwQkF0QkE7QUF1QkEsOEJBdkJBO0FBd0JBLCtCQXhCQTtBQXlCQSxzQkF6QkE7QUEwQkEsc0NBMUJBO0FBMkJBLHdCQTNCQTtBQTRCQSxvQ0E1QkE7QUE2QkE7QUE3QkE7QUFnQ0EsR0ExQ0E7QUEyQ0EsU0EzQ0EscUJBMkNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0EsR0FqREE7QUFrREEsU0FsREEscUJBa0RBO0FBQ0E7QUFFQTtBQUNBO0FBRUEsb0JBTkEsQ0FRQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FIQTtBQUlBO0FBQ0E7QUFDQSxPQU5BO0FBT0Esa0JBUEE7QUFRQSxtQkFSQTtBQVNBO0FBVEEsT0FVQSxJQVZBLENBVUEsUUFWQSxFQVVBLGlCQVZBLEVBWEEsQ0F1QkE7O0FBQ0E7QUFDQTtBQUNBLEtBRkE7QUFHQSxHQTdFQTtBQThFQTtBQUNBLFVBREEsa0JBQ0EsRUFEQSxFQUNBLElBREEsRUFDQTtBQUNBO0FBQ0EsS0FIQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FGQSxNQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FaQTtBQWFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWxCQSxHQTlFQTtBQWtHQTtBQUNBO0FBQ0E7QUFDQTtBQUhBLEdBbEdBO0FBdUdBO0FBQ0EsY0FEQSxzQkFDQSxLQURBLEVBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBLDRFQUNBLElBREEsQ0FDQTtBQUNBOztBQUNBO0FBQ0EsbU5BQ0EsY0FEQSxHQUNBLEVBREE7QUFFQSxrTkFDQSxjQURBLEdBQ0EsaUNBREE7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUhBO0FBSUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQTdCQSxXQThCQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOztBQUNBO0FBQ0E7QUFDQSxTQUZBLE1BRUE7QUFDQTtBQUNBO0FBRUEsT0ExQ0E7QUEyQ0EsS0E1REE7QUE2REEsY0E3REEsc0JBNkRBLElBN0RBLEVBNkRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FqRUE7QUFrRUEsWUFsRUEsb0JBa0VBLEdBbEVBLEVBa0VBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBLEtBNUVBO0FBNkVBLHFCQTdFQSwrQkE2RUE7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUNBLDhEQURBLElBRUEsOEpBRkEsRUFFQTtBQUNBO0FBQ0E7QUFDQSxXQU5BO0FBT0EsU0FSQTtBQVNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUpBO0FBS0E7O0FBRUE7QUFDQTtBQUNBLEtBdEdBO0FBdUdBLGdCQXZHQSx3QkF1R0EsTUF2R0EsRUF1R0E7QUFDQTtBQUVBLDRCQUNBLDhCQURBLEtBRUEsc0JBQ0E7QUFDQSxLQTlHQTtBQStHQSxrQkEvR0EsNEJBK0dBO0FBQ0Esb0VBQ0E7QUFFQTtBQUFBOztBQUVBO0FBQ0E7QUFDQSxPQUZBLE1BRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0E1SEE7QUE2SEEsY0E3SEEsd0JBNkhBO0FBQ0Esb0VBQ0E7QUFFQTtBQUFBOztBQUVBO0FBQ0E7QUFDQSxPQUZBLE1BRUE7QUFDQTtBQUNBOztBQUVBO0FBRUEsS0EzSUE7QUE0SUEsZ0NBNUlBLDBDQTRJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBSEEsTUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FkQSxFQWNBLEtBZEE7QUFnQkE7QUFDQTtBQUNBLEtBL0pBO0FBZ0tBLGtCQWhLQSwwQkFnS0EsSUFoS0EsRUFnS0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlGQUNBO0FBQ0E7QUFDQSxPQUhBO0FBSUEsS0E3S0E7QUE4S0EsZ0JBOUtBLHdCQThLQSxLQTlLQSxFQThLQSxFQTlLQSxFQThLQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBbkxBO0FBdkdBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL2Fzc2V0cy9zcmMvanMvc3RyaW5nLXRyYW5zbGF0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgPGRpdiBpZD1cInRycC1lZGl0b3JcIiBjbGFzcz1cIndwLWNvcmUtdWlcIj5cblxuICAgICAgICA8ZGl2IGlkPVwidHJwLWNvbnRyb2xzXCI+XG5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJ0cnAtY2xvc2Utc2F2ZVwiPlxuICAgICAgICAgICAgICAgIDxhIGlkPVwidHJwLWNvbnRyb2xzLWNsb3NlXCIgOmhyZWY9XCJjbG9zZVVSTFwiIDp0aXRsZT1cImVkaXRvclN0cmluZ3MuY2xvc2VcIj48L2E+XG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cInRycC1zYXZlLWFuZC1sb2FkZXItc3Bpbm5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0cnAtYWpheC1sb2FkZXJcIiB2LXNob3c9XCJsb2FkaW5nX3N0cmluZ3MgPiAwXCIgaWQ9XCJ0cnAtc3RyaW5nLXNhdmVkLWFqYXgtbG9hZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRycC1zcGlubmVyXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzYXZlLXRyYW5zbGF0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzZWxlY3RlZEluZGV4ZXNBcnJheT1cInNlbGVjdGVkSW5kZXhlc0FycmF5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGljdGlvbmFyeT1cImRpY3Rpb25hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzZXR0aW5ncz1cInNldHRpbmdzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bm9uY2VzPVwibm9uY2VzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6YWpheF91cmw9XCJhamF4VXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y3VycmVudExhbmd1YWdlPVwiY3VycmVudExhbmd1YWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6b25TY3JlZW5MYW5ndWFnZT1cIm9uU2NyZWVuTGFuZ3VhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjdXJyZW50VVJMPVwiY3VycmVudFVSTFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQHRyYW5zbGF0aW9ucy1zYXZlZD1cInNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2UgPSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmVkaXRvclN0cmluZ3M9XCJlZGl0b3JTdHJpbmdzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c3RyaW5nVHlwZXM9XCJzdHJpbmdUeXBlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOnVzZXJNZXRhPVwidXNlck1ldGFcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvc2F2ZS10cmFuc2xhdGlvbnM+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRycC1jb250cm9scy1jb250YWluZXJcIiA6Y2xhc3M9XCJ7J3RycC1zaG93LWVkaXRvcnMtbmF2aWdhdGlvbicgOiBlZGl0b3JzTmF2aWdhdGlvbi5zaG93IH1cIj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cnAtY29udHJvbHMtc2VjdGlvblwiIGlkPVwidHJwLWNvbnRyb2xzLXNlY3Rpb24tZmlyc3RcIj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLWNvbnRyb2xzLXNlY3Rpb24tY29udGVudFwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwidHJwLW5leHQtcHJldmlvdXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLWJ1dHRvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJ0cnAtcHJldmlvdXNcIiBjbGFzcz1cInRycC1uZXh0LXByZXZpb3VzLWJ1dHRvbnMgYnV0dG9uXCIgdi1vbjpjbGljaz1cInByZXZpb3VzU3RyaW5nKClcIj48c3Bhbj4mbGFxdW87PC9zcGFuPiB7eyBlZGl0b3JTdHJpbmdzLnByZXZpb3VzIH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0b29sdGlwIDp0ZXh0PVwiZWRpdG9yU3RyaW5ncy5wcmV2aW91c190aXRsZV9hdHRyXCIgY2xhc3M9XCJ0cnAtcHJldmlvdXMtdG9vbHRpcFwiIDplZGl0b3JTdHJpbmdzPVwiZWRpdG9yU3RyaW5nc1wiIDp1c2VyTWV0YUhhbmRsZT1cIidkaXNtaXNzVG9vbHRpcFByZXZpb3VzJ1wiIDp1c2VyTWV0YT1cInVzZXJNZXRhXCI+PC90b29sdGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cnAtYnV0dG9uLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZD1cInRycC1uZXh0XCIgY2xhc3M9XCJ0cnAtbmV4dC1wcmV2aW91cy1idXR0b25zIGJ1dHRvblwiIHYtb246Y2xpY2s9XCJuZXh0U3RyaW5nKClcIj57eyBlZGl0b3JTdHJpbmdzLm5leHQgfX0gPHNwYW4+JnJhcXVvOzwvc3Bhbj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRvb2x0aXAgOnRleHQ9XCJlZGl0b3JTdHJpbmdzLm5leHRfdGl0bGVfYXR0clwiIGNsYXNzPVwidHJwLW5leHQtdG9vbHRpcFwiIDplZGl0b3JTdHJpbmdzPVwiZWRpdG9yU3RyaW5nc1wiIDp1c2VyTWV0YUhhbmRsZT1cIidkaXNtaXNzVG9vbHRpcE5leHQnXCIgOnVzZXJNZXRhPVwidXNlck1ldGFcIj48L3Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRycC1jb250cm9scy1zZWN0aW9uXCIgdi1zaG93PVwic2VsZWN0ZWRJbmRleGVzQXJyYXkubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICA8bGFuZ3VhZ2UtYm94ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c2VsZWN0ZWRJbmRleGVzQXJyYXk9XCJzZWxlY3RlZEluZGV4ZXNBcnJheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmRpY3Rpb25hcnk9XCJkaWN0aW9uYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y3VycmVudExhbmd1YWdlPVwiY3VycmVudExhbmd1YWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6b25TY3JlZW5MYW5ndWFnZT1cIm9uU2NyZWVuTGFuZ3VhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpsYW5ndWFnZU5hbWVzPVwibGFuZ3VhZ2VOYW1lc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOnNldHRpbmdzPVwic2V0dGluZ3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzaG93Q2hhbmdlc1Vuc2F2ZWRNZXNzYWdlPVwic2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGRpc2NhcmRlZC1jaGFuZ2VzPVwiaGFzVW5zYXZlZENoYW5nZXMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmVkaXRvclN0cmluZ3M9XCJlZGl0b3JTdHJpbmdzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZmxhZ3NQYXRoPVwiZmxhZ3NQYXRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bm9uY2VzPVwibm9uY2VzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6YWpheF91cmw9XCJhamF4VXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dXNlck1ldGE9XCJ1c2VyTWV0YVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9sYW5ndWFnZS1ib3hlcz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxleHRyYS1jb250ZW50IDpsYW5ndWFnZU5hbWVzPVwibGFuZ3VhZ2VOYW1lc1wiIDplZGl0b3JTdHJpbmdzPVwiZWRpdG9yU3RyaW5nc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnBhaWRWZXJzaW9uPVwicGFpZFZlcnNpb25cIj48L2V4dHJhLWNvbnRlbnQ+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLWNvbnRyb2xzLXNlY3Rpb25cIiB2LXNob3c9XCJ0cmFuc2xhdGlvbk5vdExvYWRlZFlldFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwidHJwLXRyYW5zbGF0aW9uLW5vdC1yZWFkeS1zZWN0aW9uXCIgY2xhc3M9XCJ0cnAtY29udHJvbHMtc2VjdGlvbi1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCB2LWh0bWw9XCJlZGl0b3JTdHJpbmdzLnRyYW5zbGF0aW9uX25vdF9sb2FkZWRfeWV0XCI+PC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZWRpdG9ycy1uYXZpZ2F0aW9uIDplZGl0b3JzTmF2aWdhdGlvbj1cImVkaXRvcnNOYXZpZ2F0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnNlbGVjdGVkVGFiPVwiJ3N0cmluZ3RyYW5zbGF0aW9uJ1wiPjwvZWRpdG9ycy1uYXZpZ2F0aW9uPlxuXG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgaWQ9XCJ0cnAtcHJldmlld1wiIGNsYXNzPVwidHJwLXN0cmluZy10cmFuc2xhdGlvbi1jb250YWluZXJcIiBAY2xpY2s9XCJoYXNVbnNhdmVkQ2hhbmdlcygpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLXN0cmluZy10cmFuc2xhdGlvbi1pbm5lci1jb250YWluZXJcIiA6Y2xhc3M9XCJ7J3RycC1zY3JlZW4tb3ZlcmxheScgOiBzaG93Q2hhbmdlc1Vuc2F2ZWRNZXNzYWdlIH1cIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJuYXYtdGFiLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHJvdXRlci1saW5rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1mb3I9XCIodGFiLCB0YWJfc2x1ZykgaW4gc3RyaW5nVHlwZXNDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtYmluZDprZXk9XCIndHJwLXRhYi1rZXktJyArIHRhYl9zbHVnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dG89XCIodGFiWydjYXRlZ29yeV9iYXNlZCddICkgID8gJy8nKyB0YWJfc2x1ZyArICcvJzogJy8nKyB0YWJfc2x1ZyArICcvJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmlkPVwiJ3RycC10YWItJyArIHRhYl9zbHVnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi10YWJcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e3RhYlsndGFiX25hbWUnXX19XG4gICAgICAgICAgICAgICAgICAgIDwvcm91dGVyLWxpbms+XG48IS0tICAgICAgICAgICAgICAgICAgICA8cm91dGVyLWxpbmsgdG89XCIvaW1wb3J0LWV4cG9ydFwiIGNsYXNzPVwibmF2LXRhYlwiPi0tPlxuPCEtLSAgICAgICAgICAgICAgICAgICAgICAgIHt7c3RFZGl0b3JTdHJpbmdzLmltcG9ydGV4cG9ydH19LS0+XG48IS0tICAgICAgICAgICAgICAgICAgICA8L3JvdXRlci1saW5rPi0tPlxuICAgICAgICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgICAgICAgPHJvdXRlci12aWV3XG4gICAgICAgICAgICAgICAgICAgICAgICA6ZGljdGlvbmFyeT1cImRpY3Rpb25hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOnRvdGFsSXRlbXM9XCJ0b3RhbEl0ZW1zXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9yb3V0ZXItdmlldz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gICAgaW1wb3J0ICdzZWxlY3QyL2Rpc3QvanMvc2VsZWN0Mi5taW4uanMnXG4gICAgaW1wb3J0IHV0aWxzICAgICAgICAgICAgIGZyb20gJy4vdXRpbHMnXG4gICAgaW1wb3J0IGF4aW9zICAgICAgICAgICAgIGZyb20gJ2F4aW9zJ1xuICAgIGltcG9ydCBsYW5ndWFnZUJveGVzICAgICBmcm9tICcuL2NvbXBvbmVudHMvbGFuZ3VhZ2UtYm94ZXMudnVlJ1xuICAgIGltcG9ydCBzYXZlVHJhbnNsYXRpb25zICBmcm9tICcuL2NvbXBvbmVudHMvc2F2ZS10cmFuc2xhdGlvbnMudnVlJ1xuICAgIGltcG9ydCBob3ZlckFjdGlvbnMgICAgICBmcm9tICcuL2NvbXBvbmVudHMvaG92ZXItYWN0aW9ucy52dWUnXG4gICAgaW1wb3J0IGV4dHJhQ29udGVudCAgICAgIGZyb20gJy4vY29tcG9uZW50cy9leHRyYS1jb250ZW50LnZ1ZSdcbiAgICBpbXBvcnQgZWRpdG9yc05hdmlnYXRpb24gZnJvbSAnLi9jb21wb25lbnRzL2VkaXRvcnMtbmF2aWdhdGlvbi52dWUnXG4gICAgaW1wb3J0IGhlICAgICAgZnJvbSAnaGUnXG4gICAgaW1wb3J0IFRvb2x0aXAgZnJvbSBcIi4vY29tcG9uZW50cy90b29sdGlwXCJcblxuICAgIGV4cG9ydCBkZWZhdWx0IHtcbiAgICAgICAgY29tcG9uZW50cyA6IHtcbiAgICAgICAgICAgIFRvb2x0aXAsXG4gICAgICAgICAgICBsYW5ndWFnZUJveGVzLFxuICAgICAgICAgICAgc2F2ZVRyYW5zbGF0aW9ucyxcbiAgICAgICAgICAgIGhvdmVyQWN0aW9ucyxcbiAgICAgICAgICAgIGV4dHJhQ29udGVudCxcbiAgICAgICAgICAgIGVkaXRvcnNOYXZpZ2F0aW9uXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGEoKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC8vdHJwX2VkaXRvcl9kYXRhXG4gICAgICAgICAgICAgICAgc2V0dGluZ3MgICAgICAgICAgICAgICAgICA6IHRycF9lZGl0b3JfZGF0YS50cnBfc2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VOYW1lcyAgICAgICAgICAgICA6IHRycF9lZGl0b3JfZGF0YS5sYW5ndWFnZV9uYW1lcyxcbiAgICAgICAgICAgICAgICBvcmRlcmVkU2Vjb25kYXJ5TGFuZ3VhZ2VzIDogdHJwX2VkaXRvcl9kYXRhLm9yZGVyZWRfc2Vjb25kYXJ5X2xhbmd1YWdlcyxcbiAgICAgICAgICAgICAgICBub25jZXMgICAgICAgICAgICAgICAgICAgIDogdHJwX2VkaXRvcl9kYXRhLmVkaXRvcl9ub25jZXMsXG4gICAgICAgICAgICAgICAgZWRpdG9yc05hdmlnYXRpb24gICAgICAgICA6IHRycF9lZGl0b3JfZGF0YS5lZGl0b3JzX25hdmlnYXRpb24sXG4gICAgICAgICAgICAgICAgZWRpdG9yU3RyaW5ncyAgICAgICAgICAgICA6IHRycF9lZGl0b3JfZGF0YS50cnBfbG9jYWxpemVkX3N0cmluZ3MsXG4gICAgICAgICAgICAgICAgc3RyaW5nVHlwZXMgICAgICAgICAgICAgICA6IHRycF9lZGl0b3JfZGF0YS5zdHJpbmdfdHlwZXMsXG4gICAgICAgICAgICAgICAgZmxhZ3NQYXRoICAgICAgICAgICAgICAgICA6IHRycF9lZGl0b3JfZGF0YS5mbGFnc19wYXRoLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRMYW5ndWFnZSAgICAgICAgICAgOiB0cnBfZWRpdG9yX2RhdGEuY3VycmVudF9sYW5ndWFnZSxcbiAgICAgICAgICAgICAgICBvblNjcmVlbkxhbmd1YWdlICAgICAgICAgIDogdHJwX2VkaXRvcl9kYXRhLm9uX3NjcmVlbl9sYW5ndWFnZSxcbiAgICAgICAgICAgICAgICBhamF4VXJsICAgICAgICAgICAgICAgICAgIDogdHJwX2VkaXRvcl9kYXRhLmFqYXhfdXJsLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRVUkwgICAgICAgICAgICAgICAgOiB0cnBfZWRpdG9yX2RhdGEudXJsX3RvX2xvYWQsXG4gICAgICAgICAgICAgICAgcGFpZFZlcnNpb24gICAgICAgICAgICAgICA6IHRycF9lZGl0b3JfZGF0YS5wYWlkX3ZlcnNpb24sXG4gICAgICAgICAgICAgICAgdXNlck1ldGEgICAgICAgICAgICAgICAgICA6IHRycF9lZGl0b3JfZGF0YS51c2VyX21ldGEsXG5cbiAgICAgICAgICAgICAgICAvL3RycF9zdHJpbmdfdHJhbnNsYXRpb25fZGF0YVxuICAgICAgICAgICAgICAgIHN0cmluZ1R5cGVzQ29uZmlnIDogdHJwX3N0cmluZ190cmFuc2xhdGlvbl9kYXRhLnN0cmluZ190eXBlc19jb25maWcsXG4gICAgICAgICAgICAgICAgc3RFZGl0b3JTdHJpbmdzICAgOiB0cnBfc3RyaW5nX3RyYW5zbGF0aW9uX2RhdGEuc3RfZWRpdG9yX3N0cmluZ3MsXG5cbiAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5ICAgICAgICAgICAgICAgIDoge30sXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRTdHJpbmcgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbmRleGVzQXJyYXkgICAgICA6IFtdLFxuICAgICAgICAgICAgICAgIGRldGVjdGVkU2VsZWN0b3JBbmRJZCAgICAgOiBbXSxcbiAgICAgICAgICAgICAgICBzdHJpbmdHcm91cHMgICAgICAgICAgICAgIDogW10sXG4gICAgICAgICAgICAgICAgc2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGxvYWRpbmdfc3RyaW5ncyAgICAgICAgICAgOiAwLFxuICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uTm90TG9hZGVkWWV0ICAgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB0b3RhbEl0ZW1zICAgICAgICAgICAgICAgIDogbnVsbFxuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNyZWF0ZWQoKSB7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzWyAnZGVmYXVsdC1sYW5ndWFnZS1uYW1lJyBdID0gdGhpcy5sYW5ndWFnZU5hbWVzWyB0aGlzLnNldHRpbmdzWyAnZGVmYXVsdC1sYW5ndWFnZScgXSBdXG5cbiAgICAgICAgICAgIHRoaXMuY3VycmVudExhbmd1YWdlID0gdGhpcy5zZXR0aW5nc1sgJ2RlZmF1bHQtbGFuZ3VhZ2UnIF1cblxuICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggJ3RycF90cmlnZ2VyX3BlcmZvcm1fYWN0aW9uX2V2ZW50JywgdGhpcy5lZGl0U3RyaW5nIClcbiAgICAgICAgfSxcbiAgICAgICAgbW91bnRlZCgpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0U3RyaW5ncyggdGhpcy4kcm91dGUucXVlcnkgKVxuXG4gICAgICAgICAgICB0aGlzLmFkZEtleWJvYXJkU2hvcnRjdXRzTGlzdGVuZXIoKVxuICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggJ3RycF91cGRhdGVfdXNlcl9tZXRhJywgIHRoaXMudXBkYXRlVXNlck1ldGEgKVxuXG4gICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXNcblxuICAgICAgICAgICAgLy8gcmVzaXplIHNpZGViYXIgYW5kIGNvbnNlcXVlbnRseSB0aGUgaWZyYW1lXG4gICAgICAgICAgICBsZXQgcHJldmlld0NvbnRhaW5lciA9IGpRdWVyeSggJyN0cnAtcHJldmlldycgKVxuICAgICAgICAgICAgbGV0IHRvdGFsX3dpZHRoICAgICAgPSBqUXVlcnkoIHdpbmRvdyApLndpZHRoKClcbiAgICAgICAgICAgIGpRdWVyeSggJyN0cnAtY29udHJvbHMnICkucmVzaXphYmxlKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ICAgIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlld0NvbnRhaW5lci50b2dnbGUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wICAgICA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpZXdDb250YWluZXIudG9nZ2xlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcyAgOiAnZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbldpZHRoIDogMzI3LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aCA6IHRvdGFsX3dpZHRoIC0gMjBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICkuYmluZCggXCJyZXNpemVcIiwgdGhpcy5yZXNpemVJZnJhbWUgKVxuXG4gICAgICAgICAgICAvLyByZXNpemUgaWZyYW1lIHdoZW4gcmVzaXppbmcgd2luZG93XG4gICAgICAgICAgICBqUXVlcnkoIHdpbmRvdyApLnJlc2l6ZSggZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHNlbGYucmVzaXplSWZyYW1lKClcbiAgICAgICAgICAgIH0gKVxuICAgICAgICB9LFxuICAgICAgICB3YXRjaCAgICAgIDoge1xuICAgICAgICAgICAgJHJvdXRlKCB0bywgZnJvbSApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN0cmluZ3MoIHRvLnF1ZXJ5IClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWxlY3RlZFN0cmluZyA6IGZ1bmN0aW9uICggbmV3U3RyaW5nLCBvbGRTdHJpbmcgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCAhdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcygpICl7XG4gICAgICAgICAgICAgICAgICAgIGlmICggdGhpcy5zZWxlY3RlZFN0cmluZyA9PT0gbnVsbCApe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ZXNBcnJheSA9IFsgXVxuICAgICAgICAgICAgICAgICAgICB9ZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXhlc0FycmF5ID0gWyB0aGlzLnNlbGVjdGVkU3RyaW5nIF1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkaWN0aW9uYXJ5IDogZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBpZiAoICF0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzKCkgKXtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFN0cmluZyA9IG51bGxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ZXNBcnJheSA9IFsgXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY29tcHV0ZWQgICA6IHtcbiAgICAgICAgICAgIGNsb3NlVVJMIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuVVJMKCB0aGlzLmN1cnJlbnRVUkwgKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXRob2RzICAgIDoge1xuICAgICAgICAgICAgZ2V0U3RyaW5ncyggcXVlcnkgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCAhdGhpcy4kcm91dGUubWF0Y2hlZFsgMCBdLnByb3BzLmRlZmF1bHQudHJhbnNsYXRpb25UYWIgKXtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IHNlbGYgICAgICAgICAgICA9IHRoaXNcbiAgICAgICAgICAgICAgICBsZXQgY3VycmVudFRhYiAgICAgID0gdGhpcy4kcm91dGUubWF0Y2hlZFsgMCBdLnByb3BzLmRlZmF1bHQuY3VycmVudFRhYlxuICAgICAgICAgICAgICAgIGxldCB0cmFuc2xhdGlvblR5cGUgPSB0aGlzLiRyb3V0ZS5tYXRjaGVkWyAwIF0ucHJvcHMuZGVmYXVsdC50cmFuc2xhdGlvblR5cGVcblxuICAgICAgICAgICAgICAgIGxldCBkYXRhID0gbmV3IEZvcm1EYXRhKClcbiAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCggJ2FjdGlvbicsICd0cnBfc3RyaW5nX3RyYW5zbGF0aW9uX2dldF9zdHJpbmdzXycgKyB0cmFuc2xhdGlvblR5cGUgKVxuICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKCAncXVlcnknLCBKU09OLnN0cmluZ2lmeSggcXVlcnkgKSApXG4gICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoICdzZWN1cml0eScsIGN1cnJlbnRUYWJbICdub25jZXMnIF1bICdnZXRfc3RyaW5ncycgXSApXG5cbiAgICAgICAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudCggbmV3IEV2ZW50KCAndHJwX3RyaWdnZXJfc2hvd19sb2FkaW5nX3RhYmxlX2V2ZW50JyApIClcblxuICAgICAgICAgICAgICAgIGF4aW9zLnBvc3QoIHRoaXMuYWpheFVybCwgZGF0YSApXG4gICAgICAgICAgICAgICAgICAgICAudGhlbiggZnVuY3Rpb24gKCByZXNwb25zZSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudCggbmV3IEV2ZW50KCAndHJwX3RyaWdnZXJfaGlkZV9sb2FkaW5nX3RhYmxlX2V2ZW50JyApIClcbiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJlc3BvbnNlICE9IG51bGwgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vblNjcmVlbkxhbmd1YWdlID0gKHF1ZXJ5Lmxhbmd1YWdlICYmIHV0aWxzLmFycmF5Q29udGFpbnNJdGVtKCBzZWxmLnNldHRpbmdzWyAndHJhbnNsYXRpb24tbGFuZ3VhZ2VzJyBdLCBxdWVyeS5sYW5ndWFnZSApICYmIHF1ZXJ5Lmxhbmd1YWdlICE9PSAndHJwLWRlZmF1bHQnKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeS5sYW5ndWFnZSA6ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudExhbmd1YWdlICA9IChxdWVyeS5sYW5ndWFnZSAmJiB1dGlscy5hcnJheUNvbnRhaW5zSXRlbSggc2VsZi5zZXR0aW5nc1sgJ3RyYW5zbGF0aW9uLWxhbmd1YWdlcycgXSwgcXVlcnkubGFuZ3VhZ2UgKSAmJiBxdWVyeS5sYW5ndWFnZSAhPT0gJ3RycC1kZWZhdWx0JykgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnkubGFuZ3VhZ2UgOiBzZWxmLnNldHRpbmdzWyAnZGVmYXVsdC1sYW5ndWFnZScgXVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggcmVzcG9uc2UuZGF0YS5kaWN0aW9uYXJ5ICl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3RGljdGlvbmFyeSA9IHJlc3BvbnNlLmRhdGEuZGljdGlvbmFyeVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHNlbGYuaGFzVW5zYXZlZENoYW5nZXMoKSApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcHkgdGhlIHVuc2F2ZWQgc3RyaW5nIGZyb20gdGhlIGN1cnJlbnQgZGljdGlvbmFyeSB0byB0aGUgbmV3IGRpY3Rpb25hcnkgdG8gYWxsb3cgdXNlciB0byBkaXNjYXJkIG9yIHNhdmUgY2hhbmdlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdTZWxlY3RlZEluZGV4ZXNBcnJheSA9IFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RlZEluZGV4ZXNBcnJheS5mb3JFYWNoKCBmdW5jdGlvbiggaXRlbSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kaWN0aW9uYXJ5WyBpdGVtIF0udW5zYXZlZENoYW5nZXMgPSAneWVzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3RlZEluZGV4ZXNBcnJheS5wdXNoKCBuZXdEaWN0aW9uYXJ5LnB1c2goIHNlbGYuZGljdGlvbmFyeVtpdGVtXSApIC0gMSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbGVjdGVkSW5kZXhlc0FycmF5ID0gbmV3U2VsZWN0ZWRJbmRleGVzQXJyYXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbGVjdGVkU3RyaW5nID0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpY3Rpb25hcnkgPSBuZXdEaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCByZXNwb25zZS5kYXRhLnRvdGFsSXRlbXMgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudG90YWxJdGVtcyA9IHJlc3BvbnNlLmRhdGEudG90YWxJdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgfSApXG4gICAgICAgICAgICAgICAgICAgICAuY2F0Y2goIGZ1bmN0aW9uICggZXJyb3IgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoIG5ldyBFdmVudCggJ3RycF90cmlnZ2VyX2hpZGVfbG9hZGluZ190YWJsZV9ldmVudCcgKSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kaWN0aW9uYXJ5ID0ge31cblxuICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCBlcnJvciApXG4gICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlbG9hZCA9IGNvbmZpcm0oIHNlbGYuc3RFZGl0b3JTdHJpbmdzLnJlcXVlc3RfZXJyb3IgKVxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCByZWxvYWQgPT09IGZhbHNlICl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICB9IClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlZGl0U3RyaW5nKCBkYXRhICkge1xuICAgICAgICAgICAgICAgIGlmICggZGF0YS5kZXRhaWwuYWN0aW9uID09PSAnZWRpdCcgKXtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFN0cmluZyA9IGRhdGEuZGV0YWlsLnN0cmluZ0luZGV4XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNsZWFuVVJMKCB1cmwgKSB7XG4gICAgICAgICAgICAgICAgLy9tYWtlIHJlbW92ZVVybFBhcmFtZXRlciByZWN1cnNpdmUgYW5kIG9ubHkgY2FsbCBpdCBvbmNlIHdpdGggYWxsIHRoZSBwYXJhbWV0ZXJzIHRoYXRcbiAgICAgICAgICAgICAgICAvL25lZWQgdG8gc3RyaXBwZWQgP1xuICAgICAgICAgICAgICAgIHVybCA9IHV0aWxzLnJlbW92ZVVybFBhcmFtZXRlciggdXJsLCAnbGFuZycgKVxuICAgICAgICAgICAgICAgIHVybCA9IHV0aWxzLnJlbW92ZVVybFBhcmFtZXRlciggdXJsLCAndHJwLXZpZXctYXMnIClcbiAgICAgICAgICAgICAgICB1cmwgPSB1dGlscy5yZW1vdmVVcmxQYXJhbWV0ZXIoIHVybCwgJ3RycC12aWV3LWFzLW5vbmNlJyApXG4gICAgICAgICAgICAgICAgdXJsID0gdXRpbHMucmVtb3ZlVXJsUGFyYW1ldGVyKCB1cmwsICd0cnAtZWRpdC10cmFuc2xhdGlvbicgKVxuICAgICAgICAgICAgICAgIHVybCA9IHV0aWxzLnJlbW92ZVVybFBhcmFtZXRlciggdXJsLCAndHJwLXN0cmluZy10cmFuc2xhdGlvbicgKVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhhc1Vuc2F2ZWRDaGFuZ2VzKCkge1xuICAgICAgICAgICAgICAgIGxldCB1bnNhdmVkQ2hhbmdlcyA9IGZhbHNlXG4gICAgICAgICAgICAgICAgbGV0IHNlbGYgICAgICAgICAgID0gdGhpc1xuICAgICAgICAgICAgICAgIGlmICggdGhpcy5zZWxlY3RlZEluZGV4ZXNBcnJheS5sZW5ndGggPiAwICl7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleGVzQXJyYXkuZm9yRWFjaCggZnVuY3Rpb24gKCBzZWxlY3RlZEluZGV4ICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXR0aW5nc1sgJ3RyYW5zbGF0aW9uLWxhbmd1YWdlcycgXS5mb3JFYWNoKCBmdW5jdGlvbiAoIGxhbmd1YWdlQ29kZSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHNlbGYuZGljdGlvbmFyeVsgc2VsZWN0ZWRJbmRleCBdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGljdGlvbmFyeVsgc2VsZWN0ZWRJbmRleCBdLnRyYW5zbGF0aW9uc0FycmF5WyBsYW5ndWFnZUNvZGUgXSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5kaWN0aW9uYXJ5WyBzZWxlY3RlZEluZGV4IF0udHJhbnNsYXRpb25zQXJyYXlbIGxhbmd1YWdlQ29kZSBdLnRyYW5zbGF0ZWQgIT09IHNlbGYuZGljdGlvbmFyeVsgc2VsZWN0ZWRJbmRleCBdLnRyYW5zbGF0aW9uc0FycmF5WyBsYW5ndWFnZUNvZGUgXS5lZGl0ZWRUcmFuc2xhdGlvbikgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zYXZlZENoYW5nZXMgPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSApXG4gICAgICAgICAgICAgICAgICAgIH0gKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICggdW5zYXZlZENoYW5nZXMgPT09IGZhbHNlICl7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleGVzQXJyYXkuZm9yRWFjaCggZnVuY3Rpb24gKCBzZWxlY3RlZEluZGV4ICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBzZWxmLmRpY3Rpb25hcnkuaGFzT3duUHJvcGVydHkoc2VsZWN0ZWRJbmRleCkgJiYgc2VsZi5kaWN0aW9uYXJ5WyBzZWxlY3RlZEluZGV4IF0udW5zYXZlZENoYW5nZXMgJiYgc2VsZi5kaWN0aW9uYXJ5WyBzZWxlY3RlZEluZGV4IF0udW5zYXZlZENoYW5nZXMgPT09ICd5ZXMnKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpY3Rpb25hcnlbIHNlbGVjdGVkSW5kZXggXS51bnNhdmVkQ2hhbmdlcyA9ICdubydcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2UgPSB1bnNhdmVkQ2hhbmdlc1xuICAgICAgICAgICAgICAgIHJldHVybiB1bnNhdmVkQ2hhbmdlc1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlmcmFtZUxvYWRlciggc3RhdHVzICkge1xuICAgICAgICAgICAgICAgIGxldCBsb2FkZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggJ3RycC1wcmV2aWV3LWxvYWRlcicgKVxuXG4gICAgICAgICAgICAgICAgaWYgKCBzdGF0dXMgPT0gJ3Nob3cnIClcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnN0eWxlLmRpc3BsYXkgPSAnZmxleCdcbiAgICAgICAgICAgICAgICBlbHNlIGlmICggc3RhdHVzID09ICdoaWRlJyApXG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJldmlvdXNTdHJpbmcoKSB7XG4gICAgICAgICAgICAgICAgaWYgKCB0aGlzLmRpY3Rpb25hcnkubGVuZ3RoID09PSAwIHx8IHRoaXMuaGFzVW5zYXZlZENoYW5nZXMoKSApXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuXG4gICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRWYWx1ZSA9IHBhcnNlSW50KCB0aGlzLnNlbGVjdGVkU3RyaW5nICksIG5ld1ZhbHVlID0gdGhpcy5zZWxlY3RlZFN0cmluZ1xuXG4gICAgICAgICAgICAgICAgaWYoIHRoaXMuc2VsZWN0ZWRTdHJpbmcgPT09IG51bGwpe1xuICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IDBcbiAgICAgICAgICAgICAgICB9ZWxzZSBpZiAoIDAgPCBjdXJyZW50VmFsdWUgKXtcbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBjdXJyZW50VmFsdWUgLSAxXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFN0cmluZyA9IG5ld1ZhbHVlLnRvU3RyaW5nKClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0U3RyaW5nKCkge1xuICAgICAgICAgICAgICAgIGlmICggdGhpcy5kaWN0aW9uYXJ5Lmxlbmd0aCA9PT0gMCB8fCB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzKCkgKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cblxuICAgICAgICAgICAgICAgIGxldCBjdXJyZW50VmFsdWUgPSBwYXJzZUludCggdGhpcy5zZWxlY3RlZFN0cmluZyApLCBuZXdWYWx1ZSA9IHRoaXMuc2VsZWN0ZWRTdHJpbmdcblxuICAgICAgICAgICAgICAgIGlmKCB0aGlzLnNlbGVjdGVkU3RyaW5nID09PSBudWxsKXtcbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSAwXG4gICAgICAgICAgICAgICAgfWVsc2UgaWYgKCB0aGlzLmRpY3Rpb25hcnkubGVuZ3RoID4gKGN1cnJlbnRWYWx1ZSArIDEpICl7XG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gY3VycmVudFZhbHVlICsgMVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRTdHJpbmcgPSBuZXdWYWx1ZS50b1N0cmluZygpXG5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZGRLZXlib2FyZFNob3J0Y3V0c0xpc3RlbmVyKCkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIFwia2V5ZG93blwiLCBmdW5jdGlvbiAoIGUgKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICggKHdpbmRvdy5uYXZpZ2F0b3IucGxhdGZvcm0ubWF0Y2goIFwiTWFjXCIgKSA/IGUubWV0YUtleSA6IGUuY3RybEtleSkgJiYgZS5hbHRLZXkgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENUUkwgKyBBTFQgKyByaWdodCBhcnJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBlLmtleUNvZGUgPT09IDM5ICl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoIG5ldyBFdmVudCggJ3RycF90cmlnZ2VyX25leHRfc3RyaW5nX2V2ZW50JyApIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ1RSTCArIEFMVCArIGxlZnQgYXJyb3dcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGUua2V5Q29kZSA9PT0gMzcgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KCBuZXcgRXZlbnQoICd0cnBfdHJpZ2dlcl9wcmV2aW91c19zdHJpbmdfZXZlbnQnICkgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIGZhbHNlIClcblxuICAgICAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCAndHJwX3RyaWdnZXJfbmV4dF9zdHJpbmdfZXZlbnQnLCB0aGlzLm5leHRTdHJpbmcgKVxuICAgICAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCAndHJwX3RyaWdnZXJfcHJldmlvdXNfc3RyaW5nX2V2ZW50JywgdGhpcy5wcmV2aW91c1N0cmluZyApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdXBkYXRlVXNlck1ldGEoIGRhdGEgKXtcbiAgICAgICAgICAgICAgICBsZXQga2V5ID0gZGF0YS5kZXRhaWwudXNlck1ldGFLZXlcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBkYXRhLmRldGFpbC51c2VyTWV0YVZhbHVlXG4gICAgICAgICAgICAgICAgdGhpcy51c2VyTWV0YVtrZXldID0gdmFsdWVcblxuICAgICAgICAgICAgICAgIGxldCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpXG4gICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCAnYWN0aW9uJywgJ3RycF9zYXZlX2VkaXRvcl91c2VyX21ldGEnIClcbiAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoICdzZWN1cml0eScsIHRoaXMubm9uY2VzWyAndHJwX2VkaXRvcl91c2VyX21ldGEnIF0gKVxuICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCggJ3VzZXJfbWV0YScsIEpTT04uc3RyaW5naWZ5KHtba2V5XSA6IHZhbHVlIH0gKSApXG4gICAgICAgICAgICAgICAgYXhpb3MucG9zdCh0aGlzLmFqYXhVcmwsIGZvcm1EYXRhKVxuICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc2l6ZUlmcmFtZSggZXZlbnQsIHVpICkge1xuICAgICAgICAgICAgICAgIGxldCB3aWR0aCAgICAgICA9IGpRdWVyeSggJyN0cnAtY29udHJvbHMnICkud2lkdGgoKVxuXG4gICAgICAgICAgICAgICAgbGV0IHByZXZpZXdDb250YWluZXIgPSBqUXVlcnkoICcjdHJwLXByZXZpZXcnIClcbiAgICAgICAgICAgICAgICBwcmV2aWV3Q29udGFpbmVyLmNzcyggJ2xlZnQnLCAod2lkdGggLSAzNDgpIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbjwvc2NyaXB0PlxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/string-translation.vue?vue&type=script&lang=js&\n");
1139
 
1140
  /***/ }),
1141
 
1260
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
1261
 
1262
  "use strict";
1263
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _vm.selectedIndexesArray\n ? _c(\n \"div\",\n {\n staticClass: \"trp-controls-section-content\",\n attrs: { id: \"trp-translation-section\" }\n },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showChangesUnsavedMessage,\n expression: \"showChangesUnsavedMessage\"\n }\n ],\n staticClass: \"trp-changes-unsaved-message\"\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.editorStrings.unsaved_changes) +\n \"\\n \"\n ),\n _c(\n \"span\",\n { staticClass: \"trp-button-container\" },\n [\n _c(\n \"span\",\n {\n staticClass: \"trp-unsaved-changes trp-discard-changes \",\n on: { click: _vm.discardAll }\n },\n [_vm._v(_vm._s(_vm.editorStrings.discard_all) + \"?\")]\n ),\n _vm._v(\" \"),\n _c(\"tooltip\", {\n staticClass: \"trp-discardall-tooltip\",\n attrs: {\n text: _vm.editorStrings.discard_all_title_attr,\n editorStrings: _vm.editorStrings,\n userMetaHandle: \"dismissTooltipDismissAll\",\n userMeta: _vm.userMeta\n }\n })\n ],\n 1\n )\n ]\n ),\n _vm._v(\" \"),\n _vm._l(_vm.languages, function(languageCode, key) {\n return _c(\n \"div\",\n { attrs: { id: \"trp-language-\" + languageCode } },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value:\n (key <= _vm.othersButtonPosition ||\n _vm.showOtherLanguages) &&\n (_vm.selectedIndexesArray &&\n _vm.selectedIndexesArray.length > 0),\n expression:\n \"( (key <= othersButtonPosition) || showOtherLanguages ) && ( selectedIndexesArray && selectedIndexesArray.length > 0 )\"\n }\n ],\n staticClass: \"trp-language-container\"\n },\n [\n _c(\"div\", { staticClass: \"trp-language-name\" }, [\n key == 0\n ? _c(\"span\", [\n _vm._v(_vm._s(_vm.editorStrings.from) + \" \")\n ])\n : _c(\"span\", [\n _vm._v(_vm._s(_vm.editorStrings.to) + \" \")\n ]),\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.completeLanguageNames[languageCode]) +\n \"\\n \"\n ),\n languageCode != \"original\"\n ? _c(\"img\", {\n staticClass: \"trp-language-box-flag-image\",\n attrs: {\n src:\n _vm.flagsPath[languageCode] +\n \"/\" +\n languageCode +\n \".png\",\n width: \"18\",\n height: \"12\",\n alt: languageCode,\n title: _vm.completeLanguageNames[languageCode]\n }\n })\n : _vm._e()\n ]),\n _vm._v(\" \"),\n _c(\n \"table\",\n { staticClass: \"trp-translations-for-language\" },\n [\n _vm.showImageIcon\n ? _c(\n \"td\",\n { staticClass: \"trp-translation-icon-container\" },\n [\n _c(\"span\", {\n staticClass:\n \"trp-translation-icon dashicons dashicons-format-image\"\n })\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"td\",\n { staticClass: \"trp-translations-container\" },\n _vm._l(_vm.selectedIndexesArray, function(\n selectedIndex\n ) {\n return _c(\n \"div\",\n { staticClass: \"trp-string-container\" },\n [\n _vm.dictionary[selectedIndex] &&\n _vm.dictionary[selectedIndex].translationsArray[\n languageCode\n ]\n ? _c(\n \"div\",\n { key: selectedIndex },\n [\n _c(\"translation-input\", {\n attrs: {\n string:\n _vm.dictionary[selectedIndex],\n highlightUnsavedChanges:\n _vm.showChangesUnsavedMessage &&\n _vm.hasUnsavedChanges(\n selectedIndex,\n languageCode\n ),\n editorStrings: _vm.editorStrings\n },\n model: {\n value:\n _vm.dictionary[selectedIndex]\n .translationsArray[languageCode]\n .editedTranslation,\n callback: function($$v) {\n _vm.$set(\n _vm.dictionary[selectedIndex]\n .translationsArray[\n languageCode\n ],\n \"editedTranslation\",\n $$v\n )\n },\n expression:\n \"dictionary[selectedIndex].translationsArray[languageCode].editedTranslation\"\n }\n })\n ],\n 1\n )\n : _vm.dictionary[selectedIndex]\n ? _c(\n \"div\",\n { key: selectedIndex },\n [\n _c(\"translation-input\", {\n attrs: {\n readonly: true,\n string:\n _vm.dictionary[selectedIndex],\n value:\n _vm.dictionary[selectedIndex]\n .original,\n editorStrings: _vm.editorStrings\n }\n })\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"trp-translation-input-footer\",\n attrs: {\n \"data-dictionary-entry\": JSON.stringify(\n _vm.dictionary[selectedIndex]\n )\n }\n },\n [\n _c(\n \"div\",\n { staticClass: \"trp-attribute-name\" },\n [\n _vm._v(\n _vm._s(\n _vm.editorStrings[\n _vm.dictionary[selectedIndex]\n .attribute\n ] &&\n (_vm.dictionary[selectedIndex]\n .attribute != \"content\" ||\n _vm.dictionary[selectedIndex]\n .attribute != \"\")\n ? _vm.editorStrings[\n _vm.dictionary[selectedIndex]\n .attribute\n ]\n : _vm.editorStrings.text\n )\n )\n ]\n ),\n _vm._v(\" \"),\n _vm.dictionary[selectedIndex] &&\n _vm.dictionary[selectedIndex]\n .translationsArray[languageCode]\n ? _c(\n \"div\",\n {\n staticClass:\n \"trp-discard-changes trp-discard-individual-changes\",\n class: {\n \"trp-unsaved-changes\": _vm.hasUnsavedChanges(\n selectedIndex,\n languageCode\n )\n },\n attrs: {\n title:\n _vm.editorStrings\n .discard_individual_changes_title_attribute\n },\n on: {\n click: function($event) {\n _vm.discardChanges(\n selectedIndex,\n languageCode\n )\n }\n }\n },\n [\n _vm._v(\n _vm._s(_vm.editorStrings.discard)\n )\n ]\n )\n : _vm._e()\n ]\n ),\n _vm._v(\" \"),\n _vm.dictionary[selectedIndex] &&\n _vm.dictionary[selectedIndex].translationsArray[\n languageCode\n ]\n ? _c(\n \"div\",\n {\n key: \"trp_tmw_\" + selectedIndex,\n staticClass:\n \"trp-translation-memory-wrap\"\n },\n [\n _c(\"translation-memory\", {\n attrs: {\n string:\n _vm.dictionary[selectedIndex],\n editorStrings: _vm.editorStrings,\n ajax_url: _vm.ajax_url,\n nonces: _vm.nonces,\n languageCode: languageCode\n }\n })\n ],\n 1\n )\n : _vm._e()\n ]\n )\n }),\n 0\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: key == _vm.othersButtonPosition,\n expression: \"key == othersButtonPosition\"\n }\n ]\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"trp-toggle-languages button\",\n class: {\n \"trp-show-other-languages\":\n _vm.showOtherLanguages,\n \"trp-hide-other-languages\": !_vm.showOtherLanguages\n },\n on: {\n click: function($event) {\n _vm.showOtherLanguages = !_vm.showOtherLanguages\n }\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n _vm._s(_vm.showOtherLanguages ? \"▼\" : \"▶\") +\n \" \" +\n _vm._s(_vm.editorStrings.other_lang)\n )\n ])\n ]\n )\n ]\n )\n ]\n )\n ]\n )\n })\n ],\n 2\n )\n : _vm._e()\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvbGFuZ3VhZ2UtYm94ZXMudnVlP2IxNGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNDQUFzQztBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsU0FBUyxxQ0FBcUMsRUFBRTtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQSwrQkFBK0IsbUNBQW1DO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QiwrQ0FBK0M7QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsZ0RBQWdEO0FBQy9FO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQiw0Q0FBNEM7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixzQ0FBc0M7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMscUJBQXFCO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMscUJBQXFCO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQztBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsb0NBQW9DO0FBQzNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vYXNzZXRzL3NyYy9qcy9jb21wb25lbnRzL2xhbmd1YWdlLWJveGVzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zZjgwY2YxMCYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF92bS5zZWxlY3RlZEluZGV4ZXNBcnJheVxuICAgID8gX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtY29udHJvbHMtc2VjdGlvbi1jb250ZW50XCIsXG4gICAgICAgICAgYXR0cnM6IHsgaWQ6IFwidHJwLXRyYW5zbGF0aW9uLXNlY3Rpb25cIiB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLWNoYW5nZXMtdW5zYXZlZC1tZXNzYWdlXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgXCIgK1xuICAgICAgICAgICAgICAgICAgX3ZtLl9zKF92bS5lZGl0b3JTdHJpbmdzLnVuc2F2ZWRfY2hhbmdlcykgK1xuICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgIFwiXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwidHJwLWJ1dHRvbi1jb250YWluZXJcIiB9LFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC11bnNhdmVkLWNoYW5nZXMgdHJwLWRpc2NhcmQtY2hhbmdlcyBcIixcbiAgICAgICAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLmRpc2NhcmRBbGwgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0uZWRpdG9yU3RyaW5ncy5kaXNjYXJkX2FsbCkgKyBcIj9cIildXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgIF9jKFwidG9vbHRpcFwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1kaXNjYXJkYWxsLXRvb2x0aXBcIixcbiAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBfdm0uZWRpdG9yU3RyaW5ncy5kaXNjYXJkX2FsbF90aXRsZV9hdHRyLFxuICAgICAgICAgICAgICAgICAgICAgIGVkaXRvclN0cmluZ3M6IF92bS5lZGl0b3JTdHJpbmdzLFxuICAgICAgICAgICAgICAgICAgICAgIHVzZXJNZXRhSGFuZGxlOiBcImRpc21pc3NUb29sdGlwRGlzbWlzc0FsbFwiLFxuICAgICAgICAgICAgICAgICAgICAgIHVzZXJNZXRhOiBfdm0udXNlck1ldGFcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXVxuICAgICAgICAgICksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfdm0uX2woX3ZtLmxhbmd1YWdlcywgZnVuY3Rpb24obGFuZ3VhZ2VDb2RlLCBrZXkpIHtcbiAgICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgeyBhdHRyczogeyBpZDogXCJ0cnAtbGFuZ3VhZ2UtXCIgKyBsYW5ndWFnZUNvZGUgfSB9LFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChrZXkgPD0gX3ZtLm90aGVyc0J1dHRvblBvc2l0aW9uIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnNob3dPdGhlckxhbmd1YWdlcykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKF92bS5zZWxlY3RlZEluZGV4ZXNBcnJheSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zZWxlY3RlZEluZGV4ZXNBcnJheS5sZW5ndGggPiAwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiKCAoa2V5IDw9IG90aGVyc0J1dHRvblBvc2l0aW9uKSB8fCBzaG93T3RoZXJMYW5ndWFnZXMgKSAmJiAoIHNlbGVjdGVkSW5kZXhlc0FycmF5ICYmIHNlbGVjdGVkSW5kZXhlc0FycmF5Lmxlbmd0aCA+IDAgKVwiXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtbGFuZ3VhZ2UtY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidHJwLWxhbmd1YWdlLW5hbWVcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAga2V5ID09IDBcbiAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXCJzcGFuXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS5lZGl0b3JTdHJpbmdzLmZyb20pICsgXCIgXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IF9jKFwic3BhblwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0uZWRpdG9yU3RyaW5ncy50bykgKyBcIiBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgICAgICAgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoX3ZtLmNvbXBsZXRlTGFuZ3VhZ2VOYW1lc1tsYW5ndWFnZUNvZGVdKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZUNvZGUgIT0gXCJvcmlnaW5hbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFwiaW1nXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtbGFuZ3VhZ2UtYm94LWZsYWctaW1hZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZmxhZ3NQYXRoW2xhbmd1YWdlQ29kZV0gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIi9cIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlQ29kZSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiLnBuZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMThcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCIxMlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0OiBsYW5ndWFnZUNvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogX3ZtLmNvbXBsZXRlTGFuZ3VhZ2VOYW1lc1tsYW5ndWFnZUNvZGVdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgXCJ0YWJsZVwiLFxuICAgICAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwidHJwLXRyYW5zbGF0aW9ucy1mb3ItbGFuZ3VhZ2VcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zaG93SW1hZ2VJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInRycC10cmFuc2xhdGlvbi1pY29uLWNvbnRhaW5lclwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwic3BhblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRycC10cmFuc2xhdGlvbi1pY29uIGRhc2hpY29ucyBkYXNoaWNvbnMtZm9ybWF0LWltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwidGRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ0cnAtdHJhbnNsYXRpb25zLWNvbnRhaW5lclwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fbChfdm0uc2VsZWN0ZWRJbmRleGVzQXJyYXksIGZ1bmN0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwidHJwLXN0cmluZy1jb250YWluZXJcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZUNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsga2V5OiBzZWxlY3RlZEluZGV4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInRyYW5zbGF0aW9uLWlucHV0XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0VW5zYXZlZENoYW5nZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2UgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uaGFzVW5zYXZlZENoYW5nZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yU3RyaW5nczogX3ZtLmVkaXRvclN0cmluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5lZGl0ZWRUcmFuc2xhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS4kc2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRyYW5zbGF0aW9uc0FycmF5W1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZUNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVkaXRlZFRyYW5zbGF0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJHZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0uZWRpdGVkVHJhbnNsYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBrZXk6IHNlbGVjdGVkSW5kZXggfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidHJhbnNsYXRpb24taW5wdXRcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHk6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vcmlnaW5hbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yU3RyaW5nczogX3ZtLmVkaXRvclN0cmluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtdHJhbnNsYXRpb24taW5wdXQtZm9vdGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRhdGEtZGljdGlvbmFyeS1lbnRyeVwiOiBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ0cnAtYXR0cmlidXRlLW5hbWVcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZWRpdG9yU3RyaW5nc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHJpYnV0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF92bS5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cmlidXRlICE9IFwiY29udGVudFwiIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cmlidXRlICE9IFwiXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfdm0uZWRpdG9yU3RyaW5nc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cmlidXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uZWRpdG9yU3RyaW5ncy50ZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cnAtZGlzY2FyZC1jaGFuZ2VzIHRycC1kaXNjYXJkLWluZGl2aWR1YWwtY2hhbmdlc1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJwLXVuc2F2ZWQtY2hhbmdlc1wiOiBfdm0uaGFzVW5zYXZlZENoYW5nZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmVkaXRvclN0cmluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRpc2NhcmRfaW5kaXZpZHVhbF9jaGFuZ2VzX3RpdGxlX2F0dHJpYnV0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5kaXNjYXJkQ2hhbmdlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKF92bS5lZGl0b3JTdHJpbmdzLmRpc2NhcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlQ29kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJ0cnBfdG13X1wiICsgc2VsZWN0ZWRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJwLXRyYW5zbGF0aW9uLW1lbW9yeS13cmFwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidHJhbnNsYXRpb24tbWVtb3J5XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yU3RyaW5nczogX3ZtLmVkaXRvclN0cmluZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFqYXhfdXJsOiBfdm0uYWpheF91cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbmNlczogX3ZtLm5vbmNlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlOiBsYW5ndWFnZUNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToga2V5ID09IF92bS5vdGhlcnNCdXR0b25Qb3NpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImtleSA9PSBvdGhlcnNCdXR0b25Qb3NpdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLXRvZ2dsZS1sYW5ndWFnZXMgYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJwLXNob3ctb3RoZXItbGFuZ3VhZ2VzXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zaG93T3RoZXJMYW5ndWFnZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRycC1oaWRlLW90aGVyLWxhbmd1YWdlc1wiOiAhX3ZtLnNob3dPdGhlckxhbmd1YWdlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnNob3dPdGhlckxhbmd1YWdlcyA9ICFfdm0uc2hvd090aGVyTGFuZ3VhZ2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJzcGFuXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKF92bS5zaG93T3RoZXJMYW5ndWFnZXMgPyBcIuKWvFwiIDogXCLilrZcIikgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoX3ZtLmVkaXRvclN0cmluZ3Mub3RoZXJfbGFuZylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgICAgXSxcbiAgICAgICAgMlxuICAgICAgKVxuICAgIDogX3ZtLl9lKClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/language-boxes.vue?vue&type=template&id=3f80cf10&\n");
1264
 
1265
  /***/ }),
1266
 
1272
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
1273
 
1274
  "use strict";
1275
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"trp-save-container\" } }, [\n _c(\n \"span\",\n {\n staticStyle: { display: \"none\" },\n attrs: { id: \"trp-translation-saved\" }\n },\n [_vm._v(_vm._s(_vm.editorStrings.saved))]\n ),\n _vm._v(\" \"),\n _c(\n \"span\",\n { staticClass: \"trp-button-container\" },\n [\n _c(\n \"button\",\n {\n staticClass: \"button-primary trp-save-string\",\n class: { \"trp-highlight-for-panel\": _vm.highlightButton },\n attrs: {\n id: \"trp-save\",\n disabled: _vm.disabledSaveButton,\n type: \"submit\"\n },\n on: { click: _vm.save }\n },\n [_vm._v(_vm._s(_vm.saveButtonText))]\n ),\n _vm._v(\" \"),\n _c(\"tooltip\", {\n staticClass: \"trp-save-tooltip\",\n attrs: {\n text: _vm.editorStrings.save_title_attr,\n editorStrings: _vm.editorStrings,\n userMetaHandle: \"dismissTooltipSave\",\n userMeta: _vm.userMeta\n }\n })\n ],\n 1\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvc2F2ZS10cmFuc2xhdGlvbnMudnVlPzUxZTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsU0FBUywyQkFBMkIsRUFBRTtBQUMxRDtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isa0JBQWtCO0FBQ3hDLGdCQUFnQjtBQUNoQixPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sc0NBQXNDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsaURBQWlEO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLGlCQUFpQjtBQUNqQixXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvc2F2ZS10cmFuc2xhdGlvbnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFlYzZlYzU0Ji5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXCJkaXZcIiwgeyBhdHRyczogeyBpZDogXCJ0cnAtc2F2ZS1jb250YWluZXJcIiB9IH0sIFtcbiAgICBfYyhcbiAgICAgIFwic3BhblwiLFxuICAgICAge1xuICAgICAgICBzdGF0aWNTdHlsZTogeyBkaXNwbGF5OiBcIm5vbmVcIiB9LFxuICAgICAgICBhdHRyczogeyBpZDogXCJ0cnAtdHJhbnNsYXRpb24tc2F2ZWRcIiB9XG4gICAgICB9LFxuICAgICAgW192bS5fdihfdm0uX3MoX3ZtLmVkaXRvclN0cmluZ3Muc2F2ZWQpKV1cbiAgICApLFxuICAgIF92bS5fdihcIiBcIiksXG4gICAgX2MoXG4gICAgICBcInNwYW5cIixcbiAgICAgIHsgc3RhdGljQ2xhc3M6IFwidHJwLWJ1dHRvbi1jb250YWluZXJcIiB9LFxuICAgICAgW1xuICAgICAgICBfYyhcbiAgICAgICAgICBcImJ1dHRvblwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImJ1dHRvbi1wcmltYXJ5IHRycC1zYXZlLXN0cmluZ1wiLFxuICAgICAgICAgICAgY2xhc3M6IHsgXCJ0cnAtaGlnaGxpZ2h0LWZvci1wYW5lbFwiOiBfdm0uaGlnaGxpZ2h0QnV0dG9uIH0sXG4gICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICBpZDogXCJ0cnAtc2F2ZVwiLFxuICAgICAgICAgICAgICBkaXNhYmxlZDogX3ZtLmRpc2FibGVkU2F2ZUJ1dHRvbixcbiAgICAgICAgICAgICAgdHlwZTogXCJzdWJtaXRcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uc2F2ZSB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0uc2F2ZUJ1dHRvblRleHQpKV1cbiAgICAgICAgKSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXCJ0b29sdGlwXCIsIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtc2F2ZS10b29sdGlwXCIsXG4gICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgIHRleHQ6IF92bS5lZGl0b3JTdHJpbmdzLnNhdmVfdGl0bGVfYXR0cixcbiAgICAgICAgICAgIGVkaXRvclN0cmluZ3M6IF92bS5lZGl0b3JTdHJpbmdzLFxuICAgICAgICAgICAgdXNlck1ldGFIYW5kbGU6IFwiZGlzbWlzc1Rvb2x0aXBTYXZlXCIsXG4gICAgICAgICAgICB1c2VyTWV0YTogX3ZtLnVzZXJNZXRhXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgXSxcbiAgICAgIDFcbiAgICApXG4gIF0pXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/save-translations.vue?vue&type=template&id=1ec6ec54&\n");
1276
 
1277
  /***/ }),
1278
 
1348
 
1349
  /***/ }),
1350
 
1351
+ /***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/tooltip.vue?vue&type=template&id=f7e5e3b2&":
1352
+ /*!***********************************************************************************************************************************************************************************************************!*\
1353
+ !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./assets/src/js/components/tooltip.vue?vue&type=template&id=f7e5e3b2& ***!
1354
+ \***********************************************************************************************************************************************************************************************************/
1355
+ /*! exports provided: render, staticRenderFns */
1356
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
1357
+
1358
+ "use strict";
1359
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return !this.userMeta[this.userMetaHandle]\n ? _c(\n \"div\",\n {\n staticClass: \"trp-tooltip-container\",\n staticStyle: { visibility: \"hidden\" }\n },\n [\n _c(\"div\", { staticClass: \"trp-tooltip-triangle\" }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"trp-dismissible-tooltip\" }, [\n _c(\"div\", {\n staticClass: \"trp-close-tooltip\",\n attrs: {\n title: _vm.editorStrings.dismiss_tooltip_title_attribute\n },\n on: { click: _vm.dismiss }\n }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"trp-tooltip-text\" }, [\n _vm._v(_vm._s(_vm.text))\n ])\n ])\n ]\n )\n : _vm._e()\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvdG9vbHRpcC52dWU/ZDQ3YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEIsU0FBUztBQUNUO0FBQ0EscUJBQXFCLHNDQUFzQztBQUMzRDtBQUNBLHFCQUFxQix5Q0FBeUM7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsbUJBQW1CO0FBQ25CLGFBQWE7QUFDYjtBQUNBLHVCQUF1QixrQ0FBa0M7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL2Fzc2V0cy9zcmMvanMvY29tcG9uZW50cy90b29sdGlwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1mN2U1ZTNiMiYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuICF0aGlzLnVzZXJNZXRhW3RoaXMudXNlck1ldGFIYW5kbGVdXG4gICAgPyBfYyhcbiAgICAgICAgXCJkaXZcIixcbiAgICAgICAge1xuICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC10b29sdGlwLWNvbnRhaW5lclwiLFxuICAgICAgICAgIHN0YXRpY1N0eWxlOiB7IHZpc2liaWxpdHk6IFwiaGlkZGVuXCIgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ0cnAtdG9vbHRpcC10cmlhbmdsZVwiIH0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ0cnAtZGlzbWlzc2libGUtdG9vbHRpcFwiIH0sIFtcbiAgICAgICAgICAgIF9jKFwiZGl2XCIsIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLWNsb3NlLXRvb2x0aXBcIixcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogX3ZtLmVkaXRvclN0cmluZ3MuZGlzbWlzc190b29sdGlwX3RpdGxlX2F0dHJpYnV0ZVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLmRpc21pc3MgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ0cnAtdG9vbHRpcC10ZXh0XCIgfSwgW1xuICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS50ZXh0KSlcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgXSlcbiAgICAgICAgXVxuICAgICAgKVxuICAgIDogX3ZtLl9lKClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/tooltip.vue?vue&type=template&id=f7e5e3b2&\n");
1360
+
1361
+ /***/ }),
1362
+
1363
  /***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/translation-input.vue?vue&type=template&id=3871315c&":
1364
  /*!*********************************************************************************************************************************************************************************************************************!*\
1365
  !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./assets/src/js/components/translation-input.vue?vue&type=template&id=3871315c& ***!
1392
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
1393
 
1394
  "use strict";
1395
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"wp-core-ui\", attrs: { id: \"trp-editor\" } }, [\n _c(\n \"div\",\n { attrs: { id: \"trp-controls\" } },\n [\n _c(\"div\", { attrs: { id: \"trp-close-save\" } }, [\n _c(\"a\", {\n attrs: {\n id: \"trp-controls-close\",\n href: _vm.closeURL,\n title: _vm.editorStrings.close\n }\n }),\n _vm._v(\" \"),\n _c(\n \"div\",\n { attrs: { id: \"trp-save-and-loader-spinner\" } },\n [\n _c(\n \"span\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.loading_strings > 0,\n expression: \"loading_strings > 0\"\n }\n ],\n staticClass: \"trp-ajax-loader\",\n attrs: { id: \"trp-string-saved-ajax-loader\" }\n },\n [_c(\"div\", { staticClass: \"trp-spinner\" })]\n ),\n _vm._v(\" \"),\n _c(\"save-translations\", {\n attrs: {\n selectedIndexesArray: _vm.selectedIndexesArray,\n dictionary: _vm.dictionary,\n settings: _vm.settings,\n nonces: _vm.nonces,\n ajax_url: _vm.ajaxUrl,\n currentLanguage: _vm.currentLanguage,\n onScreenLanguage: _vm.onScreenLanguage,\n currentURL: _vm.currentURL,\n editorStrings: _vm.editorStrings,\n stringTypes: _vm.stringTypes,\n userMeta: _vm.userMeta\n },\n on: {\n \"translations-saved\": function($event) {\n _vm.showChangesUnsavedMessage = false\n }\n }\n })\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"trp-controls-container\",\n class: { \"trp-show-editors-navigation\": _vm.editorsNavigation.show }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"trp-controls-section\",\n attrs: { id: \"trp-controls-section-first\" }\n },\n [\n _c(\"div\", { staticClass: \"trp-controls-section-content\" }, [\n _c(\"div\", { attrs: { id: \"trp-next-previous\" } }, [\n _c(\n \"div\",\n { staticClass: \"trp-button-container\" },\n [\n _c(\n \"button\",\n {\n staticClass: \"trp-next-previous-buttons button\",\n attrs: { type: \"button\", id: \"trp-previous\" },\n on: {\n click: function($event) {\n _vm.previousString()\n }\n }\n },\n [\n _c(\"span\", [_vm._v(\"«\")]),\n _vm._v(\" \" + _vm._s(_vm.editorStrings.previous))\n ]\n ),\n _vm._v(\" \"),\n _c(\"tooltip\", {\n staticClass: \"trp-previous-tooltip\",\n attrs: {\n text: _vm.editorStrings.previous_title_attr,\n editorStrings: _vm.editorStrings,\n userMetaHandle: \"dismissTooltipPrevious\",\n userMeta: _vm.userMeta\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"trp-button-container\" },\n [\n _c(\n \"button\",\n {\n staticClass: \"trp-next-previous-buttons button\",\n attrs: { type: \"button\", id: \"trp-next\" },\n on: {\n click: function($event) {\n _vm.nextString()\n }\n }\n },\n [\n _vm._v(_vm._s(_vm.editorStrings.next) + \" \"),\n _c(\"span\", [_vm._v(\"»\")])\n ]\n ),\n _vm._v(\" \"),\n _c(\"tooltip\", {\n staticClass: \"trp-next-tooltip\",\n attrs: {\n text: _vm.editorStrings.next_title_attr,\n editorStrings: _vm.editorStrings,\n userMetaHandle: \"dismissTooltipNext\",\n userMeta: _vm.userMeta\n }\n })\n ],\n 1\n )\n ])\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.selectedIndexesArray.length > 0,\n expression: \"selectedIndexesArray.length > 0\"\n }\n ],\n staticClass: \"trp-controls-section\"\n },\n [\n _c(\"language-boxes\", {\n attrs: {\n selectedIndexesArray: _vm.selectedIndexesArray,\n dictionary: _vm.dictionary,\n currentLanguage: _vm.currentLanguage,\n onScreenLanguage: _vm.onScreenLanguage,\n languageNames: _vm.languageNames,\n settings: _vm.settings,\n showChangesUnsavedMessage: _vm.showChangesUnsavedMessage,\n editorStrings: _vm.editorStrings,\n flagsPath: _vm.flagsPath,\n nonces: _vm.nonces,\n ajax_url: _vm.ajaxUrl,\n userMeta: _vm.userMeta\n },\n on: {\n \"discarded-changes\": function($event) {\n _vm.hasUnsavedChanges()\n }\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"extra-content\", {\n attrs: {\n languageNames: _vm.languageNames,\n editorStrings: _vm.editorStrings,\n paidVersion: _vm.paidVersion\n }\n }),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.translationNotLoadedYet,\n expression: \"translationNotLoadedYet\"\n }\n ],\n staticClass: \"trp-controls-section\"\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"trp-controls-section-content\",\n attrs: { id: \"trp-translation-not-ready-section\" }\n },\n [\n _c(\"p\", {\n domProps: {\n innerHTML: _vm._s(\n _vm.editorStrings.translation_not_loaded_yet\n )\n }\n })\n ]\n )\n ]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"editors-navigation\", {\n attrs: {\n editorsNavigation: _vm.editorsNavigation,\n selectedTab: \"stringtranslation\"\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"trp-string-translation-container\",\n attrs: { id: \"trp-preview\" },\n on: {\n click: function($event) {\n _vm.hasUnsavedChanges()\n }\n }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"trp-string-translation-inner-container\",\n class: { \"trp-screen-overlay\": _vm.showChangesUnsavedMessage }\n },\n [\n _c(\n \"h2\",\n { staticClass: \"nav-tab-wrapper\" },\n _vm._l(_vm.stringTypesConfig, function(tab, tab_slug) {\n return _c(\n \"router-link\",\n {\n key: \"trp-tab-key-\" + tab_slug,\n staticClass: \"nav-tab\",\n attrs: {\n to: tab[\"category_based\"]\n ? \"/\" + tab_slug + \"/\"\n : \"/\" + tab_slug + \"/\",\n id: \"trp-tab-\" + tab_slug\n }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(tab[\"tab_name\"]) +\n \"\\n \"\n )\n ]\n )\n }),\n 1\n ),\n _vm._v(\" \"),\n _c(\"router-view\", {\n attrs: { dictionary: _vm.dictionary, totalItems: _vm.totalItems }\n })\n ],\n 1\n )\n ]\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL3N0cmluZy10cmFuc2xhdGlvbi52dWU/YjIyMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixvQ0FBb0MsbUJBQW1CLEVBQUU7QUFDN0U7QUFDQTtBQUNBLE9BQU8sU0FBUyxxQkFBcUIsRUFBRTtBQUN2QztBQUNBLG1CQUFtQixTQUFTLHVCQUF1QixFQUFFO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxhQUFhLFNBQVMsb0NBQW9DLEVBQUU7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUIsaUJBQWlCO0FBQ2pCLDRCQUE0Qiw2QkFBNkI7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCLGVBQWU7QUFDZjtBQUNBLDJCQUEyQiw4Q0FBOEM7QUFDekUsNkJBQTZCLFNBQVMsMEJBQTBCLEVBQUU7QUFDbEU7QUFDQTtBQUNBLHVCQUF1QixzQ0FBc0M7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxxQ0FBcUM7QUFDekU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixzQ0FBc0M7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxpQ0FBaUM7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QixtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlDQUFpQztBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL2Fzc2V0cy9zcmMvanMvc3RyaW5nLXRyYW5zbGF0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hNTExNGNkYyYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwid3AtY29yZS11aVwiLCBhdHRyczogeyBpZDogXCJ0cnAtZWRpdG9yXCIgfSB9LCBbXG4gICAgX2MoXG4gICAgICBcImRpdlwiLFxuICAgICAgeyBhdHRyczogeyBpZDogXCJ0cnAtY29udHJvbHNcIiB9IH0sXG4gICAgICBbXG4gICAgICAgIF9jKFwiZGl2XCIsIHsgYXR0cnM6IHsgaWQ6IFwidHJwLWNsb3NlLXNhdmVcIiB9IH0sIFtcbiAgICAgICAgICBfYyhcImFcIiwge1xuICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgaWQ6IFwidHJwLWNvbnRyb2xzLWNsb3NlXCIsXG4gICAgICAgICAgICAgIGhyZWY6IF92bS5jbG9zZVVSTCxcbiAgICAgICAgICAgICAgdGl0bGU6IF92bS5lZGl0b3JTdHJpbmdzLmNsb3NlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7IGF0dHJzOiB7IGlkOiBcInRycC1zYXZlLWFuZC1sb2FkZXItc3Bpbm5lclwiIH0gfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmxvYWRpbmdfc3RyaW5ncyA+IDAsXG4gICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJsb2FkaW5nX3N0cmluZ3MgPiAwXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1hamF4LWxvYWRlclwiLFxuICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgaWQ6IFwidHJwLXN0cmluZy1zYXZlZC1hamF4LWxvYWRlclwiIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFtfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInRycC1zcGlubmVyXCIgfSldXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgIF9jKFwic2F2ZS10cmFuc2xhdGlvbnNcIiwge1xuICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEluZGV4ZXNBcnJheTogX3ZtLnNlbGVjdGVkSW5kZXhlc0FycmF5LFxuICAgICAgICAgICAgICAgICAgZGljdGlvbmFyeTogX3ZtLmRpY3Rpb25hcnksXG4gICAgICAgICAgICAgICAgICBzZXR0aW5nczogX3ZtLnNldHRpbmdzLFxuICAgICAgICAgICAgICAgICAgbm9uY2VzOiBfdm0ubm9uY2VzLFxuICAgICAgICAgICAgICAgICAgYWpheF91cmw6IF92bS5hamF4VXJsLFxuICAgICAgICAgICAgICAgICAgY3VycmVudExhbmd1YWdlOiBfdm0uY3VycmVudExhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgb25TY3JlZW5MYW5ndWFnZTogX3ZtLm9uU2NyZWVuTGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgICBjdXJyZW50VVJMOiBfdm0uY3VycmVudFVSTCxcbiAgICAgICAgICAgICAgICAgIGVkaXRvclN0cmluZ3M6IF92bS5lZGl0b3JTdHJpbmdzLFxuICAgICAgICAgICAgICAgICAgc3RyaW5nVHlwZXM6IF92bS5zdHJpbmdUeXBlcyxcbiAgICAgICAgICAgICAgICAgIHVzZXJNZXRhOiBfdm0udXNlck1ldGFcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICBcInRyYW5zbGF0aW9ucy1zYXZlZFwiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLnNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2UgPSBmYWxzZVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKVxuICAgICAgICBdKSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXG4gICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtY29udHJvbHMtY29udGFpbmVyXCIsXG4gICAgICAgICAgICBjbGFzczogeyBcInRycC1zaG93LWVkaXRvcnMtbmF2aWdhdGlvblwiOiBfdm0uZWRpdG9yc05hdmlnYXRpb24uc2hvdyB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1jb250cm9scy1zZWN0aW9uXCIsXG4gICAgICAgICAgICAgICAgYXR0cnM6IHsgaWQ6IFwidHJwLWNvbnRyb2xzLXNlY3Rpb24tZmlyc3RcIiB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInRycC1jb250cm9scy1zZWN0aW9uLWNvbnRlbnRcIiB9LCBbXG4gICAgICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IGlkOiBcInRycC1uZXh0LXByZXZpb3VzXCIgfSB9LCBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ0cnAtYnV0dG9uLWNvbnRhaW5lclwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtbmV4dC1wcmV2aW91cy1idXR0b25zIGJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHR5cGU6IFwiYnV0dG9uXCIsIGlkOiBcInRycC1wcmV2aW91c1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnByZXZpb3VzU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInNwYW5cIiwgW192bS5fdihcIsKrXCIpXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiICsgX3ZtLl9zKF92bS5lZGl0b3JTdHJpbmdzLnByZXZpb3VzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBfYyhcInRvb2x0aXBcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtcHJldmlvdXMtdG9vbHRpcFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IF92bS5lZGl0b3JTdHJpbmdzLnByZXZpb3VzX3RpdGxlX2F0dHIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yU3RyaW5nczogX3ZtLmVkaXRvclN0cmluZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlck1ldGFIYW5kbGU6IFwiZGlzbWlzc1Rvb2x0aXBQcmV2aW91c1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJNZXRhOiBfdm0udXNlck1ldGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInRycC1idXR0b24tY29udGFpbmVyXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1uZXh0LXByZXZpb3VzLWJ1dHRvbnMgYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgdHlwZTogXCJidXR0b25cIiwgaWQ6IFwidHJwLW5leHRcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5uZXh0U3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS5lZGl0b3JTdHJpbmdzLm5leHQpICsgXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwic3BhblwiLCBbX3ZtLl92KFwiwrtcIildKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidG9vbHRpcFwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1uZXh0LXRvb2x0aXBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBfdm0uZWRpdG9yU3RyaW5ncy5uZXh0X3RpdGxlX2F0dHIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yU3RyaW5nczogX3ZtLmVkaXRvclN0cmluZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlck1ldGFIYW5kbGU6IFwiZGlzbWlzc1Rvb2x0aXBOZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlck1ldGE6IF92bS51c2VyTWV0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnNlbGVjdGVkSW5kZXhlc0FycmF5Lmxlbmd0aCA+IDAsXG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwic2VsZWN0ZWRJbmRleGVzQXJyYXkubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtY29udHJvbHMtc2VjdGlvblwiXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBfYyhcImxhbmd1YWdlLWJveGVzXCIsIHtcbiAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5kZXhlc0FycmF5OiBfdm0uc2VsZWN0ZWRJbmRleGVzQXJyYXksXG4gICAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnk6IF92bS5kaWN0aW9uYXJ5LFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50TGFuZ3VhZ2U6IF92bS5jdXJyZW50TGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgICAgIG9uU2NyZWVuTGFuZ3VhZ2U6IF92bS5vblNjcmVlbkxhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZU5hbWVzOiBfdm0ubGFuZ3VhZ2VOYW1lcyxcbiAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3M6IF92bS5zZXR0aW5ncyxcbiAgICAgICAgICAgICAgICAgICAgc2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZTogX3ZtLnNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIGVkaXRvclN0cmluZ3M6IF92bS5lZGl0b3JTdHJpbmdzLFxuICAgICAgICAgICAgICAgICAgICBmbGFnc1BhdGg6IF92bS5mbGFnc1BhdGgsXG4gICAgICAgICAgICAgICAgICAgIG5vbmNlczogX3ZtLm5vbmNlcyxcbiAgICAgICAgICAgICAgICAgICAgYWpheF91cmw6IF92bS5hamF4VXJsLFxuICAgICAgICAgICAgICAgICAgICB1c2VyTWV0YTogX3ZtLnVzZXJNZXRhXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgXCJkaXNjYXJkZWQtY2hhbmdlc1wiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uaGFzVW5zYXZlZENoYW5nZXMoKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICBfYyhcImV4dHJhLWNvbnRlbnRcIiwge1xuICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgIGxhbmd1YWdlTmFtZXM6IF92bS5sYW5ndWFnZU5hbWVzLFxuICAgICAgICAgICAgICAgIGVkaXRvclN0cmluZ3M6IF92bS5lZGl0b3JTdHJpbmdzLFxuICAgICAgICAgICAgICAgIHBhaWRWZXJzaW9uOiBfdm0ucGFpZFZlcnNpb25cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnRyYW5zbGF0aW9uTm90TG9hZGVkWWV0LFxuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInRyYW5zbGF0aW9uTm90TG9hZGVkWWV0XCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1jb250cm9scy1zZWN0aW9uXCJcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLWNvbnRyb2xzLXNlY3Rpb24tY29udGVudFwiLFxuICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBpZDogXCJ0cnAtdHJhbnNsYXRpb24tbm90LXJlYWR5LXNlY3Rpb25cIiB9XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBfYyhcInBcIiwge1xuICAgICAgICAgICAgICAgICAgICAgIGRvbVByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbm5lckhUTUw6IF92bS5fcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmVkaXRvclN0cmluZ3MudHJhbnNsYXRpb25fbm90X2xvYWRlZF95ZXRcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApXG4gICAgICAgICAgXSxcbiAgICAgICAgICAxXG4gICAgICAgICksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwiZWRpdG9ycy1uYXZpZ2F0aW9uXCIsIHtcbiAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgZWRpdG9yc05hdmlnYXRpb246IF92bS5lZGl0b3JzTmF2aWdhdGlvbixcbiAgICAgICAgICAgIHNlbGVjdGVkVGFiOiBcInN0cmluZ3RyYW5zbGF0aW9uXCJcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICBdLFxuICAgICAgMVxuICAgICksXG4gICAgX3ZtLl92KFwiIFwiKSxcbiAgICBfYyhcbiAgICAgIFwiZGl2XCIsXG4gICAgICB7XG4gICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1zdHJpbmctdHJhbnNsYXRpb24tY29udGFpbmVyXCIsXG4gICAgICAgIGF0dHJzOiB7IGlkOiBcInRycC1wcmV2aWV3XCIgfSxcbiAgICAgICAgb246IHtcbiAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICBfdm0uaGFzVW5zYXZlZENoYW5nZXMoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtcbiAgICAgICAgX2MoXG4gICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtc3RyaW5nLXRyYW5zbGF0aW9uLWlubmVyLWNvbnRhaW5lclwiLFxuICAgICAgICAgICAgY2xhc3M6IHsgXCJ0cnAtc2NyZWVuLW92ZXJsYXlcIjogX3ZtLnNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2UgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgIFwiaDJcIixcbiAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJuYXYtdGFiLXdyYXBwZXJcIiB9LFxuICAgICAgICAgICAgICBfdm0uX2woX3ZtLnN0cmluZ1R5cGVzQ29uZmlnLCBmdW5jdGlvbih0YWIsIHRhYl9zbHVnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICAgICAgXCJyb3V0ZXItbGlua1wiLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFwidHJwLXRhYi1rZXktXCIgKyB0YWJfc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibmF2LXRhYlwiLFxuICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgIHRvOiB0YWJbXCJjYXRlZ29yeV9iYXNlZFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBcIi9cIiArIHRhYl9zbHVnICsgXCIvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogXCIvXCIgKyB0YWJfc2x1ZyArIFwiL1wiLFxuICAgICAgICAgICAgICAgICAgICAgIGlkOiBcInRycC10YWItXCIgKyB0YWJfc2x1Z1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3ModGFiW1widGFiX25hbWVcIl0pICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICBfYyhcInJvdXRlci12aWV3XCIsIHtcbiAgICAgICAgICAgICAgYXR0cnM6IHsgZGljdGlvbmFyeTogX3ZtLmRpY3Rpb25hcnksIHRvdGFsSXRlbXM6IF92bS50b3RhbEl0ZW1zIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXSxcbiAgICAgICAgICAxXG4gICAgICAgIClcbiAgICAgIF1cbiAgICApXG4gIF0pXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/string-translation.vue?vue&type=template&id=a5114cdc&\n");
1396
 
1397
  /***/ }),
1398
 
class-translate-press.php CHANGED
@@ -31,6 +31,7 @@ class TRP_Translate_Press{
31
  protected $string_translation_api_regular;
32
  protected $notifications;
33
  protected $search;
 
34
 
35
  public $active_pro_addons = array();
36
  public static $translate_press = null;
@@ -56,7 +57,7 @@ class TRP_Translate_Press{
56
  define( 'TRP_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
57
  define( 'TRP_PLUGIN_BASE', plugin_basename( __DIR__ . '/index.php' ) );
58
  define( 'TRP_PLUGIN_SLUG', 'translatepress-multilingual' );
59
- define( 'TRP_PLUGIN_VERSION', '1.7.5' );
60
 
61
  wp_cache_add_non_persistent_groups(array('trp'));
62
 
@@ -111,6 +112,7 @@ class TRP_Translate_Press{
111
  require_once TRP_PLUGIN_DIR . 'includes/string-translation/class-string-translation.php';
112
  require_once TRP_PLUGIN_DIR . 'includes/string-translation/class-string-translation-helper.php';
113
  require_once TRP_PLUGIN_DIR . 'includes/class-search.php';
 
114
  if ( did_action( 'elementor/loaded' ) )
115
  require_once TRP_PLUGIN_DIR . 'includes/class-elementor-language-for-blocks.php';
116
  }
@@ -145,6 +147,7 @@ class TRP_Translate_Press{
145
  $this->error_manager = new TRP_Error_Manager( $this->settings->get_settings() );
146
  $this->string_translation = new TRP_String_Translation( $this->settings->get_settings(), $this->loader );
147
  $this->search = new TRP_Search( $this->settings->get_settings() );
 
148
  }
149
 
150
  /**
@@ -225,6 +228,7 @@ class TRP_Translate_Press{
225
  $this->loader->add_action( 'wp_ajax_trp_get_similar_string_translation', $this->translation_memory, 'ajax_get_similar_string_translation' );
226
 
227
  $this->loader->add_filter( 'trp_get_existing_translations', $this->translation_manager, 'display_possible_db_errors', 20, 3 );
 
228
 
229
 
230
  $this->loader->add_action( 'wp_ajax_trp_process_js_strings_in_translation_editor', $this->translation_render, 'process_js_strings_in_translation_editor' );
@@ -236,6 +240,8 @@ class TRP_Translate_Press{
236
  $this->loader->add_action( 'admin_enqueue_scripts', $this->upgrade, 'enqueue_update_script', 10, 1 );
237
  $this->loader->add_action( 'wp_ajax_trp_update_database', $this->upgrade, 'trp_update_database' );
238
 
 
 
239
  /* add hooks for license operations */
240
  if( !empty( $this->active_pro_addons ) ) {
241
  $this->loader->add_action('admin_init', $this->plugin_updater, 'activate_license');
31
  protected $string_translation_api_regular;
32
  protected $notifications;
33
  protected $search;
34
+ protected $install_plugins;
35
 
36
  public $active_pro_addons = array();
37
  public static $translate_press = null;
57
  define( 'TRP_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
58
  define( 'TRP_PLUGIN_BASE', plugin_basename( __DIR__ . '/index.php' ) );
59
  define( 'TRP_PLUGIN_SLUG', 'translatepress-multilingual' );
60
+ define( 'TRP_PLUGIN_VERSION', '1.7.6' );
61
 
62
  wp_cache_add_non_persistent_groups(array('trp'));
63
 
112
  require_once TRP_PLUGIN_DIR . 'includes/string-translation/class-string-translation.php';
113
  require_once TRP_PLUGIN_DIR . 'includes/string-translation/class-string-translation-helper.php';
114
  require_once TRP_PLUGIN_DIR . 'includes/class-search.php';
115
+ require_once TRP_PLUGIN_DIR . 'includes/class-install-plugins.php';
116
  if ( did_action( 'elementor/loaded' ) )
117
  require_once TRP_PLUGIN_DIR . 'includes/class-elementor-language-for-blocks.php';
118
  }
147
  $this->error_manager = new TRP_Error_Manager( $this->settings->get_settings() );
148
  $this->string_translation = new TRP_String_Translation( $this->settings->get_settings(), $this->loader );
149
  $this->search = new TRP_Search( $this->settings->get_settings() );
150
+ $this->install_plugins = new TRP_Install_Plugins();
151
  }
152
 
153
  /**
228
  $this->loader->add_action( 'wp_ajax_trp_get_similar_string_translation', $this->translation_memory, 'ajax_get_similar_string_translation' );
229
 
230
  $this->loader->add_filter( 'trp_get_existing_translations', $this->translation_manager, 'display_possible_db_errors', 20, 3 );
231
+ $this->loader->add_action( 'wp_ajax_trp_save_editor_user_meta', $this->translation_manager, 'save_editor_user_meta', 10 );
232
 
233
 
234
  $this->loader->add_action( 'wp_ajax_trp_process_js_strings_in_translation_editor', $this->translation_render, 'process_js_strings_in_translation_editor' );
240
  $this->loader->add_action( 'admin_enqueue_scripts', $this->upgrade, 'enqueue_update_script', 10, 1 );
241
  $this->loader->add_action( 'wp_ajax_trp_update_database', $this->upgrade, 'trp_update_database' );
242
 
243
+ $this->loader->add_action( 'wp_ajax_trp_install_plugins', $this->install_plugins, 'install_plugins_request' );
244
+
245
  /* add hooks for license operations */
246
  if( !empty( $this->active_pro_addons ) ) {
247
  $this->loader->add_action('admin_init', $this->plugin_updater, 'activate_license');
includes/class-install-plugins.php ADDED
@@ -0,0 +1,129 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ class TRP_Install_Plugins {
5
+ public function get_plugin_slugs() {
6
+ $slugs = array(
7
+ 'pb' => array(
8
+ 'all_slugs' => array(
9
+ 'profile-builder/index.php', 'profile-builder-hobbyist/index.php', 'profile-builder-pro/index.php'
10
+ ),
11
+ 'install_slug' => 'profile-builder/index.php',
12
+ 'plugin_zip' => 'https://downloads.wordpress.org/plugin/profile-builder.zip'
13
+ ),
14
+ 'pms' => array(
15
+ 'all_slugs' => array(
16
+ 'paid-member-subscriptions/index.php'
17
+ ),
18
+ 'install_slug' => 'paid-member-subscriptions/index.php',
19
+ 'plugin_zip' => 'https://downloads.wordpress.org/plugin/paid-member-subscriptions.zip'
20
+ )
21
+ );
22
+
23
+ return apply_filters( 'trp_plugin_install_slugs', $slugs );
24
+ }
25
+
26
+ public function install_plugins_request(){
27
+ if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
28
+ check_ajax_referer( 'trp_install_plugins', 'security' );
29
+ if ( isset( $_POST['action'] ) && $_POST['action'] === 'trp_install_plugins' && !empty( $_POST['plugin_slug'] ) ) {
30
+ $plugin_slug = sanitize_text_field($_POST['plugin_slug']);
31
+ $short_slugs = $this->get_plugin_slugs();
32
+ if ( isset( $short_slugs[$plugin_slug]) ){
33
+ if ( $this->install_upgrade_activate($plugin_slug) ){
34
+ $message = esc_html__('Active', 'translatepress-multilingual');
35
+ }else{
36
+ $message = wp_kses( sprintf( __('Could not install. Try again from <a href="%s" >Plugins Dashboard.</a>', 'translatepress-multilingual'), admin_url('plugins.php') ), array('a' => array( 'href' => array() ) ) );
37
+ }
38
+ wp_die( trp_safe_json_encode( $message ));
39
+ }
40
+ }
41
+ }
42
+ wp_die();
43
+ }
44
+
45
+ public function install_upgrade_activate( $short_slug ) {
46
+ $short_slugs = $this->get_plugin_slugs();
47
+ $install_slug = $short_slugs[ $short_slug ]['install_slug'];
48
+ $plugin_zip = $short_slugs[ $short_slug ]['plugin_zip'];
49
+
50
+ if ( $this->is_plugin_installed( $short_slug ) ) {
51
+ $this->upgrade_plugin( $install_slug );
52
+ $installed = true;
53
+ } else {
54
+ $installed = $this->install_plugin( $plugin_zip );
55
+ }
56
+
57
+ if ( !is_wp_error( $installed ) && $installed ) {
58
+ $activate = activate_plugin( $install_slug );
59
+
60
+ if ( is_null( $activate ) ) {
61
+ return true;
62
+ }
63
+ }
64
+
65
+ return false;
66
+ }
67
+
68
+ public function is_plugin_installed( $short_slug ) {
69
+ $short_slugs = $this->get_plugin_slugs();
70
+ $all_slugs = $short_slugs[ $short_slug ]['all_slugs'];
71
+
72
+ if ( !function_exists( 'get_plugins' ) ) {
73
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
74
+ }
75
+ $all_plugins = get_plugins();
76
+
77
+ foreach( $all_slugs as $slug ) {
78
+ if ( !empty( $all_plugins[ $slug ] ) ) {
79
+ return true;
80
+ }
81
+ }
82
+
83
+ return false;
84
+ }
85
+
86
+ public function is_plugin_active($short_slug){
87
+
88
+ $short_slugs = $this->get_plugin_slugs();
89
+ $all_slugs = $short_slugs[ $short_slug ]['all_slugs'];
90
+
91
+ foreach( $all_slugs as $slug ) {
92
+ if ( is_plugin_active( $slug ) ) {
93
+ return true;
94
+ }
95
+ }
96
+
97
+ return false;
98
+ }
99
+
100
+ public function install_plugin( $plugin_zip ) {
101
+ include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
102
+ wp_cache_flush();
103
+ $upgrader = new Plugin_Upgrader();
104
+
105
+ // do not output any messages
106
+ $upgrader->skin = new Automatic_Upgrader_Skin();
107
+
108
+ $installed = $upgrader->install( $plugin_zip );
109
+ return $installed;
110
+ }
111
+
112
+ public function upgrade_plugin( $plugin_slug ) {
113
+ include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
114
+ wp_cache_flush();
115
+ $upgrader = new Plugin_Upgrader();
116
+
117
+ // do not output any messages
118
+ $upgrader->skin = new Automatic_Upgrader_Skin();
119
+
120
+ $upgraded = $upgrader->upgrade( $plugin_slug );
121
+ return $upgraded;
122
+ }
123
+ }
124
+
125
+ if( !function_exists( 'wppb_activate_plugin_redirect' ) ){
126
+ function wppb_activate_plugin_redirect(){
127
+ // do nothing, just override pb function in order to not redirect on activation
128
+ }
129
+ }
includes/class-settings.php CHANGED
@@ -130,6 +130,25 @@ class TRP_Settings{
130
  * Addons page content.
131
  */
132
  public function addons_page_content(){
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
133
  require_once TRP_PLUGIN_DIR . 'partials/addons-settings-page.php';
134
  }
135
 
@@ -381,6 +400,11 @@ class TRP_Settings{
381
  wp_enqueue_style( 'trp-select2-lib-css', TRP_PLUGIN_URL . 'assets/lib/select2-lib/dist/css/select2.min.css', array(), TRP_PLUGIN_VERSION );
382
 
383
  }
 
 
 
 
 
384
  }
385
 
386
  /**
130
  * Addons page content.
131
  */
132
  public function addons_page_content(){
133
+ $trp = TRP_Translate_Press::get_trp_instance();
134
+ $install_plugins = $trp->get_component('install_plugins');
135
+
136
+ $active_plugin = __('Active', 'translatepress-multilingual');
137
+ $inactive_plugin = __('Install & Activate', 'translatepress-multilingual');
138
+
139
+ $plugins = array( 'pb', 'pms' );
140
+ $plugin_settings = array();
141
+ foreach($plugins as $plugin ){
142
+ $plugin_settings[$plugin] = array();
143
+ if ( $install_plugins->is_plugin_active( $plugin ) ) {
144
+ $plugin_settings[$plugin]['install_button'] = $active_plugin;
145
+ $plugin_settings[$plugin]['disabled'] = 'disabled';
146
+ }else{
147
+ $plugin_settings[$plugin]['install_button'] = $inactive_plugin;
148
+ $plugin_settings[$plugin]['disabled'] = '';
149
+ }
150
+ }
151
+
152
  require_once TRP_PLUGIN_DIR . 'partials/addons-settings-page.php';
153
  }
154
 
400
  wp_enqueue_style( 'trp-select2-lib-css', TRP_PLUGIN_URL . 'assets/lib/select2-lib/dist/css/select2.min.css', array(), TRP_PLUGIN_VERSION );
401
 
402
  }
403
+
404
+ if( in_array( $hook, array( 'admin_page_trp_addons_page' ) ) ) {
405
+ wp_enqueue_script( 'trp-add-ons-script', TRP_PLUGIN_URL . 'assets/js/trp-back-end-add-ons.js', array( ), TRP_PLUGIN_VERSION, true );
406
+ wp_localize_script( 'trp-add-ons-script', 'trp_addons_localized', array( 'admin_ajax_url' => admin_url( 'admin-ajax.php' ), 'nonce' => wp_create_nonce( 'trp_install_plugins' )) );
407
+ }
408
  }
409
 
410
  /**
includes/class-translation-manager.php CHANGED
@@ -123,6 +123,8 @@ class TRP_Translation_Manager {
123
  'previous_title_attr' => esc_attr__( 'Navigate to previous string in dropdown list. Shortcut: CTRL(⌘) + ALT + Left Arrow', 'translatepress-multilingual' ),
124
  'discard_all_title_attr' => esc_attr__( 'Discard all changes. Shortcut: CTRL(⌘) + ALT + Z', 'translatepress-multilingual' ),
125
  'discard_individual_changes_title_attribute' => esc_attr__( 'Discard changes to this text box. To discard changes to all text boxes use shortcut: CTRL(⌘) + ALT + Z', 'translatepress-multilingual' ),
 
 
126
 
127
  'split_confirmation' => esc_js( __( 'Are you sure you want to split this phrase into smaller parts?', 'translatepress-multilingual' ) ),
128
  'translation_not_loaded_yet' => wp_kses( __( 'This string is not ready for translation yet. <br>Try again in a moment...', 'translatepress-multilingual' ), array( 'br' => array() ) ),
@@ -152,6 +154,67 @@ class TRP_Translation_Manager {
152
  );
153
  }
154
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
155
  public function string_groups() {
156
  $string_groups = array(
157
  'slugs' => esc_html__( 'Slugs', 'translatepress-multilingual' ),
@@ -176,6 +239,7 @@ class TRP_Translation_Manager {
176
  'mergetbnonce' => wp_create_nonce( 'merge_translation_block' ),
177
  'logged_out' => wp_create_nonce( 'trp_view_aslogged_out' . get_current_user_id() ),
178
  'getsimilarstring' => wp_create_nonce( 'getsimilarstring' ),
 
179
  );
180
 
181
  return apply_filters( 'trp_editor_nonces', $nonces );
@@ -317,7 +381,9 @@ class TRP_Translation_Manager {
317
  'merge_rules' => $this->get_merge_rules(),
318
  'paid_version' => trp_is_paid_version() ? 'true' : 'false',
319
  'flags_path' => $flags_path,
320
- 'editors_navigation' => $editors_navigation
 
 
321
  );
322
 
323
  return apply_filters( 'trp_editor_data', $trp_editor_data );
123
  'previous_title_attr' => esc_attr__( 'Navigate to previous string in dropdown list. Shortcut: CTRL(⌘) + ALT + Left Arrow', 'translatepress-multilingual' ),
124
  'discard_all_title_attr' => esc_attr__( 'Discard all changes. Shortcut: CTRL(⌘) + ALT + Z', 'translatepress-multilingual' ),
125
  'discard_individual_changes_title_attribute' => esc_attr__( 'Discard changes to this text box. To discard changes to all text boxes use shortcut: CTRL(⌘) + ALT + Z', 'translatepress-multilingual' ),
126
+ 'dismiss_tooltip_title_attribute' => esc_attr__( 'Dismiss tooltip', 'translatepress-multilingual' ),
127
+ 'quick_intro_title_attribute' => esc_attr__( 'Quick Intro', 'translatepress-multilingual' ),
128
 
129
  'split_confirmation' => esc_js( __( 'Are you sure you want to split this phrase into smaller parts?', 'translatepress-multilingual' ) ),
130
  'translation_not_loaded_yet' => wp_kses( __( 'This string is not ready for translation yet. <br>Try again in a moment...', 'translatepress-multilingual' ), array( 'br' => array() ) ),
154
  );
155
  }
156
 
157
+ public function get_help_panel_content() {
158
+ $edit_icon = TRP_PLUGIN_URL . 'assets/images/edit-icon.png';
159
+ return apply_filters( 'trp_help_panel_content', array(
160
+ array(
161
+ 'title' => esc_html__( 'Quick Intro', 'translatepress-multilingual' ),
162
+ 'content' => wp_kses( sprintf( __( 'Hover any text on the page, click <img src="%s" class="trp-edit-icon-inline">, then modify the translation in the sidebar.', 'translatepress-multilingual' ), $edit_icon ),
163
+ array( 'img' => array( 'src' => array(), 'class' => array() ) ) ),
164
+ 'event' => 'trp_hover_text_help_panel'
165
+ ),
166
+ array(
167
+ 'title' => esc_html__( 'Quick Intro', 'translatepress-multilingual' ),
168
+ 'content' => wp_kses( __( 'Don\'t forget to Save Translation. Use keyboard shortcut CTRL(⌘) + S', 'translatepress-multilingual' ), array() ),
169
+ 'event' => 'trp_save_translation_help_panel'
170
+ ),
171
+ array(
172
+ 'title' => esc_html__( 'Quick Intro', 'translatepress-multilingual' ),
173
+ 'content' => wp_kses( __( 'Switch language to see the translation changes directly on the page.', 'translatepress-multilingual' ), array() ),
174
+ 'event' => 'trp_switch_language_help_panel'
175
+ ),
176
+ array(
177
+ 'title' => esc_html__( 'Quick Intro', 'translatepress-multilingual' ),
178
+ 'content' => wp_kses( __( 'Search for any text in this page in the dropdown.', 'translatepress-multilingual' ), array() ),
179
+ 'event' => 'trp_search_string_help_panel'
180
+ )
181
+ ) );
182
+ }
183
+
184
+ public function get_default_editor_user_meta(){
185
+ return apply_filters( 'trp_default_editor_user_meta', array(
186
+ 'helpPanelOpened' => false,
187
+ 'dismissTooltipSave' => false,
188
+ 'dismissTooltipNext' => false,
189
+ 'dismissTooltipPrevious' => false,
190
+ 'dismissTooltipDismissAll' => false,
191
+ ) );
192
+ }
193
+
194
+ public function get_editor_user_meta() {
195
+ $user_meta = get_user_meta( get_current_user_id(), 'trp_editor_user_meta', true );
196
+ $user_meta = wp_parse_args( $user_meta, $this->get_default_editor_user_meta() );
197
+ return apply_filters( 'trp_editor_user_meta', $user_meta );
198
+ }
199
+
200
+ public function save_editor_user_meta(){
201
+ if ( defined( 'DOING_AJAX' ) && DOING_AJAX && current_user_can( apply_filters( 'trp_translating_capability', 'manage_options' ) ) ) {
202
+ check_ajax_referer( 'trp_editor_user_meta', 'security' );
203
+ if ( isset( $_POST['action'] ) && $_POST['action'] === 'trp_save_editor_user_meta' && !empty( $_POST['user_meta'] ) ) {
204
+ $submitted_user_meta = json_decode(stripslashes($_POST['user_meta']), true);
205
+ $existing_user_meta = $this->get_editor_user_meta();
206
+ foreach( $existing_user_meta as $key => $existing ){
207
+ if ( isset( $submitted_user_meta[$key] ) ) {
208
+ $existing_user_meta[ $key ] = (bool)$submitted_user_meta[ $key ];
209
+ }
210
+ }
211
+ update_user_meta(get_current_user_id(), 'trp_editor_user_meta', $existing_user_meta );
212
+ }
213
+ }
214
+ echo trp_safe_json_encode( array() );
215
+ die();
216
+ }
217
+
218
  public function string_groups() {
219
  $string_groups = array(
220
  'slugs' => esc_html__( 'Slugs', 'translatepress-multilingual' ),
239
  'mergetbnonce' => wp_create_nonce( 'merge_translation_block' ),
240
  'logged_out' => wp_create_nonce( 'trp_view_aslogged_out' . get_current_user_id() ),
241
  'getsimilarstring' => wp_create_nonce( 'getsimilarstring' ),
242
+ 'trp_editor_user_meta' => wp_create_nonce( 'trp_editor_user_meta' )
243
  );
244
 
245
  return apply_filters( 'trp_editor_nonces', $nonces );
381
  'merge_rules' => $this->get_merge_rules(),
382
  'paid_version' => trp_is_paid_version() ? 'true' : 'false',
383
  'flags_path' => $flags_path,
384
+ 'editors_navigation' => $editors_navigation,
385
+ 'help_panel_content' => $this->get_help_panel_content(),
386
+ 'user_meta' => $this->get_editor_user_meta(),
387
  );
388
 
389
  return apply_filters( 'trp_editor_data', $trp_editor_data );
includes/class-url-converter.php CHANGED
@@ -312,10 +312,10 @@ class TRP_Url_Converter {
312
  trp_bulk_debug($debug, array('url' => $url, 'new url' => $new_url, 'found post id' => $post_id, 'url type' => 'based on permalink', 'for language' => $TRP_LANGUAGE));
313
  $TRP_LANGUAGE = $trp_language_copy;
314
 
315
- }else if( isset( $trp_current_url_term_slug ) && isset($trp_current_url_taxonomy) ) { // check here if it is a term link
316
  $TRP_LANGUAGE = $language;
317
- $check_term_link = get_term_link( $trp_current_url_term_slug, $trp_current_url_taxonomy);
318
- if( !is_wp_error($check_term_link) )
319
  $new_url = $check_term_link;
320
  else
321
  $new_url = $url;
312
  trp_bulk_debug($debug, array('url' => $url, 'new url' => $new_url, 'found post id' => $post_id, 'url type' => 'based on permalink', 'for language' => $TRP_LANGUAGE));
313
  $TRP_LANGUAGE = $trp_language_copy;
314
 
315
+ }else if( isset( $trp_current_url_term_slug ) && isset($trp_current_url_taxonomy) && $url == get_term_link( $trp_current_url_term_slug, $trp_current_url_taxonomy) ) { // check here if it is a term link
316
  $TRP_LANGUAGE = $language;
317
+ $check_term_link = get_term_link($trp_current_url_term_slug, $trp_current_url_taxonomy);
318
+ if (!is_wp_error($check_term_link))
319
  $new_url = $check_term_link;
320
  else
321
  $new_url = $url;
index.php CHANGED
@@ -3,14 +3,14 @@
3
  Plugin Name: TranslatePress - Multilingual
4
  Plugin URI: https://translatepress.com/
5
  Description: Experience a better way of translating your WordPress site using a visual front-end translation editor, with full support for WooCommerce and site builders.
6
- Version: 1.7.5
7
  Author: Cozmoslabs, Razvan Mocanu, Madalin Ungureanu, Cristophor Hurduban
8
  Author URI: https://cozmoslabs.com/
9
  Text Domain: translatepress-multilingual
10
  Domain Path: /languages
11
  License: GPL2
12
  WC requires at least: 2.5.0
13
- WC tested up to: 4.1.1
14
 
15
  == Copyright ==
16
  Copyright 2017 Cozmoslabs (www.cozmoslabs.com)
3
  Plugin Name: TranslatePress - Multilingual
4
  Plugin URI: https://translatepress.com/
5
  Description: Experience a better way of translating your WordPress site using a visual front-end translation editor, with full support for WooCommerce and site builders.
6
+ Version: 1.7.6
7
  Author: Cozmoslabs, Razvan Mocanu, Madalin Ungureanu, Cristophor Hurduban
8
  Author URI: https://cozmoslabs.com/
9
  Text Domain: translatepress-multilingual
10
  Domain Path: /languages
11
  License: GPL2
12
  WC requires at least: 2.5.0
13
+ WC tested up to: 4.2
14
 
15
  == Copyright ==
16
  Copyright 2017 Cozmoslabs (www.cozmoslabs.com)
languages/translatepress-multilingual.catalog.php CHANGED
@@ -58,6 +58,7 @@
58
  <?php __("Test it to see if everything is working. If something went wrong, you can restore the backup that you've made at the first step. Check if no more errors occur while browsing your website in a translated language. Look at the timestamps of the errors to make sure you are not seeing the old errors. Only the most recent 5 errors are displayed.", "translatepress-multilingual"); ?>
59
  <?php __("Plan C.", "translatepress-multilingual"); ?>
60
  <?php __("If your problem still isn't solved, try asking your hosting about your errors. The most common issue is missing permissions for the SQL user, such as the Create Tables permission.", "translatepress-multilingual"); ?>
 
61
  <?php __("Automatic Translation", "translatepress-multilingual"); ?>
62
  <?php __("DeepL", "translatepress-multilingual"); ?>
63
  <?php __("You are not using a permalink structure! Please <a href=\"%s\">enable</a> one or install our <a href=\"%s\">\"Language by GET parameter\"</a> addon, so that TranslatePress can function properly.", "translatepress-multilingual"); ?>
@@ -76,6 +77,7 @@
76
  <?php __("Bottom Left", "translatepress-multilingual"); ?>
77
  <?php __("Top Right", "translatepress-multilingual"); ?>
78
  <?php __("Top Left", "translatepress-multilingual"); ?>
 
79
  <?php __("Current Language", "translatepress-multilingual"); ?>
80
  <?php __("General", "translatepress-multilingual"); ?>
81
  <?php __("Translate Site", "translatepress-multilingual"); ?>
@@ -117,6 +119,8 @@
117
  <?php __("Navigate to previous string in dropdown list. Shortcut: CTRL(⌘) + ALT + Left Arrow", "translatepress-multilingual"); ?>
118
  <?php __("Discard all changes. Shortcut: CTRL(⌘) + ALT + Z", "translatepress-multilingual"); ?>
119
  <?php __("Discard changes to this text box. To discard changes to all text boxes use shortcut: CTRL(⌘) + ALT + Z", "translatepress-multilingual"); ?>
 
 
120
  <?php __("Are you sure you want to split this phrase into smaller parts?", "translatepress-multilingual"); ?>
121
  <?php __("This string is not ready for translation yet. <br>Try again in a moment...", "translatepress-multilingual"); ?>
122
  <?php __("For this option to work, please update the Browse as other role add-on to the latest version.", "translatepress-multilingual"); ?>
@@ -137,6 +141,10 @@
137
  <?php __("No available suggestions", "translatepress-multilingual"); ?>
138
  <?php __("Suggestions from translation memory", "translatepress-multilingual"); ?>
139
  <?php __("Click to Copy", "translatepress-multilingual"); ?>
 
 
 
 
140
  <?php __("Slugs", "translatepress-multilingual"); ?>
141
  <?php __("Meta Information", "translatepress-multilingual"); ?>
142
  <?php __("String List", "translatepress-multilingual"); ?>
@@ -193,6 +201,12 @@
193
  <?php __("Create translator accounts for new users or allow existing users <br/>that are not administrators to translate your website.", "translatepress-multilingual"); ?>
194
  <?php __("Navigate your website just like a particular user role would. <br/>Really useful for dynamic content or hidden content that appears for particular users.", "translatepress-multilingual"); ?>
195
  <?php __("Configure different menu items for different languages.", "translatepress-multilingual"); ?>
 
 
 
 
 
 
196
  <?php __("TranslatePress Advanced Settings", "translatepress-multilingual"); ?>
197
  <?php __("Save Changes", "translatepress-multilingual"); ?>
198
  <?php __("TranslatePress Errors", "translatepress-multilingual"); ?>
58
  <?php __("Test it to see if everything is working. If something went wrong, you can restore the backup that you've made at the first step. Check if no more errors occur while browsing your website in a translated language. Look at the timestamps of the errors to make sure you are not seeing the old errors. Only the most recent 5 errors are displayed.", "translatepress-multilingual"); ?>
59
  <?php __("Plan C.", "translatepress-multilingual"); ?>
60
  <?php __("If your problem still isn't solved, try asking your hosting about your errors. The most common issue is missing permissions for the SQL user, such as the Create Tables permission.", "translatepress-multilingual"); ?>
61
+ <?php __("Could not install. Try again from <a href=\"%s\" >Plugins Dashboard.</a>", "translatepress-multilingual"); ?>
62
  <?php __("Automatic Translation", "translatepress-multilingual"); ?>
63
  <?php __("DeepL", "translatepress-multilingual"); ?>
64
  <?php __("You are not using a permalink structure! Please <a href=\"%s\">enable</a> one or install our <a href=\"%s\">\"Language by GET parameter\"</a> addon, so that TranslatePress can function properly.", "translatepress-multilingual"); ?>
77
  <?php __("Bottom Left", "translatepress-multilingual"); ?>
78
  <?php __("Top Right", "translatepress-multilingual"); ?>
79
  <?php __("Top Left", "translatepress-multilingual"); ?>
80
+ <?php __("Install & Activate", "translatepress-multilingual"); ?>
81
  <?php __("Current Language", "translatepress-multilingual"); ?>
82
  <?php __("General", "translatepress-multilingual"); ?>
83
  <?php __("Translate Site", "translatepress-multilingual"); ?>
119
  <?php __("Navigate to previous string in dropdown list. Shortcut: CTRL(⌘) + ALT + Left Arrow", "translatepress-multilingual"); ?>
120
  <?php __("Discard all changes. Shortcut: CTRL(⌘) + ALT + Z", "translatepress-multilingual"); ?>
121
  <?php __("Discard changes to this text box. To discard changes to all text boxes use shortcut: CTRL(⌘) + ALT + Z", "translatepress-multilingual"); ?>
122
+ <?php __("Dismiss tooltip", "translatepress-multilingual"); ?>
123
+ <?php __("Quick Intro", "translatepress-multilingual"); ?>
124
  <?php __("Are you sure you want to split this phrase into smaller parts?", "translatepress-multilingual"); ?>
125
  <?php __("This string is not ready for translation yet. <br>Try again in a moment...", "translatepress-multilingual"); ?>
126
  <?php __("For this option to work, please update the Browse as other role add-on to the latest version.", "translatepress-multilingual"); ?>
141
  <?php __("No available suggestions", "translatepress-multilingual"); ?>
142
  <?php __("Suggestions from translation memory", "translatepress-multilingual"); ?>
143
  <?php __("Click to Copy", "translatepress-multilingual"); ?>
144
+ <?php __("Hover any text on the page, click <img src=\"%s\" class=\"trp-edit-icon-inline\">, then modify the translation in the sidebar.", "translatepress-multilingual"); ?>
145
+ <?php __("Don't forget to Save Translation. Use keyboard shortcut CTRL(⌘) + S", "translatepress-multilingual"); ?>
146
+ <?php __("Switch language to see the translation changes directly on the page.", "translatepress-multilingual"); ?>
147
+ <?php __("Search for any text in this page in the dropdown.", "translatepress-multilingual"); ?>
148
  <?php __("Slugs", "translatepress-multilingual"); ?>
149
  <?php __("Meta Information", "translatepress-multilingual"); ?>
150
  <?php __("String List", "translatepress-multilingual"); ?>
201
  <?php __("Create translator accounts for new users or allow existing users <br/>that are not administrators to translate your website.", "translatepress-multilingual"); ?>
202
  <?php __("Navigate your website just like a particular user role would. <br/>Really useful for dynamic content or hidden content that appears for particular users.", "translatepress-multilingual"); ?>
203
  <?php __("Configure different menu items for different languages.", "translatepress-multilingual"); ?>
204
+ <?php __("Recommended Plugins by the same developers", "translatepress-multilingual"); ?>
205
+ <?php __("A short list of plugins you can use to extend your website.", "translatepress-multilingual"); ?>
206
+ <?php __("Capture more user information on the registration form with the help of Profile Builder's custom user profile fields and/or add an Email Confirmation process to verify your customers accounts.", "translatepress-multilingual"); ?>
207
+ <?php __("Learn More", "translatepress-multilingual"); ?>
208
+ <?php __("Installing...", "translatepress-multilingual"); ?>
209
+ <?php __("Accept user payments, create subscription plans and restrict content on your membership site.", "translatepress-multilingual"); ?>
210
  <?php __("TranslatePress Advanced Settings", "translatepress-multilingual"); ?>
211
  <?php __("Save Changes", "translatepress-multilingual"); ?>
212
  <?php __("TranslatePress Errors", "translatepress-multilingual"); ?>
languages/translatepress-multilingual.pot CHANGED
@@ -13,7 +13,7 @@ msgstr ""
13
  "X-Poedit-SourceCharset: UTF-8\n"
14
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
 
16
- #: ../tp-add-on-extra-languages/class-extra-languages.php:57, ../translatepress/includes/class-settings.php:378
17
  msgid "Error! Duplicate URL slug values."
18
  msgstr ""
19
 
@@ -89,7 +89,7 @@ msgstr ""
89
  msgid "Slug"
90
  msgstr ""
91
 
92
- #: ../tp-add-on-extra-languages/partials/language-selector-pro.php:10
93
  msgid "Active"
94
  msgstr ""
95
 
@@ -249,6 +249,10 @@ msgstr ""
249
  msgid "If your problem still isn't solved, try asking your hosting about your errors. The most common issue is missing permissions for the SQL user, such as the Create Tables permission."
250
  msgstr ""
251
 
 
 
 
 
252
  #: ../translatepress/includes/class-machine-translation-tab.php:22
253
  msgid "Automatic Translation"
254
  msgstr ""
@@ -321,31 +325,35 @@ msgstr ""
321
  msgid "Top Left"
322
  msgstr ""
323
 
324
- #: ../translatepress/includes/class-settings.php:414
 
 
 
 
325
  msgid "Current Language"
326
  msgstr ""
327
 
328
- #: ../translatepress/includes/class-settings.php:455
329
  msgid "General"
330
  msgstr ""
331
 
332
- #: ../translatepress/includes/class-settings.php:460, ../translatepress/includes/class-translation-manager.php:351
333
  msgid "Translate Site"
334
  msgstr ""
335
 
336
- #: ../translatepress/includes/class-settings.php:465
337
  msgid "Addons"
338
  msgstr ""
339
 
340
- #: ../translatepress/includes/class-settings.php:473
341
  msgid "License"
342
  msgstr ""
343
 
344
- #: ../translatepress/includes/class-settings.php:501, ../translatepress/includes/class-translation-manager.php:383
345
  msgid "Settings"
346
  msgstr ""
347
 
348
- #: ../translatepress/includes/class-settings.php:505
349
  msgid "Pro Features"
350
  msgstr ""
351
 
@@ -485,135 +493,159 @@ msgstr ""
485
  msgid "Discard changes to this text box. To discard changes to all text boxes use shortcut: CTRL(⌘) + ALT + Z"
486
  msgstr ""
487
 
488
- #: ../translatepress/includes/class-translation-manager.php:127
 
 
 
 
 
 
 
 
489
  msgid "Are you sure you want to split this phrase into smaller parts?"
490
  msgstr ""
491
 
492
- #: ../translatepress/includes/class-translation-manager.php:128
493
  msgid "This string is not ready for translation yet. <br>Try again in a moment..."
494
  msgstr ""
495
 
496
- #: ../translatepress/includes/class-translation-manager.php:130
497
  msgid "For this option to work, please update the Browse as other role add-on to the latest version."
498
  msgstr ""
499
 
500
- #: ../translatepress/includes/class-translation-manager.php:131
501
  msgid "To translate slugs, please update the SEO Pack add-on to the latest version."
502
  msgstr ""
503
 
504
- #: ../translatepress/includes/class-translation-manager.php:134
505
  msgid "You can add a new language from <a href=\"%s\">Settings->TranslatePress</a>"
506
  msgstr ""
507
 
508
- #: ../translatepress/includes/class-translation-manager.php:135
509
  msgid "However, you can still use TranslatePress to <strong style=\"background: #f5fb9d;\">modify gettext strings</strong> available in your page."
510
  msgstr ""
511
 
512
- #: ../translatepress/includes/class-translation-manager.php:136
513
  msgid "Strings that are user-created cannot be modified, only those from themes and plugins."
514
  msgstr ""
515
 
516
- #: ../translatepress/includes/class-translation-manager.php:138
517
  msgid "Extra Translation Features"
518
  msgstr ""
519
 
520
- #: ../translatepress/includes/class-translation-manager.php:139
521
  msgid "Support for 221 Extra Languages"
522
  msgstr ""
523
 
524
- #: ../translatepress/includes/class-translation-manager.php:140
525
  msgid "Yoast SEO support"
526
  msgstr ""
527
 
528
- #: ../translatepress/includes/class-translation-manager.php:141
529
  msgid "Translate SEO Title, Description, Slug"
530
  msgstr ""
531
 
532
- #: ../translatepress/includes/class-translation-manager.php:142
533
  msgid "Publish only when translation is complete"
534
  msgstr ""
535
 
536
- #: ../translatepress/includes/class-translation-manager.php:143
537
  msgid "Translate by Browsing as User Role"
538
  msgstr ""
539
 
540
- #: ../translatepress/includes/class-translation-manager.php:144
541
  msgid "Different Menu Items for each Language"
542
  msgstr ""
543
 
544
- #: ../translatepress/includes/class-translation-manager.php:145
545
  msgid "Automatic User Language Detection"
546
  msgstr ""
547
 
548
- #: ../translatepress/includes/class-translation-manager.php:146
549
  msgid "Supported By Real People"
550
  msgstr ""
551
 
552
- #: ../translatepress/includes/class-translation-manager.php:147
553
  msgid "Find Out More"
554
  msgstr ""
555
 
556
- #: ../translatepress/includes/class-translation-manager.php:149
557
  msgid "No available suggestions"
558
  msgstr ""
559
 
560
- #: ../translatepress/includes/class-translation-manager.php:150
561
  msgid "Suggestions from translation memory"
562
  msgstr ""
563
 
564
- #: ../translatepress/includes/class-translation-manager.php:151
565
  msgid "Click to Copy"
566
  msgstr ""
567
 
568
- #: ../translatepress/includes/class-translation-manager.php:157, ../tp-add-on-seo-pack/includes/string-translation/class-string-translation-seo.php:12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
569
  msgid "Slugs"
570
  msgstr ""
571
 
572
- #: ../translatepress/includes/class-translation-manager.php:158
573
  msgid "Meta Information"
574
  msgstr ""
575
 
576
- #: ../translatepress/includes/class-translation-manager.php:159
577
  msgid "String List"
578
  msgstr ""
579
 
580
- #: ../translatepress/includes/class-translation-manager.php:160
581
  msgid "Gettext Strings"
582
  msgstr ""
583
 
584
- #: ../translatepress/includes/class-translation-manager.php:161
585
  msgid "Images"
586
  msgstr ""
587
 
588
- #: ../translatepress/includes/class-translation-manager.php:162
589
  msgid "Dynamically Added Strings"
590
  msgstr ""
591
 
592
- #: ../translatepress/includes/class-translation-manager.php:195
593
  msgid "Visual Editor"
594
  msgstr ""
595
 
596
- #: ../translatepress/includes/class-translation-manager.php:201
597
  msgid "String Translation"
598
  msgstr ""
599
 
600
- #: ../translatepress/includes/class-translation-manager.php:279
601
  msgid "Current User"
602
  msgstr ""
603
 
604
- #: ../translatepress/includes/class-translation-manager.php:280
605
  msgid "Logged Out"
606
  msgstr ""
607
 
608
- #: ../translatepress/includes/class-translation-manager.php:364
609
  msgid "Translate Page"
610
  msgstr ""
611
 
612
- #: ../translatepress/includes/class-translation-manager.php:1089
613
  msgid "Security check"
614
  msgstr ""
615
 
616
- #: ../translatepress/includes/class-translation-manager.php:1161
617
  msgid "<strong>Warning:</strong> Some strings have possibly incorrectly encoded characters. This may result in breaking the queries, rendering the page untranslated in live mode. Consider revising the following strings or their method of outputting."
618
  msgstr ""
619
 
@@ -745,50 +777,74 @@ msgstr ""
745
  msgid "<strong>TranslatePress</strong> requires <strong><a href=\"http://php.net/manual/en/book.mbstring.php\">Multibyte String PHP library</a></strong>. Please contact your server administrator to install it on your server."
746
  msgstr ""
747
 
748
- #: ../translatepress/partials/addons-settings-page.php:8
749
  msgid "Advanced Addons"
750
  msgstr ""
751
 
752
- #: ../translatepress/partials/addons-settings-page.php:9
753
  msgid "These addons extend your translation plugin and are available in the Developer, Business and Personal plans."
754
  msgstr ""
755
 
756
- #: ../translatepress/partials/addons-settings-page.php:17
757
  msgid "SEO support for page slug, page title, description and facebook and twitter social graph information. </br> The HTML lang attribute is properly set."
758
  msgstr ""
759
 
760
- #: ../translatepress/partials/addons-settings-page.php:25
761
  msgid "Add as many languages as you need for your project to go global.<br>Publish your language only when all your translations are done."
762
  msgstr ""
763
 
764
- #: ../translatepress/partials/addons-settings-page.php:31
765
  msgid "Pro Addons"
766
  msgstr ""
767
 
768
- #: ../translatepress/partials/addons-settings-page.php:32
769
  msgid "These addons extend your translation plugin and are available in the Business and Developer plans."
770
  msgstr ""
771
 
772
- #: ../translatepress/partials/addons-settings-page.php:40
773
  msgid "Automatically translate your website through the DeepL API."
774
  msgstr ""
775
 
776
- #: ../translatepress/partials/addons-settings-page.php:48
777
  msgid "Automatically redirects new visitors to their preferred language based on browser settings or IP address</br> and remembers the last visited language."
778
  msgstr ""
779
 
780
- #: ../translatepress/partials/addons-settings-page.php:56
781
  msgid "Create translator accounts for new users or allow existing users <br/>that are not administrators to translate your website."
782
  msgstr ""
783
 
784
- #: ../translatepress/partials/addons-settings-page.php:64
785
  msgid "Navigate your website just like a particular user role would. <br/>Really useful for dynamic content or hidden content that appears for particular users."
786
  msgstr ""
787
 
788
- #: ../translatepress/partials/addons-settings-page.php:72
789
  msgid "Configure different menu items for different languages."
790
  msgstr ""
791
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
792
  #: ../translatepress/partials/advanced-settings-page.php:5
793
  msgid "TranslatePress Advanced Settings"
794
  msgstr ""
13
  "X-Poedit-SourceCharset: UTF-8\n"
14
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
 
16
+ #: ../tp-add-on-extra-languages/class-extra-languages.php:57, ../translatepress/includes/class-settings.php:397
17
  msgid "Error! Duplicate URL slug values."
18
  msgstr ""
19
 
89
  msgid "Slug"
90
  msgstr ""
91
 
92
+ #: ../tp-add-on-extra-languages/partials/language-selector-pro.php:10, ../translatepress/includes/class-install-plugins.php:34, ../translatepress/includes/class-settings.php:136
93
  msgid "Active"
94
  msgstr ""
95
 
249
  msgid "If your problem still isn't solved, try asking your hosting about your errors. The most common issue is missing permissions for the SQL user, such as the Create Tables permission."
250
  msgstr ""
251
 
252
+ #: ../translatepress/includes/class-install-plugins.php:36
253
+ msgid "Could not install. Try again from <a href=\"%s\" >Plugins Dashboard.</a>"
254
+ msgstr ""
255
+
256
  #: ../translatepress/includes/class-machine-translation-tab.php:22
257
  msgid "Automatic Translation"
258
  msgstr ""
325
  msgid "Top Left"
326
  msgstr ""
327
 
328
+ #: ../translatepress/includes/class-settings.php:137
329
+ msgid "Install & Activate"
330
+ msgstr ""
331
+
332
+ #: ../translatepress/includes/class-settings.php:438
333
  msgid "Current Language"
334
  msgstr ""
335
 
336
+ #: ../translatepress/includes/class-settings.php:479
337
  msgid "General"
338
  msgstr ""
339
 
340
+ #: ../translatepress/includes/class-settings.php:484, ../translatepress/includes/class-translation-manager.php:417
341
  msgid "Translate Site"
342
  msgstr ""
343
 
344
+ #: ../translatepress/includes/class-settings.php:489
345
  msgid "Addons"
346
  msgstr ""
347
 
348
+ #: ../translatepress/includes/class-settings.php:497
349
  msgid "License"
350
  msgstr ""
351
 
352
+ #: ../translatepress/includes/class-settings.php:525, ../translatepress/includes/class-translation-manager.php:449
353
  msgid "Settings"
354
  msgstr ""
355
 
356
+ #: ../translatepress/includes/class-settings.php:529
357
  msgid "Pro Features"
358
  msgstr ""
359
 
493
  msgid "Discard changes to this text box. To discard changes to all text boxes use shortcut: CTRL(⌘) + ALT + Z"
494
  msgstr ""
495
 
496
+ #: ../translatepress/includes/class-translation-manager.php:126
497
+ msgid "Dismiss tooltip"
498
+ msgstr ""
499
+
500
+ #: ../translatepress/includes/class-translation-manager.php:127, ../translatepress/includes/class-translation-manager.php:161, ../translatepress/includes/class-translation-manager.php:167, ../translatepress/includes/class-translation-manager.php:172, ../translatepress/includes/class-translation-manager.php:177
501
+ msgid "Quick Intro"
502
+ msgstr ""
503
+
504
+ #: ../translatepress/includes/class-translation-manager.php:129
505
  msgid "Are you sure you want to split this phrase into smaller parts?"
506
  msgstr ""
507
 
508
+ #: ../translatepress/includes/class-translation-manager.php:130
509
  msgid "This string is not ready for translation yet. <br>Try again in a moment..."
510
  msgstr ""
511
 
512
+ #: ../translatepress/includes/class-translation-manager.php:132
513
  msgid "For this option to work, please update the Browse as other role add-on to the latest version."
514
  msgstr ""
515
 
516
+ #: ../translatepress/includes/class-translation-manager.php:133
517
  msgid "To translate slugs, please update the SEO Pack add-on to the latest version."
518
  msgstr ""
519
 
520
+ #: ../translatepress/includes/class-translation-manager.php:136
521
  msgid "You can add a new language from <a href=\"%s\">Settings->TranslatePress</a>"
522
  msgstr ""
523
 
524
+ #: ../translatepress/includes/class-translation-manager.php:137
525
  msgid "However, you can still use TranslatePress to <strong style=\"background: #f5fb9d;\">modify gettext strings</strong> available in your page."
526
  msgstr ""
527
 
528
+ #: ../translatepress/includes/class-translation-manager.php:138
529
  msgid "Strings that are user-created cannot be modified, only those from themes and plugins."
530
  msgstr ""
531
 
532
+ #: ../translatepress/includes/class-translation-manager.php:140
533
  msgid "Extra Translation Features"
534
  msgstr ""
535
 
536
+ #: ../translatepress/includes/class-translation-manager.php:141
537
  msgid "Support for 221 Extra Languages"
538
  msgstr ""
539
 
540
+ #: ../translatepress/includes/class-translation-manager.php:142
541
  msgid "Yoast SEO support"
542
  msgstr ""
543
 
544
+ #: ../translatepress/includes/class-translation-manager.php:143
545
  msgid "Translate SEO Title, Description, Slug"
546
  msgstr ""
547
 
548
+ #: ../translatepress/includes/class-translation-manager.php:144
549
  msgid "Publish only when translation is complete"
550
  msgstr ""
551
 
552
+ #: ../translatepress/includes/class-translation-manager.php:145
553
  msgid "Translate by Browsing as User Role"
554
  msgstr ""
555
 
556
+ #: ../translatepress/includes/class-translation-manager.php:146
557
  msgid "Different Menu Items for each Language"
558
  msgstr ""
559
 
560
+ #: ../translatepress/includes/class-translation-manager.php:147
561
  msgid "Automatic User Language Detection"
562
  msgstr ""
563
 
564
+ #: ../translatepress/includes/class-translation-manager.php:148
565
  msgid "Supported By Real People"
566
  msgstr ""
567
 
568
+ #: ../translatepress/includes/class-translation-manager.php:149
569
  msgid "Find Out More"
570
  msgstr ""
571
 
572
+ #: ../translatepress/includes/class-translation-manager.php:151
573
  msgid "No available suggestions"
574
  msgstr ""
575
 
576
+ #: ../translatepress/includes/class-translation-manager.php:152
577
  msgid "Suggestions from translation memory"
578
  msgstr ""
579
 
580
+ #: ../translatepress/includes/class-translation-manager.php:153
581
  msgid "Click to Copy"
582
  msgstr ""
583
 
584
+ #: ../translatepress/includes/class-translation-manager.php:162
585
+ msgid "Hover any text on the page, click <img src=\"%s\" class=\"trp-edit-icon-inline\">, then modify the translation in the sidebar."
586
+ msgstr ""
587
+
588
+ #: ../translatepress/includes/class-translation-manager.php:168
589
+ msgid "Don't forget to Save Translation. Use keyboard shortcut CTRL(⌘) + S"
590
+ msgstr ""
591
+
592
+ #: ../translatepress/includes/class-translation-manager.php:173
593
+ msgid "Switch language to see the translation changes directly on the page."
594
+ msgstr ""
595
+
596
+ #: ../translatepress/includes/class-translation-manager.php:178
597
+ msgid "Search for any text in this page in the dropdown."
598
+ msgstr ""
599
+
600
+ #: ../translatepress/includes/class-translation-manager.php:220, ../tp-add-on-seo-pack/includes/string-translation/class-string-translation-seo.php:12
601
  msgid "Slugs"
602
  msgstr ""
603
 
604
+ #: ../translatepress/includes/class-translation-manager.php:221
605
  msgid "Meta Information"
606
  msgstr ""
607
 
608
+ #: ../translatepress/includes/class-translation-manager.php:222
609
  msgid "String List"
610
  msgstr ""
611
 
612
+ #: ../translatepress/includes/class-translation-manager.php:223
613
  msgid "Gettext Strings"
614
  msgstr ""
615
 
616
+ #: ../translatepress/includes/class-translation-manager.php:224
617
  msgid "Images"
618
  msgstr ""
619
 
620
+ #: ../translatepress/includes/class-translation-manager.php:225
621
  msgid "Dynamically Added Strings"
622
  msgstr ""
623
 
624
+ #: ../translatepress/includes/class-translation-manager.php:259
625
  msgid "Visual Editor"
626
  msgstr ""
627
 
628
+ #: ../translatepress/includes/class-translation-manager.php:265
629
  msgid "String Translation"
630
  msgstr ""
631
 
632
+ #: ../translatepress/includes/class-translation-manager.php:343
633
  msgid "Current User"
634
  msgstr ""
635
 
636
+ #: ../translatepress/includes/class-translation-manager.php:344
637
  msgid "Logged Out"
638
  msgstr ""
639
 
640
+ #: ../translatepress/includes/class-translation-manager.php:430
641
  msgid "Translate Page"
642
  msgstr ""
643
 
644
+ #: ../translatepress/includes/class-translation-manager.php:1155
645
  msgid "Security check"
646
  msgstr ""
647
 
648
+ #: ../translatepress/includes/class-translation-manager.php:1227
649
  msgid "<strong>Warning:</strong> Some strings have possibly incorrectly encoded characters. This may result in breaking the queries, rendering the page untranslated in live mode. Consider revising the following strings or their method of outputting."
650
  msgstr ""
651
 
777
  msgid "<strong>TranslatePress</strong> requires <strong><a href=\"http://php.net/manual/en/book.mbstring.php\">Multibyte String PHP library</a></strong>. Please contact your server administrator to install it on your server."
778
  msgstr ""
779
 
780
+ #: ../translatepress/partials/addons-settings-page.php:12
781
  msgid "Advanced Addons"
782
  msgstr ""
783
 
784
+ #: ../translatepress/partials/addons-settings-page.php:13
785
  msgid "These addons extend your translation plugin and are available in the Developer, Business and Personal plans."
786
  msgstr ""
787
 
788
+ #: ../translatepress/partials/addons-settings-page.php:21
789
  msgid "SEO support for page slug, page title, description and facebook and twitter social graph information. </br> The HTML lang attribute is properly set."
790
  msgstr ""
791
 
792
+ #: ../translatepress/partials/addons-settings-page.php:29
793
  msgid "Add as many languages as you need for your project to go global.<br>Publish your language only when all your translations are done."
794
  msgstr ""
795
 
796
+ #: ../translatepress/partials/addons-settings-page.php:35
797
  msgid "Pro Addons"
798
  msgstr ""
799
 
800
+ #: ../translatepress/partials/addons-settings-page.php:36
801
  msgid "These addons extend your translation plugin and are available in the Business and Developer plans."
802
  msgstr ""
803
 
804
+ #: ../translatepress/partials/addons-settings-page.php:44
805
  msgid "Automatically translate your website through the DeepL API."
806
  msgstr ""
807
 
808
+ #: ../translatepress/partials/addons-settings-page.php:52
809
  msgid "Automatically redirects new visitors to their preferred language based on browser settings or IP address</br> and remembers the last visited language."
810
  msgstr ""
811
 
812
+ #: ../translatepress/partials/addons-settings-page.php:60
813
  msgid "Create translator accounts for new users or allow existing users <br/>that are not administrators to translate your website."
814
  msgstr ""
815
 
816
+ #: ../translatepress/partials/addons-settings-page.php:68
817
  msgid "Navigate your website just like a particular user role would. <br/>Really useful for dynamic content or hidden content that appears for particular users."
818
  msgstr ""
819
 
820
+ #: ../translatepress/partials/addons-settings-page.php:76
821
  msgid "Configure different menu items for different languages."
822
  msgstr ""
823
 
824
+ #: ../translatepress/partials/addons-settings-page.php:85
825
+ msgid "Recommended Plugins by the same developers"
826
+ msgstr ""
827
+
828
+ #: ../translatepress/partials/addons-settings-page.php:86
829
+ msgid "A short list of plugins you can use to extend your website."
830
+ msgstr ""
831
+
832
+ #: ../translatepress/partials/addons-settings-page.php:94
833
+ msgid "Capture more user information on the registration form with the help of Profile Builder's custom user profile fields and/or add an Email Confirmation process to verify your customers accounts."
834
+ msgstr ""
835
+
836
+ #: ../translatepress/partials/addons-settings-page.php:97, ../translatepress/partials/addons-settings-page.php:111
837
+ msgid "Learn More"
838
+ msgstr ""
839
+
840
+ #: ../translatepress/partials/addons-settings-page.php:99, ../translatepress/partials/addons-settings-page.php:113
841
+ msgid "Installing..."
842
+ msgstr ""
843
+
844
+ #: ../translatepress/partials/addons-settings-page.php:108
845
+ msgid "Accept user payments, create subscription plans and restrict content on your membership site."
846
+ msgstr ""
847
+
848
  #: ../translatepress/partials/advanced-settings-page.php:5
849
  msgid "TranslatePress Advanced Settings"
850
  msgstr ""
partials/addons-settings-page.php CHANGED
@@ -3,74 +3,117 @@
3
  <h1> <?php esc_html_e( 'TranslatePress Settings', 'translatepress-multilingual' );?></h1>
4
  <?php do_action ( 'trp_settings_navigation_tabs' ); ?>
5
 
6
- <div class="grid feat-header">
7
- <div class="grid-cell">
8
- <h2><?php _e( 'Advanced Addons', 'translatepress-multilingual' );?></h2>
9
- <p><?php _e( 'These addons extend your translation plugin and are available in the Developer, Business and Personal plans.', 'translatepress-multilingual' );?></p>
10
- </div>
11
- </div>
12
 
13
- <div class="grid">
14
- <div class="grid-cell" style="overflow:hidden;">
15
- <a href="https://translatepress.com/pricing/" target="_blank"><img src="<?php echo esc_url( plugins_url('../assets/images/seo_icon_translatepress.png', __FILE__) ) ?>" alt="SEO" style="float: left; margin: 0 1.5rem 1.5rem 0;"></a>
16
- <h3><a href=" <?php echo trp_add_affiliate_id_to_link('https://translatepress.com/pricing/?utm_source=wpbackend&utm_medium=clientsite&utm_content=addons_tab&utm_campaign=tpfree') ?> " target="_blank"> SEO Pack</a></h3>
17
- <p><?php _e( 'SEO support for page slug, page title, description and facebook and twitter social graph information. </br> The HTML lang attribute is properly set.', 'translatepress-multilingual' );?></p>
18
- </div>
19
- </div>
20
 
21
- <div class="grid">
22
- <div class="grid-cell" style="overflow:hidden;">
23
- <a href="https://translatepress.com/pricing/" target="_blank"><img src="<?php echo esc_url( plugins_url('../assets/images/multiple_lang_icon.png', __FILE__) ) ?>" alt="Multiple Languages" style="float: left; margin: 0 1.5rem 1.5rem 0;"></a>
24
- <h3><a href=" <?php echo trp_add_affiliate_id_to_link('https://translatepress.com/pricing/?utm_source=wpbackend&utm_medium=clientsite&utm_content=addons_tab&utm_campaign=tpfree') ?> " target="_blank"> Multiple Languages</a></h3>
25
- <p><?php _e( 'Add as many languages as you need for your project to go global.<br>Publish your language only when all your translations are done.', 'translatepress-multilingual' );?> </p>
26
- </div>
27
- </div>
28
 
29
- <div class="grid feat-header">
30
- <div class="grid-cell">
31
- <h2><?php _e( 'Pro Addons', 'translatepress-multilingual' );?></h2>
32
- <p><?php _e( 'These addons extend your translation plugin and are available in the Business and Developer plans.', 'translatepress-multilingual' );?></p>
33
- </div>
34
- </div>
 
35
 
36
- <div class="grid">
37
- <div class="grid-cell" style="overflow:hidden;">
38
- <a href="https://translatepress.com/pricing/" target="_blank"><img src="<?php echo esc_url( plugins_url('../assets/images/deepl-add-on.png', __FILE__) ) ?>" alt="DeepL Automatic Translation" style="float: left; margin: 0 1.5rem 1.5rem 0;"></a>
39
- <h3><a href=" <?php echo trp_add_affiliate_id_to_link('https://translatepress.com/pricing/?utm_source=wpbackend&utm_medium=clientsite&utm_content=addons_tab&utm_campaign=tpfree') ?> " target="_blank">DeepL Automatic Translation</a></h3>
40
- <p><?php _e( 'Automatically translate your website through the DeepL API.', 'translatepress-multilingual' );?></p>
41
- </div>
42
- </div>
43
 
44
- <div class="grid">
45
- <div class="grid-cell" style="overflow:hidden;">
46
- <a href="https://translatepress.com/pricing/" target="_blank"><img src="<?php echo esc_url( plugins_url('../assets/images/auto-detect-language-add-on.png', __FILE__) ) ?>" alt="Automatic User Language Detection" style="float: left; margin: 0 1.5rem 1.5rem 0;"></a>
47
- <h3><a href=" <?php echo trp_add_affiliate_id_to_link('https://translatepress.com/pricing/?utm_source=wpbackend&utm_medium=clientsite&utm_content=addons_tab&utm_campaign=tpfree') ?> " target="_blank"> Automatic User Language Detection</a></h3>
48
- <p><?php _e( 'Automatically redirects new visitors to their preferred language based on browser settings or IP address</br> and remembers the last visited language.', 'translatepress-multilingual' );?></p>
49
- </div>
50
- </div>
51
 
52
- <div class="grid">
53
- <div class="grid-cell" style="overflow:hidden;">
54
- <a href="https://translatepress.com/pricing/" target="_blank"><img src="<?php echo esc_url( plugins_url('../assets/images/translator-accounts-addon.png', __FILE__) ) ?>" alt="Translator Account" style="float: left; margin: 0 1.5rem 1.5rem 0;"></a>
55
- <h3><a href=" <?php echo trp_add_affiliate_id_to_link('https://translatepress.com/pricing/?utm_source=wpbackend&utm_medium=clientsite&utm_content=addons_tab&utm_campaign=tpfree') ?> " target="_blank"> Translator Accounts</a></h3>
56
- <p><?php _e( 'Create translator accounts for new users or allow existing users <br/>that are not administrators to translate your website.', 'translatepress-multilingual' );?></p>
57
- </div>
58
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
 
60
- <div class="grid">
61
- <div class="grid-cell" style="overflow:hidden;">
62
- <a href="https://translatepress.com/pricing/" target="_blank"><img src="<?php echo esc_url( plugins_url('../assets/images/view-as-addon.png', __FILE__) ) ?>" alt="Browse As User Role" style="float: left; margin: 0 1.5rem 1.5rem 0;"></a>
63
- <h3><a href=" <?php echo trp_add_affiliate_id_to_link('https://translatepress.com/pricing/?utm_source=wpbackend&utm_medium=clientsite&utm_content=addons_tab&utm_campaign=tpfree') ?> " target="_blank"> Browse As User Role</a></h3>
64
- <p><?php _e( 'Navigate your website just like a particular user role would. <br/>Really useful for dynamic content or hidden content that appears for particular users.', 'translatepress-multilingual' );?></p>
 
 
65
  </div>
66
- </div>
67
 
68
- <div class="grid">
69
- <div class="grid-cell" style="overflow:hidden;">
70
- <a href="https://translatepress.com/pricing/" target="_blank"><img src="<?php echo esc_url( plugins_url('../assets/images/menu_based_on_lang.png', __FILE__) ) ?>" alt="Navigation Based on Language" style="float: left; margin: 0 1.5rem 1.5rem 0;"></a>
71
- <h3><a href=" <?php echo trp_add_affiliate_id_to_link('https://translatepress.com/pricing/?utm_source=wpbackend&utm_medium=clientsite&utm_content=addons_tab&utm_campaign=tpfree') ?> " target="_blank"> Navigation Based on Language</a></h3>
72
- <p><?php _e( 'Configure different menu items for different languages.', 'translatepress-multilingual' );?></p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  </div>
74
  </div>
75
-
76
  </div>
3
  <h1> <?php esc_html_e( 'TranslatePress Settings', 'translatepress-multilingual' );?></h1>
4
  <?php do_action ( 'trp_settings_navigation_tabs' ); ?>
5
 
6
+ <div class="trp-add-ons-plugins-container">
 
 
 
 
 
7
 
8
+ <div class="trp-add-ons-plugins-column">
 
 
 
 
 
 
9
 
10
+ <div class="grid feat-header">
11
+ <div class="grid-cell">
12
+ <h2><?php _e( 'Advanced Addons', 'translatepress-multilingual' );?></h2>
13
+ <p><?php _e( 'These addons extend your translation plugin and are available in the Developer, Business and Personal plans.', 'translatepress-multilingual' );?></p>
14
+ </div>
15
+ </div>
 
16
 
17
+ <div class="grid">
18
+ <div class="grid-cell" style="overflow:hidden;">
19
+ <a href="https://translatepress.com/pricing/" target="_blank"><img src="<?php echo esc_url( plugins_url('../assets/images/seo_icon_translatepress.png', __FILE__) ) ?>" alt="SEO" style="float: left; margin: 0 1.5rem 1.5rem 0;"></a>
20
+ <h3><a href=" <?php echo trp_add_affiliate_id_to_link('https://translatepress.com/pricing/?utm_source=wpbackend&utm_medium=clientsite&utm_content=addons_tab&utm_campaign=tpfree') ?> " target="_blank"> SEO Pack</a></h3>
21
+ <p><?php _e( 'SEO support for page slug, page title, description and facebook and twitter social graph information. </br> The HTML lang attribute is properly set.', 'translatepress-multilingual' );?></p>
22
+ </div>
23
+ </div>
24
 
25
+ <div class="grid">
26
+ <div class="grid-cell" style="overflow:hidden;">
27
+ <a href="https://translatepress.com/pricing/" target="_blank"><img src="<?php echo esc_url( plugins_url('../assets/images/multiple_lang_icon.png', __FILE__) ) ?>" alt="Multiple Languages" style="float: left; margin: 0 1.5rem 1.5rem 0;"></a>
28
+ <h3><a href=" <?php echo trp_add_affiliate_id_to_link('https://translatepress.com/pricing/?utm_source=wpbackend&utm_medium=clientsite&utm_content=addons_tab&utm_campaign=tpfree') ?> " target="_blank"> Multiple Languages</a></h3>
29
+ <p><?php _e( 'Add as many languages as you need for your project to go global.<br>Publish your language only when all your translations are done.', 'translatepress-multilingual' );?> </p>
30
+ </div>
31
+ </div>
32
 
33
+ <div class="grid feat-header">
34
+ <div class="grid-cell">
35
+ <h2><?php _e( 'Pro Addons', 'translatepress-multilingual' );?></h2>
36
+ <p><?php _e( 'These addons extend your translation plugin and are available in the Business and Developer plans.', 'translatepress-multilingual' );?></p>
37
+ </div>
38
+ </div>
 
39
 
40
+ <div class="grid">
41
+ <div class="grid-cell" style="overflow:hidden;">
42
+ <a href="https://translatepress.com/pricing/" target="_blank"><img src="<?php echo esc_url( plugins_url('../assets/images/deepl-add-on.png', __FILE__) ) ?>" alt="DeepL Automatic Translation" style="float: left; margin: 0 1.5rem 1.5rem 0;"></a>
43
+ <h3><a href=" <?php echo trp_add_affiliate_id_to_link('https://translatepress.com/pricing/?utm_source=wpbackend&utm_medium=clientsite&utm_content=addons_tab&utm_campaign=tpfree') ?> " target="_blank">DeepL Automatic Translation</a></h3>
44
+ <p><?php _e( 'Automatically translate your website through the DeepL API.', 'translatepress-multilingual' );?></p>
45
+ </div>
46
+ </div>
47
+
48
+ <div class="grid">
49
+ <div class="grid-cell" style="overflow:hidden;">
50
+ <a href="https://translatepress.com/pricing/" target="_blank"><img src="<?php echo esc_url( plugins_url('../assets/images/auto-detect-language-add-on.png', __FILE__) ) ?>" alt="Automatic User Language Detection" style="float: left; margin: 0 1.5rem 1.5rem 0;"></a>
51
+ <h3><a href=" <?php echo trp_add_affiliate_id_to_link('https://translatepress.com/pricing/?utm_source=wpbackend&utm_medium=clientsite&utm_content=addons_tab&utm_campaign=tpfree') ?> " target="_blank"> Automatic User Language Detection</a></h3>
52
+ <p><?php _e( 'Automatically redirects new visitors to their preferred language based on browser settings or IP address</br> and remembers the last visited language.', 'translatepress-multilingual' );?></p>
53
+ </div>
54
+ </div>
55
+
56
+ <div class="grid">
57
+ <div class="grid-cell" style="overflow:hidden;">
58
+ <a href="https://translatepress.com/pricing/" target="_blank"><img src="<?php echo esc_url( plugins_url('../assets/images/translator-accounts-addon.png', __FILE__) ) ?>" alt="Translator Account" style="float: left; margin: 0 1.5rem 1.5rem 0;"></a>
59
+ <h3><a href=" <?php echo trp_add_affiliate_id_to_link('https://translatepress.com/pricing/?utm_source=wpbackend&utm_medium=clientsite&utm_content=addons_tab&utm_campaign=tpfree') ?> " target="_blank"> Translator Accounts</a></h3>
60
+ <p><?php _e( 'Create translator accounts for new users or allow existing users <br/>that are not administrators to translate your website.', 'translatepress-multilingual' );?></p>
61
+ </div>
62
+ </div>
63
+
64
+ <div class="grid">
65
+ <div class="grid-cell" style="overflow:hidden;">
66
+ <a href="https://translatepress.com/pricing/" target="_blank"><img src="<?php echo esc_url( plugins_url('../assets/images/view-as-addon.png', __FILE__) ) ?>" alt="Browse As User Role" style="float: left; margin: 0 1.5rem 1.5rem 0;"></a>
67
+ <h3><a href=" <?php echo trp_add_affiliate_id_to_link('https://translatepress.com/pricing/?utm_source=wpbackend&utm_medium=clientsite&utm_content=addons_tab&utm_campaign=tpfree') ?> " target="_blank"> Browse As User Role</a></h3>
68
+ <p><?php _e( 'Navigate your website just like a particular user role would. <br/>Really useful for dynamic content or hidden content that appears for particular users.', 'translatepress-multilingual' );?></p>
69
+ </div>
70
+ </div>
71
 
72
+ <div class="grid">
73
+ <div class="grid-cell" style="overflow:hidden;">
74
+ <a href="https://translatepress.com/pricing/" target="_blank"><img src="<?php echo esc_url( plugins_url('../assets/images/menu_based_on_lang.png', __FILE__) ) ?>" alt="Navigation Based on Language" style="float: left; margin: 0 1.5rem 1.5rem 0;"></a>
75
+ <h3><a href=" <?php echo trp_add_affiliate_id_to_link('https://translatepress.com/pricing/?utm_source=wpbackend&utm_medium=clientsite&utm_content=addons_tab&utm_campaign=tpfree') ?> " target="_blank"> Navigation Based on Language</a></h3>
76
+ <p><?php _e( 'Configure different menu items for different languages.', 'translatepress-multilingual' );?></p>
77
+ </div>
78
+ </div>
79
  </div>
 
80
 
81
+ <div class="trp-add-ons-plugins-column">
82
+
83
+ <div class="grid feat-header">
84
+ <div class="grid-cell">
85
+ <h2><?php _e( 'Recommended Plugins by the same developers', 'translatepress-multilingual' );?></h2>
86
+ <p><?php _e( 'A short list of plugins you can use to extend your website.', 'translatepress-multilingual' );?></p>
87
+ </div>
88
+ </div>
89
+
90
+ <div class="grid">
91
+ <div class="grid-cell" style="overflow:hidden;">
92
+ <a href="<?php echo trp_add_affiliate_id_to_link('https://www.cozmoslabs.com/wordpress-profile-builder/?utm_source=tpbackend&utm_medium=clientsite&utm_content=tp-addons-page&utm_campaign=TPPB') ?>" target="_blank"><img src="<?php echo esc_url( plugins_url('../assets/images/pb_logo.jpg', __FILE__) ) ?>" alt="Profile Builder" style="float: left; margin: 0 1.5rem 1.5rem 0;"></a>
93
+ <h3><a href="<?php echo trp_add_affiliate_id_to_link('https://www.cozmoslabs.com/wordpress-profile-builder/?utm_source=tpbackend&utm_medium=clientsite&utm_content=tp-addons-page&utm_campaign=TPPB') ?>" target="_blank">Profile Builder</a></h3>
94
+ <p><?php _e( 'Capture more user information on the registration form with the help of Profile Builder\'s custom user profile fields and/or add an Email Confirmation process to verify your customers accounts.', 'translatepress-multilingual' );?></p>
95
+ <div class="trp-recommended-buttons">
96
+ <a class="trp-recommended-learn-more" target="_blank" href="<?php echo trp_add_affiliate_id_to_link('https://www.cozmoslabs.com/wordpress-profile-builder/?utm_source=tpbackend&utm_medium=clientsite&utm_content=tp-addons-page&utm_campaign=TPPB') ?>">
97
+ <button class="button"><?php _e( 'Learn More', 'translatepress-multilingual' ); ?></button>
98
+ </a>
99
+ <button class="button-primary trp-recommended-plugin-buttons trp-install-and-activate" data-trp-plugin-slug="pb" data-trp-action-performed="<?php _e( 'Installing...', 'translatepress-multilingual' );?>" <?php echo $plugin_settings['pb']['disabled']; ?>><?php echo $plugin_settings['pb']['install_button']; ?></button>
100
+ </div>
101
+ </div>
102
+ </div>
103
+
104
+ <div class="grid">
105
+ <div class="grid-cell" style="overflow:hidden;">
106
+ <a href="<?php echo trp_add_affiliate_id_to_link('https://www.cozmoslabs.com/wordpress-paid-member-subscriptions/?utm_source=tpbackend&utm_medium=clientsite&utm_content=tp-addons-page&utm_campaign=TPPMS') ?> " target="_blank"><img src="<?php echo esc_url( plugins_url('../assets/images/pms_logo.jpg', __FILE__) ) ?>" alt="Paid Member Subscriptions" style="float: left; margin: 0 1.5rem 1.5rem 0;"></a>
107
+ <h3><a href="<?php echo trp_add_affiliate_id_to_link('https://www.cozmoslabs.com/wordpress-paid-member-subscriptions/?utm_source=tpbackend&utm_medium=clientsite&utm_content=tp-addons-page&utm_campaign=TPPMS') ?> " target="_blank">Paid Member Subscriptions</a></h3>
108
+ <p><?php _e( 'Accept user payments, create subscription plans and restrict content on your membership site.', 'translatepress-multilingual' );?> </p>
109
+ <div class="trp-recommended-buttons">
110
+ <a class="trp-recommended-learn-more" target="_blank" href="<?php echo trp_add_affiliate_id_to_link('https://www.cozmoslabs.com/wordpress-paid-member-subscriptions/?utm_source=tpbackend&utm_medium=clientsite&utm_content=tp-addons-page&utm_campaign=TPPMS')?>">
111
+ <button class="button"><?php _e( 'Learn More', 'translatepress-multilingual' ); ?></button>
112
+ </a>
113
+ <button class="button-primary trp-recommended-plugin-buttons trp-install-and-activate" data-trp-plugin-slug="pms" data-trp-action-performed="<?php echo _e( 'Installing...', 'translatepress-multilingual' );?>" <?php echo $plugin_settings['pms']['disabled']; ?>><?php echo $plugin_settings['pms']['install_button']; ?></button>
114
+ </div>
115
+ </div>
116
+ </div>
117
  </div>
118
  </div>
 
119
  </div>
readme.txt CHANGED
@@ -3,9 +3,9 @@ Contributors: cozmoslabs, razvan.mo, madalin.ungureanu, cristophor
3
  Donate link: https://www.translatepress.com/
4
  Tags: translate, translation, multilingual, automatic translation, bilingual, front-end translation, google translate, language
5
  Requires at least: 3.1.0
6
- Tested up to: 5.4.1
7
  Requires PHP: 5.6.20
8
- Stable tag: 1.7.5
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -138,6 +138,13 @@ For more information please check out our [documentation](https://translatepress
138
 
139
 
140
  == Changelog ==
 
 
 
 
 
 
 
141
  = 1.7.5 =
142
  * Dix incorrect opengraph url in Yoast SEO that caused fatal error with older versions
143
  * Fix for blog page url slug translation
3
  Donate link: https://www.translatepress.com/
4
  Tags: translate, translation, multilingual, automatic translation, bilingual, front-end translation, google translate, language
5
  Requires at least: 3.1.0
6
+ Tested up to: 5.4.2
7
  Requires PHP: 5.6.20
8
+ Stable tag: 1.7.6
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
138
 
139
 
140
  == Changelog ==
141
+ = 1.7.6 =
142
+ * Added a help wizard for the Visual Editor
143
+ * Added Puerto Rico flag
144
+ * Fixed issue with custom links on term archive pages where the term had a translated slug
145
+ * Added a recommended plugins section on the addons tab.
146
+ * Fixed a display issues in Strings interface for Safari
147
+
148
  = 1.7.5 =
149
  * Dix incorrect opengraph url in Yoast SEO that caused fatal error with older versions
150
  * Fix for blog page url slug translation